RAID5 wird nicht nachwachsen (ext4lazyinit)

622
LukeLR

Ich hatte ein RAID5-Array bestehend aus 3x5TB-Festplatten, die zusammengebaut wurden mdadm. Darüber hinaus habe ich eine LUKS/dmcryptVerschlüsselungsschicht erstellt und das verschlüsselte Gerät mit formatiert ext4. Ich möchte, dass die Festplatten im Fall von Inaktivität heruntergefahren werden.

Alles funktionierte mehrere Monate gut, die Scheiben wurden nach einer Minute Inaktivität heruntergefahren. Nun fügte sudo mdadm --add /dev/md0 /dev/sdb1ich dem Array eine vierte 5-TB-Platte derselben Art hinzu, dann wuchs ich das Array auf diese Platte ( mdadm --grow /dev/md0 --raid-devices=4) auf und vergrößerte schließlich das Dateisystem mit sudo fsck -f /dev/mapper/raid5und sudo resize2fs /dev/mapper/raid5.

Es sind keine Fehler aufgetreten, und das Array ist jetzt 5 TB größer. Aber die Scheiben drehen sich nicht mehr. Die Maschine läuft rund um die Uhr, verwendet die Datenträger jedoch nicht, aber obwohl einige Tage gewartet werden, sind die Datenträger immer noch aktiv.

iotopzeigt häufige Vorkommen von ext4lazyinit, die alle paar Sekunden für weniger als eine Sekunde auftauchen. Ich habe das nicht bemerkt, bevor ich das Dateisystem vergrößert habe. Wahrscheinlich sind es also Aufgaben, die die Festplatten wach halten? Aber wie kann ich zwingen ext4lazyinit, seine Aufgabe zu erledigen?

1

1 Antwort auf die Frage

1
Attie

ext4lazyinittut genau das, was es sagt - es initialisiert den Rest des Dateisystems faul. Dies bewirkt, dass das Dateisystem schnell erstellt werden kann. Wie Sie bemerkt haben, wird es versuchen, die Leistung Ihres Systems so wenig wie möglich zu beeinträchtigen. Dies bedeutet, dass die Fertigstellung lange dauern wird.

Die erste Option ist, es abzuwarten - es wird irgendwann anhalten und Ihre Festplatten sollten wieder in den Leerlauf gehen.


Eine andere Option besteht darin, das Dateisystem zu deinstallieren und temporär mit zu mounten -o init_itable=0, wodurch der Lazy-Init proaktiver wird, aber die Leistung wird darunter leiden. Der Standardwert ist 10. Wenn die Leistung in der Zwischenzeit wichtig ist, versuchen Sie es eventuell mit Werten dazwischen. ( ref )

init_itable=n The lazy itable init code will wait n times the number of milliseconds it took to zero out the previous block group's inode table. This minimizes the impact on the system performance while file system's inode table is being initialized. 

Eine dritte Option ist die Deaktivierung der Initialisierung, die itable funktioniert - obwohl dies meiner Meinung nach eine schlechte Option ist, insbesondere für ein Dateisystem, das in Produktion ist und vermutlich wichtige Daten enthält (deshalb verwenden Sie ein RAID, richtig?)

Sie können dies mit der noinit_itableOption tun :

noinit_itable Do not initialize any uninitialized inode table blocks in the background. This feature may be used by installation CD's so that the install process can complete as quickly as possible; the inode table  initialization process would then be deferred until the next time the file system is unmounted. 

Bearbeiten: Schätzungen zur Dauer.

Denken Sie daran, dass Festplatten eine Schreibleistung von ~ 110-120 MB / s haben ... Sie betreiben ein Array, so dass in einer idealen Welt eine Verbesserung auf ~ 330-360 MB / s ( 110 * (n - 1)) zu sehen ist. Ich habe auch gesehen, dass RAID5 viel langsamer läuft (~ 40 MB / s über 8 Festplatten mit einem RAID-Controller - schmerzhaft).

Mit geschätzten 110 MB / s rechnen Sie für eine volle 5-TB-Init-Festplatte mit rund 12 Stunden.

Wie gesagt, das Array ist die meiste Zeit inaktiv, daher ist die Leistung kein Problem. Aber Datenintegrität ist, wie Sie bereits vermutet haben. Also habe ich es mit `init_itable = 0` versucht, was zumindest dazu führt, dass` ext4lazyinit` die meiste Zeit bei 100% Festplattennutzung aktiv ist. Ich werde sehen, ob es morgen fertig ist. LukeLR vor 6 Jahren 0
Gutes Zeug - Ich habe ein Update für eine Schätzung vorgenommen, wie lange Sie damit rechnen könnten. Attie vor 6 Jahren 1
Vielen Dank für die Einschätzungen - es ist schon fertig! Die Disketten sind gerade heruntergefahren und alles ist wieder ruhig! Ich bin so froh, dass das geholfen hat. Jetzt werde ich ohne "init_itable = 0" wieder einsteigen und sehen, ob es so bleibt. Ich denke, es war viel schneller als Ihre Schätzungen, da das Dateisystem zu 60% genutzt wird. Obwohl ich wesentlich langsamere Geschwindigkeiten von etwa 4 MB / s hatte (wahrscheinlich zufälliges Lesen / Schreiben?) LukeLR vor 6 Jahren 1