sábado, 26 de octubre de 2013

Introducción a la virtualización. Independiente del fabricante.

Seguro que has oído hablar de la virtualización. Seguro que conoces productos para tal menester. Si eres del área de sistemas, o por supuesto de virtualización, seguro que todos estos conceptos los dominas, mucho más que yo !!!.
Hablando con colegas del ambito de la seguridad, me doy cuenta de que mucha gente confunde los términos, y no tiene muy clara la esencia de la virtualización.

Con esta seria de post voy a intentar aclarar algunos conceptos básicos, intentando compararlos con distintos fabricantes, para despejar las dudas.

Si tienes dudas sobre la implementación de soluciones de virtualización a nivel de conceptos, o a nivel técnico con tecnologías VmWare o Microsoft, no dudes en enviar un correo a kinomakino at hotmail or gmail dot com y estaré encantado de ayudarte.


Lo primero que debemos hacer es definir el concepto de virtualización. Es importante usar la nomenclatura correcta, porque en esta disciplina intervienen muchos muchos conceptos parecidos y virtuales!!! no son "tan tangibles" como los que estamos acostumbrados a emplear.

La virtualización consiste en implementar una capa de abstracción entre el hardware y el software.
Por ejemplo, cuando usamos VirtualBox para las máquinas virtuales, estamos haciendo que el sistema operativo instalado en la máquina virtual no vea nuestro PC físico, sino una emulación de los recursos CPU, MEMORIA, NIC´s etc. Si copiamos los ficheros de esa máquina virtual, y los instalamos en otro VirtualBox de otro PC, con distinto hardware, la máquina virtual no es consciente de ese cambio. VirtualBox abstrae la capa de hardware, emulándola mediante software.

Ya tenemos claro que es la virtualización. Ahora vamos a ver los dos tipos que existen,  Hypervisor tipo 1 y tipo 2.
Tipo 2.


 En el tipo 2, el caso de VirtualBox o VmWare Workstation o el antiguo Power PC. El equipo físico, que ahora llamaremos HOST tiene instalado un sistema operativo "normal", un MAC, un Win. un Linux... y mediante un programa de virtualización, se encarga de emular el hardware. Cada vez que una máquina virtual quiere RAM o CPU se lo pide al software de emulación, y este lo gestiona, emulando que la máquina virtual accede diréctamente a la CPU o RAM.

Tipo 1.


 En el tipo 1, sobre el equipo HOST se instala un sistema operativo mínimo, sin la mayoría de las funciones del sistema operativo, punto número 1 a la hora de mejorar el rendimiento.Por ejemplo el kernel del Hypervisor de tipo 1 de Vmware (ESXi) se carga completamente en memoria por unos 50 megas. Si comparas ese consumo de recursos con lo que consume un Xp, 2008, 2012, MacOs en memoria, más lo que consume el software de virtualización de tipo 2, el VirtualBox, ya tienes un ejemplo del ahorro.
Esta no es la principal ventaja de usar este tipo de virtualización. Otra ventaja es que en vez de preocuparnos del mantenimiento de un S.O. completa ( Windows Xp) frente a uno mínimo dedicado a virtualizar ( ESXi o Hyper V) nos preocupamos de mantener solo unas funciones. Un Windows Server que ofrece servicios de todo tipo ( DNS, FileServer, Directorio,etc) tiene actualizaciones todos los meses, mientras que un hypervisor tipo 1 tiene muchas menos funciones que parchear. A esto le añadimos la seguridad. Un Windows Server controlador de dominio y algún pequeño uso más, tiene 10-15 puertos abiertos...Ya tenemos dos ventajas, pero la principal ventaja es el rendimiento. Cuando una máquina virtual quiere acceder a datos de CPU o RAM accede directamente a la CPU/RAM, y el hypervisor de tipo 1 solo se encarga de gestionar la seguridad, optimización, colas de trabajo entre varias máquinas, etc.

Cada fabricante implementa soluciones distintas para el manejo de los recursos. Aunque esto es algo más avanzado, voy a poner un ejemplo de esta gestión de recursos. Imagina un equipo host con 5 máquinas virtuales "iguales", 5 escritorios Ubuntu. Cada uno tendrá una configuración por cada usuario, unos programas, un setting etc. Vmware tiene un servicio denominado Transparent Page Sharing que hace lo siguiente: es capaz de identificar áreas de memoria idénticas entre esas máquinas, y usar solo una ubicación en memoria, en vez de las 5 ubicaciones, una por máquina. Este tipo de soluciones son las que aportan diferencia entre usar Hypervisores de tipo1 o 2.

Entonces teniendo claro los tipos: Virtualización es cuando usamos el Tipo1  !! el tipo 2 yo lo llamaría más bien emulación. 

Vmware ESxi = Tipo 1.
Hyper-V = Tipo 1.
XenServer = Tipo 1.
KVM = Tipo 1.

Vmware WorkStation = Tipo 2.
VirtualBox = Tipo 2.
Virtual PC = Tipo 2.
Parallels = Tipo 2.

Los que habéis seguido el hilo, pensareis: Yo instalo un Windows Server 2008/2012. Sin roles. Voy configurando cosas (Active Directory, DNS, DHCP, FileServer etc) y quiero empezar a virtualizar. Instalo el role de Hyper-V. No sería el mismo caso que tener un Windows Xp/7 e instalar un programa de virtualización, pero en vez de Hyper-V, VirtualBox? Al fin y al cabo son programas sobre un sistema operativo. La respuesta es NO. Cuando agregamos el role de Hyper-V y reiniciamos el equipo, se instala el hypervisor Hyper-V en modo 1, un pequeño kernel denominado "kernel de capa -1" que virtualiza sobre si mismo el Windows Server que luego usamos para lo que teníamos configurado ( DNS, DHCP...) El propósito de explicar esto es para aclarar conceptos, no para explicar este funcionamiento concreto. KVM en los sistemas Linux se implementa de esta forma

Para adentrarse en este mundo, decir que estos visores de tipo 1 que indicábamos arriba suelen tener versiones gratuitas. Por supuesto que con algunas limitaciones.

Por ejemplo, la versión gratuita de Vmware, Esxi podemos descargarla desde aquí. Cuando instalamos esta versión tenemos 60 días de prueba de TODAS las funcionalidades y después tenemos licencia legal gratuita pero solo de las funciones que ofrecen gratis.

La versión gratuita de Hyper V de Microsoft la podemos descargar desde aquí. Con esta versión que tenemos? Un Windows completo gratís? No estamos locos !!! Tenemos una versión CORE de Windows Server 2012, es decir, sin interface gráfico, y solo con las funcionalidades necesarias para la virtualización. Por ejemplo no podremos instalar en ese Windows Server 2012 ni Active Directory ( si como miembro) ni Internet Information Server, ni SharePoint, ni Sql Server...solo instala Hyper-V.


Una de las cosas que mas cuesta identificar en este mundillo cuando te inicias es la nomenclatura.
Vamos a avanzar un poco más con los conceptos. 

Cuando instalamos estos Hypervisores gratuitos tenemos ciertas funcionalidades. Si usamos la versión comprada de ESXi, el hypervisor de Vmware, tenemos comprado una aplicación denominada Vsphere. Con esta aplicación podremos configurar todas esas funciones que no tenemos con la versión gratuita, y por ejemplo, toda la gestión cuando tenemos más de un equipo físisco, mas de un ESXi. Por ejemplo configurar la interconexión entre varios equipos físicos ESxi, Cluster de alta dsiponibilidad, etc.
Para enredar un poco más este asunto. Vsphere es una aplicación, pero donde se instala? se puede instalar físicamente en un equipo, o virtualizado. ¿Por qué querríamos instalar Vsphere en un equipo físico?. Si usamos esta aplicación para controlar 5 host ESXi físicos, y lo instalamos virtualmente sobre uno de ellos, y se rompe, quien controla los otros 4 equipos? OJO, si se rompe el servidor físico que ejecuta Vsphere, quien controla los 5 host físicos ESXi...
Esta aplicación puede correr bajo Linux o Windows. Si lo implementas sobre Windows, tendrás que usar una máquina (física o virtual) con un Windows Server, e instalar la aplicación normalmente. Necesitarás una licencia para ese Windows, y todo el mantenimiento que requiere un sistema Windows ( Seguridad, parches, rendimiento)Internamente usaría un Sql Server Express, o tenemos la posibilidad de conectarlo con una base de datos Sql Server completa externa ( requiere licencia).
Si decides implementar Vsphere sobre Linux, se ofrece en un appliance Suse con una bbdd Postgresql embebida. No se puede instalar Vsphere bajo linux en un servidor físico. Si queremos usar una base de datos externa para Vsphere, solo podemos trabajar con Oracle.



En  el caso de Hyper-V tenemos todas las características implementadas gratuitamente, pero mediante PowerShell o mediante administración remota, pero necesitamos un equipo Windows con el complemento ( una MMC) de Hyper-V. Podríamos administrarlo gráficamente con un Windows 8 o un servidor completo 2012. El software que se encargaría de administrar varios Hyper-V de manera centralizada por ejemplo clusters, hablamos de System Center.



Otro concepto que hay que tener claro es que las máquinas virtuales, a partir de ahora VM, son ficheros. Hay un fichero para definir la máquina virtual ( GB, CPU, tarjetas, puertos...) y generalizando, otro fichero para el disco duro. El hypervisor es el que se encarga de presentar ese fichero a la máquina virtual en forma de disco duro. 

No voy a hacer apología de la virtualización para todos !!. Hay muchas razones por las que consolidar nuestra infraestructura en un entorno virtualizado, pero no siempre debe ser así. Una de las razones que argumenta su uso me va a servir para explicar otros conceptos. Disponibilidad.

Vamos a seguir con lo que creo que todos conocemos, VirtualBox. Si guardamos la máquina virtual Backtrack, Kali... a un disco USB, si llevamos ese USB a otro PC con VirtualBox instalado y cargamos la máquina, funciona !!! Nos sirve como medida de recuperación de desastres tener una copia de nuestra máquina en un disco duro externo.

En un entorno real, imaginaros esa máquina virtual, pero en vez de un Backtrack con 40 gb de disco duro, tenemos un servidor de la empresa ( sobre ese VirtualPc)con una Debian, con una BBDD Mysql de 12 gigas y un servidor Tomcat con un montón de configuraciones. 200 Gb. Cuando tardas en copiar esa máquina virtual a un disco duro? Si se rompe el equipo donde estaba instalado VirtualBox, tienes que detectarlo, recuperar una copia de seguridad de ese fichero de 200gb, y ejecutarlo en otro equipo que tenga VirtualBox instalado. Esto de disponibilidad tiene poco, porque va a existir una ventana de tiempo entre ese cambio bastante considerable. Cual sería la solución? En este caso, sería usar un disco duro compartido, con el fichero de 200Gb de la máquina virtual conectado a dos equipos físicos con VirtualBox. Existiría un equipo ejecutando la máquina, y en caso de rotura, el segundo equipo iniciaría la máquina virtual, reduciendo el tiempo de copiar el disco duro de 200Gb desde otra ubicación.


Otro caso en el que la disponibilidad es necesaria es simplemente un equipo físico que debe ser actualizado. Que hacemos con su máquina virtual? Deberíamos apagar una VM, encenderla en otro equipo. Actualizar el primero equipo, apagar la VM en el segundo equipo, y encender la máquina en el primer equipo... Todo esto es tiempo.

Queda reflejada la necesidad de usar un ALMACENAMIENTO COMPARTIDO para nuestra solución de virtualización. Es este el aspecto MAS COMPLEJO en el mundo de la virtualización, por lo que si estás usando virtualización mediante Hypervisor de tipo 2 ( virtualbox) con los discos duros de tu portátil/pc ( da igual que sean usb) no estás prácticamente virtualizando.

Otro concepto importante en la virtualización es el de Instantáneas o SnapShot. Como hemos indicado, las máquinas virtuales son ficheros. Podemos tener una máquina virtual ejecutándose, y en cierto momento hacer una "foto". Por ejemplo antes de instalar un parche para una aplicación que queremos probar ( mejor en lab, pero a veces la vida es muy dura :-) ). El sistema de virtualización escribirá a disco el estado de la memoria Ram y los cambios del disco duro. Instalaremos el parche. Si todo ha ido bien, perfecto. Si ha habido un fallo en la actualización, podemos revertir el estado de esa máquina al estado que tenía antes de realizar la "foto" o instantánea. Esto no es una medida de backup como muchos piensan. Por ejemplo. Imaginamos una VM con 20 gb de disco y 10gb usados. Tendrá un disco duro virtual de ese tamaño. Hacemos una instantánea del sistema porque vamos a instalar una App. En el momento de hacer la instantánea dejaremos de escribir sobre el fichero de disco duro de la máquina virtual, y se creará un fichero de "instantánea" con todo lo que vamos haciendo. Si empleamos Snapshot para copias de seguridad, el fichero resultante crecerá conforme lo usamos. Si pasamos 10 días desde que hicimos el SnapShot, y ocupamos 8 Gb. Cuantos Gb REALES estaremos ocupando? 


Tenemos un disco duro de 20 Gb, el de la máquina virtual y tenemos otro fichero, con los datos del SnapShot ( por ejemplo los 8gb que hemos dicho que hemos empleado)es decir, tenemos 28Gb de almacenamiento real usado en nuestro disco duro físico. Si disponemos físicamente de 30 Gb en el disco duro vamos a tener un problema de almacenamiento en breve. Insisto en que el usuario de la maquina vería 18 Gb usados.

Ya tenemos claros varios conceptos importantes en la virtualización. Nos falta uno muy importante, para mi, el segundo más importante por debajo del almacenamiento, las redes !!. 

En el mundo físico conectamos los equipos mediante Switches, pero en el mundo virtual, ¿como conectamos a nivel de networking las máquinas virtuales que corren sobre el Hypervisor? Mediante switches virtuales...
Un ejemplo sencillo de Vswitch bajo Hyper-V lo escribió el otro día el compañero de SEGURIDAD A LO JABALI.


Si imaginamos un servidor físico con 4 tarjetas de red y 8 máquinas virtuales sobre el. Podemos hacer que unas máquinas se vean con otras, o que no se vean, o que usen directamente la tarjeta de red sin pasar por ningún Switch. O podemos hacer QoS (Quality of services) entre máquinas según nuestro interés. O podemos implementar balanceo de carga para usar dos tarjetas físicas con un servidor o grupo de servidores. O podemos conectar una de las tarjetas en modo promiscuo para usar un servicio de IDS o monitorización... Todas estas configuraciones las hacemos mediante Vswitch.

¿Y ahora qué?.


Si quieres iniciarte y preparar un laboratorio, voy a intentar resumir que debes hacer.
Si lo vas a hacer en un portatil o pc, tendrás que emular todo el laboratorio.
Necesitarías un hypervisor del tipo 2, el que más te guste, instalado en tu PC/MAC. Yo recomiendo usar Vmware WorkStation, porque si quieres pasar este laboratorio de pruebas a un entorno productivo existen mas facilidades. Si solo vas a probar, VirtualBox funciona de sobra.

Una vez que tienes tu Virtualbox. Si vas a practicar con Vmware, tienes que bajar:
  • Esxi Gratuito y añadirle el appliance Vpshere ( 60 días de pruebas)después.
    O
  • Vpshere 5.1 ISO. Que lo lleva todo, pero solo tendrás Vsphere disponible 60 días. Luego solo tendrás ESXi disponible de manera legal.
Si vas a practicar con Hyper-V, tienes que bajar:
  • Windows Server 2012 Hyper-v Free. Con esto tendrás una versión CORE, sin gráficos. Algo duro de gestionar mediante PowerShell sin gráficos.
    O
  • Windows Server 2012 versión de evaluación 180 días. Con esto tendrás Hyper-V y todo el Windows Server, pero solo durante ese tiempo.
    O
  • Bajar las dos. Instalar sobre VirtualBox el Hypervisor gratuito y legal. Una vez que tengas el Hypervisor legal, en modo CORE, puedes instalar sobre él un Windows Server 2012 completo de pruebas para gestionar graficamente el Hypervisor. Si tienes ya un Windows 2012 completo instalado lo puedes usar para manejar ese ESXi.

Tienes que tener claro que todo lo haces sobre VirtualBox porque no tenemos un equipo físico para el laboratorio. Si disponemos de un equipo "viejo" o para pruebas, instalaríamos el Hypervisor ( o ESXi o Hyper-V) directamente sobre ese PC.
Parece un poco lio, pero hay que tener en cuenta que es un laboratorio, y estamos emulando una virtualización sobre otra virtualización ( ESXi/Hyper-V sobre VirtualBox).

Si estás realmente interesado en probar estas tecnologías: en casa yo trabajo con un pc clónico I5 32 Gb de RAM y discos duros sata 7.200RPM normales y funciona a la perfección. En mi laboratorio tengo instalado un ESXi legal directamente en el PC ( lo que tu haces con Virtualbox porque no dedicas un pc físico) y sobre el tengo un Hyper-v virtual, que a su vez virtualiza máquinas mediante Hyper-V. También tengo un XenServer.

En el siguiente artículo voy a tratar de explicar los conceptos de almacenamiento que existen ahora en el mercado, a nivel general y explicando cada uso que se le da en el mundo de la virtualización.

Seguro que sabes exactamente que es y como funciona : NAS, SAN, LUN, ISCSi, Fiber Channel, NFS, DataSores, FCoE, Raid, SSD...

Gracias por leerme, espero que os guste el artículo.