Recuperar Volúmenes físicos (PV) / lógicos (LV) después de eliminarlos / modificarlos
Volúmenes físicos (PV): Son los discos / particiones con sistema de archivos LVM.
Volúmenes lógicos (LV): Equivalente a una partición en un sistema tradicional. El LV es visible como un dispositivo estándar de bloques, por lo que puede contener un sistema de archivos (por ejemplo /home)
/etc/lvm/archive: En este directorio se guardan archivos con toda la información sobre los cambios realizados en los volúmenes LVM. En el podremos encontrar ficheros .vg con los que retornar a una configuración anterior nuestros volúmenes LV.
Para el ejemplo se ha borrado un LV y el PV donde se encontraba
grep -i description /etc/lvm/archive/* /etc/lvm/archive/VolGroup_00004-1520131122.vg:description = "Created *before* executing 'lvcreate -L20M -s -n congelado /dev/VolGroup/lv_root'"
La descripción de cada fichero .sv es fundamental a la hora de poder elegir la configuración anterior a la que retornar nuestros volúmenes. En el caso del ejemplo anterior, la descripción nos dice que ese fichero hace referencia a la configuración que se tenía antes de crear la instantánea congelado.
Se deben tener localizados el / los UUID de el/los LV / PV que queremos recuperar, en el caso de nuestro ejemplo será un PV entero. Veremos con un ejemplo el proceso de recuperación.
Supuesto
Con un liveCD hemos eliminado erróneamente el PV /dev/sdb del VG Volgroup, el cual ahora queremos restablecer.
Ejecutamos el comando lvdisplay para hacernos una idea de lo que está pasando.
pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 19.76 GiB / not usable 2.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 5059 Free PE 563 Allocated PE 4496 PV UUID 1UTwr2-YXv3-gl3f-l6Qk-o5R7-drqX-B6VB2Z "/dev/sdb" is a new physical volume of "1.80 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 1.80 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 2glsmX-7knj-rP7h-2rS6-MCM1-IFUt-FOfa9H
Parece que /dev/sdb no está asociado a ningún grupo de volúmenes (VG Name). Miramos en el directorio /etv/lvm/archive los ficheros que tuvieran el PV (/dev/sdb) asociado al VG (VolGroup). Lógicamente la más cercana al día del borrado accidental sería lo recomendable, para este ejemplo nos confundiremos de nuevo y escogeremos un vg que tal vez no fuera el más idóneo. Buscamos en el fichero el UUID del PV que queremos recuperar (2glsmX-7knj-rP7h-2rS6-MCM1-IFUt-FOfa9H) y ejecutamos el siguiente comando.
pvcreate --restorefile /etc/lvm/archive/VolGroup_00009-1341453580.vg --uuid 2glsmX-7knj-rP7h-2rS6-MCM1-IFUt-FOfa9H /dev/sdb Physical volume "/dev/sdb" successfully created
pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 19.76 GiB / not usable 2.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 5059 Free PE 563 Allocated PE 4496 PV UUID 1UTwr2-YXv3-gl3f-l6Qk-o5R7-drqX-B6VB2Z "/dev/sdb" is a new physical volume of "1.80 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name <---------- Vemos que todavía no sale, eso es normal, debemos restablecer los metadatos. PV Size 1.80 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 2glsmX-7knj-rP7h-2rS6-MCM1-IFUt-FOfa9H
Como se puede apreciar no hay PE libres, veamos qué ha pasado.
/etc/lvm/archive/VolGroup_00001-218522400.vg:description = "Created *before* executing 'vgdisplay'" /etc/lvm/archive/VolGroup_00002-537715456.vg:description = "Created *before* executing 'vgdisplay'" /etc/lvm/archive/VolGroup_00003-701796946.vg:description = "Created *before* executing 'vgextend VolGroup /dev/sdb'" /etc/lvm/archive/VolGroup_00004-1520131122.vg:description = "Created *before* executing 'lvcreate -L20M -s -n congelado /dev/VolGroup/lv_root'" /etc/lvm/archive/VolGroup_00005-1366585398.vg:description = "Created *before* executing '/sbin/vgs --noheadings -o name --config 'log{command_names=0 prefix=\" \"}''" /etc/lvm/archive/VolGroup_00006-1572349713.vg:description = "Created *before* executing '/sbin/vgs --noheadings -o name --config 'log{command_names=0 prefix=\" \"}''" /etc/lvm/archive/VolGroup_00007-193670915.vg:description = "Created *before* executing '/sbin/vgchange --monitor y --poll y --config 'log{command_names=0 prefix=\" \"}' VolGroup'" /etc/lvm/archive/VolGroup_00008-704815065.vg:description = "Created *before* executing 'lvextend -L 90000 /dev/VolGroup/lv_root'" /etc/lvm/archive/VolGroup_00009-1341453580.vg:description = "Created *before* executing 'lvextend -l +100%FREE /dev/VolGroup/lv_root'" /etc/lvm/archive/VolGroup_00010-1067505011.vg:description = "Created *before* executing '/sbin/vgs --noheadings -o name --config 'log{command_names=0 prefix=\" \"}''" /etc/lvm/archive/VolGroup_00011-123031988.vg:description = "Created *before* executing '/sbin/vgs --noheadings -o name --config 'log{command_names=0 prefix=\" \"}''"
Como se puede ver en la descripción de los ficheros, hemos recuperado el volumen al estado justamente anterior al comando lvextend que ampliaba LV_root al PV. Eso explica el por qué tenemos el 100% (461 PE) del espacio libre. Vamos entonces a seleccionar el fichero correcto para nuestra restauración.
ls -lt /etc/lvm/archive/*
-rw-------. 1 root root 2220 Dec 23 15:23 /etc/lvm/archive/VolGroup_00010-1067505011.vg -rw-------. 1 root root 1806 Dec 23 15:23 /etc/lvm/archive/VolGroup_00011-123031988.vg -rw-------. 1 root root 2012 Dec 13 16:57 /etc/lvm/archive/VolGroup_00009-1341453580.vg -rw-------. 1 root root 2008 Dec 13 16:55 /etc/lvm/archive/VolGroup_00008-704815065.vg -rw-------. 1 root root 2874 Dec 13 16:29 /etc/lvm/archive/VolGroup_00007-193670915.vg -rw-------. 1 root root 2455 Dec 13 16:29 /etc/lvm/archive/VolGroup_00005-1366585398.vg -rw-------. 1 root root 2860 Dec 13 16:29 /etc/lvm/archive/VolGroup_00006-1572349713.vg -rw-------. 1 root root 2020 Dec 13 16:27 /etc/lvm/archive/VolGroup_00004-1520131122.vg -rw-------. 1 root root 1755 Dec 13 16:17 /etc/lvm/archive/VolGroup_00003-701796946.vg -rw-------. 1 root root 1738 Dec 13 16:10 /etc/lvm/archive/VolGroup_00001-218522400.vg -rw-------. 1 root root 1738 Dec 13 16:10 /etc/lvm/archive/VolGroup_00002-537715456.vg
Vamos a coger ahora el fichero VolGroup_00010-1067505011.vg, para seleccionar el fichero correcto es fundamental fijarse en la descripción del mismo, en las fechas de creación de los ficheros vg y en el historial de comandos.
pvcreate --restorefile /etc/lvm/archive/VolGroup_00010-1067505011.vg --uuid 2glsmX-7knj-rP7h-2rS6-MCM1-IFUt-FOfa9H /dev/sdb Can't initialize physical volume "/dev/sdb" of volume group "VolGroup" without -ff pvcreate -ff --restorefile /etc/lvm/archive/VolGroup_00010-1067505011.vg --uuid 2glsmX-7knj-rP7h-2rS6-MCM1-IFUt-FOfa9H /dev/sdb Really INITIALIZE physical volume "/dev/sdb" of volume group "VolGroup" [y/n]? y WARNING: Forcing physical volume creation on /dev/sdb of volume group "VolGroup" Physical volume "/dev/sdb" successfully created vgcfgrestore -f /etc/lvm/archive/VolGroup_00010-1067505011.vg -v VolGroup Restored volume group VolGroup
pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 19.76 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 5059 Free PE 0 Allocated PE 5059 PV UUID 1UTwr2-YXv3-gl3f-l6Qk-o5R7-drqX-B6VB2Z --- Physical volume --- PV Name /dev/sdb VG Name VolGroup PV Size 1.80 GiB / not usable 1.79 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 461 Free PE 0 <-------------- Ya lo tenemos como queremos. :D Allocated PE 461 PV UUID 2glsmX-7knj-rP7h-2rS6-MCM1-IFUt-FOfa9H