jueves, 12 de febrero de 2015

Virtualizar es sencillo, hacerlo bien... no tanto.

Amigos de Inseguros.

En el capítulo de hoy vamos a intentar aclarar algunas dudas básicas sobre sistemas de virtualización.

El proceso de instalación de un hypervisor es muy sencillo, se instala un S.O. como pueda ser Vmware, Xen Server, Hyper-V, habilitamos virtualización a nivel de kernel en cualquier Linux moderno...


Bien, una vez tenemos el hypervisor, procedemos a instalar unas máquinas virtuales por encima, como hacemos con virtual box, vmware workstation, pararells y demás hypervisores tipo 2.

Hasta ahí es muy sencillo, pero claro, si vas a virtualizar sistemas complejos en producción, con mucho rendimiento o criticidad, la cosa se va complicando mucho. Puede ser que en primeras instancias todo funcione bien, pero seguro que si no diseñas bien un plan de virtualización, en el futuro tendrás problemas.

Voy a intentar daros unos cuantos consejos, basados en mi experiencia, para que tengáis en cuenta si os vais a animar a virtualizar algún servidor, o por si lo contrario tienes una infraestructura virtual y necesitas más performance.

Por ejemplo, cuando creas un disco duro virtual, sea el sistema que sea, tenemos la opción de establecer el disco con un tamaño fijo o dinámico. En el segundo caso, se reserva en el disco físico el espacio utilizado, aunque en el sistema operativo virtualizado veamos el total. Por ejemplo, podemos crear un disco de 100 gb, que nuestro Windows virtual verá como 100gb, pero que físicamente, en el disco duro físico o cabina, ocupe 20gb. Esto es interesante para sobredimensionar, pero la escritura en disco será MUCHO MAS LENTA. Un ejemplo podría ser lo que tarda en crearse un disco dinámico de 20 gb o de tamaño fijo. En el caso de tamaño fijo, el disco duro virtual se formateará con "ceros" todo el tamaño. Un poco de tiempo al principio nos dará MUCHO mas rendimiento a posteriori.

Otra cuestión importante, en Hyper-V es los servicios de integración. Cuando instalas una VM debes contar con que haya una versión oficial de los servicios de integración. Si no hay una versión, puedes instalar el sistema que quieras, pero la tarjeta de red del sistema virtual correrá a 100mb, no a giga. Esto en servidores en producción es un FALLO de rendimiento importante.

Otra cuestión, cuando creas el disco duro bajo Hyper-V, créalo con controladora SCSI, no IDE, ya que de esta manera podremos ampliar el disco duro. Si esta en modo IDE no podremos, y tendremos que andar añadiendo discos, ampliando volúmenes y complica las operaciones IT. El rendimiento es exactamente igual, pero es mas cómodo usar SCSI.

Otra cuestión suele ser las bases de datos.
Por ejemplo, si vas a virtualizar SQL SERVER debes activar PAGE LOCK MEMORY en el Windows invitado. Por qué?

Sql Server hace gestiones constantemente en memoria para mantener registros consultados en memoria cache, con el fin de agilizar consultas. Sin embargo, si tenemos por debajo un hypervisor con gestión de memoria dinámica, como Vmware, este lo que va a hacer es intentar liberar RAM constantemente de las VM´s para poder tener más disponible, para las VM´s...

Aparte del tunning normal de Sql server, recomiendo activar PAGE LOCK MEMORY mediante una GPO local en el Windows virtual, y configurar la cuenta de servicio que arranca Sql Server para que mantenga en memoria bloqueada toda la ejecución, y así prever la destrucción de cache. Es como si el recolector de basura de JAVA intentara limpiar memoria constantemente, incluso a medio de un proceso... Bueno no es tan malo, pero casi :-).

Otra recomendación es si tenemos un sistema virtual con acceso intensivo a datos, separemos la ubicación física de los discos virtuales en distintos discos físicos. Recuerda que aunque sean virtuales, en algún momento la cabeza lectora del disco tendrá que alternar para leer/Escribir información de los distintos discos duros virtuales, por lo que separarlos aumenta el performance considerablemente.

En el caso de usar Hyper-V y tener instalado un Antivirus, cosa recomendable en cualquier sistema, es aconsejable excluir los ficheros de máquinas virtuales y los procesos VMMS.exe y VMWP.exe.

Otro truquito importante para los sistemas virtualizados Windows es deshabilitar PREFETCH.

Cada sistema, cada escenario, cada fabricante requiere de conocimientos y despliegues distintos, pero espero que te sirvan de ayuda estas recomendaciones generales en el mundo de la virtualización.

Como siempre, espero que os guste, gracias por leerme !!!!