Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Antonio Castro

RECONOCIMIENTOS
Siempre estar� agradecido a todo el equipo de LinuxFocus que algunas veces desde una posici�n menos visible colaboran para dar un buen aspecto a un art�culo as� como a los traductores. En esta ocasi�n debo mencionar especialmente a otra persona.
Este art�culo no hubiera sido posible sin el asesoramiento de Luis Colorado, quien correo tras correo me ha ido ayudando con sus conocimientos sobre sistemas RAID. Gracias Luis.

Contenidos:
Introduci�nn
Elecci�n de discos para un RAID
Caracter�sticas de los sistemas SCSI
En qu� consisten los distintos RAID
C�mo instalar un RAID0

Instalaci�n y Configuraci�n de un Sistema RAID

[Ilustration]

Resumen:

RAID (Redundant Array of Inexpensive Disks) Consiste en una serie de sistemas para organizar varios discos como si de uno solo se tratara pero haciendo que trabajen en paralelo para aumentar la velocidad de acceso o la seguridad frente a fallos del hardware o ambas cosas.


Introducci�n

Existen soluciones hardware normalmente muy costosas basadas generalmente en el uso de tarjetas controladoras.

Al final otras soluciones basadas en tarjetas, permiten gestionar una serie de discos id�nticos como RAID's gracias a un simple Z80 y un software que est� almacenado en la tarjeta. En estas condiciones no se puede afirmar que la eficiencia sea mejor que en Linux.

Las soluciones basadas en tarjetas son caras y obligan a usar discos id�nticos. Linux puede, con los drivers adecuados, usar algunas de estas tarjetas pero no resulta interesante ya que Linux permite utilizar una soluci�n software totalmente gratuita que es igual de eficiente que las costosas implementaciones hardware.

... Linux permite utilizar una soluci�n software totalmente gratuita que es igual de eficiente que las costosas implementaciones hardware.

La soluci�n puramente software de Linux se implementa en el kernel y permide utilizar discos de distinto tipo. Se pueden mezclar incluso discos IDE con discos SCSI. Incluso discos de distinto tama�o pero en este caso habr�a que asociar particiones del mismo tama�o en todos los discos. La soluci�n m�s normal es tomar los discos enteros del mismo tama�o para hacer un RAID pero Linux permite mayor flexibilidad. Por ejemplo, en un disco se puede usar parte para el RAID y parte fuera del RAID. Esto no suele ser buena idea ya que el uso de otras particiones del disco que no est�n en el RAID perjudicar�a la velocidad de acceso de todo el sistema. Es decir que a pesar de que Linux permite usar cualquier tipo de disco lo mejor es usar discos con la misma capacidad y caracter�sticas parecidas. Otra cosa a tener en cuenta es que la tecnolog�a SCSI permite acceso concurrente a los distintos dispositivos conectados al bus.

Por el contrario el uso de dos discos IDE con la misma tarjeta significa que nunca se podr�n acceder simult�neamente ambos dispositivos. Es una l�stima que los discos SCSI sean mucho m�s caros que los discos IDE. La soluci�n puramente software disponible en Linux es igual de buena en eficiencia (puede que incluso mejor) que la soluci�n basada en tarjetas y por supuesto mucho mas barata, y flexible permitiendo aprovechar discos de equipos anticuados.

Mientras que en un bus SCSI un dispositivo puede estar volcando datos al bus, otro puede estar recogi�ndolos; a discos IDE primero se accede a un dispositivo y luego a otro.

Elecci�n de discos para un RAID

Utilizar discos r�pidos para montar un RAID no suele estar justificado. Son mucho m�s caros. Los discos r�pidos suelen serlo debido a una mayor agilidad de las cabezas para posicionarse en la pista necesaria. Los cambios de pista es la operaci�n que m�s tiempo consume en un disco duro, pero a diferencia por ejemplo de MSDOS en Linux est�n optimizadas de manera que la informaci�n no se accede en el mismo orden que es solicitada sino que se comporta de manera similar a un ascensor inteligente que va memorizando las peticiones y las va atendiendo por el orden m�s conveniente. Tambi�n se usan otras estrategias que aumentan el rendimiento minimizando el numero de accesos a disco, como memorias cache. La velocidad de giro de los discos suele ser muy parecida pero puede haber diferencias en cuanto a densidad y n�mero de cabezas que afectar�an significativamente a la velocidad de transferencia. Este par�metro si que interesa tenerlo en cuenta. Por todo esto la recomendaci�n ser�a usar preferiblemente discos SCSI iguales o similares y baratos. La velocidad vendr� por el acceso concurrente a los mismos.

Hay que tener en cuenta que para el arranque del sistema es necesario un disco no RAID y de peque�o tama�o tama�o porque la partici�n que contenga el sistema de ficheros ra�z conviene que tenga pocas cosas.

Caracter�sticas de los sistemas SCSI

A la hora de decidir qu� discos comprar surgen un mont�n de dudas por ello hablaremos un poco de las caracter�sticas.

Nombre NumBits NumDisp MB/s Conector Max Longitud Cable
SCSI-187550 pines BajaDens 6 mts
SCSI-2
(alias) Fast scsi, o Narrow scsi
871050 pines AltaDens 3 mts
SCSI-3
(alias) Ultra, o Fast20
872050 pines AltaDens 3 mts
Ultra Wide
(alias) Fast scsi-3
16154068 pines AltaDens 1,5 mts
Ultra216158068 pines AltaDens 12 mts

Un RAID se puede por tanto construir con varias particiones pero el resultado no es una partici�n l�gica sino un disco l�gico en el que sin embargo no podemos hacer particiones. El nombre de estos dispositivos es el de metadisco.

Al igual que en los discos IDE tenemos /dev/hd... para discos SCSI tenemos /dev/sd..., para los metadiscos una vez compilado el kernel con las opciones necesarias que m�s tarde comentaremos aparecer�n cuatro dispositivos $ ls -l /dev/md*

brw-rw----   1 root     disk       9,   0 may 28  1997 md0
brw-rw----   1 root     disk       9,   1 may 28  1997 md1
brw-rw----   1 root     disk       9,   2 may 28  1997 md2
brw-rw----   1 root     disk       9,   3 may 28  1997 md3

Lo primero que hay que intentar beneficiar es la velocidad del swap y para ello hay que utilizar un metadisco peque�o en el RAID, o repartir el swap de la manera tradicional entre todos los discos f�sicos. Si se ponen varias particiones de swap, cada una sobre un disco distinto, entonces el propio sistema de swap de Linux hace el reparto de la carga entre todas, por lo que es innecesario el RAID en este caso.

En qu� consisten los distintos RAID

RAID0 (Stripping mode)
En este modo, los discos se organizan alternativamente, de tal forma que los bloques se toman por igual de todos los discos, alternativamente, para conseguir mayor eficiencia. Al ser la probabilidad de encontrar los bloques de un fichero igual para todos los discos, �stos se ponen a trabajar todos a la vez, consigui�ndose que la eficiencia sea casi N veces la de un solo disco.
RAID1
En este modo, se pretende conseguir seguridad en los datos, estando �stos duplicados en todos los discos (cada bloque del disco `virtual' tiene un duplicado en cada uno de los discos f�sicos). Se consigue N veces la eficiencia en lectura, pero se degrada la eficiencia en escritura (las lecturas pueden organizarse para que al leer N bloques, cada uno venga de un disco diferente, pero al escribir, hay que hacerlo en los N discos) No se consigue ninguna ventaja en cuanto a capacidad de almacenamiento.
RAID4
(los modos RAID2 y RAID3 est�n obsoletos) En este modo, se intenta conseguir la ventaja de los modos RAID0 y RAID1. Los datos est�n organizados de forma que los bloques se organizan en modo stripping (RAID0) para los discos 1 a N-1 y el bloque correspondiente del disco N almacena la paridad de los bits individuales de los bloques correspondientes de los discos 1 a N-1. Si se rompe un disco, se puede generar la informaci�n a partir del disco de paridad. La eficiencia en lectura es N-1 y la eficiencia en escritura es 1/2 (ya que al escribir un dato, hay que escribir en el disco de paridad). Para restaurar un disco roto, tan solo hay que leer la informaci�n y volver a escribirla (la lectura obtiene la informaci�n a partir de la paridad, pero al escribirla, se emplea el disco nuevo para escribir los datos).
RAID5
Este modo es similar al modo RAID4, pero la informaci�n del disco de paridad est� repartida por todos los discos (no existe realmente un `disco de paridad') Esto permite no hacer trabajar tanto al disco de paridad, que antes deb�a ser accedido en cada escritura (ahora el disco donde se guarda la paridad de la hilera es diferente para cada hilera)
... nos vamos a centrar en el RAID0 que desde el punto de vista de eficiencia es el m�s interesante aunque no tiene redundancia ...

Existen otros tipos de RAID mixtos basados en el RAID 1 y alg�n otro tipo de RAID. Tambi�n existen algunas tentativas de hacer discos que utilicen compresi�n. Existe bastante pol�mica porque no est� clara su utilidad. Seguramente seguir�n otras propuestas en el futuro. Por el momento nos vamos a centrar en el RAID0 que desde el punto de vista de eficiencia es el m�s interesante, aunque no tiene redundancia para protecci�n contra errores. Cuando el RAID est� fomado por pocos discos (tres o cuatro) la redundancia tiene un costo excesivo (pierde un tercio o un cuarto de capacidad). La redundancia en un RAID nos protege contra errores de los discos, pero no de un borrado accidental de la informaci�n, por lo que tener un RAID redundante y no nos evita el tener que hacer copias de seguridad. Por contra, si se utiliza un n�mero elevado de discos superior a cinco por ejemplo el desperdicio de espacio es menor. Algunas tarjetas SCSI de 16 bits admiten hasta 15 dispositivos. En estos casos un RAID5 ser�a muy conveniente.

Si no se puede trabajar con discos id�nticos tenga en cuenta que los dispositivos RAID trabajan siempre con bloques de informaci�n id�nticos. Es posible que los discos lentos trabajen por ello algo m�s aunque la mejora de rendimiento est� asegurada. El aumento de rendimiento en un RAID correctamente configurado es muy espectacular. Casi se puede decir que se multiplica la velocidad por el n�mero de discos montados en el RAID.

C�mo instalar un RAID0

A continuaci�n describimos c�mo instalar un RAID0. Si desea montar un RAID distinto de RAID0 en un kernel 2.0.xx, hay que conseguir un parche.

El RAID0 no tiene redundancia pero hay que pensar que para tener redundancia conviene tener un numero de discos elevado para no desperdiciar espacio en disco. Gastar todo un disco cuando tenemos tres es un despilfarro. Adem�s esto no cubre todos los casos de perdida de informaci�n sino s�lo los fallos por deterioro f�sico de un disco, lo cual no es muy frecuente. Por el contrario si tenemos 10 discos, gastar uno para el control de paridad no resulta demasiado desperdicio. En un RAID0 se perder� toda la informaci�n en caso de fallo de cualquiera de los discos que lo componen por lo cual una adecuada pol�tica de copias de seguridad resulta especialmente recomendable.

Lo primero ser� incluir los drivers en el kernel. Para Linux 2.0.xx RAID las opciones ser�n:

   Multiple devices driver support (CONFIG_BLK_DEV_MD) [Y/n/?] Y
      Linear (append) mode (CONFIG_MD_LINEAR) [Y/m/n/?] Y
      RAID-0 (striping) mode (CONFIG_MD_STRIPED) [Y/m/n/?] Y

Despu�s de arrancar con el nuevo kernel aparecer� en /proc una entrada mdstat que contiene la informaci�n de los cuatro (cuatro es el valor por defecto) dispositivos nuevos creados como md0, md1, md2, md3. Como no hemos inicializado ninguno aparecer�n todos como inactivos y aun no los podemos usar.

Para gestionarlos existen unas utilidades. 'mdutils'
	-mdadd
	-mdrun
	-mdstop
	-mdop
    

Puede obtenerlas en:sweet-smoke.ufr-info-p7.ibp.fr /pub/Linux, pero suelen estar incluidas en todas las distribuciones.

Para versiones del n�cleo superiores a la 2.1.62 existe otro paquete distinto llamado 'RAIDtools' que permiten usar RAID0, RAID4 o RAID5.

En el ejemplo que sigue ilustramos como definir un metadisco RAID0 que usar� dos discos duros. Concretamente /dev/sdb1 y /dev/sdc1.

meta-device RAID Mode Disk Partition 1 Disk Partition 1
/dev/md0linear/dev/sdb1/dev/sdc1

Se puede incluir mayor n�mero de particiones.

Una vez formateado el metadisco no se debe alterar este registro ya que podr�a perderse toda la informaci�n.

mdadd -a
mdrun -a
    

Ahora deber�a aparecer inicializado el md0. Para formatearlo:

mke2fs /dev/md0
    

Y montarlo.

mkdir /mount/md0
mount /dev/md0 /mount/md0
    

Si todo ha funcionado correctamente, podemos incluir estas ordenes en los scripts de arranque para que la pr�xima vez que arranquemos el ordenador se monte autom�ticamente el RAID0. Para ello, a�adiremos una entrada en /etc/fstab para montar el metadisco durante el arranque pero tambi�n habr� que incluir 'mdadd -a' y 'mdrun -a' en un fichero que se ejecute antes de que se intente realizar el montado. Si nuestra distribuci�n es Debian, un buen lugar incluir estas ordenes es /etc/init.d/checkroot.sh justo antes de remontar en modo lectura/escritura el sistema de ficheros ra�z, esto es, justo antes de la l�nea: "mount -n -o remount,rw /"

Ejemplo:

Se describe a continuaci�n la configuraci�n que yo estoy usando. Tengo un disco IDE de 6.3 Gb, uno SCSI de 4.2Gb, y otro de 2Gb.

HD 6.3Gb IDE
//bigTemp + /incoming swap2Gb(RAID) hda4

HD 4.2Gb SCSI
C: D: swap2Gb(RAID) sda4

HD 2Gb SCSI
swap 2Gb(RAID) sdb2
#######</etc/fstab>################################################
# <file system> <mount point>  <type>  <options>     <dump>  <pass>
/dev/hda1       /               ext2    defaults       0       1
/dev/hda2       /mnt/hda2       ext2    defaults       0       2
/dev/md0        /mnt/md0        ext2    defaults       0       2
proc            /proc           proc    defaults       0       2
/dev/hda3        none           swap    sw,pri=10 
/dev/sdb1        none           swap    sw,pri=10 
/dev/sda3        none           swap    sw,pri=10 
#########</etc/mdtab>####################################### 
# <meta-device> <RAID-mode> <DskPart1> <DskPart1> <DskPart1> 
/dev/md0         RAID0,8k    /dev/hda4  /dev/sda4 /dev/sdb2

En el disco de 6Gb est� la partici�n del sistema de ficheros ra�z en hda1 y luego una gran partici�n que se usa para descarga de Internet almacenamiento de im�genes de CD's etc. No representa tampoco mucha carga porque se usa poco. El disco de 4Gb tampoco tiene particiones que puedan estorbar gran cosa al RAID porque son particiones de msdos que apenas se usan desde Linux. El disco de 2G est� casi totalmente dedicado al RAID. Se reserva un peque�o espacio en cada uno de los discos que se utilizar� como swap.

Hay que procurar que todos los discos (particiones) que forman el RAID tengan m�s o menos el mismo tama�o pues diferencias de tama�o perjudican el rendimiento del RAID. Diferencias peque�as no son significativas. Se aprovecha todo el espacio as� que toda la informaci�n que puede ser entrelazada entre distintos discos quedar� entrelazada y la restante quedar� sin entrelazar.

Montar en un mismo RAID varios discos IDE es poco eficiente, pero un disco IDE junto con varios SCSI funciona bastante bien. Los discos IDE no permiten accesos concurrentes, pero s� los discos SCSI.

Para m�s informaci�n:


Texto original en Castellano.
Revisado por Javier Molero.


P�ginas web mantenidas por Miguel �ngel Sep�lveda & Ismael Ripoll
© Antonio Castro 1998
LinuxFocus 1998