Cómo montar en diez cómodos pasos un RAID para Debian GNU/Linux

Buenas :)

Acabo de terminar de montar un RAID (Redundant Array of Independent Disks) en mi nuevo servidor, y paso a resumir en 10 pasos lo que hay que hacer, por si alguno va a hacer algo parecido.

1. El primer paso es disponer de dos discos idénticos y crear una partición sin formato. El formato se aplicará cuando hayamos constituído la matriz RAID. Maneras hay muchas, desde el editor gráfico gparted hasta particionar sin formato por consola. A los expertos no hace falta explicarles más, y a los que estáis empezando, os sugiero optéis por gparted

shernando@shernando:~$ sudo apt-get install gparted

2. El segundo paso es comprobar, por obvio que parezca, que no hay otras matrices RAID creadas. Para ello inspeccionamos los contenidos de /proc/mdstat

shernando@shernando:~$ cat /proc/mdstat
Personalities :
unused devices:

3. Visualizamos con fdisk el estado de nuestros discos y verificamos que los discos sobre los que construiremos la matriz RAID están aptos para tal objetivo, es decir, carentes de contenidos y con un único particionado sin formato.

shernando@shernando:~$ sudo fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 19457 156288321 83 Linux

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 19457 156288321 83 Linux

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 31 248976 83 Linux
/dev/hda2 32 9729 77899185 5 Extended
/dev/hda5 32 195 1317298+ 82 Linux swap / Solaris
/dev/hda6 196 9729 76581823+ 8e Linux LVM

En mi caso, los discos son /dev/sda y /dev/sdb. Ambos son dos Seagate de 160 GB SATA, mientras que /dev/hda es un disco IDE de 80 GB en el que tengo montado el sistema operativo, con la distribución habitual de particiones.

4. Vía mknod, creamos el dispositivo /dev/md0, necesario para soportar la matriz RAID.

shernando@shernando:~$ sudo mknod /dev/md0 b 9 0

5. Creamos la matriz RAID. En este caso, optamos por un RAID 0 aka stripping, ya que el RAID 5 requiere al menos tres discos. RAID 1 está enfocado a mirroring, pero lo que me interesa es agregación de tamaño y con buen rendimiento. Hay que ser conscientes en este punto de que RAID 0 no ofrece redundancia como RAID 1, es decir, no hay tolerancia a fallos. Que cada cual escoja el nivel RAID que más le guste. Tampoco JBOD es una mala opción :)

shernando@shernando:~$ sudo mdadm –create /dev/md0 –level=raid0 –raid-devices=2 /dev/sda /dev/sdb
mdadm: array /dev/md0 started.

6. Verificamos que todo está en orden, volviendo a consultar los contenidos de /proc/mdstat.

shernando@shernando:~$ cat /proc/mdstat
Personalities : [raid0] md0 : active raid0 sdb[1] sda[0] 312581632 blocks 64k chunks

Como véis, las dos entidades sday sdb se han agregado en una matriz RAID md0, y han pasado de 160 GB cada una a una sóla de 312581632 bloques, de 320 GB. Mediante mdadm –detail, observamos los detalles del RAID:

shernando@shernando:~$ sudo mdadm –detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Mar 4 22:56:04 2007
Raid Level : raid0
Array Size : 312581632 (298.10 GiB 320.08 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Mar 4 22:56:04 2007
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Chunk Size : 64K

UUID : 983cf159:2a849187:b1a07aec:5dd438cd
Events : 0.1

Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb

7. Damos formato a la matriz mediante mkfs. En este caso, se opta por journaling ext3, quedando a gusto del consumidor la elección de otros sistemas de ficheros.

shernando@shernando:~$ sudo mkfs.ext3 /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
39075840 inodes, 78145408 blocks
3907270 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=79691776
2385 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

8. Establecemos punto de montaje para el RAID, editando el fichero /etc/fstab. En este caso escogemos la carpeta /raid, creada en el sistema de ficheros con los permisos apropiados (drwxr-xr-x 3 root root 4096 2007-03-04 23:01 raid)

/dev/md0 /raid ext3 defaults,user 0 0

9. Montamos el RAID

shernando@shernando:~$ sudo mount /raid

10. Disfrutamos :)

Un saludo.

23 comentarios sobre “Cómo montar en diez cómodos pasos un RAID para Debian GNU/Linux

  1. Se me olvidaba,

    Este RAID requiere (ha requerido)

    * Una controladora RAID, en este caso, integrada en la placa madre, una Asus P5VDC MX, cuyas especificaciones están en

    http://www.asus.com/products4.aspx?l1=3&l2=11&l3=242&model=814&modelmenu=1

    * Dos discos Serial ATA (SATA). En este caso, eran dos discos Seagate de 160 GB (7200 rpm y 8 MB de Búfer), conectados a sendos SATA de la placa madre. El sistema operativo está en otro disco, en este caso un IDE de 80 GB, también de Seagate. La placa es una maravilla en este aspecto, ya que tiene, además de los IDE de turno, 4 conectores SATA, con lo que 2 de ellos han quedado libres, y se prestan a futuras agregaciones al RAID :)

    * Como curiosidad, comentar que el servidor tiene 512 MB de RAM (las ventajas de no usar un Sistema Operativo asesino de memoria y recursos como servidor), y un procesador Pentium D 820 (2 núcleos de 1 MB de caché por barba @ 2.8 GHz) que se mantiene estable en 34ºC centígrados. La placa es la Asus que os comentaba. Funciona con Debian 3.1 «Sarge». De momento corre un Bind, un Apache y sus módulos, un Samba para compartir ficheros (ficheros que irán al RAID) y un servidor de correo Postfix. Irán cayendo funcionalidades poco a poco :)

  2. Sergio,

    En el cuerpo del artículo dices:

    «En mi caso, los discos son /dev/sda1 y /dev/sda2. Ambos son dos Seagate de 160 GB SATA, mientras que /dev/hda es un disco IDE de 80 GB en el que tengo montado el sistema operativo, con la distribución habitual de particiones.»

    ¿Estás seguro que /dev/sda1 y /dev/sda2 son dos discos independientes? Me atrevería a decir que es un gazapo y que realmente querías decir /dev/sda1 y /dev/sdb1.

  3. O, por ser pijotero, /dev/sda y /dev/sdb hablando de discos y no de particiones ¿no? De hecho, Felipe, en el listado que da del fdisk la información si es correcta:

    Disk /dev/sda: 160.0 GB, 160041885696 bytes
    255 heads, 63 sectors/track, 19457 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Disk /dev/sdb: 160.0 GB, 160041885696 bytes
    255 heads, 63 sectors/track, 19457 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

  4. Me dejé el equipo encendido :P y mientras desayunaba, cierto pitido del cliente de correo me hizo fijarme que el RSS de esta entrada tenía movimiento :D

    ¿Y tú que? :)

  5. Hola. ¿Este es un Raid por software o por hardware?. Al leer el artículo pensaba que era por software pero al comentar que tu placa lleva soporte para Raid me ha dejado en duda. Aunque supongo que si es por hardware el sistema reconocería ya de por si un único disco y no habría que configurarlo? :S

  6. Buenas noches,
    segui el tutorial para montar un raid5 con 4 discos iguales, y en principio todo me ha ido bien, sin ningun problema. Pero ahora de buenas a primeras al iniciar el sistema no me monta el raid y cuando lo intento hacer manualmente me da el siguiente error:

    mount: wrong fs type, bad option, bad superblock on /dev/md0,

    missing codepage or other error

    (could this be the ide device where you in fact use

    ide-scsi so that sr0 or sda or so is needed?)

    in some cases useful info is found in syslog – try

    dmesg | tail or so

    No doy con el error, haber si podeis ayudarme.

    Muchas gracias y saludosss!!!!

  7. Xuelaz,

    En mi experiencia los errores de superbloque suelen derivar de la ausencia de soporte NTFS. Si es un disco no formateado en EXT3 o algún otro FS nativo de UNIX, comprueba que tienes el soporte NTFS activo (kldstat | grep ntfs), y si no lo tienes, cárgalo (kldload ntfs)

    Para hacer persistentes los cambios, añade el soporte en la carga del sistema, colocando la siguiente linea en /boot/loader.conf

    ntfs_load=»YES»

    Un saludo,

  8. Sergio,
    el formato es EXT3, de todas formas voy a montarlo denuevo ya que no tenia mucha informacion en los discos. Ahora mi problema es otro, al crear la raid me dice que los discos estan en uso. Como puedo eliminar la raid anterior para crear una nueva?.

    Un saludo.

  9. Xuelaz, me ha pasado exactamente lo mismo hoy.
    AL querer montar el raid, el error de wrong fs.

    Lo solucione con un
    mount -t auto /dev/md0 /destino

    Obviamente, en fstab lo agregue como auto, y al reiniciar…. saben que paso? Paso lo que tenia que pasar: levanto de una y sin chistar :D

  10. hola Sergio, soy novato en esto y estoy interesado en levantar un servidor en debian y quisira ponerle 3 discos de 1tera cada uno y un disco de 500gb para alojar el sistema ,, un fabor es factible acerle un raid de los 4 y si se pudiera aplicar con tu manual la configuracion o que mas se puede agregar para que funcionen los 4 discos ,grasias por tu respuesta..

  11. Rafael,

    Totalmente factible. Menos en el caso de RAID 6, que necesitas 4 discos como mínimo, puedes formar volúmenes con 3 discos.

    Puedes poner el sistema en un disco y constituir el RAID con los otros 3 tranquilamente.

    Un saludo,

  12. Muy bueno, tengo un servidor similar al tuyo con 2 discos de 1TB. En ese servidor estoy por correr un Squid Proxy. Desp. les cuento como me fué.
    Salu2

  13. Hola, perdona por actualizar este tema, pero espero que puedas ayudarme si no es molestia. la verdad hace menos de una semana que he pasado a linux, he montado un ubuntu 12.04 y tengo dos discos de 1T que quisiera recuperar en RAID tal como los tenia en W7.

    Estoy siguiendo los pasos que has puesto, y me quedo estancado en el paso 8:

    8. Establecemos punto de montaje para el RAID, editando el fichero /etc/fstab. En este caso escogemos la carpeta /raid, creada en el sistema de ficheros con los permisos apropiados (drwxr-xr-x 3 root root 4096 2007-03-04 23:01 raid)

    /dev/md0 /raid ext3 defaults,user 0 0

    cuando pongo este ultimo comando la respuesta es:
    bash: /dev/md0: Permiso no concedido

    supongo que tengo que editar el fichero que mencionas en el paso 8, el problema es que no tengo ni idea de como acceder a él, ni como cambiar los permisos. espero que no sea mucha molestia explicarme.

    muchas gracias

  14. Muchas gracias
    no encontraba nada en internet pero tu post fue de gran ayuda
    en mi caso levante un raid5 con 4 discos de 1.5T.
    pero el procedimiento fue el mismo xDxDxD

Comentarios cerrados.