===== 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