Saya yakin file direktori memiliki informasi jauh lebih sedikit daripada 4096 byte. Saya tahu ukuran sektor adalah 4.096 byte. Tetapi file normal lebih kecil dari yang ada.
Mengapa Unix memesan 4096 byte untuk setiap folder?
Ini adalah ukuran awal yang diperlukan untuk menyimpan meta-data tentang file yang terkandung dalam direktori tersebut (termasuk nama). Alokasi awal sama dengan ukuran satu sektor, tetapi dapat tumbuh di atas itu jika perlu. Setelah dialokasikan, ruang tidak dibebaskan jika file dihapus, untuk mengurangi fragmentasi.
Sebagai contoh:
$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/
Terkadang 4096 byte adalah unit alokasi terkecil untuk beberapa sistem file. Itu sebabnya direktori memiliki 4096.
Hal yang sama berlaku untuk file. Meskipun beberapa file mungkin melaporkan kurang dari 4096, mereka sebenarnya mengambil setidaknya 4096 penyimpanan dari disk.
sumber
4096 dicadangkan untuk mengurangi fragmentasi, karena seringkali ukuran sebenarnya dari metadata yang terkandung akan berfluktuasi berdasarkan pada isi direktori. Jika terus tumbuh dan menyusut (katakanlah itu berisi file log atau konten dinamis) dari waktu ke waktu dapat merusak kinerja. Ini kemungkinan tidak akan terjadi dengan satu folder, tetapi di seluruh sistem file itu akan bertambah dengan cepat.
sumber
Itu tergantung pada sistem file. Pada ext2 / 3/4 itu "adalah" 4096. Pada reiserfs itu bisa 9608 (saya
$HOME
) 1032 (/tmp
) atau 48 (beberapa dir/tmp
).Secara default pada blok ext2 / 3/4 adalah 4096 - dan file tidak bisa kurang dari itu. Jika file lebih kecil, tetap dibutuhkan seluruh blok. Karena tidak ada gunanya bertanya tentang ukuran logis dari direktori dan informasi ini mungkin tidak pada disk pula dan harus melaporkan sesuatu itu melaporkan ukuran blok kali jumlah blok yang diambil yaitu ruang fisik yang telah diambil.
sumber
actual
ukuran file.\0
karakter hukum dalam file biner. PS. Dimungkinkan untuk membuat FS yang tidak menyimpannya - tetapi tidak ext familly (dan mungkin tidak populer lainnya).