Download FACULTAD DE CIENCIAS COMPUTACIONALES Y
Document related concepts
Transcript
FACULTAD DE CIENCIAS COMPUTACIONALES Y TELECOMUNICACIONES ASIGNATURA: “SISTEMAS OPERATIVOS I” TÍTULO: VIRTUALIZACION AUTORES: 1. DANIEL MANOSALVAS PROFESOR: Ing. SARA NORIEGA FECHA: Guayaquil, Junio del 2012 PROYECTO DE INVESTIGACIÓN Virtualización Virtualización es la recreación virtual de algún recurso tecnológico alguna hardware o algún sistema operativo atreves de un software. Esta capa de software es la encargada de administrar los recursos principales de una computadora (CPU, RAM, almacenamiento, red) entre todas las maquinas virtuales existentes Beneficios. Reutilización de hardware existente (para utilizar software más moderno) y optimizar el aprovechamiento de todos los recursos de hardware.6 Rápida incorporación de nuevos recursos para los servidores virtualizados. Reducción de los costes de espacio y consumo necesario de forma proporcional al índice de consolidación logrado (Estimación media 10:1). Administración global centralizada y simplificada. Nos permite gestionar nuestro CPD como un pool de recursos o agrupación de toda la capacidad de procesamiento, memoria, red y almacenamiento disponible en nuestra infraestructura Mejora en los procesos de clonación y copia de sistemas: Mayor facilidad para la creación de entornos de test que permiten poner en marcha nuevas aplicaciones sin impactar a la producción, agilizando el proceso de las pruebas. Aislamiento: un fallo general de sistema de una máquina virtual no afecta al resto de máquinas virtuales. Mejora de TCO y ROI. No sólo aporta el beneficio directo en la reducción del hardware necesario, sino también los costes asociados. Reduce los tiempos de parada. Migración en caliente de máquinas virtuales (sin pérdida de servicio) de un servidor físico a otro, eliminando la necesidad de paradas planificadas por mantenimiento de los servidores físicos. Balanceo dinámico de máquinas virtuales entre los servidores físicos que componen el pool de recursos, garantizando que cada máquina virtual ejecute en el servidor físico más adecuado y proporcionando un consumo de recursos homogéneo y óptimo en toda la infraestructura. Contribución al medio ambiente -Green IT- por menor consumo de energía en servidores físicos. Desventajas: Rendimiento inferior. Un sistema operativo virtualizado nunca alcanzará las mismas cotas de rendimiento que si estuviera directamente instalado en el hierro. Dado que el hipervisor introduce una capa intermedia en la gestión del hardware para gestionar las peticiones de acceso y la concurrencia al mismo, el rendimiento de la máquina virtual se ve afectado irremediablemente. No todas las soluciones de virtualización obtienen el mismo rendimiento en las mismas operaciones. Un ejemplo es esta Comparativa de rendimiento máquinas virtuales No es posible utilizar hardware que no esté gestionado o soportado por el hipervisor. Hardware virtual obsoleto. USB 1.0, Firewire 400, Ethernet 100 son algunos de los dispositivos a los que nos veremos sometidos. Aunque las nuevas versiones de los hipervisor se van renovando, todavía tenemos que trasladarnos al pasado para usar estas características. No dispondremos de aceleración de vídeo por hardware, por lo que aplicaciones con efectos 3D como compiz-fussion y juegos que utilizan las librerías OpenGL o DirectX no funcionarán en la máquina virtual. Como excepción, Parallels y VMWare Fussion ofrecen soporte para versiones concretas de OpenGL y DirectX sobre Mac OS X, pero conviene probar el rendimiento gráfico antes de decidirse por alguna. Proliferación de máquinas virtuales. Como no hay que comprar ‘hierro’, el número de máquinas y servidores virtuales se dispara en todos los ámbitos. Los efectos colaterales se perciben después: aumenta el trabajo de administración, gestión de licencias, riesgos de seguridad… Desaprovechamiento de recursos. Crear máquinas virtuales innecesarias tiene un coste en ocupación de recursos, principalmente en espacio en disco, RAM y capacidad de proceso. La avería del servidor anfitrión de virtualización afecta a todas las máquinas virtuales alojadas en él. Ahora más que nunca deberemos adoptar soluciones de alta disponibilidad como clustering y replicación para evitar caídas de servicio de múltiples servidores con una única avería. La portabilidad entre plataformas está condicionada a la solución de virtualización adoptada. Elegir GNU/Linux, Mac OS X, Windows o Solaris como anfitrión es una decisión importante en entornos corporativos. Quizás interesaría migrar en el futuro. Disminuye el número de ventas de hardware. Aunque el hardware adquirido para alojar máquinas virtuales es más potente, el número de máquinas vendidas será inferior ¿nos pondrán los fabricantes de hardware un Canon por la Virtualización? El sistema operativo anfitrión se vuelve de rol crítico. Hasta ahora estábamos acostumbrados a utilizar un sistema para todas nuestras necesidades. Pero, cuando varios servidores o entornos de producción virtualizados dependen de la estabilidad de su anfitrión, nos pensaremos mucho antes de aplicar actualizaciones y parches. Será necesario reforzar la seguridad y estabilidad, así que ¿quién habló de reiniciar? Maquinas virtuales Máquinas virtuales de proceso Una máquina virtual de proceso, a veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma. El ejemplo más conocido actualmente de este tipo de máquina virtual es la máquina virtual java. Otra máquina virtual muy conocida es la del entorno.Net de Microsoft que se llama "Common Language Runtime". Máquinas virtuales de sistema Las máquinas virtuales de sistema, también llamadas máquinas virtuales de hardware, permiten a la máquina física subyacente multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualización se la llama monitor de máquina virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operating system"). Aplicaciones de las máquinas virtuales de sistema Varios sistemas operativos distintos pueden coexistir sobre la misma computadora, en sólido aislamiento el uno del otro, por ejemplo para probar un sistema operativo nuevo sin necesidad de instalarlo directamente. La máquina virtual puede proporcionar una arquitectura de instrucciones (ISA]) que sea algo distinta de la verdadera máquina. Es decir, podemos simular hardware. Varias máquinas virtuales (cada una con su propio sistema operativo llamado sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar servidores. Esto permite que servicios que normalmente se tengan que ejecutar en computadoras distintas para evitar interferencias, se puedan ejecutar en la misma máquina de manera completamente aislada y compartiendo los recursos de una única computadora. La consolidación de servidores a menudo contribuye a reducir el coste total de las instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en hardware. La virtualización es una excelente opción hoy día, ya que las máquinas actuales (Laptops, desktops, servidores) en la mayoría de los casos están siendo "sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.), llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, la necesidad de nuevas máquinas en una ya existente permite un ahorro considerable de los costos asociados (energía, mantenimiento, espacio, etc). Desventajas de las Maquinas Virtuales Uno de los inconvenientes de las máquinas virtuales es que agregan gran complejidad al sistema en tiempo de ejecución. Esto tiene como efecto la ralentización del sistema, es decir, el programa no alcanzará la misma velocidad de ejecución que si se instalase directamente en el sistema operativo "anfitrión" (host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa esta pérdida de eficiencia. Técnicas de Virtualización. Emulación del hardware subyacente (ejecución nativa) Emulación del hardware subyacente (ejecución nativa) Esta técnica se suele llamar virtualización completa (full virtualization) del hardware, y se puede implementar usando un hypervisor de Tipo 1 o de Tipo 2: el tipo 1 se ejecuta directamente sobre el hardware. el tipo 2 se ejecuta sobre otro sistema operativo. Cada máquina virtual puede ejecutar cualquier sistema operativo soportado por el hardware subyacente. Así los usuarios pueden ejecutar dos o más sistemas operativos distintos simultáneamente en computadoras "privadas" virtuales. El sistema pionero que utilizó este concepto fue la CP-40, la primera versión (1967) de la CP/CMS de IBM (1967-1972) y el precursor de la familia VM de IBM (de 1972 en adelante). Con la arquitectura VM, la mayor parte de usuarios controlan un sistema operativo monousuario relativamente simple llamado CMS que se ejecuta en la máquina virtual VM. Actualmente tanto Intel como AMD han introducido prestaciones procesadores x86 para permitir la virtualización de hardware. a sus Emulación de un sistema no nativo Las máquinas virtuales también pueden actuar como emuladores de hardware, permitiendo que aplicaciones y sistemas operativos concebidos para otras arquitecturas de procesador se puedan ejecutar sobre un hardware que en teoría no soportan. Algunas máquinas virtuales emulan hardware que sólo existe como una especificación. Por ejemplo: La máquina virtual P-Code que permitía a los programadores de Pascal crear aplicaciones que se ejecutasen sobre cualquier computadora con esta máquina virtual correctamente instalada. La máquina virtual de Java. La máquina virtual del entorno .NET. Open Firmware Esta técnica permite que cualquier computadora pueda ejecutar software escrito para la máquina virtual. Sólo la máquina virtual en sí misma debe ser portada a cada una de las plataformas de hardware. Virtualización a nivel de sistema operativo Esta técnica consiste en dividir una computadora en varios compartimentos independientes de manera que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del usuario, el sistema en su conjunto actúa como si realmente existiesen varios servidores ejecutándose en varias máquinas distintas. Dos ejemplos son las zonas de Solaris (Solaris Zones) y la técnica de Micro Partioning de AIX. Paravirtualización La Paravirtualización consiste en ejecutar sistemas operativos guests sobre otro sistema operativo que actúa como hipervisor (host). Los guests tienen que comunicarse con el hypervisor para lograr la virtualización. Las ventajas de este enfoque son un muy buen rendimiento y la posibilidad de ejecutar distintos sistemas operativos como guests. Se obtienen, además, todas las ventajas de la virtualización enunciadas anteriormente. Su desventaja es que los sistemas operativos guests deben ser modificados para funcionar en este esquema. Virtualización asistida por Hardware Virtualización asistida por Hardware son extensiones introducidas en la arquitectura de procesador x86 para facilitar las tareas de virtualización al software ejecutándose sobre el sistema. Si cuatro son los niveles de privilegio o anillos de ejecución en esta arquitectura, desde el cero o de mayor privilegio, que se destina a las operaciones del kernel de SO, al tres, con privilegios menores que es el utilizado por los procesos de usuario, en esta nueva arquitectura se introduce un anillo interior o ring -1 que será el que un hypervisor o Virtual Machine Monitor usará para aislar todas las capas superiores de software de las operaciones de virtualización. Caracteristicas KVM, VirtualBox, VMware, Xen, Open VZ, Exokernel. KVM KVM realiza una virtualización completa, a diferencia de otras alternativas que hacen emulación del procesador (Virtual Box, VMWare), lo cual da muchísima usabilidad y flexibilidad, pero no aprovecha bien los recursos del servidor, lo cual hace un poco mas lenta la ejecución del SO huésped. Estos son algunas cualidades de KVM: 1. Es un módulo del kernel, luego no hace falta arrancar kernels especiales ni aplicar parches. 2. No es necesario modificar el kernel del sistema operativo que vas a ejecutar dentro de la máquina virtual. 3. Soporta tecnología NUMA, por lo que permite una escalabilidad muy amplia. 4. Tiene muy pocas líneas de código. 5. Usa el scheduler y gestor de memoria propio del kernel. 6. Fácil instalación, ya que necesitas instalar solo 3 paquetes (qemu, kvm y kvmkmp). Estos son algunos puntos en contra de KVM: 1. Necesitas tener un procesador con soporte para virtualización por hardware, como son los procesadores con tecnología AMD-V e Intel-VT. 2. No tiene interfaces gráficas bonitas y sencillas de usar para configurar y administrarlo. 3. No es una herramienta multiplataforma, ya que se ejecuta solo en Linux. La interfaz de escritorio para administrar las maquinas virtual se llama Virtual Machine Manager (virt-manager es el nombre del paquete). Esta permite tener una visión del funcionamiento y utilización de los recursos en tiempo real, actualizaciones y estadísticas de la utilización de recursos. Permite ver los gráficos detallados de rendimiento y utilización en el tiempo. Permite la creación de nuevos dominios, la configuración y el ajuste de la asignación de recursos de un dominio y hardware virtual. Trae incorporado un cliente de VNC, la cual presenta una consola gráfica completa del dominio huésped. No podemos omitir el gran cambio que realizo Red Hat al migrar de Xen a KVM, brindándole un apoyo mas que importante. Red Hat decidió llevar su solución de virtualización RHEV (Red Hat Enterprise Virtualization) a KVM, produciendo un impacto alto en el mercado y lanzándose como un competidor a tener en cuenta. La empresa del sombrero rojo lanzo RHEV 2.2, el cual presenta las siguientes cualidades: 1. Alta disponibilidad (cuando una servidor físico presenta una falla de hardware, los servidores virtuales que se estaban ejecutando en dicho hardware, se reinician y levantan en otro servidor físico) 2. Migración en caliente (permite migrar una maquina virtual de servidor físico sin la necesidad de apagarla o reiniciarla y sin afectar la performance) 3. Baja los costos de licenciamiento ente un 60% y 80% con respecto a sus competidores. 4. Las aplicaciones certificadas para RH, Oracle y SAP por ejemplo, pueden ser utilizadas con RHEV. 5. Modelo híbrido ya que RHEV tiene la capacidad de ejecutar maquinas virtuales como físicas en la misma plataforma. 6. Ahorro de energía al concentrar las maquinas virtuales en pocos servidores durante las horas de baja demanda. 7. Snapshot 8. Virtualización tanto para servidores como para desktop. 9. Balanceo de carga. 10. Soporte para múltiples arquitecturas de hardware (x86, POWER, SystemZ, Itanium) 11. Amplia variedad de ofertas para pilas de middleware (Java EE Application Platform, ESB, Portal Server) 12. Capacidad de transferir una aplicación entre servidores físicos y virtuales. Al tener una interfaz grafica sencilla y no ser muy intuitiva, no es un sistema recomendado para usuarios que se inicializan en la virtualización. Red Hat lo presenta con el Virtualization Manager, el cual esta basado en el Virtual Machine Manager y permite administrar el entorno virtual. VirtualBox Oracle VM VirtualBox es un software de virtualización para arquitecturas x86/amd64, creado originalmente por la empresa alemana innotek GmbH. Actualmente es desarrollado por Oracle Corporation como parte de su familia de productos devirtualización. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como «sistemas invitados», dentro de otro sistema operativo «anfitrión», cada uno con su propio ambiente virtual. Entre los sistemas operativos soportados (en modo anfitrión) se encuentran GNU/Linux, Mac OS X, OS/2 Warp , Microsoft Windows, y Solaris/OpenSolaris, y dentro de ellos es posible virtualizar los sistemas operativos FreeBSD, GNU/Linux,OpenBSD, OS/2 Warp, Windows, Solaris, MSDOS y muchos otros. La aplicación fue inicialmente ofrecida bajo una licencia de software privativo, pero en enero de 2007, después de años de desarrollo, surgió VirtualBox OSE (Open Source Edition) bajo la licencia GPL 2. Actualmente existe la versión privativa Oracle VM VirtualBox, que es gratuita únicamente bajo uso personal o de evaluación, y esta sujeta a la licencia de "Uso Personal y de Evaluación VirtualBox" (VirtualBox Personal Use and Evaluation License o PUEL) y la versión Open Source, VirtualBox OSE, que es software libre, sujeta a la licencia GPL. VirtualBox ofrece algunas funcionalidades interesantes, como la ejecución de maquinas virtuales de forma remota, por medio del Remote Desktop Protocol (RDP), soporte iSCSI, aunque estas opciones no están disponibles en la versión OSE. En cuanto a la emulación de hardware, los discos duros de los sistemas invitados son almacenados en los sistemas anfitriones como archivos individuales en un contenedor llamado Virtual Disk Image, incompatible con los demás software de virtualización. Otra de las funciones que presenta es la de montar imágenes ISO como unidades virtuales ópticas de CD o DVD, o como un disquete. Tiene un paquete de controladores que permiten aceleración en 3D, pantalla completa, hasta 4 placas PCI Ethernet (8 si se utiliza la línea de comandos para configurarlas), integración con teclado y ratón. VMWare VMWare es un sistema de virtualización por software. Un sistema virtual por software es un programa que simula un sistema físico (un computador, un hardware) con unas características de hardware determinadas. Cuando se ejecuta el programa (simulador), proporciona un ambiente de ejecución similar a todos los efectos a un computador físico (excepto en el puro acceso físico al hardware simulado), con CPU (puede ser más de una), BIOS, tarjeta gráfica, memoria RAM, tarjeta de red, sistema de sonido, conexión USB, disco duro (pueden ser más de uno), etc. Un virtualizador por software permite ejecutar (simular) varios computadores (sistemas operativos) dentro de un mismo hardware de manera simultánea, permitiendo así el mayor aprovechamiento de recursos. No obstante, y al ser una capa intermedia entre el sistema físico y el sistema operativo que funciona en el hardware emulado, la velocidad de ejecución de este último es menor, pero en la mayoría de los casos suficiente para usarse en entornos de producción. VMWare es similar a su homólogo Virtual PC, aunque existen diferencias entre ambos que afectan a la forma en la que el software interactúa con el sistema físico. El rendimiento del sistema virtual varía dependiendo de las características del sistema físico en el que se ejecute, y de los recursos virtuales (CPU, RAM, etc.) asignados al sistema virtual. Mientras que VirtualPC emula una plataforma x86, Vmware la virtualiza, de forma que la mayor parte de las instrucciones en VMWare se ejecuta directamente sobre el hardware físico, mientras que en el caso de Virtual PC se traducen en llamadas al sistema operativo que se ejecuta en el sistema físico. XEN Xen es un monitor de máquina virtual de código abierto desarrollado por la Universidad de Cambridge. La meta del diseño es poder ejecutar instancias de sistemas operativos con todas sus características, de forma completamente funcional en un equipo sencillo. Xen proporciona aislamiento seguro, control de recursos, garantías de calidad de servicio y migración de máquinas virtuales en caliente. Los sistemas operativos pueden ser modificados explícitamente para correr Xen (aunque manteniendo la compatibilidad con aplicaciones de usuario). Esto permite a Xen alcanzar virtualización de alto rendimiento sin un soporte especial de hardware. Intel ha realizado diversas contribuciones a Xen que han permitido añadir soporte para sus extensiones de arquitectura VT-X Vanderpool. Esta tecnología permite que sistemas operativos sin modificar actúen como hosts dentro de las máquinas virtuales de Xen, siempre y cuando el servidor físico soporte las extensiones VT de Intel o Pacifica de AMD. Las máquinas virtuales son usadas a menudo por las empresas en sus servidores y ordenadores centrales para abstraer la mayor cantidad de aplicaciones posibles y proteger las aplicaciones poniéndolas en máquinas virtuales diferentes (semejante a una jaula chroot). Se puede utilizar no sólo por razones de seguridad o funcionamiento, sino también para poder tener ejecutándose diferentes sistemas operativos en el mismo ordenador. Con la migración de máquinas virtuales en caliente de Xen se puede conseguir hacer balance de cargas sin tiempos muertos. Xen utiliza una técnica llamada paravirtualización para alcanzar alto rendimiento (es decir, bajas penalizaciones del rendimiento, típicamente alrededor del 2%, con los peores casos rondando el 8%; esto contrasta con las soluciones de emulación que habitualmente sufren penalizaciones de un 20%). Con la paravirtualización, se puede alcanzar alto rendimiento incluso en arquitecturas (x86) que no suelen conseguirse con técnicas tradicionales de virtualización. A diferencia de las máquinas virtuales tradicionales, que proporcionan entornos basados en software para simular hardware, Xen requiere portar los sistemas operativos para adaptarse al API de Xen Open VZ OpenVZ es una tecnología de virtualización en el nivel de sistema operativo para Linux. OpenVZ permite que un servidor físico ejecute múltiples instancias de sistemas operativos aislados, conocidos como Servidores Privados Virtuales (SPV o VPS en inglés) o Entornos Virtuales (EV). Si se lo compara a máquinas virtuales tales como VMWare, VirtualBox y las tecnologías de virtualización tales como Xen, OpenVZ ofrece menor flexibilidad en la elección del sistema operativo: tanto los huéspedes como los anfitriones deben ser Linux (aunque las distribuciones de GNU/Linux pueden ser diferentes en diferentes EVs). Sin embargo, la virtualización en el nivel de sistema operativo de OpenVZ proporciona mejor rendimiento, escalabilidad, densidad, administración de recursos dinámicos, y facilidad de administración que las alternativas. Como todos los EVs usan el mismo kernel, la administración de recursos es de suprema importancia. Realmente, cada EV debería permanecer dentro de sus límites y no afectar a otros EVs de ninguna manera - y esto es lo que la administración de recursos hace. La administración de recursos de OpenVZ consiste de tres componentes: cuota de disco de dos niveles, planificador de CPU razonable, y monitor de usuarios. Debe notarse que todos esos recursos se pueden cambiar durante el tiempo de ejecución de un EV, no hay necesidad de reiniciar el sistema. Es decir, si se desea dar a un EV menos memoria, sencillamente hay que cambiar los parámetros apropiados al vuelo. Esto es o muy difícil de hacer o imposible con otras maneras de virtualización tales como VM o hypervisor. Exokernel El exonúcleo (en inglés: exokernel) es un sistema creado con fines de investigación en el Instituto Tecnológico de Massachusetts (MIT) sobre OpenBSD y un tipo de sistemas operativos similares. Su propósito es crear una especie de capa de software para otros sistemas virtuales. Motivación Tradicionalmente los diseñadores de núcleos intentaban hacer invisibles los recursos de hardware a las aplicaciones requiriendo que interactúen con el hardware de alguna manera conceptual. Estos modelos incluyen sistemas de archivos para almacenamiento en disco, espacio de direcciones virtual, calendarizadores para el manejo de las tareas y sockets para las comunicaciones en red. Estas abstracciones del hardware hacían más fácil escribir programas en general, pero limitaban el rendimiento y reprimían la experimentación de nuevas abstracciones. Una aplicación orientada a la seguridad podría necesitar un sistema de archivos que no dejase datos viejos en el disco, mientras que una aplicación orientada a la fiabilidad necesitaría un sistema que almacenase esos datos para recuperación en caso de fallos. Hiper-V. Hyper-V es la nueva tecnología de Microsoft orientada hacia la virtualización de infraestructuras, es la plataforma específica de virtualización que permite a varios sistemas operativos ejecutarse sobre el mismo hardware de manera aislada y compartiendo el acceso a los recursos físicos, en entornos Microsoft. Hyper-V provee el entorno de ejecución, y las herramientas de administración, necesarias para desarrollar y mantener un entorno completo basado en el uso de máquinas virtuales, permitiendo la ejecución simultánea de múltiples sistemas operativos sobre un hardware físico común. Conclusión Notamos que la mayoría de prestaciones de las diferentes tecnologías mencionadas se diferencian es su enfoque en cuanto a la estructura de la virtualización y cada una ha ido desarrollado su software según cree mas conveniente y de esta manera obtendrá mayores beneficios que la competencia. Independientemente de la tecnología usada y del tipo de virtualización, podemos notar que toda esta infraestructura y desarrollo de tecnologías tiene la finalidad de optimizar los recursos de los servidores permitiendo el despliegue de varias maquinas virtuales bajo los recursos de un computador principal.