Informe laboratorio 1 kvm

20
UNIVERSIDAD DE TARAPACÁ ESCUELA UNIVERSITARIA DE INGENIERÍA INDUSTRIAL, INFORMÁTICA Y DE SISTEMAS Área de Ingeniería en Computación e Informática Informe Laboratorio Kernel-based Virtual Machine (KVM) Elaborado por : Profesor : Cátedra : Taller de Servicios en Red

Transcript of Informe laboratorio 1 kvm

UNIVERSIDAD DE TARAPACÁ

ESCUELA UNIVERSITARIA DE INGENIERÍA INDUSTRIAL, INFORMÁTICA Y DE SISTEMAS

Área de Ingeniería en Computación e Informática

Informe LaboratorioKernel-based Virtual Machine (KVM)

Elaborado por :

Profesor :

Cátedra : Taller de Servicios en Red

Arica, 4 de Mayo del 2012

Índice

Resumen....................................................................................................................................................3Introducción..............................................................................................................................................3I. Marco Teórico de la Virtualización.......................................................................................................4II. Kernel-based Vitual Machine (KVM)..................................................................................................5

2.1 Sobre KVM.....................................................................................................................................52.2 Instalación y configuración previa..................................................................................................72.3 Configuraciones para una Máquina virtual.....................................................................................82.4 Complementos para la virtualización............................................................................................13

Conclusiones...........................................................................................................................................15Bibliografía.............................................................................................................................................16

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 2

Resumen

El presente describe la experiencia realizada en laboratorio, que consistió en implementar KVM en una distribución Linux, en este caso Ubuntu. KVM es una herramienta de virtualización opensource.El informe inicia presentando el marco teórico acerca de la virtualización, luego se profundiza en el modo de operación de KVM, siguiendo con la instalación y configuración de KVM, y de una máquina virtual de prueba, finalizando con las conclusiones del tema.

Introducción

Una de las innovaciones más importantes de Linux es su transformación a hipervisor (o sistema operativo de otros sistemas operativos). Han aparecido una serie de soluciones de hipervisor que usan Linux como núcleo.

KVM (Kernel-based Virtual Machine) es una herramienta de virtualización open source que esta implementada como un módulo cargable en el kernel linux, convirtiendo a este último en hipervisor.

A continuación se describirán los aspectos teóricos de la virtualización, la instalación y configuración de KVM.

Objetivo General:

● Comprender y analizar la alternativa de virtualización KVM.

Objetivos Específicos:

● Implementar KVM en una máquina con el SO Ubuntu.● Virtualizar una máquina virtual.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 3

I. Marco Teórico de la Virtualización

Hoy en día existen diversos métodos de virtualización, de los cuales, se presentan los dos más conocidos a continuación:

Virtualización completa: Existe una capa entre el sistema operativo virtualizado y el hardware como un método para arbitrar el acceso. Esta capa se denomina hipervisor o Monitor de máquina virtual (del ingles Virtual Machine Monitor VMM). En este caso el sistema operativo invitado corre sin modificaciones. El problema es que se sacrifica el rendimiento.

Por otro lado el desarrollo de hardware actual trata de subsanar este problema. Tanto Intel como AMD en sus últimas gamas de procesadores implementan soporte por hardware para virtualización. En la Figura 1.1 se aprecia la arquitectura de este método, donde Mgmt, corresponde al administrador de los sistemas operativos invitados.

Figura 1.1: La virtualización completa utiliza un hipervisor para compartir el hardware subyacente

Paravirtualización: Es similar a la anterior, pero el hipervisor funciona de forma cooperativa. Esto es porque el sistema operativo invitado se entera que es virtualizado, así que cada sistema operativo invitado coopera con el hipervisor para virtualizar el hardware subyacente. La arquitectura de este método se observa en la figura 1.2.

Figura 1.2: La paravirtualización comparte el proceso con el SO alojado (Guest OS)

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 4

II. Kernel-based Vitual Machine (KVM)

En esta sección se tratan temas sobre KVM, seguido de su instalación y configuración, terminando con la explicación de KVM, mediante la utilización de AQEMU, que es un gestor de máquinas virtuales KVM.

2.1 Sobre KVM

Kernel-based Virtual Machine (KVM) representa la última generación en virtualización open source. El objetivo de sus creadores fue crear un hipervisor moderno, basado en la experiencia tecnológica de generaciones previas, utilizando el hardware moderno actualmente disponible. Aunque esto último tiene su precio, ya que KVM no puede operar sobre hardware que no disponga de Intel VT o AMD SVM.

KVM esta implementado como un módulo cargable en el kernel linux, convirtiendo a este último en hipervisor. El módulo esta disponible para versiones del kernel linux 2.6.20 o posterior.

Bajo el modelo KVM, cada máquina virtual es un proceso que corre sobre el scheduler de Linux. Un proceso estándar de Linux tiene dos modos de ejecución: Kernel y usuario. KVM agrega un tercer modo: modo invitado (que contiene su propio Kernel y modo de usuario).

KVM se compone de:● Un dispositivo controlador para manejar el hardware virtualizado: /dev/kvm● Un componente de espacio de usuario para emular el hardware. En este caso es un

proceso Qemu modificado, el cual provee de emulación para BIOS, bus PCI, bus USB, un set estándar de controladores de disco IDE y SCSI, NICs, etc.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 5

Figura 2.1.1: Componentes de virtualización de KVM

Luego de cargar el módulo, y transformar el kernel Linux en un hypervisor. El módulo exporta un dispositivo denominado /dev/kvm, que activa un modo invitado del kernel.

Con /dev/kvm una maquina virtual tiene su propio espacio separado del kernel u otra máquina virtual que se encuentre en ejecución. Los dispositivos en el árbol de dispositivos /dev es común para todo los procesos de espacio de usuario. Pero /dev/kvm se diferencia en que cada proceso que lo abre, ve un mapeo diferente para poder brindar aislamiento entre las máquinas virtuales. La Figura 2.1.1 muestra la arquitectura y funcionamiento mencionados.

Convertir al Kernel en un hypervisor tiene sus ventajas. Ya que aprovecha al máximo las nuevas características del kernel de la serie 2.6.x (soporte de memoria, scheduler O(1), etc). Adicionalmente soporta la migración en vivo.

KVM hereda la performance y escalabilidad de Linux, soportando máquinas virtuales con hasta 16 CPUs y 256GB de RAM. Estas dimensiones son posibles dado que soporta sistemas con hasta 256 núcleos y sobre 1TB de RAM.

KVM además de contar con el apoyo de la gran comunidad, es soportado por algunos de los líderes en la industria del software como Red Hat, AMD, HP, IBM, Intel, Novell, Siemens, SGI entre otros.

En el proceso de elección por una alternativa de virtualización, KVM presentan los siguientes pros y contras:

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 6

Pros:● Su modulo es liviano y esta integrado en la línea principal del kernel Linux, ofreciendo

simplicidad en su implementación, sumado al continuo soporte de Linux.● KVM es flexible. Los sistemas operativos invitados pueden direccionar hardware

directamente en todos los casos, sin necesidad de ser modificados, lo que hace a KVM una solución rápida para máquinas virtuales.

● Facilidad en el control de la virtualización de procesos, pues esta implementado en el Kernel mismo.

Contras:● No existen herramientas sofisticadas para administrar KVM y MVs.● KVM todavía necesita mejorar: el soporte para redes virtuales, soporte

almacenamiento virtual, seguridad, tolerancia a fallos, administración de energía, entre otros.

2.2 Instalación y configuración previa

A continuación se describe los pasos y configuraciones para KVM, realizado en Ubuntu 11.10.

Primero se procede a instalar KVM mediante el siguiente comando:

“sudo apt-get install qemu-kvm”

Luego, se instaló AQEMU, que es gestor para máquinas virtuales que administra las principales opciones de QEMU y KVM. La interfaz del software se aprecia en la Figura 2.2.1.

“sudo apt-get install aqemu”

Figura 2.2.1: Interfaz AQEMU

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 7

Consecutivamente se instala KVM-PXE, que es un PXE adecuado a KVM. PXE es una utilidad para que la BIOS tenga la capacidad de bootear desde la red. Aunque este paquete no es estrictamente necesario, se necesita para tener KVM con todas sus capacidades, por lo que se instalo mediante el siguiente comando:

sudo apt-get install kvm-pxe

Este útimo paso es estrictamente necesario, pues sin el KVM no podrá lanzar máquinas virtuales, y corresponde a activar la virtualización por hardware en el kernel linux, y esto se realiza con el siguiente comando, para el caso de procesadores intel (kvm-amd en el caso de procesadores amd):

modprobe kvm-intel

La ejecución de este comando, si fue exitoso, no retorna mensaje alguno, pero de no ser así, retorna la salida observada en la Figura 2.2.2, y esto sucederá cuando la virtualización no este soportada por el hw, o no haya sido activada en la bios de la máquina anfitrión.

Figura 2.2.2: Error al activar virtualizacion en el kernel Linux

Con lo anterior, ya se esta en condiciones de crear máquinas virtuales.

2.3 Configuraciones para una Máquina virtual

A continuación se describen las principales opciones proporcionadas por AQEMU. Este software se organiza en pestañas, cuyo inicio se contempla en la Figura 2.3.1, y en ella existen 2 maquinas virtuales creadas, “Linux” y “Ubuntu”, esto es posible gracias al botón “+” en color verde en la esquina superior izquierda. En la misma figura se indican los detalles informativos de la MV “Linux”, por ejemplo, donde se el tipo de emulador es KVM, y que el tipo de computador es KVM, con las tecnologías de virtualización asociadas.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 8

Figura 2.3.1: Inicio de AQEMU

Ya en la configuración general (ver Figura 2.3.2), se pueden adecuar las características de la máquina a virtualizar, como el tipo de emulador, en esta caso KVM, o el número de CPUs, memoria RAM asignada, entre otros. Nótese que es posible remover las limitaciones de memoria máxima, pudiendo fácilmente sobrepasar la instalada en la máquina anfitrión.

Figura 2.3.2: Configuración general de AQEMU

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 9

En torno a la administración de dispositivos (ver Figura 2.3.3), es posible añadir diferentes unidades, como imágenes iso para la unidad óptica virtual, que en este caso es la única añadida, pues corresponde a una iso de ubuntu 10.04, que correo como livecd. Además se pueden especificar detalles adicionales como la interface, tipo de bus, cache, el número de cilindros, sectores, y mas sobre unidades de almacenamiento.

Figura 2.3.3: Administración de dispositivos QEMU

En la configuración de red, el primer modo de conexión, por defecto y autoconfigurado, es “Use the user mode network stack”, que utiliza un servidor DHCP interno de AQEMU para asignar ip a las maquinas virtuales, además haciendo la traducción de puertos entre las ip de todas las máquinas virtuales y la máquina anfitrión, de manera similar a NAT (Network Address Translation). Esto traducción se puede definir en la configuración adicional (ver Figura 2.3.5). Una segunda modalidad esta disponible a través del soporte para interfaces TUN/TAP, que pueden ser cargadas mediante scripts. La interfaces TUN/TAP permiten definir redes virtuales, un ejemplo sencillo sería crear un switch virtual que comunique todas la máquinas virtuales. La configuración TUN/TAP esta a cargo de la máquina anfitrión. Como tercera modalidad, esta disponible el uso de sockets TCP/UDP del anfitrión, para ser usados por una MV.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 10

Figura 2.3.4: Configuración de red en AQEMU

Figura 2.3.5: Configuración adicional de red en AQEMU

También se pueden agregar puertos seriales, paralelos o usb a las máquinas virtuales. (Ver Figura 2.3.6)

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 11

Figura 2.3.6: Configuración de puertos COM, COM y USB en QEMU

En la pestaña “Advanced” contiene opciones sobre el modo de utilizar los controles, desactivar reinicio, activar ACPI, configuraciones gráficas, un recuadro para proporcionar comando adicionales para la operación de KVM, entre otros.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 12

2.4 Complementos para la virtualización.

Cabe destacar algunos complementos que podemos utilizar para realizar una virtualización. Uno de estos complementos es AQEMU, esta es una interfaz gráfica para la virtualización utilizando QEMU y KVM. Con AQEMU se puede configurar rápidamente máquinas virtuales para diferentes sistemas operativos, arquitecturas y configuraciones.

En la figura 2.4.1 se muestra la interfaz del programa con diferentes maquinas virtuales creadas.

Figura 2.4.1: Interfaz AQEMU con más de una VM.

También se debe mencionar lo que es VNC. Estas siglas significan en ingles Virtual Network Computing o Computación Virtual en Red.

VNC es un programa de software libre basado en una estructura cliente-servidor el cual nos permite tomar el control de la máquina servidor remotamente a través de una máquina cliente. También llamado software de escritorio remoto. VNC no impone restricciones en el sistema operativo de la máquina servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que soporte VNC conectándose desde otra máquina o dispositivo que disponga de un cliente VNC portado.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 13

Su funcionamiento se compone de un cliente, un servidor y un protocolo de comunicación.

El VNC servidor es el programa en el equipo que comparte su pantalla. El servidor de forma pasiva permite al cliente tomar el control de la misma.

El VNC cliente (o espectador) es el programa que vigila, controla e interactúa con el servidor. El cliente controla al servidor.

El VNC protocolo (RFB) es muy simple, basado en una primitiva gráfica del servidor al cliente (("Put a rectangle of pixel data at the specified X,Y position", en español "Póngase un rectángulo de datos de píxel en la posición X,Y especificada) y mensajes de eventos desde el cliente al servidor.

En la imagen 2.4.2, se aprecia un diagrama que permite ver los componentes de este programa.

Figura 2.4.2: Arquitectura del funcionamiento de VNC

Se observa en la imagen 2.4.2 los componentes de VNC, donde en el extremo derecho esta el servidor, en el extremo izquierdo están los clientes y las uniones entre medio es el protocolo. Otro complemento que se puede mencionar es el protocolo SPICE que significa Protocolo Simple para un Ambiente Computacional Independiente. Es un sistema de vista remota construido para ambientes virtuales que permite a los usuarios ver un ambiente de escritorio remoto, no solamente el de su propio computador, si no que también los virtuales desde cualquiera que posea conexión a internet y con cualquier arquitectura.

La peculiaridad de este protocolo es que permite tener un numero determinado de n monitores corriendo para n máquinas virtuales instaladas en un servidor, lo que nos da la vista de todos los servicios que están funcionando. A demás permite fusionar los monitores y tener diferentes procesos corriendo a la vez.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 14

Conclusiones

Al finalizar esta experiencia hemos ganado un gran conocimiento en lo que a virtualización se refiere. Podemos concluir que los sistemas de virtualización permiten potenciar aún mas los equipos, esto puede llevar a que las empresas puedan invertir en mejorar los servidores y así mejorar sus utilidades.

Una de las ventajas de la virtualización es que se puede configurar la máquina según la necesidad del usuario, es decir asignar memoria, espacio en disco, número de procesadores, etc.

Otra ventaja es que podemos cargar el número de máquinas virtuales en los equipos según sea la necesidad y la máquina anfitrión lo permita.

Finalmente podemos decir que la virtualización responde a la necesidad de obtener el máximo provecho de los equipos con que contamos.

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 15

Bibliografía

La anatomía de un Hipervisorhttp :// www . ibm . com / developerworks / ssa / library / l - hypervisor / index . html

Networking QEMU Virtual BSD Systemhttp :// bsdwiki . reedmedia . net / wiki / networking _ qemu _ virtual _ bsd _ systems . html

QEMU - Debian - Linux - TUN/TAP - network bridgehttp :// compsoc . dur . ac . uk /~ djw / qemu . html

Virtual Linuxhttp :// iespuigcastellar . xeill . net / Members / vcarceler / misc / news /2007/ Members / vcarceler / articulos / virtual - linux /

KVM – Kernel-based Virtual Machinehttp :// www . redhat . com / rhecm / rest - rhecm / jcr / repository / collaboration / jcr : system / jcr : versionStorage /5 e 7884 ed 7 f 00000102 c 317385572 f 1 b 1/1/ jcr : frozenNode / rh : pdfFile . pdf

Hypervisors, virtualization, and the cloud: Dive into the KVM hypervisorhttp :// www . ibm . com / developerworks / cloud / library / cl - hypervisorcompare - kvm /

Informe Laboratorio: Kernel-based Virtual Machine (KVM) 16