
Ich habe keine Erfahrung mit LVM und Partitionierung im Allgemeinen und befinde mich daher in einer schwierigen Situation.
Die Situation:
Ich habe versehentlich den MBR einer mit Fedora 16 erstellten LVM-Festplatte überschrieben.
Jetzt ist alles andere auf dieser Platte intakt; nur der MBR ist beschädigt (und auch das nur die ersten 446 seiner 512 Bytes). Ich hatte den MBR beschädigt, als ich versehentlich Folgendes ausgab:
$ dd if=/the/wrong/446-byte-file.txt of=/dev/sda
Diese Platte (mit beschädigtem MBR), die ursprünglich/dev/sdain System A, ist jetzt in meinem aktuellen System, System B, als sekundäre Festplatte eingesteckt,/dev/sdb
, zum Zweck der Dateisystem-/Datenwiederherstellung. Es kann derzeit in System B nicht eingehängt werden.
Hier ist die fdisk -l
Ausgabe auf System B:
$ fdisk -l
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x8e678e67
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 475813887 237905920 83 Linux
/dev/sda2 475813888 488396799 6291456 82 Linux swap / Solaris
Disk /dev/sdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders, total 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 1026047 512000 83 Linux
/dev/sdb2 1026048 156301311 77637632 8e Linux LVM
Frage:Mit/dev/sdaWenn ich ein fehlerfreies, nicht-LVM-Setup von Fedora 16 ausführe, wie mounte ich es manuell?/Entwickler/sdb(mit beschädigtem MBR) irgendwo in System B, um alle Daten daraus wiederherstellen zu können? (Die Daten sind darin übrigens auf einem ext4-Dateisystem gespeichert.)
Was ich bisher versucht habe:
a) Ich habe pvs
Folgendes ausgegeben und erhalten:
(Beachten Sie, dass die VG-Spalte leer ist!)
$ pvs
PV VG Fmt Attr PSize PFree
/dev/sdb2 lvm2 a-- 74.04g 74.04g
b) Ich habe pvscan
Folgendes ausgegeben:
$ pvscan
PV /dev/sdb2 lvm2 [74.04 GiB]
Total: 1 [74.04 GiB] / in use: 0 [0 ] / in no VG: 1 [74.04 GiB]
c) Ich habe den Inhalt von /etc/lvm/backup/vg_XYZ
aus einem früheren Backup zur Verfügung. Aber ich weiß nicht, wie ich aus dieser Datei den Volumenamen und die Volumepfade ableiten/konstruieren kann (Beachten Sie, dass in dieser Datei/dev/sda2ist die Aufteilung der Interessen, die jetzt/dev/sdb2im gegenwärtigen System, System B):
# Generated by LVM2 version 2.02.84(2) (2011-02-09): Tue Oct 25 22:10:55 2011
contents = "Text Format Volume Group"
version = 1
description = "Created *after* executing 'vgchange -a y --sysinit'"
creation_host = "XYZ" # Linux XYZ 2.6.38.6-26.rc1.fc15.i686.PAE #1 SMP Mon May 9 20:36:50 UTC 2011 i686
creation_time = 1319560855 # Tue Oct 25 22:10:55 2011
vg_XYZ {
id = "WN8593-xRnx-dn29-rcpb-tRAm-Bs5R-93DGWw"
seqno = 3
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 65536 # 32 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "voQHGq-9m5t-u39a-UBWP-1qKM-sS4M-t3EPYG"
device = "/dev/sda2" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 155275264 # 74.041 Gigabytes
pe_start = 2048
pe_count = 2369 # 74.0312 Gigabytes
}
}
logical_volumes {
lv_swap {
id = "Osi18q-409G-iG1s-Mdb2-00Lt-wtQV-WpF2mN"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 126 # 3.9375 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
}
lv_root {
id = "Wc8qdx-sYKi-qFeM-Bv48-YvZC-ClGU-VrYl4W"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 2243 # 70.0938 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 126
]
}
}
}
}
Ich wäre Ihnen für Ihre schnelle Hilfe sehr dankbar, sonst stecke ich in echten Schwierigkeiten!
Vielen Dank im Voraus...
/HS
Antwort1
Versuchen Sie die folgenden Schritte der Reihe nach.
BEARBEITEN (von Harry)
vgcfgrestore
Damit die restlichen unten aufgeführten Befehle (beginnend mitvgscan
) wirksam werden, musste ein ausgeführt werden .vgcfgrestore vg_XYZ
Außerdem musste ein
e2fsck -y /dev/vg_XYZ/lv_root
für die erfolgreiche Montage vorhanden sein.
Details werden in diesem Beitrag von comp.os.linux.setup beschrieben.Hier.
Da Sie bereits a durchgeführt haben pvscan
, fahren Sie mit a fort vgscan
:
vgscan --partial --mknodes --verbose
Mit etwas Glück sollte dadurch die Datenträgergruppe vg_XYZ
auf erkannt /dev/sdb2
und alle erforderlichen Geräteknoten in erstellt werden /dev
.
Machen Sie als Nächstes die Datenträgergruppe verfügbar:
vgchange -a y vg_XYZ
Fügen Sie anschließend Folgendes ein lvscan
:
lvscan --verbose
Und schließlich machen Sie das logische Volume verfügbar:
lvchange -a y vg_XYZ/lv_root
Sie sollten nun in der Lage sein, irgendwo einzuhängen, lv_root
um auf die Daten zuzugreifen, z. B.
mkdir -p /mnt/rescue
mount -t ext4 -o ro /dev/vg_XYZ/lv_root /mnt/rescue
Viel Glück!
Antwort2
DieTeiltMagieLiveCD/USB verfügt über alle möglichen Tools, mit denen sich der MBR dieser Festplatte möglicherweise wiederherstellen lässt.testdisk
ist ein, und ich weiß, dass es noch andere gibt. Es hat mir schon ein paar Mal die Haut vor falsch eingegebenen Befehlen gerettet, es hat nicht ohne Grund dd
den Spitznamen disk destroyer
.
Antwort3
Möglicherweise können Sie das Gerät manuell mithilfe der Nummern aus der Sicherungsdatei erstellen.
dmsetup create foo --table "0 146997248 linear /dev/sdb2 8259584"
mount -o ro /dev/mapper/foo /mnt
Die Zahlen werden wie folgt berechnet:
146997248 = extent_count * extent_size = 2243 * 65536
8259584 = pe_start + 126 * extent_size = 2048 + 126 * 65536
Dies ist NICHT GETESTET. Wenn das Backup kein genaues Bild der aktuellen Konfiguration liefert (oder wenn meine Berechnungen falsch sind – ich habe sie analog zur lokalen Konfiguration reproduziert und nicht mit ausreichendem Verständnis von LVM), dann wird es nicht funktionieren.