vSphere 5 – SDRS ¡DRS para nuestro almacenamiento!

Que tal gente, continuando con la serie de vSphere 5, nos toca hablar sobre SDRS o Storage Distributed Resource Scheduler. En versiones anteriores de VMware ya contábamos con DRS pero este solo aplicaba a nivel de CPU y Memoria RAM, vamos a conocer como nos apoya esta nueva funcionalidad para poder tener un mejor uso de nuestro almacenamiento.

¿Que es SDRS?

Storage DRS nos provee de las siguientes funcionalidades:

  • Colocación inicial de las VMs según el espacio disponible
  • Migración de VMs utilizando Storage VMotion basandose en el espacio disponible
  • Migración de VMs utilizando Storage VMotion basandose en la latencia que presenta cada almacenamiento

Como podemos ver Storage DRS extiende las capacidades y beneficios que se nos entregaban para los recursos de computo hacia el almacenamiento, permitiéndonos utilizar de mejor manera nuestro espacio y tratando siempre de alojar las VMs donde se presenta un mejor performance de disco.

¿Que es un Datastore Cluster?

Para poder trabajar con SDRS debemos crear un grupo de datastores a partir de los cuales se estarán tomando mediciones en cuanto a espacio y latencia para poder balancear las VMs que residan dentro de ese cluster o grupo de Datastores.

Aquí al igual que un cluster tradicional de VMware, tenemos la capacidad de activar o no DRS (en este caso SDRS) por lo cual:

  • Datastore Cluster sin SDRS activado: solo es un grupo de datastores.
  • Datastore Cluster con SDRS activado: Balanceo de cargas y espacio

En el momento que estemos creando una VM se nos mostrará donde podemos colocarla, aquí seleccionaremos nuestro datastore cluster y el colocado inicial será decidido por SDRS

¿Que operaciones realiza SDRS?

Un cluster de SDRS realiza las siguientes operaciones:

  • Colocación inicial – En el momento que nosotros creemos una nueva máquina virtual, estaremos seleccionando un datastore cluster en vez de seleccionar un datastore tradicional, con esto, le permitiremos a SDRS tomar en cuenta el historico de latencia que se tiene de los datastores que componen dicho cluster (estaremos hablando de como se obtiene más adelante) y el espacio disponible. Por defecto, colocarán todos los VMDKs de una VM en un mismo datastore aunque esto puede ser modificado con reglas de afinidad y anti afinidad entre VMDKs (más adelante lo estaremos tocando), en este punto será el primer beneficio que SDRS nos entrega, permitiendo colocar las VMs en el datastore con mejores características.
  • Balanceo de Cargas – Una vez que las VMs sean colocadas en los datastores que conforman dicho cluster, se comenzará a recolectar estadísticas de latencia en cada uno de los datastores que conforman dicho datastore cluster, hasta después de 16 horas de capturar estadisticas se comienza con el balanceo de cargas a nivel de I/O, en el caso de que se este ejecutando alguna operación de Storage VMotion la captura de estadísticas no comienza ya que este tipo de operaciones alteran bastante el comportamiento de nuestro almacenamiento, por lo cual, puede tardar más de 16 horas en comenzar el balanceo. Las recomendaciones dadas por SDRS se basarán en 2 tresholds modificables, el espacio libre y la latencia a disco, en el caso de latencia  a disco se tiene un valor por defecto de 15 ms, al igual que DRS, estas se aplicarán o no según el nivel de automatización que se tenga en dicho datastore cluster. Las estadísticas de latencia son obtenidas cada 30 minutos y se analizan las cargas en periodos de 8 horas, por lo cual se tiene un histórico, y en el momento de realizar las recomendaciones se tomará en cuenta si estas nos entregarán un beneficio por lo menos 24 horas de lo contrario no se aplicarán. Solo en el momento que se exceden los valores definidos es cuando comienza el balanceo.

  • Modo mantenimiento para datastore – Al tener un Datastore cluster tenemos la capacidad para poder ingresar un datastore que forma parte de dicho cluster a modo mantenimiento, esto al igual que en un cluster de DRS estará evacuando las VMs registradas, solo que en este caso se realizaran operaciones de Storage VMotion para evacuar todos los vmdks hacia otros datastores que conformen el cluster. Templates de VMs no son migrados.
  • Reglas de Afinidad y Anti-Afinidad – Al igual que DRS, contamos con reglas de afinidad y anti afinidad solo que en este caso aplicarán sobre los VMDKs o VMs:
  1. Intra-vm VMDK Affinity – Con estas reglas mantenemos los discos duros virtuales o vmdks de las VMs siempre en un mismo datastore, esta regla es la que se activa por defecto.
  2. VMDK Anti-Affinity – Con estas reglas mantenemos los vmdks de la VM en distintos datastores, este tipo de reglas hacen mucho sentido para bases de datos para la separación del vmdk de datos y el de log.
  3. VM Anti-Affinity – Con estas reglas mantenemos un grupo de VMs en distintos datastores, este tipo de reglas hacen mucho sentido cuando se tienen la necesidad de tener servicios redundantes o en el caso de separar VMs con una carga de I/O bastante alta.


¿Como obtiene SDRS las estadísticas de latencia?

SDRS obtiene la información de latencia basándose en Storage I/O Control (SIOC) utilizando un mecanismo de dicha funcionalidad llamado “injector” este mecanismo básicamente estará inyectando operaciones de I/O cuando el almacenamiento se encuentra en estado “idle” (almenos 8 segundos de tener operaciones de I/O) por lo cual no afectará el rendimiento, al inyectar estas operaciones (Distinta cantidad de outstanding I/Os) se puede identificar la latencia que se presenta al procesar dichas operaciones a disco.

La latencia medida por SDRS no es en tiempo real, esta es tomada a partir de datos históricos, por ejemplo, si el día anterior se tuvo latencias mayores a 15 ms el 94% del tiempo se considera que dicho datastore esta sobre cargado. Algo interesante es que podemos definir ventanas de tiempo para que estas no sean consideradas en los históricos de SDRS, esto nos hace mucho sentido si tenemos ventanas definidas de anti-virus:

Les recomiendo ampliamente leer el post de Duncan Epping que pueden encontrar en este link:

Aquí tenemos un time-line de como SDRS trabaja:

¿Consideraciones de diseño?

En el caso de los Datastore Clusters y clusters de vSphere (DRS, HA, o simplemente un cluster) pueden tener las siguientes relaciones:

  • 1:1

  • many:1

  • 1:Many


Debemos mantener en mente los siguientes puntos:

  • Tiers de almacenamiento – Aunque SDRS nos permite agregar almacenamiento de distinto rendimiento, lo recomendado siempre será crear datastore clusters con capacidades de almacenamiento similares, para que podamos mantener los SLAs que se requieren.
  • VMFS y NFS – No podemos crear datastore clusters que contengan datastores de NFS y datastores de VMFS, solo tenemos capacidad de crear clusters del mismo tipo.
  • Soporte para VMFS 5 y VMFS 3 – SDRS soporta datastores con VMFS 3 o VMFS 5, aquí la consideración que debemos tener, es que solo se soportan hosts ESXi 5.0

 

Leave a Reply