En un servidor con CentOS tengo un disco duro estructurado de la siguiente forma.
root@ubuntu:~# fdisk -l
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c6ce6
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 30401 244091610 8e Linux LVM
Sobre la particion sda2 contengo 2 Volumes Logico la SWAP y el resto de datos.
root@ubuntu:~# vgdisplay
— Logical volume —
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID YQO0B5-RtWh-gjId-Qz35-QEE3-QSVl-qk6Ham
LV Write Access read/write
LV Status NOT available
LV Size 230,84 GiB
Current LE 7387
Segments 1
Allocation inherit
Read ahead sectors auto
— Logical volume —
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID Moua31-QcYN-qBTB-RMlV-XtlY-Gx9c-ORF1B2
LV Write Access read/write
LV Status NOT available
LV Size 1,94 GiB
Current LE 62
Segments 1
Allocation inherit
Read ahead sectors auto
Se produce un error manual asignando espacio y nuestro volumen LogVol00 desaparece.
Solucion:
La informacion acerca de los metadatos de lvm2 se enceuntra contenida en la mayoria de las distrubciones bajo el directorio /etc/lvm. En dicho directorio , normalmente existen 4 elementos:
- lvm.conf : Es el archivo de configuracion global de lvm2
- archive : En este directorio se almacenan respaldos incrementales de los metadatos cada vez que se ejecuta una accion en los mismos como borra/crea o expandir volumenes logicos ,grupos de volumenes o volumenes fisicos.
- backup : Este directorio contiene unicamenete el ultimo archivo de metadatos totalmente funcional y que esta normalmente en uso
- cache : En este directorio se guardan las transacciones temporales de lvm2
Los directorios que interezan para fines practicos en este escenario son solo archive y backup, pues ahi es donde se ejecutaran los cambios necesarios mas criticos.
Cuando se recuperan particiones usando el sistema tradicional de particionamiento es imposble recuperar unicmente una en especifico. En su lugar, se busca una tabla de particiones previa y usable en el sector 0 que contenga un esquema conveniente e incluya el desipositivo a recuperar, es decir, no podemos recuperar solo /dev/sda2 si no que es encesario encontrar y hayar una tabla de que contengan entre otras cosas /dev/sda2 .En lvm2 es eactamente lo mismo, solo que en lugar de tablas de particiones se usan los archivos de meadatos con extensione «.vg» dentro del directorio /etc/lvm/archive como referente de cambios pasados.
Dando una rapida mirada a cualquiera de ellos, se puede obeservar que son archivos de texto simples que contienen la informacion pertinente y util usada por lvm para determinar los limites y contenidos de todos los elementos de un sistema de particionamiento de esta tipo (PV’s VG’s LV’s). Ahora bien, si miramos al principo de dicho archivo podremos aobservar que incluso indica el momento en el que fue creado y antes de que accion se hizo. Un ejemplo de un archivo de metadatos se meustra a continuacion.
CUALQUIE MANIPULACION DE CUALQUIER FORMA SOBRE DISPOSITIVOS DE ALMACENAMIENTO PUEDE PROVOCAR PERDIDA DE DATOS SENSIBLES. ESTA ES UNA RENUNCIA A CUALQUIER RESPONSABILIDAD DE PARTE DE ESTE BLOG Y EL AUTOR ANTE TAL SITUACION.
Bien, hasta aqui la teoria, pasemos a la parctica. Lo primero antes de resuaturar un .vg es desmontar absolutamente todos los volumenes logicos que pertenezcan al grupo de volumenes que se va a restaurar. Ademas, si se esta usando xen o cualquier sistema de virtualizacion que use discos virtuales sobre volumenes logicos, sera necesario tambien detener todas las maquinas virtuales que usen volumenes logicos pertenecientes al grupo de volumenes en cuestion.
Lo siguiente sera encontrar el archivo vg adecuado bajo /etc/lvm/archive .El nombre de estos archivos esta compuesto de la siguiente forma:
donde:
- VG : Nombre del grupo de volumenes registrado
- NUMERO : Numero de referencia secuencial e incremntal
Recordando que la creacion de los mismos es incremental, entonces por ejemplo si la accion que se desea deshacer acaba de ser ejecutada entonces bastara con revisar y restaurar el .vg mas nuevo o con numero de referencia mas alto
Recuperamos nuestra copia de seguridad del etc y entramos a mnt/BACKUP/etc/lvm/archive
Una vez dentro primero probamos el fichero y su restauracion.
root@ubuntu:/mnt/BACKUP/etc/lvm/archive# vgcfgrestore VolGroup00 –test -f VolGroup00_00000.vg
Test mode: Metadata will NOT be updated.
Restored volume group VolGroup00
Si muestra el resultado de arriba todo ira bien y procedemos a la restauracion sin el test.
root@ubuntu:/mnt/BACKUP/etc/lvm/archive# vgcfgrestore VolGroup00 -f VolGroup00_00000.vg
Ya podemos motarlo y en mi caso todos los datos estaban intactos.