Saya baru saja memperhatikan sistem file ext {2,3,4} yang saya coba buat pada HDD 500G tidak menggunakan semua ruang yang tersedia (466G). Saya juga sudah mencoba reiser3, xfs, jfs, btrfs dan bahkan vfat. Semuanya membuat fs ukuran 466G (seperti yang ditunjukkan oleh df -h ). Namun, ext * menciptakan fs 459G. Menonaktifkan blok yang dipesan menambah ruang yang tersedia bagi pengguna, tetapi ukuran fs masih 459G.
Hal yang sama untuk HDD 1Tb: 932G reiserfs, 917G ext4.
Jadi, apa perbedaan 1,5% ini? Mengapa itu terjadi dan adakah cara untuk membuat ext mengisi seluruh volume?
UPD: Semua tes dilakukan pada mesin yang sama, pada HDD yang sama dll. Tidak masalah bagaimana 466G berbeda dari pemasaran 500G. Masalahnya berbeda untuk FS yang berbeda.
Tentang df - ini menunjukkan ukuran FS total, ukuran yang digunakan dan ruang kosong. Dalam hal ini saya punya:
untuk reiserfs:
/ dev / sda1 466G 33M 466G 1% / mnt
untuk ext4:
/ dev / sda1 459G 198M 435G 1% / mnt
Jika saya mematikan reservasi root block, 435G berubah menjadi 459G - ukuran penuh fs (minus 198M). Tapi fs sendiri masih 459G untuk ext4 dan 466G untuk reiser!
UPD2: Mengisi volume dengan data nyata melalui dd:
reiserfs:
fs: ~ # dd if = / dev / zero of = / mnt / 1 dd: запись в «/ mnt / 1»: На устройстве кончилось место 975702649 + 0 записей считано 975702648 + 0 записей написано скопировано 499559755776 байт (500 GB), 8705,61 c, 57,4 MB / c
ext2 dengan blok reservasi dimatikan (mke2fs -m 0):
fs: ~ # dd if = / dev / zero of = / mnt / 1 dd: запись в «/ mnt / 1»: На устройстве кончилось место 960356153 + 0 записей считано 960356152 + 0 записей написано скопировано 491702349824 байта (492 GB), 8870,01 c, 55,4 MB / c
Maaf untuk bahasa Rusia, tapi saya sudah menjalankannya di lokal default dan mengulanginya terlalu lama. Tidak masalah, output dd jelas.
Jadi, ternyata mke2fs benar-benar menciptakan filesystem yang lebih kecil, daripada mkfs lainnya.
LANG=C foo
atauLC_ALL=C foo
Jawaban:
Ada dua alasan mengapa ini benar.
Pertama, untuk beberapa alasan atau penulis OS lain masih melaporkan ruang kosong dalam hal sistem basis 2, dan produsen hard drive melaporkan ruang kosong dalam hal sistem basis 10. Sebagai contoh, seorang penulis OS akan memanggil 1024 byte (2 ^ 10 byte) satu kilobyte, dan seorang pembuat hard drive akan memanggil 1000 byte per kilobyte. Perbedaan ini sangat kecil untuk kilobyte, tetapi begitu Anda mencapai terabyte, itu cukup signifikan. Seorang penulis OS akan memanggil 1099511627776 byte (2 ^ 40 byte) terabyte, dan produsen hard drive akan menyebut 1000000000000 byte byte terabyte.
Dua cara berbeda berbicara tentang ukuran ini sering kali menimbulkan banyak kebingungan.
Ada awalan ISO yang didukung penuh untuk ukuran biner . Antarmuka pengguna yang dirancang dengan awalan baru dalam pikiran akan menunjukkan TiB, GiB (atau lebih umum XiB) ketika menunjukkan ukuran dengan sistem awalan basis 2.
Kedua, df-h melaporkan berapa banyak ruang yang tersedia untuk Anda gunakan. Semua sistem file harus menulis informasi tata graha untuk melacak hal-hal untuk Anda. Informasi ini memakan sebagian ruang pada drive Anda. Umumnya tidak terlalu banyak, tetapi beberapa. Itu juga merupakan beberapa kerugian yang Anda lihat.
Setelah Anda mengedit posting Anda untuk memperjelas bahwa tidak ada jawaban saya yang benar-benar menjawab pertanyaan Anda, saya akan coba menjawab pertanyaan Anda ...
Sistem file yang berbeda menggunakan jumlah ruang yang berbeda untuk informasi tata graha dan melaporkan penggunaan ruang dengan cara yang berbeda.
Sebagai contoh, ext2 membagi disk menjadi kelompok-kelompok silinder. Kemudian ia mengalokasikan ruang di setiap grup silinder untuk inode dan peta ruang bebas. ext3 melakukan hal yang sama karena itu pada dasarnya ext2 + penjurnalan. Dan ext4 juga melakukan hal yang persis sama karena ini merupakan modifikasi ext3 yang cukup mudah (dan hampir kompatibel). Dan karena overhead meta-data ini diperbaiki pada pembuatan sistem file atau pada ukuran, itu tidak dilaporkan sebagai ruang 'bekas'. Saya menduga ini juga karena meta-data grup silinder berada di tempat-tempat tetap pada disk, dan dengan demikian tersirat digunakan dan karenanya tidak ditandai atau diperhitungkan dalam peta ruang bebas.
Tetapi reiserfs tidak mengalokasikan sebelumnya metadata apa pun. Ia tidak memiliki batas inode yang diperbaiki pada pembuatan sistem file karena ia mengalokasikan semua inode-nya secara langsung seperti halnya dengan blok data. Paling-paling membutuhkan beberapa struktur yang menggambarkan direktori root dan semacam peta ruang bebas. Jadi ia menggunakan lebih sedikit ruang ketika tidak ada apa-apa di dalamnya.
Tetapi ini berarti bahwa reiserfs akan memakan lebih banyak ruang saat Anda menambahkan file karena itu akan mengalokasikan meta-data (seperti inode) serta ruang data aktual untuk file tersebut.
Saya tidak tahu persis bagaimana jfs dan btrfs melacak penggunaan ruang meta-data. Tapi saya curiga mereka melacaknya lebih seperti yang dilakukan reiserf. vfat secara khusus tidak memiliki konsep inode sama sekali. Peta ruang bebasnya (ukurannya diperbaiki pada filesystem create (tabel FAT yang terkenal)) menyimpan banyak data yang akan diinode oleh inode, dan entri direktori (yang dialokasikan secara dinamis) menyimpan sisanya.
sumber
Seperti halnya masalah yang disebutkan oleh Omnifarious, dengan ext2 / 3/4 sejumlah ruang dicadangkan untuk root - ruang yang dipesan ini tidak ditampilkan dalam output df.
Misalnya membuat sistem file kecil (~ 100mb) dengan opsi default, menggunakan ext2 daripada 3 atau 4 untuk mengabaikan ruang yang seharusnya diambil oleh jurnal:
Tweak pilihan dicadangkan blok (
tune2fs
's-m
pilihan set blok dicadangkan sebagai persentase, dan-r
pilihan set blok dicadangkan sebagai sejumlah lurus blok):Seperti yang Anda lihat dalam contoh di atas, bahkan ketika login sebagai root
df
tidak menunjukkan ruang yang dicadangkan dalam hitungan "Tersedia". Ruang yang dicadangkan tidak muncul dalam hitungan "Bekas", apakah masuk sebagai root atau pengguna yang kurang beruntung. Ini kadang-kadang dapat menyebabkan kebingungan ketika sistem file hampir penuh jika Anda tidak mengharapkan dua fakta ini.Juga perhatikan bahwa
tune2fs
, terlepas dari namanya, relevan untuk sistem file ext3 dan ext4 serta yang ext2.sumber
Tentang perbedaan antara sistem file, sistem file yang berbeda mengatur blok secara berbeda dan membutuhkan lebih banyak atau lebih sedikit data untuk mengidentifikasi dan melacak blok. Ukuran blok juga membuat perbedaan seolah-olah Anda memiliki lebih atau kurang blok untuk ruang yang sama, Anda memiliki lebih banyak atau lebih sedikit "kehilangan" ruang. Juga, grup sistem file blok untuk menghindari fragmen file dan setiap cluster blok memiliki pengidentifikasi beberapa ukuran, sehingga lebih atau kurang blok cluster akan menggunakan ruang fisik yang berbeda pada disk. Jadi perbedaannya terletak pada bagaimana sistem file mengatur ruang fisik.
Berikut adalah deskripsi untuk ext2 dan Anda mungkin dapat menemukan sesuatu yang serupa untuk reiserfs tetapi saya tidak pernah menggunakannya jadi saya tidak punya.
sumber