VMware ESX VM Resurrection from flat.vmdk file
Recreating a missing .vmdk descriptor file on ESX.
Access the ESX command line and navigate to the virtual disk (you can use putty)
list the file in Virtual Machines directory:
[root@esx03 ONLINEBACKUP]# ls -ltr *.vmdk
you should see something like
-rw——- 1 root root 107374182400 Jul 19 07:32 ONLINEBACKUP-flat.vmdk
[root@esx03 ONLINEBACKUP]# less *.vmx | grep -i virtualdev
ethernet0.virtualDev = “e100”
so here its usuing “lsilogic”
next piece of information is exact size of the flat .vmdk file. to identify the sexact size of the flat. vmdk virtual disk:
ls -l *.-flat.vmdk
should see something like
-rw——- 1 root root 107374182400 Jul 19 07:32 ONLINEBACKUP-flat.vmdk
but the .vmdk desctiptor file missing.
two piece of information we need to recreate this missing file,
1) type of scsi controller and
2) vmdk file size
identify the scsi controller type in use by the virtual disk: less *.vmx | grep -i virtualdev
you shold see something like
scsi0.virtualDev = “lsilogic”
-rw——- 1 root root 107374182400 Jul 19 07:32 ONLINEBACKUP-flat.vmdk
in this case the file size is 107374182400
now we need to use the vmkfstools command to create a temporary virtual disk (flat.vmdk) and as associated .vmdk descriptor file
use the command: vmkfstools -c filesize -a scsi type -d thin filename.vmdk so for my example it will look like this
vmkfstools -c 107374182400 -a lsilogic -d thin temp.vmdk
so now we have a tem.vmdk file exact size as -flat.vmdk with all the associated files, just to check:
ls -ltr *.vmdk
this will list temp descriptor .vmdk file which we will now use to resolve the issue.
rename the temp.vmdk file to match the problem -flat.vmdk to do this use:
mv temp.vmdk ONLINEBACKUP.vmdk
now we need to change the descriptor file, we need to edit the desctiptor file to now point to the correct -flat.vmdk file
use:vi ONLINEBACKUP.vmdk
the part you need to change is Extent description and replace them temp-flat.vmdk with correct filename-flat.vmdk in my example it will be ONLINEBACKUP.vmdk and save changes.
there is one more part you need to check if the original vmdk was thin provisioned, if the original -flat file was not think provisioned the remove the line from desctiptor title “dd.thinProvisioned = “1”
you can verify if the original was thin provisioned or not by:
du -h *.vmdk
take a not of the temp-flat.vmdk and original vmdk file.
that should do the trick. start the VM.
Categorised as: Virtual Infrastructure, VMWare/ESX
Leave a Reply
You must be logged in to post a comment.