Apa yang menentukan ukuran direktori?

10

Saya tahu bahwa ukuran direktori itu sendiri adalah hal yang berbeda dari ukuran file di dalamnya.

Saya menganggap direktori sebagai daftar direktori dan file di dalamnya, maka ukuran direktori harus terkait dengan jumlah file / direktori di dalamnya, dengan minimum 4.096 byte karena kendala ukuran blok.

Tetapi dalam sistem saya, saya memiliki banyak direktori dengan populasi yang baik dengan 4.096 byte, dan beberapa direktori yang jauh lebih sedikit populasinya yaitu sekitar 10 megabita. Bisakah Anda jelaskan mengapa hal ini terjadi?

Macond
sumber
1
Untuk bacaan lebih lanjut, ini cukup informatif: askubuntu.com/a/404716/380067
kos
3
Ini bukan hanya tentang jumlah entri dalam direktori tetapi juga tentang panjang nama mereka.
kasperd

Jawaban:

13

Sistem file yang digunakan, dan jumlah maksimum entitas dalam direktori itu pada suatu titik waktu menentukan ukurannya. Setelah ukuran default yang disediakan untuk direktori habis, lebih banyak ruang yang dialokasikan untuk direktori. Namun, ketika jumlah entitas turun, ruang yang dialokasikan tidak secara otomatis dibebaskan. Jadi, jika, pada satu titik, direktori memiliki 10 juta entitas, ukurannya akan tetap sama jika 9.999.999 di antaranya dihapus. Ini mengarah ke situasi menarik seperti di pos Unix & Linux ini .

$ mkdir foo; touch foo/{1..100000}; stat -c %s foo
2179072
$ rm foo/*; stat -c %s foo
2179072

Ini tidak berlaku untuk sistem file lain. Sistem ext{2,3,4}file terpengaruh. NTFS, sedikit banyak. tmpfsdan btrf tidak. ZFS agak konservatif, saya mendapat output 2untuk statperintah kedua .

Terkait:

muru
sumber
Bagus! Saya masih bertanya-tanya bagaimana itu bisa terjadi.
kos
XFS tidak terpengaruh! harus menambahkan
Edward Torvalds