RAID 5 + LVM2

Buenas,

El caso es que tengo 4 hdd's montados en raid 5 con el softraid de Linux (Centos 5).
Ayer perdí un disco y el array quedó degradado, revisé cableado y resultó que un cable sata estaba mal conectado.
Lo ajusté y al arrancar me decidí a reconstruir el array. Ejecuté el comando mdadm /dev/md2 --add /dev/sdd1, y comenzó a reconstruir.
La putada llegó cuando reconstruyendo el array en el messages empezaron a salir errores de otros de los discos y ahí cagada, porque ví que no reconstruia.
Apagué la máquina y al rebotar no montaba los filesystems porque el /dev/md2 ya no estaba OK, estaba inactivo.
Entré en modo rescue y edité el fstab para que no montase ese dispositivo. Después hice un mdadm --examine --scan de los dispositivos que formaban el array y me dió un UUID. Esto lo puse en /etc/mdadm.conf y al intentar arrancar el array /dev/md2 me dice que está inactivo.

Entiendo que la situación es que 2 discos están OK, otro está en estado OK pero no se da cuenta y el cuarto es el que está degradado de verdad.
En el momento de la petada, se estaban leyendo de 3 discos y recuperando en el cuarto, por lo que el disco que falló aunque quedó fuera del array debería estár igual que los otros dos.

Se puede hacer algo para reconstruirlo?
No recuerdo muy bien como funcionaba esto de las raid, pero diria que cada bloque de paridad no es capaz de arreglar 2 efallos de disco simultaneo, entonces ese disco que dices que esta OK, y el dice que no. debe tener un fallo en el bloque igual que el que no esta OK.

yo primero comprobaria que es lo que le pasa al inactivo y segun el resultado Yo haria una copia de seguridad de todo lo que se pudiese salvar y finalmente formatear e instalar todo.

datos extra:
luego la fiablidad de un disco son unas 50.000 horas, a medida que hay mas discos el tiempo de fiablidad diminuye de tal manera que

tiempofiabilidad = 1/numero discos

entonces si tienes 4 discos entonces el tiempo de fiabilidad es de unas 12500 horas (no llega al año y medio)
Realmente no ha sido un fallo de 2 discos simultaneos. Es decir mientras se reconstruia el 4 disco apartir de los otros 3, uno de los tres dió errores de i/o. Teóricamente no se estaban haciendo operaciones de escritura en los 3 discos sanos, pero el estado final del array es 2 hdd's OK + 1 descono + 1 mal.

Mi pregunta es, podría intentar iniciar el array sólo con 3 discos y comprobar que los 3 están ok para luego reconstruir con el 4º?
Osea forzar un chequeo del array con 3 discos.

Saludos
no, ya que el 4 disco (que no pondrias) tiene informacion para comprobar el estado del desconocido, y sin este pues no se podria hacer
Diría que no, en un raid 5 con 4 discos se reparten bits de paridad sobre 4 discos pero con los bits de 3 podrías recuperar el array entero, si no qué gracia tiene? Es decir, tu tiene 4 discos en raid 5 y se te muere uno, compras uno nuevo lo añades al array y se reconstruye con la info de los otros 3.

El tema es que yo tengo 3 disco sanos y uno malo, pero por un tema de corriente el estado de los discos ha quedado mal. En cada disco hay metadatos del estado del array. Si miro uno a uno puedo ver como está el array y cada disco. Pues bien si miro eso, en dos discos veo que el array está degraded, que lo forman 4 disco pero 2 están out, en los otros dos veo que está degraded pero que sólo un disco está out. Por lo que cada disco ve a los otros de forma diferente.

Necesitaría chequear el estado del array apartir de los 3 disco sanos, sin importar el estado de todos los discos, y después si todo va bien, añadir el cuarto para la reconstrucción.

Saludos
lo que dices es cierto, pero el problema es que no tienes solo uno malo, sino que hay otro disco que te dice desconocido

si este ultimo estuviese bien entonces no habría problemas para recuperar el que falla, y lo que digo es que si arrancas con 3 discos y el cuarto desconectado, no podrias solucionar el disco desconocido para poder arreglar el que falla.

y con dos outs un raid5 no lo puede solucionar, seria necesario un raid6(no te lo recomiendo si tienes 4 discos)
igualmente el cuarto disco no está muerto, de hecho veo toda la metada.
no hace falta que este muerto, simplemente con que tenga un bloque con error ya es un fallo, por eso decia que dos discos deben de tener el mismo bloque defectuoso.

Otra de las gracias de un RAID5 (2? 3 4 6) es que no solo sirve para remplazar un disco y recuperarlo todo, sino que si una parte de un disco falla se puede recuperar si las mismas partes de los otros discos estan bien.

mi punto de vista es:
-tienes dos discos OK
-otro OUT
-y un cuarto que tiene un bloque OUT, pero lo demas OK.

entonces para cada bloque quieres arreglar es necesario que los bloques de los otros discos para la paridad han de estar OK.

LEYENDA
O -> OK
P -> byte de paridad (supondremos que estan correctos
F -> FAIL

Disco1: ...POOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPO...
Disco2: ...OPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOP...
Disco3: ...OOPOOOPOOOPOOOPOFOPOOOPOOOPOOOPOOOPOOOPOOO...
Disco4: ...FFFPFFFPFFFPFFFPFFFPFFFPFFFPFFFPFFFPFFFPFFF...

esto seria un ejemplo de lo que te puede pasar, en este caso el disco3 esta bien pero tiene en el bloque 17 un FAIL, y en el disco 4 tambien, entonces si se solucionase en un RAID5 quedaria

Disco1: ...POOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPO...
Disco2: ...OPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOPOOOP...
Disco3: ...OOPOOOPOOOPOOOPOFOPOOOPOOOPOOOPOOOPOOOPOOO...
Disco4: ...OOOPOOOPOOOPOOOPFOOPOOOPOOOPOOOPOOOPOOOPOO...

Como ese bloque esta defectuoso en dos sitios, detecta el error pero no puede solucionarlo
Bueno, pues casi un mes después de que se fuera a tomar por ..lo mi raid 5 con 4 discos, finalmente he podido recuperarlo de manera integra.
Increible!!!! Os dejo el link de la web donde explica como hacerlo, también explica la situación antes del "caticlismo".
Para que os hagais una idea, yo había perdido 2 de 4 discos, uno de ellos por fallo de electricidad y el otro por fallo de i/o mientras el raid hacía el recovery.

http://kevin.deldycke.com/2008/07/heroic-journey-to-raid-5-data-recovery/

Saludos
8 respuestas