https://manuais.iessanclemente.net/index.php?title=Comando_qemu-img&feed=atom&action=historyComando qemu-img - Historial de revisiones2024-03-29T08:14:02ZHistorial de revisiones de esta página en el wikiMediaWiki 1.36.2https://manuais.iessanclemente.net/index.php?title=Comando_qemu-img&diff=64677&oldid=prevJavierfp: /* Convertir imágenes */2018-07-27T18:59:27Z<p><span dir="auto"><span class="autocomment">Convertir imágenes</span></span></p>
<p><b>Página nueva</b></p><div>== Gestión de volúmenes con qemu-img ==<br />
<br />
=== Ver información de una imagen o volumen ===<br />
<br />
Con el comando info vemos información asociada a una imagen<br />
<br />
<pre>qemu-img info win10.qcow2</pre><br />
<br />
Mostraría<br />
<br />
<pre><br />
image: win10.qcow2<br />
file format: qcow2<br />
virtual size: 20G (21474836480 bytes)<br />
disk size: 9.0G<br />
cluster_size: 65536<br />
Format specific information:<br />
compat: 1.1<br />
lazy refcounts: false<br />
refcount bits: 16<br />
corrupt: false<br />
</pre><br />
<br />
=== Creación de una imagen ===<br />
<br />
Pueden crearse archivos de imagen al vuelo con el comando create<br />
<br />
<pre>qemu-img create -f qcow2 test.qcow2 1G</pre><br />
<br />
Crearía la imagen test.qcow2 de 1GiB de tamaño en formato qcow2.<br />
<br />
Con la '''opción -b''' filename (análogamente con -o backing_file=filename) podemos crear una imagen a partir de otra existente, que se pasará como argumento de esa opción, de modo que la nueva imagen solo almacenará las diferencias respecto a la imagen base.<br />
<br />
=== Nota sobre el espacio ocupado por los volúmenes ===<br />
<br />
Cuando se crea un volumen de almacenamiento en formato qcow2 el espacio ocupado por el mismo es el declarado en la creación del volumen, no el espacio realmente ocupado por los datos que contiene.<br />
<br />
Veamos los espacios ocupados por los volúmenes<br />
<br />
<pre>virsh vol-list default --details</pre><br />
<br />
<u>'''guest1-deb9.qcow2 /var/lib/libvirt/images/guest1-deb9.qcow2 file 20,00 GiB 3,32 MiB'''</u><br />
<pre><br />
w10_cliente.qcow2 /var/lib/libvirt/images/w10_cliente.qcow2 file 20,00 GiB 2,24 GiB<br />
w2016.qcow2 /var/lib/libvirt/images/w2016.qcow2 file 30,00 GiB 10,92 GiB<br />
w2016_server.qcow2 /var/lib/libvirt/images/w2016_server.qcow2 file 30,00 GiB 1,21 GiB<br />
win10.qcow2 /var/lib/libvirt/images/win10.qcow2 file 20,00 GiB 9,01 GiB<br />
</pre><br />
<br />
Si nos fijamos en la primera línea del listado veremos que hay un volumen de 20 GiB, del cual solo se están utilizando 3,32 MiB<br />
<br />
Ahora veamos el espacio ocupado por ese volumen en el sistema de archivos<br />
<br />
<pre>ls -lh /var/lib/libvirt/images</pre><br />
<br />
Mostraría:<br />
<br />
<u>'''-rw------- 1 root root 21G nov 9 17:15 guest1-deb9.qcow2'''</u><br />
<pre><br />
-rw-r--r-- 1 root root 2,3G nov 7 19:44 w10_cliente.qcow2<br />
-rw-r--r-- 1 libvirt-qemu libvirt-qemu 11G nov 8 18:35 w2016.qcow2<br />
-rw-r--r-- 1 root root 1,3G nov 5 17:39 w2016_server.qcow2<br />
-rw-r--r-- 1 libvirt-qemu libvirt-qemu 9,1G nov 8 18:41 win10.qcow2<br />
</pre><br />
<br />
Podemos observar que aunque el espacio de datos del volumen es solo de 3,32 MiB, el uso de espacio en disco se muestra como 21GiB, sin embargo si ejecutamos<br />
<br />
<pre>du -h /var/lib/libvirt/images/guest1-deb9.qcow2</pre><br />
<br />
La salida es<br />
<br />
<pre>3,4M /var/lib/libvirt/images/guest1-deb9.qcow2</pre><br />
<br />
Esto quiere decir que el volumen realmente ocupa el espacio en el sistema de archivos de los datos que contiene.<br />
<br />
Si por algún motivo necesitamos que el archivo de volumen se muestre en el sistema de archivos con el espacio real ocupado por el mismo, es decir, de modo que el comando ls muestre el espacio real ocupado, podemos ejecutar el procedimiento de conversión de imágenes que veremos a continuación<br />
<br />
=== Convertir imágenes ===<br />
<br />
Ejecutemos a través de los comandos siguientes la conversión de la imagen anterior<br />
<br />
<pre><br />
cd /var/lib/libvirt/images<br />
qemu-img convert -O qcow2 guest1-deb9.qcow2 guest1-deb9.qcow2.new<br />
rm guest1-deb9.qcow2<br />
mv guest1-deb9.qcow2.new guest1-deb9.qcow2<br />
</pre><br />
<br />
El comando '''qemu-img''' se utiliza para gestionar las imágenes, o volúmenes de datos, de almacenamiento. La opción '''convert''' se utiliza para conversiones entre formatos.<br />
<br />
Ahora ejecutamos de nuevo un '''ls -lh'''<br />
<br />
<pre>ls -lh /var/lib/libvirt/images</pre><br />
<br />
La primera línea de esa salida sería<br />
<br />
<u>'''-rw-r--r-- 1 root root 193K nov 9 17:39 guest1-deb9.qcow2'''</u><br />
<br />
Por último, veamos de nuevo la salida del primer comando<br />
<br />
<pre>virsh vol-list default --details</pre><br />
<br />
La primera línea de esa salida sería<br />
<br />
<u>'''guest1-deb9.qcow2 /var/lib/libvirt/images/guest1-deb9.qcow2 file 20,00 GiB 196,00 KiB'''</u><br />
<br />
El comando '''convert''' permite especificar varias opciones interesantes, como la posibilidad de comprimir la imagen resultante, con la '''opción -c''', o cifrar sus datos, con la opción '''-o encryption'''.<br />
<br />
Podemos ver más opciones del comando qemu-img con '''qemu-img --help'''<br />
<br />
==== Conversión de imágenes entre sistemas de virtualización diferentes ====<br />
<br />
Otra opción muy interesante es la posibilidad de crear imágenes en un formato nuevo compatible con otros sistemas de virtualización, como VirtualBox o VMWare<br />
<br />
Por ejemplo vamos a convertir una imagen en formato '''qcow2''' a formato '''vdi''' para hacerlo compatible con '''VirtualBox'''<br />
<br />
<pre>qemu-img convert -f qcow2 -O vdi /var/lib/libvirt/images/win10_img.qcow2 /var/lib/libvirt/images/win10_img.vdi</pre><br />
<br />
Crearía una nueva imagen en formato .vdi a partir de la imagen original en qcow2, de este modo puede conectarse el volumen resultante como disco duro virtual de una máquina virtual de VirtualBox<br />
<br />
=== Modificar el tamaño de almacenamiento de un volumen ===<br />
<br />
Podemos aumentar de modo sencillo el espacio disponible en un volumen, sin afectar al uso de espacio en disco real del mismo, para ello usamos también el comando qemu-img<br />
<br />
<pre>qemu-img resize /var/lib/libvirt/images/guest1-deb9.qcow2 +1GB</pre><br />
<br />
Incrementaría el espacio disponible del volumen en 1GB<br />
<br />
<pre>virsh vol-info guest1-deb9.qcow2 default</pre><br />
<br />
Mostraría<br />
<br />
<pre><br />
Name: guest1-deb9.qcow2<br />
Type: file<br />
Capacity: <u>'''21,00 GiB'''</u><br />
Allocation: 200,00 KiB<br />
</pre><br />
<br />
Como podemos ver en la salida anterior, la capacidad del volumen ha pasado de 20GiB a 21GiB<br />
<br />
Es posible decrementar, shrink, el tamaño de una imagen, indicándolo con un símbolo - delante del parámetro tamaño del comando resize, sin embargo, es necesario reducir el tamaño de las particiones creadas en la imagen mediante alguna herramienta del guest, para que esa opción funcione.<br />
<br />
=== Chequeo de una imagen de disco ===<br />
<br />
Podemos usar el comando check<br />
<br />
<pre>qemu-img check guest1-deb9.qcow2</pre><br />
<br />
Mostraría la información resultante de efectuar un chequeo a la image indicada.<br />
<br />
Si todo va bien:<br />
<br />
<pre><br />
No errors were found on the image.<br />
Image end offset: 327680<br />
</pre><br />
<br />
=== Hacer commit de cambios en una imagen ===<br />
<br />
Cuando estamos utilizando imágenes enlazadas, en las que unas toman otras como base, podemos confirmar los cambios sobre la imagen base mediante el comando commit.<br />
<br />
Supongamos que tenemos las imágenes<br />
<br />
<pre><br />
w2016.qcow2 /var/lib/libvirt/images/w2016.qcow2 <br />
w2016_server.qcow2 /var/lib/libvirt/images/w2016_server.qcow2<br />
</pre><br />
<br />
En este supuesto la imagen w2016_server.qcow2 fue generada tomando como archivo de almacenamiento base w2016.qcow2. Esta imagen almacenará las diferencias respecto al archivo de almacenamiento base. Si queremos incluir esas diferencias en ese archivo base podremos utilizar el comando commit.<br />
<br />
Ejecutamos<br />
<br />
<pre>qemu-img info w2016_server.qcow2</pre><br />
<br />
Mostraría<br />
<br />
<pre><br />
image: w2016_server.qcow2<br />
file format: qcow2<br />
virtual size: 20G (21474836480 bytes)<br />
disk size: 2.2G<br />
cluster_size: 65536<br />
backing file: /var/lib/libvirt/images/w2016.qcow2<br />
Snapshot list:<br />
ID TAG VM SIZE DATE VM CLOCK<br />
2 snap1 823M 2017-11-02 23:51:17 00:28:01.565<br />
Format specific information:<br />
compat: 1.1<br />
lazy refcounts: false<br />
refcount bits: 16<br />
corrupt: false<br />
</pre><br />
<br />
Podemos observar como esa imagen tiene como backing file /var/lib/libvirt/images/w2016.qcow2, que corresponde con la otra imagen del primer listado. En este caso podríamos hacer un commit de esa imagen para guardar los cambios en el archivo de imagen principal, de modo que la base se verá actualizada con los cambios. Ejecutamos:<br />
<br />
<pre>qemu-img commit w2016_server.qcow2</pre><br />
<br />
=== Comparar imágenes ===<br />
<br />
Podemos utilizar para esto el comando compare<br />
<br />
<pre>qemu-img compare w2016.qcow2 win10.qcow2</pre><br />
<br />
Mostraría en este caso un mensaje indicando que las imágenes difieren a partir del bloque indicado en la salida. Por defecto pueden comparse dos imágenes de distinto tamaño, pueden identificarse como iguales si el espacio adicional de una respecto a la otra solo contiene ceros.<br />
<br />
=== Ver mapa de datos de una imagen ===<br />
<br />
Con el comando map podemos ver los metadatos del archivo de imagen, más concretamente mostrará las cadenas de bytes y sus direcciones dentro de la imagen, además del archivo en el que están almacenadas<br />
<br />
<pre>qemu-img map win10.qcow2 --output=json</pre><br />
<br />
Si no se especifica la opción --output mostrará un formato de salida “humano”<br />
<br />
=== Realizar un amend (enmendar) de las opciones de una imagen ===<br />
<br />
Con el comando amend podemos enmendar opciones específicas del formato de la imagen. La sintaxis del comando sería<br />
<br />
'''qemu-img ammend [-p] [-f formato] [-t cache] -o options filename'''<br />
<br />
-p mostraría el progreso del comando<br />
<br />
=== Cambiar el archivo de base de una imagen ===<br />
<br />
Con el comando '''rebase''' podremos cambiar el archivo de base de una imagen.<br />
<br />
Podemos ver las opciones de uso con <br />
<br />
<pre>qemu-img --help</pre><br />
<br />
=== Listado, creación, borrado y aplicación de snapshots ===<br />
<br />
Las spanshots, instantáneas, son una herramienta muy útil a la hora de trabajar con imágenes. Mediante su uso podremos recuperar el estado previo de la imagen almacenado en la snahpshot.<br />
<br />
Para gestionar este aspecto disponemos del comando snapshot<br />
<br />
La sintaxis del comando es simple<br />
<br />
'''qemu-img snapshot [ -l | -a snapshot | -c snapshot | -d snapshot ] filename'''<br />
<br />
Las opciones son evidentes* '''-l''' lista las snapshot de una imagen<br />
* '''-a''' aplica la snapshot indicada a la imagen<br />
* '''-c '''crea una snapshot con el nombre indicado<br />
* '''-d''' elimina la snapshot de la imagen de nombre indicado<br />
<br />
Vamos a crear una snapshot para una de las imágenes<br />
<br />
<pre>qemu-img snapshot -c snap1 win10.qcow2</pre><br />
<br />
Crearía la snapshot de nombre snap1 para la imagen win10.qcow2<br />
<br />
Vamos a comprobar que efectivamente se ha creado<br />
<br />
<pre>qemu-img snapshow -l win10.qcow2</pre><br />
<br />
Mostraría<br />
<br />
<pre><br />
Snapshot list:<br />
ID TAG VM SIZE DATE VM CLOCK<br />
1 snap1 0 2017-11-09 19:18:59 00:00:00.000<br />
</pre><br />
<br />
Por último la borramos<br />
<br />
<pre>qemu-img snapshot -d snap1 win10.qcow2</pre><br />
<br />
[[ Virtualización_en_GNU/Linux_con_KVM | Volver ]]<br />
<br />
JavierFP 12:55 10 nov 2017 (CET)</div>Javierfp