Kann LVM fehlerhafte Blöcke markieren/vermeiden?

Kann LVM fehlerhafte Blöcke markieren/vermeiden?

Da alsbtrfs verfolgt keine fehlerhaften Blöcke, als Workarounddieser btrfs Mailinglisten-BeitragEs wird empfohlen, zur Badblocks-Unterstützung eine zugrunde liegende mdadm-RAID0-Konfiguration zu verwenden.

Könnte zu diesem Zweck LVM anstelle von mdadm verwendet werden?

Antwort1

Im Allgemeinen, wie bereits erwähnt in einemKommentarhier und in dem Mailinglisten-Thread, auf den Sie verlinkt haben, sollten moderne Festplatten, die so weit kaputt sind, dass sie nicht mehr ersetzbare fehlerhafte Blöcke haben, einfach entsorgt werden. (Sie haben erklärt, warum Sie daran interessiert sind, aber es ist für andere Leser erwähnenswert.)

Ich glaube nicht, dass es in LVM irgendetwas gibt, um fehlerhafte Blöcke als solche zu vermeiden; normalerweise würde man das unterhalb von LVM, auf der Geräteebene, angehen. Eine Möglichkeit, mit dem Problem umzugehen, ist die Verwendung eines Geräte-Mappers: Erstellen Sie eine Tabelle mit der Sektorzuordnung, die erforderlich ist, um alle fehlerhaften Blöcke zu überspringen, und bauen Sie damit ein Gerät. Eine solche Tabelle würde ungefähr so ​​aussehen:

0 98 linear /dev/sda 0
98 98 linear /dev/sda 99

usw. (dadurch wird ein 196-Sektoren-Gerät erstellt, wobei /dev/sdaSektor 98 verwendet, aber übersprungen wird). Sie geben dies andmsetup:

dmsetup create nobbsda --table mytable

und erstellen Sie dann ein PV auf dem resultierenden /dev/nobbsdaGerät (anstelle von /dev/sda).

Mit dieser Methode und ein wenig Vorausplanung können Sie fehlerhafte Sektoren in Zukunft sogar auf die gleiche Weise behandeln wie die Firmware eines Laufwerks: Lassen Sie einige Sektoren am Ende des Laufwerks frei (oder sogar über das Laufwerk verteilt, wenn Sie das Risiko streuen möchten) und verwenden Sie sie dann, um Löcher zu füllen, die durch fehlerhafte Sektoren entstanden sind. Wenn wir im obigen Beispiel die Sektoren ab sagen wir 200 als Ersatzsektoren betrachten und Sektor 57 fehlerhaft wird:

0 57 linear /dev/sda 0
57 1 linear /dev/sda 200
58 40 linear /dev/sda 58
98 98 linear /dev/sda 99

Das Erstellen einer Gerätezuordnungstabelle mithilfe einer Liste fehlerhafter Sektoren bleibt badblocksdem Leser als Übung überlassen.

Eine weitere Lösung, die mit einem vorhandenen LVM-Setup funktionieren würde, wäre die VerwendungpvmoveFähigkeit, physische Bereiche zu verschieben, um LVs aus fehlerhaften Bereichen zu verschieben. Dies würde jedoch nicht verhindern, dass diese Bereiche wiederverwendet werden, wenn ein neues LV erstellt oder die Größe eines vorhandenen LV geändert oder verschoben wird.

verwandte Informationen