Linux KVM: La forma más rápida de montar una imagen de disco phenobarbital contraloría social, Cultura Libre, PlanetaLinux, Software Libre 14 septiembre 2012
En alguna oportunidad, necesitamos montar una imagen de disco (formato qcow) de KVM o de HVM (Xen) para poder acceder a los archivos contenidos allí dentro, pero la cosa no era tarea fácil (calcular el offset del sector de la geometría de la partición, hacer el losetup, etc); la forma más rápida es usando kpartx.
Kpartx es una aplicación cónsola (parte de los multipath-tools por cierto) que permite crear automáticamente los device mappings (dispositivos en /dev) de cualquier dispositivo de bloque. Instalando kpartx
Aunque lo podemos instalar junto con los multipath-tools, lo podemos instalar de manera independiente:
aptitude install kpartx
Usando kpartx con KVM/HVM
Hemos creado una máquina virtual con KVM/HVM, la misma está en un archivo de imagen ó en un dispositvo LVM, para mapear todas las particiones de dicha imagen KVM como dispositivos de bloque, simplemente ejecutamos:
kpartx -a /dev/mapper/vgVM-maquina1
Siendo /dev/mapper/vgVM-maquina1 el volumen lógico donde está la máquina virtual, si está en un archivo en disco, sería:
kpartx -a /srv/kvm/maquina1/disk1.img
Esto nos agregará una serie de dispositivos de bloque llamados igual qué el volumen original pero agregando las particiones lógicas, ejemplo:
/dev/mapper/vgVM-maquina1p1 (primera partición)
/dev/mapper/vgVM-maquina1p2 (segunda partición)
/dev/mapper/vgVM-maquina1p3 (tercera partición)
Y así suscesivamente. Montando la partición
Para montar simplemente utilizamos el comando mount:
mount -o rw /dev/mapper/vgVM-maquina1p1 /mnt
En nuestro caso, hicimos el montaje en /mnt. Borrando el mapa de particiones de la imagen
Si ya hicimos uso de la partición y deseamos eliminar el «mapa» de dichas particiones en nuestra lista de dispositivos de bloque, simplemente ejecutamos:
kpartx -d /dev/mapper/vgVM-maquina1
Y se eliminarán todas las referencias (mapping) de particiones de la imagen (NOTA: no se borrarán las particiones). Otros usos de Kpartx
Si queremos ver qué particiones posee una imagen KVM/HVM (solo listarlas, no las agrega al listado de particiones disponibles):
kpart -l /dev/mapper/vgVM-maquina1
Si durante el proceso de una imagen KVM ya agregada con *-a* decidimos crear una nueva partición, podemos ejecutar simplemente:
kpartx -u
Y se actualizarán todos los identificadores de dispositivos de bloque de todas las imagenes listadas.
