Tôi đang viết một ứng dụng cũng lưu trữ rất nhiều tập tin mặc dù của tôi lớn hơn và tôi có 10 triệu trong số chúng sẽ được chia trên nhiều thư mục.
ext3 chậm chủ yếu là do triển khai "danh sách liên kết" mặc định. Vì vậy, nếu bạn có nhiều tệp trong một thư mục, điều đó có nghĩa là mở hoặc tạo tệp khác sẽ ngày càng chậm hơn. Có một thứ gọi là chỉ số htree có sẵn cho ext3 giúp cải thiện mọi thứ rất nhiều. Nhưng, nó chỉ có sẵn khi tạo hệ thống tập tin. Xem tại đây: http://lonesysadmin.net/2007/08/17/use-dir_index-for-your-new-ext3-filesystems/
Vì dù sao bạn cũng sẽ phải xây dựng lại hệ thống tập tin và do những hạn chế của ext3, nên tôi khuyên bạn nên sử dụng ext4 (hoặc XFS). Tôi nghĩ ext4 nhanh hơn một chút với các tệp nhỏ hơn và được xây dựng lại nhanh hơn. Chỉ số Htree được mặc định trên ext4 theo như tôi biết. Tôi thực sự không có bất kỳ kinh nghiệm nào với JFS hoặc Reiser nhưng tôi đã nghe mọi người khuyên điều đó trước đây.
Trong thực tế, tôi có thể kiểm tra một số hệ thống tập tin. Tại sao không thử ext4, xfs & jfs và xem cái nào cho hiệu suất tổng thể tốt nhất?
Một cái gì đó mà một nhà phát triển nói với tôi rằng có thể tăng tốc mọi thứ trong mã ứng dụng không phải là thực hiện cuộc gọi "stat + open" mà là "open + fstat". Cái thứ nhất chậm hơn đáng kể so với cái thứ hai. Không chắc chắn nếu bạn có bất kỳ kiểm soát hoặc ảnh hưởng về điều đó.
Xem bài viết của tôi ở đây trên stackoverflow.
Lưu trữ và truy cập tới 10 triệu tệp trong Linux,
có một số câu trả lời và liên kết rất hữu ích ở đó.