2d37c4ca88
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
124 lines
4.1 KiB
ReStructuredText
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``
|