Я пишу приложение, которое также хранит много-много файлов, хотя у меня их больше, и у меня их 10 миллионов, которые я разделю по нескольким каталогам.
ext3 медленный в основном из-за реализации по умолчанию «связанного списка». Так что если у вас есть много файлов в одном каталоге, это означает, что открытие или создание другого будет становиться все медленнее и медленнее. Есть нечто, называемое htree index, доступное для 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», а «open + fstat». Первый значительно медленнее второго. Не уверен, если у вас есть контроль или влияние на это.
Смотрите мой пост здесь на stackoverflow.
Храня и получая доступ к 10 миллионам файлов в Linux,
здесь есть несколько очень полезных ответов и ссылок.