18.4. RAID
Anterior | Capítulo 18. Almacenamiento | Siguiente

## 18.4. RAID

### 18.4.1. Software RAID

#### 18.4.1.1. Configuración de controlador de disco concatenado (CCD)

Texto original de Christopher Shumway.
Revisado por Jim Brown.

Al escoger una solución de almacenamiento masivo los factores más importantes a considerar son velocidad, fiabilidad y coste. Es raro tener los tres por igual; normalmente un dispositivo de almacenamiento masivo veloz y fiable es caro, y para recortar los costes suele sacrificarse la velocidad o la fiabilidad.

Al diseñar el sistema descrito más adelante se eligió el coste como el factor más importante, seguido de la velocidad, y luego la fiabilidad. La velocidad de transferencia de datos para este sistema está, en última instancia, limitada por la red. Y mientras que la confiabilidad es muy importante, el controlador CCD descrito más adelante sirve datos que están respaldados en CD-R y pueden ser reemplazados sin dificultad.

Al escoger una solución de almacenamiento masivo el primer paso es definir sus necesidades. Si prefiere velocidad o fiabilidad por encima del coste, el resultado será distinto del que vamos a describir en esta sección.

##### 18.4.1.1.1. Instalación del hardware

Además del disco IDE, el núcleo del disco CCD está compuesto por tres discos IDE discos IDE Western Digital de 30GB y 5400 RPM, que ofrecen aproximadamente 90GB de almacenamiento. Lo ideal sería que cada disco IDE tuviera su propio cable y controlador, pero para minimizar costes no se utilizaron controladores IDE adicionales. En lugar de eso se configuraron los discos con “jumpers” para que cada controlador IDE tuviera un maestro y un esclavo.

Despues de reiniciar la BIOS se configuró para que detectara automáticamente los discos conectados. FreeBSD los detectó al reiniciar:

ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

### Nota:

Si FreeBSD no detecta todos los discos asegúrese de que ha colocado correctamente los “jumpers”. La mayoría de los discos IDE tienen un “jumper” “Cable Select”. Este no es el “jumper” que define la relación maestro/esclavo. Consulte la documentación del disco para identificar el “jumper” correcto.

El siguiente paso es estudiar cómo conectarlos para que formen parte del sistema de ficheros. Investigue Debe investigar vinum(8) (Capítulo 20, El Gestor de Volúmenes Vinum) y ccd(4). Nosotros elegimos ccd(4) para nuestra configuración.

##### 18.4.1.1.2. Configuración de CCD

El controlador ccd(4) le permite tomar varios discos idénticos y concatenarlos en un solo sistema lógico de ficheros. Para poder usar ccd(4) necesita un kernel compilado con soporte de ccd(4). Añada esta línea al fichero de configuración de su kernel, recompile y reinstale su kernel:

pseudo-device ccd 4

En sistemas 5.X, use la siguiente línea:

device ccd

### Nota:

En FreeBSD 5.X no es necesario especificar un número de dispositivos ccd(4), ya que el controlador de dispositivo ccd(4) es capaz de clonarse a sí mismo (se crearán nuevas instancias de dispositivo automáticamente según vayan haciendo falta).

El soporte de ccd(4) también puede cargarse como módulo en FreeBSD 3.0 y posteriores.

Para configurar ccd(4) tendrá que usar disklabel(8) para etiquetar los discos:

disklabel -r -w ad1 auto disklabel -r -w ad2 auto disklabel -r -w ad3 auto

Esto crea una etiqueta de disco para `ad1c`, `ad2c` y `ad3c` que abarcan el disco completo.

### Nota:

A partir de FreeBSD 5.1-RELEASE bsdlabel(8) reemplazó al antiguo programa disklabel(8). En bsdlabel(8) se eliminaron muchas opciones y parámetros obsoletos; en los ejemplos de arriba la opción `-r` deben obviarse. Para más información consulte bsdlabel(8).

El siguiente paso es cambiar el tipo de etiqueta de disco. Edite los discos con disklabel(8):

disklabel -e ad1 disklabel -e ad2 disklabel -e ad3

Esto abre la etiqueta de disco de cada disco con el editor declarado en la variable de entorno `EDITOR`, por defecto vi(1).

Esta es una etiqueta de disco sin modificar:

8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)

ccd(4) necesita que añada una nueva partición `e`. Puede copiarla desde la partición `c`, pero el tipo de sistema de ficheros (la opción `fstype`) debe ser `4.2BSD`. La etiqueta del disco debería tener este aspecto:

8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)

##### 18.4.1.1.3. Contrucción del sistema de ficheros

Puede que todavía no exista el nodo de dispositivo para `ccd0c`. Si es así, ejecute lo siguiente:

cd /dev sh MAKEDEV ccd0

### Nota:

En FreeBSD 5.0 devfs(5) administrará automáticamente los nodos de dispositivos en `/dev`, así que no tendrá que usar `MAKEDEV`.

Una vez etiquetados todos los discos construya el ccd(4). Utilice ccdconfig(8) con opciones similares a las siguientes:

ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e

El uso y el significado de cada una de las opciones se muestra más abajo:

| El primer argumento es el dispositivo a configurar, en este caso `/dev/ccd0c`. La parte `/dev/` es opcional.
| El intervalo para el sistema de ficheros. El intervalo define el tamaño de una banda en bloques de disco, normalmente 512 bytes. Por lo tanto, un intervalo de 32 equivaldría 16.384 bytes.
| Banderas para ccdconfig(8). Si desea disponer sus discos en espejo use aquí una bandera. Esta configuración no necesita discos en espejo, por lo que está dispuesta a 0 (cero).
| Los últimos argumentos de ccdconfig(8) son los dispositivos a colocar en el array. Utilice la ruta completa para cada dispositivo.

Despues de ejecutar ccdconfig(8) el ccd(4) estará configurado y podrá instalar un sistema de ficheros. Consulte las opciones de newfs(8) y ejecute:

newfs /dev/ccd0c

##### 18.4.1.1.4. Automatización

Seguramente querrá que ccd(4) esté dispuesto tras cada reinicio. Para ello, debe configurarlo. Guarde su configuración en `/etc/ccd.conf` mediante lo siguiente:

ccdconfig -g > /etc/ccd.conf

Durante el reinicio, el “script” `/etc/rc` ejecuta `ccdconfig -C` si encuentra el fichero `/etc/ccd.conf`. De este modo ccd(4) queda configurado automáticamente para que pueda montarse.

### Nota:

Si ha arrancando en modo mono usuario necesita ejecutar el siguiente comando antes de que pueda montar el ccd(4) para configurar el array:

ccdconfig -C

Para montar automaticamente el ccd(4) coloque una entrada para ccd(4) en `/etc/fstab` para que se monte durante el arranque:

/dev/ccd0c /media ufs rw 2 2

#### 18.4.1.2. El administrador de volúmenes Vinum

El administrador de volúmenes Vinum es un controlador de dispositivos de bloque que implementa unidades de disco virtuales. Aísla los discos hardware de la interfaz de dispositivos de bloque y mapea datos de modo que revierta en un incremento de flexibilidad, rendimiento y fiabilidad comparados con el sistema de slices de almacenamiento de disco tradicional. vinum(8) implementa los modelos RAID-0, RAID-1 y RAID-5, individualmente o combinados.

Consulte el Capítulo 20, El Gestor de Volúmenes Vinum para mayor información sobre vinum(8).

### 18.4.2. RAID por Hardware

FreeBSD admite una gran variedad de controladores RAID por hardware. Estos dispositivos controlan un subsistema RAID sin necesidad de software específico para FreeBSD que administre el array.

Puede controlar la mayoría de las operaciones de disco con una tarjeta que incorpore BIOS. El siguiente texto es una breve descripción de configuración utilizando una controladora Promise RAID IDE. Cuando se instala esta tarjeta e inicia el sistema despliega un “prompt” pidiendo información. Siga las instrucciones para entrar a la pantalla de configuración de la tarjeta. Ahí tendrá posibilidad de combinar todos los discos que haya conectado. Hecho esto el disco (o discos) aparecerán como una sola unidad en FreeBSD. Pueden configurarse otros niveles de RAID.

### 18.4.3. Reconstrucción de arrays ATA RAID1

FreeBSD le permite reemplazar en caliente un disco dañado. Esto requiere que lo intercepte antes de reiniciar.

Probablemente vea algo como lo siguiente en `/var/log/messages` o en la salida de dmesg(8):

ad6 on monster1 suffered a hard error. ad6: READ command timeout tag=0 serv=0 - resetting ad6: trying fallback to PIO mode ata3: resetting devices .. done ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\ status=59 error=40 ar0: WARNING - mirror lost

Consulte atacontrol(8) para más información:

`#` `atacontrol list` ATA channel 0: Master: no device present Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present ATA channel 3: Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present `#` `atacontrol status ar0` ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED

1. Primero debe desconectar el disco del array para que pueda retirarlo con seguridad:

   `#` `atacontrol detach 3`

2. Reemplace el disco.

3. Conecte el disco de repuesto:

   `#` `atacontrol attach 3` Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present

4. Reconstruya el array:

   `#` `atacontrol rebuild ar0`

5. El comando de reconstrucción no responderá hasta que termine la tarea. Puede abrir otra terminal (mediante Alt+F`n`) y revisar el progreso ejecutando lo siguiente:

   `#` `dmesg | tail -10` [texto eliminado] ad6: removed from configuration ad6: deleted from ar0 disk1 ad6: inserted into ar0 disk1 as spare `#` `atacontrol status ar0` ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed

6. Espere hasta que termine la operación.

Anterior | Subir | Siguiente
18.3. Añadir discos | Inicio | 18.5. Dispositivos de almacenamiento USB

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.