Auswahl eines Cluster-Dateisystems zum Lesen/Schreiben einer großen Anzahl kleiner Dateien

Auswahl eines Cluster-Dateisystems zum Lesen/Schreiben einer großen Anzahl kleiner Dateien

Ich richte einen kleinen Linux-Cluster für mein Labor ein. Derzeit haben wir einen Login-Knoten für die Jobübermittlung und drei Rechenknoten, die über Gigabit-LAN ​​verbunden sind (leider kein Infiniband).

Zuerst habe ich NFS einfach verwendet, um den gemeinsam genutzten Speicher (Home-Ordner) für Clusterbenutzer zu exportieren. Doch bald stellten wir fest, dass NFS unter realen Bedingungen keine gute Leistung bringt.

Es stellte sich heraus, dass es für meine Cluster-Benutzer sehr üblich ist, GBs kleiner Bilddateien (eine ist <100 KB) im gemeinsam genutzten Speicher zu lesen und zu schreiben. NFS weist bei der E/A kleiner Dateien eine sehr schlechte Leistung auf.

Ich habe einen einfachen Test der NFS/CIFS/SSHFS-Leistung beim Schreiben kleiner Dateien. Die Zeit zum Entpacken von 20.000 kleinen Dateien (insgesamt ca. 600 MB) auf jedem Dateisystem beträgt:

  • CIFS: 25~30s
  • SSHFS: 45~55 Sek.
  • NFS (v3/v4): so langsam, dass ich nicht gewartet habe (Schätzung: 10 Minuten)

CIFS/SSHFS bietet im Vergleich zu NFS eine sehr gute Leistung. Es ist jedoch keine gängige Praxis, CIFS/SSHFS für Linux-Home-Ordner in einem Computercluster-Szenario zu verwenden (und meines Wissens ist CIFS kein wirklich POSIX-kompatibles Dateisystem).

Was halten Sie von der Wahl eines Netzwerkdateisystems für kleine Dateilasten? Sollte ich NFS durch andere Cluster-/verteilte Dateisysteme ersetzen? Oder gibt es eine Möglichkeit, NFS für kleine Dateien zu optimieren?

Antwort1

Wenn Ihr Setup groß genug wäre, hätte ich IBM Spectrum Scale (früher GPFS) empfohlen, aber angesichts des Umfangs Ihrer Operationen schlage ich vor, dass Sie ZFS mit einer kleinen Änderung verwenden: Stellen Sie atime auf „Aus“. Wenn Sie nicht wirklich Wert darauf legen, die Zugriffszeit auf Dateien aufzuzeichnen, wird ZFS in Ihrem Szenario recht gut funktionieren.

verwandte Informationen