Ich schreibe eine Anwendung, die auch viele, viele Dateien speichert, obwohl meine größer sind und ich 10 Millionen davon habe, die ich auf mehrere Verzeichnisse aufteilen werde.
ext3 ist hauptsächlich wegen der Standardimplementierung für verknüpfte Listen langsam. Wenn Sie also viele Dateien in einem Verzeichnis haben, bedeutet dies, dass das Öffnen oder Erstellen eines anderen Verzeichnisses immer langsamer wird. Es gibt einen so genannten htree-Index für ext3, der angeblich die Dinge erheblich verbessert. Es ist jedoch nur bei der Dateisystemerstellung verfügbar. Siehe hier: http://lonesysadmin.net/2007/08/17/use-dir_index-for-your-new-ext3-filesystems/
Da Sie das Dateisystem sowieso neu erstellen müssen und aufgrund der Einschränkungen von ext3, ist meine Empfehlung, dass Sie sich mit ext4 (oder XFS) befassen. Ich denke ext4 ist ein bisschen schneller mit kleineren Dateien und hat schnellere Neuerstellungen. Soweit mir bekannt ist, ist der Htree-Index auf ext4 voreingestellt. Ich habe keine wirklichen Erfahrungen mit JFS oder Reiser, aber ich habe schon gehört, dass die Leute das empfehlen.
In Wirklichkeit würde ich wahrscheinlich mehrere Dateisysteme testen. Probieren Sie ext4, xfs & jfs aus und finden Sie heraus, welches die beste Gesamtleistung bietet.
Ein Entwickler hat mir gesagt, dass der Anwendungscode schneller ausgeführt werden kann, indem er nicht "stat + open" aufruft, sondern "open + fstat". Der erste ist deutlich langsamer als der zweite. Ich bin mir nicht sicher, ob Sie die Kontrolle oder den Einfluss darauf haben.
Siehe meinen Beitrag hier auf stackoverflow.
Speichern und Zugreifen auf bis zu 10 Millionen Dateien unter Linux.
Dort finden Sie einige sehr nützliche Antworten und Links.