Very strange problem with VMDK thin/thick disks

vmware-esxivmware-vmdk

I have some ESXi (4.1) virtual machines which were initially created using thin-provisioned disks, but where then physically moved to different datastores (all of them iSCSI); since these are stand-alone hosts, there is no vCenter Server available to manage them, so the operation was done from the ESXi command line using the mv command.

Now the VMs exhibit a rather interesting behaviour: the disk format in the VM settings is shown as "thick", the VMDK files do not have the ddb.thinProvisioned = "1" line, but the actual file size is much less than the virtual disk size. When examined via the Datastore Browser, it shows two different columns for "Size" and "Provisioned Size", just as it would do with a thin-provisioned disk.

Howewer, this doesn't seem to be a problem, as the machines are working fine.

Then, another copy of them was taken for backup purpose; this copy was also made from the command line, using the cp command, between two datastores on the same host (again, both of them iSCSI).

Then we lost the original VMs, and were in need of the backed-up ones.

And these don't work anymore, complaining about corruption of the VMDK files.

So, to recap:

  • VM created with thin-provisioned disk -> working
  • VM physically moved between two datastores -> disk shows as thick but behaves as thin, yet VM works fine
  • VM physically copied between two datastores -> disk behaves the same, VM doesn't work anymore

I tried manually editing the VMDK file to add the ddb.thinProvisioned = "1" line, but this didn't fix the problem. I tried inflating the virtual disk, cloning it and converting it: nothing works, every command complains about the disk being corrupted.

I'm in quite a struggle to bring these VMs up again; can someone please help?

Best Answer

Looks like physically copying thin-provisioned disks is a bad idea. VMFS does strange things with thin-provisioned disks, things that cp or mv can't cope with. Corruption ensues.

Don't do it. vmkfstools handles them much better (and safer).