Venho pesquisando bastante esse assunto nas últimas semanas - e acho que estou quase concluindo minha recuperação, tanto quanto possível, pelo menos. Para resumir uma longa história, descreverei o problema sem preencher todos os pequenos detalhes técnicos.
Suponha que você tenha várias matrizes RAID-5, cada uma com 8 discos, e as tenha expandido em um único volume lógico do LVM. Um dos discos morre em uma das matrizes e, durante a reconstrução, você encontra um erro de leitura irrecuperável em um segundo disco nessa matriz. E, claro, não há backups.
Já transferi os dados da unidade com o URE para uma nova unidade, apenas 5K de dados são danificados, todos agrupados em uma área muito pequena do disco. Também estou assumindo que, uma vez remontado o dispositivo MD usando a cópia ddrescue'd, multiplicarei o tamanho da minha perda de dados pelo número de unidades sem paridade em minha matriz (portanto, 35K de perda de dados), como a paridade os cálculos para as faixas usando esses blocos estarão incorretos.
Li e compreendi o procedimento em http://smartmontools.sourceforge.net/badblockhowto.html para determinar quais arquivos seriam corrompidos por uma situação como essa, mas meu problema é descobrir exatamente quais blocos serão corrompidos após o md reconstruir para usar como entrada para depuração. Descobrir todos os deslocamentos em que os metadados da loja md e lvm também não serão divertidos, mas acho que posso lidar com essa parte.
Posso apenas multiplicar todos os meus números de bad block por 7 e, em seguida, supor que os 6 blocos a seguir a seguir também sejam ruins e seguir as instruções LVM no guia acima?
E para deixar claro: não estou preocupado em reparar ou re-mapear os blocos defeituosos, como o guia descreve, substituí o disco e deixarei o md lidar com esse tipo de coisa. Eu só quero saber quais arquivos no sistema de arquivos ext4 foram afetados.
fonte