29 marzo, 2024

Usando QEMU/KVM con LibVirt (2/6) Gestionando VM

QEMU se puede ejecutar desde linea de comando o gran variedad de entornos gráficos, ya sean con LibVirt o no, dentro de los entornos gráficos con LibVirt utilizaremos «Virt-Manager» como comentamos en la primera parte de «Usando QEMU/KVM con LibVirt» con el podremos gestionar no solo maquinas con conexión QEMU/KVM (qemu:///system) sino otros tipos de conexiónes a hipervisores ya sean locales o remotos.

«virt-manager» es una aplicación en Python que utilizar el API de LibVirt para darnos una interfaz grafica, por eso también comentaremos algunos de las opciones de Virsh que es el comado LibVirt

Acciones que podemos realizar

  • Crear una conexión al hipervisor correspondiente (Archivo→Añadir Conexión) ya sea local o en remoto, en nuestro caso KVM/QEMU pero como ya comentamos disponemos de varios hipervisores.
    • En nuestro caso sera QEMU (qemu://)
    • lxc:// para contenedores LXC
    • vbox:// conecta a VirtualBox con su API
    • vmware://
  • Crear maquina virtual(Archivo→Nueva maquina virtual) en alguna de las conexiones creadas, hipervisores configurados, anteriormente.
  • Detalles de la conexión (Editar→Detalles conexión) en el que podremos configurar las redes y almacenamientos de nuestras maquinas y discos virtuales.

Podremos ejecutarlas como root “///system” o como usuario local “///session”, con los permisos del usuario local, aunque lo normal es que las lancemos como “///system” para disponer de todas las capacidades de redes virtuales, puentes, etc. y así no tener limitaciones por los permisos.

Una vez tengamos la maquina virtual creada, más adelante describimos como realizar esto, podremos realizar distintas acciones sobre las maquinas creadas, con solo pulsar el botón derecho y elegir la acción:

  • Ejecutar, Apagar, forzar apagado, reiniciar.
  • Eliminar la maquina virtual, no preguntara si también queremos borrar ficheros de disco de esta.
  • Pausar y reanudar.
  • Clonar, Migrar

Desde linea de comandos (comando virsh) podremos realizar también estas acciones y otras como:

  • list – -all listado de las maquinas virtuales que tenemos configuradas.
  • dominfo <maquina> Información de la maquina que pasamos como parámetro
  • start | shutdown | destroy | reboot <maquinas> Iniciar, apagar, forzar el apagado y reiniciar una maquina concreta
  • undefine <maquina> Borrar una maquina.
  • dumpxml <maquina> Nos realiza un volcado del fichero de configuración XML (no es necesario acudir al directorio donde se almacenan) y que nos permitirá modificarlo y volverlo a subir para así crear maquinas con configuración similar por ejemplo.
  • create <fichero XML con definición>
  • suspend | resume <Maquina> Paramos la ejecución de una maquina, guardando sus estados, para despues volver a reiniciarla desde el mismo punto en que se paro. Otros comandos de Virsh similares que nos permiten guardar los estados en un fichero para su posterior restauración son: save y restore.
  • snapshot-create Crea una instantanea
  • snapshot-list <Maquina> Listado de las instantaneas del la maquina indicada.
  • snapshot-restore <Maquina> <Instantanea> Restaura una instantanea.
  • Snapshot-delete <Maquina> <Instantanea> Borrado de la instantanea una vez que ya no la necesitemos

Creando una maquina virtual desde Virt-Manager

Para crear una maquina virtual nos iremos a (Archivo→Nueva maquina virtual) en este momento se iniciara una serie de preguntas que deberemos ir contestando antes de empezar la configuración real del sistema operativo que hayamos decidido instarla.

Lo primero que nos preguntara es el medio de instalación desde el que se iniciara la instalación de nuestra maquina virtual.

El más típico es utilizar una imagen ISO con el sistema operativo deseado pero disponemos de otras opciones:

  1. ISO o CDROM Es mas típico, si tenemos un USB con la instalación lo más cómodo sera convertir ese USB a un fichero .ISO
  2. Instalación desde la red.
  3. Un disco existente, podemos tener imagenes existente en diferentes formatos (que podremos convertir como se vera más adelante con «qemu-img convert»
    • .raw Formato crudo
    • .vmdk Formato de VMWare
    • .vdi Formato de VirtualBox
    • .iso DVD/CDs
    • .qcow2 Nuevo formato de QEMU con características avanzadas y es el que normalmente usaremos para la nueva creación de maquinas.
    • otros como:.cow, .qcow.

También podremos elegir la arquitectura, normalmente no la modificaremos, para los casos que no se correspondan con la arquitectura de nuestro anfitrión y en estos caso QEMU trabajara en modo emulación. Un ejemplo de trabajo en emulación es ejecutar una maquina invitada de tipo «ARM» en un anfitrion «Intel.»

Después y en el caso de ser una instalación por red definiremos los parámetros correspondientes de red para acceder a esa imagen.

Sino detecta el sistema operativo, elegiremos nosotros uno manualmente para que de esta forma nos de una sugerencia de la memoria y CPU que necesita, al igual que el tamaño de disco, y que podremos cambiar en las ventanas que nos irán apareciendo.

El disco podremos crea una imagen en el directorio por defecto o de forma personalizada, que nos podrá elegir el sitio donde se guardara nuestra imagen, accediendo a los repositorios de almacenamiento que tenemos definidos (fisicos o bloques) y de los que hablaremos más adelante.

Una vez seleccionado el disco nos dará un resumen de lo elegido y deberemos definir el nombre de la maquina virtual, el por defecto se basa en el tipo de sistema operativo que hayamos definido, y también el tipo de red que en la primera instalación lo mejor es dejar el tipo por defecto «NAT» que nos permite acceder a internet para descarga de actualizaciones por defecto y una vez se complete la instalación ya podremos meter la maquina virtual en la red que nos interese.

Ademas nos da la opción de personalizar el hardware, en la mayoría de los caso lo dejaremos por defecto lo que nos trae hasta que se realice la instalación, salvo que necesite de un disco especial para la instalación o por ejemplo en maquinas de imagenes existente conozcamos el hardware que deseamos añadir durante la instalación ya que después se podrá realizar perfectamente si este no impide la instalación inicial.

Y después iniciaremos la instalación de nuestro sistema operativo correspondiente como si de una maquina física se tratara.

Una vez instalado si acudiremos al hardware de nuestra maquina instalada para definir dispositivos adicionales, como pueden ser directorios a montar, interfaz de red y asignación a redes diferentes de la de por defecto utilizada, así como directorios que deseemos compartir con nuestro huesped.

Ademas en el Hardware definiremos canales Spice para disponer de la opción «Copy-Paste» entre las maquinas y en la propia maquina instalaremos drivers especiales de los dispositivos virtualizados, cuando se disponga de ellos, para un mejor rendimiento y funcionalidad.

Una vez que instalemos nuestra maquina invitada, que podrá ser windows o linux en la mayoría de los casos, nos interesara instalar en ella algunos controladores que mejoran la integración con nuestro anfitrión y proporciona otras opciones como copia&pegar por ejemplo, seria los equivalentes a la instalación de “guest-additions” que se realiza en VirtualBox.

Drivers SPICE (https://www.spice-space.org/download.html)

Drivers para invitados Windows

Drivers para Linux

  • En Linux (debian, Ubuntu,..) se dispone de paquetes en la propia distribución.
    • qemu-guest-agent Facilita la comunicación entre la maquina invitada y el anfitrión (mediante el canal virtio-serial org.qemu.guest_agent.0)
    • spice-vdagent Agente spice que nos permitirá mejor control del mouse, ajuste automatico de la resolución, Copy&Paste entre el invitado y el anfitrión.
    • xserver-xorg-video-qxl (Controlador pantalla QXL)

Conceptos básicos de la visualización y ciclo de vida

Una vez que tenemos instalada nuestra maquina y antes de continuar nos interesa conocer algunos conceptos básicos así como el ciclo de vida de una maquina virtual.

  • Nodo es la maquina física, nuestro anfitrión, donde se ejecuta nuestro hipervisor.
  • Dominio instancias de maquinas virtuales, maquina invitada, que se ejecutan en nuestro dominio.

Las maquinas virtuales (dominios) se definen en un fichero XML(su formato lo podemos ver en https://libvirt.org/formatdomain.html) que podemos localizar en “/etc/libvirt/qemu” y que definirá el hardware (memoria, cpus, tarjetas de red, dispositivos de almacenamiento) y las redes a las que se conecta cada uno de los dispositivos de red NIC que definamos, también carpetas compartidas que podamos tener, etc.

Podemos ver el XML y editarlo ejecutando

virsh dumpxml <maquina> // Vuelca el XML

virsh edit <maquina> // Edita el XML

Los estados por los que puede pasar una maquina virtual son:

  • Indefinido : El dominio aún no se ha definido o creado.
  • Detenido : El dominio se ha definido, pero no se está ejecutando.
  • En ejecución : El dominio se ha creado e iniciado, por lo tanto se esta ejecutando en el hipervisor.
  • En pausa : Se ha suspendido la ejecución del dominio, almacenandose su estado hasta que se reanude. Saldremos del el realizando un resume.
  • Salvado: Es similar al estado de pausa, pero el estado se guarda en un almacenamiento persistente, realizando una instantánea de la maquina. Saldremos de el realizando un restore.

Si nuestras maquinas virtuales las tenemos en un almacenamiento compartido por varios anfitriones y gracias a los estados, podremos realizar migraciones de estas entre anfitriones. Este tema no lo trataremos pero es una característica muy utilizada en entornos empresariales

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad