dimanche 8 décembre 2013

Restore LVM metadata

Je partage ma récente aventure, après le reboot d'un serveur NFS qui exporte plus de 10Tb en 69 Filesystem.
Au redémarrage, seuls 60 FS sont présents, neufs sont absents.
Par exemple :
PV unknown device               VG vgFS58        lvm2 [50.00 GB / 0    free]
mount: special device /dev/mapper/vgFS58-lvfs58 does not exist

Passé les doutes, l'analyse du multipath montre que les FS sont bien présenté au serveur par le NAS mais que les VG sont indiqué comme partial.

vgFS58        8   1   0 wz-pn- 409.97G      0 

Il ne s'agit pas de d'activer le VG ou le LV avec vgchange -ay ou lvchange -ay mais de restorer la métadata qui a disparu.

A la recherche des devices perdus

Commence alors la recherche des devices perdus, pour le FS58 il s'agit de 4 devices.
  unknown device             vgFS58      lvm2 a-    50.00G      0 
  unknown device             vgFS58      lvm2 a-    50.00G      0 
  unknown device             vgFS58      lvm2 a-    50.00G      0 
  unknown device             vgFS58      lvm2 a-    50.00G      0

Il fautt retrouver le device et réapliquer la metadata manquante.
Multipath indique les devices :

# multipath -l | grep fs58
lvm6fs58 (36005076305ffc0290000000000002539) dm-286 xx,xx
lvm1fs58 (36005076305ffc0290000000000002535) dm-269 xx,xx
lvm7fs58 (36005076308ffc536000000000000066b) dm-187 xx,xx

Pour vérifier l'état d'un device :
# pvck /dev/dm-269
Could not find LVM label on /dev/dm-269

On est donc sur que le device ne contient pas de metadata, il faut donc la restaurer.
Je sais qu'il s'agit du premier device, pour rechercher dans son id, l'info dans /etc/lvm/archive/vgFS58_00009.vg 

Il reste à l'appliquer :
# pvcreate --uuid "p5bjql-fCXc-vTCe-KBuF-2DgF-X2rl-UfZCti" --restorefile /etc/lvm/archive/vgFS58_00009.vg /dev/dm-269

Bingo !

Une fois toutes les métadatas restaurés, le VG redevient disponible :
# vgs vgFS58
  VG     #PV #LV #SN Attr   VSize   VFree
  vgFS58   8   1   0 wz--n- 409.97G    0 

On réactive le LV
# lvchange -ay vgFS58/lvfs58

Reste à scan le FS
# e2fsck /dev/mapper/vgFS58-lvfs58
e2fsck 1.41.9 (22-Aug-2009)
e2fsck: Group descriptors look bad... trying backup blocks...
/dev/mapper/vgFS58-lvfs58: recovering journal
e2fsck: unable to set superblock flags on /dev/mapper/vgFS58-lvfs58

# e2fsck /dev/mapper/vgFS58-lvfs58  -y
e2fsck 1.41.9 (22-Aug-2009)
One or more block group descriptor checksums are invalid.  Fix? yes

Et le tour est joué, on peut mount avec succès le FS.

Restait plus que 8 autres FS et environ 20 devices.
Mais tout c'est bien déroulé, il a été possible de récupérer l'accès aux données.

En résumé :


  • Rechercher des informations : 

# multipath -l | grep fs58
# grep -i id /etc/lvm/archive/vgFS58_00009.vg
# pvck /dev/dm-269
  • Restauration metadata
# pvcreate --uuid "p5bjql-fCXc-vTCe-KBuF-2DgF-X2rl-UfZCti" --restorefile /etc/lvm/archive/vgFS58_00009.vg /dev/dm-269
  • Contrôle
# vgs vgFS58
  • Activacion LV
# lvchange -ay vgFS58/lvfs58
  • Vérification du FS
# e2fsck /dev/mapper/vgFS58-lvfs58  -y
  • Disponibilité du FS
#mount /dev/mapper/vgFS58-lvfs58 /FS58