compute02作为存储节点

1、安装lvm软件包
# yum install lvm2 device-mapper-persistent-data -y

2、启动LVM元数据服务并将其配置为在系统引导时启动
# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service

3、创建LVM物理卷/dev/sdb
# pvcreate /dev/sdb

4、创建lvm逻辑卷cinder-volumes
# vgcreate cinder-volumes /dev/sdb

5、在devices部分中,添加一个过滤器,该过滤器接受/dev/sdb设备并拒绝所有其他设备
# vim /etc/lvm/lvm.conf
devices {
...
filter = [ "a/sda/", "a/sdb/", "r/.*/"]

说明:filter过滤器阵列中的每个项目开头为“a”或者“r”,用于接受或用于拒绝某个设备,如果存储节点在操作系统磁盘上使用LVM,则还必须将关联的系统盘设备添加到过滤器。同样,如果计算节点在操作系统磁盘上使用LVM,也需要修改这些节点上“/etc/lvm/lvm.conf”文件中的过滤器以包括操作系统磁盘。例如,如果“/dev/sda”设备包含操作系统,则需要将“sda”添加到过滤器。

6、安装存储节点cinder软件包
# yum install openstack-cinder targetcli python-keystone -y

7、修改配置文件/etc/cinder/cinder.conf
# cd /etc/cinder/ && mv cinder.conf cinder.conf.source && cat cinder.conf.source |grep -Ev "^#|^$" > cinder.conf && chown cinder:root cinder.conf
# vi /etc/cinder/cinder.conf

在【database】部分中,配置数据库访问
[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

在【DEFAULT】部分中,配置RabbitMQ消息队列访问
[DEFAULT]
# ...
transport_url = rabbit://openstack:openstack@controller

在【DEFAULT】和【keystone_authtoken】部分中,配置ldentity服务访问
[DEFAULT]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder

在【DEFAULT】部分中,配置my_ip选项,设置为存储节点管理网的IP
[DEFAULT]
# ...
my_ip = 192.168.58.102

在【lvm】部分中,使用LVM驱动程序、cinder-volumes卷组、iSCSl协议和适当的iSCSI服务配置LVM后端
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm

在【DEFAULT】部分中,启用LVM后端
[DEFAULT]
# ...
enabled_backends = lvm

在【DEFAULT】部分中,配置glance服务APl的位置
[DEFAULT]
# ...
glance_api_servers = http://controller:9292

在【oslo_concurrency】部分中,配置锁路径
[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp

8、启动cinder-volume、 target服务,并设置开机自启动
# systemctl enable openstack-cinder-volume.service target.service
# systemctl restart openstack-cinder-volume.service target.service

9、在控制节点(controller)进行验证
列出存储服务组件,若状态均为up即正常
# openstack volume service list
+------------------+---------------+------+---------+-------+----------------------------+
| Binary           | Host          | Zone | Status  | State | Updated At                 |
+------------------+---------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller    | nova | enabled | up    | 2024-02-28T18:17:45.000000 |
| cinder-volume    | compute02@lvm | nova | enabled | up    | 2024-02-28T18:17:47.000000 |
+------------------+---------------+------+---------+-------+----------------------------+

 

 


10、cinder常用命令

a、创建存储卷
# openstack volume create --size 1 volume01
说明:创建一个卷名为volume01大小为1GB的卷

b、查看存储卷列表
# openstack volume list
c、为存储卷创建快照
# openstack volume snapshot create --volume volume01 snap-volume01
说明:为卷volume01创建一个名为snap-volume01的快照


d、查看快照列表
# openstack volume snapshot list

e、挂载卷到实例
# nova volume-attach vm01 ead55f47-a0f3-4eb9-854e-9dff638ff534  /dev/vdb
说明:挂载卷时,要指定卷id,此处要指定卷volume01的id,然后是连接到实例vm01的/dev/vdb上

虚拟机卸载卷
# nova volume-detach vm01 ead55f47-a0f3-4eb9-854e-9dff638ff534 
说明:卸载卷时,请先在操作系统层停止正在使用要卸载的应用,umount掉,然后再执行volume-detach

删除所选存储卷
#  openstack volume snapshot delete snap-volume01
# openstack volume delete volume01
说明:删除卷要具备2个条件,第一个是卷状态是可用(available)或其他而非使用中;第二个就是要删除的卷上没有快照,如果有要先删除快照。

# openstack volume show volume01 

# 禁用存储节点
# openstack volume service set --disable compute02@lvm cinder-volume 
# 启用存储节点
# openstack volume service set --enable compute02@lvm cinder-volume