cinder/doc/source/configuration/block-storage/drivers/dell-emc-vxflex-driver.rst
Eric Young a852c46ba4 ScaleIO: Rebranding of product to VxFlex OS
The Dell EMC ScaleIO product is being renamed to
Dell EMC VxFlex OS. Update the documentation to reflect
the new product name.

Change-Id: Ib52e4820c80db8b2a74bd91dce473182508c7fba
2018-05-17 11:49:22 -04:00

413 lines
12 KiB
ReStructuredText

===========================================
Dell EMC VxFlex OS (ScaleIO) Storage driver
===========================================
Overview
--------
Dell EMC VxFlex OS (formerly named Dell EMC ScaleIO) is a software-only
solution that uses existing servers local
disks and LAN to create a virtual SAN that has all of the benefits of
external storage, but at a fraction of the cost and complexity. Using the
driver, Block Storage hosts can connect to a VxFlex OS Storage
cluster.
The Dell EMC VxFlex OS Cinder driver is designed and tested to work with
both VxFlex OS and with ScaleIO. The
:ref:`configuration options <cg_configuration_options_emc>`
are identical for both VxFlex OS and ScaleIO.
.. _scaleio_docs:
Official VxFlex OS documentation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To find the VxFlex OS documentation:
#. Go to the `VxFlex OS product documentation page <https://support.emc.com/products/33925_ScaleIO/Documentation/?source=promotion>`_.
#. From the left-side panel, select the relevant VxFlex OS version.
Supported VxFlex OS and ScaleIO Versions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Dell EMC VxFlex OS Block Storage driver has been tested against the
following versions of ScaleIO and VxFlex OS and found to be compatible:
* ScaleIO 2.0.x
* ScaleIO 2.5.x
* VxFlex OS 2.6.x
Please consult the :ref:`scaleio_docs`
to determine supported operating systems for each version
of VxFlex OS or ScaleIO.
Deployment prerequisites
~~~~~~~~~~~~~~~~~~~~~~~~
* The VxFlex OS Gateway must be installed and accessible in the network.
For installation steps, refer to the Preparing the installation Manager
and the Gateway section in VxFlex OS Deployment Guide. See
:ref:`scaleio_docs`.
* VxFlex OS Storage Data Client (SDC) must be installed
on all OpenStack nodes.
.. note:: Ubuntu users must follow the specific instructions in the VxFlex
OS Deployment Guide for Ubuntu environments. See the ``Deploying
on Ubuntu Servers`` section in VxFlex OS Deployment Guide. See
:ref:`scaleio_docs`.
Supported operations
~~~~~~~~~~~~~~~~~~~~
* Create, delete, clone, attach, detach, manage, and unmanage volumes
* Create, delete, manage, and unmanage volume snapshots
* Create a volume from a snapshot
* Copy an image to a volume
* Copy a volume to an image
* Extend a volume
* Get volume statistics
* Create, list, update, and delete consistency groups
* Create, list, update, and delete consistency group snapshots
VxFlex OS Block Storage driver configuration
--------------------------------------------
This section explains how to configure and connect the block storage
nodes to a VxFlex OS storage cluster.
Edit the ``cinder.conf`` file by adding the configuration below under
a new section (for example, ``[scaleio]``) and change the ``enable_backends``
setting (in the ``[DEFAULT]`` section) to include this new back end.
The configuration file is usually located at
``/etc/cinder/cinder.conf``.
For a configuration example, refer to the example
:ref:`cinder.conf <cg_configuration_example_emc>` .
VxFlex OS driver name
~~~~~~~~~~~~~~~~~~~~~
Configure the driver name by adding the following parameter:
.. code-block:: ini
volume_driver = cinder.volume.drivers.dell_emc.scaleio.driver.ScaleIODriver
VxFlex OS Gateway server IP
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The VxFlex OS Gateway provides a REST interface to VxFlex OS.
Configure the Gateway server IP address by adding the following parameter:
.. code-block:: ini
san_ip = <VxFlex OS GATEWAY IP>
VxFlex OS Storage Pools
~~~~~~~~~~~~~~~~~~~~~~~
Multiple Storage Pools and Protection Domains can be listed for use by
the virtual machines. The list should include every Protection Domain and
Storage Pool pair that you would like Cinder to utilize.
To retrieve the available Storage Pools, use the command
:command:`scli --query_all` and search for available Storage Pools.
Configure the available Storage Pools by adding the following parameter:
.. code-block:: ini
sio_storage_pools = <Comma-separated list of protection domain:storage pool name>
VxFlex OS user credentials
~~~~~~~~~~~~~~~~~~~~~~~~~~
Block Storage requires a VxFlex OS user with administrative
privileges. Dell EMC recommends creating a dedicated OpenStack user
account that has an administrative user role.
Refer to the VxFlex OS User Guide for details on user account management.
Configure the user credentials by adding the following parameters:
.. code-block:: ini
san_login = <SIO_USER>
san_password = <SIO_PASSWD>
Oversubscription
~~~~~~~~~~~~~~~~
Configure the oversubscription ratio by adding the following parameter
under the separate section for VxFlex OS:
.. code-block:: ini
sio_max_over_subscription_ratio = <OVER_SUBSCRIPTION_RATIO>
.. note::
The default value for ``sio_max_over_subscription_ratio``
is 10.0.
Oversubscription is calculated correctly by the Block Storage service
only if the extra specification ``provisioning:type``
appears in the volume type regardless of the default provisioning type.
Maximum oversubscription value supported for VxFlex OS is 10.0.
Default provisioning type
~~~~~~~~~~~~~~~~~~~~~~~~~
If provisioning type settings are not specified in the volume type,
the default value is set according to the ``san_thin_provision``
option in the configuration file. The default provisioning type
will be ``thin`` if the option is not specified in the configuration
file. To set the default provisioning type ``thick``, set
the ``san_thin_provision`` option to ``false``
in the configuration file, as follows:
.. code-block:: ini
san_thin_provision = false
The configuration file is usually located in
``/etc/cinder/cinder.conf``.
For a configuration example, see:
:ref:`cinder.conf <cg_configuration_example_emc>`.
.. _cg_configuration_example_emc:
Configuration example
~~~~~~~~~~~~~~~~~~~~~
**cinder.conf example file**
You can update the ``cinder.conf`` file by editing the necessary
parameters as follows:
.. code-block:: ini
[DEFAULT]
enabled_backends = scaleio
[scaleio]
volume_driver = cinder.volume.drivers.dell_emc.scaleio.driver.ScaleIODriver
volume_backend_name = scaleio
san_ip = GATEWAY_IP
sio_storage_pools = Domain1:Pool1,Domain2:Pool2
san_login = SIO_USER
san_password = SIO_PASSWD
san_thin_provision = false
.. _cg_configuration_options_emc:
Configuration options
~~~~~~~~~~~~~~~~~~~~~
The VxFlex OS driver supports these configuration options:
.. config-table::
:config-target: ScaleIO
cinder.volume.drivers.dell_emc.scaleio.driver
Volume Types
------------
Volume types can be used to specify characteristics of volumes allocated via the
VxFlex OS Driver. These characteristics are defined as ``Extra Specs`` within
``Volume Types``.
VxFlex OS Protection Domain and Storage Pool
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When multiple storage pools are specified in the Cinder configuration,
users can specify which pool should be utilized by adding the ``pool``
Extra Spec to the volume type extra-specs and setting the value to the
requested protection_domain:storage_pool.
.. code-block:: console
$ openstack volume type create sio_type_1
$ openstack volume type set --property volume_backend_name=scaleio sio_type_1
$ openstack volume type set --property pool=Domain2:Pool2 sio_type_1
VxFlex OS thin provisioning support
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Block Storage driver supports creation of thin-provisioned and
thick-provisioned volumes.
The provisioning type settings can be added as an extra specification
of the volume type, as follows:
.. code-block:: console
$ openstack volume type create sio_type_thick
$ openstack volume type set --property provisioning:type=thick sio_type_thick
VxFlex OS QoS support
~~~~~~~~~~~~~~~~~~~~~
QoS support for the VxFlex OS driver includes the ability to set the
following capabilities:
``maxIOPS``
The QoS I/O rate limit. If not set, the I/O rate will be unlimited.
The setting must be larger than 10.
``maxIOPSperGB``
The QoS I/O rate limit.
The limit will be calculated by the specified value multiplied by
the volume size.
The setting must be larger than 10.
``maxBWS``
The QoS I/O bandwidth rate limit in KBs. If not set, the I/O
bandwidth rate will be unlimited. The setting must be a multiple of 1024.
``maxBWSperGB``
The QoS I/O bandwidth rate limit in KBs.
The limit will be calculated by the specified value multiplied by
the volume size.
The setting must be a multiple of 1024.
The QoS keys above must be created and associated with a volume type.
For example:
.. code-block:: console
$ openstack volume qos create qos-limit-iops --consumer back-end --property maxIOPS=5000
$ openstack volume type create sio_limit_iops
$ openstack volume qos associate qos-limit-iops sio_limit_iops
The driver always chooses the minimum between the QoS keys value
and the relevant calculated value of ``maxIOPSperGB`` or ``maxBWSperGB``.
Since the limits are per SDC, they will be applied after the volume
is attached to an instance, and thus to a compute node/SDC.
Using VxFlex OS Storage with a containerized overcloud
------------------------------------------------------
When using a containerized overcloud, such as one deployed via TripleO or RedHat
Openstack version 12 and above, there is an additional step that must be
performed.
Before deploying the overcloud
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
After ensuring that the Storage Data Client (SDC) is installed on all nodes and
before deploying the overcloud,
modify the TripleO Heat Template for the nova-compute and cinder-volume
containers to add volume mappings for directories containing the SDC
components. These files can normally
be found at
``/usr/share/openstack-tripleo-heat-templates/docker/services/nova-compute.yaml``
and
``/usr/share/openstack-tripleo-heat-templates/docker/services/cinder-volume.yaml``
Two lines need to be inserted into the list of mapped volumes in each container.
.. code-block:: yaml
/opt/emc/scaleio:/opt/emc/scaleio
/bin/emc/scaleio:/bin/emc/scaleio
.. end
The changes to the two heat templates are identical, as an example
the original nova-compute file should have section that resembles the following:
.. code-block:: yaml
...
docker_config:
step_4:
nova_compute:
image: &nova_compute_image {get_param: DockerNovaComputeImage}
ipc: host
net: host
privileged: true
user: nova
restart: always
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
-
- /var/lib/kolla/config_files/nova_compute.json:/var/lib/kolla/config_files/config.json:ro
- /var/lib/config-data/puppet-generated/nova_libvirt/:/var/lib/kolla/config_files/src:ro
- /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
- /dev:/dev
- /lib/modules:/lib/modules:ro
- /etc/iscsi:/etc/iscsi
- /run:/run
- /var/lib/nova:/var/lib/nova:shared
- /var/lib/libvirt:/var/lib/libvirt
- /var/log/containers/nova:/var/log/nova
- /sys/class/net:/sys/class/net
- /sys/bus/pci:/sys/bus/pci
environment:
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
...
.. end
After modifying the nova-compute file, the section should resemble:
.. code-block:: yaml
...
docker_config:
step_4:
nova_compute:
image: &nova_compute_image {get_param: DockerNovaComputeImage}
ipc: host
net: host
privileged: true
user: nova
restart: always
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
-
- /var/lib/kolla/config_files/nova_compute.json:/var/lib/kolla/config_files/config.json:ro
- /var/lib/config-data/puppet-generated/nova_libvirt/:/var/lib/kolla/config_files/src:ro
- /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
- /dev:/dev
- /lib/modules:/lib/modules:ro
- /etc/iscsi:/etc/iscsi
- /run:/run
- /var/lib/nova:/var/lib/nova:shared
- /var/lib/libvirt:/var/lib/libvirt
- /var/log/containers/nova:/var/log/nova
- /sys/class/net:/sys/class/net
- /sys/bus/pci:/sys/bus/pci
- /opt/emc/scaleio:/opt/emc/scaleio
- /bin/emc/scaleio:/bin/emc/scaleio
environment:
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
...
.. end
Once the nova-compute file is modified, make an identical change to the
cinder-volume file.
Deploy the overcloud
~~~~~~~~~~~~~~~~~~~~
Once the above changes have been made, deploy the overcloud as usual.