Số lượng tệp tối đa mà thư mục Unix có thể chứa là bao nhiêu?


20

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.


3
Một câu hỏi tốt hơn nhiều có thể là: Tôi nên sử dụng bao nhiêu? stackoverflow.com/questions/466521/ Mạnh
Joachim Sauer

1
Tôi thích url của trang web của tôi giống như site.com/username/, v.v., nhưng nghĩ rằng (nếu tôi may mắn) có được hơn 2 triệu người dùng sẽ có hơn 2 triệu thư mục, vì tôi không muốn sử dụng một tập lệnh như PHP với một modrewrite tôi đã xem xét các khả năng khác của các thư mục trong một thư mục

1
Làm cho mình một ưu tiên và tạo các thư mục con với một sơ đồ viết lại.
Peter Eisentraut

Câu trả lời:



14

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.


12

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.


1
Tuy nhiên, nhiều hệ thống tệp có giới hạn tệp trên mỗi thư mục, bất kể số lượng nút miễn phí.

1
có, nhưng câu hỏi nhắm vào các hệ thống tệp UNIX và theo như tôi biết thì tất cả các hệ thống tệp UNIX hiện đại không giới hạn số lượng tệp trong một thư mục.

6

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 .


5
Một số hệ thống tập tin hiện đại, ví dụ XFS không liên quan đến tìm kiếm tuyến tính. Công nghệ B-Tree của XFS cho phép nó đi trực tiếp vào các khối và / hoặc phạm vi chứa vị trí của tệp bằng các chỉ số tinh vi (từ uoks.uj.edu.pl/resource/flugor/IRIX/xfs-whitepaper.html ).
Cristian Ciupitu

À! Tôi không biết điều đó. Cảm ơn. Sẽ thêm vào văn bản.
dmckee

1
Đối với ext3, bạn phải kích hoạt tính năng "dir_index", xem chỉnh2fs (8).

0

ext3một trong những định dạng hệ thống tập tin linux phổ biến nhất trở nên chậm chạp nếu bạn có khoảng 20k + tệp trong một thư mục. Bất kể nó có thể chứa bao nhiêu, bạn nên cố gắng tránh có nhiều tệp trong một thư mục.


0

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à dfcó 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.

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.