Daten aus RAID 1 LVM Partitionen mit der Knoppix Linux LiveCD wiederherstellen
Version 1.0
Author: Till Brehm <t.brehm [at] projektfarm [dot] com>
Last edited: 04/11/2007
Diese Anleitung veranschaulicht, wie man Daten von einer einzelnen Festplatte rettet, die Teil eines LVM2 RAID1 Setup das zum Beispiel vom Fedora Core Installer erstellt wurde, war. Warum ist das Wiederherstellen von Daten so problematisch? Jede einzelne Festplatte, die zuvor Teil eines LVM RAID 1 Setups war, enthält alle Daten, die in RAID gespeichert war, aber die Festplatte kann nicht einfach ausgehängt werden. Zuerst muss ein RAID Setup für die Partition(en) konfiguriert werden und dann muss LVM so eingerichtet werden, dass diese RAID Partition(en) verwendet werden, bevor Du in der Lage sein wirst sie einzuhängen. Ich werde für die Wiederherstellung der Daten die Knoppix Linux LiveCD.
Voraussetzungen
Ich habe für diese Anleitung eine Knoppix 5.1 LiveCD verwendet. Lade das CD ISO Image von hier und brenne es auf eine CD. Verbinde dann die Festplatte, die die RAID Partition(en) enthält mit dem IDE / ATA Controller Deines Mainboards, lege die Knoppix CD in Dein CD-Laufwerk und starte von der CD.
Die verwendete Festplatte ist ein IDE Gerät, das dem ersten IDE Controller (hda) angehängt ist. In meinem Fall enthielt die Festplatte nur eine Partition.
Raid wiederherstellen
Nachdem Knoppix gestartet ist, öffne eine Kommandozeile und führe diesen Befehl aus:
sudo su
um Root-Benutzer zu werden.
Da ich die mdadm.conf Datei aus der originalen Konfiguration nicht habe, erstelle ich sie mit diesem Befehl:
mdadm –examine –scan /dev/hda1 >> /etc/mdadm/mdadm.conf
Das Ergebnis sollte diesem ähneln:
DEVICE partitions
CREATE owner=root group=disk mode=0660 auto=yes metadata=1
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a28090aa:6893be8b:c4024dfc:29cdb07a
Bearbeite die Datei und füge devices=/dev/hda1,missing am Ende der Zeile, die das RAID Array beschreibt, hinzu.
vi /etc/mdadm/mdadm.conf
So sieht die Datei dann aus:
DEVICE partitions
CREATE owner=root group=disk mode=0660 auto=yes metadata=1
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a28090aa:6893be8b:c4024dfc:29cdb07a devices=/dev/hda1,missing
Die Zeichenfolge /dev/hda1 ist das Hardware Gerät und missing bedeutet, dass die zweite Festplatte in diesem RAID Array momenten nicht da ist.
Bearbeite die Datei /etc/default/mdadm:
vi /etc/default/mdadm
und ändere die Zeile:
AUTOSTART=false
zu:
AUTOSTART=true
Nun können wir unser RAID Setup starten:
/etc/init.d/mdadm start
/etc/init.d/mdadm-raid start
Um zu überprüfen, ob unser RAID Gerät in Ordnung ist, führe diesen Befehl aus:
cat /proc/mdstat
Die Ausgabe sollte wie folgt aussehen:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [ra id10]
md0 : active raid1 hda1[1]
293049600 blocks [2/1] [_U]
unused devices: <none>
Das LVM Setup wiederherstellen
Die LVM Konfigurationsdatei kann nicht durch einen einfachen Befehl wie mdadm.conf erstellt werden, jedoch speichert LVM eine oder mehrere Kopien des Inhalts der Konfigurationsdatei am Anfang der Partition. Ich verwende den Befehl dd um den ersten Teil de Partition zu extrahieren und schreibe ihn in eine Textdatei:
dd if=/dev/md0 bs=512 count=255 skip=1 of=/tmp/md0.txt
Öffne die Datei mit einem Text Editor:
vi /tmp/md0.txt
Zuerst findest Du einige Binärdaten und dann einen Teil der Konfigurationsdatei wie diesen:
VolGroup00 { id = "evRkPK-aCjV-HiHY-oaaD-SwUO-zN7A-LyRhoj" seqno = 2 status = ["RESIZEABLE", "READ", "WRITE"] extent_size = 65536 # 32 Megabytes max_lv = 0 max_pv = 0 physical_volumes { pv0 { id = "uMJ8uM-sfTJ-La9j-oIuy-W3NX-ObiT-n464Rv" device = "/dev/md0" # Hint only status = ["ALLOCATABLE"] pe_start = 384 pe_count = 8943 # 279,469 Gigabytes } } logical_volumes { LogVol00 { id = "ohesOX-VRSi-CsnK-PUoI-GjUE-0nT7-ltxWoy" status = ["READ", "WRITE", "VISIBLE"] segment_count = 1 segment1 { start_extent = 0 extent_count = 8942 # 279,438 Gigabytes type = "striped" stripe_count = 1 # linear stripes = [ "pv0", 0 ] } } } }
Erstelle die Datei /etc/lvm/backup/VolGroup00:
vi /etc/lvm/backup/VolGroup00
und gib die Konfigurationsdaten ein, so dass die Datei ähnlich wie das obere Beispiel aussieht.
Nun können wir LVM starten:
/etc/init.d/lvm start
Lies im Volume:
vgscan
Reading all physical volumes. This may take a while…
Found volume group „VolGroup00“ using metadata type lvm2
pvscan
PV /dev/md0 VG VolGroup00 lvm2 [279,47 GB / 32,00 MB free]
Total: 1 [279,47 GB] / in use: 1 [279,47 GB] / in no VG: 0 [0 ]
und aktiviere das Volume:
vgchange VolGroup00 -a y
1 logical volume(s) in volume group „VolGroup00“ now active
Nun können wir die Partition in /mnt/data einhängen:
mkdir /mnt/data
mount /dev/VolGroup00/LogVol00 /mnt/data/
Wenn Du Daten einer Festplatte mit Dateinamen im UTF-8 Format wiederherstellst, kann es sein, dass Du sie in Dein derzeitiges non-UTF-8 locale konvertieren musst. In meinem Fall stammt die RAID Festplatte von einem Fedora Core System mit UTF-8 verschlüsselten Dateinamen. Mein Ziel-locale ist ISO-8859-1. In diesem Fall hilft das Perl Skript convmv die Dateinamen ins Ziel-locale zu konvertieren.
Installation von convmv
cd /tmp
wget http://j3e.de/linux/convmv/convmv-1.10.tar.gz
tar xvfz convmv-1.10.tar.gz
cd convmv-1.10
cp convmv /usr/bin/convmv
Um alle Dateinamen in /mnt/data zum ISO-8859-1 locale zu konvertieren, führe diesen Befehl aus:
convmv -f UTF-8 -t ISO-8859-1 -r –notest /mnt/data/*
Wenn Du die Konvertierung zunächst testen möchtest, verwende:
convmv -f UTF-8 -t ISO-8859-1 -r /mnt/data/*