Un raid5 esta formado por un mínimo de tres discos duros, en uno de los cuales se almacenan los datos de paridad y en el resto de discos se distribuyen los datos. Esta estructura proporciona mayor velocidad de lectura/escritura y redundancia, permitiendo un fallo de un disco sin pérdida de datos. ¿Pero que ocurre ante un fallo -no físico- en dos discos de un raid5? En la mayoría de casos supondrá la perdida total de datos, en otros, con suerte, podrá recuperar los datos. En esta entrada se verá como, en determinadas circunstancias, se pueden recuperar los datos de un raid5 -de tres discos- tras un fallo en dos discos.
1.- El problema
Tras detectar que el raid5 dejó de funcionar, lo primero que hice fue revisar el buffer de mensajes del núcleo mediante dmesg. Y lo que encontré fue lo que ningún usuario de un raid5 quiere encontrar, un fallo en dos de tres discos del raid5:
[45654.643107] md/raid:md0: Disk failure on sdc1, disabling device. [45654.643108] md/raid:md0: Operation continuing on 2 devices. [45654.643115] md/raid:md0: Disk failure on sdd1, disabling device. [45654.643115] md/raid:md0: Operation continuing on 1 devices.Detuve todos los servicios y reinicie el PC en nivel monousuario. Tal y como temía el raid no levantó.
agd-desktop # mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Sep 22 17:02:27 2010 Raid Level : raid5 Array Size : 2930060288 (2794.32 GiB 3000.38 GB) Used Dev Size : 1465030144 (1397.16 GiB 1500.19 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Wed Sep 28 02:11:56 2011 State : clean, FAILED Active Devices : 1 Working Devices : 1 Failed Devices : 2 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Name : agd-desktop:0 (local to host agd-desktop) UUID : 2b33bce9:f30571d8:efe03c61:898a4e57 Events : 441 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 81 1 active sync /dev/sdf1 2 0 0 2 removed 3 8 33 - faulty spare /dev/sdc1 4 8 49 - faulty spare /dev/sdd1El problema debía ser lógico, ya que los discos duros funcionan bien. Por ello comencé a buscar el origen del problema con la esperanza de recuperar los casi 3TB de datos que había en el raid5. Los logs no habían registrado nada. Pero al analizar la salida de mdadm --examine de las unidades del raid, encontré algo raro:
agd-desktop # mdadm --examine /dev/sd[c,d,f]1 /dev/sdc1: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : 2b33bce9:f30571d8:efe03c61:898a4e57 Name : agd-desktop:0 (local to host agd-desktop) Creation Time : Wed Sep 22 17:02:27 2010 Raid Level : raid5 Raid Devices : 3 Avail Dev Size : 2930061109 (1397.16 GiB 1500.19 GB) Array Size : 5860120576 (2794.32 GiB 3000.38 GB) Used Dev Size : 2930060288 (1397.16 GiB 1500.19 GB) Data Offset : 2048 sectors Super Offset : 8 sectors State : clean Device UUID : 29f6b0d9:7a970ca6:3508db7b:f4b1af2b Update Time : Tue Sep 27 01:47:16 2011 Checksum : 16200b11 - correct Events : 432 Layout : left-symmetric Chunk Size : 512K Device Role : Active device 2 Array State : AAA ('A' == active, '.' == missing) /dev/sdd1: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : 2b33bce9:f30571d8:efe03c61:898a4e57 Name : agd-desktop:0 (local to host agd-desktop) Creation Time : Wed Sep 22 17:02:27 2010 Raid Level : raid5 Raid Devices : 3 Avail Dev Size : 2930061109 (1397.16 GiB 1500.19 GB) Array Size : 5860120576 (2794.32 GiB 3000.38 GB) Used Dev Size : 2930060288 (1397.16 GiB 1500.19 GB) Data Offset : 2048 sectors Super Offset : 8 sectors State : clean Device UUID : f60a260f:2d97a646:746c8b79:77c3bbc7 Update Time : Tue Sep 27 01:47:16 2011 Checksum : 85eb9553 - correct Events : 432 Layout : left-symmetric Chunk Size : 512K Device Role : Active device 0 Array State : AAA ('A' == active, '.' == missing) /dev/sdf1: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : 2b33bce9:f30571d8:efe03c61:898a4e57 Name : agd-desktop:0 (local to host agd-desktop) Creation Time : Wed Sep 22 17:02:27 2010 Raid Level : raid5 Raid Devices : 3 Avail Dev Size : 2930061109 (1397.16 GiB 1500.19 GB) Array Size : 5860120576 (2794.32 GiB 3000.38 GB) Used Dev Size : 2930060288 (1397.16 GiB 1500.19 GB) Data Offset : 2048 sectors Super Offset : 8 sectors State : clean Device UUID : 62b27e87:5d8c5c9a:6aa8af8e:30f4e6c2 Update Time : Wed Sep 28 02:15:01 2011 Checksum : 6247f6a9 - correct Events : 445 Layout : left-symmetric Chunk Size : 512K Device Role : Active device 1 Array State : .A. ('A' == active, '.' == missing)Si, exacto, los discos del raid se han desincronizado. De hecho es curioso porque los discos /dev/sdc1 y /dev/sdd1 se han quedado en el pasado y creen que el raid sigue activo (Array State : AAA); mientras que /dev/sdf1 ha avanzado en el tiempo y ha detectado que faltan dos discos (Array State : .A.). Aunque la forma más clara de ver todo esto es mirando las fechas de actualización de cada unidad del raid:
agd-desktop # mdadm --examine /dev/sd[c,d,f]1 | grep "Update Time" Update Time : Tue Sep 27 01:47:16 2011 Update Time : Tue Sep 27 01:47:16 2011 Update Time : Wed Sep 28 02:15:01 2011
2.- La solución
A partir de aquí es recomendable trabajar sobre copias de los discos originalesEl problema radica en una desincronización en las actualizaciones de las unidades del raid. Por ello es lógico suponer que no existen desincronización en los datos. Si este es el caso, se podría forzar el montaje del raid asumiendo que todas las unidades están limpias. En mi caso, y ante la duda de que haría el kernel con las fechas de actualización de cada disco, opte por reensamblar el raid forzando las unidades sdc1 y sdd1 como limpias.
agd-desktop # mdadm --assemble --force /dev/md0 /dev/sdc1 /dev/sdd1 mdadm: /dev/md0 has been started with 2 drives (out of 3). agd-desktop # mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Sep 22 17:02:27 2010 Raid Level : raid5 Array Size : 2930060288 (2794.32 GiB 3000.38 GB) Used Dev Size : 1465030144 (1397.16 GiB 1500.19 GB) Raid Devices : 3 Total Devices : 2 Persistence : Superblock is persistent Update Time : Wed Sep 28 02:45:28 2011 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Name : agd-desktop:0 (local to host agd-desktop) UUID : 2b33bce9:f30571d8:efe03c61:898a4e57 Events : 440 Number Major Minor RaidDevice State 4 8 49 0 active sync /dev/sdd1 1 0 0 1 removed 3 8 33 2 active sync /dev/sdc1 agd-desktop # mount /dev/md0 /mnt/Tras comprobar que ha funcionado, y que hemos recuperado toda la información, tan solo nos quedaría añadir la siguiente unidad al raid y esperar a que se sincronice.
agd-desktop # mdadm --add /dev/md0 /dev/sdf1 mdadm: re-added /dev/sdf1 agd-desktop # mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Sep 22 17:02:27 2010 Raid Level : raid5 Array Size : 2930060288 (2794.32 GiB 3000.38 GB) Used Dev Size : 1465030144 (1397.16 GiB 1500.19 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Wed Sep 28 02:47:50 2011 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Rebuild Status : 0% complete Name : agd-desktop:0 (local to host agd-desktop) UUID : 2b33bce9:f30571d8:efe03c61:898a4e57 Events : 444 Number Major Minor RaidDevice State 4 8 49 0 active sync /dev/sdd1 1 8 81 1 spare rebuilding /dev/sdf1 3 8 33 2 active sync /dev/sdc1El proceso de reconstrucción puede ser controlado mediante watch cat /proc/mdstat:
agd-desktop # watch cat /proc/mdstat Every 2,0s: cat /proc/mdstat Wed Sep 28 02:49:25 2011 Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdf1[1] sdd1[4] sdc1[3] 2930060288 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U] [>....................] recovery = 0.5% (8258560/1465030144) finish=275. 5min speed=88116K/sec unused devices:
1 comentarios:
#-
Jorge Lizon
dijo...
-
-
lunes, 11 de abril de 2016, 10:19:00 CEST
estimado amigo, estuve leyendo tu articulo y tengo un problema con unas unidades en raid5, el servidor se cayo de un momento a otro y el sistema operativo se corrompió, lo que hice fue reparar la instalacion de windows 2003 server r2, y pude acceder al SO, pero cuando accedo al administrador de discos, me aparecen los 4 discos, pero no tienen data o por lo menos no es visible para mi... probe asignandoles una letra a las unidades pero al acceder mediante el explorador me pedia que formatee el volumen, cosa que no debo hacer porque la data es muy importante y estoy casi seguro que aun existe...
como puedo reparar el arreglo raid5 de esos 4 discos? hay alguna manera de corregir el arreglo y recuperar la data?
pd. no he realizado ningun cambio en el setup del server, al realizar el cambio el sistema me avisa que si se hace el cambio se perderan los datos, gran detalle por el que no he tocado nada en ese aspecto...
agradezco de antemano tu respuesta
saludos
Jorge Lizon
Publicar un comentario