ESX doesn't like Vmdks converted via VirtualDiskConverter

May 18, 2010 at 1:48 PM


I get an error with vmdk disks converted via the VirtualDiskConverter of discutils.
Before convertion the disks were vhds. I converted them to VMDKDynamic-vmfs via the

Using theses disks in ESXi will always prompt me the error >No space left on database ''.<
And in the log of the virtual machine there I find the error >ChainESXOpenSubChainNode: can't create deltadisk node 4fd144ee-test-sparse.vmdk failed with error No space left on device<

I have 60 GB space left and disk is 10GB sized so enough space!

Has anyone else had this problem?

Ciao Ephraim

May 26, 2010 at 7:46 AM

So, my tests brought the following results. When I import such a disk, it is always tought to be thick provisioned and so isn't allowed to allocate more space. Even when I add ddb.thinprovisioned = 1 to the disks diskdefinition file.

I think the ESXi isn't compatible with the hardware version 4 of the disk ...


going back to testing

May 26, 2010 at 1:52 PM

Further results.

I think vmfsSparse of ESX is not the correct counterpart to VMDK-Dynamic of Workstation, rather than vmfsFixed with the property ddb.thinProvisioned = 1.

But I can't use a discutils VMDK-vmfsdynamic vmdk as a vmfs VMDK with thinProvisioned. It recognizes the disk always of type thick :(.

Any ideas?

Ciao Ephraim

May 29, 2010 at 7:42 AM

Hi Ephraim,

What happens if you download / upload a VMDK created using ESXi, without using DiscUtils - does that show the same behaviour?




May 31, 2010 at 8:45 AM

Hey Ken,

when I download a thin provisioned Disk from ESXi, it'll be flatten, so I have no idea what is different. But when I upload a VM (with a dynamic VMDK or dynamic VHD) with the VMWare Converter, the disk is thin provisioned in ESXi.
Does that answer your question?

May 31, 2010 at 11:20 AM

Ah - that's a little different.

VMWare converter doesn't actually upload VMDKs, it transfers the contents of the disk at block level.

I think you could do something similar by interfacing with VMWare's VDDK library - it allows you to read & write the blocks of a virtual disk, rather than doing a VMDK upload.



May 31, 2010 at 11:28 AM

Yeah I know. Thats why it works.

When I use the vSphere Client to directly upload the vmdk's created by discutils, it won't recognize them as thin provisioned.
And thats the cause why the disk then doesn't get enough space. So when you start the VM then, you'll get an error.

When I upload vmfsFixed it works so far.

So, you think that just the upload via vSphere Client isn't working? Might be.

Ciao Ephraim

May 31, 2010 at 1:05 PM

Here's an experiment:

  • Create an empty 50MB thin-provisioned disk
  • In vSphere client, you'll see only a tiny amount of storage used (2.6KB)
  • Use the vSphere client datastore browser to download the VMDK to your local disk
  • On the Windows file system, you'll see the file is now 50MB (i.e. its grown to full size)
  • Now, use the vSphere client datastore browser to re-upload the two related VMDK files
  • In the vSphere client, you'll see the full 50MB as in-use by the disk

From my perspective, tells me it's unlikley that anything can be done in DiscUtils to make this work - the vSphere client doesn't know how to manipulate thin-provisioned VMDKs.

Solution is to design a system that only writes the populated areas of the disk back to the server.  VDDK may work, or you need to create some kind of short-lived 'transfer' VM that you can attach a target disk to, and then use something like iSCSI back to that VM, to write the populated blocks.



Jul 21, 2010 at 1:42 PM

Back to this Issue :).

Hey Ken,

as you mentioned, vSphere will always download flat disks. But when you upload a disk, it's size is not changed.

So create a vmdk vmfsSparse file, which is the vmdk dynamic counter part on the esx and upload this to ESX via vSphere.
No problem so far, but when you now try to use this disk in a virtual machine, you'll always get the error "No space left on the device", doesn't matter how much GigaByte you have free space.


Looking at the log, which is generated when you start that virtual machine, reveals the real problem. Opening a vmfsSparse file will need to create a deltadisk to be used and this can't be created.
Why ... I don't know.

Jul 18 23:06:40.383: vmx| DISKLIB-DSCPTR: Opened [0]: "virtualDisk_C-sparse.vmdk" (0xa)
Jul 18 23:06:40.383: vmx| DISKLIB-LINK : Opened '/vmfs/volumes/4c405e6d-563b6c1c-94f9-000c298538ba/winxp/virtualDisk_C.vmdk' (0xa): vmfsSparse, 203184000 sectors / 96.9 GB.
Jul 18 23:06:40.383: vmx| DISKLIB-CHAINESX : ChainESXOpenSubChain: numLinks = 1, numSubChains = 1
Jul 18 23:06:40.429: vmx| DISKLIB-CHAINESX : ChainESXOpenSubChainNode: can't create deltadisk node 69dbb478-virtualDisk_C-sparse.vmdk failed with error No space left on device
Jul 18 23:06:40.429: vmx| DISKLIB-CHAIN : "/vmfs/volumes/4c405e6d-563b6c1c-94f9-000c298538ba/winxp/virtualDisk_C.vmdk" : failed to open (No space left on device).
Jul 18 23:06:40.430: vmx| DISKLIB-VMFS : "/vmfs/volumes/4c405e6d-563b6c1c-94f9-000c298538ba/winxp/virtualDisk_C-sparse.vmdk" : closed.
Jul 18 23:06:40.430: vmx| DISKLIB-LIB : Failed to open '/vmfs/volumes/4c405e6d-563b6c1c-94f9-000c298538ba/winxp/virtualDisk_C.vmdk' with flags 0xa (No space left on device).
Jul 18 23:06:40.431: vmx| DISK: Cannot open disk "/vmfs/volumes/4c405e6d-563b6c1c-94f9-000c298538ba/winxp/virtualDisk_C.vmdk": No space left on device (1835017).


Creating a dynamic disk on the esx and downloading the descriptor file shows that a dynamic disk on esx is not vmfsSparse, rather then vmfs with ddb.thinprovisioned = 1 ...
what the differences in the content of the disk are, I can't say so far, but I think vmfsSparse is not the correct counter part to vmdk dynamic from VMware workstation.


What do you think Kev? ...

Ciao Ephraim

Jul 21, 2010 at 8:54 PM

I've never managed to figure this out - it's like ESX is only coded to use vmfsSparse for differencing disks/snapshots.  Very odd.

Jul 22, 2010 at 8:55 AM

Hey Ken,

the problem isn't that important anymore, as I managed to upload and convert the virtual disks with the VDDK.

Thanks for your help.

Ciao Ephraim