Montar un fichero qcow2 en Linux
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.