本次使用逻辑卷进行对接后端存储:(逻辑卷使用可以动态调节后端存储的大小)
该服务在这个设备上使用:term:LVM <Logical Volume Manager (LVM)> 提供逻辑卷,并通过:term:`iSCSI`协议提供给实例使用。您可以根据这些小的修改指导,添加额外的存储节点来增加您的环境规模。
cinder原理分析:
如整体架构图所示,创建卷涉及的答题步骤主要有以下几步:
a. Client发送请求,通过RESTFUL接口访问cinder-api。
b. Api解析响应请求,api解析由Client发送来的请求,并通过rpc进一步调用cinder-scheduler。
c. Scheduler对资源进行调度,scheduler选择合适的节点进行。
d. Volume调用Driver创建卷,volume通过指定Driver进行卷的创建。
准备条件:
安装支持的工具包:
1:安装 LVM 包:
[root@compute01 ~]# yum install lvm2 device-mapper-persistent-data -y
2:启动LVM的metadata服务并且设置该服务随系统启动:
[root@compute01 ~]# systemctl enable lvm2-lvmetad.service && systemctl start lvm2-lvmetad.service
添加硬盘:
扫描识别
[root@compute01 ~]# echo '- - -' >/sys/class/scsi_host/host{0..10}/scan
使用现有的sdb sdc进行创建lvm
[root@compute01 ~]# pvcreate /dev/sdb
[root@compute01 ~]# vgcreate cinder-volumes01 /dev/sdb
[root@compute01 ~]# pvcreate /dev/sdc
[root@compute01 ~]# vgcreate cinder-volumes02 /dev/sdc
只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含``cinder-volume``卷组的设备。
编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:
在``devices``部分,添加一个过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备:
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
安装cinder包:
[root@compute01 ~]# yum install openstack-cinder targetcli python-keystone -y
配置cinder的配置文件:
编辑 /etc/cinder/cinder.conf,同时完成如下动作:
在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://cinder:huayun@controller01/cinder
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller01
rabbit_userid = openstack
rabbit_password = huayun
在[DEFAULT]
和[keystone_authtoken]
部分中,配置身份服务访问:
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller01:5000
auth_url = http://controller01:5000
memcached_servers = controller01:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = huayun
在该[DEFAULT]
部分中,配置my_ip
选项:
[DEFAULT]
。。。。。。。
my_ip = 10.100.214.202
在该[lvm]
部分中,为LVM后端配置LVM驱动程序,cinder-volumes
卷组,iSCSI协议和适当的iSCSI服务。如果该[lvm]
部分不存在,请创建它:(这里我们其他方法进行配置)
在最下面添加下面的配置(volume_backend_name我们定义存储盘的类型)
[ssd]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes01
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = ssd
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes02
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = lvm
在该[DEFAULT]
部分中,启用LVM,和ssd后端:
[DEFAULT]
。。。。。。。
enabled_backends = ssd,lvm
在该[DEFAULT]
部分中,配置图像服务API的位置:
[DEFAULT]
glance_api_servers = http://controller01:9292
在该[oslo_concurrency]
部分中,配置锁定路径:
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
启动服务:
[root@compute01 ~]# systemctl enable openstack-cinder-volume.service target.service && systemctl start openstack-cinder-volume.service target.service
检测:
[root@controller01 ~]# cinder service-list
+------------------+---------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+---------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller01 | nova | enabled | up | 2020-05-28T08:44:13.000000 | - |
| cinder-volume | compute01@lvm | nova | enabled | up | 2020-05-28T08:44:12.000000 | - |
| cinder-volume | compute01@ssd | nova | enabled | up | 2020-05-28T08:44:12.000000 | - |
+------------------+---------------+------+---------+-------+----------------------------+-----------------+
创建一个卷测试:
[root@controller01 ~]# openstack volume create --size 1 volume1
[root@controller01 ~]# cinder list
+--------------------------------------+-----------+---------+------+-------------+----------+-------------+
| ID | Status | Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+---------+------+-------------+----------+-------------+
| a2871929-c1d7-4fe1-b2ff-737209410f5e | available | volume1 | 1 | - | false | |
+--------------------------------------+-----------+---------+------+-------------+----------+-------------+
[root@controller01 ~]# openstack volume list
+--------------------------------------+---------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+---------+-----------+------+-------------+
| a2871929-c1d7-4fe1-b2ff-737209410f5e | volume1 | available | 1 | |
+--------------------------------------+---------+-----------+------+-------------+
查看逻辑卷已经由生成的:
[root@compute01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
cinder-volumes01-pool cinder-volumes01 twi-a-tz-- 41.80g 0.00 0.44
cinder-volumes02-pool cinder-volumes02 twi-aotz-- 47.50g 0.00 0.46
volume-a2871929-c1d7-4fe1-b2ff-737209410f5e cinder-volumes02 Vwi-a-tz-- 1.00g cinder-volumes02-pool 0.00
附加卷添加到云主机上:
[root@controller01 ~]# nova list
+--------------------------------------+-----------+---------+------------+-------------+-------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+-----------+---------+------------+-------------+-------------------------+
| 0944b546-b038-4962-939e-6b890eb1d5df | test1 | SHUTOFF | - | Shutdown | provider=10.100.214.151 |
| 8fbf0f77-9591-47a6-a086-4d1daab6673a | zhaopei02 | ACTIVE | - | Running | provider=10.100.214.150 |
+--------------------------------------+-----------+---------+------------+-------------+-------------------------+
[root@controller01 ~]# openstack server add volume zhaopei02 volume1