Welches Linux-Dateisystem würden Sie im folgenden Szenario für die beste Geschwindigkeit wählen :
- Hundert Millionen Dateien
- ~ 2k Dateigröße im Durchschnitt
- > 95% Lesezugriff
- ziemlich zufälliger Zugriff
- hohe Nebenläufigkeit (> 100 Prozesse)
Hinweis: Die Dateien werden in einem tiefen hierarchischen Baum gespeichert, um große Verzeichnisse zu vermeiden. Jedes Blattverzeichnis enthält ungefähr tausend Dateien.
Wie würden Sie es bewerten?
linux
filesystems
benchmark
bene
quelle
quelle
Antworten:
Hier sind einige Ergebnisse, die alle wichtigen Linux-FSes mit bonnie ++ vergleichen, die Sie als Ausgangspunkt verwenden können.
In Bezug auf zufällige Suchvorgänge gewinnt Reiser, gefolgt von EXT4, gefolgt von JFS. Ich bin nicht sicher, ob dies genau mit der Verzeichnissuche korreliert, aber es scheint, als wäre es ein Indikator. Dafür müssen Sie Ihre eigenen Tests durchführen. EXT2 schlägt bei der Dateierstellung alles ab, wahrscheinlich aufgrund des Fehlens eines Journals. Trotzdem schlägt EXT4 alles außer Reiser, den Sie aufgrund des aktuellen Status von hans reiser möglicherweise nicht verwenden möchten.
Möglicherweise möchten Sie nach Laufwerken suchen, die NCQ unterstützen, und sicherstellen, dass Ihre Installation für die Verwendung eingerichtet ist. Bei starker Suche sollte es einen Geschwindigkeitsschub liefern.
Stellen Sie schließlich sicher, dass Ihre Maschine eine Tonne RAM hat. Da die Dateien nicht oft aktualisiert werden, speichert Linux die meisten von ihnen im Cache, wenn freier Speicherplatz zur Verfügung steht. Wenn Ihre Verwendungsmuster stimmen, erhalten Sie einen massiven Geschwindigkeitsschub.
quelle
Ich stimme den meisten Aussagen von Andrew zu, mit der Ausnahme, dass ich Reiser4 oder das ältere (aber besser unterstützte) ReiserFS empfehlen würde . Wie diese Tests (und die Dokumentation für ReiserFS) zeigen, ist es genau auf die Situation ausgelegt, nach der Sie fragen (große Anzahl kleiner Dateien oder Verzeichnisse). Ich habe in der Vergangenheit ReiserFS mit Gentoo und Ubuntu ohne Probleme verwendet.
Zum Status von Hans Reiser sehe ich kein Problem mit dem Code oder der Stabilität des Dateisystems. Reiser4 wird sogar sowohl von DARPA als auch von Linspire gesponsert. Obwohl ich der Meinung bin, dass die weitere Entwicklung des Reiser-Dateisystems unbestimmt ist, kann ich nicht entscheiden, ob jemand es verwenden soll oder nicht.
quelle
Ich weiß, dass dies keine direkte Antwort auf Ihre Frage ist, aber in diesen Fällen denke ich, dass eine Datenbank besser geeignet ist, dies zu hosten. Kleine Dateien können im Binärformat in einer Datenbanktabelle gespeichert und bei wil abgerufen werden. Die Software, die diese Dateien verwendet, sollte dies jedoch unterstützen können ...
quelle
Jemand von Unix StackExchange hat einen Benchmark (mit Quelle) erstellt, um genau dieses Szenario zu testen:
F: Was ist das leistungsstärkste Linux-Dateisystem zum Speichern vieler kleiner Dateien (Festplatte, nicht SSD)?
Die beste Leseleistung scheint von ReiserFS zu kommen.
quelle
Nach meiner Erfahrung bläst ext2 ext4 für kleine Dateien aus dem Wasser. Wenn Sie sich nicht für Schreibintegrität interessieren, ist es großartig. Beispielsweise erstellt Subversion viele, viele, viele kleine Dateien, die von ext4 und anderen Dateisystemen (XFS) blockiert werden (führen Sie einen Cron-Job aus, der die Daten jede halbe Stunde mit ext4 von ext2 synchronisiert, oder lösen Sie das Problem so gut wie.)
Durch Ausführen dieser Befehle wird ext2 noch schneller (obwohl die meisten dieser Optionen das Dateisystem nach einem Absturz instabil machen, es sei denn, Sie führen die Synchronisierung vor dem Absturz aus). Diese Befehle haben fast keine Auswirkung auf ext4 mit kleinen Dateien.
quelle
Ich denke ext3 (oder ext4), vielleicht wäre JFS eine gute Lösung. Ich wäre vorsichtig mit ext4 und btrfs (Dateisysteme sind schwierig - seien Sie mit Backups vorbereitet, wenn Sie die neuesten und neuesten Dinge verwenden möchten).
Es gibt auch verschiedene Parameter, die Sie während der mkfs-Zeit anpassen können, um das Dateisystem nach Ihren Wünschen anzupassen.
Ich würde es auf jeden Fall gegen XFS empfehlen . Nicht weil es ein schlechtes Dateisystem ist, aber das Erstellen / Löschen ist eine kostspielige Operation.
Verwenden Sie ein intelligentes Namensschema, um Probleme bei der Verzeichnissuche zu vermeiden. Beispiel:
oder ähnliche, kompliziertere Schemata. Dies beschleunigt Ihre Verzeichnissuche und damit die allgemeine Zugriffsgeschwindigkeit. (Es ist ein alter Unix-Trick, zurück aus V7, denke ich)
quelle
Die meisten FS werden mit mehr als 65K-Dateien in einem Verzeichnis ersticken, ich denke, das gilt immer noch für ext4. Die Reiser-Dateisysteme haben dieses Limit nicht (die Leute bei mp3.com haben dafür bezahlt). Ich bin mir über nichts anderes sicher, aber das ist eines der Verwendungsszenarien, für die ReiserFS gemacht wurde.
quelle
ls
oder das Tab vervollständigen, funktioniert es schnell. Vermutlich wegen des Index.