Von VM-Ware ESXi nach ProxMox VE, bzw. KVM

Es gibt schon einige Anleitungen zu dem Thema und bei mir wird es auch nichts neues geben. Es muss auch nicht ProxMox sein, wer nur nach KVM direkt will findet hier auch was er braucht.

Die Hauptschwierigkeit wird wohl sein die Daten vom ESXi runter zu bekommen, da der kostenlose ESXi nun mal ein paar Einschränkungen hat. Nicht nur die busybox sonder auch die Bandbreite.

Es gibt noch Software von Veeam die das runterkopieren beschleunigen soll trotz der ESXi Einschränkungen, doch wenn ich das so richtig gelesen habe ist das kein Teil der kostenlosen Version, sondern fängt so ab 800 Euro an.

Zur Geschwindigkeit hab ich schon einiges gelesen, aus Erfahrung würde ich persönlich sagen, wer 7,5 MBits beim runterkopieren erreicht liegt schon richtig gut.

Also fangen wir endlich mal an, genug gelabert.

Die VM muss natürlich runter gefahren sein. Es sollten keine Snapshots mehr existieren (also Snapshot konsolidieren wer welche noch rumligen hat).

Falls der vmdk File nicht auf Thin angelegt ist sollte man das jetzt machen. In der ESXi shell (ich hoffe mal ihr habt root Zugang und die shell schon angeschalten) gibt es die vmkfstools.

Der Syntax ist wie folgt:

vmkfstools -i input output -d format -a adaptertype

Beispiel:

vmkfstools -i "/vmfs/volumes/Datastore/examplevm/examplevm.vmdk" "/vmfs/volumes/Datastore/newexamplevm/newexamplevm.vmdk" -d thin -a buslogic

(adaptertape hab ich aber auch schon weg gelassen)

So jetzt haben wir einen File den wir mit nehmen wollten. Es gibt jetzt ein paar Möglichkeiten. Ihr könntet sogar über vSphere den File direkt vom Datastore auf Euren Rechner runter laden. Doch wir wollen hier ja ein Sinnvolles Beispiel nehmen. Also in meinem Fall hab ich einen ProxMox Server im Rechenzentrum stehen und wir ziehen das File direkt rüber mittels ganz normalem scp.

Da dies natürlich durch die Einschränkungen des ESXi furchtbar langsam ist wollen wir noch etwas Luft aus dem File lassen. Entweder ihr zipped das Ding auf dem ESXi vor dem transfer oder ihr verpackt es über remote während des transfers. Sieht dan beispielhaft so aus:

ssh root@meinvmserver.com "tar czvf - /vmfs/volumes/5345b5te-ec2864d2-56rt-002c219c16cb/MeineVM/meinevm-flat.vmdk" > copierte-meinevm-flat.vmdk.tar.gz

Kurze Bemerkung, ihr werden zwei Files zu kopieren haben. Den meinevm.vmdk und meinevm-flat.vmdk. Der erste und deutlich kleiner ist eigentlich nur der file descriptor (also der File der sagt was im anderen drin ist).

Also jetzt nutzen wir in unserem Fall mal die ProxMox Kiste um das Ding remote zu packen und zu uns zu ziehen. Folgende Bottelnecks sind vorhanden:

  • ESXi Netzwerkbegrenzung
  • Packen nur auf einem Prozesor Kern

Zu überlegen wäre noch ob man sich einen Packer installiert der mehr Kerne verwendet, hab ich so noch nicht probiert doch die Kandidaten wären lbzip2 und pbzip2. Hier muss man jetzt wirklich entscheiden je nach der gegebenen Situation und Hardware ob und was man sich an tut.

So auf dem anderen Server an gekommen, erstmal das Ding wieder entpacken.

Da ich es gleich im ProxMox wiedr verwenden will sollte es möglich sein en File direkt zu nutzen, aber da ich kein Fan von vmdk bin konvertiere ich erstmal nach qcow2.

qemu-img convert -f vmdk copierte-meinevm.vmdk -O qcow2 copierte-meinevm.qcow2

Der Rest ist jetzt nur noch ein wenig rum klicken. Ab ins ProxMox Webinerface. Eine hübsche VM anlegen. Noch nicht starten. Rein auf die Konsole und den angelegten Festplatten File unserer neuen VM mit unserem kopierenten ersetzen.

Als Bemerkung man sollte bei der neuen VM die Festplatte so groß oder etwas größer angelegt haben als den, den man vom ESXi mitbringt.

So, jetzt die VM starten und mit SPICE oder noVNC odr was auch immer rein gehen und das Netzwerk anpassen und fertig.