Hola a todos.

Esta vez, y sin que sirva de precedente, mando un mensaje a la lista dando
algo en lugar de ir pidiendo.

He estado montando un sistema RAID 1 �ltimamente, y como ni es algo que sea
precisamente intuitivo, he escrito unas l�neas contando como lo he hecho yo.
Por supuesto, se admiten todo tipo de sugerencias, cr�ticas, comentarios...

Espero que le sirva de ayuda a alguien.

-- 
Un Saludo

Han Solo
The Rebel Alliance

Conecto, luego existo.
Desconecto, luego insisto.
Soy usuario de infobirria+

P.D. La firma no es m�a, sino de uno que trabajaba, precisamente, en M$.
Vivir para ver.

Receta r�pida para montar un sistema RAID 1 en Linux.

Han Solo <[EMAIL PROTECTED]>

1.- Descargo y licencia.

Lo habitual en estos casos, yo no garantizo nada, no me responsabilizo de lo
que pueda estropearse si haces caso de este documento, no tiene porqu�
funcionar en tu sistema y lo �nico que pudo decir es que a mi me ha
funcionado.

Este documento se distribuye bajo licencia GLP y todas esas cosas que ya
sab�is; es decir, lo pod�is copiar, manipular, traducir... pero ser�a un
detalle que me mandarar�is una copia.

2.- Consideraciones previas.

RAID es una cosa muy delicada, NO ES PARA NOVATOS.

El hecho de tener una sistema RAID 1 no libera de hacer copias de seguridad,
sino todo lo contrario. La redundancia funciona bien contra fallos f�sicos
del disco duro mientras est� funcionando, pero puedes perderlo todo si se va
la luz (aunque en honor a la verdad, a m� me pas� esto el otro d�a y luego el
sistema se recuper� bien).

No queda muy claro la utilidad de montar un sistema RAID 1 con discos ide,
ya que no permiten una acceso simult�neo como los SCSI. En cualquier caso,
si os decid�s a montar un RAID 1 con discos ide, hacedlo en canales
diferentes, con cables diferentes.

No merece la pena montar todo el sistema en RAID. Primero porque
lilo/loadlin no son capaces tal como vienen de arrancar desde un dispositivo
RAID, y hay que andar parche�ndolos. Segundo porque si el RAID falla, no se
podr� acceder a las herramientas para recuperarlo. Yo tengo montado un
servidor y tengo en RAID los directorios /var y /home, que son los que
tienen m�s accesos en lectura (bases de datos, p�ginas web, ficheros
personales...) Directorios como /usr no conviene tenerlos en RAID, pero una
buena pol�tica es tenerlos duplicados. As�, si un disco duro falla, se puede
arrancar desde el otro. Si se hacen copias de un disco en el otro (como
copias, no como RAID, v�a cron, por ejemplo, tendremos adem�s una copia de
seguridad de todo el sistema.

2.- Elementos necesarios

Yo he montado mi sistema RAID bajo una Debian Potato (versi�n "unstable" en
el momento de describir esto), pero todo lo dicho aqu� debe servir sin
mayores problemas para otras versiones de Debian o de otras distribuciones
de Linux.

Las utilidades RAID tradicionales necesitan un kernel superior al 2.1.61
(creo), as� que es recomendable pasarse a la serie 2.2.x (no s�lo por el
RAID). De todas formas, las raidutils est�n condenadas a desaparecer, en
favor de las raidutils2, mas sencillas. Yo he configurado mi sistema RAID
con est�s �ltimas, y no tiene mayor dificultad. 

Las raidutils2 necesitan ciertos parches para en kernel. En el momento de
escribir esto  el paquete Debian que tengo instalado es
raidtools2_0.90.990824-2.deb y los parches kernel-patch_2.2.10-2.deb. Los
parches son para el kernel 2.2.10, pero he comprobado que no vienen
incluidos en el kernel 2.2.11. Supongo que con esos parches se pueden retocar
kernels superiores, pero no le he probado. La instalaci�n de estos parches es
imprescindible, ya que durante la instalaci�n del paquete copmproeba si est�n
incluidos en el kernel, y si no los encuentra no se instala. Estos parches
se pueden bajar de ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha

3.- Configuraci�n

Lo primero que tenemos que hacer es recompilar el kernel para tener "soporte"
para RAID. Acord�os de parchear las fuentes. Yo he compilado todo lo
referente al RAID dentro del kernel, pero supongo que no habr� problema en
hacerlo como m�dulos (lo probar� uno de estos d�as).

Una vez que hayamos decidido como vamos a organizar el raid, lo primero que
tenemos que hacer es crear los dispositivos RAID. Estos dispositivos reciben
el nombre de /dev/mdX, y son los que luego montaremos como si de particiones
se tratara. Para definir estos dispositivos, debemos crear un fichero de
configuraci�n. Por defecto las utilidades buscan este fichero en
/etc/raidtab, pero puede estar en otro sitio. Yo tengo un enlace a
/etc/raid/raid1.conf, que es un fichero con el siguiente contenido:

# Sample raid-1 configuration

# Primer dispositivo RAID, en principio para /var

raiddev                 /dev/md0
raid-level              1
nr-raid-disks           2
nr-spare-disks          0
chunk-size              4

device                  /dev/sda4
raid-disk               0

device                  /dev/sdb4 
raid-disk               1


# Segundo dispositivo RAID, en principio para /home 

raiddev                 /dev/md1
raid-level              1
nr-raid-disks           2
nr-spare-disks          0
chunk-size              4

device                  /dev/sda2
raid-disk               0

device                  /dev/sdb2
raid-disk               1

# Alea jacta est...

De esta forma, quedan definidas qu� particiones formar�n parte de cada uno
de los dos dispositivos raid, /dev/md0 y /dev/md1. La tabla de particiones
es la siguiente:

# fdisk /dev/sda

The number of cylinders for this disk is set to 1106.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sda: 255 heads, 63 sectors, 1106 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1       319   2562336   83  Linux
/dev/sda2           320       638   2562367+  83  Linux
/dev/sda3           639       654    128520   82  Linux swap
/dev/sda4           655      1106   3630690   83  Linux

La del disco sdb es id�ntica, salvo que sdb1 no es arrancable.

Se pueden tener distintos ficheros de configuraci�n para distintos
dispositivos RAID, o para distintos niveles, pero esto nos obligar� a
decirle en cada comando qu� fichero de configuraci�n usar. Yo prefiero
definir todos los dispositivos RAID en el mismo fichero de configuraci�n,
pero como siempre, para gustos se inventaron los colores.

Una ver que tenemos definido el fichero de configuraci�n, procedemos a
crear los dispositivos RAID con la orden:

# mkraid /dev/md0
# mkraid /dev/md1

o bien:

# mkraid -c /etc/raid/raid1.conf /dev/md0
# mkraid -c /etc/raid/raid1.conf /dev/md1

Las particiones que formar�n parte de un dispositivo RAID deben estar
desmontadas, a ser posible vac�as y mejor si ni siquiera tienen formato.
mkraid es extremadamente cuidadoso, y si encuentra datos en las particiones
que deben formar parte de un dispositivo RAID protestar� lastimosamente. Si
tenemos datos en esas particiones pero no nos importa perderlos, podemos
forzarlo a que los sobreescriba con

# mkraid --force /dev/md0

Estos destruir� permanentemente todos los datos de las particiones
implicadas. 

Tras crear los dispositivos hay que activarlos. Ahora me entra la duda si la
activaci�n la hace autom�ticamente al crearlos dispositivos o hay que
hacerla a mano. De todas formas la orden es:

# raidstart /dev/md0
# raidstart /dev/md1

Para ver los dispositivos que est�n activos:

~# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid5] [translucent] 
read_ahead 1024 sectors
md1 : active raid1 sdb2[1] sda2[0] 2562240 blocks [2/2] [UU]
md0 : active raid1 sdb4[1] sda4[0] 3630592 blocks [2/2] [UU]
unused devices: <none>

Una vez creados y activados los dispositivos, hay que formatearlos, pero
esto no tiene ning�n secreto, se hace como en cualquier partici�n:

# mk2efs /dev/md0
# mk2efs /dev/md1

Por �ltimo, solo queda montarlos, bien a mano, bien mediante el fichero
/etc/fstab. En mi caso:

# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options>                  <dump> <pass>
/dev/sda1       /             ext2   defaults,errors=remount-ro 0      1
/dev/sda3       none          swap   sw                         0      0
/dev/sdb3       none          swap   sw                         0      0
proc            /proc         proc   defaults                   0      0
/dev/fd0        /floppy       auto   defaults,user,noauto       0      0
/dev/cdrom      /cdrom        iso9660  defaults,ro,user,noauto  0      0
/dev/md0        /var          ext2    defaults                  0       2
/dev/md1        /home         ext2   defaults                   0       2

4.- Mantenimiento

No voy a extenderme mucho aqu� sobre el tema del mantenimiento de un
sistema RAID, leeos la documentaci�n que es bastante clara en ese sentido.
Lo m�s importante que hay que saber es que para cualquier operaci�n de
mantenimiento del sistema, no s�lo hay que desmontar los dispositivos que
estuvieran montados, sino que adem�s hay que desactivarlos con:

~# raidstop /dev/md0

5.- Reinicio del sistema.

Si hab�is seguido lo dicho, la pr�xima vez que reinici�is el sistema los
dispositivos raid se inicializar�n autom�ticamente. El propio kernel detecta
los dispositivos RAID disponibles y los activa, y si es necesario los
chequea. Os adjunto un extracto de los mensajes que da al iniciar:

[...]

md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
translucent personality registered
linear personality registered
raid0 personality registered
raid1 personality registered
raid5 personality registered
raid5: measuring checksumming speed
raid5: MMX detected, trying high-speed MMX checksum routines
   pII_mmx   :   883.158 MB/sec
   p5_mmx    :   947.928 MB/sec
   8regs     :   695.706 MB/sec
   32regs    :   400.431 MB/sec
using fastest function: p5_mmx (947.928 MB/sec)
(scsi0) <Adaptec AHA-294X Ultra2 SCSI host adapter> found at PCI 10/0
(scsi0) Wide Channel, SCSI ID=7, 32/255 SCBs
(scsi0) Downloading sequencer code... 374 instructions downloaded
scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 5.1.17/3.2.4
       <Adaptec AHA-294X Ultra2 SCSI host adapter>
scsi : 1 host.
(scsi0:0:0:0) Synchronous at 80.0 Mbyte/sec, offset 15.
  Vendor: SEAGATE   Model: ST39175LW         Rev: 0001
  Type:   Direct-Access                      ANSI SCSI revision: 02
Detected scsi disk sda at scsi0, channel 0, id 0, lun 0
(scsi0:0:1:0) Synchronous at 80.0 Mbyte/sec, offset 15.
  Vendor: SEAGATE   Model: ST39175LW         Rev: 0001
  Type:   Direct-Access                      ANSI SCSI revision: 02
Detected scsi disk sdb at scsi0, channel 0, id 1, lun 0
(scsi0:0:3:0) Synchronous at 20.0 Mbyte/sec, offset 15.
  Vendor: PLEXTOR   Model: CD-ROM PX-40TS    Rev: 1.01
  Type:   CD-ROM                             ANSI SCSI revision: 02
scsi : detected 2 SCSI disks total.
SCSI device sda: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7
GB]
SCSI device sdb: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7
GB]


[...]


Partition check:
 sda: sda1 sda2 sda3 sda4
 sdb: sdb1 sdb2 sdb3 sdb4
md.c: sizeof(mdp_super_t) = 4096
autodetecting RAID arrays
autorun ...
... autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 68k freed
Adding Swap: 128516k swap-space (priority -1)
Adding Swap: 128516k swap-space (priority -2)
(read) sda4's sb offset: 3630592 [events: 00000019]
(read) sdb4's sb offset: 3630592 [events: 00000019]
autorun ...
considering sdb4 ...
  adding sdb4 ...
  adding sda4 ...
created md0
bind<sda4,1>
bind<sdb4,2>
running: <sdb4><sda4>
now!
sdb4's event counter: 00000019
sda4's event counter: 00000019
md0: max total readahead window set to 128k
md0: 1 data-disks, max readahead per data-disk: 128k
raid1: device sdb4 operational as mirror 1
raid1: device sda4 operational as mirror 0
(checking disk 0)
(really checking disk 0)
(checking disk 1)
(really checking disk 1)
(checking disk 2)
(checking disk 3)
(checking disk 4)
(checking disk 5)
(checking disk 6)
(checking disk 7)
(checking disk 8)
(checking disk 9)
(checking disk 10)
(checking disk 11)
raid1: raid set md0 active with 2 out of 2 mirrors
md: updating md0 RAID superblock on device
sdb4 [events: 0000001a](write) sdb4's sb offset: 3630592
sda4 [events: 0000001a](write) sda4's sb offset: 3630592
.
... autorun DONE.
(read) sda2's sb offset: 2562240 [events: 0000001b]
(read) sdb2's sb offset: 2562240 [events: 0000001b]
autorun ...
considering sdb2 ...
  adding sdb2 ...
  adding sda2 ...
created md1
bind<sda2,1>
bind<sdb2,2>
running: <sdb2><sda2>
now!
sdb2's event counter: 0000001b
sda2's event counter: 0000001b
md1: max total readahead window set to 128k
md1: 1 data-disks, max readahead per data-disk: 128k
raid1: device sdb2 operational as mirror 1
raid1: device sda2 operational as mirror 0
(checking disk 0)
(really checking disk 0)
(checking disk 1)
(really checking disk 1)
(checking disk 2)
(checking disk 3)
(checking disk 4)
(checking disk 5)
(checking disk 6)
(checking disk 7)
(checking disk 8)
(checking disk 9)
(checking disk 10)
(checking disk 11)
raid1: raid set md1 active with 2 out of 2 mirrors
md: updating md1 RAID superblock on device
sdb2 [events: 0000001c](write) sdb2's sb offset: 2562240
sda2 [events: 0000001c](write) sda2's sb offset: 2562240
.
... autorun DONE.

Los paquetes que yo tengo instalados (por si a alguien le interesa):

# dpkg -l *raid*
Desired=Unknown/Install/Remove/Purge
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err:
uppercase=bad)
||/ Name            Version        Description
+++-===============-==============-============================================
ii  kernel-patch-2. 2.2.10-2       Drivers for 'new-style' RAID arrays
rc  raidtools       0.42-19        Utilities to support 'old-style' RAID disks
ii  raidtools2      0.90.990824-2  Utilities to support 'new-style' RAID disks

6.- Referencias

Todo lo dicho aqu� es un extracto del Software-RAID HOWTO de Jakob
OEstergaard ([EMAIL PROTECTED]), que viene con el paquete raidtools2, o que
est� en http://ostenfeld.dk/~jakob/Software-RAID.HOWTO/ y del art�culo
de Antonio Castro ([EMAIL PROTECTED]) en Linuxfocus,
http://www.linuxfocus.org/Castellano/articles/article21.html

7.- Feedback

Como dije m�s arriba, a mi todo estop me funciona, lo que no me exime de
haber cometido m�ltiples errores tanto en el procedimiento (espero que no)
como en la redacci�n de est�s l�neas. Toda sugerencia ser� bienvenida, as�mo
toda ampliaci�n de lo expuesto aqu�, especialmente en el tema del
mantenimiento, que ha quedado un tanto espartano.

Para montar un RAID de otro nivel, no deber�a haber mayores problemas, pero
si alguien se anima a explicar con m�s detalle como se monta un RAID 0, 4 o
5 pues mejor.

Responder a