Permítanme reconocer en primer lugar que he cometido errores y que tengo una copia de seguridad para la mayoría de los datos de este RAID, pero no para todos . Todavía tengo la esperanza de recuperar el resto de los datos. No tengo el dinero para llevar los discos a una empresa experta en recuperación.
Error # 0, no tener una copia de seguridad del 100%. Lo sé.
Tengo un mdadm
sistema RAID5 de 4x3TB. Drives / dev / sd [be], todos con una partición /dev/sd[b-e]1
. Soy consciente de que RAID5 en unidades muy grandes es arriesgado, pero lo hice de todos modos.
Eventos recientes
El RAID se degrada después de una falla de dos unidades. Una unidad [/ dev / sdc] realmente desapareció, la otra [/ dev / sde] volvió a funcionar después de un ciclo de encendido, pero no se volvió a agregar automáticamente al RAID. Así que me quedé con un RAID de 4 dispositivos con solo 2 unidades activas [/ dev / sdb y / dev / sdd].
Error # 1, no utilizar copias dd de las unidades para restaurar el RAID. No tenía los discos ni el tiempo. Error # 2, no hacer una copia de seguridad del superbloque y mdadm -E
de las unidades restantes.
Intento de recuperación
Remonté el RAID en modo degradado con
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Entonces podría acceder a mis datos. Lo reemplacé /dev/sdc
con un repuesto; vacío; unidad idéntica
Quité el viejo /dev/sdc1
del RAID
mdadm --fail /dev/md0 /dev/sdc1
Error # 3, no hacer esto antes de reemplazar la unidad
Luego particioné el nuevo /dev/sdc
y lo agregué al RAID.
mdadm --add /dev/md0 /dev/sdc1
Luego comenzó a restaurar el RAID. ETA 300 min. Seguí el proceso /proc/mdstat
hasta el 2% y luego fui a hacer otras cosas.
Comprobando el resultado
Varias horas (pero menos de 300 minutos) más tarde, verifiqué el proceso. Se había detenido debido a un error de lectura /dev/sde1
.
Aquí es donde realmente comienza el problema
Luego lo eliminé /dev/sde1
del RAID y lo volví a agregar. No recuerdo por qué hice esto; era tarde.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Sin embargo, /dev/sde1
ahora estaba marcado como de repuesto. Así que decidí recrear toda la matriz usando --assume-clean usando lo que pensé que era el orden correcto y con la /dev/sdc1
falta.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Eso funcionó, pero el sistema de archivos no fue reconocido al intentar montar. (Debería haber sido EXT4).
Orden del dispositivo
Luego verifiqué una copia de seguridad reciente que tenía /proc/mdstat
y encontré el orden de la unidad.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Entonces recordé que este RAID había sufrido una pérdida de unidad hace aproximadamente un año, y me recuperé reemplazando la unidad defectuosa por una de repuesto. Eso puede haber codificado un poco el orden del dispositivo ... así que no había unidad [3] sino solo [0], [1], [2] y [4].
Traté de encontrar el orden de la unidad con el script Permute_array: https://raid.wiki.kernel.org/index.php/Permute_array.pl pero no encontré el orden correcto.
Preguntas
Ahora tengo dos preguntas principales:
Arruiné todos los superbloques en las unidades, pero solo di:
mdadm --create --assume-clean
comandos (por lo que no debería haber sobrescrito los datos en sí
/dev/sd[bde]1
. ¿Tengo razón en que, en teoría, el RAID se puede restaurar [suponiendo por un momento que/dev/sde1
está bien] si solo encuentro el orden correcto del dispositivo?¿Es importante que
/dev/sde1
se le dé el número de dispositivo [4] en el RAID? Cuando lo creo conmdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
se le asigna el número [3]. Me pregunto si eso es relevante para el cálculo de los bloques de paridad. Si resulta ser importante, ¿cómo puedo recrear la matriz con la
/dev/sdb1[0]
falta [1]/dev/sdd1[2]
/dev/sde1[4]
? Si pudiera hacer que eso funcione, podría iniciarlo en modo degradado y agregar la nueva unidad/dev/sdc1
y dejar que se vuelva a sincronizar.
Está bien si quisieras señalarme que este puede no haber sido el mejor curso de acción, pero verás que me di cuenta de esto. Sería genial si alguien tiene alguna sugerencia.
fuente
Respuestas:
Para responder tu pregunta,
¿Se puede restaurar?
Como sdc es nuevo, continuaría intentando ensamblar manualmente a través de la cláusula faltante, y sí, sde debe estar en el orden correcto para que se ensamble en modo degradado. Una vez que encuentre el diseño correcto, copie todos los datos de la matriz y comience nuevamente, documentando el diseño (para que no vuelva a encontrarse con este problema).
Buena suerte
fuente
Antes de hacer NADA más, capture un 'mdadm --examine / dev / sdX1' para cada una de las unidades que estaban en su matriz, y un 'mdadm --detail / dev / md0' a partir de eso, debería poder determinar El diseño exacto.
Solo tuve que hacer esto yo mismo para recuperar una matriz de Synology en una pregunta separada:
¿Cómo recuperar una matriz mdadm en Synology NAS con la unidad en estado "E"?
Editar: Lo siento, acabo de ver que dijiste que perdiste los superbloques en todas las unidades.
Sus comandos posteriores LOOK correcto. La opción más simple podría ser ejecutar las creaciones con cada pedido posible, y luego ver si puede montar y acceder al sistema de archivos en ellas de solo lectura.
fuente
Esta pregunta es antigua y estoy seguro de que nadie puede ayudarte ahora, pero para otros que leen:
el error más peligroso que cometiste no es uno que numeraste, que era ejecutar:
en los discos originales, antes de estar preparado para saber qué hacer. Esto ha sobrescrito los metadatos, por lo que no tiene registro del orden de la unidad, el desplazamiento de datos, el tamaño del fragmento, etc.
Para recuperarse de esto, debe sobrescribirlos nuevamente con los valores correctos. La forma más fácil de saber esto es mirar los metadatos, pero eso ya lo destruiste. La siguiente forma es adivinar. Adivina las diferentes combinaciones de un comando como este, con diferentes valores para cualquiera de las opciones, excepto lo que sabes (4 dispositivos, nivel 5), y también un orden de disco diferente:
Pero dado que NO conoce el resultado correcto, nuevamente, no debe ejecutarlo en los discos antiguos destruyéndolos aún más, cometiendo el mismo error fatal. En su lugar, use una superposición; Por ejemplo, este procedimiento debería funcionar para mantener seguros los originales.
Una vez que haya encontrado algunos argumentos que producen una matriz de trabajo que puede fsck o montar y verificar (por ejemplo, verifique la suma de comprobación de un archivo lo suficientemente grande como para abarcar todos los miembros de la banda como un iso que debería haber almacenado con su suma de comprobación / pgp firma, o descomprimir -t o gunzip -ta archivo grande)
fuente