He estado investigando mucho sobre este tema durante las últimas semanas, y creo que estoy cerca de completar mi recuperación, al menos tanto como sea posible. Para resumir, solo describiré el problema sin completar cada pequeño detalle técnico.
Suponga que tiene varias matrices RAID-5, cada una con 8 discos, y luego las ha agrupado en un solo volumen lógico LVM. Uno de los discos luego muere en una de las matrices, y durante la reconstrucción encuentra un error de lectura irrecuperable en un segundo disco en esa matriz. Y, por supuesto, no hay copias de seguridad.
Ya he rescatado los datos de la unidad con el URE en una nueva unidad, solo 5K de datos están dañados, todos agrupados en un área muy pequeña del disco. También estoy asumiendo que una vez que vuelva a ensamblar ese dispositivo MD usando la copia ddrescue'd, multiplicaré el tamaño de mi pérdida de datos por el número de unidades sin paridad en mi matriz (por lo tanto, 35K de pérdida de datos), como la paridad Los cálculos para las franjas que usan esos bloques serán incorrectos.
He leído y entiendo los procedimientos en http://smartmontools.sourceforge.net/badblockhowto.html para determinar qué archivos se dañarían en una situación como esta, pero mi problema es descubrir exactamente qué bloques se dañarán después de md rebuild para usar como entrada a debugfs. Descubrir todas las compensaciones donde md y lvm almacenan metadatos tampoco será divertido, pero creo que puedo manejar esa parte.
¿Puedo multiplicar todos mis números de bloques defectuosos por 7 y luego asumir que los siguientes 6 bloques después de cada uno de ellos también serán incorrectos, y luego seguir las instrucciones de LVM en la guía vinculada anteriormente?
Y para ser claros: no estoy preocupado por reparar o reasignar los bloques defectuosos como describe la guía, he reemplazado el disco y dejaré que md maneje ese tipo de cosas. Solo quiero saber qué archivos en el sistema de archivos ext4 se han visto afectados.
fuente