VDI export to VMDK results in a corrupted disk
-

-
Have you attempted to analyze the exported file using qemu-img?
For example:qemu-img info file.vmdk qemu-img check file.vmdk -
qemu-img.exe info Windows Server 2025.vmdk image: Windows Server 2025.vmdk file format: vmdk virtual size: 64G (68719476736 bytes) disk size: 64G cluster_size: 65536 Format specific information: cid: 2849992906 parent cid: 4294967295 create type: streamOptimized extents: [0]: compressed: true virtual size: 68719476736 filename: Windows Server 2025.vmdk cluster size: 65536 format:qemu-img.exe check Windows Server 2025.vmdk No errors were found on the image.It seems that the disk itself is formally OK, but the content is somehow corrupted.
-
It's possible that the issue lies within VMware Workstation.

-
I don't think it's a VMware issue. If the XO export created a VMDK with incorrect data block contents, qemu-img check can still complete without reporting any errors. It only means that it did not find any problems with the VMDK structure.
-
Iยดm not a developer so I asked Ai what it "thinks" about it...
โโโโโโโโโโโโโโโ โ XCP-ng VDI โ โโโโโโโโฌโโโโโโโ โ โ VDI_exportContent() โ format = VDI_FORMAT_VHD โผ โโโโโโโโโโโโโโโโโโโโ โ VHD stream โ โโโโโโโโโโฌโโโโโโโโโโ โ โ vhdToVMDK() โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ vhdToVMDKIterator() โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ โ parseVhdToBlocks() โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ parseVhdStream() โ โ โ โ VHD blocks โ โ { id, data } โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ โ onlyBlocks() โ โ lba = id * blockSize โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ POSSIBLE ERROR HERE Incorrect mapping of id โ data or incorrect block ordering โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ generateVmdkData() โ โ โ โ VHD block โ โ โ โ โ grainData โ โ โ โ โ createMarkedGrain() โ โ โ โ โ tableBuffer โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ โผ โโโโโโโโโโโโโโโโโโโโ โ VMDK stream โ โโโโโโโโโโฌโโโโโโโโโโ โ โผ โโโโโโโโโโโโโโโโโโโโ โ VMDK file โ โโโโโโโโโโโโโโโโโโโโ -
Ah, I see it now. What XO exports is the
streamOptimizedformat, which is used in OVAs for transfer. Such a standalone VMDK cannot be used directly and needs to be converted for both VMware Workstation and ESXi
, or you can use the OVA import, which performs the conversion automatically.So before such a VMDK can be attached to a VMware VM, it needs to be converted to
monolithicSparsee.g.:qemu-img.exe convert -p -f vmdk -O vmdk -o subformat=monolithicSparse WS25.vmdk WS25-2.vmdk -
A abudef has marked this topic as solved
-
So in the end, I think the best approach is to export the VHD and convert it, because the conversion has to be done anyway, and the native VHD export is faster.
-
It might be worth adding a message in XO at export, or in the documentation ?
-
@Emmanuel-V In my opinion, it would make more sense if a standalone disk exported in VMDK format were exported directly as
monolithicSparse, so that it would not need to be converted. This makes more sense to me because when only the disk is exported, rather than the entire VM (OVA), it can be assumed that the disk will be attached directly to some VM.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better ๐
Register Login