ac490fc9b1
Over subscription in thin provisioning was added in Cinder in Kilo. This patch added documentation for it. Change-Id: Idbe0602f306a6c21d5544a5af1ffda646f5aa813
106 lines
5.8 KiB
XML
106 lines
5.8 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE section [
|
|
<!ENTITY % openstack SYSTEM "../../common/entities/openstack.ent">
|
|
%openstack;
|
|
]>
|
|
<section 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"
|
|
xml:id="over_subscription">
|
|
<title>Oversubscription in thin provisioning</title>
|
|
<para>OpenStack Block Storage enables you to choose a volume back
|
|
end based on virtual capacities for thin provisioning using the
|
|
oversubscription ratio.
|
|
</para>
|
|
<para>A reference implementation is provided for the default LVM driver.
|
|
The illustration below uses the LVM driver as an example.
|
|
</para>
|
|
<simplesect><title>Configure oversubscription settings</title>
|
|
<para>To support oversubscription in thin provisioning, a flag
|
|
<option>max_over_subscription_ratio</option> is introduced into
|
|
<filename>cinder.conf</filename>. This is a float representation
|
|
of the oversubscription ratio when thin provisioning is involved.
|
|
Default ratio is 20.0, meaning provisioned capacity can be 20
|
|
times of the total physical capacity. A ratio of 10.5 means
|
|
provisioned capacity can be 10.5 times of the total physical
|
|
capacity. A ratio of 1.0 means provisioned capacity cannot exceed
|
|
the total physical capacity. A ratio lower than 1.0 is
|
|
ignored and the default value is used instead.
|
|
</para>
|
|
<note><para><option>max_over_subscription_ratio</option> can be
|
|
configured for each back end when multiple-storage back ends are
|
|
enabled. It is provided as a reference implementation and is used
|
|
by the LVM driver. However, it is not a requirement for a driver
|
|
to use this option from <filename>cinder.conf</filename>.
|
|
<option>max_over_subscription_ratio</option> is for configuring
|
|
a back end. For a driver that supports multiple pools per back
|
|
end, it can report this ratio for each pool. The LVM driver does
|
|
not support multiple pools.
|
|
</para></note>
|
|
<para>The existing <option>reserved_percentage</option> flag is used
|
|
to prevent over provisioning. This flag represents the percentage
|
|
of the back-end capacity that is reserved.</para>
|
|
<note><para>There is a change on how <option>reserved_percentage
|
|
</option> is used. It was measured against the free capacity in
|
|
the past. Now it is measured against the total capacity.
|
|
</para></note>
|
|
</simplesect>
|
|
<simplesect><title>Capabilities</title>
|
|
<para>Drivers can report the following capabilities for a back end or
|
|
a pool:
|
|
</para>
|
|
<programlisting language="ini">thin_provisioning_support=True(or False)
|
|
thick_provisioning_support=True(or False)
|
|
provisioned_capacity_gb=<replaceable>PROVISIONED_CAPACITY</replaceable>
|
|
max_over_subscription_ratio=<replaceable>MAX_RATIO</replaceable></programlisting>
|
|
<para>Where <replaceable>PROVISIONED_CAPACITY</replaceable> is the
|
|
apparent allocated space indicating how much capacity has been
|
|
provisioned and <replaceable>MAX_RATIO</replaceable> is the
|
|
maximum oversubscription ratio. For the LVM driver, it is
|
|
<option>max_over_subscription_ratio</option> in <filename>
|
|
cinder.conf</filename>.
|
|
</para>
|
|
<para>Two capabilities are added here to allow a back end or pool to
|
|
claim support for thin provisioning, or thick provisioning,
|
|
or both.
|
|
</para>
|
|
<para>The LVM driver reports <option>thin_provisioning_support=True
|
|
</option> and <option>thick_provisioning_support=False</option>
|
|
if the <option>lvm_type</option> flag in <filename>cinder.conf
|
|
</filename> is <literal>thin</literal>. Otherwise it reports
|
|
<option>thin_provisioning_support=False</option> and <option>
|
|
thick_provisioning_support=True</option>.
|
|
</para>
|
|
</simplesect>
|
|
<simplesect><title>Volume type extra specs</title>
|
|
<para>If volume type is provided as part of the volume creation
|
|
request, it can have the following extra specs defined:</para>
|
|
<programlisting language="ini">'capabilities:thin_provisioning_support': '<is> True' or '<is> False'
|
|
'capabilities:thick_provisioning_support': '<is> True' or '<is> False'</programlisting>
|
|
<note><para><literal>capabilities</literal> scope key before
|
|
<literal>thin_provisioning_support</literal> and <literal>
|
|
thick_provisioning_support</literal> is not required. So the
|
|
following works too:</para></note>
|
|
<programlisting language="ini">'thin_provisioning_support': '<is> True' or '<is> False'
|
|
'thick_provisioning_support': '<is> True' or '<is> False'</programlisting>
|
|
<para>The above extra specs are used by the scheduler to find a back
|
|
end that supports thin provisioning, thick provisioning, or both to
|
|
match the needs of a specific volume type.
|
|
</para>
|
|
</simplesect>
|
|
<simplesect><title>Capacity filter</title>
|
|
<para>In the capacity filter, <literal>max_over_subscription_ratio
|
|
</literal> is used when choosing a back end if <literal>
|
|
thin_provisioning_support</literal> is True and <option>
|
|
max_over_subscription_ratio</option> is greater than 1.0.
|
|
</para>
|
|
</simplesect>
|
|
<simplesect><title>Capacity weigher</title>
|
|
<para>In the capacity weigher, virtual free capacity is used for
|
|
ranking if <literal>thin_provisioning_support</literal> is True.
|
|
Otherwise, real free capacity will be used as before.
|
|
</para>
|
|
</simplesect>
|
|
</section>
|