1.8. 存储要求


Red Hat OpenStack Platform (RHOSP)部署中的存储指的是以下类型:

  • 运行该服务所需的存储
  • 服务管理的存储

在 Red Hat OpenStack Services on OpenShift (RHOSO)中部署服务前,您必须检查存储要求,规划您的 Red Hat OpenShift Container Platform (RHOCP)节点选择,准备您的 RHOCP 节点等。

1.8.1. 存储驱动程序认证

在将 Red Hat OpenStack Platform 17.1 部署到 OpenShift (RHOSO) 18.0 部署之前,请确认部署的存储驱动程序已认证,以便与 RHOSO 18.0 搭配使用。

有关认证用于 RHOSO 18.0 的软件的详情,请查看 红帽生态系统目录

1.8.2. 块存储服务指南

准备采用您的块存储服务(cinder):

  • 记录您使用的块存储服务后端。
  • 确定块存储服务后端使用的所有传输协议,如 RBD、iSCSI、FC、NFS、NVMe-TCP 等。当放置块存储服务以及正确的存储传输相关二进制文件在 Red Hat OpenShift Container Platform (RHOCP)节点上运行时,您必须考虑它们。有关每个存储传输协议的更多信息,请参阅 RHOCP 准备块存储服务使用
  • 使用块存储服务卷服务部署每个块存储服务卷后端。

    例如,您有一个 LVM 后端、Ceph 后端,以及 cinderVolumes 中的两个条目,并且您无法为所有卷服务设置全局默认值。您必须为每个服务定义一个服务:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack
    spec:
      cinder:
        enabled: true
        template:
          cinderVolumes:
            lvm:
              customServiceConfig: |
                [DEFAULT]
                debug = True
                [lvm]
    < . . . >
            ceph:
              customServiceConfig: |
                [DEFAULT]
                debug = True
                [ceph]
    < . . . >
    Copy to Clipboard Toggle word wrap
    警告

    检查所有配置选项是否仍对 RHOSO 18.0 版本有效。配置选项可能已弃用、删除或添加。这适用于特定于后端驱动程序的配置选项和其他通用选项。

1.8.3. 使用块存储服务的限制

在开始使用块存储服务(cinder)前,请查看以下限制:

  • 所有块存储服务卷都没有全局 nodeSelector 选项。您必须为每个后端指定 nodeSelector
  • 所有块存储服务卷都没有全局 customServiceConfigcustomServiceConfigSecrets 选项。您必须为每个后端指定这些选项。
  • 对需要 Red Hat Enterprise Linux 中包含的内核模块的块存储服务后端的支持没有在 OpenShift (RHOSO)上的 Red Hat OpenStack Services 中测试。

1.8.4. RHOCP 准备块存储服务采用

在 Red Hat OpenShift Container Platform (RHOCP)节点中部署 Red Hat OpenStack Platform (RHOSP)之前,请确保网络已就绪,您决定要限制哪些 RHOCP 节点,并对 RHOCP 节点进行任何更改。

节点选择

您可能需要限制运行块存储服务卷和备份服务的 RHOCP 节点。

您需要限制特定块存储服务的节点的示例是使用 LVM 驱动程序部署块存储服务时。在这种情况下,卷仅存储在特定主机中的 LVM 数据,因此您需要将块存储卷服务固定到特定的 RHOCP 节点。在任何其他 RHOCP 节点上运行该服务不起作用。您不能使用 RHOCP 主机节点名称来限制 LVM 后端。您需要使用唯一标签、现有标签或新标签来识别 LVM 后端:

$ oc label nodes worker0 lvm=cinder-volumes
Copy to Clipboard Toggle word wrap
apiVersion: core.openstack.org/v1beta1
kind: OpenStackControlPlane
metadata:
  name: openstack
spec:
  secret: osp-secret
  storageClass: local-storage
  cinder:
    enabled: true
    template:
      cinderVolumes:
        lvm-iscsi:
          nodeSelector:
            lvm: cinder-volumes
< . . . >
Copy to Clipboard Toggle word wrap

有关节点选择的更多信息,请参阅关于节点选择器

注意

如果您的节点没有足够的本地磁盘空间用于临时镜像,您可以通过设置额外卷功能 extraMount 来使用远程 NFS 位置。

传输协议

RHOCP 可能需要对存储传输协议进行一些更改:

  • 如果您使用 MachineConfig 更改 RHOCP 节点,节点将重新引导。
  • 检查 cinder.conf 文件中的 enabled_backends 配置选项中列出的后端部分,以确定启用的存储后端部分。
  • 根据后端,您可以通过查看 volume_drivertarget_protocol 配置选项来查找传输协议。
  • iscsid 服务、multipathd 服务和 NVMe-TCP 内核模块在 data plane 节点上自动启动。

    NFS
    • RHOCP 在不进行其他更改的情况下连接到 NFS 后端。
    RADOS 块设备和 Red Hat Ceph Storage
    • RHOCP 无需额外更改即可连接到红帽 Ceph 存储后端。您必须为服务提供凭证和配置文件。
    iSCSI
    • 要连接到 iSCSI 卷,iSCSI 启动器必须在运行卷和备份服务的 RHOCP 主机上运行。Linux Open iSCSI 启动器不支持网络命名空间,因此您必须只针对正常的 RHOCP 使用运行一个服务实例,以及 RHOCP CSI 插件和 RHOSP 服务。
    • 如果您还没有在 RHOCP 节点上运行 iscsid,则必须应用 MachineConfig。例如:

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfig
      metadata:
        labels:
          machineconfiguration.openshift.io/role: worker
          service: cinder
        name: 99-master-cinder-enable-iscsid
      spec:
        config:
          ignition:
            version: 3.2.0
          systemd:
            units:
            - enabled: true
              name: iscsid.service
      Copy to Clipboard Toggle word wrap
    • 如果使用标签来限制运行块存储服务的节点,则必须使用 MachineConfigPoolMachineConfig 的影响限制为服务可能运行的节点。如需更多信息,请参阅关于节点选择器
    • 如果您使用单一节点部署来测试流程,请在 MachineConfig 中将 worker 替换为 master
    • 对于使用 iSCSI 卷的生产环境部署,请配置多路径以获得更好的 I/O。
    FC
    • 块存储服务卷和块存储服务备份服务必须在具有主机总线适配器(HBA)的 RHOCP 主机中运行。如果某些节点没有 HBA,则使用标签来限制这些服务的运行位置。如需更多信息,请参阅关于节点选择器
    • 如果您有使用 FC 的虚拟化 RHOCP 集群,则需要在虚拟机中公开主机 HBA。
    • 对于使用 FC 卷的生产环境部署,请配置多路径以获得更好的 I/O。
    NVMe-TCP
    • 要连接到 NVMe-TCP 卷,请在 RHOCP 主机上加载 NVMe-TCP 内核模块。
    • 如果您还没有在运行卷和备份服务的 RHOCP 节点上加载 nvme-fabrics 模块,则必须应用 MachineConfig。例如:

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfig
      metadata:
        labels:
          machineconfiguration.openshift.io/role: worker
          service: cinder
        name: 99-master-cinder-load-nvme-fabrics
      spec:
        config:
          ignition:
            version: 3.2.0
          storage:
            files:
              - path: /etc/modules-load.d/nvme_fabrics.conf
                overwrite: false
                # Mode must be decimal, this is 0644
                mode: 420
                user:
                  name: root
                group:
                  name: root
                contents:
                  # Source can be a http, https, tftp, s3, gs, or data as defined in rfc2397.
                  # This is the rfc2397 text/plain string format
                  source: data:,nvme-fabrics
      Copy to Clipboard Toggle word wrap
    • 如果使用标签来限制运行块存储服务的节点,请使用 MachineConfigPoolMachineConfig 的影响限制为服务运行的节点。如需更多信息,请参阅关于节点选择器
    • 如果使用单一节点部署来测试流程,请在 MachineConfig 中将 worker 替换为 master
    • 仅加载 nvme-fabrics 模块,因为它根据需要加载特定于传输的模块,如 TCP、RDMA 或 FC。
    • 对于使用 NVMe-TCP 卷的生产环境部署,使用多路径来获得更好的 I/O。对于 NVMe-TCP 卷,RHOCP 使用原生多路径,称为 ANA。
    • 在 RHOCP 节点重新引导并加载 nvme-fabrics 模块后,您可以通过检查主机来确认操作系统是否已配置,并支持 ANA:

      $ cat /sys/module/nvme_core/parameters/multipath
      Copy to Clipboard Toggle word wrap
      重要

      ANA 不使用 Linux 多路径设备映射器,但 RHOCP 需要 multipathd 在 Compute 节点上运行,以便计算服务(nova)能够使用多路径。当多路径被置备时,会在 data plane 节点上自动配置多路径。

    多路径(Multipathing)
    • 对 iSCSI 和 FC 协议使用多路径。要在这些协议中配置多路径,您可以执行以下任务:

      • 准备 RHOCP 主机
      • 配置块存储服务
      • 准备 Compute 服务节点
      • 配置 Compute 服务
    • 要准备 RHOCP 主机,请使用 MachineConfig 确保在 RHOCP 主机上配置并运行 Linux 多路径设备映射器。例如:

      # Includes the /etc/multipathd.conf contents and the systemd unit changes
      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfig
      metadata:
        labels:
          machineconfiguration.openshift.io/role: worker
          service: cinder
        name: 99-master-cinder-enable-multipathd
      spec:
        config:
          ignition:
            version: 3.2.0
          storage:
            files:
              - path: /etc/multipath.conf
                overwrite: false
                # Mode must be decimal, this is 0600
                mode: 384
                user:
                  name: root
                group:
                  name: root
                contents:
                  # Source can be a http, https, tftp, s3, gs, or data as defined in rfc2397.
                  # This is the rfc2397 text/plain string format
                  source: data:,defaults%20%7B%0A%20%20user_friendly_names%20no%0A%20%20recheck_wwid%20yes%0A%20%20skip_kpartx%20yes%0A%20%20find_multipaths%20yes%0A%7D%0A%0Ablacklist%20%7B%0A%7D
          systemd:
            units:
            - enabled: true
              name: multipathd.service
      Copy to Clipboard Toggle word wrap
    • 如果使用标签来限制运行块存储服务的节点,您需要使用 MachineConfigPoolMachineConfig 的影响限制为服务运行的节点。如需更多信息,请参阅关于节点选择器
    • 如果您使用单一节点部署来测试流程,请在 MachineConfig 中将 worker 替换为 master
    • Cinder 卷和备份默认配置为使用多路径。

1.8.5. 转换块存储服务配置

在之前的部署中,您将对所有服务使用相同的 cinder.conf 文件。要准备块存储服务(cinder)配置以采用,请将此单文件配置分成各个块存储服务的单个配置。参阅以下信息来指导您完成之前的配置:

  • 确定所有块存储服务的配置是通用的,并删除在 Red Hat OpenShift Container Platform (RHOCP)中部署时可能会更改的任何部分,如 [database] 部分中的 连接,即 [DEFAULT] 部分中的 transport_urllog_dir,整个 [coordination][barbican] 部分。剩余的通用配置进入 customServiceConfig 选项或 Secret 自定义资源(CR),然后在 cinder: template: level 的 customServiceConfigSecrets 部分中使用。
  • 确定是否有特定于调度程序的配置,并将其添加到 cinder: template: cinderScheduler 中的 customServiceConfig 选项中。
  • 确定是否有特定于 API 的配置,并将其添加到 cinder: template: cinderAPI 中的 customServiceConfig 选项中。
  • 如果部署了块存储服务备份,请将块存储服务备份配置选项添加到 customServiceConfig 选项,或添加到 cinder: template: cinderBackup: level 的 customServiceConfigSecrets 部分的 Secret CR 中。删除 [DEFAULT] 部分中的主机配置,以便稍后支持多个副本。
  • 确定每个驱动程序的单个卷后端配置。配置位于特定的驱动程序部分,它使用 [backend_defaults] 部分和 FC zoning 部分(如果使用它们)。Block Storage Service operator 不支持所有卷服务的全局 customServiceConfig 选项。每个后端在 cinder: template: cinderVolumes 下都有自己的部分,并且配置位于 customServiceConfig 选项或 Secret CR 中,然后在 customServiceConfigSecrets 部分中使用。
  • 如果任何块存储服务卷驱动程序需要自定义厂商镜像,请在 红帽生态系统目录 中找到镜像的位置,并使用 cinderVolumes 部分中的键创建或修改 OpenStackVersion CR 来指定自定义镜像。

    例如,如果您有以下配置:

    spec:
      cinder:
        enabled: true
        template:
          cinderVolume:
            pure:
              customServiceConfigSecrets:
                - openstack-cinder-pure-cfg
    < . . . >
    Copy to Clipboard Toggle word wrap

    然后,描述该后端容器镜像的 OpenStackVersion CR 类似以下示例:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackVersion
    metadata:
      name: openstack
    spec:
      customContainerImages:
        cinderVolumeImages:
          pure: registry.connect.redhat.com/purestorage/openstack-cinder-volume-pure-rhosp-18-0'
    Copy to Clipboard Toggle word wrap
    注意

    OpenStackVersion 的名称必须与 OpenStackControlPlane CR 的名称匹配。

  • 如果您的块存储服务使用外部文件(例如,对于自定义策略),或者存储凭证或 SSL 证书颁发机构捆绑包以连接到存储阵列,请将这些文件提供给正确的容器。使用 SecretsConfigMap 将信息存储在 RHOCP 中,然后存储在 extraMounts 键中。例如,对于存储在名为 ceph-conf-filesSecret 中的 Red Hat Ceph Storage 凭证,您可以在 OpenstackControlPlane CR 中修补顶级 extraMounts 密钥:

    spec:
      extraMounts:
      - extraVol:
        - extraVolType: Ceph
          mounts:
          - mountPath: /etc/ceph
            name: ceph
            readOnly: true
          propagation:
          - CinderVolume
          - CinderBackup
          - Glance
          volumes:
          - name: ceph
            projected:
              sources:
              - secret:
                  name: ceph-conf-files
    Copy to Clipboard Toggle word wrap
  • 对于特定于服务的文件,如 API 策略,您可以在服务本身中添加配置。在以下示例中,您将包含 CinderAPI 配置来引用您要从名为 my-cinder-confConfigMap 添加 的策略,其具有策略 键,其内容如下:

    spec:
      cinder:
        enabled: true
        template:
          cinderAPI:
            customServiceConfig: |
               [oslo_policy]
               policy_file=/etc/cinder/api/policy.yaml
          extraMounts:
          - extraVol:
            - extraVolType: Ceph
              mounts:
              - mountPath: /etc/cinder/api
                name: policy
                readOnly: true
              propagation:
              - CinderAPI
              volumes:
              - name: policy
                projected:
                  sources:
                  - configMap:
                      name: my-cinder-conf
                      items:
                        - key: policy
                          path: policy.yaml
    Copy to Clipboard Toggle word wrap

1.8.6. 通过 NFS 更改 CephFS

重要

本节中的内容 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

在开始采用前,请查看以下信息,以了解 Red Hat OpenStack Platform (RHOSP) 17.1 和 OpenShift (RHOSO) 18.0 上的 NFS 通过 NFS 的更改:

  • 如果 RHOSP 17.1 部署通过 NFS 作为共享文件系统服务(manila)的后端,则无法将 RHOSP Controller 节点上的 ceph-nfs 服务直接导入到 RHOSO 18.0 中。在 RHOSO 18.0 中,共享文件系统服务只支持使用在 Red Hat Ceph Storage 集群上直接管理的集群的 NFS 服务。与 ceph-nfs 服务搭配使用涉及对现有 NFS 客户端的数据路径中断。
  • 在 RHOSP 17.1 上,Pacemaker 控制 ceph-nfs 服务的高可用性。此服务分配由 Pacemaker 管理的虚拟 IP (VIP)地址。VIP 通常在隔离的 StorageNFS 网络上创建。Controller 节点在这个 VIP、ceph-nfs 和共享文件系统服务(manila)共享管理器服务之间建立排序和并置限制。在使用共享文件系统服务前,您必须调整 Pacemaker 排序和并置限制来分隔共享管理器服务。这将 ceph-nfs 与其 VIP 建立为隔离的独立 NFS 服务,您可以在完成 RHOSO 应用后停用。
  • 在 Red Hat Ceph Storage 7 中,在使用共享文件系统服务前,必须使用 Ceph Orchestrator 将原生集群的 Ceph NFS 服务部署到 Red Hat Ceph Storage 集群上。这个 NFS 服务最终会替换部署中 RHOSP 17.1 的独立 NFS 服务。当共享文件系统服务采用 RHOSO 18.0 环境时,它会对新的集群的 Ceph NFS 服务建立所有现有导出和客户端限制。客户端可以继续在现有 NFS 共享上读取和写入数据,并且在停用旧的独立 NFS 服务前不会受到影响。在服务停用后,您可以在计划停机期间从新集群的 Ceph NFS 服务重新挂载相同的共享。
  • 为确保 NFS 用户不需要对现有工作负载进行任何网络更改,请将同一隔离的 StorageNFS 网络中的 IP 地址分配给集群的 Ceph NFS 服务。NFS 用户只需要使用新的导出路径发现和重新挂载其共享。采用完成后,RHOSO 用户可以查询共享文件系统服务 API,以列出现有共享上的导出位置,以识别挂载这些共享的首选路径。这些首选路径与新的集群 Ceph NFS 服务对应,这与继续显示的其他非首选导出路径相反,直到旧的隔离独立 NFS 服务停用为止。

有关设置集群的 NFS 服务的更多信息,请参阅创建 NFS Ganesha 集群

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat