| Inicio | Noticias | Comunicados | Mesa de ayuda | Mapa de sitio | RSS |
|
Mundo Virtual III: TecnologÃas y opciones para virtualizar Mundo virtual II Como recordaremos de los artÃculos anteriores, primero comenzamos por decidir que sistemas se podÃan virtualizar, luego ponderamos la infraestructura y condiciones necesarias para hacerlo, considerando que no existe una receta de cocina como tal, sino que las caracterÃsticas y necesidades de la organización son las que en realidad determinan los sistemas anfitriones y del alcance de esta tecnologÃa en los centros de cómputo. Ahora que ya tenemos definido el qué, veremos con qué realizaremos estas implementaciones, pero para ello primero entenderemos la tecnologÃa subyacente a la virtualización y sus variantes, lo que impacta no sólo en la parte de la solución utilizada, sino hasta en el equipamiento y el sistema operativo del anfitrión. De igual forma, veremos brevemente las principales soluciones para la implementación de ambientes virtuales en un entorno Linux, que en su mayor parte pueden utilizarse sin costo de licenciamiento. La relación entre los sistemas y la solución de virtualización. Esencialmente tenemos dos tipos de sistemas que conforman cualquier solución de virtualización: * Anfitrión o host, que es el equipo fÃsico (memoria RAM, espacio fÃsico, procesador) y que accede a los recursos conectados local o remotamente (dispositivos externos, almacenamiento, unidades de red). * Huesped o guest, sistema virtualizado que reside en el anfitrión y que transfiere sus peticiones al sistema real para atender los servicios que ofrece. En este caso, podemos tener tantos como el anfitrión soporte, lo que depende del dimensionamiento que hayamos realizado previamente. La selección del sistema operativo del anfitrión dependerán en gran medida del conocimiento del administrador del mismo, además que algunas soluciones de virtualización recomiendan o soportan versiones o sabores especÃficos, por lo que elegir ambas partes es muy importante. En medio de estos sistemas tenemos el virtualizador, que controla las peticiones de los huéspedes al anfitrión y por lo tanto, modula el volumen de recursos que asigna a cada huésped, aislándolo al mismo tiempo para evitar que realice acciones que sean perjudiciales al sistema real u otros sistemas virtualizados. Su operación es mucho más compleja de que parece, por lo que debe soportar el mayor número posible de estas caracterÃsticas: * Portabilidad. Importar y exportar los sistemas virtualizados de un equipo a otro, con el mejor soporte posible de sistemas operativos en el anfitrión. * Adición de recursos al sistema original. Facilidad de ampliar el espacio destinado a la MV, múltiples conexiones de red, comunicadción con equipos remotos u otros sistemas virtualizados. Esto pùede incluir la asignación dinámica de los recursos. * Soporte a hardware lo más amplio posible. Desde el reconocimiento de diferentes procesadores virtuales, hasta soporte a dispositivos USB, iSCSI, control de energÃa, PXE (Preboot Execution Environment), etc. * Generación de imágenes (snapshots) que mantienen una copia del estado de la MV en un momento determinado. * Administración remota, tanto desde una interface gráfica como por lÃnea de comandos. * Soporte a múltiples sistemas operativos huésped, tanto variaciones de MS Windows como sabores de Linux/Unix. * Panel de administración de los sistemas virtuales, para evaluar su consumo de recursos y prevenir caÃdas de los huéspedes. * Soporte a virtualización por hardware, que veremos más adelante. A pesar de la gran popularidad que tienen estas soluciones, una crÃtica generalizada es que las herramientas de administración todavÃa no han madurado lo suficiente para realizar de forma proactiva correcciones a las MV y en ocasiones, la experiencia del administrador es la que permite controlar el ambiente. Virtualización mediante software y hardware. Este no es un punto menor, ya que impacta eventualmente en el desempeño de las MV. Desde hace algunos años los dos principales fabricantes de procesadores han integrado sendas tecnologÃas para que, cuando se active, ayuden desde el hardware el proceso de virtualizar, lo que supone una forma de eficientar las implementaciones. En el caso de Intel se utiliza VT-x y para AMD tenemos AMD-V, las cuales difieren incluso en el proceso de invocación del sistema operativo. Las soluciones de virtualización por lo general pueden trabajar sólo desde software, en consideración que se utilice un servidor sin virtualización por hardware, pero esto impacta en el desempeño y de hecho, en diferentes ocasiones el virtualizador requiere alguna de estas tecnologÃas. De igual forma, algunos sistemas operativos necesitan de la virtualización por hardware, como es cuando realizan llamadas especiales a las funciones del procesador (existen pocos casos, como OS/2) o en ocasiones, para emular sistemas operativos a 64 bits. En el caso especÃfico de Linux, existe el módulo kvm (kernel virtual machine) a partir del kernel 2.6.6 (no estoy seguro de la versión) que conecta el sistema operativo con la tecnologÃa de virtualización del procesador, por lo que una vez que se activan ambos, la ejecución de máquinas virtuales mejora considerablemente. Frecuentemente se recomienda instalar el framework Dynamic Kernel Module Support (DKMS) para manejar las actualizaciones del kernel sin necesidad de reinstalar el virtualizador. Tipos de virtualización. No profundizaremos en este punto, ya que es muy técnico y sale del alcance del presente documento, por lo que se mencionaran exclusivamente los puntos más importantes. * Emulación ofrece la ejecución de un sistema operativo sin modificar dentro de otro, permitiendo la ejecución en el CPU nativamente en algunas opciones para mejorar el desempeño, sin embargo tienen un desepeño pobre, algunos ejemplos son los productos de VMware, QEmu, Bochs y Parallels. * Paravirtualización es la técnica para ejecutar múltiples sistemas operativos mediante una capa subyacente llamada hipervisor, algunos ejemplos son Xen y UML. * Virtualización a nivel de sistema operativo ejecuta múltiples instancias de sistemas operativos aislados el uno del otro, tiene el mejor desempeño (cercano al sistema real) y ofrece administración dinámica de los recursos, algunos ejemplos son FreeBSD Jail, Solaris Zones/Containers, Linux-VServer, OpenVZ y Virtuozzo. Tipos de soluciones para virtualizar. En este punto es donde comenzamos a decidir nuestra estrategia y con ello, la solución a utilizar. Nos enfocaremos principalmente en soluciones libres para Linux (aunque la mayorÃa puede soportar otras plataformas), pero aclaramos que la lista no es exhaustiva y claro está, existen opciones comerciales, frecuentemente basadas en las libres. Virtualización del escritorio. Con frecuencia se utiliza para probar sistemas operativos o aplicaciones, aunque eso no es impedimento para montar servicios pequeños en producción; por mi parte lo he hecho sin que los usuarios tengan mayores problemas por lo mismo. Las principales opciones son: * VirtualBox. Solución distribuida libremente por Sun Microsystems y que tiene un conjunto de opciones muy aceptable, es multiplataforma y bastante fácil de usar. * VMware Player. Producto comercial, se distribuye gratuitamente para usuarios finales y ofrece ventajas que lo colocan como el lÃder del mercado. Virtualización del servidor. Cuando nuestro objetivo es consolidar la plataforma informática y montar servicios crÃticos, lo más probable es que debamos considerar algunas de estas opciones, ya que soportan configuraciones relativamente complejas como clusterización (por ejemplo Heartbeat project), entre otras. * Xen. Es el más veterano y posiblemente el más sólido, ofrece un método llamado paravirtualización, lo que equivale a que el sistema huésped sabe que está virtualizado y por lo tanto, no es necesario convertir la peticiones al hardware de un sistema al otro, lo que naturalmente ofrece una mejora notable en el rendimiento al usar un módulo propio en el kernel llamado Xen Hypervisor. Su mayor desventaja es que es dÃficil de configurar y no tiene una interface de administración, Citrix ofrece de forma comercial su Citrix XenServer con muchas mejoras de la operación. * KVM. En lÃneas anteriores ya mencionamos al Kernel Virtual Machine Manager, que se incluye en el núcleo, no es tan maduro como Xen pero su facilidad de uso y administración promete mejorar su operación en poco tiempo, Ubuntu Linux tiene opciones de administración por lÃnea de comandos y herramientas gráficas. * OpenVZ. Es una implementación libre y gratuita a nivel kernel para virtualizar sistemas y aislarlos, con opciones de administración de los recursos para cada uno, generación de imágenes (snapshots) y otras ventajas. En esta solución se basa Parallels Virtuozzo Containers. Virtualización basada en el contenedor. Una de las opciones menos conocidas pero muy útil para 'clonar' máquinas virtuales en base al sistema operativo del anfitrión; fundamentalmente el sistema operativo del host se ejecuta en el núcleo del anfitrión, siendo OpenVZ el principal distribuidor de esta tecnologÃa, aunque no se vislumbra un uso importante en su futuro, por obvias razones, ya que se limitarÃa a replicar sistemas Linux, dejando de lado MS Windows, *BSD y otros más. En este punto, ya debemos estar cerca de realizar implementaciones en producción, por lo que en la siguiente entrega analizaremos las estrategias para lograrlo y algunas de las mejores prácticas al respecto. Fuente: La CofradÃa Digital / mexicoextremo Ver nota original |
| Última actualización el Jueves, 03 de Septiembre de 2009 16:29 |