ext4: Bagaimana cara menjelaskan ruang sistem file?

16

Saya baru-baru ini memformat drive 1,5 TB dengan tujuan mengganti ntfs dengan ext4.

Kemudian saya perhatikan bahwa file yang saya simpan tidak pas di partisi baru.

df:

ext4 (ext3 & ext2 show the same behavior)
Filesystem      1K-blocks   Used  Available Use% Mounted on
/dev/sdb1      1442146364   71160 1442075204    1% /media/Seagate

ntfs (similar to all other options that gparted offers):
/dev/sdb1      1465137148  110700 1465026448    1% /media/Seagate

Perbedaan 1K-blok itu berarti ruang 22 GiB yang mencolok kurang dapat digunakan.

Saya sudah dieksekusi

tune2fs -O \^has_journal
tune2fs -r 0
tune2fs -m 0

dengan, tidak mengejutkan, tidak ada efek karena itu tidak mempengaruhi blok yang tidak ada.

Namun, fdisk melaporkan bahwa partisi ext4 mencakup seluruh disk.

fdisk -l /dev/sdb:

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  2930277167  1465138583+  ee  GPT

Dan dengan demikian misalnya laporan resize2fs bahwa ada "Tidak ada hubungannya!"

dumpe2fs -h /dev/sdb1:
dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          d6fc8971-89bd-4c03-a7cd-abdb945d2173
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              91578368
Block count:              366284288
Reserved block count:     0
Free blocks:              360518801
Free inodes:              91578357
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      936
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat May 21 17:12:04 2011
Last mount time:          Sat May 21 17:15:30 2011
Last write time:          Sat May 21 17:24:32 2011
Mount count:              1
Maximum mount count:      32
Last checked:             Sat May 21 17:12:04 2011
Check interval:           15552000 (6 months)
Next check after:         Thu Nov 17 16:12:04 2011
Lifetime writes:          1372 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   half_md4
Directory Hash Seed:      c334e6ef-b060-45d2-b65d-4ac94167cb09
Journal backup:           inode blocks

Apa yang menggunakan ruang yang hilang itu?

misc
sumber

Jawaban:

21

Ayo lihat. Ukuran perangkat adalah 1.465.138.583½ kB = 1.500.301.909.504 B. Sistem file terdiri dari masing-masing 366.284.288 blok 4096 B, yaitu 1.500.300.443.648 B. Saya tidak tahu apa yang digunakan untuk 1.465.856 B (1,4 MB) sisanya. ? Saya tahu ada beberapa kB ruang di awal untuk bootloader.).

Sistem file berisi 91.578.368 inode masing-masing 256 byte, yang membutuhkan 23.444.062.208 B (sekitar 22 GB, hint, hint). Lalu ada 1.442.146.364 kB = 1.476.757.876.736 B untuk konten file. Ini menyumbang 23.444.062.208 B + 1.476.757.876.736 B = 1.500.201.938.944 B. Ukuran sisanya adalah 98.504.704 B = 24.029 blok yang berada dalam kisaran yang tepat untuk menjadi ukuran jurnal.

Seperti yang Anda lihat, semuanya diperhitungkan. (Ok, hampir semuanya, tapi kita berbicara megabyte, bukan gigabytes.)

Gilles 'SO- berhenti menjadi jahat'
sumber
1
Terima kasih, itu sudah pasti. (Cara Anda menyajikannya, juga cukup jelas - saya seharusnya memikirkannya sedikit lebih banyak.) Jadi saya membuat ulang partisi dengan "mkfs.ext4 -m 0 -O sparse_super -T largefile4" karena hanya bisa menampung beberapa ribu lebih besar file, sekarang 357728 inode vs. 1464880364 blok tersedia.
misc
13

Pertama-tama, perbedaan ruang yang tersedia yang Anda lihat tidak berarti sama sekali bahwa ada ruang yang "terbuang"; itu tidak disia-siakan karena sangat penting untuk berfungsinya sistem file. Anda tidak boleh membandingkan Ext4 dan NTFS dengan cara ini tanpa "tetapi" yang sangat besar yang menentukan semua perbedaan desain dan struktural antara sistem file, dan juga spesifik dari setiap implementasi (misalnya bagaimana setiap driver melaporkan ruang kosong ke lapisan VFS).

Bayangkan partisi tersebut sebagai ruang besar di mana Anda dapat menaruh potongan data apa pun yang Anda miliki. Jika Anda hanya memiliki satu bagian data dengan ukuran yang sama dengan partisi, Anda bisa menulisnya mulai dari awal partisi dan menjadi dingin dengannya. Tapi kamu tidak. Sebaliknya Anda mungkin memiliki ribuan file kecil, dan semua file ini dikelompokkan dalam berbagai cara, dan setiap file terkait dengan banyak data kecil lainnya (nama, tanggal / waktu dan izin), dll. Anda harus mengatur ruang besar dari partisi sehingga Anda dapat menjangkau semua bagian data ini dengan cepat dan efisien. Anda juga harus memperhatikan cara menulis data baru dan membuang data lama secara efisien. Anda membutuhkan struktur data .

Dan ada banyak struktur data . Beberapa dari mereka sangat bodoh, yang lain memungkinkan Anda untuk mengambil data lebih cepat dengan mengorbankan menulis lebih lambat, yang lain memungkinkan menulis lebih cepat dengan mengorbankan membaca, beberapa masih mungkin sangat baik dalam membaca dan menulis tetapi membutuhkan jeda panjang dan menganggur saat mengatur ulang data, dll.

Anda tentu menginginkan sistem yang:

  1. Sangat cepat untuk menulis informasi tentangnya;
  2. Sangat cepat untuk mengambil informasi darinya;
  3. Pandai mengatur dan mengelola informasi yang tersimpan di dalamnya;
  4. Manfaatkan ruang (partisi) tempat sistem file disimpan;
  5. Tangguh terhadap masalah perangkat keras, sehingga Anda masih mendapatkan sebagian besar atau semua informasi Anda kembali pada kegagalan sistem parsial;
  6. Tangguh terhadap masalah perangkat lunak, sehingga bug dalam aplikasi, atau aplikasi jahat yang diinstal, tidak akan menghancurkan data Anda secara permanen;
  7. Tangguh terhadap kesalahan manusia, sehingga ia memaafkan Anda ketika Anda secara tidak sengaja memerintahkan sistem untuk menghapus sesuatu yang tidak seharusnya (alias tempat sampah / daur ulang).

Sistem file berkinerja tinggi memungkinkan membaca dan menulis dengan sangat cepat dengan mengorbankan beberapa ruang. Beberapa struktur data tercepat yang digunakan dalam sistem file, seperti tabel hash dan B-tree , sangat kompleks, dan mereka menyimpan lebih banyak ruang daripada yang sebenarnya digunakan untuk memungkinkan akses yang sangat cepat.

Ext4 memiliki sifat penting lainnya. Tidak ada titik kegagalan tunggal dalam sistem file. Ada banyak salinan data penting yang disebarkan melalui partisi, sementara beberapa sistem file lain (saya tidak bisa mengatakan untuk NTFS) dapat membuat semua data Anda tidak dapat dibaca jika kegagalan terjadi di tempat yang tepat. Selain itu, Ext4 menyimpan banyak ruang untuk data Anda tepat pada tahap pembuatan sistem file, sementara NTFS tumbuh bersama data Anda.

Juliano
sumber
1
Terima kasih, bagian terakhir itu sangat penting. Saya tidak menyadari bahwa ext4 melakukan (secara komparatif) banyak pekerjaan pada waktu pembuatan yang ntfs lakukan selama operasi.
misc
1
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! 
The util fdisk doesn't support GPT. Use GNU Parted.

Pesan ini menunjukkan bahwa disk menggunakan partisi GPT-style, dan fdiskalat ini hanya memahami gaya MBR lawas.

Untuk mencegah pemformatan ulang yang tidak disengaja jika disk yang dipartisi GPT dicolokkan ke sistem yang tidak sadar GPT yang lebih lama, skema partisi GPT menyertakan "MBR pelindung": tabel partisi yang sepenuhnya palsu yang pada dasarnya memberi tahu "disk ini sepenuhnya digunakan oleh jenis partisi yang Anda tidak tahu apa-apa tentang "ke sistem operasi atau alat apa pun yang hanya memahami partisi MBR.

Untuk mendapatkan tampilan tabel partisi Anda yang akurat /dev/sdb, gunakan:

parted /dev/sdb print
telcoM
sumber