I’ve never been a fan of (nor seen much reason in) splitting VMDKs into 2GB chunks… though that is often the default setting when creating a virtual machine. However, the other day I found a pretty good reason. When you split your VMDK, VMware creates a single VDisk.VMDK meta file, and several VDisk-s001.VMDK files (which actually contain the data). The meta file is a pretty simple text file with contents that look something like this: [more]

# Disk DescriptorFile
version=1
encoding="windows-1252"
CID=9fb33447
parentCID=ffffffff
isNativeSnapshot="no"
createType="twoGbMaxExtentSparse"

# Extent description
RW 4192256 SPARSE "vdisk-s001.vmdk"
RW 4192256 SPARSE "vdisk-s002.vmdk"
RW 4192256 SPARSE "vdisk-s003.vmdk"
RW 4192256 SPARSE "vdisk-s004.vmdk"
RW 4192256 SPARSE "vdisk-s005.vmdk"
RW 4192256 SPARSE "vdisk-s006.vmdk"
RW 4192256 SPARSE "vdisk-s007.vmdk"
RW 4192256 SPARSE "vdisk-s008.vmdk"
RW 4192256 SPARSE "vdisk-s009.vmdk"
RW 4192256 SPARSE "vdisk-s010.vmdk"
RW 4192256 SPARSE "vdisk-s011.vmdk"
RW 4192256 SPARSE "vdisk-s012.vmdk"
RW 2121728 SPARSE "vdisk-s013.vmdk"

# The Disk Data Base
#DDB

ddb.deletable = "true"
ddb.virtualHWVersion = "7"
ddb.toolsVersion = "8259"
ddb.longContentID = "0bdf39e8f7c80d6f09a431949fb33447"
ddb.uuid = "60 00 C2 9e da ee dc 72-7f ba f5 58 c8 a7 75 58"
ddb.geometry.cylinders = "3263"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "lsilogic"

The nice thing about this is you can edit the paths to the SPARSE files. This can allow you to put the SPARSE files in a “template” directory for VM clones (preferably read only), then just edit the meta file to point to your template directory. Whenever you want to create a clone, just copy the meta file VMDK to the new VM directory, edit the paths (can be relative or full), and then snapshot your new clone (to make sure it doesn’t change the template files… which would break all your linked clones!).