Cinder - 块存储¶
概述¶
Cinder 可以使用 Kolla 部署,并支持以下存储后端
ceph
iscsi
lvm
nfs
HA¶
在使用 cinder-volume 的 HA 配置(cinder-volume/存储组中的多个主机)时
请确保您使用的驱动程序支持 活动/活动高可用性 配置
将
cinder_cluster_name: example_cluster_name添加到您的globals.yml(或 host_vars 用于高级多集群配置)
注意
对于非标准配置(例如,混合 HA 和非 HA Cinder 后端),您可以设置 cinder_cluster_skip_precheck 为 true 以跳过预检查。
LVM¶
在使用 lvm 后端时,应在每个存储节点上创建一个卷组。 这可以是真实的物理卷,也可以是用于开发的环回挂载文件。 使用 pvcreate 和 vgcreate 创建卷组。 例如,使用设备 /dev/sdb 和 /dev/sdc
<WARNING ALL DATA ON /dev/sdb and /dev/sdc will be LOST!>
pvcreate /dev/sdb /dev/sdc
vgcreate cinder-volumes /dev/sdb /dev/sdc
在开发期间,使用文件支持的块存储可能是有益的。 可以使用文件并通过环回系统将其挂载为块设备。
free_device=$(losetup -f)
fallocate -l 20G /var/lib/cinder_data.img
losetup $free_device /var/lib/cinder_data.img
pvcreate $free_device
vgcreate cinder-volumes $free_device
在 /etc/kolla/globals.yml 中启用 lvm 后端
enable_cinder_backend_lvm: "yes"
注意
目前在使用多控制器设置中的 LVM 后端时存在问题,请参阅 _bug 1571211 以获取更多信息。
NFS¶
要使用 nfs 后端,请配置 /etc/exports 以包含存储卷的位置
/kolla_nfs 192.168.5.0/24(rw,sync,no_root_squash)
在此示例中,/kolla_nfs 是存储节点上的目录,该目录将被 nfs 挂载,192.168.5.0/24 是存储网络,rw,sync,no_root_squash 表示使共享可读写、同步并防止远程 root 用户访问所有文件。
然后启动 nfsd
systemctl start nfs
在部署节点上,创建 /etc/kolla/config/nfs_shares,其中包含每个存储节点的条目
storage01:/kolla_nfs
storage02:/kolla_nfs
最后,在 /etc/kolla/globals.yml 中启用 nfs 后端
enable_cinder_backend_nfs: "yes"
验证¶
创建卷如下
openstack volume create --size 1 steak_volume
<bunch of stuff printed>
验证它是否可用。 如果显示“error”,则表示在 LVM 创建卷期间出现问题。
openstack volume list
+--------------------------------------+--------------+-----------+------+-------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------+--------------+-----------+------+-------------+
| 0069c17e-8a60-445a-b7f0-383a8b89f87e | steak_volume | available | 1 | |
+--------------------------------------+--------------+-----------+------+-------------+
使用以下命令将卷附加到服务器
openstack server add volume steak_server 0069c17e-8a60-445a-b7f0-383a8b89f87e
检查控制台日志以验证磁盘添加情况
openstack console log show steak_server
至少在启动 cirros 时,控制台日志中应出现 /dev/vdb。 如果磁盘保持可用状态,则在将卷挂载到来宾 VM 的 iSCSI 过程中出现问题。
Cinder LVM2 后端与 iSCSI¶
从 Newton-1 里程碑开始,Kolla 支持 LVM2 作为 cinder 后端。 这是通过引入两个新的容器 tgtd 和 iscsid 来实现的。 tgtd 容器充当 cinder-volume 进程与托管逻辑卷组 (LVG) 的服务器之间的桥梁。 iscsid 容器充当 nova-compute 进程与托管 LVG 的服务器之间的桥梁。
为了使用 Cinder 的 LVM 后端,服务器上应存在名为 cinder-volumes 的 LVG,并且必须在 globals.yml 中指定以下参数
enable_cinder_backend_lvm: "yes"
对于 Ubuntu 和 LVM2/iSCSI¶
iscsd 进程使用 configfs,通常在 /sys/kernel/config 处挂载,以存储发现的目标信息,在 centos/rhel 类型的系统上,此特殊文件系统会自动挂载,但在 debian/ubuntu 上则不然。 由于 iscsid 容器在每个 nova compute 节点上运行,因此必须在每个 Ubuntu 服务器上完成以下步骤,该服务器针对 nova compute 角色。
将 configfs 模块添加到
/etc/modules使用以下命令重建 initramfs:
update-initramfs -u命令停止
open-iscsi系统服务,因为它与 iscsid 容器冲突。Ubuntu 16.04 (systemd):
systemctl stop open-iscsi; systemctl stop iscsid确保在服务器启动过程中挂载 configfs。 有多种方法可以实现它,一个示例
mount -t configfs /etc/rc.local /sys/kernel/config注意
目前,/sys/kernel/config 文件夹存在问题,因为它在几个操作系统中要么为空,要么不存在,请参阅 _bug 1631072 以获取更多信息
使用外部 iSCSI 存储的 Cinder 后端¶
为了使用外部存储系统(如 EMC 或 NetApp 的系统),必须在 globals.yml 中指定以下参数
enable_cinder_backend_iscsi: "yes"
在这种情况下,enable_cinder_backend_lvm 也应设置为 no。
跳过自定义后端的 Cinder 预检查¶
为了使用当前尚未在 Kolla 中实现的自定义存储后端,必须在 globals.yml 中指定以下参数
skip_cinder_backend_check: True
所有自定义 NFS 后端的配置都应通过 config overrides 目录中的 cinder.conf 进行。
使用 S3 后端的 Cinder-Backup¶
为 S3 配置 Cinder-Backup 包括以下步骤
在
globals.yml中启用 Cinder-Backup S3 后端
cinder_backup_driver: "s3"
在
/etc/kolla/globals.yml中配置 S3 连接详细信息cinder_backup_s3_url(示例:http://127.0.0.1:9000)cinder_backup_s3_access_key(示例:minio)cinder_backup_s3_bucket(示例:cinder)cinder_backup_s3_secret_key(示例:admin)
#. 如果您希望为所有受支持的服务使用单个 S3 后端,请使用以下变量
s3_url
s3_access_key
s3_glance_bucket
s3_secret_key所有 Cinder-Backup S3 配置都将这些选项用作默认值。
自定义 cinder.conf 中的后端名称¶
注意
这是一个高级配置选项。 如果您已经拥有使用旧名称的卷,则在没有额外步骤的情况下无法更改这些变量。 默认值开箱即用是合理的。
以下变量可用于自定义 cinder.conf 中默认后端名称
驱动程序 |
变量 |
默认值 |
|---|---|---|
Ceph |
cinder_backend_ceph_name |
rbd-1 |
逻辑卷管理器 (LVM) |
cinder_backend_lvm_name |
lvm-1 |
网络文件系统 (NFS) |
cinder_backend_nfs_name |
nfs-1 |
Quobyte Storage for OpenStack |
cinder_backend_quobyte_name |
QuobyteHD |
Pure Storage FlashArray for OpenStack (iSCSI) |
cinder_backend_pure_iscsi_name |
Pure-FlashArray-iscsi |
Pure Storage FlashArray for OpenStack |
cinder_backend_pure_fc_name |
Pure-FlashArray-fc |
Pure Storage FlashArray for OpenStack |
cinder_backend_pure_roce_name |
Pure-FlashArray-roce |
Pure Storage FlashArray for OpenStack |
cinder_backend_pure_nvme_tcp_name |
Pure-FlashArray-nvme-tcp |
Lightbits Labs 存储后端 |
cinder_backend_lightbits_name |
Lightbits-NVMe-TCP |
这些是在 配置 cinder 卷类型上的 volume_backend_name 时使用的名称。 在某些情况下,提供更具描述性的名称可能很有用。