Suchen Sie, wie in der Anleitung zu fehlerhaften Blöcken beschrieben, die Partition, die den fehlerhaften Block enthält, und berechnen Sie den Sektorversatz innerhalb der Partition. Angenommen, die Partition /dev/sda3
ist eine LVM-PV.
Bestimmen Sie den Sektorversatz des ersten PE:
pvs -o pe_start --units s /dev/sda3
Subtrahieren Sie diesen Versatz vom fehlerhaften Sektorversatz, um den Sektorversatz vom ersten PE zu erhalten. Wenn das Ergebnis negativ ist, befindet sich der fehlerhafte Sektor im LVM-Metadatenbereich.
Bad_Offset_from_1st_PE = Bad_Offset_in_Partition - First_PE_Start
Ausführen pvdisplay --maps --units s /dev/sda3
, um die Liste der Segmente in der PV abzurufen. Im Abschnitt „Physikalisches Volumen“ dieser Ausgabe wird auch das Feld „PE-Größe“ angezeigt.
Teilen Sie den Sektorversatz vom ersten PE (den Sie in Schritt 2 erhalten haben) durch die PE-Größe in Sektoren. Das ganzzahlige Ergebnis der Division ist die schlechte PE-Nummer, und der Rest ist der schlechte Sektorversatz innerhalb dieser PE.
Bad_PE = Bad_Offset_from_1st_PE / PE_Size
Bad_Offset_in_PE = Bad_Offset_from_1st_PE % PE_Size
Suchen Sie das Segment in der Karte, das das fehlerhafte PE enthält. Wenn Sie Glück haben, ist das Segment möglicherweise frei, andernfalls wird das fehlerhafte logische Volume angezeigt. Sie können bei diesem Schritt anhalten, wenn das Volume für Sie nicht interessant ist (z. B. Swap oder einige temporäre Daten, die Sie nicht interessieren). Der Sektor kann sich auch jenseits des letzten PE befinden, was bedeutet, dass er sich entweder im nicht genutzten Bereich befindet, der kleiner als ein vollständiger PE ist, oder im zweiten Metadatenbereich am Ende der PV (falls ein solcher Metadatenbereich vorhanden ist).
Wenn das fehlerhafte Volume ein Snapshot ist, ist es sehr schwierig, den fehlerhaften Sektor dem tatsächlichen Offset im logischen Volume zuzuordnen. Wenn Sie sich wirklich für den Inhalt des Snapshots interessieren, können Sie nur versuchen, daraus zu lesen, und hoffen, dass der fehlerhafte Sektor noch nicht vom Snapshot verwendet wurde (und wenn er verwendet wurde, hoffen Sie, dass der Computer nicht vollständig hängen bleibt beim Versuch, es zu lesen).
Wenn das schlechte Volume etwas Besonderes wie Spiegeln oder Striping auf LVM-Ebene verwendet hat, wissen Sie derzeit nicht, wie Sie damit umgehen sollen.
Berechnen Sie Bad_LE = Bad_PE - Seg_First_PE + Seg_First_LE
, wo Seg_First_PE
sich die erste physische Ausdehnung des fehlerhaften Segments und Seg_First_LE
die erste logische Ausdehnung im fehlerhaften Segment befindet, wie aus den Segmentdaten in der Karte hervorgeht.
Berechnen Sie den Sektorversatz innerhalb des logischen Volumes:
Bad_LV_Offset = (Bad_LE * PE_Size) + Bad_Offset_in_PE
Kehren Sie im zweiten Schritt zum Bad Blocks Howto zurück, um die Datei zu finden, die dem Sektor Bad_LV_Offset
im Dateisystem entspricht.