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/*

Links

Das könnte dich auch interessieren …