sábado, 12 de enero de 2019

Cluster ONTAP - Usando RAID TEC

Hola de nuevo, en este post voy a repasar una funcionalidad disponible en ONTAP desde la versión 9.0 y que, en función de la criticidad de nuestros datos o del tamaño de los discos que estemos usando, puede ser interesante tener en cuenta. Me estoy refiriendo al RAID Triple Erasure Coding o RAID-TEC para abreviar.

Primero vamos al rollo teórico y resumamos un poco que es RAID-TEC y como funciona, aunque para ello será buena idea que revisemos primero como funcionan los modos RAID4 y RAID-DP que hemos estado utilizando hasta ahora.

Como ya sabemos, a grandes rasgos, RAID4 soporta el fallo de un disco de un raid group y RAID-DP el fallo de dos discos de un raid group. Siempre que nuestro sistem tenga suficientes discos spare, ONTAP será capaz de sustituir el disco fallido y reconstruir la información del mismo a partir de la información de paridad correspondiente. En general y solo desde mi punto de vista, no es recomendable construir agregados usando RAID4, salvo que los datos que contenga no sean datos de producción y dispongamos de suficientes discos spare.

Pero, ¿como funcionan realmente RAID4 y RAID-DP? Como habremos comprobado muchas veces, cuando consultamos la distribución de discos de un agregado, vemos algo como lo siguiente:

Distribución de discos de un agregado.
En la imagen anterior tenemos la salida del comando aggr show que nos muestra los raid groups que forman un agregado y, como podemos ver, hay dos discos marcados como discos de paridad ya que el raid group en cuestión es de tipo RAID-DP. Cada disco de paridad almacena un tipo de paridad diferente, más concretamente, el tipo de paridad por disco es el siguiente:
  • Disco de paridad o de paridad de banda. Este disco almacenaría el cálculo de paridad de banda, mediante el uso de una operación XOR, de cada una de las escrituras distribuidas en cada uno de los discos de datos del raid group. Esto podemos verlo de manera muy simple como:
Cálculo de paridad de fila.
  • Disco de paridad diagonal. Este disco almacenaría el cálculo de paridad diagonal de cada una de las bandas diagonales distribuidas en cada uno de los discos de datos del raid group. De nuevo, de manera muy simplificada, podemos verlo del siguiente modo:  
Cálculo de paridad diagonal.
Teniendo esto en cuenta, podemos ver un raid group completo, con sus discos de paridad y de paridad diagonal, del siguiente modo:

Paridad de banda y diagonal de un raid group.
Llegados a este punto, está claro que en el caso de usar RAID-TEC, tendremos un nuevo disco que contendrá un nuevo cálculo de paridad y ¿que nos queda para poder hacer ese cálculo? Pues en este caso la solución de NetApp es añadir un cálculo de paridad anti-diagonal que se almacenará en nuestro tercer disco de paridad. Esta paridad anti-diagonal podemos verla de forma muy simplificada del siguiente modo:
Paridad anti-diagonal.
Como vemos, para el cálculo de la paridad anti-diagonal solo se utilizan los discos de datos y el disco de paridad de banda.

Para el cálculo de paridad es muy importante tener en cuenta como trabaja ONTAP y su relación con la NVRAM. En una entrada posterior revisaremos todo esto un poco más en detalle.
Como es lógico, RAID-TEC está pensado para aquellos agregados en los que usemos discos de gran capacidad, pensando en evitar que el fallo de un disco, mientras se está realizando la reconstrucción de un raid group, provoque la pérdida irreversible de datos. La recomendación de NetApp es usarlo para agregados con discos de capacidades superiores a los 4 TB.

Para cada tipo de RAID, el número mínimo de discos es el siguiente:
  • RAID4, son necesarios al menos 3 discos, dos discos de datos y uno de paridad de banda para agregados con un solo raid group. Si se trata del agregado root, el raido group puede ser de dos discos únicamente.
  • RAID-DP, el mínimo número de discos necesarios para un agregado con un solo raid group es 5, tres discos de datos, uno de paridad de banda y otro de paridad diagonal. Sin embargo, si se trata del agregado root, el raid group puede estar formado por 3 discos solamente.
  • RAID-TEC, para este caso el mínimo número de discos es 7, 4 discos de datos y 3 para cada uno de los tipos de paridad.
Una forma sencilla de comprobar el número de discos requeridos para cada tipo de raid, es lanzar el comando de creación de un agregado con un solo disco ya que, la salida del comando nos indicará el mínimo número de discos requeridos:
Discos requeridos por tipo de RAID.
Vamos a ver como crear un nuevo agregado de tipo RAID-TEC con dos raid groups, para esto solo necesitamos ejecutar un comando como el siguiente:
  
Creación de un agregado con protección RAID-TEC.
Como podemos ver en la salida del comando, vamos a crear un agregado que estará formado por 14 discos en total, con dos raid groups de 7 discos cada uno (opción maxraidsize) con protección RAID-TEC en cada raid group. Esto se refleja en la distribución de cada raid group con los discos de paridad parity, dparity y tparity, siendo el resto discos de datos.
Una de las ventajas de ONTAP es la capacidad que nos proporciona de cambiar el tipo de RAID utilizado en un agregado con solo usar un comando. Veamos un ejemplo en el cual, creamos un agregado con una protección RAID4 y lo cambiamos a RAID-DP y finalmente a RAID-TEC:
Creación de un agregado de tipo RAID4.
Conversión del agregado a tipo RAID-DP.
Conversión del agregado a tipo RAID-TEC.
Como podemos ver, el sistema ha ido añadiendo discos de paridad al agregado en cada uno de los casos y reconstruyendo su contenido según lo hemos convertido. Para hacer esto es necesario que tengamos en cuenta los siguientes puntos:
  • Es necesario que dispongamos de suficientes discos de spare en el sistema. En este ejemplo cada raid group ya tiene el mínimo número de discos requerido para cada tipo de raid, con lo que solo es necesario añadir un disco de paridad a cada raid group en cada paso. 
  • En caso de que el número de discos en los raid groups ya existentes sea inferior al número de discos requeridos, será necesario incremental el número de discos requeridos en cada raid group hasta el número necesario antes de poder hacer la conversión de tipo de RAID.
  • El sistema reconstruye el disco de paridad correspondiente a partir de los datos existentes en el agregado. Si tenemos que convertir un agregado con una gran cantidad de datos, es muy probable que el proceso de reconstrucción sea bastante largo.
Hasta aquí un repaso de RAID-TEC y como usarlo en nuestros sistemas ONTAP. En breve una entrada sobre como proteger nuestros agregados localmente usando SyncMirror.