Điều gì xác định kích thước thư mục?


10

Tôi biết rằng kích thước của một thư mục là một điều khác với kích thước của các tập tin trong đó.

Tôi nghĩ rằng một thư mục là một danh sách các thư mục và tệp trong đó, do đó kích thước của thư mục phải liên quan đến số lượng tệp / thư mục bên trong, với tối thiểu 4096 byte do ràng buộc kích thước khối.

Nhưng trong hệ thống của tôi, tôi có nhiều thư mục được phổ biến rộng rãi với 4096 byte và một số thư mục có dân số ít hơn đáng kể là khoảng 10 megabyte. Bạn có thể vui lòng giải thích cho tôi tại sao điều này xảy ra?


1
Để đọc thêm, đây là thông tin khá hữu ích: Askubfox.com/a/404716/380067
kos

3
Nó không chỉ là về số lượng mục trong thư mục mà còn về độ dài của tên của họ.
kasperd

Câu trả lời:


13

Hệ thống tập tin được sử dụng và số lượng thực thể tối đa trong thư mục đó tại bất kỳ thời điểm nào xác định kích thước. Khi kích thước mặc định dành cho thư mục đã hết, nhiều không gian được phân bổ cho thư mục. Tuy nhiên, khi số lượng thực thể giảm, không gian được phân bổ sẽ không tự động được giải phóng. Vì vậy, nếu tại một thời điểm, một thư mục có 10 triệu thực thể, nó sẽ giữ nguyên kích thước nếu 9,999.999 trong số chúng bị xóa. Điều này dẫn đến các tình huống thú vị như trong bài viết về Unix & Linux này .

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

Điều này không nhất thiết phải giữ cho các hệ thống tập tin khác. Các ext{2,3,4}hệ thống tập tin bị ảnh hưởng. NTFS là, ở một mức độ ít hơn. tmpfsvà btrfs không. ZFS khá bảo thủ, tôi nhận được đầu ra 2cho statlệnh thứ hai .

Liên quan:


Tuyệt quá! Tôi vẫn đang tự hỏi làm thế nào điều đó có thể được.
kos

XFS không bị ảnh hưởng! nên thêm
Edward Torvalds
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.