Saltar al contenido principal
file-recoveryINFO

Recuperación de RAID 1: casi siempre basta con un espejo, y dos comandos destruyen los dos

El RAID 1 es el nivel en el que la recuperación debería ser fácil, porque cada disco guarda una copia completa. Lo que lo arruina no es el fallo, es el comando siguiente. Contra qué advierte el Linux RAID wiki, y por qué la versión de metadatos por defecto hoy impide montar sin más un miembro suelto.

Por Eric Gerard · Editor · Save My Disk8 min de lecturaPhoto via Pixabay

El RAID 1 es el nivel en el que la recuperación debería ser sencilla. No hay paridad que reconstruir, ni orden de bandas que averiguar, y cada disco guarda una copia completa de todo. En la práctica es también el nivel en el que la gente destruye sus propios datos con más ligereza, porque el array sigue pareciendo vivo y el arreglo parece obvio.

Rara vez es el fallo lo que pierde los datos. Es el comando siguiente.

Lo que te da el espejado, y lo único que nunca hizo

El RAID 1 mantiene idénticos dos discos o más. Cada escritura va a cada miembro, así que cualquier miembro por sí solo es una copia íntegra del conjunto. Ese es todo el mecanismo, y por eso las probabilidades de recuperación son buenas.

Es también la razón por la que la protección es más estrecha de lo que se supone. Un borrado es una escritura. También lo es un cifrado por ransomware, un archivo sobrescrito, un guardado corrupto. El espejado los propaga todos a ambos discos a velocidad de máquina, con fidelidad, porque ese es precisamente su trabajo.

El RAID 1 protege de que muera un disco. Nunca ha protegido de nada que llegue a los datos a través del sistema de archivos. Si tus archivos desaparecieron y las unidades están sanas, el array hizo exactamente aquello para lo que fue construido, y ningún conocimiento de RAID los traerá de vuelta. Eso es un problema de recuperación de archivos sobre un espejo, no un problema de RAID.

La regla que decide cómo acaba esto

Antes de cualquier diagnóstico, el Linux RAID wiki da una sola instrucción, y el paréntesis es la parte importante:

no ejecutes ningún comando que vaya a escribir en los discos (como mdadm -C, fsck o incluso mount, etc.).

La mayoría lee esa lista y se detiene en los dos primeros. mount está en ella. Un sistema de archivos con journal reproduce su journal al montarse, lo cual es una escritura, ejecutada antes de que hayas decidido nada. En un array degradado con un miembro que aún no has identificado como bueno, esa escritura puede caer en el peor sitio posible.

La misma página descarta el enfoque que casi todo el mundo adopta bajo presión:

No intentes arreglar las cosas a base de prueba y error, haz que alguien revise las medidas que estás a punto de tomar para recuperar tus datos antes de ponerlas en práctica.

La prueba y error funciona cuando los intentos son gratis. Aquí cada intento puede ser el que elimine la copia que necesitabas.

Tres situaciones, y solo una es difícil

Ha fallado un miembro y el array sigue funcionando. Este es el caso bueno y no merece ningún drama. Tienes una copia completa. Copia tus datos fuera ahora, a otro sitio, antes de hacer nada con el disco averiado. Sustituirlo primero y reconstruir somete a tu única copia superviviente a una lectura de disco completo justo en el momento en que no puedes permitirte un segundo fallo.

Ha muerto la controladora o la máquina y los discos están bien. No se ha perdido nada. Los datos están intactos en cada miembro, y la única pregunta es cómo llegar a ellos, algo que responde más abajo la versión de metadatos.

Los miembros discrepan y no sabes cuál está al día. Este es el único caso realmente difícil, y es un problema de diagnóstico, no de reparación. Todo lo que destruye datos vive aquí.

Una cámara réflex de dos objetivos fotografiada de lado, con sus dos objetivos uno encima del otro.
Una cámara réflex de dos objetivos fotografiada de lado, con sus dos objetivos uno encima del otro.

Dos objetivos de aspecto idéntico, y solo uno está poniendo algo en la película. Saber cuál es cuál es todo el trabajo.

Por qué tu disco suelto parece sin formatear

El consejo que encontrarás en todas partes es que puedes sacar un disco de un espejo y leerlo como una unidad normal. Era cierto, y el valor por defecto cambió.

El manual de mdadm es preciso:

Las distintas subversiones guardan el superbloque en ubicaciones diferentes del dispositivo, ya sea al final (para la 1.0), al principio (para la 1.1) o a 4 KB del principio (para la 1.2).

Lee lo que eso implica. Con la 1.0, el superbloque queda al final, el sistema de archivos empieza en el offset cero, y un miembro suelto sí se comporta como un disco corriente. Con la 1.1 y la 1.2, los metadatos ocupan el principio, así que el sistema de archivos empieza más adentro. Una herramienta que mira el offset cero encuentra metadatos donde esperaba una tabla de particiones, e informa del disco como sin formatear o en bruto.

La 1.2 es el valor por defecto moderno. Así que el resultado más común, en la configuración más común, es un disco que parece vacío y está completamente intacto. La gente que acepta un aviso de formateo en ese momento lo pierde todo, y el disco nunca estuvo dañado. Estaba desplazado.

El comando que se come los arrays

Cuando el ensamblado falla, internet te sugerirá recrear el array con los mismos parámetros. El wiki lo aborda directamente:

La recreación debe considerarse un último recurso, a usar solo cuando todo lo demás falla. La gente que se equivoca en esto es una de las razones principales por las que se pierden datos.

Y explica la trampa que la hace tan implacable:

Usar un mdadm con valores por defecto distintos a los del que se usó originalmente para crear el array hará que el array quede completamente inaccesible.

Los parámetros que importan no son solo los que tecleas. Incluyen los valores por defecto de la versión de mdadm que construyó el array hace años, sobre una distribución que quizá ya no uses. Recrear con los valores por defecto de hoy escribe la disposición de metadatos de hoy encima de la de ayer, y ese desajuste no se arregla volviendo a intentarlo.

--assemble reutiliza lo que ya está en los discos. El manual lo describe como ensamblar los componentes de un array creado previamente en un array activo. Ese es el sentido seguro: lee la descripción existente en lugar de sustituirla. Y cuando ensambles, --readonly existe exactamente para este momento. El manual indica que arrancará el array en solo lectura en lugar de en lectura-escritura como es habitual, sin permitir escrituras en el array, y sin iniciar resincronización, recuperación ni reshape. Una reconstrucción que arranca por su cuenta, antes de que hayas identificado el miembro al día, es justo el modo de fallo del que te estás protegiendo.

Selección editorial
4.5 / 5

Releer los archivos desde la imagen de un espejo

Se aplica a una imagen de disco que ya hayas hecho, o a un miembro que consigas leer. No identifica qué espejo está al día, y no te ayudará antes de que hayas dejado de escribir en el array.

Fundada en 2004Garantía de 30 díasVersión gratuita 2 GB
Ver la oferta

El orden que mantiene abiertas tus opciones

Apaga en lugar de experimentar. Un array degradado al que se deja funcionando es una reconstrucción esperando a arrancar.

Haz una imagen de los dos miembros antes que nada. Del bueno no, de los dos. Clonar un disco es una lectura, así que no te cuesta nada, y cada error posterior pasa a ser reversible. Este único paso es lo que separa una mala tarde de una pérdida definitiva.

Trabaja sobre las copias. Ensambla en solo lectura, monta en solo lectura, recupera desde las imágenes.

Identifica el miembro al día antes de reconstruir, no después. Si ambos discos estuvieron en línea hasta hace poco, compara lo que dicen los metadatos de cada uno. Si no consigues decidirlo, eso es una razón para parar, no una razón para elegir uno.

Reconstruye el último. Una vez que tus datos están en otro sitio del todo, equivocarse no cuesta nada.

La versión corta

El RAID 1 es el nivel más recuperable que existe, porque cada disco es una copia completa y no hay nada que reconstruir. Lo que lo arruina es escribir antes de diagnosticar, y el Linux RAID wiki pone mount en la lista de cosas que escriben.

Si tu disco parece sin formatear después de sacarlo del array, comprueba la versión de metadatos antes de creértelo. Con la 1.1 y la 1.2, los valores por defecto modernos, el sistema de archivos no empieza en el offset cero y el disco está intacto. Y trata la recreación del array como la última cosa que llegues a intentar, porque los valores por defecto que lo construyeron importan tanto como los parámetros que recuerdas.

Haz imagen de los dos discos, ensambla en solo lectura, y reconstruye solo cuando los datos estén a salvo en algún sitio que no sea el array.

La instrucción de no ejecutar comandos que escriban en los discos, mount incluido, la advertencia contra la reparación por prueba y error, la descripción de la recreación como último recurso y la nota sobre valores por defecto distintos de mdadm proceden del Linux RAID wiki. Las ubicaciones del superbloque de metadatos para las versiones 1.0, 1.1 y 1.2, la descripción de --assemble y el comportamiento de --readonly proceden de la página de manual de mdadm. Ambos se comprobaron en el momento de escribir; contrástalo con la versión de mdadm que estés usando. Los enlaces comerciales llevan el atributo rel="sponsored nofollow"; puede aplicarse una comisión de afiliación sin coste adicional para ti.

Guías relacionadas

Selección editorial
4.5 / 5

Recupera tus archivos borrados → EaseUS

Escaneo gratis · archivos borrados, formateados, perdidos · Windows y Mac

Fundada en 2004Garantía de 30 díasVersión gratuita 2 GB
Ver la oferta

Preguntas frecuentes

¿Puedo sacar un disco de un array RAID 1 y leerlo sin más?

Depende por completo de la versión de metadatos, y el valor por defecto moderno juega en tu contra. El manual de mdadm indica que las distintas subversiones guardan el superbloque en ubicaciones diferentes del dispositivo, ya sea al final (para la 1.0), al principio (para la 1.1) o a 4 KB del principio (para la 1.2). Con la 1.0 el superbloque queda al final, así que el sistema de archivos empieza en el offset cero y un miembro suelto se lee a menudo como un disco corriente. Con la 1.1 y la 1.2 el superbloque ocupa el principio, así que el sistema de archivos no empieza donde una herramienta espera, y el disco parece sin formatear. No está dañado. Está desplazado.

¿El RAID 1 me protege de borrar un archivo por accidente?

No, y este es el fallo que la gente sufre de verdad. El espejado significa que ambos discos se mantienen idénticos, así que un borrado se escribe en los dos a la vez. Lo mismo vale para el cifrado por ransomware, un guardado erróneo o un archivo corrupto. El RAID 1 protege de que muera un disco. Nunca ha protegido de nada que tú o tu software le hagáis a los datos, y por eso no sustituye a una copia de seguridad.

¿Debo reconstruir el array antes de recuperar mis datos?

No. Una reconstrucción escribe sobre un miembro, y si has elegido el sentido equivocado sobrescribe la copia buena con la mala. Recupera primero, desde imágenes, y reconstruye después sobre hardware que ya hayas comprobado. El Linux RAID wiki es tajante sobre las escrituras durante la recuperación: no ejecutes ningún comando que vaya a escribir en los discos, y menciona mount entre ellos.

¿Cuál es la diferencia entre --assemble y --create?

Assemble reutiliza los metadatos que ya están en los discos. El manual lo describe como ensamblar los componentes de un array creado previamente en un array activo. Create escribe metadatos nuevos, lo que significa que puede sobrescribir la descripción de tu array existente. El wiki trata la recreación como un último recurso, a usar solo cuando todo lo demás falla, y dice que la gente que se equivoca en esto es una de las razones principales por las que se pierden datos.

¿Necesito software de recuperación RAID para un espejo de dos discos?

A menudo no. El RAID 1 no tiene paridad que reconstruir ni orden de bandas que averiguar, así que en cuanto tienes un miembro legible y el offset correcto, una recuperación de archivos corriente sobre una imagen de ese miembro suele bastar. Recurre a herramientas RAID dedicadas cuando los miembros discrepan y no sabes cuál está al día, que es un problema de diagnóstico más que de reconstrucción.