VSAN 6.2 – Erasure coding

Que tal gente, el día de hoy les estaré hablando sobre dos nuevos mecanismos para protección de datos que nos ofrece VSAN 6.2 a través del uso de Erasure Coding, versiones anteriores de Virtual SAN solo ofrecían protección de datos (objetos y sus componentes) a través de Raid-1 o “mirroring”. Primero me enfocaré en explicar como se protegían los datos de VSAN en version anteriores para después pasar a tratar de explicar (de manera simplificada) que es Erasure Coding y como lo implementa VSAN 6.2 y como último entender como usamos Erasure Coding en VSAN 6.2.

¿Como protege los datos VSAN en versiones anteriores?

Como ya comenté en la introducción, antes solo teníamos la capacidad de proteger los objetos y sus componentes que residían en VSAN a través del uso de “mirroring” o copias completas de los mismos. Esto claramente tenía un impacto grande en términos de consumo de espacio en disco, dependiendo de que política de “Failures to Tolerate” habíamos configurado, siendo la política por defecto de FTT=1 lo cual significaba N+1 o en otras palabras el objeto y una copia exacta del mismo (teniendo 2 componentes y un “witness”). La siguiente imagen nos muestra una máquina virtual que esta siendo protegida con una política de VSAN de FTT=1 o “mirroring”:

Screen Shot 2016-02-11 at 6.56.00 PM

Podemos notar que efectivamente el objeto (Hard disk 1) tiene dos componentes o copias exactas que básicamente es un “mirror”, también se tiene el componente llamado witness para poder tener quorum en el cluster en caso de falla, en este caso la máquina virtual solo tiene un disco duro (Hard disk 1) con 40GB de espacio por lo cual al aplicar la política tendríamos 80GB ocupados. Para entender de mejor manera que son los objetos y componentes les sugiero leer mi articulo: “VSAN Deepdive”.

¿Que es Erasure Coding?

Un Erasure code o “código de borrado” permite tomar un objeto y romperlo en múltiples fragmentos mediante el uso de operaciones matemáticas, es importante considerar que al “romper” este objeto y ser codificado el resultado son fragmentos mas “grandes” y estos serán almacenados de manera distribuida en el cluster (RAIN). Entonces tenemos el objeto  que es es segmentado en M “pedazos” para después estos “pedazos” ser codificados en “N” pedazos, lo importante que debemos notar es que N siempre será mayor que M (N>M) en terminos de espacio debido a los datos incluidos como paridad. En el caso de tener una falla en el cluster (perdida de un host, un disk group, un disco, etc) la información puede ser reconstruida a partir de M fragmentos.

Es importante comprender que existen muchos tipos de “Erasure codes”/”Códigos de Borrado” pero a grandes rasgos así funciona la protección de datos con codigos de borrado. La ventaja que tiene esto frente a un “mirror” (RAID-1) esta en que el consumo de espacio será menor, claramente variando entre cada código de borrado, pero para el caso especifico de VSAN 6.2 tenemos los siguientes valores

Codigo/mecanismo Consumo Ventaja Fallos soportados Disponible en
RAID-1(FTT=1) 2x Mayor rendimiento 1 Host VSAN Hibrida/All-Flash
RAID-1(FTT=2) 3x Mayor rendimiento 2 Hosts VSAN Hibrida/All-Flash
Network RAID-5 1.33x Reducción de espacio 1 Host VSAN All-Flash
Network RAID-6 1.5x Reducción de espacio 2 Hosts VSAN All-Flash

Como pueden ver incluí una columna de “Ventaja” en la tabla, esto debido a que Erasure coding introduce cierto consumo extra de procesamiento en el momento de codificar los datos y también en el momento de leer y escribir, podrán preguntarse, ¿Porque al momento de leer y escribir? esto es causado ya que en el momento de escribir datos se tendrá que leer aquellos datos existentes (codificados) y codificarlos de nuevo usando el código de borrado en especifico, esto tiene un impacto a nivel de I/O, latencia y también de CPU, es por eso que pueden ver que solo está disponible en versiones de All-Flash. Lo interesante es que muchas de las operaciones  (XOR)  pueden ser descargadas a sets de instrucciones de tipo vectoriales especificas de los procesadores como SSE y AVX lo cual reduce el impacto.

¿Como usamos Erasure Coding en VSAN 6.2?

Como sabemos VSAN se rige por políticas de SPBM (Storage Policy Based Management) a través de las cuales podemos definir distintas capacidades del proveedor VASA (vSphere APIS for Storage Awareness) que VSAN ofrece (el cual esta directamente provisto desde el hipervisor):

Screen Shot 2016-02-11 at 9.54.23 PM

Existen múltiples capacidades de VSAN expuestas por VASA como FTT (Failures To Tolerate), OSR (Object Space Reservation), entre otras. En este articulo nos estaremos enfocando exclusivamente a las capacidades que nos permiten hacer uso de Erasure coding que son “Failure Tolerance Method” (FTM) y FTT.

Screen Shot 2016-02-11 at 10.02.27 PM

Podemos ver que se agrego una nueva capacidad llamada Failure Tolerance Method, la cual nos permite seleccionar RAID-1 (Mirroring) que básicamente es tener copias exactas de la información como en versiones anteriores de VSAN y RAID-5/6 que nos permite utilizar Erasure Coding. Ahora para poder definir si se trata de RAID-5 o RAID-6 tendremos que utilizar FTT, para RAID-5 necesitaremos configurar FTT=1 :

Screen Shot 2016-02-11 at 10.08.03 PM

Y para RAID-6 necesitaremos utilizar FTT=2:

Screen Shot 2016-02-11 at 10.08.57 PM

Si ponen atención pueden notar la diferencia en cuanto a consumo de almacenamiento en base al ejemplo dado de 100GB :). Ahora vamos a ver el ejemplo de como se refleja RAID-5  en los componentes de las VMs:

RAID-5 (3+1):

Screen Shot 2016-02-11 at 10.12.33 PM

 

Espero el articulo haya sido de utilidad para entender de mejor manera que nos ofrece VSAN 6.2, acá les dejo algunos links de información relevante:

https://www.usenix.org/system/files/login/articles/10_plank-online.pdf

http://smahesh.com/blog/2012/07/01/dummies-guide-to-erasure-coding/

http://www.yellow-bricks.com/

https://blogs.vmware.com/virtualblocks/2016/02/12/the-use-of-erasure-coding-in-virtual-san-6-2/

One comment on “VSAN 6.2 – Erasure coding

Leave a Reply