CentOS 8
Sponsored Link

OpenStack Ussuri : Use Cinder Storage (LVM)
2020/06/09
 
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.
[root@storage ~]#
pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created
[root@storage ~]#
vgcreate -s 32M vg_volume01 /dev/sdb1

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

enabled_backends = lvm

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

[root@storage ~]#
systemctl restart openstack-cinder-volume

[3] Storage γƒŽγƒΌγƒ‰γ§If Firewalld is running, allow service ports.
[root@storage ~]#
firewall-cmd --add-service=iscsi-target --permanent

success
[root@storage ~]#
firewall-cmd --reload

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

[cinder]
os_region_name = RegionOne
[root@node01 ~]#
systemctl restart openstack-nova-compute
# if SELinux enabled, change policy like follows

[root@node01 ~]#
vi iscsiadm.te
# create new

module iscsiadm 1.0;

require {
        type iscsid_t;
        class capability dac_override;
}

#============= iscsid_t ==============
allow iscsid_t self:capability dac_override;

[root@node01 ~]#
checkmodule -m -M -o iscsiadm.mod iscsiadm.te

[root@node01 ~]#
semodule_package --outfile iscsiadm.pp --module iscsiadm.mod

[root@node01 ~]#
semodule -i iscsiadm.pp

[5] Login as a common user you'd like to add volumes to own instances.
For example, create a virtual disk [disk01] with 10GB.
It's OK to work on any node. (example below is on Control Node)
# set environment variable

[cent@dlp ~(keystone)]$
echo "export OS_VOLUME_API_VERSION=3" >> ~/keystonerc

[cent@dlp ~(keystone)]$
source ~/keystonerc
[cent@dlp ~(keystone)]$
openstack volume create --size 10 disk01

+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2020-06-08T07:50:28.000000           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | ac0f3f7c-49aa-42e9-b94e-659e813fe35c |
| multiattach         | False                                |
| name                | disk01                               |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 10                                   |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | __DEFAULT__                          |
| updated_at          | None                                 |
| user_id             | 0e4117de456a4bbaa5aac2cc6507be91     |
+---------------------+--------------------------------------+

[cent@dlp ~(keystone)]$
openstack volume list

+--------------------------------------+--------+-----------+------+-------------+
| ID                                   | Name   | Status    | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| ac0f3f7c-49aa-42e9-b94e-659e813fe35c | 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.
[cent@dlp ~(keystone)]$
openstack server list

+--------------------------------------+----------+---------+------------------------------------+---------+----------+
| ID                                   | Name     | Status  | Networks                           | Image   | Flavor   |
+--------------------------------------+----------+---------+------------------------------------+---------+----------+
| 2929c442-26c4-41cb-b95f-98c3adceb3ef | CentOS_8 | SHUTOFF | int_net=192.168.100.24, 10.0.0.247 | CentOS8 | m1.small |
+--------------------------------------+----------+---------+------------------------------------+---------+----------+

[cent@dlp ~(keystone)]$
openstack server add volume CentOS_8 disk01
# the status of attached disk turns [in-use] like follows

[cent@dlp ~(keystone)]$
openstack volume list

+--------------------------------------+--------+--------+------+-----------------------------------+
| ID                                   | Name   | Status | Size | Attached to                       |
+--------------------------------------+--------+--------+------+-----------------------------------+
| ac0f3f7c-49aa-42e9-b94e-659e813fe35c | disk01 | in-use |   10 | Attached to CentOS_8 on /dev/vdb  |
+--------------------------------------+--------+--------+------+-----------------------------------+

# detach the disk

[cent@dlp ~(keystone)]$
openstack server remove volume CentOS_8 disk01

Matched Content