Manipular volúmenes lógicos (LVM) en discos virtuales

Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "Manipular volúmenes lógicos (LVM) en discos virtuales" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.

Me refiero a discos virtuales a los que creamos usando dd. Cuando creamos un disco utilizando por ejemplo dd if=/dev/zero of=imagen.img y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la instalación, hay veces que necesitamos manipularlo ya sea para clonarlo, hacerle mantención o simplemente montarlo para ver los archivos. En mi caso, tuve que clonar la máquina virtual en caliente y quedó el FS corrupto, por lo que tuve que corregirlo, tambien sirve para hacer tareas de mantención como aumentar o disminuir el tamaño del disco o volúmenes lógicos.

Tengo mi disco original llamado “vm1.img” y la clono simplemente con un cp o bien con “dd if=vm1.img vm1_clon.img“, paso a paso, lo que tenemos que hacer es:

  1. Crear un dispositivo “loop” en base a nuestro disco virtual
  2. Mapear el dispositivo loop creado
  3. Revisar los dispositivos creados en /dev/mapper/
  4. Activar el volúmen y realizar las tareas necesarias

Las herramientas que usé son losetup, kpartx y vgchange.

Primero, ya tenemos nuestro disco creado, en este caso lo llamaré “testing” y tiene un tamaño de 80GB.
# fdisk -l testing

Disk testing: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007759f

Device Boot Start End Blocks Id System
testing1 * 63 208844 104391 83 Linux
testing2 208845 167766794 83778975 8e Linux LVM

Para comenzar vamos a usar el comando losetup para crear un dispositivo “loop” en base a nuestra imagen de disco, para esto ejecutamos:

# losetup -f testing

Y verificamos con el mismo comando losetup que se haya creado

# losetup -a
/dev/loop0: [fe01]:24577 (/mnt/vardata/testing)

Ya tenemos nuestro dispositivo “loop” en /dev/loop0 mapeado a la imagen de disco virtual ubicada en /mnt/vardata/testing.

Ahora debemos usar la herramienta kpartx para mapear ese dispositivo que hemos mapeado a nuestro disco virtual hacia nuestro administrador de volúmenes lógicos

# kpartx -a -v /dev/loop0
add map loop0p1 (254:2): 0 208782 linear /dev/loop0 63
add map loop0p2 (254:3): 0 167557950 linear /dev/loop0 208845

Ahora tenemos otros dispositivos creados en /dev/mapper, corresponden a “loop0p1” y “loop0p2” correspondientes a las particiones de nuestro disco virtual. Así debería ser presentarse:

# ls -lia /dev/mapper/
total 0
1072 drwxr-xr-x 2 root root 140 sep 13 15:19 .
3 drwxr-xr-x 15 root root 3260 sep 13 15:19 ..
1073 crw------- 1 root root 10, 236 ago 11 12:12 control
2672529 lrwxrwxrwx 1 root root 7 sep 13 15:19 loop0p1 -> ../dm-2
2671232 lrwxrwxrwx 1 root root 7 sep 13 15:19 loop0p2 -> ../dm-3
3655 lrwxrwxrwx 1 root root 7 ago 11 12:12 VolGroup_ID_15211-backup -> ../dm-0
3672 lrwxrwxrwx 1 root root 7 ago 11 12:12 VolGroup_ID_15211-vardata -> ../dm-1

Y el comando vgdisplay debería mostrar la información del grupo

# vgdisplay
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 79,88 GiB
PE Size 32,00 MiB
Total PE 2556
Alloc PE / Size 2556 / 79,88 GiB
Free PE / Size 0 / 0
VG UUID yAIBPd-1PD6-IN1U-aoK7-bLSW-rz08-ERktCp

Y con lvdisplay revisamos la información de los volúmenes dentro del grupo VolGroup00

# lvdisplay VolGroup00
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4
LV Write Access read/write
LV Status NOT available
LV Size 77,84 GiB
Current LE 2491
Segments 1
Allocation inherit
Read ahead sectors auto

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O
LV Write Access read/write
LV Status NOT available
LV Size 2,03 GiB
Current LE 65
Segments 1
Allocation inherit
Read ahead sectors auto

Si te fijan en un detalle, en ambos volúmenes, el estado es “NOT available“, pues debemos activarlo

# vgchange VolGroup00 -a y
2 logical volume(s) in volume group "VolGroup00" now active

Y volvemos a revisar

# lvdisplay VolGroup00
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4
LV Write Access read/write
LV Status available
# open 0
LV Size 77,84 GiB
Current LE 2491
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:4

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O
LV Write Access read/write
LV Status available
# open 0
LV Size 2,03 GiB
Current LE 65
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:5

Ya los tenemos disponibles y ahora podemos trabajar con ese volúmen como si fuese un “lvm” normal, realizar tareas de mantención, montar el volumen, disminuir o aumentar su tamaño, etc.

Cuando ya terminemos de hacer todo lo que queramos con el disco virtual, hay que volver todo a la normalidad, haciendo los pasos inversos:

Desactivar el volumen
# vgchange VolGroup00 -a n
0 logical volume(s) in volume group "VolGroup00" now active

Remover el mapeo de los dispositivos loop0p1 y loop0p2 creados desde loop0
# kpartx -d /dev/loop0

Remover el mapeo de /dev/loop0 creado desde nuestro disco virtual “testing”
# losetup -v -d /dev/loop0

Ya dejamos todo como estaba y podemos volver a utilizar nuestro disco virtual.

Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "Manipular volúmenes lógicos (LVM) en discos virtuales" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.

2 comentarios

  1. Muy interesante

  2. hola que bueno es aprender con ustedes no tengo idea y gracias a ustedes aprendo cada día …. si pudiera aprender mas de ustedes se lo agradecería ya que tengo amigos que enseñan muy mal y mas encima como no entiendo se enojan ,gracias

Los comentarios están cerrados.