Montar img con offset automaticamente. kpartx

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.

Fuente: http://phenobarbital.wordpress.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *