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 |
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.
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.
|
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.
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.
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-1 | 8 | 7 | 5 | 50 pines BajaDens | 6 mts |
SCSI-2 (alias) Fast scsi, o Narrow scsi | 8 | 7 | 10 | 50 pines AltaDens | 3 mts |
SCSI-3 (alias) Ultra, o Fast20 | 8 | 7 | 20 | 50 pines AltaDens | 3 mts |
Ultra Wide (alias) Fast scsi-3 | 16 | 15 | 40 | 68 pines AltaDens | 1,5 mts |
Ultra2 | 16 | 15 | 80 | 68 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.
|
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.
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/md0 | linear | /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 /"
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 | swap | 2Gb(RAID) hda4 |
C: | D: | swap | 2Gb(RAID) sda4 |
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.
Texto original en Castellano.
Revisado por
Javier Molero.
Páginas web mantenidas por Miguel Ángel Sepúlveda & Ismael Ripoll © Antonio Castro 1998 LinuxFocus 1998 |