Gentoo Logo

Renuncia de responsabilidad: La versión original de este artículo fue publicada por IBM developerWorks y es propiedad de Westtech Information Services. Este documento es una versión actualizada del artículo original y contiene mejoras introducidas por el Equipo de Documentación de Gentoo.
Este documento carece de soporte activo.


RAID por software en el nuevo núcleo Linux 2.4, Parte 1

Contenido:

1.  Instalación e introducción general

Las maravillas del RAID

El núcleo 2.4 tiene un buen número de características elegantes añadidas. Una de ellas es que incluye una moderna implementación de RAID por software. El RAID por software permite incrementar increíblemente el rendimiento y la fiabilidad del disco sin necesidad de comprar controladoras o sistemas RAID muy caros. Debido a que está implementado por software, el RAID por software en Linux es flexible, rápido... ¡y divertido!

El concepto que se halla tras el RAID por software es simple -- permite combinar dos o más dispositivos de bloques (normalmente particiones de disco) en un único dispositivo RAID. Digamos que se dispone de tres particiones vacías: hda3, hdb3, y hdc3. Usando RAID por software, se pueden combinar estas particiones y redireccionarlas como un único dispositivo RAID, /dev/md0. md0 puede ser formateado para que contenga un sistema de ficheros y usado como cualquier otra partición- Hay también diferentes formas de configurar un volumen RAID -- algunas maximizan el rendimiento, otras maximizan la disponibilidad, mientras que otras proporcionan una mezcla de ambas.

Hay dos formas de RAID: lineal y modo RAID-0. Ninguna de ellas es una técnica de RAID en absoluto, dado que RAID significa "estructura redundante de discos baratos" ("redundant array of inexpensive disks" en inglés), y tanto RAID-0 como el modo lineal no proporcionan ningún tipo de redundancia de datos. De cualquier forma, ambos modos -- especialmente RAID-0 -- son muy útiles. Después de proporcionar un rápido vistazo a estas dos formas de "AID", guiaré en el proceso de configuración del sistema para obtener RAID.

2.  Introducción al modo lineal

El modo lineal es uno de los métodos más simples para combinar dos o más dispositivos de bloques en un volumen RAID -- El método de la simple concatenación. Si se tienen tres particiones, hda3, hdb3 , y hdc3, y cada una de ellas es de aproximadamente 2GB el resultado será un volumen lineal de 6GB. El primer tercio del volumen lineal residirá en hda3, el último tercio en hdc3, y el que se encuentra entre ambos en hdb3.

Para configurar un volumen lineal, se necesitan al menos dos particiones que se quieran unir juntas. Pueden ser de diferentes tamaños, e incluso residir en el mismo disco sin afectar negativamente al rendimiento.

Aplicaciones lineales

El modo lineal es la mejor forma de combinar dos o más particiones en el mismo disco en un único volumen. Mientras que hacer ésto con cualquier otra técnica de RAID daría como resultado una tremenda pérdida de rendimiento, el modo lineal no se ve afectado por este problema dado que no escribe en las particiones que lo constituyen en paralelo (como el resto de modos RAID hace). Pero por esta misma razón, el modo lineal pierde rendimiento de forma escalar comparado con RAID-0, RAID-4, RAID-5 y, hasta cierto punto, con RAID-1.

En general, el modo lineal no proporciona ningún tipo de mejora en el rendimiento comparado con particiones normales no RAID. De hecho, si se reparte el volumen lineal entre varios discos, es muy probable que dicho volumen llegue a no estar disponible debido a un fallo aleatorio en el disco duro. La probabilidad de fallo en un volumen lineal será igual a la suma de las probabilidades de fallo de los discos físicos que la constituyen y de sus controladoras. Si uno de los discos físicos se pierde, el volumen lineal es generalmente irrecuperable. El modo lineal no ofrece ninguna redundancia adicional, es como si se estuviera usando un único disco.

Pero el modo lineal es un excelente método para evitar reparticionar un único disco. Por ejemplo, digamos que nuestra segunda unidad IDE tiene dos particiones sin usar hdb1 y hdb3. Digamos también que somos incapaces de reparticionar el disco duro debido a que hdb2 contiene datos críticos. Pueden entonces combinarse hdb1 y hdb3 en una sola, cohesionando ambas en un volumen lineal.

El modo lineal es también un buen método para combinar particiones de diferentes tamaños en diferentes discos cuando únicamente se necesita una única gran partición (y no se necesita incrementar el rendimiento). Pero para cualquier otro trabajo, hay mejores tecnologías RAID que se pueden utilizar.

3.  Introducción al modo RAID-0

RAID-0 es otro de esos modos "RAID" que no tienen ninguna "R" (redundancia) en absoluto. De cualquier forma, RAID-0 es inmensamente útil. Esto se debe primordialmente a que ofrece el mayor potencial de rendimiento comparado con cualquier otra forma de RAID.

Para configurar un volumen RAID-0 se necesitan dos o más particiones del mismo tamaño (o casi el mismo). El código RAID-0 distribuirá las escrituras (y por tanto las lecturas) entre todas las particiones que lo constituyen. Al hacer paralelas las lecturas y escrituras entre todos los dispositivos que lo constituyen, RAID-0 tiene la ventaja de multiplicar el rendimiento de entrada y salida. Ignorando las complejidades de las controladoras y del ancho de banda del bus, puede esperarse de un volumen RAID-0, compuesto por dos particiones en dos discos duros idénticos separados, el doble de rendimiento que en una partición tradicional. Si se forma un volumen RAID-0 con tres discos, el rendimiento casi se triplicará. Este es el motivo por el que una estructura de discos IDE puede superar ampliamente a la unidad SCSI o FC-AL más rápida del mercado. Para acelerar el rendimiento de verdad, se pueden emplear un conjunto de unidades SCSI o FC-AL en una estructura RAID-0. Ésta es la belleza de RAID-0.

Para crear un volumen RAID-0, se necesitan dos o más particiones del mismo tamaño localizadas en discos separados. La capacidad del volumen será la misma que la capacidad combinada de las particiones que lo constituyen. Como con el modo lineal, se pueden combinar dispositivos de bloques provenientes de fuentes diferentes (como unidades IDE y SCSI) en un solo volumen sin problemas.

Si se está creando un volumen RAID-0 usando discos IDE, se debe intentar usar discos y controladoras con capacidad UltraDMA para obtener la máxima fiabilidad. Y se debe usar únicamente una unidad por canal IDE para evitar disminuir el rendimiento -- una unidad como esclava (slave), especialmente si también forma parte de la estructura RAID-0, ralentizará tanto las cosas que eliminará cualquier posible beneficio en rendimiento del RAID-0. Puede resultar necesario por tanto añadir una controladora IDE adicional para obtener todos los canales IDE que se necesiten.

Si estamos creando un volumen RAID-0 a partir de dispositivos SCSI, debemos tener en cuenta que el rendimiento combinada de todos los discos puede exceder potencialmente el rendimiento máximo del bus SCSI (y potencialmente del PCI). En dicho caso, el bus SCSI sería el factor que delimitase el rendimiento. Si, por ejemplo, se tienen cuatro unidades que tienen un rendimiento máximo de 15Mb/s en una controladora con 40Mb/s en un bus Ultra Wide, habrá momentos en los que las unidades saturen el bus, y el rendimiento alcanzará un máximo cercano a los 40Mb/s. Esto puede estar bien para lo que lo estemos aplicando (después de todo 40Mb/s no está nada mal), pero obtendríamos los mismos picos de rendimiento de un volumen RAID-0 que usase únicamente tres unidades.

Aplicaciones RAID-0

Desde el punto de vista de la fiabilidad, RAID-0 tiene las mismas características que el modo lineal -- cuantas más unidades se añaden a la estructura mayor es la probabilidad de fallos en el volumen. Y, como en el modo lineal, la pérdida de una sola unidad hará el volumen irrecuperable. Para obtener la probabilidad de fallo de un volumen RAID-0, sencillamente se añaden juntas todas las probabilidades de fallo de todas las unidades que lo constituyen.

RAID-0 es ideal para aplicaciones que necesiten del máximo rendimiento de entrada y salida, dado que es el modo RAID con mayor rendimiento que existe. Pero hay que recordar que RAID-0 únicamente se debe usar si nos podemos permitir un riesgo algo mayor de fallos en el volumen.

Si se está formando una granja de computadoras o un cluster web. RAID-0 es una excelente solución para incrementar el rendimiento I/O de los discos. Dado que en este caso ya se dispondrá de algún nivel de redundancia (muchas máquinas de recambio), nuestros recursos seguirían estando disponibles en el raro caso de que una máquina con un disco duro que ha fallado necesite ser inhabilitada para reemplazar la unidad y recargarla.

4.  Configurando el RAID por software en Linux 2.4

Hay dos pasos a dar para obtener soporte RAID por software en nuestro sistema 2.4. El primero es que el soporte RAID debe estar habilitado en el núcleo. Lo cual conlleva recompilar e instalar un nuevo núcleo a menos que ya se disponga de un núcleo con soporte RAID integrado.

Entonces necesitamos compilar e instalar el paquete raidtools. Raidtools son las herramientas a nivel de usuario que nos permiten inicializar, empezar, parar y controlar nuestros volúmenes RAID. Una vez se hayan dado estos dos pasos, seremos capaces de crear nuestros propios volúmenes RAID, crear sistemas de ficheros en los volúmenes, montarlos, etc.

Problemas con el núcleo

Estoy empleando el núcleo 2.4.0-test10 en estos artículos. Recomiendo que se use la versión más moderna del núcleo que se pueda obtener, que debería ser como mínimo la 2.4.0-test10 o posterior (pero no la 2.4.0-test11, que tenía serios problemas de corrupción del sistema de ficheros). Se puede encontrar un núcleo reciente en kernel.org, y una guía mostrando cómo recompilar e instalar un nuevo núcleo desde código fuente en gentoo.org (ver la sección Recursos más adelante en este artículo).

Configuración del núcleo

Recomiendo que se configure el núcleo para que el soporte de RAID por software esté integrado en el mismo, en lugar de añadirlo como módulos. Cuando se teclea make menuconfig o make xconfig, se encontrarán las opciones para RAID en la sección "Multi-device support (RAID and LVM)". También recomiendo habilitar todo lo relacionado con RAID aquí, incluyendo "Boot support" (soporte para inicializarlo al arranque) y "Auto Detect support" (soporte para la auto-detección). Esto permitirá al núcleo iniciar automáticamente nuestro volumen RAID en el momento del arranque, así como crear un sistema de ficheros raíz RAID si se desea. He aquí una muestra de make menuconfig. Las dos últimas opciones no son necesarias (soporte LVM), aunque yo las he integrado en el núcleo de todos modos:


Ilustración 4.1: Configuración del núcleo para RAID

Fig. 1

Una vez que el núcleo se ha configurado adecuadamente, se instala y se reinicia. Ahora obtengamos la última versión de raidtools.

Instalación de raidtools

Antes de que podamos instalar raidtools necesitamos hacer una pequeña búsqueda para encontrar la última versión. Se puede encontrar el programa raditools generalmente en kernel.org. Ahora bajemos el archivo "raidtools-0.90" más reciente (¡no "raid0145"!). En este momento es "raidtools-19990824-0.90.tar.gz".

Si nos gusta vivir al límite (y si estamos usando un núcleo 2.4.0-test, entonces nos gusta), se puede desear echar un vistazo a RedHat (ver Recursos) y obtener la última versión de raidtools que podamos encontrar. En este momento es "raidtools-dangerous-0.90-20000116.tar.gz".

Listado de Código 4.1: Instalar raidtools

# cd raidtools-0.90
# ./configure
# make
# make install

Listado de Código 4.2: Examinar el RAID

# cat /proc/mdstat

Configuración de las particiones

Bien, este es el momento para preparar algunas particiones en el disco, de las cuales necesitaremos al menos dos. Si se está usando RAID-0, hay que asegurarse de que están en discos separados y de que son del mismo tamaño aproximadamente. Todo ello sin considerar necesario decir que los datos de ambas particiones se destruirán.

Otra nota importante -- cuando creemos las particiones, debemos darle el tipo FD. Ésto permitirá al núcleo Linux reconocerlas como particiones RAID Linux, con lo que serán auto-detectadas e iniciadas en cada arranque. Si no se marcan las particiones RAID de este modo, entonces se necesitará ejecutar raidstart --all cada vez que arranquemos antes de que se puedan montar los volúmenes RAID. Lo cual puede ser muy molesto, por lo que lo mejor es marcarlas con el tipo de partición adecuado.

Configuración de /etc/raidtab

La sintaxis de raidtab es bastante fácil de imaginar: cada bloque de directivas comienza con una entrada raiddev especificando el volumen que será creado. Cuando se instalaron las raidtools, el Makefile creó desde /dev/md0 hasta md15 por nosotros, por lo que están disponibles para usarlas.

Después, nr-raid-disks debería especificar el número de discos en nuestra estructura. Entonces ajustamos el persistent-superblock a 1 , indicando a las herramientas raid que cuando se crea este volumen, se debe escribir un superbloque especial a cada dispositivo que lo constituya, describiendo la configuración de la estructura RAID. El núcleo Linux usa esta información para auto-detectar e iniciar las estructuras RAID al arrancar, por lo que debemos asegurarnos de que cada volumen RAID que creamos está configurado para hacerlo.

chunk-size especifica el tamaño de los fragmentos usados para RAID-0 en kilobytes. En este ejemplo, nuestro volumen RAID-0 escribirá en las particiones que lo constituyen en bloques de 32K; esto es, los primeros 32K del volumen RAID se localizan en hde1, los segundos 32K se localizan en hdg1, etc. También especificamos un tamaño de fragmento para nuestro volumen lineal /dev/md1 -- pero en este caso se trata de una entrada sin uso que no significa nada.

Finalmente, especificamos los dispositivos que forman parte del volumen. Primero especificamos el dispositivo actual de bloques con una línea device, e inmediatamente la seguimos con una entrada raid-disk que especifica su posición en la estructura, comenzando desde cero.

Una vez hemos creado nuestro archivo /etc/raidtab, estamos listos para iniciar nuestra estructura de una vez.

mkraid y la creación del sistema de ficheros

OK. Hemos creado nuestras particiones, el archivo raidtab está configurado -- ahora es el momento de inicializar nuestra primera partición usando el comando mkraid:

Listado de Código 4.3: Inicializar la partición

# mkraid /dev/md0

Después de completar este comando, se inicializará /dev/md0 y empezará la estructura md0. Si se teclea cat /proc/mdstat, debería verse algo como esto:

Listado de Código 4.4: cat /proc/mdstat

Personalities : [linear] [raid0] [raid1] [raid5]
read_ahead 1024 sectors
md0 : active raid0 hdg1[1] hde1[0]
      90069632 blocks 32k chunks

unused devices: <none>

¡Bien!, nuestro dispositivo RAID está configurado y funcionando. Todo lo que necesitamos hacer ahora es crear un sistema de ficheros en el mismo. Para hacer esto usaremos el comando mke2fs o el comando mkreiserfs (¡RAID-0 y ReiserFS es una gran combinación!):

Listado de Código 4.5: Un dispositivo RAID ext2

# mke2fs /dev/md0

or

Listado de Código 4.6: Un dispositivo RAID ReiserFS

# mkreiserfs /dev/md0

Ahora nuestro nuevo sistema de ficheros puede ser montado:

Listado de Código 4.7: Montar el dispositivo RAID

# mkdir /mnt/raid
# mount /dev/md0 /mnt/raid

Se puede añadir una entrada /dev/md0 en fstab. Sería similar a ésta:

Listado de Código 4.8: Editar fstab

/dev/md0      /mnt/raid      reiserfs      defaults        0 0

Si ajustamos el tipo de partición adecuadamente como FD, nuestro volumen RAID se auto-iniciará en el momento de arrancar. Ahora todo lo que queda por hacer es usar y disfrutar nuestro nuevo volumen RAID. Sin olvidar consultar mi segundo artículo acerca del RAID por software, en el que echaremos un vistazo a algunos aspectos más avanzados de funcionalidad RAID y a RAID-1.

Recursos



Imprimir

Página actualizada 9 de octubre, 2005

Sumario: En esta serie con dos apartados acerca del RAID por software en Linux 2.4, Daniel Robbins introduce esta nueva tecnología para incrementar el rendimiento y la fiabilidad del disco duro distribuyendo los datos a través de múltiples discos. Este primer apartado cubre la configuración del RAID por software (en el núcleo y la instalación de herramientas) y muestra cómo crear volúmenes lineales y en RAID-0.

Daniel Robbins
Autor

LinuxBlues
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.