La máquina virtual basada en el kernel ( KVM ) es un módulo de virtualización gratuito y de código abierto en el kernel de Linux que permite que el kernel funcione como un hipervisor . Se integró en el kernel principal de Linux en la versión 2.6.20, publicada el 5 de febrero de 2007. [ 1 ] KVM requiere un procesador con extensiones de virtualización de hardware , como Intel VT o AMD-V . [ 2 ] KVM también se ha portado a otros sistemas operativos como FreeBSD [ 3 ] e illumos [ 4 ] en forma de módulos de kernel cargables.
KVM fue diseñado originalmente para procesadores x86, pero desde entonces se ha portado a z/Architecture , [ 5 ] [ 6 ] PowerPC , [ 5 ] IA-64 , [ 5 ] y ARM . [ 7 ] [ 8 ] [ 9 ] El puerto IA-64 se eliminó en 2014. [ 10 ]
KVM admite la virtualización asistida por hardware para una amplia variedad de sistemas operativos invitados, incluidos BSD , Solaris , Windows , Haiku , ReactOS , Plan 9 , AROS , macOS e incluso otros sistemas Linux. [ 11 ] [ 12 ] Además, se sabe que Android 2.2, GNU/Hurd [ 13 ] ( Debian K16), Minix 3.1.2a, Solaris 10 U3 y Darwin 8.0.1, junto con otros sistemas operativos y algunas versiones más recientes de los mencionados, funcionan con ciertas limitaciones. [ 11 ]
Además, KVM proporciona soporte de paravirtualización para Linux, OpenBSD , [ 14 ] FreeBSD, [ 15 ] NetBSD , [ 16 ] Plan 9 [ 17 ] y Windows invitados usando la API VirtIO . [ 18 ] Esto incluye una tarjeta Ethernet paravirtual , un controlador de E/S de disco, [ 19 ] un controlador de globo y una interfaz gráfica VGA usando controladores SPICE o VMware .
Historia
Avi Kivity comenzó el desarrollo de KVM a mediados de 2006 en Qumranet , [ 20 ] una empresa emergente de tecnología [ 21 ] que fue adquirida por Red Hat en 2008. [ 22 ]
KVM apareció en octubre de 2006 [ 23 ] y se fusionó con la rama principal del kernel de Linux en la versión 2.6.20, publicada el 5 de febrero de 2007. [ 1 ]
KVM es mantenido por Paolo Bonzini. [ 24 ]
Interiores

KVM proporciona abstracción de dispositivos, pero no emulación de procesador. Expone la interfaz /dev/kvm , que un host en modo usuario puede utilizar para:
- Configure el espacio de direcciones de la máquina virtual invitada. El host también debe proporcionar una imagen de firmware (normalmente una BIOS personalizada al emular PC) que la máquina virtual invitada pueda usar para arrancar su sistema operativo principal.
- Alimente al invitado con E/S simulada.
- Mapea la pantalla de vídeo del invitado en el sistema anfitrión.
Originalmente, se proporcionó una versión derivada de QEMU para ejecutar máquinas virtuales invitadas y gestionar la emulación de hardware que no maneja el kernel. Esta funcionalidad se integró posteriormente en el proyecto principal. Actualmente existen numerosos monitores de máquinas virtuales (VMM) que pueden utilizar la interfaz KVM, como kvmtool, crosvm y Firecracker , además de numerosos VMM especializados desarrollados con frameworks como rust-vmm.
Internamente, KVM utiliza SeaBIOS como una implementación de código abierto de una BIOS x86 de 16 bits . [ 26 ]
Características
KVM ha sido compatible con vCPU intercambiables en caliente , [ 27 ] administración dinámica de memoria, [ 28 ] y migración en vivo desde febrero de 2007. [ 29 ] [ 30 ] También reduce el impacto que las cargas de trabajo intensivas en escritura de memoria tienen en el proceso de migración. [ 31 ]
Hardware emulado
KVM emula muy poco hardware, y en su lugar delega la emulación de dispositivos a una aplicación cliente de nivel superior como QEMU , crosvm o Firecracker .
KVM proporciona los siguientes dispositivos emulados:
Herramientas de gestión gráfica

- Kimchi : herramienta de gestión de virtualización basada en web para KVM.
- Administrador de máquinas virtuales : permite crear, editar, iniciar y detener máquinas virtuales basadas en KVM, así como migrar máquinas virtuales entre hosts mediante la función de arrastrar y soltar, tanto en caliente como en frío.
- Proxmox Virtual Environment es un paquete de gestión de virtualización de código abierto que incluye KVM y LXC . Cuenta con un instalador bare-metal, una interfaz gráfica de usuario (GUI) para gestión remota basada en web, una pila de clúster de alta disponibilidad (HA), almacenamiento unificado, red flexible y soporte comercial opcional.
- OpenQRM : plataforma de gestión para administrar infraestructuras de centros de datos heterogéneas.
- GNOME Boxes : interfaz de Gnome para administrar máquinas virtuales libvirt en Linux.
- oVirt : herramienta de gestión de virtualización de código abierto para KVM basada en libvirt.
- OpenNebula es una plataforma de computación en la nube de código abierto para gestionar recursos de infraestructura heterogéneos de centros de datos, nubes públicas y computación perimetral que se ejecutan en KVM, QEMU o LXC.
Licencias
El componente de modo kernel de KVM es parte del kernel de Linux , que a su vez está licenciado bajo la Licencia Pública General GNU, versión 2. [ 33 ]
Véase también
Referencias
- 1 2 "Núcleo de Linux 2.6.20, Sección 2.2. Soporte de virtualización a través de KVM" . kernelnewbies.org . 5 de febrero de 2007. Consultado el 16 de junio de 2014 .
- ↑ "Preguntas frecuentes sobre KVM: ¿Qué necesito para usar KVM?" . www.linux-kvm.org . Consultado el 24 de abril de 2026 .
- ↑ "Informe trimestral sobre el estado de FreeBSD: Portando Linux KVM a FreeBSD" . freebsd.org . Consultado el 24 de abril de 2026 .
- ↑ "KVM en illumos" . 15 de agosto de 2011.
- 1 2 3 "Linux_2_6_26" . kernelnewbies.org . 13-07-2008. 1.2. KVM portado a IA64, PPC y S390 . Recuperado el 23-08-2025 .
- ↑ "KVM: s390: backend de arquitectura para el módulo del kernel kvm" . git.kernel.org . 27 de abril de 2008. Consultado el 24 de abril de 2026 .
- ↑ "KVM/ARM: Un sistema de virtualización ARM de código abierto" .
- ↑ "Proyecto de código abierto KVM/ARM" . Archivado del original el 10 de marzo de 2013. Consultado el 1 de noviembre de 2017 .
- ↑ Christoffer Dall; Jason Nieh (2014). "KVM/ARM: Diseño e implementación del hipervisor Linux ARM". SIGARCH Comput. Archit. News . 42 (1). Conferencia internacional ACM sobre soporte arquitectónico para lenguajes de programación y sistemas operativos: 333– 348. doi : 10.1145/2654822.2541946 .
- ↑ "kernel/git/torvalds/linux.git: KVM: ia64: remove" . git.kernel.org . 2014-11-19 . Consultado el 2026-04-24 .
- 1 2 "KVM wiki: Estado de soporte para invitados" . Consultado el 27 de mayo de 2007 .
- ↑ "Ejecutar Mac OS X como invitado QEMU/KVM" . Consultado el 20 de agosto de 2014 .
- ↑ "estado" . Gnu.org . Consultado el 12 de febrero de 2014 .
- ↑ "Página de manual de OpenBSD virtio(4)" . Consultado el 4 de febrero de 2018 .
- ↑ "Paquetes binarios de virtio para FreeBSD" . Consultado el 29 de octubre de 2012 .
- ↑ "Página man de NetBSD virtio(4)" . Archivado del original el 13 de noviembre de 2019. Consultado el 15 de julio de 2013 .
- ↑ "plan9front" . Archivado del original el 22/07/2011 . Consultado el 11/02/2013 .
- ↑ "Una API para E/S virtual: virtio" . LWN.net . 11 de julio de 2007. Consultado el 16 de abril de 2014 .
- ↑ "Destino SCSI para KVM wiki" . linux-iscsi.org. 7 de agosto de 2012. Archivado del original el 5 de junio de 2020. Consultado el 12 de agosto de 2012 .
- ^ Kividad, Avi; Kamay, Yaniv; Laor, Dor; Lublin, Uri; Liguori, Anthony (junio de 2007). "KVM: el monitor de máquinas virtuales Linux" (PDF) . Actas del Simposio de Linux . vol. 1. Ottawa, Ontario, Canadá . págs. 225-230 .
- ↑ Avi Cavity (23 de abril de 2007). "Entrevista: Avi Kivity" . KernelTrap (Entrevista). Entrevistado por Jeremy Andrews. Archivado del original el 26 de abril de 2007.
- ↑ "Red Hat consolida su liderazgo en virtualización con la adquisición de Qumranet, Inc." (Comunicado de prensa). Red Hat . 4 de septiembre de 2008. Consultado el 16 de junio de 2015 .
- ↑ "KVM 15 equipado con migración en vivo" . IT World Canada News . 7 de marzo de 2007. Archivado del original el 28 de julio de 2019.
- ↑ Libby Clark (7 de abril de 2015). "Historias de éxito y consejos de Git del mantenedor de KVM, Paolo Bonzini" . Linux.com . Archivado del original el 15 de marzo de 2016. Consultado el 17 de junio de 2015 .
- ↑ Khoa Huynh; Stefan Hajnoczi (2010). "Discusión sobre el rendimiento de la pila de almacenamiento KVM/QEMU" (PDF) . IBM . Conferencia Linux Plumbers . Consultado el 3 de enero de 2015 .
- ↑ "SeaBIOS" . seabios.org. 21/12/2013. Archivado del original el 09/12/2020 . Consultado el 16/06/2014 .
- ↑ "Conexión en caliente de CPU virtuales con Red Hat Enterprise Virtualization Manager" . 16 de febrero de 2016.
- ↑ "Preguntas frecuentes - KVM" .
- ↑ "Lanzamiento de KVM-15 [ LWN.net ] " .
- ↑ "Migración - KVM" .
- ↑ "Daniel P. Berrangé » Archivo del blog » Análisis de técnicas para garantizar la finalización de la migración con KVM" .
- ↑ "La documentación definitiva de la API de KVM (máquina virtual basada en el kernel): la documentación del kernel de Linux" .
- ↑ "Reglas de licenciamiento del kernel de Linux — La documentación del kernel de Linux" . www.kernel.org . Archivado del original el 7 de marzo de 2020. Consultado el 6 de enero de 2020 .
Bibliografía
- Amit Shah (2 de noviembre de 2016). "Diez años de KVM" . lwn.net . Consultado el 10 de febrero de 2017 .
Enlaces externos
- Buenas prácticas para la máquina virtual basada en el kernel. Archivado el 6 de noviembre de 2019 en Wayback Machine , IBM, segunda edición, abril de 2012.
- Mejora del rendimiento de Virtio-blk , KVM Forum 2012, 8 de noviembre de 2012, por Asias He
- Wikibook QEMU y KVM
- crosvm - Monitor de máquinas virtuales de Chrome OS
- VMM Firecracker para KVM
- Software de emulación gratuito
- Software libre programado en C
- Software de virtualización gratuito
- Características del kernel de Linux
- Software Red Hat
- Software que utiliza la Licencia Pública General de GNU.
- Software de virtualización
- Software de virtualización para Linux