The other day whilst discussing dynamically provisioned storage, I came across 3 different disk formats used within VMware and thought they worth worth noting. But first, lets talk about Dynamic Provisioning....
Dynamic provisioning allows storage to be allocated to an application without it being physically mapped until it is used, this results in higher storage utilization within the organization. *Great idea...however it needs to be managed carefully so that you don't over allocate and find yourself with no disk left*. This style of provisioning feeds from a storage pool which involves the grouping of identical raid groups and striping the data across all of the spindles respectively - LUN's are then cut from this pool and presented accordingly.
Now that this is explained, the following benefits can now be mentioned:
- Adding physical storage non-disruptively as needed - adding additional raid groups to the pool(s)
- Transparently spread individual I/O workloads across multiple physical disks to balance workloads
Here is a great illustration of this:
**In my next blog I will expand further on this and enter in to the territory of dynamic tiering which involves multiple pools configured for different levels of I/O load.
Now, as promised here is my explanation of the 3 disk formats used within VMware:
Thin Format
When a thin format is configured, the .vmdk file is allocated only to the size required by the guest operating system. As write operations occur, the additional space is allocated and zeroed out in the .vmdk - the virtual disk grows out to the maximum allotted size as required.
Zeroedthick Format (VMware default)
Zeroedthick Format (VMware default)
When a zeroedthick format is configured, the .vmdk file is entirely allocated but the space is not “pre-zeroed" out. As the guest operating system writes to the .vmdk the space is zeroed as needed, but the .vmdk file itself does not grow in size.
Eagerzeroedthick
When an eagerzeroedthick format is configured, the .vmdk file is the size allocated, and the unused space is zeroed out upon creation. As the guest operating system writes data to the .vmdk file the VMkernel does not need to write out zeros before the OS can access the storage. The result of this format is improved I/O latency but more back-end storage operations during the initial virtual disk creation.
**This disk format is required for virtual machines configured with VMware fault tolerance - when this option is enabled the disk will convert to eagerzeroedthick. NB: Fault Tolerance works by continuously replicating a virtual machine on to a another ESX host within the cluster, when a failure occurs the replicated instance assumes the primary role with zero down time for the OS or application.
