Linux KVM: La forma más rápida de montar una imagen de disco

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.

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 14 septiembre 2012 en contraloría social, Cultura Libre, PlanetaLinux, Software Libre y etiquetado en , , , , . Guarda el enlace permanente. 3 comentarios.

  1. Es agradable ver que vuelves al ruedo🙂

  2. La otra alternativa seria montarla creando un loopback device

    • Ya kpartx crea los loop devices, de hecho, es una manera más rápida que tener qué analizar el dispositivo, calcular los offsets de cada partición y crear manualmente los losetup, al menos kpartx es un proceso mucho más rápido.
      Saludos!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: