10-Openstack 块存储服务 Cinder
1. 基本概念
Cinder是OpenStack中提供块存储服务的组件 , 主要功能是为虚拟机实例提供虚拟磁盘管理服务。Cinder的前身是Nova中的“nova-volume”组件 , OpenStack F 版以后就将其从Nova中被剥离出来作为一个独立的OpenStack组件。

Cinder是一个可扩展、可靠和可用的块存储服务 , 它的主要功能包括 :
卷管理 :
Cinder可以创建、删除、扩容和缩小卷。管理员可以通过API或者命令行接口创建卷 , 指定卷的大小、类型、名称和描述等信息。当需要扩容或缩小卷时 , 管理员可以通过API或命令行接口进行操作。卷快照 :
Cinder支持卷的快照 , 即对现有卷的某个时刻的状态进行备份 , 可以用于数据的保护和还原。管理员可以通过API或命令行接口创建、删除和还原卷快照。卷的迁移和复制 :
Cinder支持卷的迁移和复制 , 可以将卷从一个存储后端迁移到另一个存储后端 , 或者在同一个存储后端中复制卷。管理员可以通过API或命令行接口进行操作。备份和还原 :
Cinder支持卷的备份和还原 , 可以将卷的数据备份到其他地方进行保护。管理员可以通过API或命令行接口创建、删除和还原卷的备份。存储后端支持 :
Cinder支持多种存储后端 , 包括本地存储、iSCSI、NFS、Ceph、GlusterFS等 , 管理员可以根据需求选择和配置不同的存储后端。多租户支持 :
Cinder支持多租户 , 可以为不同的租户提供独立的块存储服务 , 并且可以限制不同租户的配额和权限。高可用性和容错性 :
Cinder具有高可用性和容错性 , 可以保证存储服务的可用性和数据的安全性。Cinder支持多副本和数据冗余 , 同时还支持故障转移和自动恢复。网络互通性 :
Cinder可以与其他OpenStack组件进行交互 , 如Nova、Glance等 , 同时还支持API和命令行接口 , 可以方便地与其他系统进行集成。
总的来说 , Cinder是OpenStack平台中一个重要的组件 , 为云计算环境中虚拟机提供持久化的块存储服务 , 支持多种存储后端和多租户 , 并具有高可用性和容错性。Cinder的主要优势在于其可扩展性和灵活性 , 可以根据需要选择不同的存储后端 , 并且可以通过API和命令行接口进行操作和管理。
2. 存储相关的概念
文件存储
文件存储依靠文件系统来存储文件。文件直接存储在文件系统上 , 通过FTP、网络文件系统等服务进行访问。特点是使用简单、兼容性好 , 但响应速度和存储容量一般。
块存储
块存储中的“块”是指存储系统采用的一整块的存储设备 , 如同一块硬盘。块存储技术通常是指将裸磁盘空间整个映射给主机时使用的技术。因此 , 块存储可以虚拟出整块硬盘给云主机使用 , 对云主机的操作系统来说这就是挂载的物理硬盘。它的特点是响应速度极快 , 同时具有高稳定性和可靠性 , 但受硬件容量限制 , 其容量不大。
对象存储
对象存储以对象(封装)的形式管理数据。对象和文件最大的不同就是对象在文件基础之上增加了元数据。对象数据可以分为两部分:
数据 , 存储于对象存储服务器中
对应的元数据 , 存储于元数据服务器中
数据通常都是无结构的书 , 如图片、视频等。元数据值得是对数据的相关描述 , 例如图片的大小 , 数据存储的位置信息等。当需要访问某个对象时 , 先查询元数据服务器获得具体位置信息 , 再从对象存储服务器中获得具体数据。对象存储主要用于分布式存储 , 其存储容量巨大 , 但速度较慢。
3. Cinder 组件架构
在块存储中 , 裸硬盘通常被称为卷 , Cinder的任务就是管理卷 , 包括卷的创建 , 删除等操作。

Cinder的主要模块和功能如下。
3.1 Cinder-api
管理 volume 的服务 , 与 volume provider 协调工作 , 管理 volume 的生命周期。运行 cinder-volume 服务的节点被称作为存储节点。

cinder-volume 在存储节点上运行 , OpenStack 对 Volume 的操作 , 最后都是交给 cinder-volume 来完成的。cinder-volume 自身并不管理真正的存储设备 , 存储设备是由 volume provider 管理的。cinder-volume 与 volume provider 一起实现 volume 生命周期的管理。
通过 Driver 架构支持多种 Volume Provider
接着的问题是:现在市面上有这么多块存储产品和方案(volume provider) , cinder-volume 如何与它们配合呢?
通过的 Driver 架构。 cinder-volume 为这些 volume provider 定义了统一的接口 , volume provider 只需要实现这些接口 , 就可以 Driver 的形式即插即用到 OpenStack 系统中。、
定期向 OpenStack报告计算节点的状态:cinder-volume 会定期向 Cinder 报告存储节点的空闲容量来做筛选启动volume
实现 volume 生命周期管理:Cinder 对 volume 的生命周期的管理最终都是通过 cinder-volume 完成的 , 包括 volume 的 create、extend、attach、snapshot、delete 等。
3.2 volume provider
数据的存储设备 , 为 volume 提供物理存储空间。 cinder-volume 支持多种 volume provider , 每种 volume provider 通过自己的 driver 与cinder-volume 协调工作。

3.3 cinder-scheduler
scheduler 通过调度算法选择最合适的存储节点创建 volume。 创建 Volume 时 , cinder-scheduler 会基于容量、Volume Type 等条件选择出最合适的存储节点 , 然后让其创建 Volume。

3.4 Message Queue
Cinder 各个子服务通过消息队列实现进程间通信和相互协作。因为有了消息队列 , 子服务之间实现了解耦 , 这种松散的结构也是分布式系统的重要特征。
3.5 Database Cinder
有一些数据需要存放到数据库中 , 一般使用 MySQL。数据库是安装在控制节点上的 , 比如在我们的实验环境中 , 可以访问名称为“cinder”的数据库。
3.6 cinder-backup
cinder-backup用于将volume备份到其他存储系统上 , 目前支持的备份存储系统有swift、ceph、IBM Tivoli storage manager(TSM)、glusterFS等 , 默认是swift。
3.7 基本工作流程
Cinder组件的主要功能就是对卷进行创建与管理。

流程如下:
“
cinder-api”接收到用户通过管理界面或命令行发起的卷创建请求后 , 完成必要处理后将其发送到消息队列中。“
cinder-scheduler”从消息队列中获得请求和数据后 , 从若干存储节点选出一个能存放改卷的节点 , 并将消息发送到消息队列。“
cinder-volume”从消息队列中获取请求后 , 通过“volume-provider”调用具体的卷管理系统在存储设备上创建卷。
4. 安装配置
4.1 控制节点配置
4.1.1 环境准备
数据库配置 , 创建对应
cinder数据库。同时对数据库授权, 这里设置对应的数据库用户名cinder密码为cinder123[root@node02 ~]# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 82623 Server version: 10.5.22-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE cinder; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder123'; Query OK, 0 rows affected (0.007 sec) 控制节点中创建
cinder服务认证创建
cinder用户, 这里用户cinder的密码设置为cinder[root@node01 ~]# openstack user create --domain default --password-prompt cinder User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 6c6144bfeddd4fc3b881abae28b86a65 | | name | cinder | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ 为
cinder用户添加admin角色, 并指明是一个service项目[root@node01 ~]# openstack role add --project service --user cinder admin创建
cinderv3服务[root@node01 ~]# openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3 +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | 3d96a994edca412cb67ab74b2ae82526 | | name | cinderv3 | | type | volumev3 | +-------------+----------------------------------+创建块存储服务
API端点:[root@node01 ~]# openstack endpoint create --region RegionOne volumev3 public http://openstack-vip.net:8776/v3/%\(project_id\)s +--------------+-------------------------------------------------+ | Field | Value | +--------------+-------------------------------------------------+ | enabled | True | | id | f7535d08677b484c9b55f3f203c7f849 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 3d96a994edca412cb67ab74b2ae82526 | | service_name | cinderv3 | | service_type | volumev3 | | url | http://openstack-vip.net:8776/v3/%(project_id)s | +--------------+-------------------------------------------------+ [root@node01 ~]# openstack endpoint create --region RegionOne volumev3 internal http://openstack-vip.net:8776/v3/%\(project_id\)s +--------------+-------------------------------------------------+ | Field | Value | +--------------+-------------------------------------------------+ | enabled | True | | id | 4979fac3ddb9432badc92f4a07925e78 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 3d96a994edca412cb67ab74b2ae82526 | | service_name | cinderv3 | | service_type | volumev3 | | url | http://openstack-vip.net:8776/v3/%(project_id)s | +--------------+-------------------------------------------------+ [root@node01 ~]# openstack endpoint create --region RegionOne volumev3 admin http://openstack-vip.net:8776/v3/%\(project_id\)s +--------------+-------------------------------------------------+ | Field | Value | +--------------+-------------------------------------------------+ | enabled | True | | id | 2f149e5c205044e7abfbee7eade3b321 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 3d96a994edca412cb67ab74b2ae82526 | | service_name | cinderv3 | | service_type | volumev3 | | url | http://openstack-vip.net:8776/v3/%(project_id)s | +--------------+-------------------------------------------------+
4.1.2 安装配置组件
安装软件包
[root@node01 ~]# dnf install openstack-cinder编辑
/etc/cinder/cinder.conf文件并完成以下操作:在
[database]部分 , 配置数据库访问[database] # ... connection = mysql+pymysql://cinder:cinder123@openstack-vip.net/cinder在
[DEFAULT]部分 , 配置RabbitMQ消息队列访问:[DEFAULT] # ... transport_url = rabbit://openstack:openstack123@openstack-vip.net在
[DEFAULT]和[keystone_authtoken]部分 , 配置身份服务访问权限:[DEFAULT] # ... auth_strategy = keystone [keystone_authtoken] # ... www_authenticate_uri = http://openstack-vip.net:5000 auth_url = http://openstack-vip.net:5000 memcached_servers = openstack-vip.net: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.71.11在
[oslo_concurrency]部分 , 配置锁路径:[oslo_concurrency] # ... lock_path = /var/lib/cinder/tmp填充块存储的数据库
[root@node01 ~]# su -s /bin/sh -c "cinder-manage db sync" cinder 2024-10-05 17:43:11.863 6822 INFO cinder.db.migration [-] Applying migration(s) 2024-10-05 17:43:11.867 6822 INFO alembic.runtime.migration [-] Context impl MySQLImpl. 2024-10-05 17:43:11.868 6822 INFO alembic.runtime.migration [-] Will assume non-transactional DDL. 2024-10-05 17:43:11.935 6822 INFO alembic.runtime.migration [-] Running upgrade -> 921e1a36b076, Initial migration. 2024-10-05 17:43:14.766 6822 INFO alembic.runtime.migration [-] Running upgrade 921e1a36b076 -> c92a3e68beed, Make shared_targets nullable 2024-10-05 17:43:14.933 6822 INFO alembic.runtime.migration [-] Running upgrade c92a3e68beed -> daa98075b90d, Add resource indexes 2024-10-05 17:43:15.162 6822 INFO alembic.runtime.migration [-] Running upgrade daa98075b90d -> 89aa6f9639f9, Drop legacy migrate_version table 2024-10-05 17:43:15.174 6822 INFO cinder.db.migration [-] Migration(s) applied验证数据库中是否有对应的表
MariaDB [(none)]> use cinder Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [cinder]> show tables; +----------------------------+ | Tables_in_cinder | +----------------------------+ | alembic_version | | attachment_specs | | backup_metadata | | backups | | cgsnapshots | | clusters | | consistencygroups | | default_volume_types | | driver_initiator_data | | encryption | | group_snapshots | | group_type_projects | | group_type_specs | | group_types | | group_volume_type_mapping | | groups | | image_volume_cache_entries | | messages | | quality_of_service_specs | | quota_classes | | quota_usages | | quotas | | reservations | | services | | snapshot_metadata | | snapshots | | transfers | | volume_admin_metadata | | volume_attachment | | volume_glance_metadata | | volume_metadata | | volume_type_extra_specs | | volume_type_projects | | volume_types | | volumes | | workers | +----------------------------+ 36 rows in set (0.001 sec)切换到计算节点,编辑计算节点
/etc/nova/nova.conf配置文件 , 在[cinder]配置段配置nova使用cinder服务[cinder] os_region_name = RegionOne重启
nova服务[root@node01 ~]# systemctl restart openstack-nova-api.service启动
cinder-api和cinder-scheduler服务 , 并将其设置为开机启动[root@node01 ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service Created symlink /etc/systemd/system/multi-user.target.wants/openstack-cinder-api.service → /usr/lib/systemd/system/openstack-cinder-api.service. Created symlink /etc/systemd/system/multi-user.target.wants/openstack-cinder-scheduler.service → /usr/lib/systemd/system/openstack-cinder-scheduler.service. [root@node01 ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service [root@node01 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:8776 0.0.0.0:* LISTEN 0 128 0.0.0.0:8775 0.0.0.0:* LISTEN 0 128 0.0.0.0:8774 0.0.0.0:* LISTEN 0 4096 0.0.0.0:9292 0.0.0.0:* LISTEN 0 4096 0.0.0.0:9696 0.0.0.0:* LISTEN 0 100 0.0.0.0:6080 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 4096 0.0.0.0:111 0.0.0.0:* LISTEN 0 10 127.0.0.1:6640 0.0.0.0:* LISTEN 0 50 127.0.0.1:6633 0.0.0.0:* LISTEN 0 511 *:8778 *:* LISTEN 0 511 *:5000 *:* LISTEN 0 128 [::]:22 [::]:* LISTEN 0 4096 [::]:111 [::]:* LISTEN 0 511 *:80 *:*提示:请确保
8776端口处于正常监听就说明cinder服务启动正常;或者直接查看有没有cinder进程启动 , 以此来判断cinder服务是否都启动正常到此 , 在控制节点安装配置
cinder-api和cinder-scheduler服务就完成了;
4.2 存储节点配置
4.2.1 环境准备
这里创建一个新的存储节点, IP 192.168.71.49
按照之前的文档初始化存储节点
设置主机名
[root@host-192-168-71-49 ~]# hostnamectl set-hostname cinder安装基础包
[root@cinder ~]# dnf install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop lsof telnet bridge-utils ntpsec配置时间同步源
[root@cinder ~]# grep server /etc/chrony.conf # Use public servers from the pool.ntp.org project. server 192.168.71.241 iburst # Use NTP servers from DHCP. [root@cinder ~]# systemctl restart chronyd [root@cinder ~]# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 192.168.71.241 3 6 17 3 -55us[-1008us] +/- 50ms配置主机名解析
[root@cinder ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.71.11 node01 192.168.71.29 node02 192.168.71.30 node03 192.168.71.250 openstack-vip.net 192.168.71.35 node04 192.168.71.36 node05 192.168.71.37 node06 192.168.71.43 node07 192.168.71.44 node08 192.168.71.49 cinder配置
openstack B版的yum仓库[root@cinder ~]# dnf install centos-release-openstack-bobcat安装
python3-openstackclient和openstack-selinux包[root@cinder ~]# dnf install python3-openstackclient openstack-selinux -y配置节点的存储基础环境
安装
LVM软件包[root@cinder ~]# dnf install lvm2 device-mapper-persistent-data Last metadata expiration check: 0:04:31 ago on Sat 05 Oct 2024 06:17:58 PM CST. Package lvm2-9:2.03.23-2.el9.x86_64 is already installed. Package device-mapper-persistent-data-1.0.9-3.el9_4.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete!这对于
CentOS 8或更高版本不是必需的 , 因为它们自带的LVM版本不使用lvmetad服务。systemctl enable lvm2-lvmetad.service systemctl start lvm2-lvmetad.service创建
lvm物理卷[root@cinder ~]# pvcreate /dev/vdb Physical volume "/dev/vdb" successfully created.创建
LVM存储卷cinder-volumes[root@cinder ~]# vgcreate cinder-volumes /dev/vdb Volume group "cinder-volumes" successfully created编辑
/etc/lvm/lvm.conf文件并完成下面的操作在
devices部分 , 添加一个过滤器 , 只接受/dev/sdb设备 , 拒绝其他所有设备:devices { ... filter = [ "a/vdb/", "r/.*/"]只有实例才能访问块存储卷。然而 , 底层操作系统管理与卷相关联的设备。默认情况下 ,
LVM卷扫描工具会扫描/dev目录中包含卷的块存储设备。如果项目在它们的卷上使用LVM, 扫描工具会检测到这些卷并尝试缓存它们 , 这可能会导致底层操作系统和项目卷的各种问题。您必须重新配置LVM, 使其只扫描包含cinder-volumes卷组的设备。将其只允许扫描我们附加的三块磁盘和本地
/dev/sda, 默认lvm会扫描整个/dev下的所有设备devices { ... filter = [ "a/sdb/", "r/.*/"]过滤数组中的每个项目都以
a表示接受或r表示拒绝开始 , 并包含设备名称的正则表达式。数组必须以r/.*/结尾 , 以拒绝任何剩余的设备。您可以使用vgs -vvvv命令来测试过滤器。如果您的存储节点在操作系统盘上使用
LVM, 您还必须将相关设备添加到过滤器中。例如 , 如果/dev/sda设备包含操作系统:filter = [ "a/sda/", "a/sdb/", "r/.*/"] filter = [ "a/vda/", "a/vdb/", "r/.*/"]同样 , 如果您的计算节点在操作系统盘上使用
LVM, 您还必须修改这些节点上的/etc/lvm/lvm.conf文件中的过滤器 , 以仅包括操作系统盘。例如 , 如果/dev/sda设备包含操作系统:filter = [ "a/sda/", "r/.*/"]
4.2.2 安装配置组件
安装软件包
[root@cinder ~]# dnf install openstack-cinder targetcli编辑
/etc/cinder/cinder.conf文件并完成以下操作在
[database]部分 , 配置数据库访问权限[database] # ... connection = mysql+pymysql://cinder:cinder123@openstack-vip.net/cinder在
[DEFAULT]部分 , 配置RabbitMQ消息队列访问权限[DEFAULT] # ... transport_url = rabbit://openstack:openstack123@openstack-vip.net在
[DEFAULT]和[keystone_authtoken]部分 , 配置身份服务访问权限[DEFAULT] # ... auth_strategy = keystone [keystone_authtoken] # ... www_authenticate_uri = http://openstack-vip.net:5000 auth_url = http://openstack-vip.net:5000 memcached_servers = openstack-vip.net:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = cinder在
[DEFAULT]部分 , 配置my_ip选项:[DEFAULT] # ... my_ip = 192.168.71.49在
[lvm]部分 , 使用LVM驱动程序、cinder-volumes卷组、iSCSI协议以及适当的iSCSI服务来配置LVM后端。如果[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]部分 , 配置图像服务API的位置[DEFAULT] # ... glance_api_servers = http://openstack-vip.net:9292在
[oslo_concurrency]部分 , 配置锁路径[oslo_concurrency] # ... lock_path = /var/lib/cinder/tmpcinder.conf最终配置[root@cinder ~]# grep -i ^"[a-z\[]" /etc/cinder/cinder.conf [DEFAULT] auth_strategy = keystone glance_api_servers = http://openstack-vip.net:9292 my_ip = 192.168.71.49 enabled_backends = lvm transport_url = rabbit://openstack:openstack123@openstack-vip.net [backend] [backend_defaults] [barbican] [barbican_service_user] [brcd_fabric_example] [cisco_fabric_example] [coordination] [cors] [database] connection = mysql+pymysql://cinder:cinder123@openstack-vip.net/cinder [fc-zone-manager] [healthcheck] [key_manager] [keystone_authtoken] www_authenticate_uri = http://openstack-vip.net:5000 auth_url = http://openstack-vip.net:5000 memcached_servers = openstack-vip.net:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = cinder [nova] [os_brick] [oslo_concurrency] lock_path = /var/lib/cinder/tmp [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_middleware] [oslo_policy] [oslo_reports] [oslo_versionedobjects] [privsep] [profiler] [profiler_jaeger] [profiler_otlp] [sample_castellan_source] [sample_remote_file_source] [service_user] [ssl] [vault] [lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes target_protocol = iscsi target_helper = lioadm启动服务 , 并将其设置为开机启动
[root@cinder ~]# systemctl start openstack-cinder-volume.service target.service [root@cinder ~]# systemctl enable openstack-cinder-volume.service target.service Created symlink /etc/systemd/system/multi-user.target.wants/openstack-cinder-volume.service → /usr/lib/systemd/system/openstack-cinder-volume.service. Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /usr/lib/systemd/system/target.service.到此 , 在
storage node上的配置就完成了;
4.3 验证
在控制节点导出
admin用户环境变量 , 使用openstack volume service list命令 , 看看是否能够列出服务组件信息[root@node01 ~]# . keystone_admin.rc [root@node01 ~]# openstack volume service list +------------------+------------+------+---------+-------+----------------------------+ | Binary | Host | Zone | Status | State | Updated At | +------------------+------------+------+---------+-------+----------------------------+ | cinder-scheduler | node01 | nova | enabled | up | 2024-10-05T12:57:13.000000 | | cinder-volume | cinder@lvm | nova | enabled | up | 2024-10-05T12:57:20.000000 | +------------------+------------+------+---------+-------+----------------------------+能够列出
cinder-scheduler和cinder-volume这两个组件就表示我们在控制节点和storage节点上安装的组件没有问题验证:导出
demo用户环境,创建卷,看看是否能够正常创建?[root@node01 ~]# . demo.sh [root@node01 ~]# openstack volume create --size 1 volume1 +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2024-10-05T12:59:09.032385 | | description | None | | encrypted | False | | id | b532a869-21e1-4c12-b07e-514585d2a98e | | migration_status | None | | multiattach | False | | name | volume1 | | properties | | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | type | __DEFAULT__ | | updated_at | None | | user_id | c4c0a73ca297489c9771b3d7e7814b53 | +---------------------+--------------------------------------+在
storage节点上查看逻辑卷,看看是否有我们刚才创建的卷呢
5. NFS后端
这个方法没有测试过。后续有时间继续测试
安装
NFS服务器在第二个负载服务器安装,或在其他服务器安装。
[root@linux-host5 ~]# yum install nfs-utils rpcbind [root@linux-host5 ~]# mkdir /nfsdata/ [root@linux-host5 ~]# vim /etc/exports /nfsdata *(rw,no_root_squash) [root@linux-host5 ~]# systemctl start nfs [root@linux-host5 ~]# systemctl enable nfs配置
cinder使用NFS:编辑主配置文件:
[root@linux-host1 ~]# vim /etc/cinder/cinder.conf 380 enabled_backends = nfs 4901 [nfs] 4902 volume_backend_name = openstack-NFS #定义名称,后面做关联的时候使用 4903 volume_driver = cinder.volume.drivers.nfs.NfsDriver #驱动 4904 nfs_shares_config = /etc/cinder/nfs_shares #定义 NFS 挂载的配置文件路径 4905 nfs_mount_point_base = $state_path/mnt #定义 NFS 挂载点创建 NFS 挂载配置文件:
[root@linux-host1 ~]# vim /etc/cinder/nfs_shares 192.168.10.205:/nfsdata [root@linux-host1 ~]# chown root.cinder /etc/cinder/nfs_shares [root@linux-host1 ~]# systemctl restart openstack-cinder-volume.service创建磁盘类型并关联
创建类型
[root@linux-host1 ~]# cinder type-create lvm
[root@linux-host1 ~]# cinder type-create nfs
将磁盘类型与磁盘关联
[root@linux-host1 ~]# source admin-ocata.sh [root@linux-host1 ~]# cinder type-key lvm set volume_backend_name=Openstack-lvm [root@linux-host1 ~]# cinder type-key nfs set volume_backend_name=openstack-NFS创建
NFS卷
之后直接使用即可
参考链接
云计算管理平台之OpenStack块存储服务cinder - Linux-1874 - 博客园 (cnblogs.com)