Saltar al contenido principal
file-recoveryINFO

Recuperación de datos RAID 10: el controlador de Linux no es un RAID 1+0, y la disposición lo decide todo

El RAID 10 pasa por ser el caso fácil: parejas en espejo, se recupera cada pareja como un RAID 1. El controlador md de Linux no funciona así. Admite un número de discos que no es múltiplo del número de copias, ofrece tres disposiciones bajo el mismo número de nivel, y el manual md dice que la supervivencia en el nivel 10 depende de la configuración.

Por Eric Gerard · Editor · Save My Disk9 min de lecturaFoto vía Pexels

El RAID 10 tiene fama de ser el nivel fácil. Sin paridad que reconstruir, sin aritmética de bandas, solo parejas en espejo: se busca la mitad superviviente de cada pareja, se copian los archivos y listo. Esa fama viene de la definición de manual del RAID 1+0.

El controlador md de Linux, sobre el que funcionan la mayoría de las matrices RAID 10 fuera de las controladoras por hardware, no implementa esa definición de manual. Implementa algo más amplio que la contiene. Si su plan de recuperación presupone parejas, puede ser el plan de una matriz que usted no tiene.

El nombre promete parejas, el controlador no las exige

El manual md abre la sección tal como todo el mundo espera. Describe el RAID10 como una combinación: « a combination of RAID1 and RAID0, and is sometimes known as RAID1+0 », y añade que « every datablock is duplicated some number of times, and the resulting collection of datablocks are distributed over multiple drives ».

Relea esa segunda frase, porque es la que hace el trabajo de verdad. No dice que los discos se agrupen en espejos. Dice que las copias se reparten. El manual enuncia después la consecuencia sin rodeos: « It should be noted that the number of devices in a RAID10 array need not be a multiple of the number of replica of each data block; however, there must be at least as many devices as replicas. »

Un RAID 10 de tres discos con dos copias de todo es por tanto una matriz legal y corriente. Uno de cinco discos también. Ninguno de los dos se descompone en parejas, por la sencilla razón de que no hay parejas. La redundancia es real, pero está repartida por el conjunto en lugar de encerrada en parejas, y cualquier reflejo de recuperación construido sobre « encontrar la otra mitad de este espejo » se queda sin nada a lo que agarrarse.

Tres disposiciones se esconden tras un único número de nivel

Al crear la matriz se deciden dos cosas que después nunca aparecen en el número de nivel: cuántas copias de cada bloque existen y adónde van. El manual es explícito: « When configuring a RAID10 array, it is necessary to specify the number of replicas of each data block that are required (this will usually be 2) and whether their layout should be 'near', 'far' or 'offset'. »

Las tres solo se diferencian por la colocación.

Near junta las copias. El manual las describe colocadas « consecutively ('as close to each other as possible') across the stripes of the array », y señala que con un número par de discos acaban probablemente en el mismo desplazamiento en discos distintos. Es la configuración que se comporta como el manual escolar, y el propio manual md la llama « the 'classic' RAID1+0 ».

Far las aleja deliberadamente, « quite distant ('as far as reasonably possible') from each other ». El motivo es la velocidad, no la seguridad: « The advantage of this layout is that MD can easily spread sequential reads over the devices, making them similar to RAID0 in terms of speed. » Una matriz montada para el caudal de lectura es muy a menudo una matriz far, y su segunda copia no está en ningún sitio cercano a la primera.

Offset es el compromiso, donde « all the copies of a given chunk are striped consecutively ('offset by the stripe length after each other') over the devices ». El manual espera de ella características de lectura próximas a far con un tamaño de bloque suficientemente grande, sin tanto desplazamiento de cabezal en escritura.

Nada difiere entre las tres por el lado de los datos. Todo difiere por el lado de dónde buscarlos.

Filas de bandejas de discos montadas en rack fotografiadas desde arriba en ángulo rasante, decenas de bandejas idénticas con pequeños diodos verdes de actividad, alejándose desenfocadas hacia el fondo del armario.
Filas de bandejas de discos montadas en rack fotografiadas desde arriba en ángulo rasante, decenas de bandejas idénticas con pequeños diodos verdes de actividad, alejándose desenfocadas hacia el fondo del armario.

Por qué esto decide si la reconstrucción devuelve archivos o ruido

Reconstruir cualquier matriz por bandas consiste en responder a tres preguntas: qué discos, en qué orden y con qué tamaño de bloque. El RAID 10 añade una cuarta que los niveles con paridad no tienen: dónde vive la segunda copia de cada bloque. Si se equivoca, la reconstrucción termina igualmente. Simplemente entrelaza bloques tomados de los desplazamientos equivocados, y el resultado es un volumen que no monta nada o, peor, que monta un árbol de directorios lleno de archivos que se abren como basura.

Esa es la razón práctica por la que hay que recuperar la disposición antes que los datos. Está inscrita en los metadatos de la matriz, y por eso leer los metadatos de cada disco antes de tocar nada importa aquí más que en ningún otro nivel. Si los metadatos han desaparecido y la disposición es desconocida, esto se convierte en un pequeño problema de búsqueda: tres disposiciones, unos pocos números de copias y tamaños de bloque plausibles, probados sobre una copia hasta que aparezca un sistema de archivos. Esa búsqueda solo es segura sobre imágenes, porque cada intento es una escritura en la dirección equivocada si lo ejecuta sobre los discos.

A qué sobrevive un RAID 10, y por qué nadie se lo dirá de antemano

La afirmación más repetida sobre el RAID 10 es que sobrevive a un fallo por pareja, de modo que una matriz de cuatro discos puede perder dos mientras no sean de la misma pareja. Eso es cierto de un RAID 1+0 clásico, y el manual md evita cuidadosamente generalizarlo.

Allí donde enumera cuántos discos tolera perder cada nivel, da cifras concretas para los demás: « this number is one for RAID levels 4 and 5, two for RAID level 6, and all but one (N-1) for RAID level 1. » Para el nivel 10 se limita a indicar que la supervivencia « is dependent on configuration ».

Esa es la respuesta honesta, y se deduce de todo lo anterior. Con dos copias repartidas entre cinco discos en disposición far, que dos discos muertos sean recuperables depende de si algún bloque tenía sus dos copias justo en esos dos. Dos matrices que declaran el mismo nivel, el mismo número de discos y la misma capacidad pueden diferir en esto. Se decide en el momento de la creación y no se lee en el número de nivel.

La consecuencia operativa es sencilla: tras un segundo fallo en el nivel 10, no dé por hecho que todo va bien ni que todo está perdido. Ambas conclusiones son apuestas.

El orden que conserva sus opciones

Deje de escribir. Una matriz degradada que sigue en servicio es una reconstrucción esperando a ser autorizada, y en este nivel quizá no sepa qué copia tomará como origen.

Anote los metadatos de cada disco antes que nada. Disposición, número de copias, tamaño de bloque, orden de los discos y contadores de eventos. Es la información que convierte la recuperación en un procedimiento en lugar de una búsqueda, y también la que destruye un recreate precipitado.

Cree una imagen de todos los discos, no solo de los supervivientes. Crear una imagen es una lectura. No puede empeorar nada, y convierte cada error posterior en algo reversible. En una matriz donde la disposición correcta quizá exija varios intentos, trabajar sobre imágenes no es prudencia: es la única forma de tener derecho a más de un intento.

Ensamble en solo lectura y compruebe que ve un sistema de archivos antes de creer en los parámetros. Una reconstrucción con la disposición equivocada no se anuncia. Un sistema de archivos montable, navegable y cuyos archivos se abren: esa es la prueba.

Reconstruya en último lugar, sobre hardware ya probado, una vez que los datos existan en otro sitio que no sea esta matriz.

Selección editorial
4.5 / 5

Releer los archivos una vez hechas las imágenes y hallada la disposición

Funciona sobre una imagen o un volumen que ya pueda montar. No determina por usted la disposición near, far u offset, y no sustituye a la creación previa de imágenes de los discos.

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

En resumen

El RAID 10 en Linux no es la matriz de parejas en espejo que su nombre sugiere. El manual md permite un número de discos que no es múltiplo del número de copias, lo que da matrices sin ninguna pareja que recuperar de una en una. Ofrece las disposiciones near, far y offset bajo el mismo número de nivel, y solo near con un número par de discos se parece al RAID 1+0 clásico.

Como las copias pueden colocarse lejos unas de otras por diseño, la disposición debe conocerse antes de intentar cualquier reconstrucción, o la reconstrucción llegará hasta el final y producirá disparates. Y como la colocación se decide al crear la matriz, el manual se niega a decir cuántos discos puede perder un RAID 10: en este nivel, la supervivencia depende de la configuración.

Anote los metadatos de cada disco, cree imágenes de todos, pruebe las disposiciones sobre las copias y reconstruya solo cuando sus archivos estén en otra parte.

La descripción del RAID10 como combinación de RAID1 y RAID0, el enunciado de que el número de discos no necesita ser múltiplo del número de copias, las definiciones de las disposiciones near, far y offset, la observación de que near con un número par de discos es el RAID1+0 clásico, y el enunciado de que la supervivencia depende de la configuración en el nivel 10, proceden todos de la página de manual de Linux md(4), consultada en el momento de la redacción. Las citas se dejan en su idioma original. Verifique con la versión del núcleo y de mdadm que esté usando. Los enlaces comerciales llevan el atributo rel="sponsored nofollow"; puede aplicarse una comisión de afiliación, sin coste adicional para usted.

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

¿Es el RAID 10 lo mismo que el RAID 1+0?

En Linux no, y la diferencia importa en el momento de recuperar. El manual md presenta el nivel así: « RAID10 provides a combination of RAID1 and RAID0, and is sometimes known as RAID1+0 », y acto seguido se aparta de ese modelo. Precisa que el número de discos de una matriz RAID10 no necesita ser múltiplo del número de copias de cada bloque, solo hacen falta al menos tantos discos como copias. Un RAID 1+0 clásico es un conjunto por bandas construido sobre parejas en espejo separadas, así que necesita un número par de discos. Un RAID10 md de tres discos con dos copias es perfectamente legal, y no tiene ninguna pareja que recuperar de una en una.

¿Cuántos discos puede perder un RAID 10?

No hay una respuesta única, y el manual md se niega a darla. Allí donde enumera cuántos discos tolera perder cada nivel, da una cifra para los niveles con paridad y « all but one » para el RAID 1, pero para el nivel 10 indica que la supervivencia « is dependent on configuration ». No es imprecisión. Con dos copias, que dos fallos simultáneos sean supervivientes depende de dónde hayan quedado esas dos copias, es decir de la disposición y del número de discos. Dos fallos pueden ser inofensivos o fatales en matrices que declaran el mismo nivel.

¿Qué son las disposiciones near, far y offset?

Son tres maneras de colocar las copias, elegidas al crear la matriz. En near, el manual indica que las copias de un mismo bloque se colocan consecutivamente, tan cerca unas de otras como sea posible, a través de las bandas. En far se colocan tan lejos como razonablemente se pueda, lo que permite a md repartir las lecturas secuenciales entre los discos y acercarse a la velocidad de un RAID0. En offset, todas las copias de un bloque se escriben consecutivamente, desplazadas la longitud de una banda, sobre los discos. Los datos son idénticos en los tres casos. Su posición en los platos, no.

¿Puedo sacar un disco de un RAID 10 y leer los archivos en él?

Solo en disposición near con un número par de discos, y aun así de forma parcial. En esa configuración un disco contiene bloques enteros que una herramienta de sistema de archivos puede reconocer, pero contiene como mucho la mitad de la matriz: obtiene fragmentos de archivos, no archivos. En far y en offset las copias están desplazadas a propósito, así que un disco leído por separado no es un trozo coherente del sistema de archivos. Un disco que parece vacío en esta situación suele estar intacto y mal leído.

¿Conviene dejar que el controlador reconstruya antes de intentar la recuperación?

No. Una reconstrucción escribe, y en el nivel 10 quizá no sepa qué copia tratará el controlador como referencia. Cree primero una imagen de cada disco, ya que crear una imagen es una lectura y solo cuesta tiempo, y trabaje después sobre las copias. Reconstruya cuando sus datos ya existan en algún sitio que no sea la matriz.