Puede haber muchas buenas razones para usar RAID. Unas pocas son: la
posibilidad de combinar varios discos físicos en un único dispositivo
�virtual� más grande, o mejoras en el rendimiento y redundancia.
El RAID de Linux puede funcionar sobre la mayoría de los dispositivos de
bloque. No importa si usa dispositivos IDE, SCSI o una mezcla de ambos.
Incluso algunas personas han usado dispositivo de bloque en red (Network
Block Device, NBD) con diferentes grados de éxito.
Asegúrese de que el bus (o buses) de los discos son lo suficientemente
rápidos. No debería tener 14 discos UW-SCSI en un único bus UW, si cada
disco puede dar 10MB/s y el bus sólo puede sostener 40MB/s. Además, sólo
debería tener un dispositivo por bus IDE. El uso de discos como
maestro/esclavo es funesto para el rendimiento. IDE es realmente
ineficiente accediendo a más de un disco por bus. Naturalmente, todas las
placas madre modernas tienen dos buses IDE, por lo que puede configurar
dos discos en RAID sin comprar más tarjetas controladoras.
La capa RAID no tiene absolutamente nada que ver con la capa del sistema
de ficheros. Puede poner cualquier sistema de ficheros sobre un
dispositivo RAID, tal y como haría con cualquier otro dispositivo de
bloques.
La palabra RAID se refiere a RAID por software de Linux. Este
CÓMO no trata ningún aspecto de RAID por hardware.
Cuando se describen configuraciones, es útil referirse al número de discos
y sus tamaños. En todos los casos se usa la letra N para denotar
el número de discos activos en el array (sin contar los discos de
reserva). La letra S es el tamaño del disco más pequeño en el
array, a menos que se diga otra cosa. La letra P representa el
rendimiento de un disco en el array, en MB/s. Cuando se use, supondremos
que los discos son igual de rápidos, lo cual no siempre puede ser cierto.
Note que se asume que las palabras dispositivo y disco
significan lo mismo. Normalmente, los dispositivos usados para construir
un dispositivo RAID son particiones de discos, no necesariamente discos
enteros. Pero, normalmente, combinar varias particiones de un mismo disco
no tiene sentido, por lo que las palabras dispositivo y disco
simplemente significan particiones de discos diferentes.
Lo siguiente es una breve descripción de lo que soportan los parches RAID
de Linux. Parte de esta información es información RAID absolutamente
básica, aunque he añadido unas pocas reseñas de lo que hay de especial en
la implementación de Linux de los niveles. Simplemente, sáltese esta
sección si conoce RAID. Regrese después cuando tenga problemas :)
Los actuales parches RAID para Linux soportan los siguientes niveles:
Modo Lineal (Linear mode)
Dos o más discos se combinan en un único dispositivo físico. Los
discos se �adjuntan� unos a otros 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 porqué ser del mismo tamaño. De
hecho, los tamaños no importan para nada aquí :)
No existe redundancia en este nivel. Si un disco falla perderá toda
su información con toda probabilidad. Sin embargo, puede tener suerte y
recuperar algunos datos, ya que el sistema de ficheros simplemente habrá
perdido un gran puñado de datos consecutivos.
El rendimiento de las lecturas y las escrituras no se incrementará
para lecturas/escrituras individuales. Pero si varios usuarios usan el
dispositivo, puede tener la suerte de que un usuario use efectivamente el
primer disco y el otro usuario acceda a ficheros que por casualidad
residan en el segundo disco. Si esto ocurre, verá un aumento en el
rendimiento.
RAID-0
También llamado modo striping o de distribución por bandas. Como
el modo lineal salvo que las lecturas y escrituras se realizan en paralelo
en los dispositivos. Éstos deben tener aproximadamente el mismo
tamaño. Puesto que todos los accesos se realizan en paralelo, los discos
se llenan por igual. Si un dispositivo es mucho mayor que los otros
demás, el espacio extra se utilizará en el dispositivo RAID
durante las escrituras en el extremo superior, aunque
sólo se accederá a este disco más grande. Naturalmente, esto perjudica el
rendimiento.
Como en el modo lineal, tampoco hay redundancia en este nivel. A
diferencia del modo lineal, no será capaz de recuperar ningún dato si un
disco falla. Si elimina un disco de un grupo RAID-0, el dispositivo RAID
no perderá simplemente un bloque consecutivo de datos, sino que se llenará
con pequeños agujeros por todo el dispositivo. Probablemente, e2fsck
no sea capaz de recuperar gran cosa.
El rendimiento de las lecturas y las escrituras se incrementará, ya
que las lecturas y las escrituras se realizan en paralelo sobre los
dispositivos. Normalmente, ésta es la razón principal para usar RAID-0. Si
los buses a los discos son suficientemente rápidos, puede obtener casi
N*P MB/seg.
RAID-1
Este es el primer modo que realmente tiene redundancia. RAID-1 se
puede usar en dos o más discos con cero o más discos de reserva. Este modo
mantiene en un disco un duplicado exacto de la información del otro(s)
disco(s). Por supuesto, los discos deben ser del mismo tamaño. Si un disco
es mayor que otro, su dispositivo RAID será del tamaño del disco más
pequeño.
Si se eliminan (o fallan) hasta N-1 discos, los datos permanecerán
intactos. Si existen discos de reserva disponibles y el sistema (es decir,
las controladoras SCSI o los chipsets IDE, etc.) sobreviven al desastre,
comenzará inmediatamente la reconstrucción de un duplicado en uno de los
discos de reserva, después de la detección del fallo del disco.
Normalmente, el rendimiento de las lecturas aumenta hasta casi
N*P, mientras que el rendimiento de las escrituras es el mismo que el
de un único dispositivo o, tal vez, incluso menos. Las lecturas se pueden
hacer en paralelo pero, cuando se escribe, la CPU debe transferir N
veces la cantidad de datos que normalmente transferiría (recuerde, se
deben enviar N copias idénticas de todos los datos a los discos).
RAID-4
Este nivel de RAID no se usa con mucha frecuencia. Se puede usar
sobre 3 o más discos. En lugar de duplicar completamente la información,
guarda información de paridad en un único disco y escribe datos a los
otros discos de forma parecida a un RAID-0. Ya que uno de los discos se
reserva para información de paridad, el tamaño del array será
(N-1)*S, donde S es el tamaño del disco más pequeño del array.
Como en un RAID-1, los discos deben ser del mismo tamaño, o de lo
contrario tendrá que aceptar que el valor de S en la fórmula
(N-1)*S anterior será el tamaño del disco más pequeño del array.
Si un disco falla, y no es el de paridad, se puede usar
la información de paridad para
reconstruir todos los datos. Si dos discos fallan, se perderá toda la
información.
.
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 uno de los otros
discos. Por eso, el disco de paridad se convertirá en un cuello de botella
si no es mucho más rápido que los otros discos. Sin embargo, si por pura
casualidad tuviera muchos discos lentos y un disco muy rápido, este nivel
de RAID podría resultarle muy útil.
RAID-5
Este es quizás el modo RAID más útil cuando uno desea combinar un
mayor número de discos físicos y todavía conservar alguna redundancia.
RAID-5 se puede usar sobre 3 o más discos, con cero o más discos de
reserva. El tamaño del dispositivo RAID-5 resultante será (N-1)*S,
tal y como sucede con RAID-4. La gran diferencia entre RAID-5 y RAID-4 es
que la información de paridad se distribuye uniformemente entre los discos
participantes, evitando el problema del cuello de botella del RAID-4.
Si uno de los discos falla, todos los datos permanecerán intactos,
gracias a la información de paridad. 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.
Normalmente, el rendimiento de las lecturas y las escrituras se
incrementará, pero es difícil predecir en qué medida.
Discos de reserva
Los discos de reserva son discos que no forman parte del grupo RAID hasta
que uno de los discos activos falla. Cuando se detecta un fallo de disco,
el dispositivo se marca como defectuoso y la reconstrucción se inicia
inmediatamente sobre el primer disco de reserva disponible.
De esta manera, los discos de reserva proporcionan una buena seguridad
extra, especialmente a sistemas RAID-5 que tal vez, sean difíciles de
lograr (físicamente). Se puede permitir que el sistema funcione durante
algún tiempo con un dispositivo defectuoso, ya que se conserva toda la
redundancia mediante los discos de reserva.
No puede estar seguro de que su sistema sobrevivirá a una caída de disco.
La capa RAID puede que maneje los fallos de dispositivos verdaderamente
bien, pero las controladoras SCSI podrían fallar durante el manejo del
error o el chipset IDE podría bloquearse, o muchas otras cosas.
No hay ninguna razón para usar RAID a fin de aumentar el rendimiento del sistema
de Páginación de memoria (swap). El propio núcleo puede balancear el
intercambio entre varios dispositivos si simplemente les da la misma
prioridad en el fichero /etc/fstab.
Esta configuración permite a la máquina Páginar en paralelo sobre siete
dispositivos SCSI. No necesita RAID, ya que esa ha sido una característica
del núcleo desde hace mucho tiempo.
Otra razón por la que podría interesar usar RAID para swap es la alta
disponibilidad. Si configura un sistema para arrancar desde, por ejemplo,
un dispositivo RAID-1, el sistema podría ser capaz de sobrevivir a un
fallo de disco. Pero si el sistema ha estado Páginando sobre el ahora
dispositivo defectuoso, puede estar seguro de que se vendrá abajo. El
intercambio sobre un dispositivo RAID-1 solucionaría este problema.
Sin embargo, el intercambio sobre RAID-{1,4,5} NO está soportado.
Puede configurarlo, pero fracasará. La razón es que la capa RAID algunas
veces reserva memoria antes de realizar una escritura. Esto produce un
bloqueo, quedando en un punto muerto, ya que el núcleo tendrá que reservar
memoria antes de que pueda intercambiar, e intercambiar antes de que pueda
reservar memoria.