Tabla de Contenidos

Libvirtd

Es una librería que define un conjunto de APIS que interactuan con diferentes hipervisores1) contiene un conjunto de herramientas del interprete de comandos o clientes gráficos que permiten crear, suspender, mover, destruir instancias de un sistema operativo o máquinas virtuales.

Definiciones

  1. Nodo. Un nodo es un nombre para referirse a una máquina física.
  2. Hipervisor . Es una capa de software que permite virtualizar un nodo en un conjunto de máquinas virtuales con una configuración diferente al nodo.
  3. Domain. Es una instancia de un sistema operativo corriendo en una máquina virtualizada proporcionada por el hipervisor.

Dominios trascendentes y persistentes

Libvirtd distingue entre dominios trascendentes y persistentes. Los dominios trascendentes hasta que la máquina virtual se apaga o el nodo donde corre la máquina virtual es reinicializado. Los dominios persistentes no dependen del estado de la máquina virtual.

Estados de un dominio

Los dominios pueden estar en varios estados:

El ciclo de vida de una máquina virtual

Snapshots

Un snapshot es la vista de una máquina virtual y todas sus aplicaciones en un punto del tiempo. Los snapshots permiten a los usuarios guardar el estado de una máquina virtual en un punto del tiempo y permite regresar la máquina virtual a ese estado en cualquier momento, eso es particularmente útil cuando se instalan actualizaciones o nuevas aplicaciones que resultan conflictivas.

Instalación

Antes de iniciar es necesario verificar si el cpu tiene soporte a la virtualización:

Instalación de paquetes

Generación de una red virtual

Las redes virtuales para las máquinas virtuales son de dos tipos:

Clientes de libvirtd

Hay tres clientes que interactuan con el daemon libvirtd, virt-manager un cliente gráfico2), virt-install y virsh permiten interactuar desde el interprete de comandos con las máquinas virtuales.

Manipulación de imágenes

El sistema operativo que hospeda máquinas virtuales tiene varias alternativas de almacenaje de las mismas, puede optar por almacenamiento arbitario como LVM3), ZVOL4) o archivos binarios que reciben el nombre de imágenes. El imperativo de mover máquinas entre hipervisores hace que la mejor opción de almacenamiento sean las imágenes.

Hay una sección del artículo del hipervisor Xen de este sitio Archivos Imagen donde se presentan ejemplos del uso del comando qemu-img en la generación de archivos imágen en formatos qcow2 y raw y la modificación de su tamaño.

Libvirtd ofrece el comando virt-resize para modificar el tamaño de archivos imágen que contienen particiones con diferentes sistemas de archivos de la máquina virtual que soportan, este comando permite agregar o disminuir el tamaño de estas particiones, a continuación se presentan algunos ejemplos con formatos de imágenes qcow2 y raw.

Formato qcow2
  1. Verificar el tamaño de los sistemas de archivo contenidos en la imágen:
    virt-filesystems –long -h –all -a ./disco-viejo.qcow2
  2. Crear el nuevo archivo con el incremento de tamaño que se desea para una de las particiones:
    qemu-img create -f qcow2 -o preallocation=metadata disco ./nuevo.qcow2 50G
  3. Expander la partición escasa de espacio:
    virt-resize –expand /dev/sdb2 ./disco-viejo.qcow2 ./disco-nuevo.qcow2
Formato raw
  1. Crear un archivo imágen nuevo del mismo tamaño que la imágen vieja:
    truncate -r ./disco-viejo.raw ./disco-nuevo.raw
  2. Extender el archivo imágen nuevo:
    truncate -s +20G ./disco-nuevo.raw
  3. Expander la partición escasa de espacio:
    virt-resize –expand /dev/sdb2 ./disco-viejo.raw ./disco-nuevo.raw

Como expander una partición qcow2

1)
XEN, KVM, Virtualbox, VMware ESXi, Hyper-V
2)
No se discute en esta wiki
3)
Logical Volume Manager
4)
Volúmen lógico de ZFS