Cinder Smarter Volume Placement
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
- Started by
- Completed by
- Sean McGinnis
Related branches
Related bugs
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.