Capítulo 5 - Introducción al hypervisor KVM

KVM es una solución de virtualización completa para procesadores basados en arquitecturas x86, concretamente las basadas en las extensiones de virtualización de los fabricantes INTEL y AMD (Intel VT y AMD-V respectivamente).

Se trata de una serie de instrucciones que descargan en los propios procesadores algunas tareas para poder compartir los recursos físicos entre las distintas máquinas virtuales.

Permite virtualizar distintos Sistemas Operativos sin necesidad de modificar sus kernels, como ocurría con la paravirtualización. Entre los Sistemas Operativos que puede virtualizar están las distintas distribuciones Linux, los distintos Sistemas BSD, Windows en sus distintas versiones, etc.

  • Características
    • Es una solución de virtualización completa, basada en arquitecturas x86. Aunque en la actualidad soporta otros tipos de procesadores.
    • KVM realmente es un módulo del kernel de Linux que permite a los procesos en espacio de usuario utilicen características de virtualización completa basada en hardware, convirtiendo al kernel de Linux en un hypervisor propiamente dicho.
    • Los módulos utilizados, según arquitectura son kvm-intel.ko y kvm-amd.ko
    • KVM es software libre (GPL y LGPL) y es componente del kernel de Linux desde la versión 2.6.20.
    • Hace uso de Qemu que es un emulador de procesadores basado en la traducción dinámica de binarios. Con él kvm puede emular un Sistema Operativo dentro de otro sin tener que reparticionar el disco duro. KVM lo usa como su hypervisor, y cuando trata de virtualizar arquitecturas x86 alcanza rendimientos cercanos al nativo ya que kvm hace uso de instrucciones de los propios procesadores.
    • KVM permite virtualizar distintos Sistemas Operativos sin necesidad de modificar sus kernels, como ocurría con la paravirtualización. Entre los Sistemas Operativos que puede virtualizar están las distintas distribuciones Linux, los distintos Sistemas BSD, Windows en sus distintas versiones, etc. Para ello hace uso de discos virtuales (imágenes).
    • Cada máquina virtual tiene su propio hardware virtualizado.

Entre las herramientas de gestión por línea de comandos nos encontramos:

  • virt-tools: virsh, virt-install, virt-clone, virt-convert
  • libguestfs: virt-p2v, virt-v2v, virt-sparsify, virt-sysprep, ...
  • qemu commands line.

Entre las herramientas gráficas de gestión nos encontramos:

Las más simples como puede ser

  • virt-manager.
  • kimchi

Los agrupados en entornos exclusivamente de clustering kvm o casi tenemos:

  • Proxmox VE
  • ganeti
  • OpenNode
  • oVirt

Los agrupados en herramientas que son más bien propiamente IAAS tenemos:

  • Openqrm
  • Openstack
  • Cloudstack
  • OpenNebula
  • Eucalyptus