RAID y JBOD
Qué se gana agrupando discos, cómo reparte cada nivel RAID los datos y la paridad, cuántos fallos tolera, cuánta capacidad neta deja, y en qué se diferencia JBOD de todo lo anterior.
Qué es un RAID y qué se persigue con él
RAID significa conjunto redundante de discos independientes. La idea es coger varias unidades físicas y presentarlas al sistema operativo como una sola unidad lógica, de forma que este vea un único volumen y no se entere de cuántos discos hay debajo.
Se hace por dos motivos que conviene no mezclar, porque cada nivel RAID los combina en una proporción distinta: rendimiento, porque escribir en cuatro discos a la vez va más rápido que en uno; y seguridad, porque guardar información redundante permite seguir funcionando cuando un disco se estropea.
Los discos de un RAID pueden ser de distinto tamaño, pero el conjunto se comporta como si todos midieran lo que el más pequeño: el exceso de los grandes queda sin usar. Es la regla que hay que aplicar antes que ninguna otra al calcular una capacidad neta.
A un conjunto se le puede añadir además un disco de reserva o spare, que no guarda datos mientras todo va bien y entra automáticamente en funcionamiento cuando otro falla, para que la reconstrucción empiece sin esperar a que llegue un técnico.
Manda siempre el disco más pequeño. Un RAID 0 con una unidad de 250 GB y otra de 750 GB rinde 500 GB, no un tera.
Para el examen
Qué persigue: rendimiento y seguridad
Regla del tamaño: manda siempre el disco más pequeño
Disco spare: de reserva; entra solo cuando otro falla
RAID 0 y RAID 1: los dos extremos
Los dos primeros niveles son los casos puros, uno por cada motivo. RAID 0 busca solo rendimiento y RAID 1 busca solo seguridad, y ninguno de los dos usa paridad.
RAID 0, o striping, parte la información en tiras y las va repartiendo entre los discos por turno. Al leer o escribir un archivo grande, todos los discos trabajan a la vez y el rendimiento se multiplica. A cambio no hay ninguna redundancia: si falla un disco, se pierde todo el volumen, porque a cada archivo le faltan trozos. Es el único nivel llamado RAID que en realidad no lo es, porque no tiene nada de redundante.
RAID 1, o mirroring, hace lo contrario: escribe el mismo bloque en los dos discos, de modo que uno es copia exacta del otro. Tolera perfectamente el fallo de un disco y mejora la lectura, porque el sistema puede servir de cualquiera de las dos copias. Su precio es el peor de todos: hace falta el doble de espacio para guardar lo mismo.
Cada banda se parte en dos y cada mitad va a un disco distinto. Los dos trabajan a la vez, de ahí la velocidad. Y de ahí también el riesgo: si cae el disco 2, a TODAS las bandas les falta su segunda mitad y no se recupera ni un archivo.
Diagrama de 2 discos. Disco 1: A1, bloque de datos; B1, bloque de datos; C1, bloque de datos. Disco 2: A2, bloque de datos; B2, bloque de datos; C2, bloque de datos- Bloque de datos
- Copia del bloque
La banda entera se escribe en los dos discos. Cualquiera de ellos basta para seguir trabajando, y por eso se paga la mitad de la capacidad: dos discos de 4 TB dan 4 TB útiles.
Diagrama de 2 discos. Disco 1: A, bloque de datos; B, bloque de datos; C, bloque de datos. Disco 2: A, copia del bloque; B, copia del bloque; C, copia del bloque| Aspecto | RAID 0 | RAID 1 |
|---|---|---|
| Qué hace | Reparte tiras entre los discos | Duplica cada bloque |
| Mínimo de discos | 2 | 2 |
| Tolerancia a fallos | Ninguna | Sobrevive al fallo de un disco del espejo |
| Usa paridad | No | No |
| Capacidad neta | Número de discos por el disco más pequeño | La mitad, en un espejo de dos discos |
RAID 0 no tolera ningún fallo y además empeora la fiabilidad del conjunto: con dos discos hay el doble de probabilidad de que uno de los dos falle, y basta uno para perderlo todo.
Para el examen
RAID 0 (striping): solo rendimiento, cero tolerancia a fallos
RAID 1 (mirroring): duplica todo, tolera un fallo
Capacidad útil de RAID 1: la mitad
Acceso paralelo y acceso independiente
Los niveles con paridad se agrupan en dos familias según el tamaño de la tira en que se trocea la información, y ese detalle, que parece menor, cambia por completo el comportamiento del conjunto.
| Familia | Niveles | Tamaño de la tira | Cómo se comporta |
|---|---|---|---|
| Acceso paralelo | RAID 2 y RAID 3 | Muy pequeña: bit, byte o palabra | Cada petición ocupa a la vez a todas las unidades, de modo que el conjunto sirve una sola petición cada vez, pero a mucha velocidad |
| Acceso independiente | RAID 4, RAID 5 y RAID 6 | Grande: bloques | Cada disco puede atender una petición distinta, así que el conjunto responde bien a muchas peticiones simultáneas |
En el acceso paralelo los ejes de los discos van sincronizados, porque si un plato va adelantado respecto a otro no se pueden leer los fragmentos de un mismo dato a la vez. Esa exigencia es una de las razones de que RAID 2 y RAID 3 hayan desaparecido de la práctica frente a RAID 5.
Tira pequeña significa velocidad en transferencias grandes; tira grande significa muchas operaciones por segundo. La elección depende de si el servidor mueve vídeo o base de datos.
Para el examen
Acceso paralelo (tiras pequeñas): RAID 2 y RAID 3
Acceso independiente (bloques): RAID 4, 5 y 6
Los niveles con paridad, del 2 al 6
La paridad es la manera de tolerar fallos sin pagar el 50 % de espacio que cuesta un espejo. Consiste en guardar, además de los datos, un valor calculado a partir de ellos que permite reconstruir el trozo que falte. Con un disco caído, el sistema deduce su contenido combinando lo que queda.
- Bloque de datos
- Paridad
Mira la columna del disco 3: es paridad de arriba abajo. Como toda escritura, sea de la banda que sea, tiene que actualizar su paridad, ese disco trabaja en todas las operaciones y se convierte en el cuello de botella del conjunto. Ese es el defecto que hundió a RAID 3 y RAID 4.
Diagrama de 3 discos. Disco 1: A1, bloque de datos; B1, bloque de datos; C1, bloque de datos. Disco 2: A2, bloque de datos; B2, bloque de datos; C2, bloque de datos. Disco 3: Ap, paridad; Bp, paridad; Cp, paridad- Bloque de datos
- Paridad
La paridad baja en diagonal: cada banda la guarda en un disco distinto. Se reparte así el trabajo de escritura entre los tres y desaparece el cuello de botella, sin cambiar ni la tolerancia (un fallo) ni la capacidad (N menos 1).
Diagrama de 3 discos. Disco 1: A1, bloque de datos; B1, bloque de datos; Cp, paridad. Disco 2: A2, bloque de datos; Bp, paridad; C1, bloque de datos. Disco 3: Ap, paridad; B2, bloque de datos; C2, bloque de datos- Bloque de datos
- Paridad
- Sin usar
Con el disco 2 caído, la banda A se recupera combinando A1 con su paridad Ap, y la banda B no necesita nada porque solo perdió la paridad. El conjunto sigue dando servicio, pero degradado: cada lectura del trozo que falta hay que calcularla, y hasta que termine la reconstrucción otro fallo sí sería mortal.
Diagrama de 3 discos. Disco 1: A1, bloque de datos; B1, bloque de datos. Disco 2 ✕: A2 perdido, sin usar; Bp perdida, sin usar. Disco 3: Ap, paridad; B2, bloque de datos- Bloque de datos
- Paridad
Cada banda guarda ahora DOS paridades calculadas de formas distintas, p y q, y las dos rotan igual que en RAID 5. Con cuatro discos quedan dos de datos: por eso la capacidad es N menos 2, y por eso sobrevive a que caigan dos unidades a la vez.
Diagrama de 4 discos. Disco 1: A1, bloque de datos; Bq, paridad. Disco 2: A2, bloque de datos; B1, bloque de datos. Disco 3: Ap, paridad; B2, bloque de datos. Disco 4: Aq, paridad; Bp, paridad| Nivel | Cómo reparte | Mínimo | Fallos que tolera | Capacidad neta |
|---|---|---|---|---|
| RAID 2 | A nivel de bit, con discos dedicados a un código Hamming de detección y corrección | 3 | 1 | Depende de la configuración de discos de datos y de paridad |
| RAID 3 | Tiras pequeñas en los discos de datos y un único disco fijo para la paridad | 3 | 1 | (Número de discos menos 1) por el disco más pequeño |
| RAID 4 | Como RAID 3 pero con tiras grandes, y también un único disco fijo de paridad | 3 | 1 | (Número de discos menos 1) por el disco más pequeño |
| RAID 5 | Tiras grandes con la paridad repartida entre todos los discos | 3 | 1 | (Número de discos menos 1) por el disco más pequeño |
| RAID 6 | Doble paridad, calculada de dos formas distintas y repartida igualmente entre todos | 4 | 2 | (Número de discos menos 2) por el disco más pequeño |
RAID 2 usa código Hamming, que no solo detecta el error sino que lo corrige. Es un nivel teórico: los discos ya incorporan su propia detección de errores, así que nunca se implantó. RAID 3 y RAID 4 tienen el mismo defecto: como la paridad va siempre al mismo disco, ese disco interviene en toda escritura y se convierte en el cuello de botella del conjunto. RAID 5 lo resuelve simplemente repartiendo la paridad, y por eso es el que se usa.
RAID 6 añade una segunda paridad calculada de otro modo y la reparte también. Con ella sobrevive al fallo simultáneo de dos unidades distintas, que es su verdadera razón de ser: en un conjunto grande, la reconstrucción tras un fallo dura horas, y en esas horas el segundo fallo es un riesgo real.
Capacidad neta, siendo N el número de discos
y «menor» la capacidad del disco más pequeño:
RAID 0 -> N x menor
RAID 1 -> (N x menor) / 2 (espejo de dos discos)
RAID 3 -> (N - 1) x menor
RAID 4 -> (N - 1) x menor
RAID 5 -> (N - 1) x menor
RAID 6 -> (N - 2) x menorEl número de discos que se restan coincide siempre con el número de fallos que el nivel tolera. Es la forma más rápida de reconstruir la fórmula si se olvida.
Para el examen
RAID 5: paridad repartida, mínimo 3 discos, tolera 1 fallo, capacidad N-1
RAID 6: doble paridad, mínimo 4 discos, tolera 2 fallos, capacidad N-2
RAID 2: usa código Hamming; es teórico
RAID 3 y 4: embotellan en su disco fijo de paridad
Niveles anidados: RAID 0+1 y RAID 1+0
Un nivel anidado consiste en montar un RAID sobre otro RAID en lugar de sobre discos sueltos. Los dos más citados combinan las mismas piezas en orden inverso, y se leen de dentro hacia fuera: el primer número es lo que se hace primero.
- Bloque de datos
- Copia del bloque
Los discos se emparejan en espejos y las tiras se reparten ENTRE los espejos. Si cae el disco 2, su espejo sigue sirviendo desde el disco 1 y el resto del conjunto ni se entera: aguanta incluso un segundo fallo, siempre que sea del otro espejo.
Diagrama de 4 discos. Disco 1: A1, bloque de datos; B1, bloque de datos. Disco 2: A1, copia del bloque; B1, copia del bloque. Disco 3: A2, bloque de datos; B2, bloque de datos. Disco 4: A2, copia del bloque; B2, copia del bloque- Bloque de datos
- Copia del bloque
Las mismas cuatro unidades y la misma capacidad, pero mira qué pasa si cae el disco 2: se lleva por delante el conjunto RAID 0 entero, porque a sus bandas les falta la mitad. El sistema queda colgando del espejo completo, y cualquier fallo en él lo pierde todo. Esa es la razón de que en producción se monte 1+0 y no 0+1.
Diagrama de 4 discos. Disco 1: A1, bloque de datos; B1, bloque de datos. Disco 2: A2, bloque de datos; B2, bloque de datos. Disco 3: A1, copia del bloque; B1, copia del bloque. Disco 4: A2, copia del bloque; B2, copia del bloque| Nivel | Se construye así | Nombre descriptivo |
|---|---|---|
| RAID 0+1 | Primero se hacen conjuntos RAID 0 y después se pone uno como espejo del otro | Espejo de divisiones |
| RAID 1+0 | Primero se hacen espejos RAID 1 y después se reparten tiras entre ellos | División de espejos |
El orden importa en la práctica. En RAID 1+0, si cae un disco solo se degrada su espejo y el resto sigue intacto, así que puede sobrevivir a varios fallos siempre que no sean los dos de un mismo espejo. En RAID 0+1, en cambio, un solo disco caído inutiliza todo el RAID 0 al que pertenece y deja al conjunto dependiendo por completo de la otra mitad. Por eso en producción se prefiere 1+0.
Para calcular la capacidad de un anidado se aplica la regla de dentro afuera: se resuelve primero el nivel interior, y el resultado de cada grupo se trata como si fuera un disco del nivel exterior, al que se vuelve a aplicar la regla del más pequeño.
Ejemplo: 6 discos en RAID 1+0
2 discos de 2 TB, 2 de 4 TB y 2 de 6 TB
Paso 1. Los espejos RAID 1, de dos discos cada uno:
espejo A = 2 TB
espejo B = 4 TB
espejo C = 6 TB
Paso 2. RAID 0 sobre esos tres espejos.
Manda el más pequeño: 3 x 2 TB
Capacidad neta = 6 TBSe resuelve siempre de dentro hacia fuera, y la regla del disco más pequeño se aplica en cada nivel, no solo al final.
Para el examen
Cómo se leen: el primer número es el nivel INTERIOR
RAID 1+0: espeja primero y divide después; el preferido, aguanta mejor los fallos
Cálculo de capacidad: de dentro afuera, aplicando en cada nivel la regla del disco más pequeño
JBOD: por qué no es un RAID
JBOD, literalmente «un montón de discos sin más», encadena varias unidades para que el sistema vea un solo volumen grande. Suena a RAID y se configura desde la misma controladora, pero no lo es, y la diferencia se ve en las tres cosas que caracterizan a un RAID.
- Bloque de datos
- Sin usar
No hay bandas: se llena el primer disco y se sigue por el segundo. Ningún bloque está repetido y ninguno es paridad, así que no hay redundancia; y como en cada momento trabaja un solo disco, tampoco hay ganancia de velocidad. A cambio, es lo único que aprovecha íntegros los 6 TB del segundo disco: en un RAID mandaría el de 2 TB.
Diagrama de 2 discos. Disco 1 · 2 TB: A, bloque de datos; B, bloque de datos; C, bloque de datos. Disco 2 · 6 TB: D, bloque de datos; E, bloque de datos; libre, sin usar| Aspecto | RAID | JBOD |
|---|---|---|
| Reparto de la información | En tiras entre todos los discos a la vez | Se llena un disco y se sigue por el siguiente |
| Rendimiento | Mejora al trabajar los discos en paralelo | No mejora: en cada momento trabaja un solo disco |
| Aprovechamiento del tamaño | Manda el disco más pequeño y el resto se desperdicia | Se suma la capacidad íntegra de todos, aunque sean distintos |
| Si falla un disco | Depende del nivel: puede no perderse nada | Se pierde lo que hubiera en ese disco, pero el volumen sigue funcionando |
JBOD es la única configuración que aprovecha íntegro un disco de tamaño distinto. Su contrapartida es que no aporta ni rendimiento ni redundancia.
Para el examen
Qué hace: encadena discos y suma su capacidad ÍNTEGRA
Qué no da: ni rendimiento ni redundancia: no es un RAID