viperagp - Fotolia

Wie lässt sich eine fehlende VMDK Descriptor-Datei wiederherstellen?

Die Descriptor-Datei spielt eine wichtige Rolle für VMDK-Dateien. Wie lassen sich fehlende Descriptor-Dateien ohne Backup wiederherstellen?

VMware-Admins sollten sich immer über die Architektur einer virtuellen Maschine im Klaren sein. Auch wenn es unterschiedlichste Typen von VM-Dateien gibt, so gibt es doch lediglich drei primäre Disk-Dateitypen: .nvram, .vmx und eben .vmdk.

Die NVRAM-Datei enthält den BIOS-Zustand der virtuellen Maschine für Reboots, die VMX-Datei Konfigurationsinformationen und Hardwareeinstellungen und die VMDK-Datei schließlich besteht aus einer größeren Datei und der kleineren Descriptor-Datei. In diesem Zusammenhang interessiert uns jetzt vor allem die Descriptor-Datei der VMDK-Datei.

Innerhalb einer virtuellen Maschine kann es durchaus mehrere VMDK-Dateien geben. So könnte eine VM beispielsweise eine virtuelle Festplatte für das Betriebssystem und eine für die Datenspeicherung haben.

In VMware-Umgebungen liegt die maximale Anzahl an möglichen virtuellen Festplatten bei 15 pro virtuellen SCSi-Controller. Bei maximal vier SCSCi-Controllern (allerdings werden selten mehr als zwei konfiguriert) kommt man so auf maximal 60 virtuelle Festplatten pro virtueller Maschine.

Typischerweise erhalten virtuelle Festplatten eine Bezeichnung, die sich auf die virtuelle Maschine bezieht, gefolgt von der Dateiendung .vmdk. Abbildung 1 zeigt eine virtuelle Maschine mit zwei virtuellen Festplatten.

Virtuelle Maschine mit zwei virtuellen Festplatten.
Abbildung 1: Virtuelle Maschine mit zwei virtuellen Festplatten.

Betrachtet man die VMDK-Dateien in Abbildung 1, dann sieht man Dateien mit dem VM-Namen und mit einem angehängten _1, also beispielsweise WinFS01.vmdk und WinFS01_1.vmdk. Bei zusätzlichen Festplatten wird meist einfach eine fortlaufende Nummer angehängt. Zusätzlich sind aber auch für beide Festplatten Dateien mit einem auf ähnliche Weise angehängten –flat vorhanden. Diese Dateien enthalten letztlich tatsächlich die Dateien der virtuellen Maschine.

Die Datei vmname.vmdk dagegen ist lediglich die Descriptor-Datei, die die Architektur der virtuellen Maschine beschreibt. Falls diese Datei verloren geht oder versehentlich gelöscht wird, kann sie auch wiederhergestellt werden.

Die einfachste Variante wäre das Wiederherstellen der Descriptor-Datei von einem bestehenden Backup. Falls kein Backup für die Wiederherstellung vorhanden ist, kann aber auch eine neue Festplatte mit exakt den gleichen Spezifikationen erstellt werden, um anschließend die neu erstellte Descriptor-Datei auf die ursprüngliche Disk-Datei flat.vmdk verweisen zu lassen.

Hierfür greift man über Secure Shell (SSH) auf den ESXi-Host zu und sucht die Größe der flat.vmdk-Datei im VM-Ordner des Datastores. Um die exakte Anzahl an Bytes zu erhalten, kann der Befehl ls -l verwendet werden. Mit diesen Informationen kann über den Befehl vmkfstools wie in Abbildung 2 zu sehen eine Festplatte mit genau der gleichen Größe erstellt werden:

vmkfstools -c <Größe in Bytes> tempdisk.vmdk

vmkfstools-Befehl zum Erstellen einer neuen Festplattendatei.
Abbildung 2: vmkfstools-Befehl zum Erstellen einer neuen Festplattendatei.

Über den zusätzlichen Parameter -d thin kann auch eine Disk im Thin-Provisioning-Format erstellt werden. Diese Variante ist schneller und belegt weniger Festplattenkapazität. Wichtig ist hierbei eigentlich nur, dass der neue Descriptor dem Format der Original-Datei entspricht. War diese sowieso als Thick Provisioning konfiguriert, sind keine weiteren Änderungen nötig. Bei Thin Provisioning kann entweder der Befehl -d thin verwendet oder der Descriptor-Datei die folgende Zeile hinzugefügt werden: ddb.thinProvisioned = "1".

Anschließend öffnet man die VMDK-Datei der temporären virtuellen Festplatte und ändert den Namen der temporären flat-Datei in den der originalen Datei mit der fehlenden Descriptor-Datei um. Ist dies geschehen, kann über den mv-Befehl der Name der temporären VMDK-Datei in den der fehlenden Descriptor-Datei geändert werden. Nun muss über den rm-Befehl lediglich noch die überflüssige temporäre flat-Datei entfernt werden.

Um zu überprüfen, ob die VMDK-Datei und die flat.vmdk-Datei ein konsistentes Paar bilden, kann der Befehl vmkfstools mit dem Parameter –e ausgeführt werden, wie Abbildung 3 zeigt.

Überprüfung von VMDK- und flat.vmdk-Datei.
Abbildung 3: Überprüfung von VMDK- und flat.vmdk-Datei.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Erfahren Sie mehr über Containervirtualisierung