Convert VMDK to VHD fails with the entry 2 is not a supported disk database entry
Hi All
I have been playing around with a PBX platform that runs only on VMWare and of course in vmdk format. I was keen to use it in Hyper-V so I needed to build in VMWare and convert to Hyper-V after the fact. Microsoft provide a VMDK to VHD/VHDX converter tool called the Microsoft Virtual Machine Converter. You can download it here https://www.microsoft.com/en-us/download/details.aspx?id=42497.
The nice thing about the tool is that you can convert using Powershell the vmdks you have. Anyway, when I ran the conversion cmdlet I got the error below.
PS E:\VMDK> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\VMDK\vm1.vmdk -VhdType DynamicHardDisk -VhdFormat vhdx -DestinationLiteralPath e:\vmdk\vhdx
ConvertTo-MvmcVirtualHardDisk : The entry 2 is not a supported disk database entry for the descriptor.
At line:1 char:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\vmdk\vm1.vmdk - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVi
rtualHardDisk], VmdkDescriptorParseException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
ConvertTo-MvmcVirtualHardDisk : One or more errors occurred.
At line:1 char:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\vmdk\vm1.vmdk - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVi
rtualHardDisk], AggregateException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
So not being a VMWare guy I had not much idea of what the error was. Luckily others have hit the issue before and I stumbled onto a workaround on stackoverflow. https://stackoverflow.com/questions/37481737/error-when-converting-vmware-virtual-disk-to-hyperv. The recommendation was to use a dsfok toolset to update the vmdk descriptor information on the file, to make the Microsoft VM Converter tool happy. Once doing this it worked a treat. I used the commands
C:\scratch\dsfk\dsfok>dsfo.exe "e:\vmdk\vm1.vmdk" 512 1024 descriptor1.txt
OK, written 1024 bytes at offset 512
I then edited the descriptor1.txt file in Notepad++ and commented out the tools.InstallType attribute.
Then I needed to reapply the descriptor to the vmdk to make it convertible. You use the dsfi.exe tool to do that.
#After you edit the descriptor.txt file
C:\scratch\dsfk\dsfok>dsfi.exe "e:\vmdk\vm1.vmdk" 512 1024 descriptor1.txt
OK, written 1024 bytes at offset 512
You can get the dsfok tools from here https://www.softpedia.com/get/System/Back-Up-and-Recovery/dsfok.shtml
And yehhhh, now my VMDK convert Powershell is working……
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\VMDK\vm1.vmdk -VhdType DynamicHardDisk -VhdFormat vhdx -DestinationLiteralPath e:\vmdk\vhdx
Now to see if can get the VM running in Hyper-V. Fingers crossed as will be kewl to add to my SfB lab
Happy Skype'ing
Steve