openstack-manuals/doc/config-reference/block-storage/drivers/hds-hus-driver.xml
Sandro Tosi bcec02416e Typos and spellings errors fix in config-ref, HA/image guides
Another round of typos/spelling errors fixing, in particular for
config-reference, HA guide and image guide.

Change-Id: Ibc3661e132a0ea4010a5a61f71ef5209ae6655b6
Closes-Bug: #1356970
2014-08-15 09:00:11 +01:00

467 lines
26 KiB
XML

<!DOCTYPE section [
<!ENTITY % openstack SYSTEM "../../../common/entities/openstack.ent">
%openstack;
]>
<section xml:id="hds-volume-driver"
xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<title>HDS HUS iSCSI driver</title>
<para>This Block Storage volume driver provides iSCSI support for <link
xlink:href="http://www.hds.com/products/storage-systems/hitachi-unified-storage-100-family.html"
>HUS (Hitachi Unified Storage) </link> arrays such as,
HUS-110, HUS-130, and HUS-150.</para>
<section xml:id="hds-reqs">
<title>System requirements</title>
<para>Use the HDS <command>hus-cmd</command> command to
communicate with an HUS array. You can download this
utility package from the HDS support site (<link
xlink:href="https://HDSSupport.hds.com"
>https://HDSSupport.hds.com</link>).</para>
<para>Platform: Ubuntu 12.04 LTS or newer.</para>
</section>
<section xml:id="hds-supported-operations">
<title>Supported operations</title>
<para>These operations are supported:</para>
<itemizedlist>
<listitem>
<para>Create volume</para>
</listitem>
<listitem>
<para>Delete volume</para>
</listitem>
<listitem>
<para>Attach volume</para>
</listitem>
<listitem>
<para>Detach volume</para>
</listitem>
<listitem>
<para>Clone volume</para>
</listitem>
<listitem>
<para>Extend volume</para>
</listitem>
<listitem>
<para>Create snapshot</para>
</listitem>
<listitem>
<para>Delete snapshot</para>
</listitem>
<listitem>
<para>Copy image to volume</para>
</listitem>
<listitem>
<para>Copy volume to image</para>
</listitem>
<listitem>
<para>Create volume from snapshot</para>
</listitem>
<listitem>
<para>Get statistics</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="hds-config">
<title>Configuration</title>
<para>The HDS driver supports the concept of differentiated
services, where a volume type can be associated with the
fine-tuned performance characteristics of an HDP&mdash;
the dynamic pool where volumes are created<footnote xml:id="hds-fn-svc-1">
<para>Do not confuse differentiated services with the
OpenStack Block Storage volume services.</para>
</footnote>. For instance, an HDP can consist of fast SSDs
to provide speed. HDP can provide a certain reliability
based on things like its RAID level characteristics. HDS
driver maps volume type to the
<option>volume_type</option> option in its
configuration file.</para>
<para>Configuration is read from an XML-format file. Examples
are shown for single and multi back-end cases.</para>
<note>
<itemizedlist>
<listitem>
<para>Configuration is read from an XML file. This
example shows the configuration for single
back-end and for multi-back-end cases.</para>
</listitem>
<listitem>
<para>It is not recommended to manage an HUS array
simultaneously from multiple OpenStack Block Storage instances
or servers. <footnote
xml:id="hds-one-instance-only">
<para>It is okay to manage multiple HUS
arrays by using multiple OpenStack Block Storage
instances (or servers).</para>
</footnote></para>
</listitem>
</itemizedlist>
</note>
<xi:include href="../../../common/tables/cinder-hds-hus.xml"/>
<simplesect>
<title>HUS setup</title>
<para>Before using iSCSI services, use the HUS UI to create an
iSCSI domain for each EVS providing iSCSI services.</para>
</simplesect>
<simplesect>
<title>Single back-end</title>
<para>In a single back-end deployment, only one OpenStack Block Storage
instance runs on the OpenStack Block Storage server and controls one
HUS array: this deployment requires these configuration
files:</para>
<orderedlist>
<listitem>
<para>Set the
<option>hds_cinder_config_file</option>
option in the
<filename>/etc/cinder/cinder.conf</filename>
file to use the HDS volume driver. This option
points to a configuration file.<footnote
xml:id="hds-no-fixed-location-1">
<para>The configuration file location
may differ.</para>
</footnote></para>
<programlisting language="ini">volume_driver = cinder.volume.drivers.hds.hds.HUSDriver
hds_cinder_config_file = /opt/hds/hus/cinder_hds_conf.xml</programlisting>
</listitem>
<listitem>
<para>Configure
<option>hds_cinder_config_file</option> at
the location specified previously. For
example,
<filename>/opt/hds/hus/cinder_hds_conf.xml</filename>:</para>
<programlisting language="xml">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;config&gt;
&lt;mgmt_ip0&gt;172.17.44.16&lt;/mgmt_ip0&gt;
&lt;mgmt_ip1&gt;172.17.44.17&lt;/mgmt_ip1&gt;
&lt;hus_cmd&gt;hus-cmd&lt;/hus_cmd&gt;
&lt;username&gt;system&lt;/username&gt;
&lt;password&gt;manager&lt;/password&gt;
&lt;svc_0&gt;
&lt;volume_type&gt;default&lt;/volume_type&gt;
&lt;iscsi_ip&gt;172.17.39.132&lt;/iscsi_ip&gt;
&lt;hdp&gt;9&lt;/hdp&gt;
&lt;/svc_0&gt;
&lt;snapshot&gt;
&lt;hdp&gt;13&lt;/hdp&gt;
&lt;/snapshot&gt;
&lt;lun_start&gt;
3000
&lt;/lun_start&gt;
&lt;lun_end&gt;
4000
&lt;/lun_end&gt;
&lt;/config&gt;</programlisting>
</listitem>
</orderedlist>
</simplesect>
<simplesect>
<title>Multi back-end</title>
<para>In a multi back-end deployment, more than one OpenStack Block Storage
instance runs on the same server. In this example, two
HUS arrays are used, possibly providing different
storage performance:</para>
<procedure>
<step>
<para>Configure
<filename>/etc/cinder/cinder.conf</filename>:
the <literal>hus1</literal>
<option>hus2</option> configuration blocks are
created. Set the
<option>hds_cinder_config_file</option>
option to point to a unique configuration
file for each block. Set the
<option>volume_driver</option> option for
each back-end to
<literal>cinder.volume.drivers.hds.hds.HUSDriver</literal></para>
<programlisting language="ini">enabled_backends=hus1,hus2
[hus1]
volume_driver = cinder.volume.drivers.hds.hds.HUSDriver
hds_cinder_config_file = /opt/hds/hus/cinder_hus1_conf.xml
volume_backend_name=hus-1
[hus2]
volume_driver = cinder.volume.drivers.hds.hds.HUSDriver
hds_cinder_config_file = /opt/hds/hus/cinder_hus2_conf.xml
volume_backend_name=hus-2</programlisting>
</step>
<step>
<para>Configure
<filename>/opt/hds/hus/cinder_hus1_conf.xml</filename>:</para>
<programlisting language="xml">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;config&gt;
&lt;mgmt_ip0&gt;172.17.44.16&lt;/mgmt_ip0&gt;
&lt;mgmt_ip1&gt;172.17.44.17&lt;/mgmt_ip1&gt;
&lt;hus_cmd&gt;hus-cmd&lt;/hus_cmd&gt;
&lt;username&gt;system&lt;/username&gt;
&lt;password&gt;manager&lt;/password&gt;
&lt;svc_0&gt;
&lt;volume_type&gt;regular&lt;/volume_type&gt;
&lt;iscsi_ip&gt;172.17.39.132&lt;/iscsi_ip&gt;
&lt;hdp&gt;9&lt;/hdp&gt;
&lt;/svc_0&gt;
&lt;snapshot&gt;
&lt;hdp&gt;13&lt;/hdp&gt;
&lt;/snapshot&gt;
&lt;lun_start&gt;
3000
&lt;/lun_start&gt;
&lt;lun_end&gt;
4000
&lt;/lun_end&gt;
&lt;/config&gt;</programlisting>
</step>
<step>
<para>Configure the
<filename>/opt/hds/hus/cinder_hus2_conf.xml</filename>
file:</para>
<programlisting language="xml">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;config&gt;
&lt;mgmt_ip0&gt;172.17.44.20&lt;/mgmt_ip0&gt;
&lt;mgmt_ip1&gt;172.17.44.21&lt;/mgmt_ip1&gt;
&lt;hus_cmd&gt;hus-cmd&lt;/hus_cmd&gt;
&lt;username&gt;system&lt;/username&gt;
&lt;password&gt;manager&lt;/password&gt;
&lt;svc_0&gt;
&lt;volume_type&gt;platinum&lt;/volume_type&gt;
&lt;iscsi_ip&gt;172.17.30.130&lt;/iscsi_ip&gt;
&lt;hdp&gt;2&lt;/hdp&gt;
&lt;/svc_0&gt;
&lt;snapshot&gt;
&lt;hdp&gt;3&lt;/hdp&gt;
&lt;/snapshot&gt;
&lt;lun_start&gt;
2000
&lt;/lun_start&gt;
&lt;lun_end&gt;
3000
&lt;/lun_end&gt;
&lt;/config&gt;</programlisting>
</step>
</procedure>
</simplesect>
<simplesect>
<title>Type extra specs: <option>volume_backend</option>
and volume type</title>
<para>If you use volume types, you must configure them in
the configuration file and set the
<option>volume_backend_name</option> option to the
appropriate back-end. In the previous multi back-end
example, the <literal>platinum</literal> volume type
is served by hus-2, and the <literal>regular</literal>
volume type is served by hus-1.</para>
<programlisting>cinder type-key regular set volume_backend_name=hus-1
cinder type-key platinum set volume_backend_name=hus-2</programlisting>
</simplesect>
<simplesect>
<title>Non differentiated deployment of HUS arrays</title>
<para>You can deploy multiple OpenStack Block Storage instances that each
control a separate HUS array. Each instance has no
volume type associated with it. The OpenStack Block Storage filtering
algorithm selects the HUS array with the largest
available free space. In each configuration file, you
must define the <literal>default</literal>
<option>volume_type</option> in the service
labels.</para>
</simplesect>
</section>
<section xml:id="hds-options">
<title>HDS iSCSI volume driver configuration options</title>
<para>These details apply to the XML format configuration file
that is read by HDS volume driver. These differentiated
service labels are predefined: <literal>svc_0</literal>,
<literal>svc_1</literal>, <literal>svc_2</literal>,
and <literal>svc_3</literal><footnote
xml:id="hds-no-weight">
<para>Each of
these four labels has no relative precedence or weight.</para>
</footnote>. Each respective service label associates with
these parameters and tags:</para>
<orderedlist>
<listitem>
<para><option>volume-types</option>: A create_volume
call with a certain volume type shall be matched
up with this tag. <literal>default</literal> is
special in that any service associated with this
type is used to create volume when no other labels
match. Other labels are case sensitive and should
exactly match. If no configured volume_types match
the incoming requested type, an error occurs in
volume creation.</para>
</listitem>
<listitem>
<para><option>HDP</option>, the pool ID associated
with the service.</para>
</listitem>
<listitem>
<para>An iSCSI port dedicated to the service.</para>
</listitem>
</orderedlist>
<para>Typically a OpenStack Block Storage volume instance has only one such
service label. For example, any <literal>svc_0</literal>,
<literal>svc_1</literal>, <literal>svc_2</literal>, or
<literal>svc_3</literal> can be associated with it.
But any mix of these service labels can be used in the
same instance <footnote xml:id="hds-stats-all-hdp">
<para>The get_volume_stats() always provides the available
capacity based on the combined sum of all the HDPs
that are used in these services labels.</para>
</footnote>.</para>
<table rules="all">
<caption>Configuration options</caption>
<col width="25%"/>
<col width="10%"/>
<col width="15%"/>
<col width="50%"/>
<thead>
<tr>
<td>Option</td>
<td>Type</td>
<td>Default</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td><para><option>mgmt_ip0</option></para>
</td>
<td><para>Required</para></td>
<td><para/></td>
<td><para>Management Port 0 IP address</para>
</td>
</tr>
<tr>
<td><para><option>mgmt_ip1</option></para>
</td>
<td><para>Required</para></td>
<td><para/></td>
<td><para>Management Port 1 IP address</para>
</td>
</tr>
<tr>
<td><para><option>hus_cmd</option></para>
</td>
<td><para>Optional</para></td>
<td><para/></td>
<td>
<para><option>hus_cmd</option> is the command used to
communicate with the HUS array. If it is not
set, the default value is
<command>hus-cmd</command>.</para>
</td>
</tr>
<tr>
<td><para><option>username</option></para>
</td>
<td><para>Optional</para></td>
<td><para/></td>
<td>
<para>Username is required only if secure mode
is used</para>
</td>
</tr>
<tr>
<td><para><option>password</option></para>
</td>
<td><para>Optional</para></td>
<td><para/></td>
<td>
<para>Password is required only if secure mode
is used</para>
</td>
</tr>
<tr>
<td>
<para><option>svc_0, svc_1, svc_2, svc_3
</option></para>
</td>
<td><para>Optional</para></td>
<td><para>(at least one label has to be
defined)</para></td>
<td>
<para>Service labels: these four predefined
names help four different sets of
configuration options -- each can specify
iSCSI port address, HDP and a unique
volume type.</para>
</td>
</tr>
<tr>
<td>
<para><option>snapshot</option></para>
</td>
<td><para>Required</para></td>
<td><para/></td>
<td>
<para>A service label which helps specify
configuration for snapshots, such as,
HDP.</para>
</td>
</tr>
<tr>
<td>
<para><option>volume_type</option></para>
</td>
<td><para>Required</para></td>
<td><para/></td>
<td>
<para><option>volume_type</option> tag is used
to match volume type.
<literal>Default</literal> meets any
type of <option>volume_type</option>, or
if it is not specified. Any other
volume_type is selected if exactly matched
during
<literal>create_volume</literal>.</para>
</td>
</tr>
<tr>
<td>
<para><option>iscsi_ip</option></para>
</td>
<td><para>Required</para></td>
<td><para/></td>
<td>
<para>iSCSI port IP address where volume
attaches for this volume type.</para>
</td>
</tr>
<tr>
<td>
<para><option>hdp</option></para>
</td>
<td><para>Required</para></td>
<td><para/></td>
<td>
<para>HDP, the pool number where volume, or
snapshot should be created.</para>
</td>
</tr>
<tr>
<td>
<para><option>lun_start</option></para>
</td>
<td><para>Optional</para></td>
<td><para>0</para></td>
<td>
<para>LUN allocation starts at this
number.</para>
</td>
</tr>
<tr>
<td>
<para><option>lun_end</option></para>
</td>
<td><para>Optional</para></td>
<td><para>4096</para></td>
<td>
<para>LUN allocation is up to, but not
including, this number.</para>
</td>
</tr>
</tbody>
</table>
</section>
</section>