# KVM – Virtualización en el núcleo de Linux

En el contexto empresarial y cuando se usan servidores profesionales, la virtualización ya es imprescindible. Gracias a esta tecnología, pueden ejecutarse **varios sistemas operativos invitados** en un mismo ordenador físico, lo cual tiene muchas ventajas, entre las que destacan las siguientes:

- Los sistemas pueden **ejecutarse por separado según el tipo de tarea** que realicen sin necesidad de *hardware* adicional. Podrían ejecutarse, por ejemplo, un servidor de correo electrónico, uno de archivos y otro de aplicaciones.
- Para protegerlos ante posibles cambios, los sistemas invitados pueden **congelarse fácilmente**, por así decirlo, **y luego volverse a restaurar**.
- La **migración a nuevos dispositivos de *hardware*** requiere poco tiempo.
- Los sistemas invitados son **escalables a todos los niveles**, por lo que permiten reaccionar ante las fluctuaciones de la tasa de utilización.
- Todos los sistemas invitados tienen una **base de *hardware* común**, previniendo así posibles conflictos entre *drivers*.

Mientras que es raro encontrar [Linux](https://www.ionos.mx/digitalguide/servidores/know-how/linux-una-alternativa-a-windows-de-bajo-coste/ "Linux: una alternativa a Windows de bajo coste"), el sistema operativo de código abierto, en ordenadores de sobremesa y de usuarios particulares, en el ámbito de los servidoresm hace mucho que se ha extendido. De la misma forma, ha adquirido también un papel muy importante como base para estrategias de virtualización.

## ¿Qué es la KVM de Linux?

La llamada Kernel-based Virtual Machine (KVM) fue presentada por la compañía Qumranet en el año 2000 y a principios de 2007 ya había sido incluida en el *kernel* de Linux 2.6.20. El año siguiente, RedHat, distribuidor de Linux, adquirió Qumranet. Para poder seguir desarrollando esta tecnología, RedHat fundó, junto con IBM, el proyecto Open Virtualization Alliance (OVA), en el que participaron empresas como Suse, Intel y HP.

KVM está estrechamente relacionado con el *software* de emulación QEMU. Este último suele ofrecer funciones de virtualización de *hardware*, mientras que Linux KVM se encarga de gestionar la asignación de recursos a los sistemas invitados. Por eso, es habitual toparse también con el término KVM/QEMU. Puesto que **KVM es un componente esencial de Linux**, no puede integrarse en dispositivos Windows. Sin embargo, Windows sí puede ejecutarse mediante la solución de virtualización, al igual que la mayoría de sistemas Unix, como Linux, Solaris y BSD. KVM está incluido por defecto en la mayoría de distribuciones Linux, pero debe ser activado primero.

## El funcionamiento de Linux KVM al detalle

Para entender cómo funciona esta máquina virtual, es necesario conocer en primer lugar las [virtualización](https://www.ionos.mx/digitalguide/servidores/configuracion/virtualizacion/ "Virtualización"). La virtualización es la ejecución de **uno o varios sistemas operativos completos (sistemas invitados) en un mismo dispositivo anfitrión (*host*)**. El ordenador anfitrión requiere entonces servicios de *hardware* adicionales: estos pueden, o bien emularse mediante *software*, o bien estar ubicados en otros dispositivos físicos y ser controlados mediante un [hipervisor](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-un-hypervisor/ "¿Qué es un hypervisor?"), es decir, una capa de gestión y traducción entre el *hardware* real y el virtual. Según el tipo de virtualización, puede ser necesario traducir los requerimientos para el *hardware* real o puede bastar con la asignación de las acciones necesarias como, por ejemplo, un cálculo en el procesador.

Existen los siguientes tipos de virtualización:

- **Virtualización completa**: el *hardware* es emulado en su totalidad mediante *software*. De este modo, no es necesaria la interacción con el *hardware* real, lo cual permite prescindir de los *drivers* correspondientes. En comparación con el resto, es la variante más lenta.
- **Paravirtualización**: el sistema invitado interactúa directamente con el hipervisor y necesita para ello *drivers* especializados.
- **Paravirtualización asistida por *hardware*:** la asistencia mediante *hardware* está integrada ya en el procesador, con lo que aumenta la eficiencia y se reduce el esfuerzo de adaptación que han de hacer los sistemas invitados. Los procesadores modernos de Intel (Intel-VT-x) y AMD (AMD-V) ofrecen esta función, aunque quizá necesite activarse en BIOS/UEFI.

Además, existen dos tipos de hipervisores:

- **Tipo 1 (*bare metal*)**: el hipervisor se ejecuta directamente en el *hardware* utilizado, sin estar integrado en un sistema operativo.
- **Tipo 2 (*hosted*)**: el hipervisor está integrado en el sistema operativo anfitrión y se activa desde él.

Linux KVM pertenece al segundo tipo de supervisores y utiliza la paravirtualización asistida por *hardware*. Lo que lo hace especial, sin embargo, es que está integrado directamente en el *kernel*.

---

### Nota

*Kernel* es el término inglés equivalente a *núcleo*: estamos hablando, por lo tanto, del ***núcleo* de un sistema operativo**, en el que están integradas las funciones básicas del sistema, como, por ejemplo, el acceso al *hardware* y la asignación de tiempo de computación a los procesadores en un sistema *multitasking*. El acceso al *kernel* está especialmente protegido (*kernel mode*) y las solicitudes que llegan hasta él reciben un tratamiento privilegiado en los procesadores.

---

Debido a su vinculación tan directa con el núcleo, se debate si este sistema tendría incluso características propias del primer tipo de hipervisores.

## ¿Qué componentes forman la Kernel-based Virtual Machine?

La KVM en su conjunto está formada por varios elementos:

- **Extensión del *kernel***: contiene la extensión propiamente dicha, *kernel.ko*. Se trata de la capa de traducción entre el *hardware* real y el virtual. Además, incluye los módulos *kvm-amd* y *kvm-intel*, adaptados a las características de los procesadores.
- **Libvirt**: es la interfaz de programación (API) para comunicarse con las máquinas virtuales, que a través de ella pueden ser controladas y gestionadas. Libvirt ofrece, además, herramientas como una línea de comandos denominada *virsh* y la interfaz gráfica Virtual Machine Manager.
- **QEMU**: se trata, principalmente, de un programa autónomo para emular ordenadores y gestionar máquinas virtuales. Linux KVM utiliza esta función para emular *hardware* y mejora así la velocidad mediante paravirtualización. Muchas distribuciones incluyen ambos componentes en un mismo paquete de instalación.
- **Kvmtool**: una alternativa a QEMU que requiere menos recursos, pero que aún no ha podido desbancar a su contrincante.
- **VirtIO *drivers***: *drivers* especiales para sistemas invitados que se ajustan a los requerimientos del hipervisor y hacen posible la paravirtualización.

## Ámbitos de aplicación de KVM

La Kernel-based Virtual Machine se utiliza con especial frecuencia **cuando se opera con servidores profesionales dedicados**. En 2017, un estudio sobre seguridad realizado por la oficina federal alemana de seguridad de la información (BSI) definió la KVM como la solución de virtualización más importante en el ámbito de las herramientas *open source* o de código abierto.

Además, Linux KVM tiene relevancia adicional porque puede integrarse como hipervisor en el popular servicio de *software* en la nube [OpenStack](https://www.ionos.mx/digitalguide/servidores/herramientas/que-es-openstack/ "¿Qué es OpenStack?").

## Ventajas e inconvenientes de KVM

Para finalizar, presentamos brevemente algunas ventajas y desventajas de esta herramienta de virtualización.

**Ventajas**:

- Sistema maduro y consolidado
- Incluido ya en la mayoría de distribuciones Linux
- Gratuito y de código abierto
- Con una única Kernel Virtual Machine real, lo cual garantiza el rendimiento y la estabilidad
- Desarrollado por compañías de prestigio
- Libvirt hace posible la administración automática

**Inconvenientes**:

- Solo disponible para sistemas Linux
- Requiere *hardware* de alto rendimiento para el ordenador anfitrión
- Es necesario un esfuerzo de familiarización para manejarlo
- La centralización del *hardware* aumenta el riesgo de pérdidas en caso de avería (*single point of failure*, que sin embargo puede compensarse con una buena estrategia de *backup*)

## Alternativas a la KVM de Linux

En el ámbito del *software* de código abierto y con funciones similares, **XEN** es la alternativa más importante. Se trata de una herramienta de virtualización que también está estrechamente relacionada con Linux, pero no se integra en el *kernel*.

Por su parte, en el mercado comercial, el consolidado fabricante **VMWare** ofrece alternativas de paravirtualización con sus servidores ESXi y de virtualización completa con su *workstation*. Para los usuarios particulares, además, VMWare Player es gratuito.

**Virtualbox** es otra alternativa de virtualización completa que puede utilizarse en todos los sistemas operativos habituales.

Microsoft también tiene una herramienta de paravirtualización para Windows: el sistema [Hyper-V](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-hyper-v/ "Qué es Hyper-V?"), que funciona de manera similar a la KVM de Linux. Dispone de un servidor Hyper-V de Windows dedicado y funciona de forma integrada en los sistemas operativos del servidor. Hiper-V también está incluido en las versiones Windows 10 Professional y Enterprise.

## En resumen

**La flexibilidad y la escalabilidad** son dos argumentos indiscutibles a favor de la virtualización. Los sistemas operativos invitados pueden así mantenerse sin consumir muchos recursos y ejecutarse con fines específicos. Si, además, se hacen copias de seguridad de los sistemas en otros soportes físicos de manera regular, el riesgo de pérdida en caso de avería prácticamente desaparece.

Si utilizas Linux en tu servidor, apenas te quedan razones para no considerar al menos KVM. Su integración en el núcleo del sistema y el prestigio del que gozan sus desarrolladores son muy buenas razones para decidirte a utilizar esta herramienta.


This is a markdown version of: [https://www.ionos.mx/digitalguide/servidores/know-how/que-es-kvm/](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-kvm/) for AI/LLM consumption.