Я пишу заявку, яка також зберігає багато і багато файлів, хоча мої є більшими, і у мене є 10 мільйонів, які я буду розбивати на декілька каталогів.
ext3 повільний, головним чином, через реалізацію за замовчуванням "пов'язаного списку". Отже, якщо у вас в одному каталозі багато файлів, це означає, що відкриття або створення іншого відбувається повільніше і повільніше. Існує щось, що називається індексом htree, який доступний для ext3, що, як повідомляється, значно покращує речі. Але це доступно лише у створенні файлової системи. Дивіться тут: http://lonesysadmin.net/2007/08/17/use-dir_index-for-your-new-ext3-filesystems/
Оскільки вам доведеться все-таки відновити файлову систему і через обмеження ext3, моя рекомендація полягає в тому, щоб ви подивилися на використання ext4 (або XFS). Я думаю, що ext4 трохи швидше з меншими файлами і має швидші перебудови. Наскільки мені відомо, індекс Htree є типовим для ext4. Я не маю жодного досвіду роботи з JFS або Reiser, але я чув, як люди рекомендували це раніше.
Насправді я, мабуть, перевірив декілька файлових систем. Чому б не спробувати ext4, xfs & jfs і подивитися, який з них дає найкращу загальну продуктивність?
Щось, що розробник сказав мені, що може прискорити роботу в коді програми, - це не робити "stat + open" дзвінок, а "відкрити + fstat". Перший значно повільніше, ніж другий. Не впевнений, чи маєте ви будь-який контроль чи вплив на це.
Дивіться мій пост тут на stackoverflow.
Зберігання та доступ до 10 мільйонів файлів у Linux
є дуже корисні відповіді та посилання.