Cinder Smarter Volume Placement

Registered by Rakesh Jain

A proposal to introduce more smartness in the volume placement decision making when creating new volumes through Cinder. Cinder has some out of box weighers which help rank the pools from which a volume could be created. This blueprint introduces a smarter weigher which should also be included by default with Cinder.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Rakesh Jain
Direction:
Needs approval
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Sean McGinnis

Related branches

Sprints

Whiteboard

(smcginnis): Marking obsolete as this has been sitting out there for a long time. If this is still needed, please submit a new bp.

The idea is based on determining the response time of each storage pool involved, by aggregating the response time of volumes in the pool. The pool with minimum response time and enough spare capacity to create new volume will get the highest weight.

All storage controllers provide the response time metric of the volumes. The response time of these volumes need to be stored in Ceilometer along with the logical IO and the time. (see the dependency on Ceilometer Blueprint).

This response time metric for each pool over a period of time (a day, a week or even a month) can provide significant help in determining which storage pool is more strained and which one has more capacity to incur additional IO.

In order for this smart weigher to get response time data for specific cinder host (i.e. pool), the weigher needs to know which pool and which storage system it is dealing with, so that it can use these identifiers to go to Ceilometer to retrieve response time data for specific time duration. This information is not uniformly published by the drivers today. For example, IBM SVC/Storwize driver publishes this information in the form of cinder host capabilities (location_info attribute where storage system serial number and pool identifiers are concatenated together). We need to standardize this as part of Cinder host capabilities so that every Cinder volume driver publishes this information as part of capabilities data.

Given the subsystem and pool identifiers available in weigher framework, the smart_weigher will use Ceilometer client to retrieve and calculate the aggregated response time of the storage pool and assign weight. Lower the response time, higher the weight. The scheduler will pick the best weighing cinder host for new volume creation and this way we will have more balanced storage environment in terms of workload and better response time for the applications.

Blueprint by: Alfredo Alba, Rakesh Jain (rakeshj), Ramani Routray (routrayr), Yang Song (yangsong)

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.