Schlagwort-Archive: vdi

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.