Estou escrevendo um aplicativo que também armazena muitos e muitos arquivos, embora os meus sejam maiores e eu tenha 10 milhões deles que dividirei em vários diretórios.
O ext3 é lento principalmente devido à implementação padrão da "lista vinculada". Portanto, se você tiver muitos arquivos em um diretório, isso significa que abrir ou criar outro será mais lento e lento. Existe algo chamado um índice de htree que está disponível para o ext3 que supostamente melhora muito as coisas. Mas só está disponível na criação do sistema de arquivos. Veja aqui: link
Como você terá que reconstruir o sistema de arquivos de qualquer maneira e devido às limitações do ext3, minha recomendação é que você olhe para o uso do ext4 (ou XFS). Eu acho que ext4 é um pouco mais rápido com arquivos menores e tem recriações mais rápidas. O índice Htree é o padrão no ext4, tanto quanto eu sei. Eu realmente não tenho nenhuma experiência com o JFS ou o Reiser, mas ouvi pessoas recomendarem isso antes.
Na realidade, provavelmente testaria vários sistemas de arquivos. Por que não tentar ext4, xfs & jfs e ver qual deles dá o melhor desempenho geral?
Algo que um desenvolvedor me disse que pode acelerar as coisas no código do aplicativo não é fazer uma chamada "stat + open", mas sim "open + fstat". O primeiro é significativamente mais lento que o segundo. Não tenho certeza se você tem algum controle ou influência sobre isso.
Veja meu post aqui em stackoverflow.
Armazenando & acessando até 10 milhões de arquivos no Linux
existem algumas respostas e links muito úteis.