Virtualización de las computadoras. Las Máquinas Virtuales(VMs)
Introducción
En los últimos años se ha iniciado toda una evolución en las redes de datos que está impulsando a la vez, a que los ingenieros de redes evolucionen a un ritmo acelerado. Programabilidad de la Redes, Automatización de las Redes, Redes Definidas por Software, Funciones de Redes Virtualizadas, son solo algunos de los grandes tópicos que hoy en día se escuchan. Y toda esta evolución ha tenido un gran empuje de una manera u otra gracias a la virtualización. Prestemos atención ya que desde aquí comenzaremos un proceso de aprendizaje de nuevos conceptos que deben ir quedando claro para entender de qué se trata todo esto.
¿Qué son las Máquinas Virtuales?
Comencemos por definir la virtualización de las computadoras. Se conoce como virtualización de computadoras al proceso de llevar a software una computadora, todos sus recursos, memoria, dispositivos de almacenamiento, CPUs se convierten en software. En otras palabras, es la abstracción de los recursos de una computadora, permitiendo manipular estos recursos como cualquier otro software. El resultado de este proceso es la creación de una máquina virtual, conocida en inglés como “Virtual Machine(VM)”.
Una de las mejores definiciones de una máquina virtual está descrita en la la documentación oficial de uno de las grandes empresas de virtualización, VMWare. A continuación traduzco y comparto:
“Una máquina virtual es una computadora de software que, como una computadora física, ejecuta un sistema operativo y aplicaciones. La máquina virtual se compone de un conjunto de especificaciones y archivos de configuración y es compatible con los recursos físicos de quien lo hospeda. Cada máquina virtual tiene dispositivos virtuales que proporcionan la misma funcionalidad que el hardware físico y tienen beneficios adicionales en términos de portabilidad, capacidad de administración y seguridad.”
Otra definición que fortalece la anterior es que una máquina virtual es una versión en software de una computadora o servidor. Una copia exacta del servidor físico en cuestión de Sistema Operativo(SO) y recursos. Múltiples máquinas pueden cargarse en un mismo servidor físico y se les pueden modificar sus recursos(memoria, CPU y disco duro) según las necesidades de la aplicación. No están limitadas a un SO. Se puede correr en estas VMs todos los SOs diferentes que existan, ya que cada uno es independiente del otro.
Tomando como ejemplo el caso de un servidor, este solo podía manejar un solo sistema operativo y en muchos casos una sola aplicación. Con el desarrollo de la virtualización fue posible reservar recursos de una PC o servidor para crear varias máquinas virtuales. Cómo fue esto posible, cuáles fueron los motivos que impulsaron a las compañías a la virtualización? Sigamos leyendo.
¿Cómo surgen las máquinas virtuales?
Durante las últimas décadas la sociedad se ha hecho muy dependiente de las computadoras para vivir el día a día o para el trabajo. De hecho las compañías se han hecho tan dependientes de las computadoras, servidores y redes, que la salida de servicio de uno de estos elementos aunque sea por poco tiempo puede causar un impacto financiero muy significativo para la compañía.
Como resultado de vivir en un mundo centrado en las computadoras, las empresas tienen que correr aplicaciones casi para todas las divisiones de sus negocios, y todas estas aplicaciones corren en servidores. Por lo general estas aplicaciones requieren de uno o varios servidores dedicados(Aplicación, Base de Datos, Ambientes de pruebas, Backups, Desarrollo, etc), los cuales no utilizan su máxima capacidad. Como es de imaginarse este crecimiento en aplicaciones trae consigo un gasto de implementación y operacional, situaciones que se estaban convirtiendo en grandes problemas y dolores de cabezas para las compañías.
Principales Problemas que Enfrentaban las Compañias
Los principales problemas con los que se estaban enfrentando las compañías eran varios.
Problemas de Espacio Físico
La era digital ha estado llevando a que todas las operaciones dentro de una compañía dependen de aplicaciones. Cada aplicación normalmente requería de servidores dedicados. Estos servidores dedicado a la vez requerían de más espacio físico. Para las empresas multinacionales y que ofrecen contenido en Internet, Web Hosting y otros servicios, resultaba no escalable en espacio físico.
Problemas de Subutilización de recursos en los equipos
No solamente las aplicaciones requerían de servidores dedicados para aplicación, sino que estas aplicaciones no utilizan el 100% de los recursos.En una arquitectura tradicional las diferentes aplicaciones que se alojan en diferentes servidores consumían menos del 50% de los recursos.
Problemas de alto consumo de energía(Aire acondicionado, etc)
Los servidores y el aire acondicionado son los grandes consumidores de energía en los centros de datos. Mientras más crecía la compañía, más crecía el centro de datos y más crecía el consumo energético, trayendo altos costos para mantener estos centros operativos 24/7.
Problemas de Copias de Respaldo(“Backups”)
Es de conocimiento de todos que los segundos se convierten en minutos y los minutos en horas cuando la aplicación que produce las ganancias a una empresa sale de servicio. Si un accidente en un centro de datos provoca que se corrompan las unidades de almacenamiento y se requiere de la restauración a partir de los Backups, sabemos que este proceso no es rápido y fácil. Porque aunque tengamos toda los datos, hay que reinstalar del Sistema Operativo, las aplicaciones, la configuración y posteriormente cargar los datos del Backup. No hay que vivirlo para imaginarse lo complicado y el tiempo que puede tomar.
Problemas de Alta Disponibilidad y Redundancia
Tradicionalmente las aplicaciones que se alojaban en servidores físicos requerían de otros servidores físicos para crear un Cluster que introdujera Alta Disponibilidad y Redundancia a las soluciones y utilizar protocolos complejos que estuvieran monitoreando y sincronizando ambos servidores de modo que ante una falla del servidor activo, el segundo pudiera tomar el control.
Problemas de Incompatibilidad de Hardware
Ciertos proveedores de aplicaciones ofrecen sus soluciones con todo el hardware instalado. Es muy frecuente encontrarse en un Data center con soluciones de múltiples fabricantes. Resulta que en ocasiones necesitas un repuesto para cambiar un parte de un servidor y que las partes que tengas disponibles no la puedas usar porque son incompatibles con el fabricante del servidor que la necesite. También te ves en la obligación de tener el mismo tipo de parte de múltiples fabricantes por el hecho de que son incompatibles entre sí.
Mantenimiento y operación
La administración, operación y mantenimiento de los servidores puede complicarse a medida que tu Centro de Datos va creciendo. Se hace necesario contratar más personal.
A todos estos problemas se les encontró una solución, las máquinas virtuales.
Beneficios de las máquinas virtuales
Con tan solo conocer los problemas que vinieron a resolver las máquinas virtuales nos podemos imaginar la gran cantidad de beneficios que surgen a partir de su uso.
Reducen Costos
El beneficio más evidente de las VMs es que reducen los gastos de comprar y mantener nuevos servidores físicos para nuevas aplicaciones. Pero además eso están los costos asociados a energía y enfriamiento por las altas temperaturas que generan los servidores físicos.
Menos Espacio
En términos de espacio la reducción es notable. La cantidad de racks que ocupan cientos de servidores puede reducirse a dos racks con servidores corriendo cientos de máquinas virtuales con gran alto nivel de disponibilidad.
Disponibilidad y Flexibilidad
Otros beneficios que ofrece la Virtualización es la Alta Disponibilidad, Flexibilidad y Alta tolerancia a falla. Con las VMs ya no se dan estos casos, porque en caso de fallas el controlador puede rápidamente relanzar una VM en otro servidor o incluso mover, sí, mover automáticamente la máquina sin crear perdida de datos o enfrentarse a tiempos con las aplicaciones fuera de servicio. El controlador centralizado maneja esto monitoreando las VMs como una función de HeartBeat.
Esta habilidad de moverse rápidamente entre servidores juega un papel muy importante en Business Continuity y Disaster Recovery. Se puede mover una máquina virtual tan simple como copiar un archivo. Ahora considérense los siguiente, IT puede mover rápidamente aplicaciones críticas perfectamente desde un DataCenter a otro en otra localidad sin apagarla o sacarla de servicio.
Aprovisionamiento rápido de aplicaciones
Anteriormente, construir, testear, desarrollar, y publicar servidores para los desarrolladores de aplicaciones era una tarea difícil, tediosa y costosa tarea porque diferentes ambientes de pruebas se requieren para diferentes proyectos.
Otro beneficio no menos importante, es que promueve naturalmente es la estandarización.
Aprovechamiento de los Recursos
Como las VMs son softwares, se pueden instalar en 1 solo equipo físico varias máquinas y aprovechar hasta el 80% de los recursos de dicho servidor. Y no solo se pueden correr en los servidores, sino que también se pueden suspender o pausar y moverlas a un servidor físico diferente siempre que quieras. Puedes incluso realizar una o múltiples copias y correrlas en múltiples servidores. Todo esto rápido y fácil.
La magia que ha hecho realidad la virtualización de las computadoras se conoce como Hipervisor.
El Hipervisor
El Hipervisor es un software que se encarga de manejar y administrar la comunicación entre los recursos virtuales de las VMs y recursos físicos del servidor. Es el control de la virtualización que funciona como un Sistema Operativo de Sistemas Operativos, que administra y monitorea las VMs.
Como Sistema Operativo contiene los drivers para poder manejar los recursos físicos, dígase, los discos duros, las tarjetas de red, CPUs y demás interfaces de entrada y salida. Ahora bien, como Sistema Operativo de Sistemas Operativos este se encarga de crear las máquinas, monitorearlas y conectar los recursos virtuales asignados a cada una con los recursos físicos.
Como monitor de VMs este se encarga de administrar correctamente la comunicación de todas las máquinas virtuales, el procedimiento de los OSs con los recursos físicos haciendo uso de Multiplexación.
Tipos de Hipervisores
Existen dos tipos de hipervisores con una importante diferencia entre ellos:
- Hipervisor en Puro Metal(“Bare-Metal”) o Tipo 1. Este tipo de hipervisor corre directamente en el Hardware del servidor sin ningún tipo de Sistema Operativo Nativo. El mismo como software es un Sistema Operativo.
- Hipervisor Alojado(“Hosted”) ó Tipo 2. Este tipo de hipervisor corre encima de un Sistema Operativo ya instalado en un servidor.
Algunos de los hipervisores más populares son:
Hipervisor | Sistema Operativo Base | Tipo | Desarrollador |
KVM(Kernel-based Virtual Machine) | Linux | Tipo 1 | Qumranet, Inc |
XEN | Linux | Tipo 1 | Linux Foundation |
VMWare Esxi | Linux | Tipo 1 | VMWare Inc |
Microsoft Hyper-V | Windows | Tipo 2 | Microsoft |
Oracle VirtualBox | Linux o Windows | Tipo 2 | Oracle Corp. |
¿Cómo elegir cual hipervisor utilizar?
La primera consideración al elegir que hipervisor es si lo queremos del tipo Hosted o Bare-Metal.
Los hipervisores alojados son más fáciles de instalar, pero tienden a funcionar a menos de la capacidad total debido a la capa adicional que se agrega. Sin embargo, tienen una mayor flexibilidad, y si ya tiene servidores que ejecutan un sistema operativo específico, la transición a la virtualización es más fácil.
Los hipervisores nativos suelen ofrecer un mejor rendimiento para las máquinas virtuales que se ejecutan en ellos porque están conectados directamente al hardware. Esta respuesta de latencia mejorada es un factor importante, especialmente en un modelo de servicio donde puede haber acuerdos de nivel de servicio (SLA) que especifican el rendimiento del servidor y la aplicación.
Así que la elección va a depender del escenario en el que te encuentres y la inversión en tiempo y dinero que quisieras realizar.
Centros de Datos Virtualizados el próximo paso
La Virtualización de Centros de Datos(“Virtualized Data Centers”), el próximo paso dado con las máquinas virtuales.
Primeramente es importante entender que los Centros de Datos Virtualizados no son una Nube(Cloud), pero te pone a unos cuantos pasos de serlo. Cuando se habla de Centros de Datos Virtualizados estamos hablando de una infraestructura donde todos los servidores de aplicaciones están virtualizados. La Nube es una infraestructura de servicio donde se comparten los recursos de la infraestructura virtual, aplicaciones, software, infraestructura como un servicio. La palabra clave en esta diferencia es Servicio. El entender la diferencia entre una Nube y un Data Center Virtualizado es lo que ayuda a entender la definición de Nube.
En términos prácticos los beneficios de transformar un Centro de Datos tradicional en un Centro de Datos Virtualizado son:
- Producen Menos Calor
- Reduce los Gastos en Hardware
- Implementaciones más rápidas
- Se despliegan Ambientes Prueba y Desarrollo más rápido.
- Rápida reimplementación de aplicaciones
- Copias de Respaldo más Fáciles de Realizar
- Más rápida Recuperación ante Desastres
- Estandarización de los Servidores
- Separación de Servicios
- Fácil migración a la Nube
Conclusión
Tener bien claro que vimos en esta publicación es un importante paso para continuar entiendo y aprendiendo sobre temas de vanguardia como las Nubes y las Funciones de Redes Virtualizadas.
Esperen pronto Tutoriales de como instalar máquinas virtuales utilizando los diferentes tipos de hipervisores.