Almacenamiento redundante y distribuido (RAID)
RAID (Redundant Array of Independent Disks, conjunto redundante de discos independientes) consiste en un conjunto de técnicas hardware o software que utilizando varios discos y distribuyendo y/o replicando la información entre ellos, se consigue algunas de las siguientes características:
- Mayor capacidad: es una forma económica de conseguir capacidades grandes de almacenamiento. Combinando varios discos más o menos económicos podemos conseguir una unidad de almacenamiento de una capacidad mucho mayor que la de cada discos por separado.
- Mayor tolerancia a fallos: en caso de producirse un error, con el uso de un RAID, el sistema será capaz, en algunos casos, de recuperar la información perdida y podrá seguir funcionando correctamente.
- Mayor seguridad (disponiblidad): debido a que el sistema es más tolerante a los fallos y mantiene cierta información duplicada, aumentaremos la disponibilidad y tendremos más garantías de la integridad de los datos.
- Mayor velocidad (rendimiento): al tener en algunos casos cierta información repetida y distribuida, se podrán realizar varias operaciones simultáneamente, lo que redundará en una mayor velocidad media de acceso.
Lo que nunca será RAID es una alternativa a las copias de seguridad, pues, entre otras situaciones, nunca se está libre de un borrado accidental, o de una rotura de varios discos por una subida de tensión, por ejemplo.
Las técnicas RAID están organizadas en niveles. Algunos de estos niveles son:
- RAID nivel 0 (RAID 0): en este nivel los datos se distribuyen entre dos o más discos de forma equitativa y transparente para los usuarios. Como podemos ver en la siguiente figura, los bloques de datos se almacenan de forma alternativa entre los discos 0 y 1 de modo que los bloques impares de la unidad se almacenan en el disco 0 y los bloques pares en el disco 1.
Esta técnica favorece la velocidad, debido a que cuando se lee o escribe un dato, si el dato está almacenado en dos discos diferentes, se podrá realizar la operación simultáneamente. En el caso de utilizar discos IDE, estos deben conectarse a controladoras diferentes, si dos discos de un mismo volumen RAID estuvieran conectados a la misma controladora IDE, uno como maestro y otro como esclavo, no se conseguiría el acceso paralelo a esos dos discos, pues la controladora IDE solo puede acceder a un disco a la vez de los dos que puede manejar.
Hay que tener en cuenta que RAID 0 no incluye ninguna información redundante, por lo que en caso de producirse un fallo en cualquiera de los discos que componen el array, este provocaría la pérdida de toda la información del volumen. Hay que saber también que en este nivel los discos reserva (spare) no pueden utilizarse.
Es recomendable que todos los discos tengan el mismo tamaño aproximadamente, pero si no lo tienen, el RAID 0 se construirá, aunque funcionará con un menor rendimiento.
- RAID nivel 1 (RAID 1): a menudo se conoce también como espejo. Consiste en mantener una copia idéntica de la información de un disco en otro u otros discos, de forma que el usuario ve únicamente una unidad, pero físicamente esta unidad está siendo almacenada simultáneamente de forma idéntica en dos o más discos. Esto permite que se puedan hacer varias lecturas en paralelo, pero las escrituras son secuenciales pues cada bloque de datos debe copiarse en todos los discos.
Si se produjera un fallo en un disco, la unidad podría seguir funcionando sobre un solo disco mientras sustituimos el disco dañado por otro y rehacemos el espejo. También pueden definirse discos de reserva (spare) que entrarían en funcionamiento (después de que se reconstruyeran) de forma automática cuando uno de los discos fallara.
Adicionalmente, dado que todos los datos están en dos o más discos, habitualmente con hardware independiente, el rendimiento de lectura se incrementa aproximadamente como múltiplo lineal del número de copias, es decir, un RAID 1 con dos discos, puede estar leyendo simultáneamente dos datos diferentes, uno en cada disco, por lo que su rendimiento se duplica, o se triplica si hubiera tres discos, etc.
Los discos deben ser del mismo tamaño, si no fuese así, el RAID 1 será del tamaño del disco más pequeño.
- RAID nivel 5 (RAID 5): Los bloques de datos se almacenan en la unidad RAID, y la información redundante (paridad) de dichos bloques se distribuye cíclicamente entre todos los discos que forman el volumen RAID 5.
Por ejemplo, si aplicamos RAID 5 sobre un conjunto de 4 discos, como vemos en la figura anterior, los bloques de datos se colocan en tres de los cuatro bloques, dejando un hueco libre en cada línea que irá rotando de forma cíclica. En este hueco se colocará un bloque de paridad. Con este sistema, los bloques de paridad se reparten entre todos los disco del array.
El bloque de paridad se calcula a partir de los bloques de datos de la misma línea:
El espacio total disponible para un volumen RAID 5 que utiliza N discos (mínimo 3 y permite discos de reserva) es la suma del espacio de N-1 discos.
El tamaño de los discos debe ser el mismo, pues en caso contrario, el espacio que se utilizará de los discos mayores será el tamaño del disco más pequeño. En estos casos el uso de particiones para hacer el RAID, permitiría utilizar el espacio sobrante de los discos grandes haciendo una nueva partición y empleándola para otros fines.
Si uno de los discos falla, los datos sobreviven, gracias a la información de paridad que permite su reconstrucción. Si existen discos de reserva disponibles, la reconstrucción comenzará inmediatamente después del fallo del dispositivo. Si dos discos fallan simultáneamente, todos los datos se perderán. RAID-5 puede sobrevivir a un fallo de disco, pero no a dos o más. El segundo fallo no tiene por qué producirse simultáneamente al primero para que el RAID quede inutilizado, si se produjera durante la reconstrucción del RAID, también sería letal.
Otros niveles RAID menos usados son:
- RAID lineal: Con este nivel RAID dos o más discos (también particiones) se combinan formando un único dispositivo físico. Los discos se colocan uno detrás de otro, de tal manera que las escrituras en el dispositivo RAID, primero llenarán el disco 0, a continuación el disco 1 y así sucesivamente. Los discos no tienen por qué ser del mismo tamaño.
No existe redundancia en este nivel. No es posible utilizar discos reserva (spare). Si un disco falla se perderán los datos, aunque hay alguna posibilidad de recuperar algo por la forma secuencial de almacenar los ficheros, lo que no sucede con el RAID 0 donde el contenido de un fichero se reparte entre todos los discos.
- RAID nivel 4 (RAID 4): Este RAID no es muy corriente actualmente. Es como el RAID 5, con la diferencia de que toda la información de paridad está en un solo disco y en el resto solo hay datos.
La razón por la que este nivel no se usa con mucha frecuencia es que la información de paridad se guarda en un único disco. Esta información se debe actualizar cada vez que se escribe en cualquiera de los otros discos, y es por esto que el disco de paridad se convertirá en un cuello de botella, a menos que sea mucho más rápido que el resto. En una situación donde hubieran muchos discos lentos y un disco muy rápido, este nivel de RAID podría ser muy útil.
Por otro lado, el disco de paridad tendrá una vida más corta que el resto, pues a él se accede mucho más que a los demás.
Los discos deben ser del mismo tamaño, pues en caso contrario todos se nivelarán por el tamaño del disco más pequeño, quedando sin utilizar el resto del espacio.
Por último, decir que solo soporta el fallo de un disco.
- RAID nivel 6 (RAID 6): Un RAID 6 amplía el nivel RAID 5 añadiendo otro bloque de paridad, por lo que divide los datos a nivel de bloques y distribuye los dos bloques de paridad entre todos los miembros del conjunto de forma cíclica. Este tipo de RAID soporta el fallo simultáneo de dos discos y permite el uso de discos reserva.
- RAID nivel 10 (RAID 10 ó RAID 1+0): Un RAID 0 de varios RAID 1 (al menos dos).
Licencia: licencia de software libre GPL