Estou escrevendo um aplicativo que também armazena muitos arquivos, embora os meus sejam maiores e eu tenho 10 milhões deles que estarei dividindo em vários diretórios.
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 ficará cada vez mais lento. Existe algo chamado índice htree que está disponível para o ext3 que supostamente melhora bastante as coisas. Mas, está disponível apenas na criação do sistema de arquivos. Veja aqui: http://lonesysadmin.net/2007/08/17/use-dir_index-for-your-new-ext3-filesystems/
Como você precisará reconstruir o sistema de arquivos de qualquer maneira e devido às limitações do ext3, minha recomendação é que você use o ext4 (ou XFS). Eu acho que o ext4 é um pouco mais rápido com arquivos menores e tem recriações mais rápidas. Índice Htree é padrão no ext4, tanto quanto eu sei. Eu realmente não tenho nenhuma experiência com JFS ou Reiser, mas já ouvi pessoas recomendando isso antes.
Na realidade, eu provavelmente testaria vários sistemas de arquivos. Por que não tentar ext4, xfs & jfs e ver qual deles oferece 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 no stackoverflow.
Armazenando e acessando até 10 milhões de arquivos no Linux,
existem algumas respostas e links úteis.