Buscar


imprimir pdf

Verificar y reconstruir el RAID Software en Linux


Introducción


Esta guía le servirá para reconstruir el RAID SW de su servidor dedicado.

Confirme que su servidor tiene RAID por software antes de utilizarla.

Procedimiento

Para gestionar el RAID por SOFTWARE, utilizaremos mdadm.


ATENCIÓN /!\

Es peligroso jugar con MDADM si no conocemos bien su funcionamiento.

Se arriesga a perder datos. Realice una copia de seguridad (BACKUP) de sus datos antes de comenzar los pasos de esta guía.



Instalación de MDADM


El conjunto de programas MDADM no está instalado en el servidor por defecto. Deberá instalarlo siguiendo estos pasos :


En release2, Gentoo:

# emerge mdadm

Calculating dependencies... done!
>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) sys-fs/mdadm-2.6.2 to /
Adjusting permissions recursively: '/usr/portage/distfiles/'
>>> Downloading 'http://mirror.ovh.net/gentoo-distfiles/distfiles/mdadm-2.6.2.tar.bz2'
--19:47:59-- http://mirror.ovh.net/gentoo-distfiles/distfiles/mdadm-2.6.2.tar.bz2
=> `/usr/portage/distfiles/mdadm-2.6.2.tar.bz2'
....




En Debian, Ubuntu :

# apt-get install mdadm

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
mdadm
Necesito descargar 237kB de archivos.
Se utilizarán 676kB de espacio de disco adicional después de esta operación.
Descargados 237kB en 1s (236kB/s)
Preconfigurando paquetes ...
Seleccionando el paquete mdadm previamente no seleccionado.

Configurando mdadm ...
Generating array device nodes... done.
Generating mdadm.conf... done.
Removing any system startup links for /etc/init.d/mdadm-raid ...
* Starting MD monitoring service mdadm --monitor [ OK ]





En release1, Redhat 7.x :

# rpm -Uvh --nodeps ftp://ftp.ovh.net/made-in-ovh/sources/mdadm-2.5.5p1-1.i386.rpm

Retrieving ftp://ftp.ovh.net/made-in-ovh/sources/mdadm-2.5.5p1-1.i386.rpm
Preparing... ########################################### [100%]
1:mdadm ########################################### [100%]




Si utiliza otra distribución, deberá instalarlo a través de los repositorios de dicha distribución.

Utilización


Una vez instalado, para consultar el modo de utilización utilice la opción --help :


# mdadm --misc --help
Usage: mdadm misc_option devices...

This usage is for performing some task on one or more devices, which
may be arrays or components, depending on the task.
The --misc option is not needed (though it is allowed) and is assumed
if the first argument in a misc option.

Options that are valid with the miscellaneous mode are:
--query -Q : Display general information about how a device relates to the md driver
--detail -D : Display details of an array
--examine -E : Examine superblock on an array component
--examine-bitmap -X: Display contents of a bitmap file
--zero-superblock : erase the MD superblock from a device.
--run -R : start a partially built array
--stop -S : deactivate array, releasing all resources
--readonly -o : mark array as readonly
--readwrite -w : mark array as readwrite
--test -t : exit status 0 if ok, 1 if degrade, 2 if dead, 4 if missing




Verificar estado del RAID


Generalmente los servidores tienen 2 particiones de RAID definidas, de sistema y de datos (/dev/md1 y /dev/md2).

Dependiendo de su configuración y su distribución puede tener una única partición (/dev/md1) o bien más particiones (/dev/md3, /dev/md4, etc...)


Para conocer los datos acerca del estado del RAID utilice la opción --misc :



# mdadm --misc --detail /dev/md1

# mdadm --misc --detail /dev/md2



Ejemplo 1: RAID MD1 sincronizado (clean)


# mdadm --misc --detail /dev/md1
/dev/md1:
Version : 00.90.00
Creation Time : Tue Nov 7 22:01:16 2006
Raid Level : raid1
Array Size : 3068288 (2.93 GiB 3.14 GB)
Device Size : 3068288 (2.93 GiB 3.14 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Wed Nov 8 16:01:02 2006
State : active, clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : 4a9a446d:af55e24b:b311aa61:8dc74ed4
Events : 0.14

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



Ejemplo 2: RAID MD1 no sincronizado (degraded)


# mdadm --misc --detail /dev/md1
/dev/md1:
Version : 00.90.00
Creation Time : Tue Nov 7 22:01:16 2006
Raid Level : raid1
Array Size : 3068288 (2.93 GiB 3.14 GB)
Device Size : 3068288 (2.93 GiB 3.14 GB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Wed Nov 8 15:42:35 2006
State : active, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

UUID : 4a9a446d:af55e24b:b311aa61:8dc74ed4
Events : 0.12

Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 0 0 1 removed



  • Podemos ver que existe un RAID1 de 3GB que está en modo degradado con el disco sda1 ya que falta el disco sdb1 (removed).

En estos casos, es posible que haya habido una sobrecarga de disco que haya provocado la desincronización, o bien se ha realizado una sustitución del disco SDB.

- En el primer caso (sobrecarga), bastaría con añadir el disco de nuevo.
- En el segundo caso (cambio de disco), sería necesario definir las particiones y añadir el disco.


Ejemplo 2: RAID MD2 sincronizándose (rebuild)


# mdadm --misc --detail /dev/md2
/dev/md2:
Version : 00.90.00
Creation Time : Tue Nov 7 22:01:16 2006
Raid Level : raid1
Array Size : 240597376 (229.45 GiB 246.37 GB)
Device Size : 240597376 (229.45 GiB 246.37 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 2
Persistence : Superblock is persistent

Update Time : Wed Nov 8 16:06:43 2006
State : active, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1

Rebuild Status : 0% complete

UUID : e8754328:26f28599:8b834aba:ade37773
Events : 0.10

Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 spare /dev/sdb2


Sincronizar el RAID sin cambiar el disco


En el caso de que el sistema RAID sufra una sobrecarga, es posible que se quede degradado sin que haya fallado ningún disco.

En este caso, es posible agregar las particiones que faltan directamente, sin necesidad de cambiar el disco.


Añadir particiones nuevas

Para sincronizar el RAID, es necesario añadir las particiones del disco ausente (removed) al RAID degradado.

Hay que ir partición por partición, añadiendo el disco al disco RAID mdX correspondiente.


Para añadir una partición de datos X al RAID, utilizamos la opción "--add".


# mdadm /dev/mdX --manage --add /dev/discoNuevoX


Nota : Si tiene varias particiones definidas en RAID (md1, md2, md3...) deberá verificar el estado del RAID para cada partición de RAID y lanzar una reconstrucción para cada una de ellas.



Ejemplo :

Por ejemplo, si está ausente el disco sdb, para añadir las particiones /dev/sdb1 y /dev/sdb2 a los RAID md1 y md2 correspondientes :


# mdadm /dev/md1 --manage --add /dev/sdb1
mdadm: hot added /dev/sdb1

# mdadm /dev/md2 --manage --add /dev/sdb2
mdadm: hot added /dev/sdb1



Si la sincronización no fuera posible, significa que es necesario realizar un cambio de disco previo.
Si es posible anote el nombre del disco (Por ejemplo sda o sdb) y el número de serie.

A continuación abra un tiquet de incidente para solicitar el cambio, siguiendo la guía : NivelesSoporte

Nota : El cambio de disco necesita un reinicio de su servidor por parte de los administradores, deberá indicar que tiene una copia de seguridad previa o bien que su RAID soft está sincronizado. Dicha operación llevará una media de 15-20 minutos.



Sincronizar el RAID tras una sustitución de disco


En el caso de que un disco del RAID sufra un fallo y sea necesario sustituirlo, es necesario sincronizar
el RAID posteriormente.

Recomendamos realizar dicha operación en ModoRescue para evitar que se produzcan modificaciones en los datos almacenados en los discos al mismo tiempo que se produce la sincronización.


Verificación de particiones

Todos los discos del RAID (generalmente sda y sdb) deben tener las mismas particiones.

Para verificar si sus discos tienen particiones introduzca el comando

# fdisk -l



Nota : En el caso de que su servidor acabe de sufrir un cambio de disco, el nuevo disco se entrega sin el RAID configurado y el nuevo disco no contiene ninguna partición.





Redefinir particiones en disco nuevo

En el caso que uno de los discos no tenga partición alguna, hay que copiar la tabla de particiones, del disco intacto que tiene las particiones y los datos, hacia el nuevo disco.

Deberá definir las particiones a partir de uno de los discos que siguen en línea.

Para ello puede utilizar el comando sfdisk :


# sfdisk -d /dev/disco_origen | sfdisk -f /dev/disco_destino




Ejemplos :

En el caso de un cambio de SDA (sda vacío) :

# sfdisk -d /dev/sdb | sfdisk -f /dev/sda



En el caso de un cambio de SDB (sdb vacío) :


# sfdisk -d /dev/sda | sfdisk -f /dev/sdb



Si el servidor tiene GPT con RAID software usted tiene que reemplazar:


# sfdisk -d /dev/sdb | sfdisk /dev/sda

por

# sgdisk -R =/dev/sda /dev/sdb


y en consecuencia reemplazar:


# sfdisk -d /dev/sda | sfdisk /dev/sdb

por

# sgdisk -R =/dev/sdb /dev/sda




Una vez terminada la creación de particiones, podemos proceder a verificar el estado del RAID y en su caso, añadirlas al RAID a través de MDADM según se indica en los pasos siguientes.

Nota : Si tiene varias particiones definidas en RAID (md1, md2, md3...) deberá verificar el estado del RAID para cada partición de RAID y lanzar una reconstrucción para cada una de ellas.




Añadir particiones nuevas

A continuación, es necesario añadir las particiones del disco ausente (removed) al RAID degradado.

Hay que ir partición por partición, añadiendo el disco al disco RAID mdX correspondiente.


Para añadir una partición de datos X al RAID, utilizamos la opción "--add".


# mdadm /dev/mdX --manage --add /dev/discoNuevoX


Nota : Si tiene varias particiones definidas en RAID (md1, md2, md3...) deberá verificar el estado del RAID para cada partición de RAID y lanzar una reconstrucción para cada una de ellas.



Ejemplo :

Por ejemplo, si se ha cambiado el disco sdb, para añadir las particiones /dev/sdb1 y /dev/sdb2 a los RAID md1 y md2 correspondientes :


# mdadm /dev/md1 --manage --add /dev/sdb1
mdadm: hot added /dev/sdb1

# mdadm /dev/md2 --manage --add /dev/sdb2
mdadm: hot added /dev/sdb1




Añadir SWAP

Esta operación no puede realizarse en modo Rescue, el servidor debe estar arrancado de forma normal.

Para añadir una partición de intercambio swap utilizamos el comando mkswap.


# mkswap /dev/disco_swap_ausente

# swapon -a



Por ejemplo para añadir la partición sdb3 al swap del sistema :


# mkswap /dev/sdb3

# swapon -a



Ejemplo, Reconstruir RAID1 con disco sdb nuevo


He aquí un ejemplo completo paso a paso, de los comandos, para añadir el disco sdb que acaba de fallar, al RAID1 ya existente.
En este caso, el disco sdb ha sido sustituido por uno nuevo.

Paso 1. Verificación de las particiones

Primero verificamos las particiones de los discos.
En nuestro ejemplo, las particiones están en el disco sda, son las siguientes :


# fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0005e2bb

Device Boot Start End Blocks Id System
/dev/sda1 * 1 2550 20480000 fd Linux raid autodetect
/dev/sda2 2550 92408 720759808 fd Linux raid autodetect
/dev/sda3 92408 92536 1024000 82 Linux swap / Solaris


Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00077ac7

Device Boot Start End Blocks Id System




Como podemos ver, el disco sdb está vacío. Copiamos las particiones con el comando sfdisk.


# sfdisk -d /dev/sda | sfdisk /dev/sdb



A continuación, reconstruimos los RAID presentes con las particiones ausentes (sdb1 y sdb2) y reasignamos la swap sobre sdb3.


Paso 2. Reconstrucción del RAID md1


Luego añadimos el disco sdb1 en el RAID en modo degradado md1:


# mdadm /dev/md1 --manage --add /dev/sdb1
mdadm: hot added /dev/sdb1



El RAID en reconstrucción :


# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5]
read_ahead 1024 sectors
md1 : active raid1 sdb1[2] sda1[0]
3068288 blocks [2/1] [U_]
[=>...................] recovery = 5.4% (167028/3068288) finish=0.8min speed=55676K/sec
md2 : active raid1 sda2[0]
240597376 blocks [2/1] [U_]



Al cabo de algunos minutos, la reconstrucción termina :


# mdadm --misc --detail /dev/md1
/dev/md1:
Version : 00.90.00
Creation Time : Tue Nov 7 22:01:16 2006
Raid Level : raid1
Array Size : 3068288 (2.93 GiB 3.14 GB)
Device Size : 3068288 (2.93 GiB 3.14 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Wed Nov 8 16:01:02 2006
State : active
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : 4a9a446d:af55e24b:b311aa61:8dc74ed4
Events : 0.14

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



Paso 3. Reconstrucción del RAID md2

Por último se repite el proceso con el RAID md2 :


# mdadm /dev/md2 --manage --add /dev/sdb2
mdadm: hot added /dev/sdb2


La reconstrucción en curso:


# mdadm --misc --detail /dev/md2
/dev/md2:
Version : 00.90.00
Creation Time : Tue Nov 7 22:01:16 2006
Raid Level : raid1
Array Size : 240597376 (229.45 GiB 246.37 GB)
Device Size : 240597376 (229.45 GiB 246.37 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 2
Persistence : Superblock is persistent

Update Time : Wed Nov 8 16:06:43 2006
State : active, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1

Rebuild Status : 0% complete

UUID : e8754328:26f28599:8b834aba:ade37773
Events : 0.10

Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 spare /dev/sdb2


# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5]
read_ahead 1024 sectors
md1 : active raid1 sdb1[1] sda1[0]
3068288 blocks [2/2] [UU]

md2 : active raid1 sdb2[2] sda2[0]
240597376 blocks [2/1] [U_]
[>....................] recovery = 0.2% (655104/240597376) finish=73.2min speed=54592K/sec
unused devices:



Paso 4. Verificar el tamaño de SWAP

Por último hay que verificar el tamaño del espacio de intercambio swap.

En nuestro ejemplo las particiones sda3 y sdb3 están definidas como la partición de SWAP.


# cat /proc/swaps

Filename Type Size Used Priority
/dev/sda3 partition 522104 43984 -1



Deberá por tanto añadir el swap al disco que acaba de añadir al RAID (/dev/sdb3 en nuestro ejemplo).


# mkswap /dev/sdb3

# swapon -a



Puede verificar con el comando "free" que todo el espacio de intercambio está de nuevo activo.


# free
total used free shared buffers cached
Mem: 767740 755676 12064 0 24952 239392
-/+ buffers/cache: 491332 276408
Swap: 522104 43984 437420



Ensamblar un RAID no activo


En el caso que un RAID comporte más de 2 discos, es posible que al iniciarse se quede inactivo.

Por ejemplo si falla md3 :


# mdadm --misc --detail /dev/md3
/dev/md3: is an md device which is not active

# mdadm -R /dev/md3
mdadm: failed to run array /dev/md3: Invalid argument



En este caso, no es posible activarlo de forma automática, luego habrá que verificar manualmente las particiones que forman el RAID y ensamblarlo manualmente.


Procedimiento de ensamblado manual

Previamente debemos chequear las particiones que están bien con la opción "--examine"

Por ejemplo para la partición "sda3" :

# mdadm --examine /dev/sda3
/dev/sda3:
Magic : a92b4efc
Version : 00.90.00
UUID : 7deceb3e:ea8c5e13:b50259b0:50d96b37
Creation Time : Tue Dec 15 20:56:29 2009
Raid Level : raid5
Used Dev Size : 0
Raid Devices : 4
Total Devices : 4
Preferred Minor : 4

Update Time : Mon Sep 6 21:00:01 2010
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Checksum : af2e82c8 - correct
Events : 9



En este caso, la partición del disco sda, está correcta. Al tener un RAID5 de 4 discos/particiones, si nos han cambiado un disco, habría que iniciar la el RAID de la partición md3, sólo con 3 discos/particiones.

Repetimos la operación "--examine" con el resto de discos/particiones del RAID (sdb3, sdc3 y sdd3) del RAID para saber qué discos están correctos. Si tres de los discos/particiones están correctos, es posible ensamblar con los discos/particiones restantes (correctos) con la opción "--assemble".

En nuestro ejemplo el md3, un RAID5 de 4 discos, nos ha fallado y nos han cambiado el disco sdb. Luego por tanto, la partición /dev/sdb3 no está activa y es necesario reiniciar el RAID md3 con las 3 particiones correctas restantes (sda3, sdc3 y sdd3) con el comando :


# mdadm --stop /dev/md3

# mdadm --assemble --force /dev/md3 /dev/sd[acd]3


Nota : Cambie el valor sd[acd]3 por las particiones correctas en su caso.



Una vez que el RAID /dev/md3 esté activo, podemos añadir el disco nuevo (sdb3) al RAID (md3) según el procedimiento anterior "Añadir un disco en modo degradado".


# mdadm /dev/md3 --manage --add /dev/sdb3
mdadm: hot added /dev/sdb3



Antes de volver a montar el disco/partición afectado, es conveniente hacer un chequeo de la partición.

# fsck /dev/md3
[....]

# mount /dev/md3



Reiniciar un RAID irrecuperable


Si el RAID que teníamos es irrecuperable (por ejemplo un RAID 0) :


# mdadm --misc --detail /dev/md4
/dev/md4: is an md device which is not active

# mdadm -R /dev/md4
mdadm: /dev/md4 assembled from 1 drive - not enough to start the array.


# mdadm --examine /dev/sda4
/dev/sda3:
Magic : a92b4efc
Version : 00.90.00
UUID : 7deceb3e:ea8c5e13:b50259b0:50d96b37
Creation Time : Tue Dec 15 20:56:29 2009
Raid Level : raid0
Used Dev Size : 0
Raid Devices : 2
Total Devices : 1
Preferred Minor : 1

Update Time : Mon Sep 6 21:00:01 2010
State : active
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Checksum : af2e82c8 - correct
Events : 9



podemos eliminar el RAID existente y volver a crear uno nuevo. Para ello utilizamos la opción "--create".

ADVERTENCIA /!\ : Esta operación hará que pierda una gran parte de los datos del disco. El RAID en modo 0 no garantiza los datos. Asegúrese de contar con una copia de seguridad de dichos datos antes de continuar.


Por ejemplo si perdemos el RAID md4 por estar en RAID 0, basta con volver a crearlo a partir de las particiones de origen (sda4 y sdb4 en nuestro ejemplo) con los comandos :


# mdadm --stop /dev/md4

# mdadm --create /dev/md4 --chunk=64 --level=raid0 --raid-devices=2 /dev/sda4 /dev/sdb4



Antes de volver a montar el disco/partición afectado, es conveniente hacer un chequeo de la partición.

# fsck /dev/md4
[....]

# mount /dev/md4




Más información
: WindowsReconstruirRaidSoft :: Verificar y reconstruir el RAID Software en Windows
: LinuxRaidSoftRaid0 :: RAID 0/1 con Raid por Software en Linux
: WindowsRaid0 :: RAID 0/1 con Raid por Software en Windows

: ReconstruirRaid :: Verificar y reconstruir el RAID Hardware 3ware
: LinuxRaid0 :: RAID 0/1 con Raid por Hardware 3ware

: ReconstruirRaidLsi :: Verificar y reconstruir el RAID Hardware LSI