Untuk beberapa alasan, ketika saya membuat file teks pada OS X, itu selalu minimal 4kB, kecuali jika itu kosong. Kenapa ini? Mungkinkah ada 4.000 byte metadata sekitar 1 byte teks biasa?
:P
Untuk beberapa alasan, ketika saya membuat file teks pada OS X, itu selalu minimal 4kB, kecuali jika itu kosong. Kenapa ini? Mungkinkah ada 4.000 byte metadata sekitar 1 byte teks biasa?
:P
Jawaban:
Ukuran blok sistem file harus 4 kB. Ketika data ditulis ke file yang terkandung dalam sistem file, sistem operasi harus mengalokasikan blok penyimpanan untuk berisi data yang akan ditulis ke file.
Biasanya, ketika sistem file dibuat, penyimpanan yang terkandung dalam sistem file tersebut dibagi menjadi blok-blok dengan ukuran tetap. Artikel Wikipedia ini menjelaskan secara singkat proses ini.
Ukuran blok yang mendasari sistem file untuk file ini harus memiliki ukuran blok 4K byte. File ini menggunakan blok 1 4K dan hanya satu byte di dalam blok itu yang berisi data aktual.
Semua sistem file memiliki ukuran cluster atau blok, atau jumlah ruang disk terkecil yang dapat dialokasikan untuk menyimpan file. Bahkan jika ukuran file yang sebenarnya lebih kecil dari ukuran cluster / blok, masih akan mengkonsumsi satu cluster, atau 4K pada sistem file Anda. Ukuran cluster tergantung pada sistem file, dan opsi sistem file.
Jika berisi nol byte, seperti yang ditunjukkan Gilles , ia menggunakan nol blok / cluster tetapi satu inode pada sistem file * nix khas, yang lebih baik menjawab peringatan, "kecuali itu kosong."
Sebuah eksperimen kecil untuk membantu menggambarkan hal ini:
Pertama, mari kita lihat apa ukuran blok aktual partisi root ext4 (LVM) saya:
[root@fedora17 blocksize]# dumpe2fs /dev/mapper/vg_fedora17-lv_root | grep -i "block size"
dumpe2fs 1.42.3 (14-May-2012)
Block size: 4096
Ini adalah 4096 (4 KiB), seperti yang diharapkan. Sekarang, mari kita buat tiga file: Yang pertama adalah nol byte, yang kedua hanya satu byte, dan yang ketiga adalah 4 KiB (ukuran blok):
[root@fedora17 blocksize]# touch 0_bytes.bin
[root@fedora17 blocksize]# dd if=/dev/zero of=1_byte.bin bs=1 count=1
[root@fedora17 blocksize]# dd if=/dev/zero of=4096_bytes.bin bs=1 count=4096
Sekarang, kita ls
direktori. Kami menggunakan -s
opsi untuk melihat ukuran yang dialokasikan (kolom paling kiri), dalam jumlah 1024 byte "blok."
(ls tidak tahu ukuran blok sebenarnya adalah 4096 - kita bisa menentukan --block-size
tetapi skala semua dengan nilai itu, dan kami ingin melihat ukuran file sebenarnya dalam byte juga) .
[root@fedora17 blocksize]# ls -ls
total 8
0 -rw-r--r--. 1 root root 0 Jan 21 23:56 0_bytes.bin
4 -rw-r--r--. 1 root root 1 Jan 21 23:38 1_byte.bin
4 -rw-r--r--. 1 root root 4096 Jan 21 23:38 4096_bytes.bin
Dua hal dapat dicatat di sini:
File jarang adalah file dengan blok besar angka nol. Karena data diketahui semuanya nol, tidak ada gunanya menyimpannya di disk. Dengan cara ini, ukuran jelas file sebenarnya bisa lebih besar dari ukuran pada disk.
Perhatikan bahwa beberapa sistem file memungkinkan konten file yang sangat kecil untuk disimpan di inode itu sendiri. Lihat Apakah mungkin untuk menyimpan data secara langsung di dalam inode pada sistem file Unix / Linux? .