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:
- Crear un dispositivo “loop” en base a nuestro disco virtual
- Mapear el dispositivo loop creado
- Revisar los dispositivos creados en /dev/mapper/
- 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.
septiembre 18, 2011 a las 1:02 am
Muy interesante
septiembre 19, 2011 a las 2:01 pm
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