Số lượng tệp tối đa mà thư mục Unix có thể chứa là bao nhiêu?
Tôi nghĩ rằng nó sẽ giống như số lượng tập tin.
Số lượng tệp tối đa mà thư mục Unix có thể chứa là bao nhiêu?
Tôi nghĩ rằng nó sẽ giống như số lượng tập tin.
Câu trả lời:
Thay đổi trên mỗi hệ thống tệp, http://en.wikipedia.org/wiki/Comparison_of_file_systems
Trên tất cả các hệ thống tệp Unix hiện tại, một thư mục có thể chứa số lượng tệp thực tế không giới hạn . Trong khi "không giới hạn" bị giới hạn bởi không gian đĩa và inodes - bất cứ điều gì hết trước tiên.
Với các thiết kế hệ thống tệp cũ hơn ( ext2 , UFS , HFS + ), mọi thứ có xu hướng bị chậm nếu bạn có nhiều tệp trong một thư mục. Thông thường mọi thứ bắt đầu trở nên đau đớn khoảng 10.000 tập tin. Với các hệ thống tệp mới hơn ( ReiserFS , XFS , ZFS , UFS2 ), bạn có thể có hàng triệu tệp trong một thư mục mà không gặp các tắc nghẽn hiệu suất chung.
Nhưng có quá nhiều tệp trong một thư mục không được kiểm tra tốt và có rất nhiều công cụ thất bại. Ví dụ, các kịch bản bảo trì hệ thống định kỳ có thể barf trên nó.
Tôi vui vẻ sử dụng một thư mục có vài triệu tệp trên UFS2 và không thấy có vấn đề gì cho đến khi tôi muốn xóa thư mục đó - mất vài NGÀY.
Nó phụ thuộc vào số lượng inodes mà hệ thống tập tin được tạo ra. Thi công
df -i
sẽ cung cấp cho bạn số lượng inodes miễn phí. Đây là giới hạn thực tế của số lượng tệp mà một hệ thống tệp và do đó một thư mục có thể chứa.
Tôi giả sử bạn đang nghĩ đến việc lưu trữ rất nhiều tập tin ở một nơi, phải không?
Hầu hết các hệ thống tệp Unix hiện đại có thể đặt rất nhiều tệp trong một thư mục, nhưng các hoạt động như đường dẫn sau, tệp liệt kê, v.v ... liên quan đến tìm kiếm tuyến tính thông qua danh sách các tệp và bị chậm nếu danh sách quá lớn.
Tôi dường như nhớ lại rằng một vài ngàn là quá nhiều cho hầu hết các ứng dụng thực tế. Giải pháp điển hình là phá vỡ nhóm. Đó là,
/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
và lưu trữ các tệp của bạn trong thư mục con thích hợp theo hàm băm của chúng basename
. Chọn một hàm băm thuận tiện, ký tự đầu tiên có thể làm cho các trường hợp đơn giản.
Cristian Ciupitu viết trong các bình luận rằng XFS , và có thể các hệ thống tệp rất mới khác, sử dụng các log(N)
cấu trúc có thể tìm kiếm để giữ nội dung thư mục, do đó, ràng buộc này được cải thiện rất nhiều .
Từ nhận xét bạn để lại, tôi nghĩ bạn không thực sự quan tâm đến việc có bao nhiêu tệp / thư mục mà FS của bạn có thể lưu trữ.
Bạn có thể nên cân nhắc sử dụng ModRewrite và viết lại trang web.com / username vào site.com/?user= hoặc một cái gì đó thuộc loại này và lưu trữ tất cả dữ liệu của bạn trong cơ sở dữ liệu. Tạo một thư mục cho mỗi người dùng thường không cần thiết (và không phải là một ý tưởng tốt).
Điều đó nói rằng, mỗi hệ thống tập tin có giới hạn và df
có thể cho bạn biết có bao nhiêu nút có sẵn trên mỗi phân vùng trong hệ thống của bạn.