Proposed blueprint for VMware storage based policy support
Part of blueprint vmware-spbm-support. Change-Id: Ia3cda1e2f031d708246285abcf68dd80ceedc7c0
This commit is contained in:
213
specs/juno/vmware-spbm-support.rst
Normal file
213
specs/juno/vmware-spbm-support.rst
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
======================================
|
||||||
|
Storage Policy Based Management (SPBM)
|
||||||
|
======================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/nova/+spec/vmware-spbm-support
|
||||||
|
|
||||||
|
The feature will enable an OpenStack environment to take advantage of
|
||||||
|
backend storage policies to provide differential services to tenants.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Enable administrators and tenants to take advantage of backend storage
|
||||||
|
policies. The storage admin first creates storage profiles in VC based
|
||||||
|
on the storage vendor provided capabilities and/or tag based capabilities
|
||||||
|
of the underlying storage infrastructure. Refer to
|
||||||
|
http://pubs.vmware.com/vsphere-55/topic/com.vmware.vsphere.storage.doc/GUID-A8BA9141-31F1-4555-A554-4B5B04D75E54.html
|
||||||
|
to learn more about storage profiles on VC.
|
||||||
|
|
||||||
|
The disk(s) of the virtual machine will be placed on the storage that
|
||||||
|
matches the storage policy. This can for example provide preferential
|
||||||
|
services to the user. For example the user will have an option of
|
||||||
|
selecting 'gold', 'silver' or 'bronze' storage. 'gold' can be for
|
||||||
|
applications that require fast and reliable results. 'bronze' can be
|
||||||
|
for a background VM running in the evening doing maintenance.
|
||||||
|
|
||||||
|
The spawn method currently selects the ‘best’ datastore to use. The
|
||||||
|
administrator is able to select one or more datastores for selection
|
||||||
|
by configuring a datastore regular expression. This logic will not
|
||||||
|
be required if the instance flavor contain extra spec information
|
||||||
|
that is relevant to the SPBM. That is, the SPBM information will be
|
||||||
|
used for the datastore selection.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
In order for Nova to provide SPBM we will need to address the following:
|
||||||
|
|
||||||
|
* Enabling the tenant to make use of storage policies. The goal here
|
||||||
|
will be to provide the administrator with the necessary tools to
|
||||||
|
provide differential storage services to the tenant. More specifically
|
||||||
|
the administrator will be able to leverage capabilities provided by the
|
||||||
|
storage infrastructure. There are two parts:
|
||||||
|
|
||||||
|
* Configuration. The admin will need to do the following:
|
||||||
|
|
||||||
|
* Configure a default SPBM policy
|
||||||
|
|
||||||
|
* Create a flavor(s) for the tenants that will enable them to make use
|
||||||
|
of the various storage policies.
|
||||||
|
|
||||||
|
* Tenant usage. The tenant will be able to select a flavor that has
|
||||||
|
a storage policy.
|
||||||
|
|
||||||
|
* Driver support for the storage policies.
|
||||||
|
|
||||||
|
* This entails using the information passed by the tenant to the driver.
|
||||||
|
More specifically the storage policy will be passed as flavor metadata.
|
||||||
|
|
||||||
|
The driver will need to make use of a different endpoint to access the storage
|
||||||
|
policies on the VC. This will require a new configuration variable, that is,
|
||||||
|
the PBM WSDL location will need to be defined.
|
||||||
|
|
||||||
|
NOTE: all of the nodes will share the same storage so there will not be any
|
||||||
|
issues regarding rescheduling.
|
||||||
|
|
||||||
|
The change will not affect the cached images. This is only where the disk
|
||||||
|
for the VM will be placed.
|
||||||
|
|
||||||
|
The flavor extra spec ‘image:storage_policy’ will drive the datastore
|
||||||
|
selection. In the event that this flag is not present and the pbm_enabled
|
||||||
|
is set in the configuration file then we will make use of a configured default
|
||||||
|
policy. That is, if this is present then it will be used to get the list of
|
||||||
|
datastores that can be used for selection. If not then we will use the list of
|
||||||
|
datastores that can be accessed by the cluster.
|
||||||
|
|
||||||
|
If this exists then we will validate that the policy exists.
|
||||||
|
If not then an exception will be thrown. We will then proceed to get the moref
|
||||||
|
and datastore of the datastore that is relevant to this policy
|
||||||
|
|
||||||
|
pseudo code::
|
||||||
|
profile_ids = pbmServiceContent.profileManager.pbmQueryProfile()
|
||||||
|
profiles = pbmRetrieveContent(profile_ids)
|
||||||
|
profiles.find(name=profile_name)
|
||||||
|
|
||||||
|
Query Matching ‘datastore’ entities for the profile. API :-
|
||||||
|
pbmQueryMatchingHub
|
||||||
|
|
||||||
|
If this does not exist then we will proceed to the select the datastore as
|
||||||
|
before.
|
||||||
|
|
||||||
|
The list of datastores will be processed by the existing code to select the
|
||||||
|
best fit.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
At the moment there is no way that a administrator can provide differential
|
||||||
|
storage services to a tenant.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
There are no data model changes. The information is passed from the tenant to
|
||||||
|
the driver via flavor metadata (extraspecs). The driver in turn will use this
|
||||||
|
information to assign the correct storage.
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The cloud provider will provide a flavor to the tenant that will enable them
|
||||||
|
to have preferential storage capabilities.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
There are 3 new configuration variables (both in the vmware section):
|
||||||
|
* pbm_wsdl_location - PBM service WSDL file location URL. e.g.
|
||||||
|
file:///opt/SDK/spbm/wsdl/pbmService.wsdl. This will be optional. This
|
||||||
|
value is a string. The default is None (not set).
|
||||||
|
* pbm_enabled - status of storage policy based placement of instances.
|
||||||
|
This value is a boolean. Default is False.
|
||||||
|
* pbm_default_policy - The PBM default policy. If pbm_enabled
|
||||||
|
is set and there is no defined storage policy for the specific request
|
||||||
|
then this policy will be used. This value is a string. The default policy
|
||||||
|
is defined out of band by the administrator on the Virtual Center. The
|
||||||
|
default is None (not set).
|
||||||
|
|
||||||
|
An admin user will create a new flavor either via the dashboard or the CLI.
|
||||||
|
The flavor extra spec will have a key ‘image:storage_policy’. The admin
|
||||||
|
will associate this this a predfined storage policy on the VC.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
garyk
|
||||||
|
smurugesan
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
rgerganov
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
Code was posted in the Icehouse cycle:
|
||||||
|
* SPBM support (part of oslo integration)
|
||||||
|
* Add support for default pbm policy
|
||||||
|
* Get storage policy from flavor
|
||||||
|
* Use storage policy in datastore selection
|
||||||
|
* Associate instance with storage policy
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
This requires 3rd party testing. It is not possible to be tested by the current
|
||||||
|
gate.
|
||||||
|
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
Configuration variables and their usage need to be documented.
|
||||||
|
Flavor creation and management should be discussed too. That is, the flavor
|
||||||
|
extra spec will need to contain the policy. The key will be:
|
||||||
|
'image:storage_policy' and the values can be for example 'gold', 'silver',
|
||||||
|
etc.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
https://docs.google.com/document/d/14Fr76WsFxBPfQJHRdy389IxlxZHXq-Kr83PeCXgDP1M/edit
|
||||||
Reference in New Issue
Block a user