OpenStack Block Storage (Cinder)
Go to file
Zhiteng Huang d028556263 Implement QoS support for volumes
This patch is to implement generic Quality-of-Service(QoS) support for volumes.
The goal is to add an interface so that cloud/Cinder admins can use to set
volume QoS, which can be enforced either in hypervisor or on Cinder back-end
or both. QoS specifications are added as a standalone (only visible to admin)
entity.  So admin can create/update/delete and associate/disassociate QoS
specifications to other entities, in this case volume types.

Note that while it's possible for Cinder to set the granularity of QoS control
to every single volume, this patch puts the control granularity to the level
of volumes of the same type to minimize the impact of other Cinder parts.
In other words, the design is to bond QoS with volume types. So Cinder admin
can associate volume types with QoS specifications, and volumes of same volume
type share the same QoS specifications.

QoS can mean a lot different things that it's unlikely we can come up with a
interpretation that all vendors can agree on.  So the approach this
implementation takes is to make Quality-of-Service specs as free-from, i.e.
expressed as key/value pairs.

Changes:
 - Add a quality_of_service_specs table, using adjacency list relation to store
 a specs entry and its detailed specs in key/values. Note that to be able to
 distinguish where should the QoS specs be consumed, each QoS specs entity
 will have a 'consumer' (i.e. fixed key) with the value of where admin would
 like the QoS policy to be enforced/consumed, currently these three values are
 considered valid: 'front-end' (Nova Compute), 'back-end' (Cinder back-end),
 'both'. The default value for 'consumer' is 'back-end';
 - Add a new API extension 'qos_specs_manage' to allow list/create/update/
 delete/associate/disassociate of QoS specs;
 - Add volume/qos_specs internal API for qos specs manipulation;
 - Add 'qos_specs' info to data structure when
 initialize_connection() is called.
 - Add 'qos_specs' to request_specs and filter properties for
 a volume create request.

 TODO
 - Modify 'type_manage' API extension to be able to accept qos info.
 - Modify volume_types.create() to accept qos info and do the checks.

DocImpact

implement blueprint: pass-ratelimit-info-to-nova

Change-Id: Iabc61b941aaff10395b30e2045e3421369a317e2
2013-08-23 10:21:46 +08:00
bin Merge "Fix python 3 pep8 errors for print" 2013-08-22 21:23:26 +00:00
cinder Implement QoS support for volumes 2013-08-23 10:21:46 +08:00
contrib Copy the RHEL6 eventlet workaround from Oslo 2013-05-02 10:22:26 +01:00
doc Update references with new Mailing List location 2013-07-28 12:08:20 -07:00
etc/cinder Backup driver for IBM Tivoli Storage manager (TSM) 2013-08-22 23:10:03 +03:00
tools Fix python 3 pep8 errors for print 2013-08-21 16:59:22 -06:00
.coveragerc Add .coveragerc to show proper coverage statistics. As in other openstack projects. 2013-05-15 03:40:07 -07:00
.gitignore Add eclipse project files to .gitignore 2013-08-05 17:56:07 +00:00
.gitreview Initial fork out of Nova. 2012-05-03 10:48:26 -07:00
.mailmap Fix pep8 and pylint violation in Nexenta volume driver 2013-08-02 04:53:12 +04:00
.testr.conf Fix up the test framework 2013-06-14 14:02:17 +00:00
babel.cfg Initial fork out of Nova. 2012-05-03 10:48:26 -07:00
CONTRIBUTING.md Add CONTRIBUTING file. 2012-11-22 12:47:49 -07:00
HACKING.rst Cleanup and make HACKING.rst DRYer 2013-07-13 09:16:23 -07:00
LICENSE Initial fork out of Nova. 2012-05-03 10:48:26 -07:00
MANIFEST.in Use setuptools-git. 2012-08-10 11:56:00 -04:00
openstack-common.conf Remove usage of obsolete oslo.exception 2013-08-06 10:42:14 +02:00
pylintrc Initial fork out of Nova. 2012-05-03 10:48:26 -07:00
README.rst Cleanup README.rst 2013-07-22 11:26:34 +02:00
requirements.txt Update requirements from openstack/requirements. 2013-07-12 10:55:45 -06:00
run_tests.sh Add bin directory to flake8 when not in venv 2013-08-05 13:44:30 -06:00
setup.cfg Fix up the test framework 2013-06-14 14:02:17 +00:00
setup.py Fix python 3 pep8 errors for print 2013-08-21 16:59:22 -06:00
taskflow.conf Refactoring of create_volume to use taskflow. 2013-08-07 19:08:21 -07:00
test-requirements.txt Update requirements from openstack/requirements. 2013-07-12 10:55:45 -06:00
tox.ini Merge "Fix python 3 pep8 errors for print" 2013-08-22 21:23:26 +00:00

The Choose Your Own Adventure README for Cinder

You have come across a storage service for an open cloud computing service. It has identified itself as "Cinder." It was abstracted from the Nova project.

To monitor it from a distance: follow @openstack on twitter.

To tame it for use in your own cloud: read http://docs.openstack.org

To study its anatomy: read http://cinder.openstack.org

To dissect it in detail: visit http://github.com/openstack/cinder

To taunt it with its weaknesses: use http://bugs.launchpad.net/cinder

To watch it: http://jenkins.openstack.org

To hack at it: read HACKING.rst