|
Buscar |
Verificar y reconstruir el RAID Software en LinuxEsta 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. 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.rpmRetrieving ftp://ftp.ovh.net/made-in-ovh/sources/mdadm-2.5.5p1-1.i386.rpmPreparing... ########################################### [100%] 1:mdadm ########################################### [100%] Si utiliza otra distribución, deberá instalarlo a través de los repositorios de dicha distribució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 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 /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 State0 8 1 0 active sync /dev/sda1 1 0 0 1 removed
Para verificar si sus discos tienen particiones introduzca el comando # fdisk -l Todos los discos del RAID (generalmente sda y sdb) deben tener las mismas particiones.
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 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.
Si el RAID está degradado deberemos añadir el disco ausente (removed). Hay que ir partición por partición, añadiendo el disco al disco RAID mdX correspondiente. Añadir partición de datos Para añadir un disco de datos al RAID, utilizamos la opción "--add". # mdadm /dev/discoRAID --manage --add /dev/disco_ausente
Ejemplo : Por ejemplo para añadir sdb1 y 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 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 He aquí un ejemplo completo 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. Verificar particiones Primero verificamos las particiones de los discos. En nuestro ejemplo, las particiones 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/sda3 2550 92408 720759808 fd Linux raid autodetect /dev/sda2 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. Reconstruimos el 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 State0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 Reconstruimos el RAID md2 Vamos a repetir 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 State0 8 2 0 active sync /dev/sda2 1 0 0 1 removed 2 8 18 2 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: Verificar el tamaño de SWAP Por último deberá 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 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 --assemble --force /dev/md3 /dev/sd[acd]3
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 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".
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 : 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 |