domingo, 11 de noviembre de 2012

Montar un RAID 5 en Ubuntu 12.04

Montar un RAID 5 en Ubuntu 12.04

Montaje de un RAID 5 mediante (mdadm) por software.

Se realizará el proceso en una máquina Ubuntu 12.04 sobre una máquina virtual VMware workstation 9.

1.- Adición 4 discos virtuales de 1 GB cada uno.

2.- Creamos las particiones con fdisk:

fdisk /dev/sd(X)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Using default value 2097151

------------------------------------------------------------------------------------------------------------------

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): l

Nos interesa esta línea: fd  Linux raid auto

Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

-------------------------------------------------------------------------------------------------------------------

Realizamos esta operación con el resto de discos.

Para crear un RAID 5 con tres discos, hacemos lo siguiente:

#mdadm --create /dev/md127 --l 5 --raid-devices=3 /dev/sd[XYZ]1

Una vez creado podemos ver su estado con esto:

       #mdadm --detail /dev/md127

-------------------------------------------------------------------------------------------------------------------

root@ubuntu:/home/daniel# mdadm --detail /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Wed Nov  7 11:33:13 2012
     Raid Level : raid5
     Array Size : 2093056 (2044.34 MiB 2143.29 MB)
  Used Dev Size : 1046528 (1022.17 MiB 1071.64 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu Nov  8 01:13:40 2012
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : ubuntu:0  (local to host ubuntu)
           UUID : 57a3f039:f2dad432:0ed3cdcf:f9b78cb6
         Events : 41

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       4       8       65        2      active sync   /dev/sde1


------------------------------------------------------------------------------------------------------------------

Con el parámetro "manage", podemos añadir o quitar discos al arreglo y dejarlo en espera de posibles fallos, pasando a estado activo cuando falle uno de ellos, o se haya eliminado del arreglo. Todo los procesos que se realizan con "manage" son en "caliente".

------------------------------------------------------------------------------------------------------------------


       mdadm --manage /dev/md127 --add /dev/sdd1

Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       4       8       65        2      active sync   /dev/sde1

       3       8       49        -      spare   /dev/sdd1

 


------------------------------------------------------------------------------------------------------------------

Supongamos que uno de los discos (sde) falla. De nuevo con el parámetro manage, lo marcamos como "fail":

       #mdadm --manage /dev/md127 --fail /dev/sde1

El fichero "mdstat" almacena el log de sucesos de los arreglos instalados en el sistema.

------------------------------------------------------------------------------------------------------------------



root@ubuntu:/home/daniel# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid5 sdd1[3] sdc1[1] sde1[4](F) sdb1[0]
      2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [=============>.......]  recovery = 69.3% (726648/1046528) finish=0.2min speed=25056K/sec
 


Al tener un disco en spare, de manera automática el sistema lo añade al arreglo y reconstruye el RAID.

------------------------------------------------------------------------------------------------------------------


  Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      active sync   /dev/sdd1

       4       8       65        -      faulty spare   /dev/sde1





------------------------------------------------------------------------------------------------------------------

Eliminamos el disco marcado como faulty con:

        #mdadm --manage /dev/md127 --remove /dev/sde1

Esta es la ventaja de tener discos en "spare". En caso de no tener discos en espera, un RAID 5 de 3 discos, por su naturaleza, permite que en caso de avería o fallo de uno de ellos el RAID  siga en marcha. Por ejemplo:

------------------------------------------------------------------------------------------------------------------

        #mdadm --manage /dev/md127 --fail /dev/sdd1

Update Time : Thu Nov  8 23:55:25 2012
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0
 
 Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       0        0        2      removed

       3       8       49        -      faulty spare   /dev/sdd1

------------------------------------------------------------------------------------------------------------------

En este caso, vemos como "sde1" ha sido eliminado del arreglo y "sdd1" esta marcado como "fallo". Además, nos marcar el arreglo en estado "degradado".

Eliminamos pues el disco con fallo:
 
       #mdadm --manage /dev/md127 --remove /dev/sdd1


Cambiamos la unidad por una nueva y repetimos la operación de añadir partición y dar formato. Agregamos la nueva unidad:

       #mdadm --manage /dev/md127 --add /dev/sdd1 

------------------------------------------------------------------------------------------------------------------

Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      active sync   /dev/sdd1


------------------------------------------------------------------------------------------------------------------

Es importante almacenar la configuración, para ello utilizamos la siguiente expresión:

      
       #mdadm --detail --scan >> /etc/mdadm/mdadm.conf


Es posible detener un array, para ello solo debemos introducir el siguiente comando:

      #mdadm --stop /dev/md127

Esto no significa la pérdida del arreglo. Para volver a ensamblar las unidades al arreglo, utilizamos "--asemble".

      #mdadm --asemble /dev/md127 /dev/sd[bcd]1

Podemos añadir discos activos a nuestro arreglo de la siguiente manera:

           #mdadm --manage /dev/md127 --add /dev/sde1

Ahora podemos usar --grow para añadir un disco activo: 

      #mdadm --grow  --raid-devices=4 /dev/md127

 ------------------------------------------------------------------------------------------------------------------

 Update Time : Sun Nov 11 14:53:31 2012
          State : clean
 Active Devices : 4
Working Devices : 4

 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : ubuntu:0  (local to host ubuntu)
           UUID : 57a3f039:f2dad432:0ed3cdcf:f9b78cb6
         Events : 103

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      active sync   /dev/sdd1
       4       8       65        3      active sync   /dev/sde1



------------------------------------------------------------------------------------------------------------------

* Es posible añadir o quitar unidades simplemente con:

mdadm --{add,remove} /dev/sd{x}y
 
Solo queda crear una partición con "fdisk".
 
       #fdisk /dev/md127
 
Y montar la partición o añadir una línea al fichero "fstab".

 
       #vim /etc/fstab 
  
 

4 comentarios:

  1. Yo tuve un problema con una confi similar. El raid 5 en ubuntu me dejo de funcionar de un momento a otro. AL principio pense que era un problema logico pero despues de revisar me encontre ante un problema grave: una falla fisica en dos discos del raid... Tuve que averiguar por alguna empresa que brindara el servicio de recuperacion de datos. Me pasaron una de nombre Onretrieval. Se los lleve y me solucionaron el problema.
    Saludos.

    ResponderEliminar
  2. Primera observacion, con fdisk no se formatea... se crean particiones..

    ResponderEliminar
  3. Gracias F. Vásquez por el detalle. Ya está corregido. Espero más observaciones!

    Un saludo.

    ResponderEliminar
  4. Como harias para agregar un disco spare a un raid5 previamente creado y que esta en funcionamiento? el raid fue creado sin spare y consta de 4 discos, es posible agregar un nuevo disco pero como spare de este raid ?

    ResponderEliminar