Co decyduje o wielkości katalogu?

10

Wiem, że rozmiar samego katalogu to coś innego niż rozmiary plików w nim zawartych.

Myślę o katalogu jako liście katalogów i plików wewnątrz, stąd rozmiar katalogu powinien być powiązany z liczbą plików / katalogów w środku, z minimum 4096 bajtów ze względu na ograniczenie wielkości bloku.

Ale w moim systemie mam wiele dobrze zapełnionych katalogów z 4096 bajtami i kilka katalogów, które są znacznie mniej zaludnione i mają około 10 megabajtów. Czy możesz mi wyjaśnić, dlaczego tak się dzieje?

    
zadawane Macond 26.12.2015, 10:39
źródło

1 odpowiedź

13

Używany system plików i maksymalna liczba elementów w tym katalogu w dowolnym momencie określa rozmiar. Gdy domyślny rozmiar zarezerwowany dla katalogu zostanie wyczerpany, więcej miejsca zostanie przydzielone dla katalogu. Jednakże, gdy liczba jednostek spada, przydzielona przestrzeń nie jest automatycznie zwalniana. Tak więc, jeśli w pewnym momencie katalog ma 10 milionów jednostek, pozostanie na tym samym poziomie, jeśli zostanie usuniętych 9999,999 z nich. Prowadzi to do interesujących sytuacji, takich jak ten Unix & amp; Linux post .

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

To niekoniecznie musi obowiązywać dla innych systemów plików. Problem dotyczy systemów plików ext{2,3,4} . NTFS jest w mniejszym stopniu. tmpfs i btrfs nie są. ZFS jest raczej konserwatywny, otrzymałem wynik 2 dla drugiego polecenia stat .

Powiązane:

odpowiedział muru 26.12.2015, 11:07
źródło

Przeczytaj inne pytania na temat tagów