March 27, 2015
Any cloud block storage offering is based on the principles of dynamic elasticity and scalability. Hence, as the workload varies, cloud storage providers find it hard to offer meaningful performance guarantees to cloud tenants. The goal of this project is to investigate several new block storage scheduling designs such that the performance of the storage cluster and the volume request allocation is optimized. More specifically, we will develop new scheduling designs that take as input multiple capability arguments from the storage nodes (e.g. available capacity, I/O throughout, network I/O, and other cluster properties), and make a more educated decision about which backend to provision the volume request. In a second aspect of our work, we will develop an optimal methodology to perform autonomous volume migration across multiple backend systems. The purpose of our storage migration technique is to increase the performance as well as improve the ability to maintain the service level objectives (SLO). In a third objective, we will investigate extensions related to batch volume scheduling and offering better quality of service. In order to evaluate the aforementioned optimizations, we will extend our current simulator and deploy an actual cluster based on OpenStack. We specifically target OpenStack Cinder block storage as this is part of many cloud storage strategies, and because it is an extremely active open source project to which we plan to contribute our code.