Das Problem
Nach einem Neustart startet oder aktiviert das System keine der LVM-Volumengruppen. Der Versuch, die Gruppe manuell zu aktivieren, erzeugt die Meldung:
Couldn't find device with uuid '[UUID]'
Die Lösung
Die Zeichenfolge LABELONE am Metadatenspeicherort markiert das Gerät als Teil eines LVM-Geräts. Ohne diese Zeichenfolge wird lvm3 nicht versuchen, das Gerät als physikalisches Volume zu verwenden. Die physischen Gerätemetadaten können aufgrund eines Systemfehlers oder einer vorsätzlichen manuellen Aktion überschrieben werden.
Für die Linux-Versionen 4 oder 5 beträgt der Standard-Metadatenbereich 192 KB. Für Linux Version 6 sind die Standardmetadaten 1 MB. Bevor Sie versuchen, Wiederherstellungs- oder Reparaturaktivitäten durchzuführen, wird Ihnen dringend empfohlen, eine Sicherungskopie dieses Bereichs zu erstellen:
# /bin/dd if=/dev/xvdd of=/root/xvdd.metadata bs=1K count=[192_or_1024]
So prüfen Sie die LVM-Signatur:
# /bin/strings /root/xvdd.metadata | /bin/fgrep LABELONE
Wenn keine Ausgabe erfolgt, sind die Metadaten beschädigt.
Überprüfen Sie die Informationen in:
/etc/lvm/backup /etc/lvm/archives
für Änderungen. Wenn diese geändert wurden oder inkonsistent sind, ist es möglich, dass die Wiederherstellungsaktivität die gesamten Volume-Daten beschädigt. Stellen Sie sicher, dass das physische Gerät oder die LUN noch verfügbar ist oder diesem Server immer noch präsentiert wird.
Achten Sie darauf, regelmäßig Backups für alle LVM-Volumes zu erstellen. Obwohl sie möglicherweise wiederherstellbar sind, ist es auch möglich, dass eine Fehlkonfiguration den gesamten Datensatz vollständig beschädigt.
1. Beachten Sie, dass dieses Element nur wichtig ist, wenn Sie auch Multipath-Geräte auf Ihrem System haben. Wenn Sie LVM und Multipathing nicht auf demselben Server verwenden, können Sie diesen Punkt getrost überspringen.
Während des Systemstarts wird das LVM-Subsystem jedes Mal benachrichtigt, wenn ein Blockgerät, z. B. ein Festplattenlaufwerk oder eine LUN, verwendet wird, sodass das Gerät zum Erstellen eines LVM-Volumes verwendet werden kann. Dies ist ein asynchroner Prozess; Es gibt keine Garantie dafür, dass die Geräte bei jedem Systemstart in derselben Reihenfolge erkannt werden. Dies bedeutet, dass die physischen Pfade eines Multipath-Geräts wahrscheinlich entdeckt werden, bevor das zusammengesetzte logische Gerät vollständig ist, was dazu führt, dass der physische Pfad vom LVM-Subsystem beansprucht wird, bevor dem Multipath-Subsystem das Gerät angeboten wird. Es gibt zwei unerwünschte Ergebnisse dieser Bedingung:
a. Nur ein einziger Pfad zum Multipath-Gerät wird von LVM verwendet und beansprucht, wodurch das System anfällig für einen Single-Point-Fehler bleibt, der einen katastrophalen Verlust der Konnektivität zum Speicher verursacht.
b. Da LVM den exklusiven Besitz des physischen Pfads erhält, meldet die Multipathing-Schicht das Gerät als beschäftigt und kann das Multipath-Gerät nicht erstellen. Dadurch bleibt der Speicher einem Einzelpunktfehler ausgesetzt, der den Zugriff auf den Speicher verhindert. Die Lösung besteht darin, den LVM zu zwingen, nur diejenigen Blockgeräte zu berücksichtigen, die tatsächlich einen Teil eines LVM-Volumes enthalten sollen. Dazu schauen Sie in die Datei /etc/lvm/lvm.conf:
# /bin/fgrep -n -e 's/#.*//' -e '/filter/p' /etc/lvm/lvm.conf filter = [ "a/.*/" ]
Wenn Ihre Ausgabe wie oben aussieht, haben Sie ein LVM-Konfigurationsproblem, das wahrscheinlich alle Multipath-Geräte beschädigen wird, wenn Sie sie auf Ihrem System verwenden. Das Ändern dieses Parameters ist nicht Gegenstand dieses Hinweises. Wir gehen davon aus, dass Sie diesen Wert korrigiert haben.
2. Manchmal wird der Speicher, der die LVM-Daten enthält, langsam erkannt und kann erfolgreich gemountet werden, wenn darauf zugegriffen wird, nachdem sich das System stabilisiert hat. Zunächst werden wir die verfügbaren Blockgeräte inventarisieren und die UUIDs ermitteln:
# /sbin/vgscan Reading all physical volumes. This may take a while... Couldn't fine device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Found volume group "data_vg" using metadata type lvm2
Nachdem wir nun die UUID haben, die das Problem verursacht, müssen wir das zugehörige Gerät finden:
# /sbin/pvs -o +uuid Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. PV VG Fmt Attr PSize PFree PV UUID /dev/xvdc data_vg lvm2 a-- 996.00M 0 VrVT1L-CTcT-9Nn9-oIAx-BnEA-X7sv-vJO6RE /dev/xvde data_vg lvm2 a-- 996.00M 428.00M tGIqvd-lsYv-7JmV-1bfD-t7BL-HaGi-rmIYW0 unknown device data_vg lvm2 a-m 996.00M 0 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt
3. Wir können die Verteilung der logischen Volumes auf die physischen Geräte wie folgt anzeigen:
# /sbin/lvs -o +devices Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices data_vg_lv data_vg -wi-a- 2.50G /dev/xvdc(0) data_vg_lv data_vg -wi-a- 2.50G unknown device(0) data_vg_lv data_vg -wi-a- 2.50G /dev/xvde(0) =
4. Versuchen Sie, die Datenträgergruppe zu aktivieren:
# /sbin/vgchange -a y data_vg Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Refusing activation of partial LV data_vg_lv. Use --partial to override. 1 logical volume(s) in volume group "data_vg" now active
5. Versuchen Sie, die Volumengruppe zu reduzieren und das fehlende Gerät zu entfernen:
# /sbin/vgreduce --removemissing data_vg Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. WARNING: Partial LV data_vg_lv needs to be repaired or removed. WARNING: There are still partial LVs in VG data_vg. To remove them unconditionally use: vgreduce --removemissing --force. Proceeding to remove empty missing PVs.
# /sbin/vgreduce --removemissing data_vg --force Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Removing partial LV data_vg_lv. Logical volume "data_vg_lv" successfully removed Wrote out consistent volume group data_vg
6. Nachdem das fehlende Gerät aus der Gruppe entfernt wurde, sollte das LVM-Gerät aktiviert werden:
# /sbin/pvs PV VG Fmt Attr PSize PFree /dev/xvdc data_vg lvm2 a-- 996.00M 996.00M /dev/xvde data_vg lvm2 a-- 996.00M 996.00M
# /sbin/lvs -o +devices #
# /sbin/vgscan Reading all physical volumes. This may take a while... Found volume group "data_vg" using metadata type lvm2
# /sbin/vgdisplay --- Volume group --- VG Name data_vg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 1.95 GB PE Size 4.00 MB Total PE 498 Alloc PE / Size 0 / 0 Free PE / Size 498 / 1.95 GB VG UUID yTOvvd-ZjUe-gXP0-41BT-qUIk-8uPR-lpr9Pw
7. Wir können versuchen, die Datenträgergruppe mithilfe der im Verzeichnis /etc/lvm/archive/ gespeicherten Informationen wiederherzustellen:
# /sbin/vgcfgrestore -f data_vg_00003-1023778751.vg data_vg Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Cannot restore Volume Group data_vg with 1 PVs marked as missing. Restore failed.
8. Versuch, die Geräteinformationen basierend auf den UUID-Einstellungen, die von den Volumengruppeninformationen abgeleitet wurden, zu überschreiben oder neu zu erstellen:
# /sbin/pvcreate --restorefile /etc/lvm/archive/data_vg_00003-1023778751.vg --uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt /dev/xvdd Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Writing physical volume data to disk "/dev/xvdd" Physical volume "/dev/xvdd" successfully created
9. Öffnen Sie die Datenträgergruppeninformationen, z. B. /etc/lvm/archive/data_vg_00003-1023778751.vg, mit einem Texteditor und entfernen Sie die Zeichenfolge „MISSING“ aus dem Flags-Eintrag, sodass sie wie folgt aussieht:
flags = [ ]
10. Stellen Sie den LVM mit diesem geänderten Eintrag wieder her:
# /sbin/ vgcfgrestore -f /etc/lvm/archive/data_vg_00003-1023778751.vg data_vg Restored volume group data_vg
11. Überprüfen Sie die Umgebung:
# /sbin/vgscan Reading all physical volumes. This may take a while... Found volume group "data_vg" using metadata type lvm2
# /sbin/ pvs -o +uuid PV VG Fmt Attr PSize PFree PV UUID /dev/xvdc data_vg lvm2 a-- 996.00M 0 VrVT1L-CTcT-9Nn9-oIAx-BnEA-X7sv-vJO6RE /dev/xvdd data_vg lvm2 a-- 996.00M 0 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt /dev/xvde data_vg lvm2 a-- 996.00M 428.00M tGIqvd-lsYv-7JmV-1bfD-t7BL-HaGi-rmIYW0
12. Überprüfen Sie die LVM-Verfügbarkeit:
# /sbin/lvs -o +devices LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices data_vg_lv data_vg -wi--- 2.50G /dev/xvdc(0) data_vg_lv data_vg -wi--- 2.50G /dev/xvdd(0) data_vg_lv data_vg -wi--- 2.50G /dev/xvde(0)