Hoy vamos a hacer algo sencillo pero que siempre se me olvida como se hace cuando más lo necesito, montar un volumen qcow2 de una máquina virtual para obtener alguno fichero o información que se encuentra dentro.

Activar el modulo NBD

Lo primero es cargar el módulo NBD que nos permitirá conectar el fichero qcow2 como un dispositivo de disco más del sistema.

igalvit@server:/vms/kvm$ sudo modprobe nbd max_part=8

Montar el fichero qcow2

Una vez que ya tenemos el módulo cargado tenemos que conectar el fichero qcow2, en mi caso se trata de un disco virtual de una máquina CentOS 7.

igalvit@server:/vms/kvm$ sudo qemu-nbd --connect=/dev/nbd0 /vms/kvm/centos7.qcow2

Ver las particiones disponibles

En este punto ya hemos montado el disco pero no sabemos qué contiene, así que vamos a visualizarlo para posteriormente elegir la partición que nos interesa.

igalvit@server:/vms/kvm$ sudo fdisk /dev/nbd0 -l
Disco /dev/nbd0: 20 GiB, 21474836480 bytes, 41943040 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x000a1f9c

Dispositivo Inicio Comienzo    Final Sectores Tamaño Id Tipo
/dev/nbd0p1 *          2048  2099199  2097152     1G 83 Linux
/dev/nbd0p2         2099200 41943039 39843840    19G 8e Linux LVM

Montar la partición

En nuestro caso se trata de un volumen LVM por lo que lleva un poco más de trabajo del habitual.

igalvit@server:/vms/kvm$ sudo vgscan
  Found volume group "centos_centos7" using metadata type lvm2
  Found volume group "ubuntu_vg" using metadata type lvm2

igalvit@server:/vms/kvm$ sudo vgchange -ay centos_centos7
  2 logical volume(s) in volume group "centos_centos7" now active

igalvit@server:/vms/kvm$ sudo lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-a----- <17,00g                                                    
  swap centos_centos7 -wi-a-----   2,00g                                                    
  root ubuntu_vg      -wi-ao---- 921,00g                                                    
  swap ubuntu_vg      -wi-ao----  <9,28g                

igalvit@server:/vms/kvm$ sudo mount /dev/centos_centos7/root /mnt -o ro,user

Visualizar el contenido de un fichero

Como esto es una prueba no vamos a hacer nada complicado, simplemente vamos a visualizar el fichero de la versión de la distribución de CentOS instalada.

  

igalvit@server:/vms/kvm$ cd /mnt

igalvit@server:/mnt$ ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

igalvit@server:/mnt$ cat etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

Desmontarlo todo

Una vez terminada la tareas ha llegado la hora de recoger velas.

igalvit@server:/$ sudo umount /mnt

igalvit@server:/$ sudo vgchange -an centos_centos7
  0 logical volume(s) in volume group "centos_centos7" now active

igalvit@server:/$ sudo qemu-nbd --disconnect /dev/nbd0
/dev/nbd0 disconnected

Y con esto damos por finalizado este artículo.