1 2 3 4 5 6 7
| 作者:李晓辉
联系方式:
微信:Lxh_Chat
邮箱:939958092@qq.com
|
这篇文章主要以将Cinder数据存储到本地硬盘为例,如果你需要了解如何将Cinder和Ceph集成,可以查看以下链接
https://www.linuxcenter.cn/linux/ceph-integrates-with-openstack.html
前言
在OpenStack环境中,Cinder块存储服务的高效运行离不开可靠的后端存储支持。虽然在之前的部署中,我们已经在控制节点上成功安装并配置了Cinder服务,但这些操作仅涉及管理层面的设置。真正的数据存储与管理,需要借助后端存储服务器来完成。后端存储服务器是Cinder服务的核心组成部分,它直接负责存储卷的创建、管理和维护,是确保虚拟机持久化存储的关键环节。
本文将聚焦于Cinder后端存储服务器的部署过程。我们将详细介绍如何选择合适的存储后端技术(如LVM、Ceph、NFS等),并根据实际需求进行安装、配置与优化。通过本文的指导,你将能够搭建起高效、稳定且可扩展的Cinder后端存储环境,为OpenStack云平台提供强大的存储支持,满足不同业务场景下的数据存储需求。
为数据存储到本地做LVM准备
在本地存储Cinder数据的文章中,由于我没有那么多机器,所以并置在了控制节点,节点最起码需要有一个额外的硬盘
我们这里将数据存储在本地的LVM中
准备相应软件包
在开始之前,需要安装LVM相关的软件包,以便在本地硬盘上创建和管理逻辑卷。
1
| yum install lvm2 device-mapper-persistent-data -y
|
准备lvm卷组
我这里额外的盘是/dev/nvme0n2,你的也许是别的名称,用lsblk
确认
1 2
| pvcreate /dev/nvme0n2 vgcreate cinder-volumes /dev/nvme0n2
|
定义lvm扫描范围
默认情况下,LVM卷扫描工具会扫描/dev目录,查找包含卷的块存储设备。为了避免扫描到不必要的设备,需要重新配置LVM,让它只扫描包含cinder-volumes卷组的设备。
需要修改的配置文件是:/etc/lvm/lvm.conf
在devices中,添加了一个filter参数
每个过滤器组中的元素都以a
开头,即为 accept,或以 r 开头,即为reject,并且包括一个设备名称的正则表达式规则。过滤器组必须以r/.*/
结束,过滤所有保留设备。
1 2 3
| devices { filter = [ "a/nvme0n2/", "r/.*/"] }
|
安装配置cinder存储组件
安装Cinder存储组件
在存储节点上安装Cinder和iSCSI目标服务。
1
| yum install openstack-cinder targetcli -y
|
准备cinder配置文件
编辑Cinder配置文件/etc/cinder/cinder.conf,设置消息队列、身份认证、数据库连接以及LVM后端的相关参数。
/etc/cinder/cinder.conf
是cinder配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| crudini --set /etc/cinder/cinder.conf DEFAULT transport_url rabbit://openstack:LiXiaohui@controller crudini --set /etc/cinder/cinder.conf DEFAULT auth_strategy keystone crudini --set /etc/cinder/cinder.conf DEFAULT my_ip 192.168.8.10 crudini --set /etc/cinder/cinder.conf DEFAULT enabled_backends lvm crudini --set /etc/cinder/cinder.conf DEFAULT glance_api_servers http://controller:9292 crudini --set /etc/cinder/cinder.conf database connection mysql+pymysql://cinder:LiXiaohui@controller/cinder crudini --set /etc/cinder/cinder.conf keystone_authtoken www_authenticate_uri http://controller:5000 crudini --set /etc/cinder/cinder.conf keystone_authtoken auth_url http://controller:5000 crudini --set /etc/cinder/cinder.conf keystone_authtoken auth_uri http://controller:5000 crudini --set /etc/cinder/cinder.conf keystone_authtoken memcached_servers controller:11211 crudini --set /etc/cinder/cinder.conf keystone_authtoken auth_type password crudini --set /etc/cinder/cinder.conf keystone_authtoken project_domain_name Default crudini --set /etc/cinder/cinder.conf keystone_authtoken user_domain_name Default crudini --set /etc/cinder/cinder.conf keystone_authtoken project_name service crudini --set /etc/cinder/cinder.conf keystone_authtoken username cinder crudini --set /etc/cinder/cinder.conf keystone_authtoken password LiXiaohui crudini --set /etc/cinder/cinder.conf oslo_concurrency lock_path /var/lib/cinder/tmp crudini --set /etc/cinder/cinder.conf lvm volume_driver cinder.volume.drivers.lvm.LVMVolumeDriver crudini --set /etc/cinder/cinder.conf lvm volume_group cinder-volumes crudini --set /etc/cinder/cinder.conf lvm target_helper lioadm crudini --set /etc/cinder/cinder.conf lvm target_protocol iscsi
|
或者
1 2 3 4 5 6
| [DEFAULT] auth_strategy = keystone transport_url = rabbit://openstack:LiXiaohui@controller my_ip = 192.168.8.10 enabled_backends = lvm glance_api_servers = http://controller:9292
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| [database] connection = mysql+pymysql://cinder:LiXiaohui@controller/cinder
[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 = LiXiaohui
|
1 2 3 4 5 6 7 8
| [lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes target_protocol = iscsi target_helper = lioadm
[oslo_concurrency] lock_path = /var/lib/cinder/tmp
|
启动cinder服务
在存储节点上,启动Cinder服务和iSCSI目标服务,并设置为开机自启。
1
| systemctl enable openstack-cinder-volume.service target.service --now
|
在所有节点都要完成下列服务启动
1
| systemctl enable iscsid --now
|
安装配置cinder备份服务
安装cinder组件
在控制节点上安装Cinder备份服务组件。
1
| yum install openstack-cinder -y
|
准备配置文件
以下提供了备份到多个地方的配置,你只需要选一个就行
备份到本地
编辑Cinder配置文件/etc/cinder/cinder.conf,配置备份驱动为本地文件系统备份驱动,并设置备份文件的存储路径。
/etc/cinder/cinder.conf
是cinder的配置文件
1 2 3 4
| crudini --set /etc/cinder/cinder.conf DEFAULT backup_driver cinder.backup.drivers.posix.PosixBackupDriver crudini --set /etc/cinder/cinder.conf DEFAULT backup_posix_path /var/lib/cinder/backup crudini --set /etc/cinder/cinder.conf DEFAULT backup_compression_algorithm zlib crudini --set /etc/cinder/cinder.conf DEFAULT backup_enable_progress_timer True
|
或者
1 2 3 4 5
| [DEFAULT] backup_driver = cinder.backup.drivers.posix.PosixBackupDriver backup_posix_path = /var/lib/cinder/backup backup_compression_algorithm = zlib backup_enable_progress_timer = True
|
创建出需要的目录
创建备份目录,并设置正确的权限。
1 2 3
| mkdir -p /var/lib/cinder/backup chown cinder:cinder /var/lib/cinder/backup chmod 750 /var/lib/cinder/backup
|
同步数据库
重启服务
1 2 3 4 5 6 7 8 9
| systemctl enable openstack-cinder-api.service \ openstack-cinder-backup.service \ openstack-cinder-scheduler.service \ openstack-cinder-volume.service
systemctl restart openstack-cinder-api.service \ openstack-cinder-backup.service \ openstack-cinder-scheduler.service \ openstack-cinder-volume.service
|
测试效果
创建一个测试卷并备份,验证备份功能是否正常。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| [root@controller ~]# cd /var/lib/cinder/backup/ [root@controller backup]# ll total 0 [root@controller backup]# openstack volume create --size 1 test-volume-lxh +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2024-05-30T13:36:09.774469 | | description | None | | encrypted | False | | id | 987a3ed8-031e-46aa-a2dd-79399af522fe | | migration_status | None | | multiattach | False | | name | test-volume-lxh | | properties | | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | type | __DEFAULT__ | | updated_at | None | | user_id | db56879a38d943ca8aacb93ffddb8f66 | +---------------------+--------------------------------------+ [root@controller backup]# openstack volume backup create --name backupfile test-volume-lxh +-----------+--------------------------------------+ | Field | Value | +-----------+--------------------------------------+ | id | 57fbf893-7fb9-4609-94c2-f9fab222ede8 | | name | backupfile | | volume_id | 987a3ed8-031e-46aa-a2dd-79399af522fe | +-----------+--------------------------------------+ [root@controller backup]# ll total 0 drwxr-xr-x. 3 cinder cinder 16 May 30 21:36 57
[root@controller backup]# ll -R /var/lib/cinder/backup/ /var/lib/cinder/backup/: total 0 drwxr-xr-x. 3 cinder cinder 16 May 30 21:36 57
/var/lib/cinder/backup/57: total 0 drwxr-xr-x. 3 cinder cinder 50 May 30 21:36 fb
/var/lib/cinder/backup/57/fb: total 4 drwxrwx---. 2 cinder cinder 4096 May 30 21:36 57fbf893-7fb9-4609-94c2-f9fab222ede8
/var/lib/cinder/backup/57/fb/57fbf893-7fb9-4609-94c2-f9fab222ede8: total 3332 -rw-rw----. 1 cinder cinder 1043644 May 30 21:36 volume_987a3ed8-031e-46aa-a2dd-79399af522fe_20240530133624_backup_57fbf893-7fb9-4609-94c2-f9fab222ede8-00001 -rw-rw----. 1 cinder cinder 2125 May 30 21:36 volume_987a3ed8-031e-46aa-a2dd-79399af522fe_20240530133624_backup_57fbf893-7fb9-4609-94c2-f9fab222ede8_metadata -rw-rw----. 1 cinder cinder 2359578 May 30 21:36 volume_987a3ed8-031e-46aa-a2dd-79399af522fe_20240530133624_backup_57fbf893-7fb9-4609-94c2-f9fab222ede8_sha256file
|
备份到Ceph
准备配置文件
/etc/cinder/cinder.conf
是cinder的配置文件
需要先搞定ceph的账号和keyring
1 2 3 4 5 6 7
| crudini --set /etc/cinder/cinder.conf DEFAULT backup_driver cinder.backup.drivers.ceph.CephBackupDriver crudini --set /etc/cinder/cinder.conf DEFAULT backup_ceph_conf /etc/ceph/ceph.conf crudini --set /etc/cinder/cinder.conf DEFAULT backup_ceph_user cinder-backup crudini --set /etc/cinder/cinder.conf DEFAULT backup_ceph_chunk_size 134217728 crudini --set /etc/cinder/cinder.conf DEFAULT backup_ceph_pool backups crudini --set /etc/cinder/cinder.conf DEFAULT backup_compression_algorithm zlib crudini --set /etc/cinder/cinder.conf DEFAULT backup_enable_progress_timer True
|
或者
1 2 3 4 5 6 7 8
| [DEFAULT] backup_driver = cinder.backup.drivers.ceph backup_ceph_conf = /etc/ceph/ceph.conf backup_ceph_user = cinder-backup backup_ceph_chunk_size = 134217728 backup_ceph_pool = backups backup_compression_algorithm = zlib backup_enable_progress_timer = True
|
同步数据库
重启服务
1 2 3 4 5 6 7 8 9
| systemctl enable openstack-cinder-api.service \ openstack-cinder-backup.service \ openstack-cinder-scheduler.service \ openstack-cinder-volume.service
systemctl restart openstack-cinder-api.service \ openstack-cinder-backup.service \ openstack-cinder-scheduler.service \ openstack-cinder-volume.service
|
测试效果
原来ceph池是空的
1 2 3 4 5
| [root@ceph ~]# rados -p backups ls rbd_directory rbd_info rbd_trash
|
创建个卷并备份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| [root@controller cinder]# openstack volume create --size 1 ceph-test-lxh +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2024-05-30T14:03:12.482823 | | description | None | | encrypted | False | | id | 4a6f25d5-93e2-49f7-9bf9-ac9913a7dba5 | | migration_status | None | | multiattach | False | | name | ceph-test-lxh | | properties | | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | type | __DEFAULT__ | | updated_at | None | | user_id | 1a138f1f200b4d75a50b22ecd1a71903 | +---------------------+--------------------------------------+ [root@controller cinder]# openstack volume backup create --name cephtest-lxh ceph-test-lxh +-----------+--------------------------------------+ | Field | Value | +-----------+--------------------------------------+ | id | 363b7645-eb5d-46b1-a209-e1348dc2d76a | | name | cephtest-lxh | | volume_id | 4a6f25d5-93e2-49f7-9bf9-ac9913a7dba5 | +-----------+--------------------------------------+
|
已经出现数据
1 2 3 4 5 6 7 8 9 10
| [root@ceph ~]# rados -p backups ls rbd_object_map.b6807bde1542.0000000000000006 rbd_object_map.b6807bde1542 rbd_directory rbd_header.b6807bde1542 rbd_info rbd_id.volume-4a6f25d5-93e2-49f7-9bf9-ac9913a7dba5.backup.363b7645-eb5d-46b1-a209-e1348dc2d76a backup.363b7645-eb5d-46b1-a209-e1348dc2d76a.meta rbd_trash
|
备份到NFS服务器
搭建NFS服务器
1 2 3 4 5 6
| yum install nfs-utils -y mkdir /backup chmod 777 /backup -R echo /backup *(rw,no_all_squash,no_root_squash) > /etc/exports systemctl enable nfs-server --now exportfs -rav
|
准备配置文件
/etc/cinder/cinder.conf
是cinder的配置文件
1 2 3 4 5 6 7
| crudini --set /etc/cinder/cinder.conf DEFAULT backup_driver cinder.backup.drivers.nfs.NFSBackupDriver crudini --set /etc/cinder/cinder.conf DEFAULT backup_mount_point_base /mnt/backup crudini --set /etc/cinder/cinder.conf DEFAULT backup_share 192.168.8.10:/backup crudini --set /etc/cinder/cinder.conf DEFAULT backup_file_size 209715200 crudini --set /etc/cinder/cinder.conf DEFAULT backup_sha_block_size_bytes 32768 crudini --set /etc/cinder/cinder.conf DEFAULT backup_compression_algorithm zlib crudini --set /etc/cinder/cinder.conf DEFAULT backup_enable_progress_timer True
|
或者
1 2 3 4 5 6 7
| [DEFAULT] backup_driver = cinder.backup.drivers.nfs.NFSBackupDriver backup_mount_point_base = /mnt/backup backup_share = 192.168.8.10:/backup backup_file_size = 209715200 backup_sha_block_size_bytes = 32768 backup_enable_progress_timer = True
|
创建出挂载点
1 2 3
| mkdir /mnt/backup chown cinder:cinder /mnt/backup -R chmod g+s /mnt/backup
|
同步数据库
重启服务
1 2 3 4 5 6 7 8 9
| systemctl enable openstack-cinder-api.service \ openstack-cinder-backup.service \ openstack-cinder-scheduler.service \ openstack-cinder-volume.service
systemctl restart openstack-cinder-api.service \ openstack-cinder-backup.service \ openstack-cinder-scheduler.service \ openstack-cinder-volume.service
|
测试效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| [root@controller cinder]# openstack volume create --size 1 nfs-test +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2024-05-30T15:01:15.277805 | | description | None | | encrypted | False | | id | 3a601d59-020c-4851-bfd6-5d983ac9627f | | migration_status | None | | multiattach | False | | name | nfs-test | | properties | | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | type | __DEFAULT__ | | updated_at | None | | user_id | db56879a38d943ca8aacb93ffddb8f66 | +---------------------+--------------------------------------+ [root@controller cinder]# openstack volume backup create --name nfstest nfs-test +-----------+--------------------------------------+ | Field | Value | +-----------+--------------------------------------+ | id | c30bff9d-e4cb-4fb8-a838-0acf30b3e619 | | name | nfstest | | volume_id | 3a601d59-020c-4851-bfd6-5d983ac9627f | +-----------+--------------------------------------+ [root@controller cinder]# ls /mnt/backup 49 c3 [root@controller cinder]# ls /mnt/backup 49/ c3/ [root@controller cinder]# ls /mnt/backup/c3/0b/c30bff9d-e4cb-4fb8-a838-0acf30b3e619/ volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619-00001 volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619-00002 volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619-00003 volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619-00004 volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619-00005 volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619-00006 volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619_metadata volume_3a601d59-020c-4851-bfd6-5d983ac9627f_20240530150137_backup_c30bff9d-e4cb-4fb8-a838-0acf30b3e619_sha256file
|