Maquinas Virtuales y la Virtualizacion De Grupo GNU/Linux de la Universidad del Cauca Maquinas Virtuales en GNU/Linux La virtualización es un término de uso ya habitual en nuestra vida diaria, pues muchas de las acciones que realizamos se relacionan con este, pues el hecho de administrar documentos,cuentas de correo electrónico, blog personal, bases de datos,manejar información o navegar en la internet desde la computadora representan acciones dentro de entornos virtuales de trabajo y de entretenimiento. Pero la virtualización es un concepto más amplio en realidad, dentro del punto de vista informático se refiere a la modulación y abstracción de los recursos de una máquina o computadora, de tal manera que permita facilitar el manejo de aplicaciones reduciendo al máximo problemas de compatibilidad de arquitecturas y de emulación de sistemas operativos de otras plataformas. La virtualizacón: La virtualización es una técnica que posibilita la ejecución de una o más máquinas virtuales sobre una única máquina física. Cada máquina virtual tiene asignados, de forma independiente al resto, un conjunto de recursos hardware (procesador, memoria, almacenamiento, dispositivos de E/S) y ejecuta su propia copia del sistema operativo (Linux, Solaris, BSD, Windows). El software de virtualización planifica la ejecución de las máquinas virtuales y gestiona el acceso compartido a los recursos hardware reales disponibles. Todo el entorno perteneciente a una máquina virtual puede estar encapsulado en un único fichero o en un volumen de disco en una red de almacenamiento. este termino se utiliza en contextos diferentes, en este articulo lo dividiremos en dos categorias principales: Virtualizacion de plataforma: Involucra la simulacion de maquinas virtuales Virtualizacion de los recursos: Involucra la simulacion de recursos combinados, fragmentados o simples La virtualización de plataforma es llevada a cabo en una plataforma de hardware mediante un software “host” (un programa de control) que simula un entorno computacional (máquina virtual) para su software “guest”. Este software “guest”, que generalmente es un sistema operativo completo, corre como si estuviera instalado en una plataforma de hardware autónoma. Típicamente muchas máquinas virtuales son simuladas en una máquina física dada. Para que el sistema operativo “guest” funcione, la simulación debe ser lo suficientemente robusta como para soportar todas las interfaces externas de los sistemas guest, las cuales pueden incluir (dependiendo del tipo de virtualización) los drivers de hardware. La virtualizacion de recursos se relaciona con la virtualizacion de recursos especificos de la PC tales como el almacenamiento, las redes, etc. La idea principal es la de permitir ejecutar varios sistemas operativos simultáneamente sobre el mismo hardware. Para ello, separa las dos funciones básicas que realiza un sistema de tiempo compartido: multiprogramacion y
abstracción del hardware. El corazón del sistema es conocido como monitor de máquina virtual, y se ejecuta sobre el hardware proporcionando varias máquinas virtuales al siguiente nivel de software. Por eso cada una puede estar ejecutando un sistema operativo distinto. También ha sido llevada esta idea de máquina virtual a lenguajes de programacion como Java. Desde hace ya un tiempo parece que las maquinas virtuales se han puesto de moda, no solo para entornos de desarrollo o pruebas, sino tambien para entornos de produccion (hosting, 'consolidacion de servidores', etc.). • •
•
•
Hosting: cada vez son mas los ISP que ofrecen servidores virtuales usando estas tecnologias. Consolidacion de servidores: se trata de agrupar todos los servidores de una empresa en una sola maquina (qu evidentemente debe tener cierta solvencia de recursos). La idea se basa en aprovechar mejor los recursos del servidor, ya que es habitual el desaprovechamiento de los recursos del hardware en estos tiempos en los que el HW avanza tan deprisa. En estos casos, como siempre se utilizan maquinas virtuales, la realizacion de copias de seguridad de cada una de las maquinas resulta muy facil, puesto que en general supondra la copia de un solo fichero. HoneyPots: Maquinas puestas en internet para que los Hackers 'jueguen' con ellas. se usan en genmeral para aprender los comportamientos y las nuevas tecnicas que usan los intrusos informaticos. Maquinas de desarrollo y pruebas: Sienpre es mejor probar las cosas en una maquina que no es critica para el negocio y que, como en el caso de las maquinas virtuales , se pueden recuperar en muy poco tiempo.
Pensemos de esta forma: una máquina virtual ofrece una capa de abstracción entre el hardware y el sistema operativo que funciona por encima de la misma. También permite administrar y, simultáneamente, operar con varios entornos en una sola máquina. La potencia de la máquina de virtualización estriba en que permite consolidar servidores y PCs, compartiendo los recursos hardware infrautilizados y reduciendo el coste total cuando llega la hora de adquirir nuevos equipos, monitorizarlos, administrarlos y mantenerlos. Una maquina virtual es en definitiva: •
en términos poco técnicos, un “PC virtual” dentro de un PC real. Es decir, podemos tener nuestro ordenador con nuestro sistema operativo favorito instalado y disfrutar de otros sistemas operativos dentro del nuestro sin tener que movernos entre particiones, instalaciones compartidas, distintos sistemas en varios discos duros, etc.
Pero además, una máquina virtual no deja de ser una colección de ficheros que nos podemos llevar en cualquier soporte de un ordenador a otro, para utilizarlo dentro de uno u otro PC que tengamos disponible. Es una máquina completa en la que podemos instalar cualquier aplicación nativa del sistema operativo que gestione nuestra máquina virtual, y probar con ella instalaciones, modificaciones, utilidades y aplicaciones sin necesidad de trastear con hardware, y que no vamos a estropear.
•
Un entorno que nos permite ejecutar y probar casi cualquier cosa, en las mismas condiciones en las que lo haríamos con varias máquinas, incluso con varias redes, sin necesidad de contar con varias máquinas para realizar dichas pruebas. Y mejor aún, si obtenemos “copias” de los ficheros que contienen la máquina virtual, o si hacemos lo que se denominan “Snapshots”, podemos devolver la máquina virtual al estado en el que se encontraba antes de arrancarla, después de haber hecho las pruebas pertinentes sobre un entorno completamente virtual, pero completamente operativo.
Sin necesidad de hacer muchos más cálculos, podemos comprender que por tanto, es una herramienta muy potente que nos podrá permitir: •
Instalar todo nuestro software en una máquina virtual que contenga los mismos requisitos (o similares) a los que nos harían falta en el servidor real de Intenet.
•
Montar un servidor que dé servicio en Internet (desde nuestra línea ADSL, por ejemplo) sin los problemas o temores de mantener un servidor físico ante los riesgos de ataques desde el exterior.
•
Gestionar varias máquinas en una red sin necesidad de tener varios ordenadores.
•
Utilizar una máquina virtual para “llevarnos” al Centro nuestra configuración y manejarla “sin dejar rastro” utilizando el hardware y el sistema operativo “host” del PC que utilizamos, pero con nuestros programas instalados…
•
Crear máquinas virtuales con configuraciones específicas y software preinstalado para cada nivel de nuestro Centro, sin necesidad de estar reinstalando y formateando máquinas físicas reales cada dos por tres.
Beneficios para el usuario: Reduce los costes y riesgos al tiempo que aumentan la calidad y agilidad de su infraestructura de TI Permite a los clientes ejecutar multiples SO al mismo tiempo en un unico servidor fisico, donde cada uno de los SO funciona en un equipo independiente. Brinda una mejor eficiencia del HW ofreciendo una gran solucion para aislamiento y administracion de recursos. Las Máquinas Virtuales tienen tres propiedades: • • •
Particionamiento: hacemos un mejor aprovechamiento del hardware de nuestro eBold textquipo. Aislamiento: cada máquina virtual es independienteEncapsulamiento: en realidad estas máquinas virtuales no son mas que simples archivos.
Algunas desventajas: Una falla de HW equivale a la falla de todos los sistemas virtuales que operan sobre el mismo. Para asegurar los servicios de deben adquirir HW de gran porte por consiguiente de alto costo. POR QUÉ HABLAR DE VIRTUALIZACION? • • • •
Opciones privativas como VMware y MS VirtualServer Las MV consideradas la tecnologia mas prometedora en seguridad Ofrece libertad de eleccion total Rompre la barrera de las arquitecturas
POR QUÉ HABLAR DE SOFTWARE LIBRE? • • •
Controlar la tecnologia Interoperabilidad Estándares
CUALES SON LAS VENTAJAS DE LA VIRTUALIZACION? Tener máquinas virtuales nos ofrece ciertas ventajas, sin embargo nos enfocaremos a aquellas que nos sirvan para el desarrollo de aplicaciones: • • • •
•
•
•
La virtualizacion nos permite separar el SO del HW Ejecutar dentro de la MV cualquier aplicacion independiente de la arquitectura para la q fue desarrollada Multiplexar el HW para que realice multiples tareas separadas unas de otras Las máquinas virtuales son fáciles de mover, solo es necesario copiarlas y podemos correrlas en cualquier hardware que tenga la capa de virtualización. Lo anterior nos da independencia de hardware, no importa si corremos la máquina virtual en una arquitectura x86, de 64 bits o inclusive en una MAC, la capa lo hace todo. Son fáciles de Administrar, podemos añadir dispositivos como USB’s discos duros, cd rom’s, tarjetas de red al instante, sin tener que ir a comprar estos dispositivos, tirar los servicios y reiniciar ya que estos son virtuales. Podemos tomar “fotos” del estado actual de la máquina permitiendo regresar a un estado de la misma, es decir podemos aplicar un parche al S.O. y si causan conflictos con las aplicaciones, podemos regresar al punto antes de haber instalado el parche.
Existen aplicaciones tales como VMware, Virtualbox, Qemu o Xen que permiten generar la capa de virtualizacion o el llamado hypervisor. ENFOQUES DE LA VIRTUALIZACION: Existen muchos enfoques a la virtualización de plataformas, aquí se los listamos basándonos en cuán completa es implementada una simulación de hardware (estos términos no son reconocidos universalmente como tales, sin embargo todos los conceptos pueden ser encontrados en los libros).
•
•
•
•
•
EMULACION O SIMULACION: La máquina virtual simula un hardware completo, admitiendo un sistema operativo “guest” sin modificar para una CPU completamente diferente. Este enfoque fue muy utilizado para permitir la creación de software para nuevos procesadores antes de que estuvieran físicamente disponibles. Por ejemplo Bochs, PearPC, Qemu sin aceleración, y el emulador Hercules. La emulación es puesta en práctica utilizando una variedad de técnicas, desde state machines hasta el uso de la recopilación dinámica en una completa plataforma virtual. VIRTUALIZACION NATIVA Y COMPLETA: la máquina virtual simula un hardware suficiente para permitir un sistema operativo “guest” sin modificar (uno diseñado para la misma CPU) para correr de forma aislada. Típicamente, muchas instancias pueden correr al mismo tiempo. Este enfoque fue el pionero en 1966 con CP-40 y CP[-67]/CMS, predecesores de la familia de máquinas virtuales de IBM. Algunos ejemplos: VMware Workstation, VMware Server, Parallels Desktop, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro y z/VM. VIRTUALIZACION PARCIAL: (y aquí incluimos el llamado “address space virtualization”): la máquina virtual simula múltiples instancias de mucho (pero no de todo) del entorno subyacente del hardware, particularmente address spaces. Este entorno admite compartir recursos y aislar procesos, pero no permite instancias separadas de sistemas operativos “guest”. Aunque no es vista como dentro de la categoría de máquina virtual, históricamente éste fue un importante acercamiento, y fue usado en sistemas como CTSS, el experimental IBM M44/44X, y podría decirse que en sistemas como OS/VS1, OS/VS2 y MVS. PARAVIRTUALIZACION: a máquina virtual no necesariamente simula un hardware, en cambio ofrece un API especial que solo puede usarse mediante la modificación del sistema operativo “guest”. La llamada del sistema al hypervisor tiene el nombre de “hypercall” en Xen y Parallels Workstation; está implementada vía el hardware instruction DIAG (“diagnose”) en el CMS de VM en el caso de IBM (este fue el origen del término hypervisor). Ejemplo: VMware ESX Server, Win4Lin 9x y z/VM. VIRTUALIZACION A NIVEL DE SISTEMA OPERATIVO: virtualizar un servidor físico a nivel del sistema operativo permitiendo múltiples servidores virtuales aislados y seguros correr en un solo servidor físico. El entorno del sistema operativo “guest” comparte el mismo sistema operativo que el del sistema “host” (el mismo kernel del sistema operativo es usado para implementar el entorno del “guest”). Las aplicaciones que corren en un entorno “guest” dado lo ven como un sistema autónomo. Ejemplos: Linux-VServer, Virtuozzo, OpenVZ, Solaris Containers y FreeBSD Jails.
CONCLUSIONES En este mundo, la virtualizacion podria convertirse en una completa simulacion de sistemas enteros, los cuales podrian no solo ser hardware de computacion, como ahora, sino motores conectores, valvulas, puertas, maquinaria, vehiculos y sensores en una compañia. El modelo podria correr con la compañia fisica y en tiempo real. Donde ahora se usa la virtualizacion para cambiar la administracion, planteamiento de recuperacion de desastres o agendas de mantenimiento para redes y sus elementos, podria en el futuro hacerse lo mismo para todas las instalaciones. Cada objeto o producto
vendido podria venir con un modelo de si mismo que podria encajar en esos ambientes de ejecucion.
Enlaces de interés: • • • •
http://www.es.wikipedia.org http://www.xen.org http://www.virtualbox.org http://fabrice.bellard.free.fr/qemu/