I'm looking for a good solution to a VMware ESXi environment issue where there's no vCenter available.
What's the best way to move a VM from one datastore to another on a single ESXi host, while maintaining the VMDK thin-provisioning?
This is a standalone server that's been expanded with another drive array/datastore. I'd like to move the data contained in the old array to the new.
Edit: The destination datastore size is actually smaller than the source. I do not have enough room to copy the thick file.
Just went through finding a way to do this myself. Here's a, hopefully, easy to follow guide on how to move your VM to a new datastore while preserving thin provisioning during the transfer (thus also reducing transfer times):
Step by step guide using vmkfstools in the CLI
mkdir "/vmfs/volumes/destination_datastore/Some VM"
vmkfstools -i "/vmfs/volumes/source_datastore/Some VM/Some VM.vmdk" -d thin "/vmfs/volumes/destination_datastore/Some VM/Some VM.vmdk"
find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep -v ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep [0123456789][0123456789][0123456789][0123456789][0123456789][0123456789] | grep ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
rm -rf "/vmfs/volumes/source_datastore/Some VM"
Note: Only tested with ESXi 5
Illustrations shamelessly copied from this blog.
You can also use File -> Export -> Export OVF template
and then import it. Last time I tried it, i think this does preserve the vmdk format. Not so sure now as it has been quite some time.
Check out this answer. The same logic applies in your situation, namely this quotation:
The only difference is that the source and destination hosts will be the same, but the datastores will differ. This does mean that the files will go from the ESXi host, to the Converter machine, then back to the host. It would be nice if Converter was "smart" and knew it was the same host. Unfortunately, that costs money.
CAVEAT: Converting the VM will generate a new MAC address for any network adapters. Most guest OSes interpret this as a new device.
Actually just create the folder at the target destination, then copy the files in the folder from the source and it will stay thin. If you copy the folder it will convert from thin to thick..
I would copy the file then reconvert to thin via vmkfstools.