CransWiki:

BJR, G CASSÉ MON LVM EN WIPANT SA SIGNATURE AVEC FDISK, JE FÉ KOI?

Félicitations, vous avez buté votre LVM favori. On va tenter de le sauver ensemble. Attention, c'est censé marcher mais parfois, on a tellement cassé les choses qu'on ne peut pas les réparer. Donc partez du principe que vous avez éventuellement perdu vos données.

La première chose à imprimer, c'est que si vous n'avez rien fait de plus que virer la signature LVM avec fdisk, normalement, vous n'avez fait que démolir les métadonnées LVM. LVM est un logiciel plutôt cool, quand on crée un vg ou quand on fait des modifications dans les métadonnées, il fait une sauvegarde dans /etc/lvm/backup/nom_du_vg.

Essentiellement, une sauvegarde, ça ressemble à cela :

root@stitch:/home/b/becue# cat /etc/lvm/backup/nem
# Generated by LVM2 version 2.02.168(2) (2016-11-30): Sun Apr 22 04:26:31 2018

contents = "Text Format Volume Group"
version = 1

description = "Created *after* executing 'vgdisplay nem'"

creation_host = "stitch"        # Linux stitch 4.13.16-2-pve #1 SMP PVE 4.13.16-47 (Mon, 9 Apr 2018 09:58:12 +0200) x86_64
creation_time = 1524363991      # Sun Apr 22 04:26:31 2018

nem {
        id = "xlIUjC-k0JQ-tgfm-Hvnh-9dVR-a0mz-nKBxgF"
        seqno = 16
        format = "lvm2"                 # informational
        status = ["RESIZEABLE", "READ", "WRITE"]
        flags = []
        extent_size = 8192              # 4 Megabytes
        max_lv = 0
        max_pv = 0
        metadata_copies = 0

        physical_volumes {

                pv0 {
                        id = "xANpFs-IWgL-fawa-ZbFE-Bell-utXn-Oz81ek"
                        device = "/dev/mapper/mpath-nem"        # Hint only

                        status = ["ALLOCATABLE"]
                        flags = []
                        dev_size = 16775168     # 7,99902 Gigabytes
                        pe_start = 2048
                        pe_count = 2047 # 7,99609 Gigabytes
                }
        }

        logical_volumes {

                vm-101-disk-1 {
                        id = "s1MmWg-6R7B-2UVq-AUq1-Ih0r-Jp3G-xCF8cb"
                        status = ["READ", "WRITE", "VISIBLE"]
                        flags = []
                        creation_time = 1413721943      # 2014-10-19 14:32:23 +0200
                        creation_host = "ft"
                        segment_count = 1

                        segment1 {
                                start_extent = 0
                                extent_count = 2047     # 7,99609 Gigabytes

                                type = "striped"
                                stripe_count = 1        # linear

                                stripes = [
                                        "pv0", 0
                                ]
                        }
                }
        }

}

Paye tes accolades. (si t'aimes pas mon style de documentation subversif, tu peux réécrire cette page de la façon qui te sied dans la belle langue de Molière, ou celle de Shakespeare)

Généralement, il est sain de copier ce fichier avant d'utiliser les commandes suivantes, des fois… qu'elles modifient le fichier.

cp /etc/lvm/backup/nem /root/nem.bak

Restauration du PV

La seule info qu'on doit extraire d'ici, c'est celle sur le PV (volume physique). Imaginons que vous ayez pété le pv0 (c'est-à-dire effacé les métadonnées sur le disque associé), il faut recréer ce volume physique. Pour cela, on a besoin de ce fichier, mais surtout de l'uuid d'origine du PV. Ici c'est "xANpFs-IWgL-fawa-ZbFE-Bell-utXn-Oz81ek". Une fois cela trouvé, il suffit d'appeler la commande pvcreate avec les bons arguments

pvcreate -u xANpFs-IWgL-fawa-ZbFE-Bell-utXn-Oz81ek --restore-file /root/nem.bak /dev/mapper/mpath-nem

Ça dit qu'on veut créer le pv avec l'uid spécifiquement mentionné, en utilisant le fichier de restoration /root/nem.bak, sur le disque /dev/mapper/mpath-nem. Le retour peut avoir ce genre de tête

  Couldn't find device with uuid xANpFs-IWgL-fawa-ZbFE-Bell-utXn-Oz81ek.
WARNING: dos signature detected on /dev/mapper/mpath-nem at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/mapper/mpath-nem.
  Physical volume "/dev/mapper/mpath-nem" successfully created.

Le "Couldn't find ..." n'est pas une erreur, c'est une vérification. S'il y a déjà un device (PV) avec cet uid, lvm ne pourrait pas l'utiliser. Question de sanity check.

Le warning c'est parce que pour les besoins du test, j'avais sciemment créé une partition sur le disque dans le but de péter le LVM. Du coup pvcreate la voit et me demande si je suis sûr de moi. Je suis sûr de moi (parce que je suis prétentieux, sans doute), du coup je dis oui. Pouf, c'est bon, j'ai recréé le PV.

Si vous en avez cassé plusieurs, l'opération est à répéter pour chaque PV à recréer.

Restauration du VG

À ce stade, les devices utilisés par le volumegroup doivent tous être recréés avec le restorefile et le bon uid. Maintenant on va réparer le volumegroup.

Premier test, lancez un vgscan. Si vous voyez le volumegroup, sautez directement à la partie "Restauration de la configuration du VG (la vraie partie, quoi)", sinon, continuez, en recréant le volumegroup. (pensez à mettre tous les PV en argument après "nem", là y en a qu'un seul, mais si vous en avez plusieurs il faut tous les mentionner)

vgcreate nem /dev/mapper/mpath-nem

La sortie devrait être du genre Volume group "nem" successfully created.

Restauration de la configuration du VG (la vraie partie, quoi)

Et là, la commande magique.

vgcfgrestore  -f /root/nem.bak nem

root@stitch:/etc/lvm/backup# vgcfgrestore  -f /root/nem.bak nem
  Restored volume group nem
root@stitch:/etc/lvm/backup# vgdisplay nem
  --- Volume group ---
  VG Name               nem
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  16
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               8,00 GiB
  PE Size               4,00 MiB
  Total PE              2047
  Alloc PE / Size       2047 / 8,00 GiB
  Free  PE / Size       0 / 0
  VG UUID               xlIUjC-k0JQ-tgfm-Hvnh-9dVR-a0mz-nKBxgF
---
\o/

Si ce tutoriel t'a plu

Merci de donner de l'ARGENT sur ma page Tipeee, qui n'existe pas, parce que je veux pas de ta thune.

Kthxbaï.

Note plus sérieuse

Cette page est le fruit d'une erreur d'une nounou qui a détruit le LVM de nem (un de nos DNS récursifs). J'ai donc pris la peine de le réparer avec cette méthode. Ici, je résume les étapes importantes. Pour les curieux, il y a une pièce jointe qui contient un log quasi complet de ma session sur stitch où j'ai fait les opérations. C'est un peu fouillis mais ça peut toujours servir.

CransWiki: CransNostalgie/CransTechnique/Services/Virtualisation/RestaurationLVMPourLesNuls (dernière édition le 2021-09-24 13:56:32 par WikiShirenn)