When creating a virtual hard drive for a virtual machine, there are two methods to create it:
Creating the desired size of the virtual hard disk (as appears in the virtual machine itself by allocating the storage space in the host only when needed.
Creating the desired size of the virtual machine hard disk and allocating all the storage space from the datastore/storage space of the host.
Like every other thing, each method has is ups and downs, but many system architects I know prefer to go the “hard way” and to use the Thick Provisioning method, just in order to avoid possibility of “Over-Provisioning“
This is probably the most often honeypot every system administrator has, when working with large virtual environment.
When creating dozens of virtual machine , for production as well as test environment, we would usually prefer Thin Provisioning,
“I am going to create an operating system that will need 7 GB of storage, while I want to virtual hard drive to appear as 200 GB, why should I use the 200 GB from my storage when I don’t need it ?”
Snapshots, Backups, allocation time, etc. are more reasons why you would want to use thin-provisioning
Now imagine , you create 20 of these machines in a 1TB datastore,
Actually , in day 1 you will occupy only 140 GB of storage, but you have actually allow all the operating systems, together a total storage of 4TB.
This is Over-Provisioning!!
All the operating systems in your environment do not aware of the fact they can all use only 1TB of data, each is minding its own business, with its 200GB of data, but when the total occupied storage of all of them together will reach 1 TB, the data-store is full!!!
So please , when planning a virtual environment, please consider this carefully and decide which virtual machines can use this-provisioning and which should have thick-provisioning.