Virtualization Tools, más conocida como Virt Tools, es una colección de seis herramientas de virtualización de código abierto creadas por varios colaboradores para hacer del mundo de la virtualización un lugar mejor.
1_virttools.jpg
(Bryant Son, CC BY-SA 4.0)
Algunas de las herramientas, como KVM y QEMU, podrían ser familiares para los entusiastas de Linux, pero herramientas como libvirt y libguestfs probablemente lo sean menos.
En caso de que prefieras aprender viendo vídeos que leyendo, he creado una versión en vídeo de este artículo, a la que puedes acceder en YouTube.
Antes de recorrer las herramientas, es una buena idea conocer alguna terminología esencial de la virtualización. Obtuve muchas de estas definiciones de Wikipedia, con páginas enlazadas en la tabla.
Término | Definición |
---|---|
Virtualización | En informática, la virtualización se refiere al acto de crear una versión virtual (en lugar de física) de algo, incluyendo plataformas virtuales de hardware informático, dispositivos de almacenamiento y recursos de red informática. |
Emulador | Un emulador es un hardware o un software que permite que un sistema informático (llamado anfitrión) se comporte como otro sistema informático (llamado invitado). |
Máquina virtual (VM) | También conocidas como «máquinas invitadas», son emulaciones de ordenadores reales de hardware físico. |
Hosts | En la virtualización de hardware, un ordenador en el que un hipervisor ejecuta una o más VMs. |
Hipervisor | Es el software, firmware o hardware del ordenador que crea y ejecuta una VM. |
Kernel | Es un programa informático que se encuentra en el núcleo del sistema operativo de un ordenador y que tiene un control total sobre todo el sistema. |
Daemon | Es un programa informático que se ejecuta como un proceso en segundo plano, en lugar de estar bajo el control directo de un usuario interactivo. |
Esta tabla resume cada Herramienta Virt, incluyendo la información de la licencia y los enlaces al sitio web y al código fuente de cada herramienta. Gran parte de esta información proviene del sitio web de Virt Tools y del sitio de cada herramienta.
Nombre | Qué es | Licencia | Código fuente |
---|---|---|---|
Kernel-basado en el núcleo (KVM) | Un módulo de virtualización en el núcleo de Linux que permite al núcleo funcionar como un hipervisor | GNU GPL o LGPL | Código fuente |
Quick Emulador (QEMU) | Un emulador y virtualizador de máquinas genérico y de código abierto | GPLv2 | Código fuente |
Libvirt | Una biblioteca y demonio que proporciona una de código abierto para gestionar hosts de virtualización | GNU | Código fuente |
Libguestfs | Un conjunto de herramientas para acceder y modificar imágenes de disco de VM | LGPL, GPL | Código fuente |
Virt-manager | Una interfaz de usuario de escritorio para gestionar máquinas virtuales a través de libvirt | GPLv2+ | Código fuente |
Libosinfo | Proporciona una base de datos de información sobre las versiones del sistema operativo para ayudar a configurar de forma óptima el hardware al desplegar las máquinas virtuales | LGPLv2+ | Código fuente |
Kernel-(KVM)
2_kvm.jpg
(Bryant Son, CC BY-SA 4.0)
KVM es una solución de virtualización completa para Linux en hardware que contiene extensiones de virtualización. KVM proporciona la virtualización de hardware para una amplia variedad de sistemas operativos invitados, incluyendo Linux, Windows, macOS, ReactOS y Haiku. Usando KVM, puedes ejecutar múltiples VMs en imágenes de Linux o Windows no modificadas. Cada VM tiene hardware virtualizado privado: una tarjeta de red, un disco, un adaptador de gráficos, etc.
La mayoría de las veces, no interactuará directamente con KVM. En su lugar, debe utilizar QEMU, virt-manager u otra herramienta de gestión de la virtualización para aprovechar KVM.
Puede encontrar la documentación completa en el sitio web de KVM, así como acceder a su código fuente.
Emulador rápido (QEMU)
3_qemu.jpg
(Bryant Son, CC BY-SA 4.0)
QEMU es un emulador y virtualizador de máquinas genérico y de código abierto. Cuando se utiliza como emulador, QEMU puede ejecutar sistemas operativos y programas hechos para una máquina (por ejemplo, una placa ARM) en una máquina diferente (por ejemplo, su propio PC x86_64). Cuando se utiliza como virtualizador, QEMU consigue un rendimiento casi nativo al ejecutar el código invitado directamente en la CPU anfitriona utilizando KVM.
QEMU es compatible con múltiples sistemas operativos, y su proceso de instalación es tan fácil como ejecutar unos simples comandos; aquí puedes ver cómo instalar QEMU en macOS con Homebrew.
3_1_qemuinstall.jpg
(Bryant Son, CC BY-SA 4.0)
Después de instalarlo, aprende a usarlo leyendo su documentación, y también puedes acceder a su código fuente.
Libvirt
4_libvirt.jpg
(Bryant Son, CC BY-SA 4.0)
Libvirt es una librería y demonio que proporciona una API estable de código abierto para gestionar hosts de virtualización. Se dirige a múltiples hipervisores, incluyendo QEMU, KVM, LXC, Xen, OpenVZ, VMWare ESX, VirtualBox, y más.
Otra cosa interesante sobre libvirt es que KubeVirt, un proyecto de código abierto para la creación y gestión de máquinas virtuales dentro de la plataforma Kubernetes, utiliza en gran medida Libvirt. (Cubriré KubeVirt en un futuro artículo.) Libvirt es un proyecto interesante para explorar, y puedes encontrar una plétora de información en su sitio web oficial, así como descargar su código fuente.
Libguestfs
5_libguestfs.jpg
(Bryant Son, CC BY-SA 4.0)
Libguestfs es un conjunto de herramientas para acceder y modificar imágenes de disco de VM. Puedes usarlo para ver y editar archivos dentro de los invitados; programar cambios en las VMs; monitorizar las estadísticas de uso/libertad de disco; crear invitados, máquinas físicas a virtuales (P2V), o virtuales a virtuales (V2V); realizar copias de seguridad; clonar VMs; construir VMs; formatear discos; cambiar el tamaño de los discos; y mucho más. Lo he estado usando recientemente mientras trabajaba en un proyecto basado en KubeVirt llamado OpenShift Virtualization, del que puedes aprender más en mi video tutorial.
El sitio web oficial de Libguestfs contiene una extensa documentación sobre cómo usar cada comando, y también puedes descargar su código fuente en GitHub.
Virt-manager
6_virtualmanager.jpg
(Bryant Son, CC BY-SA 4.0)
Virt-manager es una interfaz de usuario de escritorio para gestionar VMs a través de libvirt. Se dirige principalmente a las VMs KVM pero también gestiona Xen y LXC. También incluye la herramienta de aprovisionamiento de línea de comandos virt-install. Piensa en virt-manager como una herramienta de gestión fácil de usar para tus máquinas virtuales. Por ejemplo, puede utilizar virt-manager para ejecutar un entorno Microsoft Windows en una estación de trabajo Linux o viceversa.
El código fuente de virt-manager está disponible en GitHub y la documentación está en su sitio web. En este momento, virt-manager sólo está disponible para plataformas Linux.
Libosinfo
7_libosinfo.jpg
(Bryant Son, CC BY-SA 4.0)
Libosinfo proporciona una base de datos con información sobre las versiones del sistema operativo para ayudar a configurar el hardware al desplegar las máquinas virtuales. Incluye una librería en C para consultar la información de la base de datos, que también es accesible desde cualquier lenguaje soportado por la introspección GObject. Como se puede adivinar, libosinfo es más bien un bloque de construcción para permitir la funcionalidad de un sistema operativo, pero bastante importante.
El código fuente de libosinfo está disponible en GitLab, y su documentación se puede encontrar en su sitio web.