
Digamos un hardwareRAID 1controlador con discosAyBse desconectó y un archivo presente en ambos discos se modificó en el discoB(todo dentro de un estado fuera de línea). Cuando se vuelve a encender el controlador RAID y el usuario solicita el archivo modificado, ¿qué pasará? Supongo que la mayoría de los controladores RAID 1 no detectan ningún error hasta que intentan leer ese archivo.
¿El controlador RAID identificará una diferencia en el tamaño/fecha/firma del archivo y, por lo tanto, informará un error, o pasará el contenido de cualquiera de los 2 discos para ese archivo, sin darse cuenta de los cambios?
¿El sistema operativo detectaría algún error?
¿Un controlador RAID 1 por software actuaría de manera diferente?
Y finalmente, en cualquier matriz RAID 1 denortediscos, ¿de qué disco(s) lee realmente el sistema operativo o el controlador? Todo N? ¿Algunos controladores RAID siempre usan?disco 0, ¿elegirán un disco al azar o tendrán acceso al sistema de archivos y verificarán la integridad (incluso si el disco está cifrado)?
Respuesta1
"¿Tienen acceso al sistema de archivos y verifican la integridad (incluso si el disco está cifrado)"? No. El controlador RAIDno sabe sobre archivos– simplemente pretende ser un controlador de disco y solo trata con bloques (sectores). Y debido a que los sectores individuales en ambos discos fueron escritos correctamente, nosonNo se pueden detectar errores a nivel de bloque.
No sé si hay alguna información sobre cómo los controladores RAID de hardware manejarían el caso de que los espejos no coincidan. Sin embargo, NeilBrown – el mantenedor de Linux desde hace mucho tiempomdraidFunción RAID de software: ha publicadoeste comentario de LWNexplicando cómo lo manejaría mdraid:
[...] Si dos dispositivos en un RAID1 no contienen datos idénticos, o si la suma de los datos en un RAID4/5/6 no coincide con los bloques de paridad, entonces esto es una inconsistencia, no una corrupción.
La explicación más probable es que se estaban escribiendo en varios dispositivos de la matriz cuando algo salió mal (p. ej., pérdida de energía) y algunas escrituras tuvieron éxito mientras que otras no. No importa quién tuvo éxito y quién no.En este caso NINGUNO DE LOS BLOQUES ESTÁ MAL. Necesito decir eso de nuevo. AMBOS BLOQUES SON CORRECTOS. Simplemente son correctos en diferentes momentos.
Aquí NO HAY CORRUPCIÓN, solo hay inconsistencia.
Cada bloque contendrá los datos nuevos o los datos antiguos, y ambos son correctos en algún sentido.
(Si un bloque se escribe a medias en el dispositivo, lo cual es posible si el dispositivo no tiene un capacitor lo suficientemente grande, entonces obtendría un error de lectura porque el CRC no sería correcto. Cuando obtiene un error de CRC , md/raid sabe que los datos son incorrectos y, de todos modos, ni siquiera puede leerlos).En el caso de RAID1 REALMENTE NO IMPORTA qué dispositivo se elige usar y qué dispositivo reemplaza sus datos. md elige arbitrariamente el primero en la lista de dispositivos.
En el caso de una matriz de paridad, tiene sentido usar los datos e ignorar la paridad porque usar la paridad no indica con qué otro dispositivo es inconsistente. (Si tiene motivos para creer que la paridad podría no ser coherente con los datos y falta uno de los bloques de datos (dispositivo fallido), entonces no podrá utilizar ni la fecha ni la paridad y tendrá un "agujero de escritura").
Entonces, ¿el sistema operativo detectaría algún error? Depende de qué sistema de archivos se esté utilizando en los discos y de si los sectores inconsistentes pertenecían a archivos o a los propios metadatos del sistema de archivos. Si hubiera una inconsistencia en un sector de metadatos, es más probable que se detecte, pero en la mayoría de los casos se informaría como una corrupción genérica del sistema de archivos, no como una inconsistencia RAID.
Es menos probable con los archivos, ya que la mayoría de los sistemas de archivos no realizan ninguna suma de verificación del contenido del archivo: lo que leen del disco es lo que obtienes. Sólo hay unas pocas excepciones, como Btrfs, ZFS o ReFS, que realizan sumas de comprobación.
Algunos de ellos (Btrfs, ZFS) en realidad tienen su propia función de duplicación de disco, lo que tiene una ventaja sobre el RAID de hardware, en el sentido de que el sistema de archivossabequé disco tiene datos incorrectos y puede reparar automáticamente el archivo leyendo desde el otro disco. Sin embargo, con RAID de hardware, no tendrían forma de pedirle al controlador RAID "la otra versión" y la reparación no sería posible.
¿Un controlador RAID 1 por software actuaría de manera diferente? Podría ser así (consulte el comentario de LWN citado anteriormente), pero también hay otra diferencia importante.
Con el software RAID (así como la duplicación del sistema de archivos), los propios discos transportan información sobre su pertenencia a un conjunto de duplicaciones. Por lo tanto, si mueve un disco a otro lugar, aún será reconocido como parte de una matriz RAID 1 incompleta y, normalmente, el software no permitirá que se escriba en él en primer lugar; permanecerá como de solo lectura a menos que lo separe. el espejo.