Estoy escribiendo una aplicación que también almacena muchos archivos, aunque los míos son más grandes y tengo 10 millones de ellos que dividiré en varios directorios.
ext3 es lento principalmente debido a la implementación predeterminada de la "lista vinculada". Entonces, si tiene muchos archivos en un directorio, significa que abrir o crear otro será cada vez más lento. Hay algo llamado índice htree que está disponible para ext3 que, según los informes, mejora mucho las cosas. Pero, solo está disponible en la creación del sistema de archivos. Ver aquí: http://lonesysadmin.net/2007/08/17/use-dir_index-for-your-new-ext3-filesystems/
Como tendrá que reconstruir el sistema de archivos de todos modos y debido a las limitaciones de ext3, mi recomendación es que busque usar ext4 (o XFS). Creo que ext4 es un poco más rápido con archivos más pequeños y tiene reconstrucciones más rápidas. El índice Htree está predeterminado en ext4 por lo que yo sé. Realmente no tengo ninguna experiencia con JFS o Reiser, pero he oído que la gente lo recomienda antes.
En realidad, probablemente probaría varios sistemas de archivos. ¿Por qué no probar ext4, xfs y jfs y ver cuál ofrece el mejor rendimiento general?
Algo que un desarrollador me dijo que puede acelerar las cosas en el código de la aplicación no es hacer una llamada "stat + open" sino más bien "abrir + fstat". El primero es significativamente más lento que el segundo. No estoy seguro si tiene algún control o influencia sobre eso.
Vea mi publicación aquí en stackoverflow.
Al almacenar y acceder a hasta 10 millones de archivos en Linux,
hay algunas respuestas y enlaces muy útiles.