Wie prüfe / repariere ich ein RAID1-Array?

414
user2233709

Ich verwende derzeit ein Software-RAID-1-Array unter Linux, das auf einer Festplatte und einer SSD aufgebaut ist. Ich habe das starke Gefühl, dass die SSD versagt.

Ich möchte prüfen, wie schlecht sich die SSD verhält. Ich überprüfte das Array, echo check > /sys/block/md1/md/sync_actionund als es fertig war, habe ich mir den Inhalt von angesehen /sys/block/md1/md/mismatch_cnt. Ich habe es dreimal hintereinander ausgeführt und dabei drei verschiedene Ergebnisse erzielt: 256, 128 und 384. Was mich verwirrt, ist, dass der zweite Durchgang ein niedrigeres Ergebnis als der erste ergab. Wurde ein Missverhältnis behoben?

Gibt es eine Möglichkeit, mehr Details zu den erkannten Abweichungen zu erhalten? Es kann interessant sein zu prüfen, ob sich die nicht übereinstimmenden Blöcke ändern oder ob sie immer gleich sind. Ich möchte auch einen Blick auf den Inhalt der nicht übereinstimmenden Blöcke werfen, um zu sehen, ob ich feststellen kann, welcher der richtige ist. (Wenn beispielsweise die SSD einige Blöcke auf Null gesetzt hat, konnte sie nicht erneut gelesen werden.)

Außerdem sehe ich eine Option für repairein MD-Array. Aber ich bin etwas misstrauisch: Wie kann der Kernel erraten, welcher der fehlenden Blöcke richtig ist?

0
Ich kenne die Antwort auf die Frage nicht, aber ein RAID1-Setup arbeitet mit der Geschwindigkeit der langsamsten Komponente. Es ist nicht schneller als auf HD alleine zu laufen. Christopher Hostage vor 5 Jahren 0
@ChristopherHostage Dies trifft nicht auf die Leseleistung zu, wenn ich das Array so konfiguriert habe, dass es die SSD und nicht die Festplatte liest. Dies kann ich mit der Option "Meistgeschrieben" beim Hinzufügen der Festplatte tun. user2233709 vor 5 Jahren 2
Huh. "Schreiben-meistens" war ein neuer Begriff für mich ... Googeln führte mich zum folgenden Link, der auch das von Ihnen verwendete Werkzeug erwähnt. Ordentlich. https://www.tansi.org/hybrid/ Christopher Hostage vor 5 Jahren 0

1 Antwort auf die Frage

0
user2233709

Nun… Den Quellcode der process_checksFunktion in der drivers/md/raid1.cDatei von Linux 4.9.88 lesen, wenn ich sie richtig gelesen habe:

  1. Es gibt keine Möglichkeit, die Überprüfungs- oder Reparaturvorgänge darüber zu informieren, wo Unstimmigkeiten gefunden werden.
  2. Wenn während eines Prüf- oder Reparaturvorgangs ein Lesefehler aufgetreten ist, wird der fehlerhafte Block neu geschrieben.
  3. Wenn während eines Reparaturvorgangs eine Abweichung auftritt, wird dies behoben, indem der Block vom primären (ersten nicht ausfallenden) Block in den anderen Block kopiert wird.

Daher gibt es keine Vermutung, welcher der nicht übereinstimmenden Blöcke richtig ist. es ist nur die erste als richtig. (Wie ich es gelesen habe, auch wenn es 3 Komponenten gibt und die 2. und 3. Komponente den gleichen Inhalt haben.)