Understanding Thin Provisioning
Thin provisioning is a method used for optimizing the efficiency of utilization of the available space in storage area networks (SAN). Thin provisioning operates by allocating disk storage space in a flexible manner among multiple users, based on the minimum space required by each user at any given time. It allows the creation of multiple VMs (Virtual Machines) on a physical hard drive as the hypervisor or virtual machine monitor (VMM) will only assign the amount of storage space predefined by the user. This feature successfully avoids the need of predicting the size of the needed storage space and enables to buy storage as per the organization’s requirement. As a result, while using VMware's thin provisioning feature, it is important to carefully monitor storage in order to avoid slower performance and potentially maxing out storage capacity.
Drawbacks of VMware thin provisioning
The amount of actual space consumed by the Virtual Machine Disk (VMDK) during thin provisioning starts out small. As the independent instance of an operating system (guest OS) commits more input-output (I/O) to the disk; the available storage grows in size until the maximum size limit is reached during the VMDK creation time. While thin provisioning offers multiple advantages to users in terms of scalability and cost reduction, there are a few disadvantages to VMware's vStorage thin provisioning discussed below:
Over Provisioned Storage
When the total virtual size is greater than the available storage size or when the storage is over-provisioned, the VMM or the hypervisor needs to carefully monitor the storage size and the actual usage and accordingly set the right threshold for identifying a situation when the system is about to run out of storage. If the hypervisor fails to identify the threshold, the entire system may halt depending on the implementation. Over-provisioning is not a concern itself as VMware includes inbuilt mechanisms to reduce the chances of any failure, but the potential exists for over-provisioned storage to run out of space if storage capacity isn't carefully monitored.
Performance against Thick Provisioning
• Storage fragmentation
In thick provisioning, the amount of storage capacity allocation is pre-defined at the time of disk creation while thinly provisioned storage is designed to allocate memory blocks on the basis of system’s real-time requirement. Hence, thin provisioning is susceptible to a higher degree of fragmentation than storage that has been thick-provisioned. Issues related to fragmentation heavily depend on the capabilities of the underlying storage hardware and on the use of disk storage. Some storage hardware makes use of a write algorithm designed to minimize fragmentation while it is not an issue for solid-state storage.
• VMDK thin provisioning
In order to update the metadata in a thinly provisioned VMDK, the Virtual Machine File System (VMFS) data store has to be locked every time a new block is added to the VMDK. If there are many VMDKs growing simultaneously, it can lead to performance issues. Although this locking process was originally done with Small Computer System Interface (SCSI) port reservations, alternative methods that are developed based on VMware's vStorage APIs for Array Integration and Atomic Test and Set are being used as they are less susceptible to performance problems.
Lack of Elasticity
Although thin provisioning allows expansion of disk space as per the requirement, it does not allow the reduction of storage space, thus making the technology rigid. If the data from a thin provisioned storage is deleted, the VMDK will shrink—availing more space in that data store, but it will not be available to the array controller for other purposes as the data store does not shrink.
The oversubscription problem can be alleviated by spreading the thin-provisioned capacity across many disk arrays—presenting the inventory with a larger capacity—instead of isolating the function to a single array of disks. This can be done by implementing thin provisioning across the entire storage infrastructure—the part of the infrastructure that is virtualized by the software and configured as a shared storage pool. Thin provisioning does not essentially address capacity management, but it helps to reduce the costly acquisition of hard disk drives until such acquisitions are merited by the actual need.