Mostrando entradas con la etiqueta iSCSI. Mostrar todas las entradas
Mostrando entradas con la etiqueta iSCSI. Mostrar todas las entradas

martes, 23 de septiembre de 2008

Consulta Técnica: Rendimiento iSCSI

Leonardo nos pregunta:

"Hola, me gustaria saber cual es el rendimiento adecuado para accesos a disco en un entorno SAN Iscsi , en un cliente con una cabina iscsi equalogic me esta dando en maquinas virtuales con esx 3.5 update 2 tasas de 40 MB/s ... para el cliente este rendimiento es bajo, en el esx o maquina virtual se ha configurado todo y mas de lo que se debe configurar."

El tema del rendimiento iSCSI es un tema puntiagudo, en especial en entornos donde el número es importante: Es decir, donde tenemos a alguien para quien las métricas puras y duras son un parámetro de evaluación. En mis test con ESX, con varios targets, desde un Openfiler hasta un NetApp 3020, he obtenido picos de 750 Mbit/sec (Aprox. 94 MB/sec), aunque el mantenido se establece en unos 350/400 Mbit/sec (43 - 50 MB/sec). Por comparación, he realizado los mismos test bajo Windows Server, obteniendo límites algo superiores. El dato anecdótico es que en entornos Microsoft, el rendimiento de un SQL Server (por ejemplo) no difiere excesivamente de FC a 1/2 Gb/sec... Mis conclusiones son evidentes: a) El sistema operativo tiene mucho que decir en lo que a rendimiento de disco se refiere. b) El tipo de carga es determinante. Si aún así el cliente o responsable sigue insistiendo... responde al fuego con fuego: IOMeter en las VM, comparando, por ejemplo, el rendimiento de una VM sobre iSCSI y sobre disco local/SAN FC.

En el caso de ESX, independientemente del medio de acceso al disco, el trabajo de caching del ESX es fundamental... En especial en operaciones de disco "normales", es decir, con una VM más o menos típica... La cosa cambia con las atipicidades: Un cubo OLAP, por ejemplo, requiere más atención que un web server...

Por el momento en ESX no es posible el uso de ciertas técnicas que podrían mejorar el rendimiento: TOE (TCP Offload Engine, Jumbo Frames, etc), pero se me ocurren ciertas pruebas que puedes realizar:
  • Cambia de switch: La electrónica de red es importante
  • dedica una VLAN exclusivamente al tráfico iSCSI
  • Intenta configurar la VLAN como Private VLAN, es decir, que los host SOLO vean al target iSCSI
  • Libera la CPU/Core 0 del host.

Personalmente sigo apostando por iSCSI para mis entornos, reservando la fibra para aquellos que realmente lo necesitan. Con todo, iSCSI sigue siendo infinitamente menos problemático que FC.

Un saludo.

jueves, 15 de mayo de 2008

Cnsulta Técnica: ISCSI con ESX 3.5 - Netapp

Raul me pregunta:

"
Hola J. Luis,

La verdad es que me he quedado impresionado con la calidad de la información qute tienes en tu blog. El caso es que después de ver la web no he encontrado exactamente la respuesta a una duda que tengo.

Hemos montado 4 servidores ESX 3.5 (foundation, no tenemos vmotion:-( ) que tienen almacenamiento local y también a través de ISCSI con un cluster FAS3020 de Netapp. Actualmente no nos fiamos 100% de ISCSI por lo que hemos montado alguna que otra máquina en los discos locales de los servidores, queríamos empezar a montar equipos con ISCSI, pero no tenemos muy claro cual sería la forma más correcta teniendo en cuenta rendimiento, snapshots, etc..:



opción a. Crear un volumen grande para ISCSI y lunes para cada virtual machine?

opción b. Crear volúmenes pequeños y en ellos las lunes y exportarlas a todos los esx?

opción c. Alguna otra?
"



Estamos un poco verde con vmware ya que acabamos de ponernos con el mismo, así que te agradecería cualquier ayuda que pudieses prestarme.



Muchas gracias.



De nuevo, increíble trabajo tu blog.



Raúl "


Bueno. Veo dos cuestiones. Una sobre iSCSI y su idoneidad para entornos de producción, y otra sobre el layout del disco a la hora de presentarlo a ESX. Vamos por partes.

Fíate de iSCSI. Funciona tan bien o tan mal como FC. Yo llevo cinco años con iSCSI en producción con NetApp y no he echado de menos la fibra en ningún momento. De hecho, mi veterana FAS3020 me sirve ambos protocolos y no encuentro diferencia de rendimiento que justifique el uso exclusivo de fibra... Eso sí, utiliza una electrónica de red a la altura de la circunstancias, dedica una tarjeta al tráfico iSCSI y, por supuesto, que la red de iSCSI no tenga otra cosa que iSCSI. Incluso te aconsejaría que la red de iSCSI de los ESX fuese dedicada. Y esto no es una precaución exclusiva de iSCSI... los puristas del Fibre Channel también recomiendan zonas dedicadas. Y digo tan bien o tan mal porque el almacenamiento SAN en VMware, en especial en entornos DRS tiene sus más y sus menos. En el siguiente post, que es otra consulta técnica, me explicaré. Respecto a la cuestión del layout, en tu caso particular, yo iría a un esquema de LUN's de un máximo de 500 GB y repartirlas entre los distintos ESX. Y ya que me dejas la opción C y tienes una maravillosa 3020.... ¿porqué no pruebas NFS? El rendimiento de NFS con ESX es impresionante, y no presenta los problemas que te puedas encontrar con el entorno SAN. Además, te permite utilizar las estupendas características con que NetApp equipa a sus filers: Snapshot de ficheros (requieren muchísimo menos espacio que los de LUN), acceso mixto NFS/CIFs, etc. Es toda una opción. Valórala.

Un saludo y suerte.

jueves, 27 de septiembre de 2007

VI, Almacenamiento y Backup - I

Tras un par de meses de “descanso”, volvemos al ataque. Este verano ha sido especialmente caluroso en lo que a trabajo se refiere, sin tiempo para “refrescarme” con este blog, así que intentaré compensaros.

El tema que voy a tratar en este post, almacenamiento y backup, es una vieja espina que tengo clavada en lo que a este blog se refiere, y que suscita el mayor número de dudas en los círculos tecnológicos en los que me muevo. El almacenamiento y el backup, a mi parecer, necesita un replanteamiento nuevo en los entornos virtuales, ya que nos presenta nuevos problemas a los que hemos de dar nuevas soluciones.

En lo referente al almacenamiento, más que centrar la discusión en qué tecnología es la mejor (Canal de Fibra, iSCSI o NFS), centraré este post en las estrategias de uso del almacenamiento que, de manera independiente de la tecnología, empieza a presentar desafíos aparentemente no abordables que nos plantean los entornos de virtualización. Tanto si somos adeptos al “Virtual first” o primero en virtual como si somos más conservadores y sólo utilizamos la virtualización para entornos periféricos, tenemos el mismo problema: las VM ocupan espacio en disco. Y el disco no es ilimitado.

Respecto al backup, otro de los temas que más controversia está generando en el mundo de la virtualización corporativa, también hemos de estrujar nuestras neuronas en la búsqueda de una solución para nuestros entornos. No hace falta incidir en la importancia de una adecuada política de backup en cualquier entorno de producción, pero la propia naturaleza de los entornos virtualizados hace que la definición de una correcta política de backup sea dificultosa y dada a la ambigüedad.


Almacenamiento.

Miremos por un segundo nuestro entorno de toda la vida. Comprábamos un servidor, normalmente con un par de discos de 73 o 143 Gb en espejo, y nuestra siguiente preocupación era buscar o arañar espacio en la SAN existente para almacenar los datos. Todo es(era) así de simple. Desde el punto de vista del almacenamiento centralizado, el disco de sistema no existe y, consecuentemente, tendemos a olvidar esos pocos gigas que requiere cada servidor. Un pequeño estudio que he realizado, obligado por la necesidad de definir las plantillas de mis máquinas virtuales, me ha dado los siguientes datos:

Plantilla Base: Windows Server 2003 Estándar/Enterprise

Unidad de disco de arranque: 6 GB
Unidad de disco para swap y temps: 2 – 4 Gb
Unidad de disco para programas y demás 4 – xxx Gb


¿Porqué este esquema de disco? En lo referente al disco de arranque, le asigno 6GB con lo que le damos al sistema el espacio necesario para los ficheros de sistema, espacio libre para las actualizaciones (si no miraros como os queda el c:\windows después de un update), y un par de gigas de oxígeno por lo que pueda pasar. A efectos de backup, resitúo el swap y los temps en otro VMFS (al que no saco backup, al fin y al cabo, tanto los temporales como el archivo de swap, a efectos del sistema, es algo sin transcendencia a la hora de recuperarlo, ya que se regeneran en el primer arranque) cuyo tamaño dependerá de la memoria de la VM. Por último, reservo entre 4 y n gigabytes para la(s) aplicación(es) y dato(s) de la(s) misma(s).

En algunas plantillas más específicas, estas cifras se elevan:

Plantilla Virtual desktop: Windows XP con SP2

Unidad de disco de arranque 32 Gb

Lo que aparentemente parece inofensivo a efectos de espacio, progresa de una manera escalofriante: 20 Servidores virtuales nos requieren la nada desdeñable cantidad mínima de 240 Gb…. ¡!!Sólo para un servidor básico¡¡¡. 100 servidores, escenario nada disparatado – y si no ya veréis -, elevan esta cantidad a .. ¡¡¡¡1.2 TB!!!!. Si a esto le sumanos entre 20 y 25 Virtual desktops nos añaden entre 640 y 800 Gb.

A estos GB, hay que añadir los archivos de swap de VMware de las máquinas virtuales. El tamaño de los mismos dependerá de la memoria RAM del host, de las políticas de asignación de recursos y del uso de memoria de las máquinas virtuales. Por precaución, recomiendo asignar espacio extra en los VMfs según la siguiente fórmula: Nº de VMs x Memoria de las VM. Es decir… en el ejemplo de los 100 Máquinas virtuales con (digamos) 512 Mb de RAM, añadamos otros 50 Gb para el swapping de ESX. Un “filesystem full” en un ESX es una experiencia que no recomiendo a nadie.

Como podemos observar, incluso planteamientos muy conservadores nos obligan a provisionar entre 1 y 2 Tb para nuestros servidores virtuales. Apuesto un virtual switch a que a ninguno de los lectores de este post le sobran, así de pronto, 2 Tb en su SAN.

Tecnologías.

No es un secreto que soy un firme defensor de iSCSI en entornos ESX. No con esto quiero decir que, contra viento y marea, implemente o recomiende la implementación de iSCSI. Mi postura es, sin embargo, “iSCSI first”. Es decir, mi primera opción es, hasta el momento, usar iSCSI antes que cualquier otra tecnología. Sin embargo, hay escenarios, ya sea por la intensidad u otros factores, hay que pararse a considerar FC o NFS como opciones.

En mi personal caso, siempre he usado NFS como depósito de templates, imágenes ISO y VM de “baja intensidad” o de test. Lo hago así porque utilizo el mismo espacio que tengo asignado como servidor de ficheros en un Windows 2003 Server… y teniendo en cuenta que Windows Services for Unix es gratis, consigo ahorrarme valiosos Gb en mi querida SAN de Netapp. Conozco alguna experiencia (la de mi querido Alberto) en que usa NFS sobre NetApp, y aunque en su momento le miré con gesto torcido (“¿Porqué no iSCSI, ya que tienes un Netapp?”), poco a poco voy descubriendo las bondades de NFS sobre Netapp para almacenar VMs, ya que determinadas características de esta SAN/NAS incrementan su valor usando las capacidades NAS de este equipo. El siguiente post de esta serie, en donde describo mi experiencia con Network Apliance y ESX en lo referente al almacenamiento, backup y recuperación de desastres, me extenderé en estas ventajas.

Me reservo el uso de FC para entornos donde el acceso a disco sea crítico y necesite ser absolutamente predecible, es decir, independiente de la carga de CPU de los ESX. No hay que olvidar que el procesamiento IP y SCSI inherente iSCSI es realizado por la propia CPU de los ESX, con lo que en determinadas cirscunstancias, la carga impuesta por la propia virtualización puede penalizar el acceso a disco, provocando picos de muy poca duración (mi experiencia dice que prácticamente inapreciables en cualquier monitor SNMP) que, sin embargo, la VM si percibe. Las configuraciones de clustering de VM son especialmente sensibles a estos picos, lo que ocasiona failovers indeseados e, incluso, caídas del servicio de cluster en entornos Microsoft.

También la simplicidad y economía de los entornos iSCSI puede volverse en nuestra contra. Es toda una tentación ir añadiendo host iSCSI a nuestra red de almacenamiento debido al bajo coste de la solución. En entornos no virtuales, el hecho de que cuatro máquinas accedan a un Target iSCSI a gigabit por segundo (es decir, cuatro máquinas a 1 Gbit contra un target también a 1 Gbit) no es necesariamente peligroso o inconveniente, ya que, raramente, los requerimientos de I/O de esas 4 máquinas puedan exceder la capacidad del target. En un entorno de 4 servidores ESX con 100 máquinas virtuales en simultáneo la cosa cambia.

ESX 3.0.x , en mis pruebas, es capaz de mantenidos de 350 Mbit por segundo y con picos de 650 Mbit/sec sobre iSCSI… si multiplicamos por 4, observamos que el ancho de banda de un hipotético target a 1 Gbit/sec queda unos 400 Mbit/sec por debajo del mantenido esperado. Esto se traduce en timeouts en el acceso a disco de las VM y, consecuentemente, en posibles errores de disco. Tened en cuenta que un iniciador iSCSI por software en una máquina física o virtual “asume” pequeños picos en el acceso a disco y “defiende” al subsistema de disco del sistema operativo (esto también es aplicable a las HBA tanto iSCSI como FC). En el caso de una VM con un driver SCSI virtual, esta tolerancia a picos es inferior. En mi personal caso, intento hacer más tolerante al subsistema de disco de las VM en Windows (especialmente picajoso con estas cosas) incrementando los tiempos de timeout del disco.

Mi fórmula del millón para las redes iSCSI es simple: El target iSCSI ha de tener, al menos, Nº de ESX x 350 Mbit/sec redondeado al Gbit superior de ancho de banda para prevenir estas situaciones.

En el caso de que usemos FC en nuestros ESX, el escenario de 4 a 1 es bastante más tolerante. En primer lugar porque las propias HBA lidian con estas cosas del ancho de banda y los delay asociados… y por otra, porque liberan a ESX del procesamiento del protocolo de encapsulado y almacenamiento, eliminando el cuello de botella inherente al uso de CPU de los ESX.

¿Y los datastores sobre NFS? Pues sí… en principio debería sufrir los mismos problemas que iSCSI ya que, básicamente, es almacenamiento sobre IP. Bueno, no es del todo exacto. Mientras el control del flujo (cuando tengo o no datos) en iSCSI se limita a los comandos SCSI3 (que por definición no asumen demasiados delays y, consecuentemente son menos tolerantes), NFS, dada su naturaleza, los asume como inevitables, así que el cliente NFS ya se las compone para cachear y darle al host ESX una “buena explicación” de porqué ha de esperarse un poco cuando accede al vmdk en cuestión. ESX también se las compone (a través del driver SCSI paravirtualizado que instalamos con las VMware Tools), para que la VM no empiece a gritar “error de disco, error de disco!!!”. Cuidado con confiarse…. Estos “engaños” no nos solucionan el problema… simplemente nos lo hacen más asumible. Mis test indican que, ante la misma carga, la probabilidad de un error de disco en una VM por un acceso congestionado al VMFS es, como mínimo, un 12% inferior sobre NFS que sobre iSCSI, y la de un error crítico que fuerce la caída de un servicio, un 5% inferior.
(Como podéis ver, pocas vacaciones he tenido)

Por el contrario, NFS no permite el uso de VCB ni multipath…. Nada es perfecto.

Copia de seguridad.

Vale, ya tenemos donde guardar las VM… ¿pero cómo protegerlas ante un desastre, un borrado ocasional o una midificación indeseada que requiere la vuelta a una situación anterior?
Un planteamiento inicial, y totalmente válido, es mantener la estrategia de backup que aplicamos a las máquinas físicas, esto es, instalar agentes en cada uno de los servidores e incluírlos en nuestra programación de backup. Esta es, sin duda, la más inmediata y razonable de las estrategias abordables en cualquier entorno, pero no exenta de inconvenientes.
El primero de ellos es, sin duda, el coste. Dado que la virtualización puede - y de hecho lo hace - aumentar exponencialmente la proliferación de servidores y servicios, el coste de los agentes de backup puede multiplicarse y la complicación de nuestro entorno de backup, también. Si nos decidimos por esta opción, debemos tener en cuenta varias cosas.

La primera, y más evidente, es que, a más máquinas, más ventana de backup. Si multiplicamos por dos el número de servidores, quizá no se multiplique por dos la ventana de backup, pero desde luego, se incrementará.

El segundo, y quizá no tan evidente, es la carga extra que supone para los ESX subyacentes. En un entorno CDP (Continuous Data Protection) donde no existe ventana de backup, sino que cada cierto tiempo hacemos un backup transaccional de las máquinas virtuales (por ejemplo, una base de datos donde realizamos un respaldo de logs cada dos horas), la carga de ese proceso (que obliga a la VM a ratios de IO altos cada cierto tiempo, nos obliga a tenerlo en cuenta a la hora de asignar recursos extra de IO de disco y CPU para asumir la carga extra que supone el backup mientras el servidor da servicio a los usuarios. Evidementemente, una planificación correcta a la hora de diseñar nuestra infraestructura virtual debería darnos respuesta a esta situación. En lo referente al uso de red en un entorno de backup, poco podemos hacer, exceptuando quizá el dedicar un virtual switch para el backup - y consecuentemente una tarjeta de red extra en cada VM. ESX no está diseñado para cargas de red extremas (como la que supone un backup), así que esta situación puede alargar los tiempos de backup y, en caso de que este se "salga" de la ventana, afectar a la operación de las VM y los servicios asociados.

En tercer lugar, no debemos olvidarnos de realizar copias de seguridad de la configuración del ESX y de nuestras VM. ESX no es precisamente una plataforma fácil de configurar a mano, y en caso de caída, parametrizarlo "by hand" es una labor tediosa. Una copia del directorio /etc debería bastarnos para recuperar nuestro ESX, y otra de los archivos *.vmx, *.vmxf y *.nvram de nuestras VM. De esta manera, recuperar un ESX no debería ser más complicado que recuperar el /etc, los ficheros de configuración de las VM y registrarlas de nuevo con un comando del tipo:

/usr/bin/vmware-cmd -s register /vmfs/volumes/nombre VMfs/máquina virtual.vmx

Evidentemente, los textos en cursiva y rojo se corresponderán con los datos de cada VM en particular.

Bueno, de esta manera parece que tenemos solucionada la papeleta del backup de nuestro entorno virtual, protegiéndolo contra las contingencias habituales en un entorno físico... pero ¿Corremos los mismos riesgos en un entorno físico que en uno virtual?

Aparentemente sí. Cuando un servidor cae, lo reinstalamos, restauramos el backup y listos. Si se pierde el almacenamieto (por ejemplo, nuestra SAN queda inaccesible), pues rearrancamos los servidores, reconfiguramos la conexión a la SAN reparada, restauramos la copia y a seguir con lo nuestro. Pues no. Si perdemos el almacenamiento donde están nuestras VM (Corrupción de datos, caida temporal del mismo), los discos de arranque de nuestras VM dejarán de estar disponibles, lo que quizá nos oblige a reinstalar de nuevo las máquinas virtuales. Y eso, en un entorno donde las VM han superado ampliamente a las físicas puede resultar inoperante.

Como parte de la estrategia de backup tradicional, hay quien utiliza software de recovery de servidores, que nos permiten restaurar desde el metal el servidor mediante un CD, un arranque PXE, etc. Aún siendo una alternativa de gran valor, no está ampliamente extendida dado su coste y el hecho indiscutible de que no siempre es posible sacar una imagen de un servidor.

Una aproximación inmediata al problema de sacar backups de nuestras VM puede pasar por un backup incremental diario de nuestros VMFS, con su correspondiente full semanal, integrando nuestros ESX dentro de la estructura de backup existente. Eso será posible, evidentemente, si disponemos de suficiente capacidad de cinta u otros dispositivos para almacenar unos diferenciales diarios enormes (Hay que tener en cuenta que el vmdk cambia diariamente - y mucho - Carpetas temporales, archivo de swap (¿recordáis mis templates con el swap y Temp. Separados?) por no incluir lo que tengamos ejecutándose dentro de esa VM).

Si no disponemos de un entorno de backup que maneje los diferenciales a nivel de bloques, tendremos que asumir que cada backup incremental es, en realidad, un full backup.

Un ejemplo claro es VERITAS que, en su configuración básica copia ENTEROS los ficheros modificados. Esto, evidentemente, alargará nuestras ventanas de backup, y hará que nuestro consumo de cintas o similar se incremente enormemente. Sin embargo, en entornos pequeños y/o limitados, puede ser una solución.

Dejo una pregunta en el aire: ¿Nos vale de algo, a efectos de funcionalidad y gestión, una imagen de una VM de hace 1 mes? Espero respuestas.

Existen en el mercado varias soluciones de backup y restore de VM. Unos, como VMware Centralized Backup, suministran una interface para acceder directamente tanto al VMDK como al contenido del mismo de manera transparente y sin necesidad de ventana de backup, actuando como “proxy” para el backup tanto de los contenidos de los VMDK como de los VMDK en si.


Sin ánimo de hacer una descripción del producto, este gráfico ilustra el modo de operación de VMware Centralized Backup. Nótese que VCB NO supone carga para los ESX, aspecto de vital importancia en entornos con uso mantenido alto, y que, a mi parecer, hace las cosas como deben ser hechas: ESX a virtualizar, no a gestionar backups.

Otras, como
ESX Ranger, van algo más allá: Fuerzan un snapshot usando VSS (Volume Shadow service) de Windows 2003 para forzar una imagen consistente (Point in time) y, posteriormente, realizar una copia con posterior compresión.

Como en el caso anterior, esta imagen ilustra su funcionamiento.


Recuperación de desastres.

Pero… ¿qué pasa si lo que necesitamos es recuperar todo nuestro entorno en cuestión de horas. La recuperación de un full backup no me parece la respuesta adecuada. En estos entornos, la replicación de los VMFS aparece como única opción viable. El poder replicar una gran cantidad de datos (como la mencionada en los apartados anteriores) no es, en sí, el mayor de los problemas con el que nos enfrentamos. A mi parecer, que la réplica de esos datos sean entendibles por los ESX de destino como válidos sin intervención manual es, sin duda, el mayor de los problemas. Con esto quiero decir que si confiamos en la capacidad de replicación de nuestras cabinas de disco para una rápida recuperación de desastres, como dicen en mi pueblo, vamos aviados. No será el primer caso que veo en que los ESX de destino se niegan a considerar válidos unos VMFS replicados, obligando a unas cuantas horas de intensivo y aterrador trabajo de re-registro manual de VMFS y VMs.

Conozco incluso un caso, gracias a mi querido
Josep Ros, de una fastuosa replicación entre cabinas SUN realmente estrepitosa.

Cuidado con lo que nos venden: que nos lo enseñen primero.

Vizioncore nos ofrece un producto, vReplicator que permite la replicación a nivel de host y que el siguiente gráfico ilustra:


Esta solución, a pesar de ser efectiva, desde mi punto de vista tiene un solo problema: hace trabajar a los host ESX en algo que no es lo suyo. El cálculo de diferenciales en entornos multiterabit puede ser un gran consumidor de recursos que yo, personalmente, prefiero dedicar a mis VM. No dejéis de probarlo si tenéis ocasión.

Otras soluciones como el MetroCluster de Network Appliance, que suministran entornos de alta disponibilidad y recuperación de desastres me resultan más elegantes y, sobre todo, cumplen con mi premisa principal: Son transparentes para los ESX, liberando a las CPU de estos de la carga inherente a la replicación.


Otra aproximación interesante viene de la mano de Topio, una compañía adquirida por NetApp a finales del 2006, y cuyas soluciones mi estimado Jose me ha mostrado recientemente.
ReplicatorX no es un producto especialmente diseñado para Máquinas virtuales, pero es perfectamente aplicable. ReplicatorX Intercepta todas las peticiones de IO de una VM (o un servidor físico con linux, Windows, AIX, Solaris o demás) y las envía a un servidor espejo. Viene a funcionar como un raid entre el disco de la máquina cliente y el disco de la máquina destino…. A través de TCPIP. Os dejo, como no, gráfico explicativo. Echadle un ojo.

Y ahora la pregunta del millón: ¿Qué pasa si replicamos un error?

Bueno… y hasta aquí por hoy…. Prometo la segunda parte en breve.

Un abrazo.

martes, 10 de julio de 2007

Consulta Técnica: Problemas con VMware, openfiler y iSCSI

Consulta anónima:

"Lo primero darte las gracias por toda la información que ofreces a todo el que la necesite sin pedir nada a cambio.Y lo segundo a ver si me puedes echar una mano en este problemaEl tema esta en que tu blog tienes colgado un articulo el cual explica como poner vmware esx en un servidor Windows con nfs, hasta ahí todo correcto pero el problema viene cuando al intentar colocar la vmware con un servidor iSCSI (openfiler) no lo consigoHe intentado de todo en la versión de 64 bits de este servidor de ficheros lo he conseguido conectar con un Windows 2003 a través de iSCSI conector y sin problemas pero cunado intento conectarlo con la maquina de vmware no puedo.¿Que estoy haciendo mal?En la tarjeta de red que conecto al openfiler esta creada la conexión de la consola y una conexión de vmkernel puesto que la maquina de vmware me la pide para conectar a través de iSCSI.Pero luego en la configuración de iSCSI le pongo como target la dirección de la maquina de openfiler y no me carga el espacio que tengo para poder guardar mis maquinas virtuales.De antemano gracias por tu ayuda y sigue como hasta ahora que lo estas haciendo genial."

La configuración de iSCSI no es, bajo ESX, de las labores más sencillas. Te recomiendo sigas la siguiente Checklist:

- ¿Tengo un adaptador VMkernel dedicado en iSCSI?
- ¿Tengo una Service Console en la misma red de la interface iSCSI del VMkernel?
- ¿He definido el default gateway en la interface del VMkernel?
- ¿He definido correctamente los targets iSCSI?
- ¿He rearrancado la máquina?

Espero tus noticias.

viernes, 15 de junio de 2007

Consulta Técnica: Netapp & iSCSI

Anónimo me pregunta:

"Primero: Realmente he estado buscando informacion de netapp y VM, y realmente muy interesante.Tengo una consulta: La gente de NetApp jura y perjura que SQL (120Gb) no degrada con iSCSI. Alguna sugerencia? "

Bueno... esto se sale un poco de la dinámica que pretendo darle a este blog, pero como los equipos de Netapp están entre mis caprichos más queridos, he decidido hacer una excepción.

En cualquier caso, os agradecería que dejáseis un correo de respuesta para este tipo de consultas, para poderos responder personalmente.

Vamos a ver. A esa pregunta no puedo responder con un "sí" o un "no", así que me extenderé un poco.

El rendimiento de un SQL no depende exclusivamente del almacenamiento. Dependerá de la plataforma hardware, la configuración del SQL, la aplicación que use la base de datos, y por último, del nivel de mantenimiento del mismo. En otras palabras, si esperas que tu SQL "vuele" por ponerle un Netapp, un EMC o un Hitachi detrás, quizá te lleves una decepción.

Los fanáticos de los IOPS (IO Operations per second) Defienden, y no sin razón, que FC puede dar más rendimiento que cualquier otra tecnología. Por otro, todos sabemos que un host Wintel es incapaz de mantener tasas sostenidas de más de 600 Kb Mb por segundo (sea cual sea el medio).

Otra de las "ventajas" de FC es que la infraestructura es dedicada, y normalmente el integrador/fabricante llega, la instala, configura y listo. Esto, evidentemente tiene un coste que hay que asumir.

iSCSI ofrece un rendimiento (teórico, al menos) de entre un 15 a un 20% menos. Pero no nos confundamos: de un 15 a un 20% menos que el mayor rendimiento posible en un entorno FC. Nuestras bases de datos, exchanges y similares no alcanzan, ni de lejos, el máximo rendimiento de un enlace FC, por lo que, en la mayoría de los casos, la diferencia es inferior al 1% (este 1% suele ir relacionado al overhead que el procesamiento IP supone para los procesadores del servidor en cuestión).

Una de las ventajas claras de iSCSI es, paradójicamente, uno de los motivos por los que iSCSI es despreciado por algunos admins de sistemas: La capacidad de usar la infraestructura IP existente. No es el primer proyecto que veo con problemas porque se ha conectado una flamante SAN iSCSI a un switch Netgear o procurve de gama baja.

Otro aspecto donde iSCSI supera ampliamente a FC es en la simplicidad: Como dice la propaganda, configure usté el IP, instale y configure el Initiator, ofrezca las LUN y a andar. Realmente es así. Una instalación FC es compleja, con múltiples puntos críticos y con una configuración casi de gurú. Las actualizaciones en una SAN FC son laboriosas y arriesgadas, mientras que en iSCSI son bastante simples.

Hay un tercer dato que se tiende a obviar, y que en el caso de Netapp adquiere gran importancia: El hardware de la SAN IP. Mientras IBM, EMC, etc utilizan hardware específico (ASICs, etc), limitado y caro por definición, Netapp se ha volcado en el hardware estandar: PCI-e, Opterons e ingentes cantidades de memoria. Como resulta de esto, Netapp garantiza un path de alta velocidad desde el cabezal del disco hasta la GbitE de salida. De hecho, casi el 40% de las operaciones de IO sobre un Netapp las estás realizando en una memoria caché interna de varios GB, protegida por una batería que garantiza la supervivencia del dato en caso de pérdida de fluído eléctrico.

Otro aspecto que afecta sensiblemente al rendimiento es la reconstrucción de discos en caso de fallo de uno. Las arquitecturas tradicionales basadas en RAID 5 son realmente pesadas a la hora de reconstruir un disco fallado. Las reconstrucciones suelen ser largas, con degradaciones de entre el 10% y el 20% de rendimiento durante la misma. Dado el estado de vulnerabilidad de el RAID durante una reconstrucción (ya que RAID5 no soporta el fallo de dos discos), nos interesa que la ventana de reconstrucción sea lo más limitada posible, lo que supone asignar alta prioridad al proceso de reconstrucción. Recordemos que en RAID 5, la paridad se distribuye entre todos los discos, lo que obliga a leer de todos ellos, compartiendo el IO de estos entre la reconstrucción y el servicio.

Netapp basa su esquema de protección de datos en la especificación RAID4, dedicando un disco para paridad. Esto significa que, en las reconstrucciones, sólo un disco es accedido en lectura para obtener los datos a reconstruir. Por otra parte, refuerzan esta implementación con el uso de un segundo disco como paridad doble, lo que permite el fallo de DOS discos simultáneamente en un mismo RAID. Con esta implementación, que ellos denominan RAID-DP (o RAID 6, a todo hay que ponerle un nombre) las ventanas de reconstrucción (consideradas a menudo ventanas de vulnerabilidad) quedan cubiertas. Hay que tener en cuenta que, los discos de un RAID, si han sido adquiridos al mismo tiempo, comenzarán a fallar más o menos en la misma época. La degradación, tanto en rendimiento como en fiabilidad de los discos, es una realidad.

He tenido la oportunidad de instalar y explotar SQL Servers, Oracles y VMware sobre Network Appliance, incluso en entronos mixtos (FC e iSCSI sobre netapp y iSCSI sobre netapp/FC sobre IBM/EMC) y no hay diferencia de rendimiento puntual. Donde sí la hay, y es a favor de Network Appliance, es en el medio plazo. Mientras con IBM y EMC los tiempos de reconstrucción afectaban al usuario, con Netapp ni se enteraban.

Netapp en españa tiene un equipo técnico muy cualificado, con mucha experiencia y muchas horas de vuelo en lo que a almacenamiento se refiere.

Espero haberte sido de ayuda.

En respuesta a tu pregunta... Créeles. Los equipos son fascinantemente rápidos, simples y, sobre todo, seguros.

martes, 10 de abril de 2007

Consulta Técnica: HA sobre NFS

Nuestro amigo Pedro nos pregunta:

"Saludos:

Estoy pensando montar un entorno para hacer pruebas en el trabajo y estoy escogiendo máquinas, pero me asalta una duda: es necesario storage dedicado iSCSI, FC, etc... para poder montar HA entre 2 máquinas ESX o se puede utilizar algún otro almacenamiento compartido como NFS en un Linux?

Muchas gracias. "

Estimado Pedro:

Según indica el VMware Resource Management Guide nada parece impedir que VMware HA pueda correr con las VM en un volumen NFS. Yo, personalmente, no lo he probado, pero sí puedo hablarte de mi experiencia con VM's en NFS, que se pueden resumir con una sola palabra: Van. Quiero decir que funcionan, puedes hacer VMotion entre máquinas, pero el rendimiento no es, ni de lejos, un parámetro para evaluar VMware.

Siempre usé (y uso) NFS como depósito auxiliar: Imágenes ISO, templates (si, se requiere I/O para desplegar o clonar una VM, pero se requiere una sola vez) y alguna máquina de "baja intensidad" con la que me dá pena desperdiciar mis preciados VMfs's.

Personalmente, en tu caso, probaría con iSCSI. En la Lista de compatibilidad de la comunidad VMware, aparece OpenFiler (con el que, además puedes hacer NFS) como soportado (en este blog encontrarás un post al respecto, y en el blog de El Gura encontrarás una detallada y estupenda guía de cómo jugar con Openfiler (Gracias, Gura). He leído por ahí que ESX se "pelea" con la manera de hacer las SCSI reservations de OpenFiler, pero todavía no lo he probado. Si te decides a probarlo, agradeceríamos tu feedback.

Te resumo los requerimientos para un Cluster HA en VMware:

- Almacenamiento compartido: Ya sea NFS, FC o iSCSI
- Red dedicada para vMotion
- Las máquinas virtuales deben tener todos los discos configurados como no compartidos (que es como los crea por defecto). Si has definido un Cluster con dos VM usando SCSI, no las podrás mover de un nodo a otro.
- Las máquinas del cluster deben ser o iguales o muy similares. Evita usar procesadores distintos en ambos nodos del cluster. (Y cuando digo distintos no digo de diferentes fabricantes, sino de series distintas dentro del mismo tipo!!!). Recuerda que ESX translada sin traducir muchas de las instrucciones que la VM envía al procesador, así que es posible que el OS que tienes instalado encima use una instrucción que está soportada en un procesador y que en otro tiene una "reacción" distinta.

No dudes en consultarnos si tienes alguna duda más.

Un saludo

domingo, 11 de marzo de 2007

Análisis de Producto: Openfiler 2.2

El viernes, por necesidades del servicio, tuve que "buscar" unos 100 Gb para un servidor SQL, y no había nada disponible en el almacenamiento corporativo. Así que, ni corto ni perezoso, monte un OpenFiler 2.2. Para los que no lo conozcáis, Openfiler es un sistema de gestión de almacenamiento basado en un kernel Linux 2.6 (CentOS) que provee acceso a disco en varios protocolos simultáneamente. Actualmente incluye CIFS, NFS, WebDAV, FTP e iSCSI. Fué por este último por el que me decanté a utilizarlo, ya que está basado en el IET (iSCSI Enterprise Target), una de las implementaciones iSCSI target mejor valoradas (según leo en San Google bendito) por la comunidad.

Como host para el OpenFiler, encontré un HP Proliant DL380 con un Xeon a 2.4 Ghz y 1 Gb de RAM, equipado con una SamrtArray 5i con un RAID 5 de 6 discos Ultra160 de 73Gb, de 10.000 rpm.

El equipo viene provisto de 2 tarjetas de red a 1Gbit/Sec Broadcom NetXtreme

Como iSCSI initiator para las pruebas, usé un Proliant DL360, con dos procesadores Xeon a 3Gb, 1 Gg de RAM, y para las comparativas, lo equipé con dos discos de 73Gb Ultra320 de 15.000 revoluciones.

Como tarjetas de red, el initiator viene equipado con dos HP (aka Intel Pro1000 server), también a 1 Gbit.

He de reconocer que tardé poco más de media hora desde que introduje el CD de instalación en el Target hasta que asigné las LUN iSCSI al initiator. Realmente sencillo... especialmente comparado con la última vez que intenté configurar el IET "a pelo" sobre un Fedora V. Reconozco que abandoné a las 2 horas.

Bueno, una vez montado, me busqué un software de benchmarking de disco (encontré el ATTO, el más nombrado - y gratis - que encontré en Google), y me decidí por utilizar las dos metodologías de test que ofrece.


I/O Comparison: Con esta opción cada dato leído en el fichero de test es comparado con el dato escrito, bloque a bloque.


Overlapped I/O: Con esta opción se generan colas de entrada y salida que se ejecutan simultaneamente.



Eston son los resultados:

Benchmark de I/O Comparison sobre disco local.

Benchmark de Overlapped I/O (diez colas) sobre disco local.

Benchmark de I/O Comparison sobre LUN iSCSI.

Benchmark de Overlapped I/O (diez colas) sobre LUN iSCSI.

El resultado no me deja indifernente. Evidementemente hay cierta penalización en escritura que creo que es mejorable "retocando" la configuración del IET. Tampoco hay que olvidar que la controladora RAID 5 del DL380 tampoco es la mejor del mercado (No hay que olvidar que RAID 5 tiene cierta penalización en escritura).

¿La mala noticia? Olvidaros, por el momento, de usar OpenFiler como iSCSI Target para ESX en entornos VMotion. Parece ser que (por el momento) IET tiene algún problema con las SCSI reservations, pero yo he probado a virtualizar el OpenFiler dentro de un ESX sin problemas.... y como "taller" para iSCSI no va nada mal.

Os seguiré informando.


sábado, 13 de enero de 2007

Caso Práctico: Virtualización de entorno de Producción - Infraestructura Virtual

Pasadas las fiestas, turrones, pavos y similares, y el consecuente bebercio, parece que ya salgo de la resaca, así que al tajo.

Vamos a retomar el caso práctico que nos planteábamos en el post anterior, donde pretendíamos virtualizar parte de un entorno de producción. Tras la definición del ámbito del proyecto, pasemos a definir la infraestructura virtual necesaria.

Servidores físicos.

en el ejemplo que nos ocupa, se pretende virtualizar un total de 31 servidores. Hemos de tener en cuenta que todas estas máquinas dependerán de la integridad de los servidores ESX, con lo cual la tolerancia a fallos ha de ser una premisa del diseño de la instalación.

En el caso que nos ocupa, el planteamiento inicial implica la instalación de dos servidores ESX. Ese es un escenario económico y altamente rentable, que sacrifica rendimiento y tolerancia a fallos en pro de la economía. Intentaremos dibujar otros dos posibles escenarios, que balanceen mejor las prestaciones, la tolerancia a fallos y los costes.

Dos servidores, si... ¿Pero con qué configuración?

nº de procesadores.

VMware (y yo, basándome en la experiencia) recomienda no superar las 8 máquinas virtuales por procesador. Esto ha de tomarse como una norma general con múltiples excepciones: No es lo mismo 8 servidores SQL en cluster que 8 servidores web... de hecho, yo mismo he virtualizado hasta 13 servidores por CPU con rendimientos aceptables. También es importante definir los requerimientos de los entornos virtualizados: No tenemos porqué tener el mismo rendimiento en Desarrollo que en los sistemas de producción... y un RADIUS no requiere lo mismo que un SQL server.


En este caso, yo me inclinaría por servidores biprocesador con dual core, más que por sistemas tetraprocesador. VI3 es uno de los pocos entornos donde las ventajas del crecimiento horizontal son realmente palpables. Recordemos que VI3 nos permite hacer crecer nuestra infraestructura virtual añadiendo nuevas máquinas. Una instalación como la que nos ocupa puede comenzar con dos máquinas y crecer sin que por ello la inversión realizada inicialmente quede obsoleta.

Evidentemente, han de distribuirse los recursos de toda la infraestructura virtual de acuerdo con los requerimientos de cada servidor: Balancear entre distintas CPUs las máquinas con más carga (o requerimientos), un buen diseño de los pools de recursos, y un diseño adecuado de la infraestructura de almacenamiento.

Partiendo de esta base, las máquinas que nos ocupan deberían ir equipadas con dos procesadores dual core, lo que nos daría un total de 8 cores.

En el ejemplo que nos ocupa, nuestra infraestructura virtual soporta (teóricamente) hasta 64 máquinas virtuales (8 por core)... una estimación más realista, teniendo en cuenta que en caso de pérdida de servicio de uno de los servidores ESX (ya sea por incidencia o por trabajos planificados de mantenimiento), nos debería permitir mantener en funcionamiento, al menos, el cincuenta por ciento de los servidores virtuales. Una buena fórmula de cálculo deberia ser la siguiente: Nº de VM/8+(12) CPUs (El OR dependerá de la pasta que tengamos)

Memoria.

La respuesta es fácil: La máxima posible. ESX es, por definición, un gran consumidor de memoria. Apurar al máximo las capacidades de ahorro de memoria del VMware no es una buena idea en entornos de producción. Hemos de tener en cuenta que ESX, por muy maravilloso producto que sea, no es capaz de predecir las necesidades de memoria que una VM tendrá dentro de un segundo. Una buena fórmula de cálculo de la memoria total requerida para nuestra infraestructura virtual es asumir entre 768Mb y 1 Gb por máquina virtual.... lo que no quiere decir que definamos todas nuestras VM con 768Mb o 1 Gb de RAM. Hay un consumo "extra" de memoria por parte de la capa de virtualización... Calculemos aproximadamente entre 512 y 1Gb de consumo de RAM para el ESX.

Red.

La red es otro elemento fundamental en VI3. VI3 ha de suministrar conectividad de red a las máquinas virtuales que aloja, por lo que deberíamos garantizar tanto el ancho de banda como la tolerancia a fallos de la misma. LA red, tradicionalmente, suele ser una gran olvidada en los entornos de proceso de datos: Se compra, se instala y punto. Al ser uno de los sistemas más robustos de toda la infraestructura IT, suele relegarse a esa categoría de sistemas que "nunca fallan", asi que, consecuentemente, nunca se tocan.


VI3 requiere de electrónica de red eficiente, y una configuración adecuada. Mi personal consejo es tirar de electrónica de rendimiento contrastado y con potentes opciones de configuración. En mi caso, utilizo una pareja de Cisco Catalyst 3750.



En este ejemplo hemos de tener en cuenta las siguientes conexiones de red:

Red de VM

Dedicaremos, al menos, dos enlaces Gigabit por servidor ESX para el tráfico de las máquinas virtuales. Esta duplicidad no viene dada tanto por el ancho de banda como por tolerancia. Recordemos que, con 31 VMs en dos máquinas, cada tarjeta de red da servicio a 15 VMs.

Almacenamiento

Tanto si usamos iSCSI como FC, el enlace ha de estar redundado. Si existe algún componente crítico, este es el acceso al almacenamiento. Añadiremos otras dos conexiones para el almacenamiento. es importante que NO COMBINEMOS iSCSI y NFS sobre la misma red. Si pensamos en utilizar iSCSI y NFS a la vez, debemos utilizar interfaces distintas.

VMotion/HA

Aquí, dependiendo de si usamos VMotion, o VMotion y HA, podremos dedicar una o dos tarjetas por máquina. Si sólo utilizamos VMotion para el movimiento de VMs entre servidores, una tarjeta debería ser suficiente, pero si implementamos HA, este enlace se hace crítico.

Consola.

La conexión de consola es la que nos permitirá acceder a los servidores ESX tanto directamente como a través de VirtualCenter, con lo cual, su criticidad es relativa. Me explico. Si un ESX deja de ser gestionado por VC, no se para, lo que significa que no supone un impacto en la operatividad del sistema. En otras palabras, si cae la consola, tendremos tiempo de maldecir, ponernos la chaqueta, salir a por un cigarrillo y hasta tomar un café antes de ir al CPD porque las VM no se han parado. Yo no suelo dedicar una tarjeta específica para la consola, así que suelo añadir una VLAN, ya sea en VMotion o en las VM, para la consola, pero una interface de 100 Mbit/sec no parece a priori un desembolso excesivo, salvo que no tengamos splot PCI libres.

Como resumen, no escapamos con menos de 6 conexiones de red por servidor.... aunque 8 tampoco es un mal número.

Miscelánea.

Cosas interesantes que debería tener nuestro servidor ESX perfecto:

  • Consola remota: Si, lo de tener que ir al CPD es pelín incómodo, y además, podemos resfriarnos.
  • Remote Power On/Off: Más de lo mismo.
  • Disco de arranque en Mirror: Vaya que si nos gastamos una pasta en almacenamiento para VMFS y después los ESX no arrancan porque se nos ha cascado un disco nos va a lucir el pelo.

Almacenamiento.

Siempre he apostado por el uso de SAN para VMware. El uso de un almacenamiento compartido nos abre inmensas posibilidades bajo VI3: La capacidad de movimiento de máquinas virtuales entre ESX's, mayor racionalidad en el uso de almacenamiento, y el coste cada vez más bajo de este tipo de soluciones me parecen razones más que suficientes.

Pero no debemos olvidar la opción NFS que nos brinda ESX. NFS no nos va a dar, ni de lejos, el rendimiento de una SAN FC o iSCSI, pero se plantea como una solución económica para el almacenamiento de Templates, imágenes ISO, etc... y para eso podemos utilizar el espacio de nuestro servidor de ficheros Windows mediante productos gratuítos como el Windows Service for Unix, que nos permite compartir una carpeta de nuestro servidor de ficheros como un share NFS. Creedme... por muy grande que hayamos diseñado nuestra LUN para VMware, siempre, siempre, se nos quedará corta.

En mi caso particular, siempre he preferido iSCSI a FC, tanto por razones de coste como de sencillez y simplicidad de configuración. Una instalación FC requiere, además de las HBA FC (a un buen pico cada una, casi 2000€), hemos de tener en cuenta los switches (los minihubs que incorporan algunos fabricantes no son demasiada buena idea), el multipathing o capacidad para que un host vea una LUN por dos controladores FC y no las gestione como dos LUNS, o el trunking (agrupar dos o más canales FC para que actúen como uno solo) suelen tener un coste adicional. (de hecho, siempre he recomendado a los fabricantes de equipamiento FC que incorporen ya el lector de Visa en sus equipos, dado que para hacer casi cualquier cosa hace falta una licencia). También FC es más lioso de gestionar y configurar, y el conocimiento suele ser específico para cada equipo.

iSCSI ofrece menor rendimiento (unos 800-850 Mb/sec teóricos en enlace de un GbE frente a los 900-950 Mbit/sec de un enlace FC), consumen más recursos de la máquina en el caso de iniciadores software (es la CPU del host la que ha de pelearse con el TCP/IP y los comandos SCSI3), pero en una instalación pequeña (llamo pequeña hasta 6 - 10 servidores conectados a un target iSCSI) el diferencial de rendimiento no suele apreciarse.

Yo he realizado comparativas entre mis unidades FC (Una SUN StorEgde 3511, una MSA1000 de HP y una NetApp 3020) y la misma NetApp 3020 sirviendo iSCSI y las diferencias son inapreciables. No soy capaz de diferenciar rendimientos. Dado el coste de un NetApp, os recomiento una cosita que encontré el otro día: Openfiler una implementación Opensource del concepto de todo en uno: CIFS, NFS e iSCSI. Cualquier P4 con algo de memoria y bastante disco os permitirá implementar iSCSI en un entorno de preproducción, test o prueba de concepto. Sin embargo, para un despliege serio, os recomiendo que miréis las NetApp serie 200 (o la 3000 si os da) antes que amarraros a una solución FC pura. Yo tengo montada una 3020 que me dá almacenamiento iSCSI para VMware, servidor de Ficheros y un par de LUNs FC para SQL Server.... en la misma instalación... de hecho, la próxima inversión que haga en ella será ampliarla con disco SATA de alta capacidad para usarla también como backup a disco.

Por contra, el uso de Ethernet como medio de acceso al almacenamiento nos ofrece múltiples ventajas: Trunking de hasta 8 canales gigabit Ethernet, cifrado IPsec estándar, autenticación en base a usuario/password, VLAN's (frente a las zones FC, que son un infierno), y todos los mecanismos ya implementados sobre Ethernet: redundancia, autenticación en conexión (802.1x), y opciones avanzadas de monitorización como el sniffing.

Desde el punto de vista de costes y versatilidad, iSCSI también nos ofrece ventajas, al convertir cualquier puerto de red en un punto de acceso al almacenamiento en potencia. Además, el coste de un puerto ethernet de 1 Gbit/sec, incluso en equipos de gama alta, no llega a la mitad del coste final de un puerto FC.



Backup.

Algo que se suele tender a olvidar en los entornos VMware es que hay que sacar copias de las VM. Aquí tenemos dos posibles aproximaciones: Copia individual de cada máquina virtual, o copia total de la infraestructura virtual.

Evidentemente la segunda opción, el sacar una copia del VMfs donde tengamos almacenadas las VM puede parecer la mejor opción: Pocas LUN que copiar y un agente por servidor ESX, pero hay que tener en cuenta otro aspecto ciertamente importante.

Veritas, Legato y demás permiten la realización de copias diferenciales o incrementales, es decir, sólo copian los ficheros que han cambiado desde el último backup total o desde el último incremental realizado. Esto nos permite disminuir las ventanas de backup y ahorrar en disco. Si aplicamos esta filosofía a VMware nos encontraremos con la lindeza de que cada backup diario es, en realidad, un full backup. ¿Porqué? porque los discos virtuales, los vmdk son un fichero.... que cambia cada vez que el SO virtualizado está encendido. Así que el backup de, digamos, 600Gb de VMfs (no, no os asustéis, se llega con facilidad), nos obliga a disponer de .. 4.2Tb de espacio de backup.... por semana.

El uso de snapshots ("fotos" del disco que se pueden mantener a intervalos programables y que pueden ser revertidas), también puede parecer una hermosa solución... si no fuera por un par de detalles. En primer lugar, ningún sistema operativo trabaja directamente con el disco, así que si en un momento dado "congelamos" el disco, es probable que la mitad de los datos estén en la memoria del sistema operativo virtualizado y no en el disco. Esto es lo que se llama un punto de consistencia. Lo ideal sería poder decirle al SO que hiciese un flush antes de que nosotros ordenemos un snapshot del VMfs... es teóricamente posible (un buen sync bajo linux y alguna chapuza bajo windows).... pero ¿Y las aplicaciones?. Oracle o SQL server van por su lado. Un flush del sistema operativo no tiene porqué obligar a SQL, Oracle o Exchange (por poner ejemplos) a volcar todas las transacciones pendientes. Un snapshot en estas condiciones no vaticina nada bueno. Esto es lo que los gurús del backup llaman "Punto de consistencia", es decir, el estado de un servidor (aplicación incluída) en el que el backup es realmente una imagen consistente del sistema.

Para más INRI, algunas tecnologías de snapshot a nivel de LUN hacen cosas realmente graciosas: NetApp, por ejemplo, te "sugiere" reservar X * 2 espacio para el primer snapshot... siendo X el tamaño estimado de la LUN...

Cuando trabajaba con ESX 1.x y 2.x y se me apareción este problemilla, la única solución que se me ocurrió fué hacer un script que suspendiera una VM, sacara backup del disco y del fichero de suspensión (importante, de ahí la negrita), y volviese a hacer un power on.

Con VI3, VMware introduce el VMware Consolidated Backup. VCB permite el backup de las máquinas virtuales sin parada, de manera incremental y a nivel de fichero individual contenido en una VM. Se basa en la existencia de un Backup Proxy, un servidor Windows que accede a las LUNs de VMfs y es capaz de hacer un snapshot consistente de nuestras VM, que extraeremos con nuestro software de copias de seguridad preferido, es decir, sobre este servidor montaremos nuestro agente de Veritas, Legato o lo que tengamos, y VCB se encargará del resto. Esto es lo bonito. Lo feo es que requiere de unas configuraciones la mar de entretenidas, sólo funciona con FC y hay que hacer alguna pirindola para que se hable con el agente de backup. Por el momento estoy en fase de prueba del mismo, así que poco os puedo decir aún. Si antes de que termine con este caso práctico acabo la evaluación, incluiré la configuración... si no, ya tengo tema para otros post.

Licencias de VI3.


Tema importantillo... ¿qué licencia adquirir?. Veamos qué nos ofrece VMware.

Dejando aparte, oh cielos, opciones como el Consolidated Backup, nadie que conozca que haya probado vMotion es capaz de vivir sin él. Conozco casos de quién ha licenciado un VI3 standard, y a la hora de licenciar vMotion y demás, se ha llevado la grata sorpresa del latigazo consecuente que VMware ha tenido a bien darle. Para un entorno como el descrito, os recomiendo encarecidamente licenciar enterprise. VMware licencia por CPU física, lo que quiere decir que en nuestro caso, sólo hemos de licenciar 4 procesadores... para nuestra flamante instalación de 8... o de 16, con los quad de Intel en puertas.


Resumen de la instalación.

Servidores.

Dos máquinas dual core bi-procesador con 8 tarjetas de red, disco RAID, doble fuente de alimentación y 16 Gb de RAM.

Equipo Ejemplo.

Servidores: SUN X4100

Tarjeta de red: Intel® PRO/1000 GT Quad Port Server Adapter, Broadcom NetXtreme® Gigabit Ethernet Controller for Servers

iSCSI HBA's: Qlogic QLA4052

Nota: Ojito. El soporte para iSCSI HBA está todavía en fase experimental.

Almacenamiento.

Deberíamos disponer de, al menos, 600 Gb NETOS para nuestra instalación... mi consejo es que compréis algo que escale, al menos, hasta 3 veces esa cantidad.

iSCSI: NetApp FAS270c, NetApp FAS3000, para pruebas y/o preproducción o pequeños entornos, Openfiler, FalconSTOR IPStor, como prueba de concepto, StarWind iSCSI Target.

FC: Las anteriores junto con cualquier solución soportada por VMware.

NFS: NetApp, obviamente, o cualquier producto que sirva NFS... Microsoft Windows Services for Unix

Electrónica de red.

De los 48 puertos no deberíamos bajar, por aquello de no quedarnos cortos y no tener que empezar a "empalmar" switches con uplinks a giga. Si sois de los afortunados que ya tenéis un chasis mediano o grande (un Catalyst 4500, 6000 o un Nortel Passport o similar), provisionad puertos suficientes... si debéis adquirir electrónica, os recomiendo os vayáis a un chasis pequeño, o en su defecto a cualquier switch modular que soporte stacks de alta velocidad. Eso sí, procurad que tenga la opción de la fuente de alimentación rendundante.

Cisco Catalyst 3750-40 TS o superior... un backplane de, al menos 32 Gbit/sec.

Licencias VMware.

Licencia VI3 Enterprise para 4 Procesadores.

Seguiremos hablando.

J. L. Medina

lunes, 11 de diciembre de 2006

VI3 y la red.

Otro de los aspectos fundamentales de la virtualización es la red. De nada nos vale virtualizar cualquier servidor si este no puede comunicarse eficientemente con el resto de servidores o con los clientes.

Uno de los grandes avances de VI3 respecto a las versiones anteriores de ESX es una gestión de la conectividad de las máquinas virtuales francamente avanzada. Antes de proseguir, aclaremos un poco el concepto de "Virtual Networking".

Virtual Switches.

VMware VI3 crea una capa de abstracción entre las máquinas virtuales y las interfaces de red físicas de la máquina host mediante los "Virtual Switches". Un "virtual switch", tal y como su nombre indica, es un dispositivo de red virtual a cuyos "puertos" conectamos las máquinas virtuales y que puede (o no) disponer de un "uplink" o enlace externo hacia una (o varias) tarjeta(s) de red del servidor ESX (o una VLAN de la misma). Estos switches se comportan exactamente igual que ese Catalyst, 3com o nortel que tenéis en el CPD, con unas cuantas diferencias:

- No hay Spanning Tree que valga.
- No son configurables (en el sentido de que no se aplican configuraciones específicas por línea de comando)
- Soportan de 8 a 1016 puertos, y son configurables (y reconfigurables) en ese aspecto.
- Todos sus puertos son a gigabit.
- No son aplilables/estacables dentro del mismo host.
- El ancho de banda del backplane (o switching fabric) es configurable.
- No hablan 802.1q (VLANs, para los menos puestos).

Cuando un virtual switch no tiene asignada una tarjeta del servidor ESX, el tráfico se encamina localmente dentro del ESX. Esto es de especial utilidad para Heartbeats, redes cerradas donde una de las máquinas virtuales enruta paquetes entre un Virtual Switch interno y otro externo o, para los fanáticos de la seguridad, para crear entornos de test de penetración seguros.

Gestión de ancho de banda de los Virtual Switches.

¿Tantos switches gigabit como quiera? ¿Y cómo evito que un par de servidores se coman el ancho de banda disponible?... tranquilos. VMware, tal como enumeré antes, permite definir el ancho de banda del backplane del switch virtual (para que nos entendamos, cuánto le dejamos mover a TODOS los servidores conectados a ese switch). ESX permite la definición de tres valores para controlar el ancho de banda de esos switches: El ancho de banda medio garantizado (Average Bandwidth), el ancho de banda Pico (Peak Bandwith) y la cantidad de tráfico máximo que ESX te permitirá enviar por encima del Average Bandwidth (y por debajo del Peak) antes de que venga el tio paco con las rebajas, es decir, antes de empezar a descartar el diferencial entre el exceso y el ancho de banda medio)... vamos, que para los que conozcáis Frame Relay, algo así como CIR y EIR.

Port Groups.

Un Port Group (Grupo de Puertos) es un conjunto de puertos virtuales dedicados a una determinada función. Cada port group es independiente del resto de port groups definidos en un swith virtual... algo así como la segmentación en los hubs (¿recordáis?)... para los más modernos, son VLANs (dominios de colisión separados) sin posibilidad de 802.1q.

Tipos de redes.

VMware asigna tres roles específicos a sus conexiones de red, y estos son los siguientes:

Consola de Servicio (Service Console): Es una IP para la gestión y acceso a los servidores ESX. Es, por decirlo así, la tarjeta de red de la consola. Sólo es usada para el acceso a la consola de VMware, y no puede ser usada por las máquinas virtuales o el kernel de VMware. Cada una de estas conexiones usa un puerto del switch virtual. Pueden existir tantos como puertos haya disponibles.

Puerto del Kernel de VMware (VMkernel Port): Son puertos de acceso del kernel de VMware al exterior. Se usan para el acceso iSCSI, NFS o vMotion. No pueden ser usados para las máquinas virtuales. Ocupan un puerto del switch virtual. Pueden existir tantos como puertos haya disponibles.

Grupo de puertos de máquinas virtuales (Virtual Machine Port Groups): Son el conjunto de puertos asignados a máquinas virtuales. Ocupan todos los puertos libres de un switch virtual.

la siguiente figura muestra un ejemplo de un Virtual Switch configurado con los tres tipos de redes:

La asignación de puertos es dinámica. Si disponemos de un virtual switch de 24 puertos y configuramos dos VMkernel Ports y tres service console, al crear un Virtual Machine Port Group, nos asignará automáticamente el resto de los puertos virtuales, es decir, tendremos conexiones para 19 máquinas virtuales.

Virtual Machine Port Groups.

Este bonito gráfico (que debemos agradecer a VMware) ilustra cómo funciona el networking en VMware. Como puede observarse, el Virtual switch asbtrae totalmente a las máquinas virtuales, que acceden al mundo "real" con sus propias MACs individuales, tal y como si estuviesen conectadas a un switch real. Nótese que el gráfico llama "outbound adapter" a la tarjeta de red que hace de "uplink" entre el switch virtual y la red real... pero esto también puede realizarse a través de una VLAN definida en el "outbound adapter" del host ESX. Este es, precisamente, uno de los aspectos que más versatilidad y potencia (y más esfuerzo de configuración) nos ofrece. El siguiente dibujo (lo siento, es mío, y no dibujo tan bien como la gente de VMware), ilustra este escenario.
Esto significa que, si como yo, sois unos adeptos a dividir redes, podemos extender el manto de la virtualización prácticamente a cualquier parte de vuestra red. Esto resulta de especial importancia cuando, por ejemplo, queremos virtualizar un portal web, lo que nos obliga a llevar los tentáculos de nuestro VMware a zonas dispersas o separadas de nuestro entorno de producción interno.

Seguiremos hablando del tema del networking, en escenarios más complejos.

Un Saludo.

J.


viernes, 8 de diciembre de 2006

Almacenamiento

Un despliegue serio de VMware requiere de almacenamiento compartido. VI3 permite, junto con el almacenamiento local, el almacenamiento en SAN Fibre Channel, iSCSI e incluso NFS. Fibre Channel (o SAN para ricos) es, lógicamente, la mejor opción. Si disponéis de almacenamiento suficiente en vuestro EMC, NetApp, IBM o Hitachi, si os sobran puertos en los switch de fibra y no os importa invertir en HBA's, esta es la opción a elegir. Fibre Channel ofrece el mejor rendimiento, tanto por el medio como por la capacidad de procesamiento de las HBA. Yo he configurado ESX con HBAs Qlogic y Emulex, contra SAN de EMC, IBM e incluso NetApp... mi única frustración vino al intentar hacer hablar a mi ESX 2.5.3 con una SUN Storegde 3511... en descargo de la SAN, he de decir que tampoco me maté para configurarla. No funcionó, así que a otra cosa. Sin embargo, si recurrir a FC os resulta caro, la opción iSCSI (aka SAN para pobres) ofrece una buena alternativa. En mi caso actual, yo tengo 4 servidores ESX tirando contra un NetApp 3020C y el rendimiento es impresionante. Hay que tener en cuenta que ESX sólo soporta iniciador iSCSI por software, ya que el soporte para la HBA iSCSI de qlogic es experimental. VMware debería trabajar en el soporte iSCSI por hardware, ya sea en modo HBA iSCSI o con las incipientes TOE (TCP Offload Engines) con aceleración iSCSI (ver http://www.alacritech.com, yo las uso con Windows y realmente se nota).

La opción NFS tampoco está mal... si no esperas grandes rendimientos. En mi caso, y para evitar usar espacio en los volúmenes iSCSI asignados a VMware, probé a configurar por NFS (usando el Windows Services For UNIX) una carpeta de mi servidor de ficheros para almacenar las imágenes ISO y las plantillas de máquina virtual (templates)... nada mal para tenerlo como almacenamiento secundario. Probaré a levantar máquinas virtuales desde NFS por ver qué tal va... os mantendré informados.

En mi caso, la combinación VMware y Netapp me parece impresionante. Tardé exactamente 10 minutos en configurar una LUN de 600GB para VMware en la F3020 de Netapp... realmente sencillo y sin un problema.... lástima que VMware te obligue a reiniciar el servidor para cada cambio en el iniciador iSCSI... y cierta manía, que aún no consigo entender, de obligarte a crear una conexión de consola en la misma red de iSCSI... por lo menos para configurarlo. Entiendo que a VMware ESX aún le falta bastante desarrollo en lo que a iSCSI se refiere: No soporta MPIO, no hay balanceo de carga... pero tiempo al tiempo. Si no tenéis un Netapp a mano, podéis probar con cualquier alternativa del mercado. Incluso, con propósitos de prueba, llegué a usar el target por software de Falconstor que no va nada mal... incluso el StarWind iSCSI Target de RocketDivision da buenos resultados... en un entorno de test. Si no estáis familiarizados con iSCSI, os recomiendo que probéis las versiones de evaluación de estos productos.

Hasta otra.

J.