CentOS 7
Sponsored Link

OpenStack Pike : Cinder Storage (LVM)
2017/09/06
 
It's possible to use Virtual Storages provided by Cinder if an Instance needs more disks.
Configure Virtual storage with LVM backend on here.
It needs there are some free spaces on disks of Storage Node.
     ------------+---------------------------+---------------------------+------------
                 |                           |                           |
             eth0|10.0.0.30              eth0|10.0.0.50              eth0|10.0.0.51
     +-----------+-----------+   +-----------+-----------+   +-----------+-----------+
     |    [ Control Node ]   |   |    [ Storage Node ]   |   |    [ Compute Node ]   |
     |                       |   |                       |   |                       |
     |  MariaDB    RabbitMQ  |   |      Open vSwitch     |   |        Libvirt        |
     |  Memcached  httpd     |   |        L2 Agent       |   |     Nova Compute      |
     |  Keystone   Glance    |   |        L3 Agent       |   |      Open vSwitch     |
     |  Nova API             |   |     Metadata Agent    |   |        L2 Agent       |
     |  Neutron Server       |   |     Cinder-Volume     |   |                       |
     |  Metadata Agent       |   |      iSCSI Target     |   |                       |
     |  Cinder API           |   |                       |   |                       |
     +-----------------------+   +-----------------------+   +-----------------------+

[1] Create a volume group for Cinder on Storage Node.
[[email protected] ~]#
pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created
[[email protected] ~]#
vgcreate -s 32M vg_volume01 /dev/sdb1

Volume group "vg_volume01" successfully created
[2] Configure Cinder Volume on Storage Node.
[[email protected] ~]#
vi /etc/cinder/cinder.conf
# add follows into [DEFAULT] section

enabled_backends = lvm

# add follows to the end
[lvm]
iscsi_helper = lioadm
# volume group name just created
volume_group = vg_volume01
# IP address of Storage Node
iscsi_ip_address = 10.0.0.50
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volumes_dir = $state_path/volumes
iscsi_protocol = iscsi

[[email protected] ~]#
systemctl restart openstack-cinder-volume

[3] On Storage Node, if Firewalld is running, allow service like follows.
[[email protected] ~]#
firewall-cmd --add-service=iscsi-target --permanent

success
[[email protected] ~]#
firewall-cmd --reload

success
[4] Configure Nova on Compute Node.
[[email protected] ~]#
vi /etc/nova/nova.conf
# add to the end

[cinder]
os_region_name = RegionOne
[[email protected] ~]#
systemctl restart openstack-nova-compute

[5] For example, create a virtual disk [disk01] with 10GB. It's OK to work on any node. (This example is on Control Node)
# set environment variable first

[[email protected] ~(keystone)]#
echo "export OS_VOLUME_API_VERSION=2" >> ~/keystonerc

[[email protected] ~(keystone)]#
source ~/keystonerc
[[email protected] ~(keystone)]#
openstack volume create --size 10 disk01

+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2017-09-07T05:35:21.897673           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | 976bde3f-04e9-4a79-93d6-7e242bd9116e |
| migration_status    | None                                 |
| multiattach         | False                                |
| name                | disk01                               |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 10                                   |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | None                                 |
| updated_at          | None                                 |
| user_id             | 09d8dfa20e0f40eaae448d369943b195     |
+---------------------+--------------------------------------+

[[email protected] ~(keystone)]#
openstack volume list

+--------------------------------------+--------+-----------+------+-------------+
| ID                                   | Name   | Status    | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| 976bde3f-04e9-4a79-93d6-7e242bd9116e | disk01 | available |   10 |             |
+--------------------------------------+--------+-----------+------+-------------+
[6] Attach the virtual disk to an Instance.
For the exmaple below, the disk is connected as [/dev/vdb]. It's possible to use it as a storage to create a file system on it.
[[email protected] ~(keystone)]#
openstack server list

+-----------+----------+---------+------------------------------------+---------+----------+
| ID        | Name     | Status  | Networks                           | Image   | Flavor   |
+-----------+----------+---------+------------------------------------+---------+----------+
| 662f62b8- | CentOS_7 | SHUTOFF | int_net=192.168.100.12, 10.0.0.201 | CentOS7 | m1.small |
+-----------+----------+---------+------------------------------------+---------+----------+

[[email protected] ~(keystone)]#
openstack server add volume CentOS_7 disk01
# the status of attached disk turns [in-use] like follows

[[email protected] ~(keystone)]#
openstack volume list

+--------------------------------------+--------+--------+------+-----------------------------------+
| ID                                   | Name   | Status | Size | Attached to                       |
+--------------------------------------+--------+--------+------+-----------------------------------+
| 976bde3f-04e9-4a79-93d6-7e242bd9116e | disk01 | in-use |   10 | Attached to CentOS_7 on /dev/vdb  |
+--------------------------------------+--------+--------+------+-----------------------------------+

# detach the disk

[[email protected] ~(keystone)]#
openstack server remove volume CentOS_7 disk01