c641abaa62
This patch adds block storage troubleshooting documentation, which superseeds the old documentation. It's actually https://review.openstack.org/#/c/49972 - but that patch became a rebase hell, hence the new one. Change-Id: I37621e1bede368b57a5af5e33b2d131c7e28d488
101 lines
6.5 KiB
XML
Executable File
101 lines
6.5 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8"?>
|
|
<section xml:id="section_ts_cinder_config" xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
version="1.0" linkend="section_ts_cinder_config">
|
|
<title xml:id="ts_block_config">Troubleshooting your Block Storage Configuration</title>
|
|
<para>This section is intended to help solve some basic and common errors that are encountered
|
|
during setup and configuration of the Cinder block storage service. The focus here is on
|
|
failed creation of volumes. The most important thing to know is where to look in case of a
|
|
failure.</para>
|
|
<para>There are two log files that are especially helpful for solving volume creation failures,
|
|
the <systemitem class="service">cinder-api</systemitem> log and the <systemitem
|
|
class="service">cinder-volume</systemitem> log. The <systemitem class="service"
|
|
>cinder-api</systemitem> log is useful for determining if you have endpoint or
|
|
connectivity issues. If you send a request to create a volume and it fails, it's a good idea
|
|
to look in the <systemitem class="service">cinder-api</systemitem> log first and see if the
|
|
request even made it to the Cinder service. If the request is logged and there are no errors
|
|
or trace-backs, then you can check the <systemitem class="service"
|
|
>cinder-volume</systemitem> log for errors or trace-backs.</para>
|
|
<para>
|
|
<note>
|
|
<para>Create commands are listed in the <systemitem class="service"
|
|
>cinder-api</systemitem> log.</para>
|
|
</note>
|
|
</para>
|
|
<para>Here are some common issues discovered during configuration, and some suggested solutions
|
|
.</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Isusues with <literal>state_path</literal> and <literal>volumes_dir</literal>
|
|
settings.</para>
|
|
<para>Cinder uses <command>tgtd</command> as the default iscsi helper and implements
|
|
persistent targets. This means that in the case of a tgt restart or even a node
|
|
reboot your existing volumes on that node will be restored automatically with
|
|
their original IQN.</para>
|
|
<para>In order to make this possible the iSCSI target information needs to be stored
|
|
in a file on creation that can be queried in case of restart of the tgt daemon.
|
|
By default, Cinder uses a <literal>state_path</literal> variable, which if
|
|
installing with Yum or APT should be set to
|
|
<filename>/var/lib/cinder/</filename>. The next part is the
|
|
<literal>volumes_dir</literal> variable, by default this just simply appends
|
|
a "<literal>volumes</literal>" directory to the <literal>state_path</literal>.
|
|
The result is a file-tree <filename>/var/lib/cinder/volumes/</filename>.</para>
|
|
<para>While this should all be handled by the installer, it can go wrong. If you are
|
|
having trouble creating volumes and this directory does not exist you should see
|
|
an error message in the <systemitem class="service">cinder-volume</systemitem>
|
|
log indicating that the <literal>volumes_dir</literal> doesn't exist, and it
|
|
should give you information to specify what path exactly it was looking
|
|
for.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The persistent tgt include file.</para>
|
|
<para>Along with the <literal>volumes_dir</literal> mentioned above, the iSCSI
|
|
target driver also needs to be configured to look in the correct place for the
|
|
persist files. This is a simple entry in <filename>/etc/tgt/conf.d</filename>,
|
|
and you should have created this when you went through the install guide. If you
|
|
haven't or you're running into issues, verify that you have a file
|
|
<filename>/etc/tgt/conf.d/cinder.conf</filename>.</para>
|
|
<para>If the file is not there, you can create with the following
|
|
command:<programlisting>
|
|
sudo sh -c "echo 'include /var/lib/cinder/volumes/*' >> /etc/tgt/conf.d/cinder.conf"
|
|
</programlisting></para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>No sign of attach call in the <systemitem class="service"
|
|
>cinder-api</systemitem> log.</para>
|
|
<para>This is most likely going to be a minor adjustment to your
|
|
<filename>nova.conf</filename> file. Make sure that your
|
|
<filename>nova.conf</filename> has the following
|
|
entry:<programlisting>
|
|
volume_api_class=nova.volume.cinder.API
|
|
</programlisting></para>
|
|
<caution>
|
|
<para>Make certain that you explicitly set <filename>enabled_apis</filename>
|
|
because the default will include
|
|
<filename>osapi_volume</filename>:<programlisting>
|
|
enabled_apis=ec2,osapi_compute,metadata
|
|
</programlisting>
|
|
</para>
|
|
</caution>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Failed to create iscsi target error in the
|
|
<filename>cinder-volume.log</filename> file.</para>
|
|
<programlisting language="bash">2013-03-12 01:35:43 1248 TRACE cinder.openstack.common.rpc.amqp ISCSITargetCreateFailed: Failed to create iscsi target for volume volume-137641b2-af72-4a2f-b243-65fdccd38780.
|
|
</programlisting>
|
|
<para>You may see this error in <filename>cinder-volume.log</filename> after trying
|
|
to create a volume that is 1 GB. To fix this issue:</para>
|
|
<para>Change content of the <filename>/etc/tgt/targets.conf</filename> from "include
|
|
/etc/tgt/conf.d/*.conf" to: include /etc/tgt/conf.d/cinder_tgt.conf:</para>
|
|
<programlisting language="bash">
|
|
include /etc/tgt/conf.d/cinder_tgt.conf
|
|
include /etc/tgt/conf.d/cinder.conf
|
|
default-driver iscsi</programlisting>
|
|
<para>Then restart tgt and <literal>cinder-*</literal> services so they pick up the
|
|
new configuration.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</section>
|