Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

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


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.




Una máquina virtual o VM es un concepto clásico de informática aplicado a la virtualización de hardware que se utiliza para simular sistemas de computación, normalmente en un contexto de pruebas de software. Existen numerosas herramientas de software que permiten el funcionamiento de varios sistemas huéspedes en un sistema host común,

Virtualización de hardware

Con el término virtualización de hardware se hace referencia a tecnologías que ponen a disposición componentes de hardware a través de un software con independencia de su soporte físico. El ejemplo clásico de la virtualización de hardware es la máquina virtual (MV).

Una máquina virtual es un ordenador virtual que se comporta como uno físico, tanto en lo que respecta al hardware como al sistema operativo. Las máquinas virtuales funcionan como sistemas alojados virtuales en uno o varios sistemas físicos llamados equipos anfitriones o host.En la virtualización de hardware es un hipervisor el que crea la capa de abstracción entre la base física y el sistema virtual

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.

KVM (Kernel-based Virtual Machine) es un modulo de virtualización para el núcleo de Linux, que le permite a este hacer las veces de un hipervisor, permitiendo así virtualizar sistemas operativos variados como Linux, BSD, Solaris, Windows, Haiku, MacOS, entre muchos otros.

Inicialmente creado para correr sobre arquitectura x86, ha sido portado para correr sobre arquitecturas adicionales como ARM, AI-64, PowerPC, etc.

En la actualidad se consolida como una de las opciones de virtualización más destacadas del mercado, compitiendo fuertemente con alternativas como Xen o VirtualBox. (KVM vs VirtualBox)

¿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. 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, 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

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

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


  •  (libvirt-daemon-system  - libvirt)
  • virt-manager - una GUI para libvirt)
  • 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.

¿Qué es QEMU?

QEMU es un emulador de máquinas y virtualizador genérico open source. Cuando se usa como emulador de máquinas, QEMU puede ejecutar sistemas operativos y programas compilados para una arquitectura (por ejemplo un sistema ARM) en una máquina diferente (por ejemplo una PC), tal como lo demostré en el artículo Emular Raspberry Pi con QEMU y KVM en CentOS 6. Al utilizar traducción dinámica, alcanza muy buena performance.

Cuando se utiliza como virtualizador, QEMU alcanza casi la performance nativa ya que ejecuta el código guest directamente en el CPU host. QEMU soporta virtualización cuando se ejecuta bajo el hipervisor Xen o a través del módulo del kernel KVM en Linux. Cuando se usa con KVM, QEMU puede virtualizar sistemas guest x86, PowerPC y S390, entre otros.

QEMU aprovecha KVM cuando ejecuta una arquitectura guest que coincide con la arquitectura host. Por ejemplo, cuando se utiliza qemu-system-x86 sobre un procesador x86 compatible, se aprovecha la aceleración de KVM (beneficiando tanto al sistema guest como al host), ya que el código guest se ejecuta directamente en el host (sin traducción).

Anteriormente, KVM mantenía su propio fork de QEMU llamado «qemu-kvm» para soportar virtualización por hardware en arquitecturas x86. Actualmente está deprecated ya que QEMU ha incorporado la funcionalidad necesaria (ver http://wiki.qemu.org/KVM).

¿Qué es libvirt?

libvirt (The virtualization API) es un conjunto de herramientas para interactuar con las capacidades de virtualización de las versiones recientes de Linux (y otros sistemas operativos), liberado bajo la licencia «GNU Lesser General Public License».

libvirt soporta un gran conjunto de tecnologías entre las que se destacan:

  • KVM/QEMU
  • Xen (en Linux y Solaris)
  • LXC
  • OpenVZ
  • El kernel paravirtualizado User Mode Linux
  • VirtualBox
  • VMware ESX y GSX
  • VMware Workstation y Player
  • Microsoft Hyper-V
  • IBM PowerVM
  • El hipervisor Parallels
  • Redes virtuales usando bridging, NAT, VEPA y VN-LINK
  • Almacenamiento en discos IDE/SCSI/USB, FibreChannel, LVM, iSCSI y NFS

libvirt permite administrar hosts de forma remota utilizando encriptación TLS y certificados x509; autenticación con Kerberos y SASL; control de acceso local mediante PolicyKit; Zeroconf utilizando Avahi; administración de máquinas virtuales, redes y almacenamiento; y una API cliente portable para Linux, Solaris y Windows.

Instalando KVM

Para dar inicio con el proceso, lo primero que debemos hacer es verificar que nuestro procesador soporta las instrucciones necesarias para virtualizar con KVM. Para hacer esto ejecutamos el siguiente comando:

egrep -c '(svm|vmx)' /proc/cpuinfo


Si al ejecutar el anterior comando obtenemos un resultado igual o superior a 1, quiere decir que nuestro CPU es capaz de soportar las instrucciones y tecnología necesaria para virtualizar.

Dado lo anterior procedemos a instalar los paquetes necesarios por medio del siguiente comando:

sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager

Una vez instalados los paquetes podemos verificar que el proceso de instalación ha sido exitoso de la siguiente manera:

sudo kvm-ok

Si el proceso se ha efectuado de manera correcta, deberíamos obtener la siguiente salida:

INFO: /dev/kvm exists KVM acceleration can be used

En lo personal, recomiendo en este punto reiniciar el sistema para asegurar que todos los demonios y subsistemas estén corriendo adecuadamente.

A continuación creamos un usuario con los permisos necesarios para poder instalar y manipular maquinas virtuales en nuestro sistema. Para lograrlo simplemente ejecutamos el siguiente comando:

sudo adduser [nombre de usuario] libvirt

Después debes añade tu usuario a los grupos kvm y libvirtd:

adduser `id -un` kvm

adduser `id -un` libvirtd

Ahora estamos listos para verificar la instalación, para hacerlo simplemente ejecutamos lo siguiente:

virsh -c qemu:///system list


Una excelente y completísima Guía Oficial de RedHat 



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, 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.

Fuente:
https://www.ionos.es/digitalguide/servidores/know-how/que-es-kvm/


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.