When thinking about storage I/O control in the datacenter, think about the orders and transactions of a food distribution company. Day-in and day-out orders are processed and shipped to customers around the globe by freight trains, trucks, etc. Some orders are required to get to their destinations at a specific time. In doing so, while these processes occur, the food must be delivered to its destination the same quality it left the distribution center. To say the least, this is a pretty complex process. Okay distribution center? Data center? You are probably asking yourself, “what is he trying to get at?”
Well, there are different types of orders and requests made at different times of the day by customers requesting food orders. The demand for food is unpredictable by consumers much similar to the random demands of resources within a virtual environment by virtual machines and applications. Every end-user whether that be a consumer of the food or an application-user looks to receive the best quality of service. The best quality of service all starts with understanding the complexity of the process of distributing resources in the shortest amount of time without affecting any other parts of the process.
One piece of the puzzle…I/O on the storage layer
Amongst a shared pool of resources in a virtual environment, let’s focus on storage I/O and its importance in helping the performance of applications. Managing I/O intensive environments is not an easy task. One can only anticipate high workloads but how can bottlenecks be prevented? When it comes to storage (no matter what vendor or size it is) storage I/O may be an intensive resource depending on the applications or databases running in the environment. For example, CRM/ERP, OLTP, or database servers can be pretty demanding when it comes to accessing IO from the storage layer.
What is the bigger picture?
Storage I/O is similar to the food being delivered by the distribution center. In some cases, the demand for I/O by different applications and databases is high. If there is any disruption of service in delivering the food, delay of service becomes prevalent and the end-user does not receive the quality of service they intended. Some distribution centers are created so processes and transactions are occurring as quick as possible.
In relation to the data center, companies buy different types storage (whether it be disk or flash) to make sure that there are enough resources within the infrastructure to prevent any sort of delay. However, in a shared pool of resources, how can one predict when a workload will become I/O intensive? How will they make sure that other areas of the environment are not affected by disruption of service? What exact real-time resource allocation decisions must be made to reduce IO bottlenecks?