"ext4lazyinit" läuft seit 6 Tagen auf einem neuen RAID5-Array

"ext4lazyinit" läuft seit 6 Tagen auf einem neuen RAID5-Array

Ich weiß, dass es viele „ext4lazyinit“-Themen gibt. Aber sie drehen sich alle um 4-6 TB-Festplatten und Poster, die angeben, dass es am Ende nach ein paar Stunden fertig ist.

Auf meiner Seite habe ich einen neu erstellten RAID5-Bereich mit 5 x 14 TB Festplatte (also 51 TB Gesamtgröße) und „ext4lazyinit“ läuft seit ... 6 Tagen (= seit dem letzten Neustart, aber wahrscheinlich lief es schon ein paar Tage vorher). Und natürlich generiert es ständig I/O auf dem Array. Nirgendwo Fehler, also scheint abgesehen davon alles in Ordnung zu sein.

Aber warum dauert es so lange? Ok, das Festplattenarray ist groß, aber ... 6 Tage?!

Dieses Verhalten war mir zunächst nicht bewusst und ich habe deshalb irgendwann (ein paar Tage, nachdem ich das RAID-Array erstellt hatte) einen Systemneustart durchgeführt. „ext4lazyinit“ scheint danach automatisch neu gestartet worden zu sein, aber ist es möglich, dass durch den Neustart etwas beschädigt wurde?

ps -ef|grep lazy
root       583     2  0 Dec02 ?        00:04:37 [ext4lazyinit]

Und gibt es eine Möglichkeit, den Fortschritt dieses Prozesses zu überwachen (etwas wie ein , cat /proc/mdstatdas für einige mdadm-Operationen verfügbar ist)? (Ich konnte in dmesg, journalctl oder anderen Protokollen nichts finden.)

Zu beachten ist (und vielleicht erklärt das, warum es so langsam ist?), dass die Anzahl der E/A-Vorgänge im Laufe der Zeit konstant, aber eher niedrig zu sein scheint (vielleicht läuft der Prozess also nicht mit voller Festplattengeschwindigkeit?). Gibt es eine Möglichkeit, diese Geschwindigkeit zu erhöhen?

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.42    1.17    0.00   98.17

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
mmcblk0           0.00         0.00         0.00          0          0
sda               3.00         0.00         8.50          0         17
sdb               5.00       256.00       264.50        512        529
sdc               4.00       192.00       200.50        384        401
sdd               4.00        64.00        72.50        128        145
sde               3.00         0.00         8.50          0         17
md0               0.50         0.00       256.00          0        512

Antwort1

Ich habe das gleiche Problem. 24 GB RAID5-Array und ich habe gestern ein mkfs.ext4 gestartet. Ich lasse das hier für alle anderen, die auf diesen Thread mit den von mir gefundenen Informationen stoßen.

Der einfachste Weg, dies zu tun, besteht darin, einfach mkfs.ext4 mit deaktivierten Lazy-Optionen zu verwenden und dann lange zu warten, bis alles initialisiert ist. Wenn Sie Ihr Array verwenden möchten, ist dies auf rotierenden Festplatten ohnehin nicht optimal, da bis zum Abschluss der Lazy-Init viele verstreute E/A-Vorgänge stattfinden und die Lese-/Schreibgeschwindigkeit dadurch absolut beeinträchtigt wird.

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

Beschleunigen: Mounten Sie mit dieser Option: init_itable=0 (das ist der Multiplikator dafür, wie lange nach dem Nullsetzen eines Blocks gewartet wird (der Standardwert ist 10, was bedeutet, dass 10x so lange gewartet wird, wie das Nullsetzen des letzten Blocks gedauert hat, bevor fortgefahren wird. 0 = sofort ausführen, beansprucht aber einen viel größeren Teil Ihrer E/A-Bandbreite).

Der Link in den Kommentaren oben (Ext4lazyinit zwingen, seine Arbeit zu beenden?) ist sehr nützlich, um den Fortschritt zu überwachen. Aktuelle Schreibvorgänge im Vergleich zur Gesamtzahl der Sektoren von fdisk. Ich bin seit einem Tag dabei und bin jetzt bei 54 %, also schätze ich, dass ich es schaffe ... Lazy Init läuft mit etwa 10-12 MB/s Schreibgeschwindigkeit.

Stellen Sie sicher, dass Sie nichts anderes auf der Festplatte tun und:

echo 1 > /proc/sys/vm/block_dump  # Turn on logging in /var/log/syslog
fdisk -l /dev/md0                 # Note total sectors.
echo 0 > /proc/sys/vm/block_dump  # Turn of logging.  Don't fill the log :)

Teilen Sie die Anzahl der Sektoren, in die vom Syslog geschrieben wird, durch die Gesamtzahl von Fdisk.

Ich hoffe, das hilft der nächsten Person, die darauf stößt. Jetzt muss ich nur noch einen Tag warten, bis es fertig ist, dann kann ich das Array tatsächlich mit anständigen Geschwindigkeiten verwenden. (Bis dahin kann ich immer noch 30 MB/s herausholen, es ist also nicht hoffnungslos)

verwandte Informationen