Advantages of thick provisioning of storage over thin provisioning with virtual machines

I typically use thin-provisioning of storage space when building VMs: it provides a lot of flexibility, and seems to be faster to build.

The only potential definite advantage I can see is to ensure that a VM doesn't accidentally run out of available space on the underlying storage infrastructure - are there others?


Solution 1:

Thin provisioned disks cannot be shrunk; once you've allocated all the blocks, that's it.

Also, unless you do a Quick Format, Windows will actually fill the entire thin provisioned disk.

There may also be a performance penalty, but that I'm not 100% certain of and is something that should be tested out; I know that was the case with some host-based hypervisors.

Solution 2:

Other unmentioned culprits:

  • thin provisioned drives can become heavily fragmented very easily. If you can't defragment the hosting device, it can hurt performance very badly.
  • if you ever run out of real disk space on thin provisioned storage where you over-allocated space, any write can bring a catastrophic failure on one or several VM drives, usually beyond any repair, so you'd better monitor your actual disk usage on the storage host carefully.

Solution 3:

sparse disks have an extra performance overhead hit, because monitoring their size and extending it when required takes up resources. Not too much really, but it depends on the resources you have at hand. For some setups, disk space is of no matter, so everything is preallocated to improve performance, for others, there's enough CPU cycles and IOPS, but the storage space is limited (especially when using SSD based storage), so it's preferable to use sparse disks

Solution 4:

The main advantages of Thick-provisioning are:

  • Hard Drive allocation is more likely to use contiguous blocks, so less fragmentation on the physical platters
  • Physical disk space is allocated immediately, so you will not fall into the trap of over-provisioning.

The main disadvantages are:

  • Disk provisioning will take longer because it needs to fully claim that space
  • Even capacity unused by a given VM is used up in the allocation.