Storage arrays are used to store data. Commonly, storage arrays have at least one controller for managing access to storage media of the storage array. The storage media of a storage array may include one or more hard disk drives (HDDs) and/or one or more solid state drives (SSDs). Storage arrays are typically configured with connections to servers via one or more switches to enable efficient and reliable access between the servers and storage arrays.
Recently, there have substantial improvements in cloud infrastructure. Cloud infrastructure is typically constructed by cloud service providers. Cloud service providers typically provide services for remote users, which include access to customized computing power to run applications and serve data to numerous remote users. The cloud infrastructure therefore includes server systems, which are typically virtualized.
In this manner, a cloud service provider can provide private and separate access to computing resources (i.e., virtual machines) to numerous customers. The cloud infrastructure is also configured with storage (e.g., which may use many networked storage arrays). This storage is also provided to customers, so that their custom applications can store and access data. Storage is typically installed in datacenters, along with servers and networking equipment. Because the various customers of the cloud service provider have different needs for storage, the cloud service provider will commonly offer different types of storage. These different types of storage may have different performance levels and pricing. Thus, for some customers of the cloud service provider, faster storage access is important, e.g., such as for cloud database processing and serving of such data. For other customers, storage capacity is more important, e.g., for cloud file sharing. As such, for said cloud file sharing, storage access speeds may not be as important. For these reasons, cloud service providers offer various times of storage solutions, each with different performance characteristics and price points for data capacity, data reads, data writes, etc.
Unfortunately, customers that are provisioned compute resources and storage, are provisioned based on an initial setup. Once the customer's applications are installed and storage is selected and assigned, the customer's applications are held to the fixed storage configuration. That is, if the customer is assigned a type of storage that is fast for random input/output (I/O), which might be the case for database-type programs, that storage type must also service operations associated with other application transactions, which may write data in larger linear chucks. As a result, customers that may have optimized their provisioned compute resources and storage initially, e.g., at set up or periodically, may suffer inefficiencies in storage utilization. Inefficient storage utilization may include deterioration in data access performance, delays in process, as well as inefficient use of storage on a per-transaction cost of using the selected storage types offered by the cloud service provider.
It is in this context that embodiments claimed herein arise.