
Entonces se me ocurrió que usando la paridad XOR no puedo determinar qué disco está defectuoso en un conjunto de bandas.
Supongamos que uno de los discos del conjunto está volteando silenciosamente bits en los platos (también conocido como bit rot), digamos, por ejemplo, debido a un firmware defectuoso. El disco no falla ni informa bloques defectuosos, pero ocasionalmente envía al disco algo distinto de lo que se ingresó.
El uso de XOR, como cualquier otra suma de comprobación, no indicará qué disco de la banda fue la causa del cálculo de paridad incorrecto, pero sabrá que uno de los discos tiene un problema.
Este escenario debe resolverse de alguna manera, dadas las limitaciones del raid 5, pero honestamente se me escapa. Me imagino que raid-6 con paridad horizontal (raid-4'ish) y diagonal puede triangular los bloques defectuosos y mostrar qué disco contenía el área defectuosa... pero esta pregunta pertenece a los conjuntos raid-5.
Gracias de antemano.
Respuesta1
Un controlador RAID determina qué disco está defectuoso al ver cuál genera errores de E/S o no responde.
Un disco duro moderno (es decir, uno fabricado en los últimos 20 años aproximadamente) utiliza ECC a nivel de sector para detectar y corregir errores de inversión de bits. Los sistemas ECC actualmente en uso pueden corregir cualquier error de un solo bit en un sector y pueden detectar todos los errores de doble bit. Si las lecturas repetidas de un sector producen constantemente errores de un solo bit, el firmware de la unidad reasignará silenciosamente el sector a una parte no utilizada de la unidad (todos los discos duros modernos tienen un poco de espacio libre para este propósito); Si se producen errores de doble bit, el firmware informará un error de E/S al controlador y un controlador RAID marcará la unidad como fallida. Para que los datos se corrompan de forma indetectable, es necesario invertir al menos tres bits de un solo sector, un evento cada vez más raro.
Si sospecha que un firmware defectuoso está provocando cambios de bits, puede detectar esto en el nivel RAID (para RAID 1, 10, 5 y 6) ejecutando una verificación de coherencia, pero esto solo le indicará que hay franjas donde la paridad/ la duplicación no coincide; No le dirá qué unidad está defectuosa. Puede encontrar la unidad defectuosa extrayendo una unidad de la matriz y ejecutando un "escaneo de superficie" en busca de bloques defectuosos con su herramienta de verificación de disco favorita: si el firmware es defectuoso, el escaneo debería encontrar cientos de miles de sectores defectuosos.