Ich habe in den letzten Wochen viel zu diesem Thema recherchiert - und ich denke, ich stehe kurz vor dem Abschluss meiner Genesung, zumindest soweit dies möglich ist. Um es kurz zu machen, ich werde das Problem nur beschreiben, ohne jedes kleine technische Detail auszufüllen.
Angenommen, Sie haben mehrere RAID-5-Arrays mit jeweils 8 Festplatten und haben diese dann zu einem einzigen logischen LVM-Volume zusammengefasst. Eine der Festplatten stirbt dann in einem der Arrays ab, und während der Neuerstellung tritt auf einer zweiten Festplatte in diesem Array ein nicht behebbarer Lesefehler auf. Und natürlich gibt es keine Backups.
Ich habe die Daten vom Laufwerk mit dem URE bereits auf ein neues Laufwerk übertragen. Nur 5 KB Daten sind beschädigt, alle in einem sehr kleinen Bereich der Festplatte zusammengefasst. Ich gehe auch davon aus, dass ich nach dem Zusammenbau des MD-Geräts mithilfe der ddrescue-Kopie die Größe meines Datenverlusts mit der Anzahl der Nicht-Paritätslaufwerke in meinem Array (also 35 KB Datenverlust) als Parität multiplizieren werde Berechnungen für die Streifen mit diesen Blöcken sind falsch.
Ich habe die Prozedur unter http://smartmontools.sourceforge.net/badblockhowto.html gelesen und verstanden, um festzustellen, welche Dateien durch eine solche Situation beschädigt würden, aber mein Problem besteht darin, genau herauszufinden, welche Blöcke nach dem md neu erstellen, um als Eingabe für Debugfs zu verwenden. Es wird auch keinen Spaß machen, alle Offsets herauszufinden, in denen md und lvm Metadaten speichern, aber ich denke, ich kann diesen Teil bewältigen.
Kann ich einfach alle meine fehlerhaften Blocknummern mit 7 multiplizieren und dann davon ausgehen, dass die folgenden 6 Blöcke nach jedem dieser Blöcke ebenfalls fehlerhaft sind, und dann den LVM-Anweisungen in der oben verlinkten Anleitung folgen?
Und um ganz klar zu sein: Es geht mir nicht darum, die fehlerhaften Blöcke zu reparieren oder neu zuzuordnen, wie in der Anleitung beschrieben. Ich habe die Festplatte ausgetauscht und lasse md so etwas erledigen. Ich möchte nur wissen, welche Dateien im ext4-Dateisystem betroffen sind.