Howto: RAID en Linux

De Daniel Pecos

Contenido

Tipos de Raid

Pasos para crear un RAID

Primero comprobamos si existe algun array previamente creado:

$ cat /proc/mdstat
Personalities :
Event: 0
unused devices: <none>

A continuación creamos el o los md que necesitemos (md0, md1, ...) y donde crearemos los array RAID:

sudo mknod /dev/md0 b 9 0

Una vez tenemos el md creado, procedemos a crear el array RAID:

$ sudo mdadm --create MD --level=RAID_LEVEL --raid-devices=N PARTICIONES
Continue creating array? yes
mdadm: array MD started.

donde:

  • MD: /dev/md0, /dev/md1, ...
  • RAID_LEVEL: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp, fautly
  • N: Número de particiones que formaran parte del array
  • PARTICIONES: Lista de particiones que formaran parte del array o missing en caso de querer añadirla a posteriori

(Los ejemplos que se muestran a partir de este punto, son con datos reales, por lo que vuestros resultados pueden variar ligeramente)

Si consultamos de nuevo el listado de arrays existentes, veremos algo parecido a lo siguiente:

$ cat /proc/mdstat
Personalities : [raid5] [raid4]
md0 : active raid5 sdb1[0] sde1[3] sdd1[2] sdc1[1]
      586075008 blocks [4/3] [UUU_]
      [>....................]  resync =  0.7% (4103401/586075008) finish=177.6min speed=97640K/sec

lo cual significa que se están sincronizando los datos de los discos.

El proceso anterior termina cuando la consulta anterior devuelva el siguiente resultado:

$ cat /proc/mdstat
Personalities : [raid5] [raid4] 
md0 : active raid5 sdb1[0] sde1[3] sdd1[2] sdc1[1]
      586075008 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      
unused devices: <none>

Ahora solo queda formatear y montar el array RAID:

mkfs.ext3 /dev/md0
sudo mount /dev/md0 /punto_de_montaje

Monitorización

  • Estado actual de los discos y unidades RAID
$ cat /proc/mdstat 
Personalities : [raid5] [raid4] 
md0 : active raid5 sdb1[0] sde1[3] sdd1[2] sdc1[1]
      586075008 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      
unused devices: <none>
  • Más detalles sobre las unidades RAID
$ sudo mdadm --query /dev/md0
/dev/md0: 558.92GiB raid5 4 devices, 0 spares. Use mdadm --detail for more detail.

$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Sat Jan 20 17:27:56 2007
     Raid Level : raid5
     Array Size : 586075008 (558.92 GiB 600.14 GB)
    Device Size : 195358336 (186.31 GiB 200.05 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sun Jan 21 22:23:05 2007
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : d65ce83c:150ba8ab:cfc213b0:81723f7b
         Events : 0.3084

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1
  • Más detalles de los discos
$ sudo mdadm --query /dev/sdb1
/dev/sdb1: is not an md array
/dev/sdb1: device 0 in 4 device active raid5 /dev/md0.  Use mdadm --examine for more detail.

$ sudo mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 00.90.00
           UUID : d65ce83c:150ba8ab:cfc213b0:81723f7b
  Creation Time : Sat Jan 20 17:27:56 2007
     Raid Level : raid5
    Device Size : 195358336 (186.31 GiB 200.05 GB)
     Array Size : 586075008 (558.92 GiB 600.14 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0

    Update Time : Sun Jan 21 22:23:05 2007
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 7cd3d7e7 - correct
         Events : 0.3084

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     0       8       17        0      active sync   /dev/sdb1

   0     0       8       17        0      active sync   /dev/sdb1
   1     1       8       33        1      active sync   /dev/sdc1
   2     2       8       49        2      active sync   /dev/sdd1
   3     3       8       65        3      active sync   /dev/sde1


Administración

  • Establecer un disco como faulty/failed:
sudo mdadm --fail /dev/md0 /dev/sdb1
  • Quitar un disco fallido de una RAID:
sudo mdadm --remove /dev/md0 /dev/sdb1
  • Limpiar cualquier información previa de un disco RAID (Ej. al reutilizar un disco de otra raid antigua)
sudo mdadm --zero-superblock /dev/sdb1
  • Añadir un disco a la RAID
sudo mdadm --add /dev/md0 /dev/sdb1
  • Añadir soporte "bitmap" a un RAID
sudo mdadm --grow /dev/mdX --bitmap=internal
  • Quitar el soporte de "bitmap" a un RAID
sudo mdadm --grow /dev/mdX --bitmap=none
  • Forzar a montar la unidad raid con dispositivos fallidos o no presentes
sudo mdadm --assemble /dev/md0 /dev/sda1 --run
Herramientas personales