¿Son las configuraciones RAID clásicas compatibles con las unidades SSD?
Tags: storage, server, security, spanish
Published: 2021-10-04 12:48:59

<sup>*Cover image attribution: <a href="https://commons.wikimedia.org/wiki/File:Adaptec_8885_SAS_RAID_controller_(SFF-8643_and_SFF-8644_connectors).png">Dmitry Nosachev</a>, <a href="https://creativecommons.org/licenses/by-sa/4.0">CC BY-SA 4.0</a>, via Wikimedia Commons.*</sup>

## Introducción
Las unidades de almacenamiento **HDD** en **entornos profesionales** son gestionadas en configuraciones **RAID** por motivos de **alta disponibilidad** y **rendimiento**.

¿Sigue siendo válida esta técnica si usamos unidades **SSD**? Vamos a verlo.

## RAID: Redundant Array of Independent Disks
Un sistema **RAID** forma una **matriz distribuyendo los datos** entre los distintos discos.

Podemos elegir entre varias configuraciones **RAID** en cuyos **extremos** están el **RAID 0** y el **RAID 1**.

El **RAID 0** no ofrece protección por lo que estaríamos realmente ante un **no RAID**.

Funciona **sumando la capacidad de los discos y accediendo de forma simultánea** a ellos. Obviamente ofrece **mayor rendimiento** pero **la unidad fallará si falla cualquier disco**.

![Diagrama de distribución de datos en RAID 0](https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Raid0.png/220px-Raid0.png)

¿Y el **RAID 1**? pues es justo lo contrario, **en todos los discos se escribe la misma información** y **mientras quede un disco** operativo **la unidad seguirá operativa**.

![Diagrama de distribución de datos en RAID 1](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/Raid1.png/220px-Raid1.png)

Pero ¿realmente la **diferencia en fiabilidad** es tan importante? ¿No es el hardware suficientemente fiable? Vamos a verlo en **probabilidad de pérdida de datos**:

| RAID Level   | Año 1          | Año 2        | Año 3    |
|--------------|---------------:|-------------:|---------:|
| RAID 0       | 2,8 %          | 5,7 %        | 8,4 %    |
| RAID 1       | 0,00004 %      | 0,00009 %    | 0,00013 %|

*__NOTA:__ estas cifras están extraídas de esta [web que usa el modelo __MTTDL__ tomando de referencia discos profesionales de categoria __Enterprise__](https://www.servethehome.com/raid-calculator/raid-reliability-calculator-simple-mttdl-model/).*

Como vemos **la diferencia entre un RAID 0 y un RAID 1 es inmensa** y la probabilidad de fallo de un **RAID 0** en el tercer año es de un **8%**, cifra **inaceptable**.

Pero si estamos analizando el entorno profesional ¿Por qué estamos hablando de **RAID 0**?

Simple: los fabricantes de unidades **SSD** cada vez que aumentan la **capacidad** y el **rendimiento** lo hacen utilizando el concepto de **RAID 0**, pero... ¿en serio? :flushed:

Bueno, aunque el concepto es similar hay diferencia.

Los **SSD** están construidos **sumando unidades individuales** de memoria **flash** y, **dentro de una misma generación**, un disco de **2TB** tiene literalmente el **doble** de unidades que un disco de **1TB** a las que la controladora **accede de forma simultánea**.

Más allá de esta similitud, un disco **SSD** se fabrica como una única unidad con una vida útil garantizada por el fabricante por lo que podemos estar tranquilos sin preocuparnos por la arquitectura subyacente.

## La controladora RAID
Una controladora **hardware RAID** con discos **HDD** aporta varias ventajas.

Por un lado, **descarga al procesador** porque se encarga de la **gestión de la matriz RAID** sin que tenga que intervenir el sistema operativo y, por otro lado, **añade protección contra pérdida de datos** porque la **caché de escritura está protegida** por una batería.

## Unidades SSD, algo no encaja

Los bloques de memoria **flash** de las unidades **SSD** admiten un **número máximo de ciclos de escritura** a partir del cual **el bloque puede quedar dañado**.

Teniendo en cuenta esta limitación, la **controladora de la unidad SSD** está programada para distribuir estos ciclos de escritura [**de forma uniforme entre todos los bloques**](https://en.wikipedia.org/wiki/Wear_leveling) para alargar su vida útil.

Permite incluso **redistribuir los datos más mutables** moviéndolos frecuentemente a **otros bloques** por lo que es imposible garantizar la ubicación de un dato dentro de la unidad **SSD**.

![Detalle del proceso de redistribución de escrituras en unidades SSD](https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Write_Amplification_on_SSD.svg/492px-Write_Amplification_on_SSD.svg.png)

Si la **controladora RAID** espera que la **distribución de los datos sea de forma uniforme**, en base al esquema de la matriz RAID, y la **controladora de la unidad SSD** lo hace **de forma aleatoria** y ambas lo hacen para alargar su vida útil ¿a quién hacemos caso? sin duda a la controladora SSD.

Cuando se realizan **operaciones de borrado** el **OS** informa, enviando comandos **TRIM**, **a la controladora SSD** de los **bloques** que pueden ser borrados y estos **se marcan como libres dejándolos de indexar temporalmente**. El problema es que **la controladora RAID impide que estos comandos lleguen** a la unidad SSD. De igual forma el SO tampoco puede acceder a los parámetros SMART.

**Es crítico evitar estos problemas** y se remedia configurando la controladora RAID para funcionar en **modo directo o JBOD** anulando de facto su funcionalidad.

Entonces ¿qué ocurre con la protección de la **caché de escritura** ofrecida por la controladora? Los fabricantes de unidades SSD tienen en cuenta este detalle y **añaden una batería interna**.

## La gestión de unidades SSD, un mundo nuevo

¿Quiere decir esto que no existen controladoras RAID para SSD? la respuesta es **que si y a la vez que no**, porque curiosamente, [**las nuevas controladoras RAID SSD**](https://highpoint-tech.com/USA_new/series-ssd7103-overview.htm), sólo ofrecen los modos **RAID 0** y **RAID 1** para permitir que las unidades estén conectadas de forma directa al **OS**.

En todo caso las nuevas unidades **NVMe** ofrecen tasas de **lectura por encima de los 3000 MB/s** dejando obsoletas a las controladoras simplemente porque no hay ancho de banda para conectar varias unidades en un único bus PCIe.

¿Existe una **mejor arquitectura** para gestionar estas unidades?.

La respuesta vendría de la mano de los [nuevos servidores de almacenamiento **Direct-Attach**](https://www.servethehome.com/supermicro-2029uz-tn20r25m-review-2u-direct-attach-nvme-storage/). Estos servidores conectan el bus **PCIe de cada unidad NVMe directamente al bus PCIe de las distintas CPUs**. De esa forma se aprovecha todo el potencial del servidor.

![Supermicro Direct-Attach System Diagram](https://www.servethehome.com/wp-content/uploads/2020/03/Supermicro-SYS-2029UZ-TN20R25M-System-Diagram.jpg)

<sup>*Esquema de un servidor Direct-Attach, <a href="https://www.servethehome.com/wp-content/uploads/2020/03/Supermicro-SYS-2029UZ-TN20R25M-System-Diagram.jpg">fuente ServeTheHome.</a>*</sup>

Fin de este análisis, no soy un experto así que cualquier dato que consideres se puede ser mejorado te invito a que comentes y compartas :grin: