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_prechecktrue 以跳过预检查。

LVM

在使用 lvm 后端时,应在每个存储节点上创建一个卷组。 这可以是真实的物理卷,也可以是用于开发的环回挂载文件。 使用 pvcreatevgcreate 创建卷组。 例如,使用设备 /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 后端。 这是通过引入两个新的容器 tgtdiscsid 来实现的。 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 包括以下步骤

  1. globals.yml 中启用 Cinder-Backup S3 后端

cinder_backup_driver: "s3"
  1. /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 时使用的名称。 在某些情况下,提供更具描述性的名称可能很有用。