martes, 25 de octubre de 2011

Sistemas de virtualización: Hypervisores


Vamos a nombrar a continuación algunas de las empresas que se dedican a la creación y perfeccionamiento de los Hypervisores del mercado. Pero antes.... ¿Qué son los Hypervisores? Los Hypervisores son los sistemas que nos permiten crear e implementar la virtualización. Estos sistemas colocan una capa de abstracción sobre el hardware para que pueda ser utilizado por varios sistemas operativos al mismo tiempo. Esta tecnología data desde los años 70 en donde se comenzó a utilizar con los viejos sistemas Mainframe. La primera en implementarlo fue la empresa IBM con su Computador S/360 Modelo 67. Más tarde, alrededor de 1999, se comenzó a utilizar en arquitecturas x86, en donde uno de los pioneros fue la empresa VMware. Casi imitando el mismo concepto lo traslado a una arquitectura que utilizaba la mayoría de las empresas actuales. Los sistemas mainframes aún son muy costosos comparados con los sistemas x86. VMware actualmente ofrece al mercado uno de los mejores Hypervisores llamado vSphere ESXi. Pero rápidamente otros sistemas aparecieron para competir. Al principio la competencia era bastante dura y nadie entendía muy bien para que servía la virtualización. Había mucho miedo en las empresas y solo se comenzó a utilizar en sistemas de escritorio. En estos últimos años la carrera fue mucho más fácil pues los principales creadores de procesadores del mercado colocaron instrucciones embebidas para potenciar el uso de los Hypervisores. Tanto Intel como AMD siguen incrementando este potencial para cada uno de sus servidores nuevos. Aparece en escena XEN como otra solución de virtualización por los tiempos de VMware. Era un proyecto de la Universidad de Cambridge, el cual adquiere luego la empresa Citrix en el año 2007 por unos 500 millones de dólares. Citrix crea entonces Xen Server, sistema que le ha hecho un poco más difícil el camino a su predecesora VMware pero especializándose en sistemas de escritorio virtuales. Luego aparecieron más empresas en el camino como Microsoft, un poco retrasada pero con una buena solución llamada Hyper-V. Le lleva 10 años de investigación a VMware pero presentaron una buena competencia según el cuadro de Gartner de la aceptación de los sistemas de virtualización por parte de los grandes CEOs de las compañías en el año 2010. 

Tenemos otros tantos Hipervisores en el mercado que están revolucionando todas las expectativas como ser Oracle VM, RedHat KVM, Parallels y otras menos conocidos que no tuvieron mucha repercusión como Basilisk, BOCHS, Virtuozzo, vMac, SheepShaver, etc. Continuando un poco con la explicación sobre los Hypervisores, en este punto, quiero hacer una diferenciación de dos tipos de Hipervisores, los de tipo 1 y los de tipo 2. Tanto ESXi, como Xen Server, KVM, Oracle VM o Hyper-V son sistemas del tipo 1, los cuales se instalan directamente en el hardware, son sistemas operativos puros. En el tipo 2 de Hypervisores podemos encontrar tanto a Virtual Server de Microsoft como a otras soluciones las cuales se instalan arriba de otro sistema operativo como Windows o Linux. Algunos competidores en este rango son VMware Server, VMware Workstation, VMware Player, Virtual Box, QEMU, Virtual PC y otros.

Hypervisor Tipo1
Hypervisor Tipo2
Existen otros tipos de sistemas de virtualización como por ejemplo las LPAR en los sistemas UNIX pero estos no son precisamente Hypervisores. Lo veremos más adelante en otro post de este Blog que te ayudará a entender un poco más de este mundo de virtualización. No dudes en recomendarnos si esta información te ha sido útil.

martes, 18 de octubre de 2011

¿Qué es KVM?

En esta ocasión vamos a presentar KVM (Kernel based Virtual Machine), una de las tantas herramientas de virtualización. Basada en GNU/Linux y desarrollada por la empresa Qumranet, esta herramienta de software libre permite la virtualización sobre hardware X86 y viene incluido por default a partir del Kernel 2.6.20 de Linux, permitiendo una rapida implementación.
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 instalacion, ya que necesitas instalar solo 3 paquetes (qemu, kvm y kvm-kmp).
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 utilizacion 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, brindandole un apoyo mas que importante. Red Hat decidio llevar su solucion de virtualizacion RHEV (Red Hat Enterprise Virtualization) a KVM, produciendo un impacto alto en el mercado y lanzandose 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 fisico 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 fisicas 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 aplicacion entre servidores fisicos y virtuales.
Al tener una interfaz grafica sencilla y no ser muy intuitivo, 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.

sábado, 8 de octubre de 2011

¿Qué es Cloud Computing o computación en la nube?

Hay muchos mitos sobre este tema, mucho marketing y muchos conceptos mezclados. Hay quienes dicen que el Cloud Computing ya existía hace mucho tiempo, hay quienes dicen que es toda una tecnología nueva. Las empresas lo venden como una revolución tecnológica. Todos ellos tienen un poco de razón y muchos tienen un poco de exageración. Según un estándar que busca seguir EEUU, en una nota publicada por el MIT, este mes, el Cloud Computing es:

"a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction."

Para mi, algo más simple sería:

"Cloud Computing es una forma de brindar servicios bajo demanda sobre Internet"

¿Es cierto que es una tecnología nueva? No tanto, en realidad la tecnología que soporta que el servicio este online 99,9% del tiempo está muy desarrollada y automatizada cada día más.
En parte, el motor que hace mover los servicios de Cloud es la virtualización y la computación distribuida al estilo GRID. Tecnologías bastante desarrolladas desde el siglo pasado, sin embrago no alcanza porque también, estos servicios, tienen un alto grado de automatización que no es muy fácil de desarrollar en cualquier entorno de virtualización.
¿Es cierto que es un término nuevo? En realidad el término si es nuevo, pero por una cuestión de marketing. Este tipo de servicios ya se venían dando. Tenemos por ejemplo el correo web, los repositorios de fotografías, los repositorios de código fuente, de música, etc, todos pueden considerarse un servicio de Cloud.
¿Es cierto que el Cloud Computing no está offline nunca? Bueno, esto no es del todo cierto, salvo que los servicios que dicen llamarse servicios Cloud estén bajo un sistema de virtualización, en Cluster, que soporte el HA (High Availability - Alta Disponibilidad), DRS (Distributed Resourced Scheduling - o también distribución de carga). Estas características permiten que los equipos físicos puedan romperse sin necesidad de que el servicio deje de ofrecerse, pueden apagarse equipos para mantenimiento, pueden migrarse Datacenters enteros a otra región física, pueden soporta grandes cargas de trabajo y también son muy fácil de escalar y actualizar. Más allá de que el sistema sea virtualizado o no debe contener estas características antes nombradas. Google, por ejemplo, da servicios que podrían categorizarse como servicios Cloud pero un poco diferente a los demás. Utiliza computación distribuida o grid computing con un lenguaje de programación interpretado. Es el rey de la computación distribuida, sus servidores son enjambres de máquinas chicas, sin carcasa y casi atadas con cinta, de bajo costo, pero de un gran potencial  (....no me cabe duda que si juntamos un par de celulares tengamos el mismo o mejor potencial que un servidor actual..... la Nasa por ejemplo, recopiló varios Play Station para hacer una super computadora de alta resolución gráfica para mapas de navegación satelital.....).




Existen tres tipos básicos de servicios Cloud:

  • Los que se refieren a servicios de Infraestructura correspondiente a la entrega de servidores virtuales, capacidades de storage, capacidades de memoria ram, de red, se llaman IaaS
  • los servicios basados en software como por ejemplo un Correo Web, aplicaciones de escritorio web como Google Docs, Office Online, Sales Force, Facebook y otros, que se llaman SaaS
  • y también los que entregan una plataforma de desarrollo bajo demanda, por ejemplo Google App Engine, SourceForge, GemFire, y varios más, llamados PaaS.

A su vez, si hablamos de IaaS podemos encontrar tres tipos de Cloud Computing, dependiendo de si el servicio es dentro de una empresa, en ese caso es privado, sino el servicio es público y por último tenemos una combinación de estos dos llamado mixto. La gran incógnita de todos cuando se habla de Cloud Computing es:

¿Como se hacen los servicios de Cloud Computing privados o para el público?

Bueno, es bastante largo de contar y es muy oscuro el camino detrás del Cloud Computing, veremos muchos obstáculos para llegar a la verdad.... Me ha tocado ver las soluciones propuestas por varios vendors de la mano de grandes gerentes de venta y casi todos están muy verdes. Lo que se vende hoy como Cloud computing es una especie de automatización del sistema de virtualización que corre abajo pero falta mucho. Amazon lo logro, después de un montón de desarrollo y utilizando KVM como motor, pero esto funciona muy bien en EEUU donde las redes son otras, por nuestra región, en Argentina, esos servicios de Amazon sufren de mucho delay. VMware vende el Cloud Director pero su solución de Cloud Privado es mucho más visionaria, tiene software en desarrollo, aún le falta un poco. Microsoft tiene todo por hacer, todo es teórico y empresas como IBM o EMC también tienen sus soluciones pero todas muy complejas, sin nada de documentación ni clientes que se puedan visitar para asegurar su funcionamiento, hay que instalar 1000 aplicaciones y coordinarlas entre ellas. Por mi parte estoy estudiando una solución que me pareció bastante original que viene a un ritmo firme llamada OpenStack (originariamente un proyecto libre de la empresa Rackspace y la Nasa). Más adelante hablaremos de esta extraordinaria opción.
Si tendríamos que definir los pasos para construir un Cloud Privado, se nos podría ocurrir algo como los siguientes pasos según la lógica nos deja ver:
......primero y principal, podemos utilizar virtualización o grid computing. En nosotros queda la decisión de asegurar que contemos con los servicios antes nombrados. Luego de definir la base del hardware,  vamos a necesitar un sistema de automatización, de creación de equipos virtuales, normalización de templates, medidores de costos, facturación, asignaciones de disco según templates, autocrecimiento y decrecimiento de la granja virtual, monitoreos, alarmas que provoquen acciones, control de inventario y capacity planning, por último, un sistema web que tome todas esas cuestiones y las resuelva en una linda interfaz para cada nivel de usuario, con workflows de aprobaciones, controles, disparadores de emails y confirmaciones, etc. Sin duda, no es soplar y hacer botellas como se nos está vendiendo en el mercado pero tarde o temprano estas soluciones van a ver la luz y se van a ir simplificando.

Empresas:
http://www.openstack.org
http://www.google.com/apps
http://www.emc.com/leadership/programs/cloud_computing.htm
http://www.ibm.com/ar/services/cloud.phtml
http://hpcloud.com/

Estándares y definiciones:
MIT definition (2011): Cloud Computing Defined
NIST Cloud Computing Reference Architecture: Recommendations of the National Institute of Standards and Technology

domingo, 25 de septiembre de 2011

¿Qué es la virtualización?

Vamos a empezar el blog por el principio: ¿Qué es la Virtualización? Si investigamos un poco por la web vamos a encontrar un montón de definiciones. La más escuchadas es la siguiente:

"Es la forma de re-aprovechar los recursos físicos de una computadora, donde ayer funcionaba solamente una hoy funcionan dos, tres o más "

Hoy no es la más acertada porque tenemos distintos tipos de virtualización como veremos más adelante. Pero vamos a ejemplificar para que vayamos entendiendo más a fondo este concepto. Imaginen tener una laptop en la mano, tienen un gran poder de procesamiento y cómputo que no siempre está siendo utilizado todo el tiempo. Hoy en una misma laptop podemos tener funcionando dos por el mismo precio, para el fin que nosotros queramos e imaginemos, pero hoy es posible. 


Lleven esta imagen hoy a los servidores (las grandes PCs de los centros de cómputos), es el mismo concepto: donde ayer corría un servidor hoy podemos correr dos, tres o más servidores con el mismo hardware. Entonces, no solo se re-aprovechan los recursos de una máquina sino que se re-aprovechan los recursos de la empresa también.
Con esta primera impresión podemos comenzar a entender que la virtualización genera grandes cantidades de ahorros y genera el máximo uso de recursos posible. También se ve una continua independencia del hardware y software donde ambos conceptos se comienzan a abstraer.
Cómo dijimos antes, hoy aparecen virtualizaciones de distintas cosas, hay distintos tipos de virtualización, no solo de servidores o máquinas de escritorio, sino que hoy hablamos también de virtualización de aplicaciones, virtualización de storage (discos, dispositivos de almacenamientos) y hasta virtualización de celulares. Pero todos persiguen el mismo fin.
La virtualización de aplicaciones busca re-aprovechar el poder de cálculo de los servidores centralizando el uso de las aplicaciones dentro de una empresa, re-aprovecha el poder del software de la empresa. Un ejemplo sería instalar un Word en un servidor y darle acceso a utilizarlo a las distintas laptops de la empresa. Estás máquinas de escritorio no tendrían que instalarse localmente la aplicación, la verían como local pero la utilizarían desde el servidor.
La virtualización del storage plantea un concepto mucho más dificil de entender pero a grandes razgos significa que no importaría que tantos tipos de storage utilicemos sino que lo podemos utilizar en cualquier lugar cuando lo necesitemos. Podemos tener en la empresa 3 o 4 tipos de cajas de storage y verlas como un solo sistema de disparador de recursos de almacenamiento. Otra vez, se busca re-aprovechar los recursos de storage de una empresa o grupo económico.
La virtualización de celulares es un concepto mucho más humano, se busca que las personas no tengan que llevar dos o tres dispositivos en sus bolsillos, uno para el trabajo, uno personal, otro para guardias, etc. La virtualización de celulares unifica todos en un sólo equipo. Este concepto, más que re-aprovechar hardware, re-aprovecha comodidad y estilo de vida. En sintesis gastamos menos vida llevando un dispositivo que cargando con 3. Nos baja el peso que llevamos encima todo el día, nos baja los niveles de radiación probocados por estos dispositivos y también por supuesto nos baja el nivel de stress y nos brinda comodidad. En síntesis, podemos definir la Virtualización como:

Aprovechar al máximo los recursos disponibles.

Yo creo que esta es una simple y concreta definición que podemos asociar con cualquier tipo de virtualización. No queda duda que la virtualización está cambiando los conceptos de la vieja computación, está cambiando los negocios y modelos de empresa, está cambiando las comunicaciones y hasta el estilo de vida de las personas. Los invito a que sigan aprendiendo más sobre esta tecnología ;)

Datos iniciales

Datos avanzados
White Paper de VMware: Patente de la tecnología de virtualización para plataformas x86