Si utilizamos el formato raw para simular el disco de un dominio en KVM, éste puede ser accesible desde el dominio principal (equipo anfitrión) al igual que en Xen. La diferencia con Xen es que KVM normalmente utiliza imagenes de disco que son discos completos con su tabla de particiones, por lo que no se puede montar directamente sobre un dispositivo loop. En esta entrada se explican los pasos que hay que dar para poder acceder a las particiones del disco de KVM cuando este disco se encuentra en volumen lógico.
Supongamos que tenemos instalado un dominio de kvm en el volumen lógico /dev/vg1/coyote:
# ls -l /dev/vg1
total 0 lrwxrwxrwx 1 root root 22 dic 14 11:20 coyote -> /dev/mapper/vg1-coyote
# ls -l /dev/mapper
total 0 crw-rw---- 1 root root 10, 60 dic 14 11:20 control brw-rw---- 1 root disk 254, 3 dic 14 11:20 vg1-coyote
El dispositivo /dev/mapper/vg1-coyote no se puede montar porque es un disco completo y no una partición, para acceder a las particiones en primer lugar hay que leer la tabla de particiones y crear los dispositivos para cada partición, función que realiza kpartx de la siguiente manera:
# kpartx -va /dev/vg1/coyote
add map vg1-coyote1 (254:5): 0 5895792 linear /dev/vg1/coyote 63 add map vg1-coyote2 (254:6): 0 385560 linear /dev/vg1/coyote 5895855 add map vg1-coyote5 (254:7): 0 385497 254:6 63
Si se realiza ahora un listado sobre /dev/mapper:
# ls -l /dev/mapper
total 0 crw-rw---- 1 root root 10, 60 dic 14 11:20 control brw-rw---- 1 root disk 254, 3 dic 14 11:20 vg1-coyote brw-rw---- 1 root disk 254, 5 dic 14 12:09 vg1-coyote1 brw-rw---- 1 root disk 254, 6 dic 14 12:09 vg1-coyote2 brw-rw---- 1 root disk 254, 7 dic 14 12:09 vg1-coyote5
Aparecen mapeadas las particiones del volumen lógico de coyote, por lo que se pueden montar como si fueran particiones de un disco:
# mount /dev/mapper/vg1-coyote1 /mnt # ls -l /mnt
total 92 drwxr-xr-x 2 root root 4096 dic 7 20:49 bin drwxr-xr-x 2 root root 4096 dic 7 20:55 boot lrwxrwxrwx 1 root root 11 dic 7 20:47 cdrom -> media/cdrom drwxr-xr-x 4 root root 4096 dic 7 20:48 dev drwxr-xr-x 3 root root 4096 dic 7 21:03 emul drwxr-xr-x 55 root root 4096 dic 7 21:04 etc drwxr-xr-x 2 root root 4096 ago 31 05:39 home lrwxrwxrwx 1 root root 30 dic 7 20:50 initrd.img -> boot/initrd.img-2.6.26-2-amd64 drwxr-xr-x 11 root root 4096 dic 7 21:03 lib lrwxrwxrwx 1 root root 20 dic 7 21:03 lib32 -> /emul/ia32-linux/lib lrwxrwxrwx 1 root root 4 dic 7 20:47 lib64 -> /lib drwx------ 2 root root 16384 dic 7 20:47 lost+found drwxr-xr-x 3 root root 4096 dic 7 20:47 media drwxr-xr-x 2 root root 4096 ago 31 05:39 mnt drwxr-xr-x 2 root root 4096 dic 7 20:47 opt drwxr-xr-x 2 root root 4096 ago 31 05:39 proc drwxr-xr-x 4 root root 4096 dic 7 20:53 root drwxr-xr-x 2 root root 4096 dic 7 21:03 sbin drwxr-xr-x 2 root root 4096 sep 16 2008 selinux drwxr-xr-x 2 root root 4096 dic 7 20:47 srv drwxr-xr-x 2 root root 4096 ago 12 2008 sys drwxrwxrwt 2 root root 4096 dic 7 21:03 tmp drwxr-xr-x 10 root root 4096 dic 7 21:03 usr drwxr-xr-x 13 root root 4096 dic 7 20:47 var lrwxrwxrwx 1 root root 27 dic 7 20:50 vmlinuz -> boot/vmlinuz-2.6.26-2-amd64
Desmontar y borrar las particiones mapeadas
Antes de iniciar el dominio KVM de nuevo es importante desmontar las particiones que estuvieran montadas y borrar las particiones que estuvieran mapeadas:
# umount /mnt # kpartx -dv /dev/vg1/coyote
del devmap : vg1-coyote5 del devmap : vg1-coyote2 del devmap : vg1-coyote1
Referencias
En las siguientes referencias se explica cómo acceder a una imagen de disco KVM ubicada en un fichero: