Wie kann ich auf einem physischen LVM-Volume nach fehlerhaften Blöcken suchen?

17

Wenn Sie ext4 verwenden, können Sie mit dem Befehl nach Badblocks suchen e2fsck -c /dev/sda1 # or whatever. Dadurch werden die Blöcke auf eine "Blacklist" gesetzt, indem sie zum Inode des fehlerhaften Blocks hinzugefügt werden.

Was ist das Äquivalent dazu für ein physikalisches LVM2-Volume? Das Dateisystem ist ext4, aber vermutlich werden die erkannten fehlerhaften Blöcke ungültig, wenn das zugrunde liegende LVM-Setup Daten auf der physischen Festplatte verschiebt.

Mit anderen Worten, wie kann ich überprüfen, ob fehlerhafte Blöcke in LVM nicht verwendet werden?

strugee
quelle

Antworten:

14

Wenn Sie ext4 verwenden, können Sie mit dem Befehl e2fsck -c /dev/sda1oder was auch immer nach Badblocks suchen. Dadurch werden die Blöcke auf eine "Blacklist" gesetzt, indem sie zum Inode des fehlerhaften Blocks hinzugefügt werden.

e2fsck -cläuft badblocksauf der zugrunde liegenden Festplatte. Sie können den badblocksBefehl direkt auf einem physischen LVM-Volume verwenden (vorausgesetzt, der PV ist tatsächlich eine Festplatte und keine andere Art von virtuellem Gerät wie ein MD-Software-RAID-Gerät), genau wie Sie diesen Befehl auf einer Festplatte verwenden würden das enthält ein ext-Dateisystem.

Das fügt dem Dateisystem keine schlechten Blockinformationen hinzu, aber ich denke nicht, dass dies eine nützliche Funktion des Dateisystems ist. Die Festplatte soll mit fehlerhaften Blöcken umgehen können.

Noch besser, als badblockseinen SMART-Selbsttest auf der Festplatte auszuführen (durch /dev/sdXden Gerätenamen Ihrer Festplatte ersetzen ):

smartctl -t long /dev/sdX
smartctl -a /dev/sdX | less

Der Test selbst wird einige Stunden dauern (es wird Ihnen genau sagen, wie lange). Wenn es fertig ist, können Sie das Ergebnis mit abfragen smartctl -aund nach dem Selbsttestprotokoll suchen. Wenn "Erfolgreich abgeschlossen" angezeigt wird, ist Ihre Festplatte in Ordnung.

Mit anderen Worten, wie kann ich überprüfen, ob fehlerhafte Blöcke in LVM nicht verwendet werden?

Wie gesagt, die Festplatte selbst stellt sicher, dass keine beschädigten Blöcke verwendet werden, und verschiebt auch Daten von diesen Blöcken. Das ist nichts, was das Dateisystem oder die LV tun müssen. Wenn Ihre Festplatte jedoch mehr als nur ein paar fehlerhafte Blöcke enthält, möchten Sie nicht, dass diese verschoben werden. Sie möchten jedoch die gesamte Festplatte ersetzen, da sie fehlerhaft ist.

Martin von Wittich
quelle
3
Vielleicht möchten Sie die e2fsck-Manpage überprüfen und sehen, was -cpassiert, bevor Sie einen vollständigen Unsinn aufrufen.
Derobert
1
@derobert oops ...
Martin von Wittich
1
@derobert TIL. Ich habe den falschen Abschnitt umgeschrieben. Danke für die Rückmeldung!
Martin von Wittich
Statt die Blöcke zu markieren, damit das Dateisystem sie nicht auf modernen Festplatten verwendet, sollten Sie einfach neue Daten in den Block schreiben, und die Festplatte ordnet den Sektor automatisch einem Ersatz zu, wenn er tatsächlich physisch beschädigt ist. Das kannst du mit machen dd. Häufiger als Sie denken, ist das Medium tatsächlich in Ordnung und die Daten wurden nur beschädigt. Das Überschreiben funktioniert also einwandfrei, ohne dass eine Neuzuordnung erforderlich ist.
Psusi
"Das kannst du mit dd" - aber das solltest du wahrscheinlich immer noch nicht. Wenn Sie einen mdÜberfall haben, kann er das Problem für Sie lösen . @derobert wird wahrscheinlich wissen, was zu tun ist, wenn die Festplatte nicht Teil eines mdÜberfalls ist :)
Martin von Wittich
4

Ich bin mir ziemlich sicher, dass LVM keine schlechten Blöcke handhabt. es erwartet den zugrunde liegenden Speicher. Und die meisten, wenn nicht alle modernen Festplatten. Möglicherweise müssen Sie einen Schreibvorgang in den Sektor ausführen, der Datenträger sollte ihn jedoch neu zuordnen. (Möglicherweise müssen Sie zuerst einen Offline-Oberflächenscan mit z smartctl /dev/sda -t offline. B. ausführen .)

Das heißt, LVM verschiebt Daten nicht wirklich, es sei denn, Sie fragen sie zB mit pvmove. Sie können also die Funktion ext4 badblocks verwenden. Sie müssen nur erneut nach fehlerhaften Blöcken suchen, wenn sie ausgeführt werden pvmove. Keine übliche Operation (wie z. B. lvextend) verschiebt Daten.

Extend verschiebt keine Daten, da LVM eine Karte mit der Aufschrift "Logische Extents 0–99 sind physische Extents 200–299" führt. Wenn Sie diese erweitern, werden lediglich "Logische Extents 100–199 sind physische Extents 100–199" hinzugefügt. Oder sogar "Die logischen Speicherbereiche 100–149 sind physische Speicherbereiche 50–99; die logischen Speicherbereiche 150–199 sind physische Speicherbereiche 140–189". LVM ist es egal, ob die physischen Bereiche nicht in Ordnung sind oder nicht zusammenhängend.

derobert
quelle
2

pvckkann LVM-Metadaten überprüfen, nachdem die Konsistenz Aufgabe des Dateisystems ist. Bei LVM geht es nur um das Volume-Management, sodass es nicht wichtig ist, ob der Speicherplatz, der ein bestimmtes Ausmaß ausmacht, schlecht ist, da höherwertige Software diese Probleme behebt. LVM-Metadaten belegen sowieso nur den ersten (optional auch den letzten) Sektor des physischen Volumes.

Wenn nur der erste und der letzte Sektor einer einigermaßen großen PV (wie Sie es in der Produktion sehen würden) gleichzeitig ausfallen, haben Sie im Grunde das größte Glück der Welt, da dies astronomisch so unwahrscheinlich ist. Andernfalls, wenn der Administrator weiß, dass mehrere Sektoren des Laufwerks ausgefallen sind, sind die meisten Leute in Ordnung, wenn sie nur solche Dinge wie diese unter "Festplatte ist dauerhaft ausgefallen und muss ersetzt werden" einreichen.

Wenn pvckein Fehler zurückgegeben wird, können Sie überprüfen, ob Ihre LVM-Metadaten /etc/lvmirgendwo gesichert wurden . In diesem Fall können Sie pvcreatedie Sicherungskopie angeben--restorefile

Syntax:

pvcreate --uuid "<UUID-of-target-PV>" --restorefile <Path-To-Metadata-Backup-File> <path-to-PV-block-device>

Beispiel:

pvcreate --uuid "2VydVW-TNiN-fz9Y-ElRu-D6ie-tXLp-GrwvHz" --restorefile /etc/lvm/archive/vg_raid_00000-1085667159.vg /dev/sda2 

Wenn die Wiederherstellung nicht funktioniert (z. B. wenn der erste Sektor fehlerhaft ist), können Sie die obigen Schritte erneut ausführen. Sie können jedoch festlegen --metadatacopies 2, dass die Metadaten in den ersten und den zweiten Sektor geschrieben werden letzte Sektoren auf dem PV. Wenn pvscanes beim Booten seine Sache macht, prüft es beide Stellen und wenn es Metadaten findet, prüft es sie anhand einer Prüfsumme. Wenn die Prüfsumme im ersten Sektor fehlschlägt und im letzten Sektor erfolgreich ist, wird eine nicht schwerwiegende Fehlermeldung angezeigt.

Eine Art Handbuch und ein Schmerz, aber das ist auch ein Grund, warum die Leute begeistert sind, einen Redux für das Volume-Management mit BTRFS zu bekommen. Die meiste Zeit ist es aus den derobert genannten Gründen nicht wirklich ein Problem, und weil die Leute, die unbedingt die Kontinuität der Daten sicherstellen müssen, normalerweise RAID durchführen und eine Sicherungsstrategie haben.

Bratchley
quelle