Schlagwort-Archiv: dd

Optische Datenrettung unter Linux

Problem:
Ich habe mehrere CDs mit Daten. Leider sind die Datenträger in die Jahre gekommen und lassen sich nicht mehr fehlerfrei auslesen.

Lösung:
Es kommt ddrescue zum Einsatz

apt-get install gddrescue

Zuerst mache ich ein Abbild von der CD mit ddrescue nach /tmp/sr0.iso. Die Erstellung kann je nach Schaden eine Weile dauern. Im schlechtesten Fall kann auch ddrescue nichts mehr ausrichten, dann sollte man sich von den Daten verabschieden.

cd /tmp
time ddrescue /dev/sr0 sr0.iso

Das Ergebnis schaute in meinem Fall dann „irgendwann“ so aus:

GNU ddrescue 1.16
Press Ctrl-C to interrupt
rescued: 701469 kB, errsize: 5453 kB, current rate: 7680 B/s
ipos: 692124 kB, errors: 1070, average rate: 40049 B/s
opos: 692124 kB, time since last successful read: 0 s
Finished

Nun kann man das ISO File mounten um die Daten runter zu kopieren

mount -t iso9660 -o loop /tmp/sr0.iso /mnt

Viel Erfolg beim CDs sichern!

Das sollte im besten Fall mit jedem Datenträger (DVD, Diskette, CD, HDD) so funktionieren falls unerwartet Probleme auftauchen.

Sicheres Löschen von Festplatten

Immer mal wieder gibt es Festplatten, die zum Altmetall kommen oder auf Ebay verschachert werden. Zuvor ist es sicher mehr als sinnvoll, die Platte angemessen zu säubern. Einfaches Formatieren genügt da leider nicht.

Man kommt bei dem Thema nicht um die Gutmann-Methode herum. Diese Methode ist allerdings in der Zwischenzeit auch nicht mehr aktuell wie man in einem Heise Artikel nachlesen kann.

Fazit: Es kommt auf die Daten an, die auf der Festplatte gespeichert wurden.

Bei einer Festplatte mit hunderttausenden, sensitiven Kundendatensätzen würde ich lieber einmal mehr löschen und im Anschluss die Platte physikalisch zerstören – sicher ist sicher.

Wie man aber auch dem Heise-Artikel entnehmen kann, ist die rechnerische Wahrscheinlichkeit der Wiederherstellung sehr gering. Daher sollten für meinen Einsatzzweck andere Werkzeuge den Zweck erfüllen.

Meine Beispiele formuliere ich mit Laufwerk /dev/sdx, sicherer für Euch.
Das Löschen kompletter Festplatten dauert eine Weile, ihr solltet also Geduld mitbringen.

Es gibt das Tool „dd“, simpel und einfach in der Handhabung.

# alle Blöcke (Größe 512byte) mit Müll vollschreiben
dd if=/dev/urandom of=/dev/sdx bs=512
# alle Blöck (Größe 512byte) mit NULL vollschreiben
dd if=/dev/zero of=/dev/sdx bs=512

Dann gibt es über die „coreutils“ das Tool „shred“. Mittels „-v“ bekommt man den Fortschritt mit.

shred -v -z /dev/sdx

Die Fortschrittsanzeige von shred schaut so aus

..
shred: /dev/sdc: Durchgang 2/4 (random)...25GiB/56GiB 44%
shred: /dev/sdc: Durchgang 2/4 (random)...26GiB/56GiB 46%
shred: /dev/sdc: Durchgang 2/4 (random)...27GiB/56GiB 48%
shred: /dev/sdc: Durchgang 2/4 (random)...28GiB/56GiB 50%
..

Zuguterletzt kann ich noch das Tool Boot’n’Nuke anführen. Man kann es von CD booten und per boot Kommando „autonuke“ alle am Rechner befindliche Platten löschen lassen. Das ist meine erste Wahl wenn ein dutzend Platten zu entsorgen sind.

Ein Tip: Nehmt am besten die Festplatten mit euren Daten aus dem Rechner oder nutzt einen 2. Rechner! Löschen dauert eine Weile und die Funktion „autonuke“ von Boot n Nuke nimmt keine Rücksicht! Ihr seid gewarnt!

Migration von Linuxmaschinen zu ESXi

Ich glaube ich habe rausgefunden, wie ich am Besten vom physischen Server zur ESXi VM komme.

1. Quellmaschine booten, vorzugsweise mit RIP Linux. Dort binde ich mein Arbeitstier via „sshfs“ ein.
Im Anschluss werfe ich „dd“ an und spiele die komplette Platte/RAID auf mein Arbeitstier.

2. DD zu VDI Konvertierung
Mittels Virtualbox hat man die Möglichkeit, dd-Images zu VDI Images zu wandeln um diese in Virtualbox zu starten.
Dies geschieht wird mittels

VBoxManage convertfromraw --format VDI quelle.dd ziel.vdi

Während dessen erstelle ich eine neue Maschine in Virtualbox, definiere aber keine Festplatte. Nach dem konvertieren hänge ich die VDI als Platte ein und starte die Maschine in Virtualbox

3. Anpassungen
Je nach Quellserver kann es sein, dass die Maschine in VirtualBox nicht direkt bootet. Das liegt meist an Grub. Einfach die Bootline editieren und booten. Im System selbst fixe ich diese Anpassungen und schreibe Grub neu. Ein Neustart zum Testen und dann fahre ich die Maschine runter.

4. Appliance exportieren
Nun exportiere ich über Virtualbox die Appliance. Wichtig dabei ist, dass man die Zielangabe mit der Dateiendung *.ovf definiert. Nur dann wird die Festplatte einzeln als VMDK exportiert. Die Legacy Option sollte auch angehakt werden.
Ich nehm auch gern die Konsole

VBoxManage export name-der-maschine -o name.ovf --legacy09

5. VMDK ESXi-konform umwandeln
Nach dem Export transferiere ich per SCP die VMDK ins ESXi Center. Ist die Platte einmal drin, muss Sie noch in eine ESXi-taugliche Platte umwandeln. Das passiert über die ESXi-Shell mit folgendem Kommando

vmkfstools -d thin -i virtualbox.vmdk esxi.vmdk

Im Anschluss kann die virtualbox.vmdk gelöscht werden.

6. Virtuelle Maschine anlegen
Nun leg ich im vSphere Client eine neue Maschine an, benutzerdefiniert. Bei der Festplattenangabe wähle ich eine vorhandene, nämlich die esxi.vmdk.

Die Maschine sollte nun im ESXi anständig hochfahren. Nun müssen nur noch die VM Tools installiert werden

Verkleinern von VDI Dateien mit Linux-Betriebssystem

Problem:
Ein DD kopiert klassischerweise Block für Block von einer Festplatte. Das Image ist also immer so groß, wie die Quellplatte. Auch wenn fast nichts drauf ist.

Lösung:
Die Platte muss mit Boardmitteln verkleinert werden.
Dazu boote ich via VirtualBox erstmal in das Betriebssystem.
Für jedes „richtige“ Laufwerk (nachfolgend $mountpunkt genannt), welches in der /etc/fstab genannt ist, muss folgendes durchgeführt werden.

init 1
cd $mountpunkt-der-festplatte
dd if=/dev/zero of=zero.file
rm zero.file
halt

Die Maschine ist nun wieder aus. Nun frägt man sich, was das soll! Das erklär ich gleich.

Nun nutzen wir wieder Boardmittel von Virtualbox

VBoxManage modifyhd --compact image-vom-server.dd.vdi

Das dauert nun kurz – und im Anschluss sollte das Image nur noch so groß sein, wie die tatsächliche Belegung hergibt.

Nun zum Hintergrund: Der genannte „VBoxManage“ Befehl kann nur Blöcke entfernen, die mit einer NULL beschrieben sind. Sollten die Inoden noch Restdaten beinhalten obwohl sie nicht genutzt ist, dann wird hier nichts optimiert.
Aus diesem Grund habe ich vorneweg im gebooteten System eine Datei angelegt, welche nur mit NULL gefüllt ist. „–compact“ kann nun also jeden dieser Blöcke auf dem Image nehmen. Schliesslich ist ja nichts drin 😉

Alternativ gibt es noch das Tool „zerofree„, welches das selbe erledigt. Schau kurz in Beschreibung für nähere Infos. Im Prinzip ists halt das selbe!

DD Image Converter – VBoxManage

Problem:
Ich habe physikalische Rechner, welche ich endlich Virtualisieren möchte ^^

Lösung:
Ich boote die Server mit RIP (Rescue Is Possible) und mounte mit sshfs mein Arbeitstier.
Via „mount“ überprüfe ich das Verzeichnis. Gemountet? Gut! Könnte genauso eine externe Festplatte sein…
Nun wird mit dd ein Image der kompletten Platte (incl. MBR usw) in das gemountete Verzeichnis gespielt.


cd /mnt/zielordner
dd if=/dev/sda of=image-vom-server.dd

Der Copyjob sollte, ganz nach Größe der Quellfestplatte, eine Weile dauern. 20 GB dauern ca. ne Stunde über mein kleines 100mbit Testnetzwerk. Vllt wäre mal n 1000mbit Upgrade nötig, aber das steht auf nem anderen Blatt.

Ist der Copyjob mit „dd“ erledigt, dann ab zum Zielrechner.

Hier ist dd2vmdk kompiliert und installiert, wie ich es in diesem Artikel schon kurz beschrieben habe. Leider bricht das Programm beim Aufruf mit einem Speicherfehler ab.

dd2vmdk[3253]: segfault at 0 ip 00007fdaa5d5ce34 sp 00007fff99b574f0 error 4 in libc-2.13.so[7fdaa5cf5000+17d000]

Das ist aber nicht weiter tragisch, ich möchte das Image eh zuerst mal in Virtualbox testen. Und genau dieses ist installiert und bringt den Befehl „VBoxManage“ mit.

VBoxManage help

zeigt, was das Programm alles drauf hat. Aber ich schweife ab…

Ich beweg mich also in das Verzeichnis mit dem dd Image und habe mindestens nochmal soviel Platz wie das DD Image groß ist. Dann nutze ich eine der „VBoxManage“ Optionen.

VBoxManage convertfromraw image-vom-server.dd image-vom-server.dd.vdi

Im Anschluss ist das Image fertig und kann direkt gebootet werden. Linux eben.

dd2vmdk – VM Konvertierung unter Linux

Problem:
Ich möchte dd-Festplattenabzüge virtuell unter ESXi betreiben.

Lösung:
Die vorhandenen DD-Images können mit dem Werkzeug „dd2vmdk“ konvertiert werden.
http://sourceforge.net/projects/dd2vmdk/

Hier die kurze und sachliche Beschreibung:

A small C utility to convert a raw dd image into a flat monolithic VMDK file. The code is loosely based on Liveview's java implementation of PartitionEntry.java and MasterBootRecord.java. Will be adding split file (.dd) conversion in the near future

Ich lade also den Code runter, entpacke nach /usr/local/src den v-0.1.1 Ordner und compiliere & installiere.

cd /tmp
wget http://sourceforge.net/projects/dd2vmdk/files/dd2vmdk/0.1.1/dd2vmdk-0.1.1.tar.gz
cd /usr/local/src
tar xvzf /tmp/dd2vmdk-0.1.1.tar.gz v-0.1.1
cd v-0.1.1
make -s
mv dd2vmdk /usr/local/bin

Nun steht das Werkzeug zum Einsatz bereit.