Charla 2

26
Virtualización en GNU/Linux http://www.whyfloss.com/es/conference/madrid07/ Alberto Abián Belmonte, UCM

description

charla, archivo de prueba

Transcript of Charla 2

Virtualización en GNU/Linux

http://www.whyfloss.com/es/conference/madrid07/

Alberto Abián Belmonte, UCM

Virtualización en GNU/Linux

Alberto Abián Belmonte

[email protected]

WhyFloss Conference (Madrid 07) 3

Índice

Introducción. Tipos de virtualización. ¿Por qué utilizar virtualización? Ventajas e inconvenientes. Proyectos de virtualización en GNU/Linux

QEMU XEN KVM

USER MODE LINUX Ejemplo de simulación con UML

WhyFloss Conference (Madrid 07) 4

Introducción

Wikipedia (http://es.wikipedia.org/wiki/Virtualizacion):

En informática, virtualización es un término amplio que se refiere a la abstracción de los recursos de una computadora. /.../. El tema en común de todas las tecnologías de virtualización es la de ocultar los detalles técnicos a través de la encapsulación.

Wikipedia (http://en.wikipedia.org/wiki/Virtualization)

In computing, virtualization is a broad term that refers to the abstraction of computer resources. One useful definition is "a technique for hiding the physical characteristics of computing resources /.../. This includes making a single physical resource appear to function as multiple logical resources; or it can include making multiple physical resources appear as a single logical resource."

WhyFloss Conference (Madrid 07) 5

Tipos de virtualización (I)

Emulación: En este método se crea una

Máquina Virtual Hardware en el host anfitrión para emular el Hardware que se desee.

Su problema es la lentitud.

De ésta forma se ha logrado la creación de software para hardware que no ha sido creado todavía. Así se puede avanzar en la salida al mercaro de nuevo hardware.

La emulación incluso permite que un sistema operativo diseñado para algún una plataforma específica pueda correr sobre otra plataforma con la cuál técnicamente no es compatible.

WhyFloss Conference (Madrid 07) 6

Tipos de virtualización (II)

Virtualización nativa: También conocida como

virtualización completa.

El host emula lo suficientemente bien el hardware como para que los guests puedan ser ejecutados de forma nativa, es decir, sin cambios en el kernel y además de forma completamente aislada.

Se pueden ejecutar varios guests en la misma máquina y compartir eficientemente sus recursos.

WhyFloss Conference (Madrid 07) 7

Tipos de virtualización (III)

Paravirtualización: El host no ofrece una emulación del hardware. Pero sin embargo ofrece

un API que permite que los guests puedan acceder a los recursos de la máquina, controlados por el anfitrión.

Los guests corren de forma aislada y segura de forma tal que no se afectan en caso de problemas.

El kernel de los guests tiene que ser modificado para permitir acceder al API del host y poder manejar y acceder a los recursos del host (disco, red, usb, etc).

WhyFloss Conference (Madrid 07) 8

Tipos de virtualización (IV)

Virtualización a nivel del sistema operativo: Los guests comparten el mismo sistema operativo que el anfitrión.

Realmente, todos utilizan el mismo kernel y es el kernel el que se ocupa de determinar para quién trabaja en un momendo determinado.

Este método utiliza un único Sistema Operativo y aisla los procesos o servidores que el usuario desee ejecutar.

Requiere cambios en el kernel de dicho Sistema Operativo pero la ventaja es eficiencia nativa.

WhyFloss Conference (Madrid 07) 9

¿Por qué utilizar virtualización?¿Por qué utilizar virtualización? Consolidación: Consiste en combinar varios servicios que no utilizan

completamente los recursos de una máquina en un único ordenador. Uso más común de virtualización.

Espacio insuficiente: Las salas de servidores tienen un espacio finito, es posible que no quede espacio para nuevas máquinas pero se requiera utilizar un servidor extra.

Abstracción del Hardware: Actualizar la máquina en la que se ejecuta un servidor requiere reinstalar todo el sistema y, posteriormente, configurarlo hasta que funcione como desea el administrador. Utilizando virtualización tan solo hay que copiar la imagen del Sistema Operativo al nuevo disco duro.

Sistemas Operativos obsoletos: Una aplicación crítca para un proyecto utiliza un SO obsoleto. Es imposible que dicho SO funcione en un hardware actual. Mediante el uso de virtualización nativa (ej XEN) se puede hacer que la aplicación se ejecute en una máquina nueva.

WhyFloss Conference (Madrid 07) 10

¿Por qué utilizar virtualización?¿Por qué utilizar virtualización? Testing: Si estamos en un entorno de desarrollo tanto comercial como de

investigación, el uso de virtualización nos permite realizar todas las pruebas en un entorno controlado (máquinas virtuales) sin poner en riesgo nuestro PC.

Manteniemiento: Algunas técnicas de virtualización permiten migrar máquinas virtuales de un sistema a otro sin interrumpir la ejecución. Permite:

Tolerancia a fallos

Balanceo de carga

Modificaciones en el hardware sin que la aplicación deje de funcionar.

Ahorro energético: Hay menos máquinas físicas conectadas y además se reducen gastos en refrigeración.

Seguridad: Si se produce un hipotético ataque, tan sólo se vería comprometida una máquina virtual ya que se encuentran aisladas unas de otras.

WhyFloss Conference (Madrid 07) 11

Contras de la virtualización

PROBLEMA

1. Si se daña el disco duro se dañarán todas las máquinas virtuales que se encuentren en él.

2. Cualquier problema que afecte al hardware, afectará a todas las máquinas virtuales (corriente, red...)

3. ”Si te roban la máquina, te roban todas las máquinas virtuales.”

POSIBLE SOLUCIÓN

1. Importantísimo el uso de RAID (ofrecen cierta tolerancia a fallos mediante la recuperación de información).

2. Utilización de sistemas redundantes (doble red, doble disco, doble fuente de corriente, etc).

3. Realizar asiduamente copias de seguridad de las imagenes de los Sistemas Operativos virtualizados y ”Mejorar la seguridad”.

WhyFloss Conference (Madrid 07) 12

Proyectos de virtualización en GNU/Linux.

http://virt.kernelnewbies.org/TechComparison

WhyFloss Conference (Madrid 07) 13

WhyFloss Conference (Madrid 07) 14

Proyectos de virtualización en GNU/Linux.

WhyFloss Conference (Madrid 07) 15

QEMU (I) QEMU es un emulador. Soporta dos modos de ejecución.

Emulación del sistema completo: Emula el sistema computador completo, incluyendo el procesador y periféricos.

Este modo permite emular distintas arquitecturas (x86, x86_64, ARM, SPARC, PowerPC y MIPS) utilizando traducción dinámica de instrucciones.

Se pueden emular Windows o Linux en Linux, Solaris o FreeBSD. Emulación del modo usuario: Puede ejecutar procesos compilados para

un tipo de CPU en otro CPU.

Las llamadas al sistema son pensadas para endianness y desarreglos en 32/64 bits. Este modo permite que un programa compilado para MIPS pueda ser ejecutado en GNU/Linux x86.

Este modo sólo funciona en entornos GNU/Linux.

WhyFloss Conference (Madrid 07) 16

WhyFloss Conference (Madrid 07) 17

XEN

Xen es una máquina virtual de código abierto desarrollada por la Universidad de Cambridge. La meta del diseño es poder ejecutar instancias de sistemas operativos con todas sus características.

Xen proporciona aislamiento seguro, control de recursos, garantías de calidad de servicio y migración de máquinas virtuales en vivo. Los sistemas operativos deben ser modificados explícitamente para correr Xen (aunque manteniendo la compatibilidad con aplicaciones de usuario).

Obtener e instalar XEN:

Versión gratuíta XEN EXPRESS (http://www.xensource.com/products/)

Mandriva 2006 incluye Xen 2.6, Novell's Suse Linux Professional 10 incluye Xen 3, Fedora Core 5 incluye la versión 3 de Xen, ”Xen demo CD” es una ISO live CD basada en Debian que permite probar Xen en tu sistema sin instalarla en disco duro, etc.

WhyFloss Conference (Madrid 07) 18

WhyFloss Conference (Madrid 07) 19

KVM (Kernel-based Virtual Machine)

Se trata de una solución basada en virtaulización completa para GNU/Linux x86 que disponga de un procesador con extensiones (Intel VT o AMD-V)

Consiste en un módulo de kernel (kvm.ko) que provee infraestructura de virtualización y un módulo específico para cada procesador (kvm-intel.ko o kvm-amd.ko).

Su característica principal es que permite ejecutar imagenes de GNU/Linux o Windows sin modificar.

Cada máquina virtual poseerá su propio hardware virtualizado privado: Tarjeta gráfica, tarjeta de red...

WhyFloss Conference (Madrid 07) 20

KVM y XEN (I) Ambas tecnologías pueden

funcionar como paravirtualización y como virtualización completa.

XEN: Si se dispone del procesador adecuado entonces funcionará como virtualización completa.

KVM: Es imprescindible disponer del procesador adecuado y posteriormente (dependiendo de la aplicación utilizada) se utilizará un tipo u otro de virtualización.

WhyFloss Conference (Madrid 07) 21

KVM y XEN (II) ¿Cómo saber si un procesador soporta virtualización completa?

Para ejecutar virtualización completa de huéspedes en sistemas con HVM (Hardware-assisted Virtual Machine), Intel o AMD, se debe verificar que las CPUs tengan las capacidades necesarias.

Necesita extensiones VT (virtualization technology):

AMD SVM (Secure Virtual Machine)

cat /proc/cpuinfo | grep svm Intel(R) Virtualization Technology (actualmente VT-x).

cat /proc/cpuinfo | grep vmx

http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors

WhyFloss Conference (Madrid 07) 22

USER MODE LINUX User-Mode Linux es un modo seguro de ejecutar procesos dentro

del Sistema Operativo GNU/Linux llegando incluso a permitir la ejecución de distintas versiones de GNU/Linux dentro de una misma máquina.

Está diseñado para permitir a desarrolladores experimentar distintas versiones de GNU/Linux sin poner en peligro la instalación del Sistema Operativo principal del ordenador.

User-Mode Linux nos ofrece una máquina virtual que puede llegar a tener incluso más recursos hardware y software que el ordenador físico que la está ejecutando.

WhyFloss Conference (Madrid 07) 23

VNUML VNUML (Virtual Network User Mode Linux) es herramienta de

virtualización diseñada para crear de forma sencilla escenarios de simulación de redes. Se trata de un proyecto de Software Libre de la Universidad Politécnica de Madrid.

La herramienta VNUML está formada por dos componentes principales:

El lenguaje XML utilizado para definir y configurar los escenarios. Mediante el uso correcto de este lenguaje XML podemos añadir nuevas máquinas virtuales a la simulación o indicar que una determinada máquina arranque un servidor en concreto.

El intérprete de dicho lenguaje que nos permite ejecutar las simulaciones e interactuar con ellas.

http://www.dit.upm.es/vnumlwiki/index.php/Main_Page

WhyFloss Conference (Madrid 07) 24

WhyFloss Conference (Madrid 07) 25

Enlaces de interés Muy buena página sobre virtualización:

http://virt.kernelnewbies.org/

Tipos de virtualización y tutoriales de instalación:

http://www.ecualug.org/?q=2007/02/28/comos/virtualizaci_n_en_linux_centos

KVM: http://kvm.qumranet.com/kvmwiki

USER-MODE LINUX: http://user-mode-linux.sourceforge.net/

XEN: http://www.xensource.com/

Instalación de XEN en ubuntu:

https://help.ubuntu.com/community/XenVirtualMachine/XenOnUbuntuFeisty

Virtualización en Fedora: http://fedoraproject.org/wiki/Tools/Virtualization

WhyFloss Conference (Madrid 07) 26

¿PREGUNTAS?