Virtual Machines store their data on Virtual Disks. The data is written into a .vmdk file with the virtual machine name as the prefix (for example – virtualmachine01.vmdk). There are three types of virtual disks: Thick Provision Lazy Zeroed, Thick Provisioned Eager Zeroed, and Thin Provision, each with their own pros and cons.
In short: Thick provisioned disks allocate the required disk space at creation, while thin provisioned disks only allocate the minimum required space initially needed and can expand.
The difference between Eager Zeroed and Lazy Zeroed is how quickly the data on the physical disk is zeroed. Zeroing a disk means that the data on the blocks at the binary level is overwritten with 0’s – it is completely erased. In a Thick Provisioned Eager Zeroed virtual disk, the disk space is allocated during provisioning, meaning that it is unavailable for use by other virtual machines, and any data that was written on the physical device is immediately zeroed out. In a Thick Provisioned Lazy Zeroed virtual disk, the disk space is also allocated during provisioning similar to its Eager Zeroed counterpart, but the data on the physical disk is not zeroed out until the space is required. Thick Provisioned Lazy Zeroed has a faster creation time than Thick Provisioned Eager Zeroed due to not zeroing out all of the data curing creation, but has a lower chance of contiguous file blocks which results in reduced performance time during the initial write. However, blocks on both types of virtual disks are fully preallocated during creation.
For example, if you create a Thin Provisioned 20 GB virtual disk and a Thick Provisioned virtual disk of the same size, the Thin Provisioned will not allocate those 20 GB until something takes up the space (like an operating system) and it will still be usable by other virtual disks whereas the Thick Provisioned virtual disk will immediately allocate the entire 20 GB rendering that space unusable by other virtual disks. The Thick Provisioned virtual disk will also be limited to the 20 GB size allocated, whereas the Thin Provisioned will be able to grow as needed.
When the disk space is needed in a Thin Provisioned virtual disk, the disk will grow. When the data is removed, the .vmdk will shrink but the datastore does not shrink, meaning that the datastore for the virtual disk will always be at the largest size that the virtual disk ever grows to.
Thin Provisioning allows for overprovisioning of disks, which can create issues and is generally bad practice, but can be done if completely necessary. For example, if you have a 100 GB datastore, you can fit you can fit 5 Thick Provisioned 20 GB virtual disks, or upwards of 10 or more Thin Provisioned 20 GB virtual disks since the data will not be written until needed. However, this requires active monitoring and management to avoid issues.
The default virtual disk type for VMware virtual disks is Thick Provision Lazy Zeroed, which offers the middle ground of fast creation time and fast performance, however Thick Provisioned Eager Zeroed is the only virtual disk that allows virtual machines to take advantage of VMware vSphere Fault Tolerance.
One of the benefits of virtualization in the first place is the ability to densify and consolidate assets such as disk space, so many admins consider Thick Provisioning to be a waste of resources. A good rule of thumb to go by is to go with Thin Provisioned unless there are specific use-cases for Thick, such as performance requirements.