Requirement #6 for guaranteed Quality of Service (QoS): performance virtualization
Delivering Guaranteed Quality of Service in a cloud environment is key to unlocking the true potential of cloud to host business critical applications. However, doing so requires an architecture designed for quality of service, not simply bolt-on features. The final architectural requirement for guaranteeing QoS is the ability for the system to virtualize performance separate from capacity, allowing a user to dial in the exact amount of performance and capacity required from separate pools.
All modern storage systems virtualize the underlying raw capacity of their disks, creating an opaque pool of space from which individual volumes are carved. However the performance of those individual volumes is a second-order effect, determined by a number of variables such as the number of disks the volume is spread across, the speed of those disks, the RAID-level used, how many other applications share the same disks, and the controller resources available to service IO.
Traditional capacity virtualization does not suffice
Historically this approach has prevented storage systems from delivering any specific level of performance. “More” or “less” performance could be obtained by placing a volume on faster or slower disks or by relocating adjacent applications that may be causing impact. However, this solution is a manual and error-prone process. In a cloud environment, where both the scale and the dynamic nature prevent manual management of individual volumes, this approach just isn’t possible. Worst of all, significant raw capacity is often wasted as sets of disks get maxed out from a performance standpoint well before all their capacity is used.
Finally, performance can be managed independent of capacity
SolidFire’s performance virtualization removes all this complexity, creating separate pools of capacity and performance from which individual volumes can be provisioned. Performance becomes a first-class citizen, and management is as simple as specifying the performance requirements for an application rather than manually placing data and trying to adjust later.
Furthermore, SolidFire performance virtualization allows performance for an individual volume to be changed over time – simply increased or decreased as application workloads change or as requirements become more clear. SolidFire’s ability to dynamically adjust performance gives service providers the complete flexibility to deliver customers the exact performance they need, precisely when they need it.
Separating performance from capacity has the added benefit of providing a consistent way to view the current load on the system, both in terms of the capacity and performance that is actually used. Ensuring that the system doesn’t become unexpectedly overloaded is now as simple as reading a gas gauge rather than reading tea leaves. SolidFire’s ability to separate performance from capacity in our architecture is the last essential part of guaranteeing QoS. Without it, you’re left with a manual process full of guessing games and resulting in poor overall efficiency.