Câu trả lời:
Đây là kích thước của không gian trên đĩa được sử dụng để lưu trữ thông tin meta cho thư mục (tức là bảng các tệp thuộc về thư mục này). Nếu nó có nghĩa là 1024 thì điều này có nghĩa là 1024 byte trên đĩa được sử dụng (nó luôn phân bổ các khối đầy đủ) cho mục đích này.
"Kích thước của một thư mục" được in bằng ls -l
(như với bất kỳ loại tệp nào) giá trị được báo cáo bởi stat()
cuộc gọi trong statbuf.st_size
.
Điều này st_size
có nghĩa gì đối với các thư mục, hoàn toàn phụ thuộc vào loại hệ thống tệp. Trừ khi bạn biết loại hệ thống tập tin và hiểu các khái niệm của nó, bạn không thể suy ra bất cứ điều gì từ giá trị trong st_size
.
Trong hệ thống tệp UNIX lịch sử hiện tại thường được đặt tên v7-fs
, các thư mục được lặp lại các mục 16 byte chứa số inode 16 bit và 14 byte tên tệp. "Kích cỡ" của một thư mục có ý nghĩa đối với read(2)
hoạt động và luôn luôn tăng hoặc giữ nguyên. Các mục .
và ..
mục được tạo bằng cách liên kết cứng chúng với thư mục hiện tại và thư mục một cấp trên. Số lượng liên kết cho một thư mục thiếu nữ trống rỗng là 2.
Trong hệ thống tệp BSD-4.2 mà từ năm 1989 (SVr4) được gọi ufs
, các thư mục là một chuỗi các bản ghi độ dài thay đổi sử dụng định dạng không được cấp để ổn định, vì vậy các lệnh không gian người dùng không được phép đọc định dạng này. "Kích thước" được báo cáo là kích thước tính theo byte như trong v7-fs, kích thước thường tăng hoặc giữ nguyên, nhưng các phiên bản mới hơn của hệ thống tệp có thể thu nhỏ kích thước trong một số điều kiện - nhưng không phải lúc nào bạn cũng mong đợi điều này. Số lượng liên kết được báo cáo cho một thư mục trống là 2 như với v7-fs
.
Trong WOFS
, hệ thống tập tin tôi thiết kế và triển khai từ mùa hè 1988 đến tháng 5 năm 1991, các thư mục luôn báo cáo "kích thước" 0 và không bao giờ có một loại nội dung có thể được đọc bằng read(2)
cuộc gọi. Điều này là do WOFS
hệ thống tệp Copy-on-Write đầu tiên và bởi vì trong WOFS
các tệp báo cáo thư mục mà chúng nằm trong thay vì được liệt kê trong thư mục. Nếu bạn đọc một WOFS
thư mục bằng cách sử dụng readdir()
, bạn chỉ nhận được dữ liệu cho các mục dự định, nhưng không bao giờ cho .
và ..
. Số lượng liên kết của một thư mục trống trên WOFS
là 1 và toàn bộ hành vi hoàn toàn tuân thủ POSIX.
Trong ZFS
đó, đã được thực hiện sau khi đọc các WOFS
bài báo. ZFS
là một hệ thống tập tin sao chép và ghi và các tác giả của nó không phủ nhận rằng họ đã sao chép các khái niệm từ đó WOFS
. Các thư mục trên ZFS báo cáo number of directory entries
trong st_size
, vì vậy "kích thước" được báo cáo không có ý nghĩa thực sự đối với không gian đĩa bị chiếm dụng từ dữ liệu thư mục. Không có .
và ..
các mục trong thư mục ZFS, nhưng nếu bạn gọi readdir()
, các mục này sẽ bị làm giả và trả về cho hai thao tác đầu tiên. ZFS là FS duy nhất trong danh sách không hỗ trợ các thư mục liên kết cứng nhưng số lượng liên kết được báo cáo cho các thư mục luôn là 2. Hai bất thường trong ZFS được triển khai để giảm sự nhầm lẫn trong các chương trình lịch sử không phải POSIX.
Tương tự như ZFS, WAFL sao chép một số nhưng không phải tất cả các ý tưởng từ WOFS
. Netapp WAFL
đã được viết 3 năm sau khi WOFS
bài báo được xuất bản, WAFL là bản sao chép, nhưng WAFL dường như báo cáo các giá trị "kích thước" có thể là "kích thước thư mục thực" theo giả định rằng thư mục có nội dung.
Một thư mục dự trữ 4096 byte (tối thiểu) cho siêu dữ liệu về chính nó và nội dung của nó.
Ngoài ra, 4096 byte là đơn vị phân bổ mặc định (khối) cho hệ thống tập tin ext2 / ext3 / ext4 và do đó một thư mục không thể nhỏ hơn.
Trên các hệ thống tệp khác nhau, bạn có thể tìm thấy các thư mục có kích thước mặc định khác nhau, đó là do kích thước khối mặc định của hệ thống tệp.
Kích thước thư mục cũng có thể tăng trưởng linh hoạt khi chúng được lấp đầy, nhưng một khi đã lấp đầy không gian dành cho dữ liệu meta có thể được phân bổ lại mà không cần xóa thư mục.
Một thư mục chỉ là một thư mục, giống như một thư mục điện thoại. Nó chỉ là một tập tin với một danh sách các số và một tên bên cạnh chúng. Mỗi số tham chiếu một tệp trong hệ thống tệp (số inode) và tên là tên tệp.
Bạn cần không gian đĩa để lưu dữ liệu đó, cách phân bổ và phát triển và thu nhỏ tùy thuộc vào hệ thống tệp.