Що визначає розмір каталогу?


10

Я знаю, що розмір каталогу сам по собі - це різна річ, ніж розміри файлів у ньому.

Я думаю, що каталог є списком каталогів і файлів всередині, отже, розмір каталогу повинен бути пов'язаний з кількістю файлів / каталогів всередині, принаймні 4096 байт через обмеження розміру блоку.

Але в моїй системі я маю багато добре заповнених каталогів з 4096 байтами, а також деякі каталоги, які значно менш заселені, що становлять близько 10 мегабайт. Чи можете ви поясніть мені, чому це відбувається?


1
Для подальшого читання це досить інформативно: askubuntu.com/a/404716/380067
kos

3
Йдеться не лише про кількість записів у каталозі, а й про довжину їх назв.
kasperd

Відповіді:


13

Використовувана файлова система та максимальна кількість об'єктів у цьому каталозі в будь-який момент часу визначають розмір. Після того, як розмір за замовчуванням, зарезервований для каталогу, вичерпується, виділяється більше місця для каталогу. Однак, коли кількість об'єктів зменшується, виділений простір не звільняється автоматично. Отже, якщо, в один момент, каталог налічує 10 мільйонів сутностей, він залишився б такого ж розміру, якби 9999999 з них було видалено. Це призводить до цікавих ситуацій, як у цій публікації про Unix & Linux .

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

Це не обов'язково стосується інших файлових систем. У ext{2,3,4}файлових системах порушені. NTFS є меншою мірою. tmpfsі btrfs - ні. ZFS досить консервативний, я отримав вихід 2для другої statкоманди.

Пов'язані:


Чудово! Мені все ще було цікаво, як це могло бути.
kos

XFS не постраждав! слід додати
Едвард Торвальдс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.