KVM: Diviértete con la Virtualización en ODROID-H2

A la hora de hablar del ODROID-H2, el uso que hago de éste es de host de virtualización, ejecutar algunas máquinas virtuales de prueba para ejecutar software o probar actualizaciones de sistemas para mi empresa (p. Ej., Actualizar versiones anteriores de SO a nuevas versiones). En el foro, veo personas que tienen dificultades a la hora hacer funcionar VMware o Citrix Hypervisor, principalmente debido a los NICs no compatibles y otros componentes de la placa. Siempre me ha desconcertado un poco, ya que conozco la infraestructura KVM que es parte del kernel de Linux, la cual permite una fácil virtualización, y dado que las NICs y otras cosas de Linux (Ubuntu, Debian, etc.) funcionan bien, la virtualización debería funcionar sin ningún problema. Cuando mencioné esto por primera vez en el foro, me pidieron que hiciera una guía, ya que parecía que nadie lo conocía. Así que veamos qué tenemos que decir al respecto: primero, explicaremos un poco lo que realmente vamos a hablar, y qué herramientas y componentes voy utilizar.

KVM

KVM está integrado en el núcleo, en realidad significa "máquina virtual basada en el núcleo" y utiliza el núcleo de Linux para ejecutar máquinas virtuales (VM) sobre él. Esto te permite ejecutar máquinas virtuales directamente en cualquier Linux que ejecutes en tu ODROID-H2 (o cualquier otro PC que ejecute Linux).

QEMU

Qemu - Quick Emulator es conocido como un emulador bastante rápido y rico en funciones que te permite emular diferentes sistemas y componentes de hardware. Se puede usar en combinación con KVM para emular hardware como discos duros, unidades de CD-ROM, NIC, etc., aunque envía los comandos de los dispositivos a la capa de virtualización de KVM. Permite funciones avanzadas como capturas de pantalla para máquinas virtuales.

libvirt

Libvirt es una API de código abierto para configurar plataformas VM como KVM, Xen, VMWare o QEMU. La lista de hipervisores compatibles es bastante larga e incluso incluye contenedores como LXC. Lo usaremos como interfaz de usuario, tanto de forma gráfica como de línea de comandos para hacer cosas con nuestras máquinas virtuales en KVM.

Primer Escenario

Ahora que hemos decidido usar KVM, veamos qué necesitamos para ejecutar máquinas virtuales y cómo instalar máquinas virtuales de Linux y Windows, así como controlarlas. Puesto que somos amantes de los ODROIDs, lo hacemos, por supuesto, en nuestro ODROID-H2, pero como he dicho anteriormente, también funcionará en cualquier otro PC/Servidor basado en x86 que ejecute Linux. Ten esto en cuenta cuando me refiera al ODROID-H2 de aquí en adelante, ya que también se aplicará a cualquier otro sistema.

Requisitos

  • ODROID-H2
  • Sistema operativo instalado (Debian o Ubuntu para un inicio fácil)
  • Conexión a Internet

En este primer escenario, no necesitamos mucho: solo un ODROID-H2 con un Linux instalado de tu elección. Como estoy a favor de Debian para las tareas del servidor, usaré Debian Buster como sistema operativo de referencia, pero los comandos se aplican también a Ubuntu y deberían funcionar de igual forma.

Instalación y configuración

Supongamos que ya has instalado una distribución de Linux completamente funcional con un entorno de escritorio (DE) y Network Manager y tu usuario por defecto es "odroid".

$ sudo apt install virt-manager
$ sudo adduser odroid libvirt
$ sudo reboot
¡Felicitaciones, ya has terminado y puedes empezar a crear máquinas virtuales! Esto no ha sido tan difícil, ¿verdad?

Virtual Machine Manager (virt-manager)

El Virtual Machine Manager (virt-manager) es una interfaz gráfica que puedes usar para crear y configurar tus máquinas virtuales, crear instantáneas y todo tipo de cosas.

Figure 1 - Virtual Machine Manager on Debian Buster MATE Desktop
Figura 1 - Virtual Machine Manager en Debian Buster MATE Desktop

Virtual Machine Manager es lo que necesitas para crear, configurar e interactuar con tus máquinas virtuales. Se puede usar para monitorizar recursos como el uso de la CPU y otras cosas. No quiero entrar demasiado en detalles, digamos que hay mucho que puedes hacer con él, y es posible que quieras leer algunos tutoriales avanzados. Por ahora, vamos a lo simple y veamos qué necesitamos para crear una VM.

Creando nuestra primera VM Aún conservo una imagen de instalación de Debian Stretch, que voy a usar en este escenario. Puedes montar archivos .iso directamente en máquinas virtuales similares a VMware y otros hipervisores. Solo hay un detalle que no estás de más que conozcas: por defecto, virt-manager busca todas las imágenes en /var/lib/libvirt/images. Utiliza esto por defecto para todas las imágenes, tanto tus discos duros, como los archivos ISO que desees montar. Puede agregar más almacenamiento si quieres, pero por ahora, conservaremos este y copiaremos la imagen de Debian Stretch que tengo en esta carpeta para que sea localizada directamente. Después de esto, haremos clic en el botón de la esquina superior izquierda de nuestro Virtual Machine Manager para crear una nueva VM. Se abrirá un asistente que te guiará a través de todo el proceso.

Figure 2 - Setting up a new VM with virt-manager is very easy
Figura 2: Configurar una nueva máquina virtual con virt-manager es muy fácil

Figure 3 - Selecting Debian 9 netinstall image as CDROM
Figura 3 - Seleccionando la imagen netinstall de Debian 9 como CDROM

Figure 4 - I chose 2 CPUs to show that VMs can handle multiple cores
Figura 4: Elegí 2 CPU para demostrar que las máquinas virtuales pueden manejar múltiples núcleos

Figure 5 - I only want a small test VM so 8GB is enough disk space
Figura 5: Solo quiero una pequeña máquina virtual de prueba, así que 8 GB es suficiente como espacio en disco

Figure 6 - Give the VM a name and we’re done
Figura 6: Asigna un nombre a la máquina virtual y listo.

Figure 7 - The VM starts and boots the installer image for Debian 9
Figura 7 - La VM inicia y arranca la imagen del instalador para Debian 9

Figure 8 - Going though the standard setup and install MATE Desktop
Figura 8: Pasar por la configuración estándar e instalar el escritorio MATE

Figure 9 - Debian Stretch MATE Desktop running in a VM
Figura 9: El escritorio Mate en Debian Stretch ejecutándose en una VM

Todo el proceso es bastante fácil y directo. Y como podemos ver, incluso una instalación de un entorno de escritorio gráfico es bastante sencilla y puede usarse sin problemas. Por otro lado, también podrías usar una simple instalación de terminal y conectarte a tu VM a través de SSH.

Instalar una VM con Windows

Instalar Windows es parecido, pero tiene algunos matices. Mientras que Linux es bastante factible a la hora manejar sistemas virtuales y ser un sistema virtual en sí mismo, Windows no es tan bueno con estas cosas, y aunque podríamos instalar una máquina Windows de la misma manera que lo hicimos con el sistema Linux, el rendimiento no sería tan bueno, ya que Windows no maneja la virtualización lo suficientemente bien. Para esto, es mejor instalar Windows directamente con soporte de controladores para la virtualización, especialmente para que KVM tenga el mejor rendimiento posible. En primer lugar, necesitamos descargar algunos controladores. Afortunadamente para nosotros, el proyecto Fedora se encarga de la mayoría de las cosas, y simplemente tenemos que descargar una imagen precompilada para todos los controladores que necesitamos. En https://bit.ly/2s3rAUK, hay varios enlaces de imágenes estables y las imágenes más recientes con los controladores necesarios, ya sea como un CD o incluso como una imagen de disquete para descargar. Yo descargué la imagen CD estable que en el momento de escribir este artículo era: virtio-win-0.1.171.iso y la coloqué en la carpeta de imágenes como he explicado anteriormente. A continuación, podemos empezar a crear una nueva máquina virtual igual que la que hicimos con Linux, excepto con la última pantalla donde verificaremos la opción "Customize configuration before install". Aquí, necesitamos cambiar algunas configuraciones de hardware para la VM. Comenzamos agregando nuevo hardware, donde "Storage" ya debería estar seleccionado. Cambiamos el tipo de dispositivo a un dispositivo CDROM y seleccionamos nuestra imagen virtual que tiene todos los controladores.

Figure 10 - Make sure to select to customize configuration
Figura 10: Asegúrate de seleccionar la configuración personalizada.

Figure 11 - Add a new CDROM device with virtio ISO
Figura 11 - Añadir un nuevo dispositivo CDROM con virtio ISO

A continuación, necesitamos ajustar parte del hardware existente; en concreto, nuestro adaptador de red (NIC) y el disco que queremos usar. Ambos dispositivos tienden a ser lentos en este tipo de virtualización con Windows, especialmente el rendimiento del disco, que en mi caso se ha convertido en un problema continuo bajo KVM. Animo a cualquiera que vaya a usar máquinas virtuales de Windows (servidor o cliente) a indagar sobre este tema, estoy abierto a cualquier opción o sugerencia para mejorar el rendimiento.

Figure 12 - NIC should be Device model: virtio for best performance
Figura 12: NIC debe ser un modelo de dispositivo: virtio para un mejor rendimiento

Figure 13 - Without VirtIO Disk bus the disk speed might be as slow as 1MB/sec
Figura 13: Sin el bus de disco VirtIO, la velocidad del disco podría llegar a ser tan lenta como 1 MB/seg.

El adaptador de red debe cambiarse al modelo de dispositivo virtio para obtener el mejor rendimiento. Lo mismo ocurre con el bus de disco de nuestro disco duro virtual. En las opciones de rendimiento, debe configurar el modo de caché en "none". Esto debería aumentar el rendimiento de la escritura, que es el mayor problema de los hosts de Windows. El formato de almacenamiento qcow2 es el predeterminado para las máquinas virtuales, pero hay quien recomienda usar "raw" como formato de almacenamiento. Aunque esto puede aumentar el rendimiento, también elimina algunas características, como las instantáneas de las máquinas virtuales, así que asegúrate de no necesitarlas. Finalmente, haz clic en el botón "Begin Installation" en la esquina superior izquierda de la ventana de configuración, y KVM iniciará nuestra nueva VM y arrancará el CD de Windows.

Figure 14 - Windows doesn’t know how to handle VirtIO disks
Figura 14: Windows no sabe cómo manejar discos VirtIO

Figure 15 - Installing additional drivers during Windows Setup
Figura 15 - Instalación de controladores adicionales durante la instalación de Windows

Cuando inicies por primera vez la configuración de Windows y vayas a seleccionar el disco duro en el que quieres instalar Windows, verás que la lista está completamente vacía. Esto se debe al hecho de que Windows no tiene ningún controlador para las unidades de disco basadas en VirtIO. Una característica de Windows muy utilizada en Windows 95 o 98, pero prácticamente olvidada actualmente, es necesaria para que todo funcione: la instalación de controladores adicionales durante la instalación de Windows Para esto, selecciona el botón "Load drivers" en la esquina inferior izquierda de la ventana de instalación y navega hasta el CD que montamos en la segunda unidad de CD. Dirígete a la carpeta "viostor" y luego al sistema operativo y la arquitectura que desees instalar. En mi caso es w10/amd64, ya que instalé Windows 10 en una placa de 64 bits (ODROID-H2). Si tu sistema operativo no está en la lista, elige uno que sea similar, debería funcionar de todos modos. Tras instalar el controlador, la configuración encontró el disco duro y pude continuar instalando Windows como de costumbre. Tras completar la configuración y reiniciar el sistema, Windows se cargó con normalidad, pero se detuvo nuevamente cuando intentó conectarse a Internet. No instalé los controladores de la red cuando instalé los controladores del disco duro. Para ser honesto, no sé si podría haberlo hecho, y no lo intenté. Probablemente podría haber instalado todos los controladores necesarios en aquel momento, pero no es importante ya que puedes continuar sin ellos e instalar los controladores más tarde.

Figure 16 - After installing drivers for VirtIO disk bus Windows found the HDD
Figura 16 - Después de instalar los controladores para el bus de disco VirtIO, Windows encontró el HDD

Figure 17 - The network was an afterthought for me
Figura 17 - La red fue algo a posteriori

Una vez que Windows esté en funcionamiento, simplemente navega hasta Sistema → Administrador de dispositivos en Windows, y encontrará los dispositivos donde faltan las unidades. Haz clic derecho sobre ellos y selecciona actualizar controladores, luego navega hasta el CD con los controladores virtio. No necesitas seleccionar la carpeta correcta de los controladores, ya que Windows los encontrará por sí solo.

Figure 18 - Windows booted up just fine even without network
Figura 18: Windows arrancó bien incluso sin red

Figure 19 - Installing missing drivers; just select the CD Windows does the rest
Figura 19 - Instalando de controladores que faltan; simplemente selecciona el CD y Windows hace el resto

Figure 20 - Windows will ask if it’s suppose to install the driver
Figura 20: Windows te preguntará si debes instalar el controlador

Figure 21 - Installing PCI Device Balloon Driver
Figura 21 - Instalación del controlador Balloon del dispositivo PCI

Instalar el Balloon Driver “PCI Device” suscita cirta duda. Algunas personas afirman que el sistema funciona mejor sin él, pero te dejaré que decidas tú mismo. Lo que hace es llenar la RAM con un pseudo proceso, y dependiendo de la RAM que necesite el sistema operativo host o el sistema operativo invitado para ejecutar las aplicaciones, se expande o se reduce su tamaño, y con ello permite que el host o el invitado utilicen más RAM, dependiendo de sus necesidades. Llegado a este punto, Windows debería estar funcionando y debería comportarse como cualquier otra máquina virtual de Windows.

Figure 22 - Now we can watch Windows doing what Windows does best
Figura 22: Ahora podemos ver como Windows hace lo que mejor sabe hacer

No obstante, puede instalar controladores adicionales. Spice es una interfaz gráfica para conectarte a la pantalla de la VM. En lugar de usar VNC, como otros hipervisores, Spice es usado por defecto en QEMU. Es más rápido y responde mejor que VNC. Para Windows hay herramientas especiales para invitados que pueden mejorar los gráficos y otras características de Windows. Verlo como si fuera VMWare o VirtualBox como herramientas/ampliaciones para invitados solo para QEMU/Spice. Puedes descargarlas e instalarlas desde https://www.spice-space.org/download/binaries/spice-guest-tools/. Puedes comprobar si está instalado correctamente verificando tu adaptador de gráficos tras la instalación de spice-guest-tools.

Figure 23 - Red Hat QXL controller is the new GPU driver for your VM with spice-guest-tools installed
Figura 23: el controlador Red Hat QXL es el nuevo controlador de GPU para tu VM con herramientas de invitado spice instalada

Hay una característica de la que quiero hablar, ya que también se ha utilizado en otros hipervisores: instantáneas. El Virtual Machine Manager puede manejar instantáneas de máquinas virtuales muy bien, igual que VMWare, o VirtualBox o cualquier otro hipervisor. Simplemente abre la pestaña Instantánea en tu VM, haga clic en el símbolo más y crea una instantánea.

Figure 24 - Creating a new Snapshot for our Windows VM
Figura 24: Creación de una nueva instantánea para nuestra VM de Windows

Figure 25 - Snapshot details - you can have multiple snapshots for one machine
Figura 25: Detalles de la instantánea: puedes tener varias instantáneas para una máquina

Las instantáneas son una buena manera de volver a un estado anterior, lo que las hace esencial a la hora de probar cosas nuevas que podrían afectar el sistema (por ejemplo, la actualización del sistema operativo), ten en cuenta que las instantáneas pueden reducir el rendimiento general y aumentar mucho el uso del disco. Supongamos que tiene una VM con dos discos: uno para el sistema operativo y otro con un tamaño de 20 GB como almacén de datos. Rellena el disco de datos al máximo (20 GB) y realiza una instantánea. Luego intercambia todos los datos en el disco de datos. Si verificas en el sistema host, donde se encuentra tu archivo qcow2 del disco de datos, notarás que el tamaño del archivo ha aumentado aproximadamente 40 GB. Aunque el límite de tamaño del disco es de 20 GB, ahora necesita 20 GB adicionales para almacenar la diferencia entre la instantánea y los nuevos datos. Ten esto en cuenta a la hora de trabajar con instantáneas, y también que las instantáneas solo deberían ser una solución temporal, no una forma de organizar o respaldar tus datos.

Hasta la próxima

En el siguiente artículo sobre este tema, hablaré de características avanzadas, como las agrupaciones de almacenamiento compartido y la migración en tiempo real de máquinas virtuales de un host a otro, lo que significa mover una VM mientras se ejecuta de un PC a otro sin interrupción. También quiero presentar "virsh", que es la herramienta de línea de comandos para libvirt, y también mostraré cómo puedes conectarte a tus hosts de virtualización desde un sistema remoto, para que no necesites una instalación de escritorio para ejecutar tus máquinas virtuales.

Be the first to comment

Leave a Reply