Home / Virtualization / VMware Virtual machine config file is invalid – vmx restore

VMware Virtual machine config file is invalid – vmx restore

Eine Fehlermeldung die jedem Admin das Herz kurz in die Hose rutschen lässt. Ihr wollt eine Virtuelle Maschine Starten und bekommt den Fehler „Virtual machine config file is invalid“ – Keine Panik! Das Problem ist meist nicht so schlimm wie es sich anhört. Die .vmx File kann anhand der Logs ganz einfach restored werden, egal ob Windows oder Linux. Hier eine Anleitung dazu.

failure

1. Logfiles finden, die wir für den Restore verwenden können

Wechselt einfach im Explorer oder in der Commandline in das Verzeichnis, in dem eure Virtuelle Maschine abgelegt ist. Hier solltet ihr in folgender Struktur auch die Logfiles dazu sehen. Achtet hierbei auf das Datum der Files. Wenn ihr an der Konfiguration der VM nie etwas geändert habt, dann könnt ihr natürlich die älteste Datei verwenden. Wenn ihr euch aber nicht sicher seid, oder in letzter Zeit irgenwelche Änderungen an der Konfiguration durchgeführt habt, dann verwendet lieber die jüngste Logfile. Im Idealfall vom gestrigen Tag.

27.03.2009  00:32            19.811 vmware-0.log
26.03.2009  23:24           271.401 vmware-1.log
10.03.2009  21:42           216.698 vmware-2.log
01.04.2009  11:42            35.386 vmware.log
01.03.2007  23:55                 0 Windows Server 2003 Standard Edition.vmsd
01.04.2009  11:42               976 Windows Server 2003 Standard Edition.vmx

Anmerkung:
Sichert euch auf jeden Fall vor jeglichen Änderungen die vmx File, oder benennt diese am Besten einfach um.

2. Logfile kopieren und anpassen

Wir kopieren nun die Logfile, aus der wir die vmx File restoren wollen. Ihr könnt die Datei gleich so benennen wie die .vmx Datei vorher hieß. In meinem Fall: Windows Server 2003 Standard Edition.vmx.

Öffnet diese Datei nun mit eurem Lieblingseditor. (Win: notepad, wordpad,…) ( Linux: vi, piko, …)

Die Datei sollte dann ähnlich aussehen, wie diese hier:

Jan 27 18:22:03: vmx| PowerOn
Jan 27 18:22:03: vmx| Host: WIN32 highest NUMA node 0
Jan 27 18:22:03: vmx| Host: WIN32 NUMA node 0, CPU mask 0x000000000000000f
Jan 27 18:22:03: vmx| HOST Windows version 5.2, build 3790, platform 2, "Service Pack 2", SMP
Jan 27 18:22:03: vmx| DICT --- USER PREFERENCES
Jan 27 18:22:03: vmx| DICT --- USER DEFAULTS
Jan 27 18:22:03: vmx| DICT --- HOST DEFAULTS
Jan 27 18:22:03: vmx| DICT            datastore.name = local
Jan 27 18:22:03: vmx| DICT       datastore.localpath = C:\Virtual Machines\
Jan 27 18:22:03: vmx| DICT prefvmx.useRecommendedLockedMemSize = TRUE
Jan 27 18:22:03: vmx| DICT             defaultVMPath = D:\vm
Jan 27 18:22:03: vmx| DICT          priority.grabbed = normal
Jan 27 18:22:03: vmx| DICT        priority.ungrabbed = normal
Jan 27 18:22:03: vmx| DICT --- SITE DEFAULTS
Jan 27 18:22:03: vmx| DICT            datastore.name = local
Jan 27 18:22:03: vmx| DICT       datastore.localpath = C:\Virtual Machines\
Jan 27 18:22:03: vmx| DICT prefvmx.useRecommendedLockedMemSize = TRUE
Jan 27 18:22:03: vmx| DICT             defaultVMPath = D:\vm
Jan 27 18:22:03: vmx| DICT          priority.grabbed = normal
Jan 27 18:22:03: vmx| DICT        priority.ungrabbed = normal
Jan 27 18:22:03: vmx| DICT --- COMMAND LINE
Jan 27 18:22:03: vmx| DICT --- CONFIGURATION
Jan 27 18:22:03: vmx| DICT            config.version = 8
Jan 27 18:22:03: vmx| DICT         virtualHW.version = 4
Jan 27 18:22:03: vmx| DICT             scsi0.present = TRUE
Jan 27 18:22:03: vmx| DICT          scsi0.virtualDev = lsilogic
Jan 27 18:22:03: vmx| DICT                   memsize = 384
Jan 27 18:22:03: vmx| DICT           scsi0:0.present = TRUE
Jan 27 18:22:03: vmx| DICT          scsi0:0.fileName = hdd\hdd0.vmdk
Jan 27 18:22:03: vmx| DICT            ide1:0.present = TRUE
Jan 27 18:22:03: vmx| DICT           ide1:0.fileName = auto detect
Jan 27 18:22:03: vmx| DICT         ide1:0.deviceType = cdrom-raw
Jan 27 18:22:03: vmx| DICT           floppy0.present = FALSE
Jan 27 18:22:03: vmx| DICT         Ethernet0.present = TRUE
Jan 27 18:22:03: vmx| DICT               displayName = Windows Server 2003 Standard Edition
Jan 27 18:22:03: vmx| DICT                   guestOS = winnetstandard
Jan 27 18:22:03: vmx| DICT          priority.grabbed = normal
Jan 27 18:22:03: vmx| DICT        priority.ungrabbed = normal
Jan 27 18:22:03: vmx| DICT           scsi0:1.present = TRUE
Jan 27 18:22:03: vmx| DICT          scsi0:1.fileName = hdd\hdd1.vmdk
Jan 27 18:22:03: vmx| DICT         ide1:0.autodetect = TRUE
Jan 27 18:22:03: vmx| DICT              scsi0:0.redo =
Jan 27 18:22:03: vmx| DICT              scsi0:1.redo =
Jan 27 18:22:03: vmx| DICT     ethernet0.addressType = generated
Jan 27 18:22:03: vmx| DICT             uuid.location = 56 4d f6 69 77 41 cf ed-fb c0 5a dd 0f 50 a1 ec
Jan 27 18:22:03: vmx| DICT                 uuid.bios = 56 4d f6 69 77 41 cf ed-fb c0 5a dd 0f 50 a1 ec
Jan 27 18:22:03: vmx| DICT ethernet0.generatedAddress = 00:0c:29:50:a1:ec
Jan 27 18:22:03: vmx| DICT ethernet0.generatedAddressOffset = 0
Jan 27 18:22:03: vmx| DICT            tools.syncTime = FALSE
Jan 27 18:22:03: vmx| DICT  Ethernet0.connectionType = bridged
Jan 27 18:22:03: vmx| DICT            Ethernet0.vnet = VMnet2
Jan 27 18:22:03: vmx| DICT                workingDir = .
Jan 27 18:22:03: vmx| DICT                 autostart = poweron

Jan 27 18:22:03: vmx| DICT --- USER DEFAULTS
Jan 27 18:22:03: vmx| DICT --- HOST DEFAULTS
Jan 27 18:22:03: vmx| DICT            datastore.name = local
Jan 27 18:22:03: vmx| DICT       datastore.localpath = C:\Virtual Machines\
Jan 27 18:22:03: vmx| DICT prefvmx.useRecommendedLockedMemSize = TRUE
Jan 27 18:22:03: vmx| DICT             defaultVMPath = D:\vm
Jan 27 18:22:03: vmx| DICT          priority.grabbed = normal
Jan 27 18:22:03: vmx| DICT        priority.ungrabbed = normal
Jan 27 18:22:03: vmx| DICT --- SITE DEFAULTS
Jan 27 18:22:03: vmx| DICT            datastore.name = local
Jan 27 18:22:03: vmx| DICT       datastore.localpath = C:\Virtual Machines\
Jan 27 18:22:03: vmx| DICT prefvmx.useRecommendedLockedMemSize = TRUE
Jan 27 18:22:03: vmx| DICT             defaultVMPath = D:\vm
Jan 27 18:22:03: vmx| DICT          priority.grabbed = normal
Jan 27 18:22:03: vmx| DICT        priority.ungrabbed = normal
Jan 27 18:22:03: vmx| DICT --- GLOBAL SETTINGS
Jan 27 18:22:03: vmx| WSSCAN: reserved mem (in MB) min=32 max=8056 recommended=8056
Jan 27 18:22:03: vmx|         hostMem=8184 maxAllowedAll=-1 maxAllowedVM=3600
Jan 27 18:22:03: vmx|         totOverhead=16

Für uns ist jetzt der Teil zwischen –CONFIGURATION und — USER DEFAULTS wichtig.
In der Log farblich hervorgehoben. Die Zeilen ober- und unterhalb können somit entfernt werden. Diese werden für die vmx nicht benötigt.

Nun müssen wir einige optische Korrekturen vornehmen:
Als erstes entfernen wir den Timestamp + Bezeichnung + Leerzeichen vor jeder Zeile.

Jan 27 18:22:03: vmx| DICT            config.version = 8

Die erste Zeile in meinem Bespiel nach der Bearbeitung:

config.version = 8

Im zweiten Schritt müssen die Werte unter “ (Anführungszeichen) gestellt werden:
(Das Ergebnis sollte wie folgt aussehen)

config.version = "8"

Diese Schritte müssen nun auch auf die restlichen Zeilen angewendet werden.
Eure Konfiguration sollte dann in etwa so aussehen:

config.version = "8"
virtualHW.version = "4"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
memsize = "384"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "hdd\hdd0.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.deviceType = "cdrom-raw"
floppy0.present = "FALSE"
Ethernet0.present = "TRUE"
displayName = "Windows Server 2003 Standard Edition"
guestOS = "winnetstandard"
priority.grabbed = "normal"
priority.ungrabbed = "normal"
scsi0:1.present = "TRUE"
scsi0:1.fileName = "hdd\hdd1.vmdk"
ide1:0.autodetect = "TRUE"
scsi0:0.redo = ""
scsi0:1.redo = ""
ethernet0.addressType = "generated"
uuid.location = "56 4d f6 69 77 41 cf ed-fb c0 5a dd 0f 50 a1 ec"
uuid.bios = "56 4d f6 69 77 41 cf ed-fb c0 5a dd 0f 50 a1 ec"
ethernet0.generatedAddress = "00:0c:29:50:a1:ec"
ethernet0.generatedAddressOffset = "0"
tools.syncTime = "FALSE"
Ethernet0.connectionType = "bridged"
Ethernet0.vnet = "VMnet2"
workingDir = "."
autostart = "poweron"

Zum Abschluss müsst ihr lediglich eure Datei als *.vmx speichern und wie die alte Datei benennen, falls ihr diese nicht kopiert habt. (wie bei mir Windows Server 2003 Standard Edition.vmx). Nun könnt ihr eure Virtuelle Maschine wieder wie gewohnt starten.

4.4/5 - (13 votes)

Auch cool

VMWare-Aktie: Das Geschäft mit der Virtualisierung

Lange Zeit war das amerikanische Unternehmen VMware der unbestrittene Marktführer im Bereich der Server-Virtualisierungen. Nach …

4 Kommentare

  1. Fantastisch!!! This is a life-saver. Making an backup of all my vmx-files immediately!

  2. you made my Day !!

    Nie wieder StorageVmotion. Da fasst man einmal alle 10 Jahre eine Prod Maschine an und dann gehts schief!
    Dank Deines Tipps hat sich meine Fa. 13k Euro Pönale gespart!

    Vielen Dank

    • Hi DaKine69,

      Ja wie gesagt, diese Fehlermeldung ist auf den ersten Blick die Hölle für jeden Admin 😉
      Freut mich dass dich die Anleitung weitergebracht hat, und 13k ist ja eine beachtliche Summe *g*

      Gruss
      Patrick

  3. Auch von hier vielen Dank! Nach dem Problem „config file invalid“ gegoogelt. Artikel gefunden und gleich eine Lösung. Super! 🙂