Ich habe ein Linux-Software-Raid-Level 5 eingerichtet, das aus 4 * 2-TB-Festplatten besteht. Das Festplattenarray wurde mit einer Streifengröße von 64 KB und ohne weitere Konfigurationsparameter erstellt. Nach der ersten Neuerstellung habe ich versucht, ein Dateisystem zu erstellen, und dieser Schritt dauert sehr lange (ungefähr eine halbe Stunde oder länger). Ich habe versucht, ein xfs- und ein ext3-Dateisystem zu erstellen. Beide haben lange gedauert. Mit mkfs.ext3 habe ich das folgende Verhalten beobachtet, das hilfreich sein könnte:
- Das Schreiben von Inode-Tabellen läuft schnell, bis es 1053 (~ 1 Sekunde) erreicht, dann schreibt es ungefähr 50, wartet zwei Sekunden, dann werden die nächsten 50 geschrieben (gemäß der Konsolenanzeige)
- Wenn ich versuche, den Vorgang mit Strg + C abzubrechen, bleibt er eine halbe Minute lang hängen, bevor er wirklich abgebrochen wird
Die Leistung der einzelnen Festplatten ist sehr gut. Ich habe bonnie ++ auf jeder Festplatte mit Schreib- / Lesewerten von etwa 95/110 MB / s separat ausgeführt. Selbst wenn ich bonnie ++ auf jedem Laufwerk parallel ausführe, werden die Werte nur um ca. 10 MB reduziert. Daher schließe ich die Hardware- / E / A-Planung im Allgemeinen als Problemquelle aus.
Ich habe erfolglos verschiedene Konfigurationsparameter für stripe_cache_size und readahead size ausprobiert, aber ich denke nicht, dass sie für die Erstellung des Dateisystems so relevant sind.
Die Serverdetails:
- Linux Server 2.6.35-27-generisches # 48-Ubuntu SMP x86_64 GNU / Linux
- mdadm - v2.6.7.1
Hat jemand einen Vorschlag, wie man dies weiter debuggt?
quelle
time mkfs.xfs -l sunit=128 -d agsize=64g,sunit=128,swidth=512 -b size=4096 /dev/md0 -f
hat ungefähr genauso lange gedauert wie mkfs ohne ParameterIch vermute, Sie stoßen auf das typische RAID5-Problem mit kleinen Schreibvorgängen. Für Schreibvorgänge unter der Größe einer Streifengröße muss sowohl für die Daten als auch für die Parität ein Lese-, Änderungs- und Schreibvorgang ausgeführt werden. Wenn der Schreibvorgang dieselbe Größe wie der Streifen hat, kann er die Parität einfach überschreiben, da er den Wert kennt und ihn nicht neu berechnen muss.
quelle
Die Leistung Ihres mkfs und des nachfolgenden Dateisystems kann sich verbessern, wenn Sie beim Erstellen des Dateisystems den Schritt und die Streifenbreite angeben. Wenn Sie die Standard-4k-Blöcke verwenden, beträgt Ihr Schritt 16 (RAID-Streifen von 64k geteilt durch den Dateisystemblock von 4k) und Ihre Streifenbreite 48 (Dateisystemschritt von 16 multipliziert mit den 3 Datenplatten in Ihrem Array).
quelle