kolla-ansible/doc/cinder-guide.rst
Steven Dake 2d37c4ca88 Notify operators that cinder + LVM doesn't work
Cinder has closed a flaw in the design of either glance, cinder, or
OpenStack in general.  Whatever the case is, LVM + multi-controller
doesn't work correctly.

TrivialFix

Change-Id: Ibe3445699cfdb1622279a85b6c4e612663d08def
2016-06-21 09:02:30 -07:00

124 lines
4.1 KiB
ReStructuredText

.. _cinder-guide:
===============
Cinder in Kolla
===============
Overview
========
Currently Kolla can deploy the cinder services:
- cinder-api
- cinder-scheduler
- cinder-backup
- cinder-volume
The cinder implementation defaults to using LVM storage. The default
implementation requires a volume group be set up. This can either be
a real physical volume or a loopback mounted file for development.
.. note ::
The Cinder community has closed a bug as WontFix which makes it
impossible for LVM to be used at all in a multi-controller setup.
The only option for multi-controller storage to work correctly at
present is via a Ceph deployment. If community members disagree
with this decision, please report the specific use case in the
Cinder bug tracker here:
`_bug 306756 <https://launchpad.net/bugs/306756>`__.
Create a Volume Group
=====================
Use ``pvcreate`` and ``vgcreate`` to create the volume group. For example
with the devices ``/dev/sdb`` and ``/dev/sdc``:
::
<WARNING ALL DATA ON /dev/sdb and /dev/sdc will be LOST!>
pvcreate /dev/sdb /dev/sdc
vgcreate cinder-volumes /dev/sdb /dev/sdc
During development, it may be desirable to use file backed block storage. It
is possible to use a file and mount it as a block device via the loopback
system. ::
mknod /dev/loop2 b 7 2
dd if=/dev/zero of=/var/lib/cinder_data.img bs=1G count=20
losetup /dev/loop2 /var/lib/cinder_data.img
pvcreate /dev/loop2
vgcreate cinder-volumes /dev/loop2
Validation
==========
Create a volume as follows:
::
$ openstack volume create --size 1 steak_volume
<bunch of stuff printed>
Verify it is available. If it says "error" here something went wrong during
LVM creation of the volume. ::
$ openstack volume list
+--------------------------------------+--------------+-----------+------+-------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------+--------------+-----------+------+-------------+
| 0069c17e-8a60-445a-b7f0-383a8b89f87e | steak_volume | available | 1 | |
+--------------------------------------+--------------+-----------+------+-------------+
Attach the volume to a server using:
::
openstack server add volume steak_server 0069c17e-8a60-445a-b7f0-383a8b89f87e
Check the console log added the disk:
::
openstack console log show steak_server
A ``/dev/vdb`` should appear in the console log, at least when booting cirros.
If the disk stays in the available state, something went wrong during the
iSCSI mounting of the volume to the guest VM.
Cinder LVM2 backend with iSCSI
==============================
As of Newton-1 milestone, Kolla supports LVM2 as cinder backend. It is
accomplished by introducing two new containers ``tgtd`` and ``iscsid``.
tgtd container serves as a bridge between cinder-volume process and a server
hosting Logical Volume Groups (LVG). ``iscsid`` container serves as a bridge
between nova-compute process and the server hosting LVG.
In order to use iSCSI as a Cinder's backend, these two parameters must be
specified in ``globals.yml``. ::
cinder_iscsi_ip_address: "X.X.X.X"
cinder_volume_group: << lvg_name >>
Where:
- X.X.X.X - is IP address of a server hosting LVG
- ``lvg_name`` - is a name of LVG on that server.
NOTE: For Ubuntu and LVM2/iSCSI
``iscsd`` process uses configfs which is normally mounted at
``/sys/kernel/config`` to store discovered targets information, on centos/rhel
type of systems this special file system gets mounted automatically, which is
not the case on debian/ubuntu. Since ``iscsid`` container runs on every nova
compute node, the following steps must be completed on every Ubuntu server
targeted for nova compute role.
- Add configfs module to ``/etc/modules``
- Rebuild initramfs using: ``update-initramfs -u`` command
- Make sure configfs gets mounted during a server boot up process. There are
multiple ways to accomplish it, one example is adding this command to
"mount -t configfs configfs ``/sys/kernel/config`` to ``/etc/rc.local``