So, you want you take a vacation to Bahamas with your family to get a taste of some warm weather. You planned this months before so everything must go according to plan! However, once you arrive to the hotel with your family the receptionist tells you that there are no hotel rooms available because they are overbooked (hypothetically). At this point, there is no way you are satisfied and you have no idea where your family will sleep! You have your e-receipts up explaining to the receptionist that you reserved a room months ago.
Hotel management saw this tactic as the best way to optimize the use of their rooms; making it appear to customers that a room is available when that is not necessarily true. Now, the hotel is in a bit of a pickle trying to make sure you receive what you paid for and satisfy your needs.
So what now? Does the hotel have to somehow add more rooms? Would they have to relocate you to a new hotel in the area?
Well, in relation to the data center, let us think of the Bahamian hotel as a virtual disk (VMDK) and your family are a group of applications sitting on a virtual machine (VM). It is the responsibility of the VMDK to provide the VM with the resources it needs when the demand for the resources is present. In comparison, the hotel was “thin-provisioning” their resources (hotel rooms). Thin-provisioning is when disk space is flexibly allocated to multiple VMs (users) based on the minimum space required by the VMs at a given moment in time in storage area networks (SAN).
For example, in my infrastructure, let’s say I have a total of 120GB. I can create a virtual disk within a virtual environment that appears to have 60GB to the VM but the amount that is actually allocated is 20GB based on the minimum space that VM requires. The allocation of the 40GB left is delayed until the VM demands them at any given point in time. Purchasing storage for virtual environments isn’t a cheap task and some companies over-provision their environments and end up wasting space and money. Thin-provisioning helps datacenter operators in their attempts to keep utilization rates low and allocating resources to satisfy resource demands on the fly. But wait!
What if multiple VMs are demanding the same amount of resources? In my example earlier, what if I have another virtual disk that appears to have 80GB to the VM but 20GB are actually allocated. At a given time, if both of these VMs in my environment are requesting the max amount of resources they appear to have (80GB + 60GB equals 140 GB), then we are in a fuzzy situation! In actuality, we have 120GB of storage but we told the VMs we have 140GB! The problem that lies here is that as IT professionals, we cannot predict demand spikes. So now we are left scratching our heads like the hotel staff asking ourselves what to do next?
In addition to unpredictable demand spikes, how is it possible to reclaim unused resources? In order for VMs to get the resources they need in real-time, one must understand the interdependent relationships of each entity of the virtual environment. Another challenge of thin-provisioning is the inelasticity; resources can be easily allocated within the environment, but difficult to reclaim. In a VMware environment, data on a thin-provisioned disk can be deleted and space is given back to the respective data store. However, the data store cannot give space back to the storage pool without extra configuration and tuning to the virtual environment. BUT, how is this process going to help IT operators sweat their assets more? Looking at different levels of the storage (ASIDE from compute and network) in isolation, delays the mission of allocating resources to the virtual machines. My colleague discusses storage/compute/network tradeoffs that must be weighed here. Assuring performance requires software that holistically understands the environment (across storage, compute, AND network) and makes the right decisions for you, so you can go on that vacation.