2.2. 安装带有 CephFS through NFS 和一个自定义 network_data 文件的 Red Hat OpenStack Platform (RHOSP)


要安装 CephFS through NFS,完成以下步骤:

  1. 安装 ceph-ansible 软件包。请查看 第 2.2.1 节 “安装 ceph-ansible 软件包”
  2. 生成自定义角色文件,role_data.yamlnetwork_data.yaml 文件。请查看 第 2.2.1.1 节 “生成自定义角色文件”
  3. 使用带有自定义角色和环境的 openstack overcloud deploy 命令,部署 Ceph、共享文件系统服务(manila)和 CephFS。请查看 第 2.2.2 节 “部署更新的环境”
  4. 配置 isolated StorageNFS 网络并创建默认共享类型。请查看 第 2.2.3 节 “完成部署后配置”

示例在 Red Hat Platform (RHOSP)环境中使用标准 stack 用户。

作为 RHOSP 安装或环境更新的一部分执行任务。

2.2.1. 安装 ceph-ansible 软件包

安装要在 undercloud 节点上安装的 ceph-ansible 软件包,以部署容器化 Ceph。

流程

  1. stack 用户身份登录 undercloud 节点。
  2. 安装 ceph-ansible 软件包:

    [stack@undercloud-0 ~]$ sudo dnf install -y ceph-ansible
    [stack@undercloud-0 ~]$ sudo dnf list ceph-ansible
    ...
    Installed Packages
    ceph-ansible.noarch    4.0.23-1.el8cp      @rhelosp-ceph-4-tools

2.2.1.1. 生成自定义角色文件

ControllerStorageNFS 自定义角色配置隔离的 StorageNFS 网络。此角色类似于默认的 Controller.yaml 角色文件,它添加了 StorageNFS 网络和 CephNfs 服务,由 OS::TripleO::Services:CephNfs 命令指示。

[stack@undercloud ~]$ cd /usr/share/openstack-tripleo-heat-templates/roles
[stack@undercloud roles]$ diff Controller.yaml ControllerStorageNfs.yaml
16a17
> 	- StorageNFS
50a45
> 	- OS::TripleO::Services::CephNfs

如需有关 openstack overcloud roles generate 命令的更多信息,请参阅高级 Overcloud 自定义指南中的角色

openstack overcloud roles generate 命令创建一个自定义 roles_data.yaml 文件,包括 -o 指定的服务。在以下示例中,创建的 roles_data.yaml 文件具有 ControllerStorageNfsComputeCephStorage 的服务。

注意

如果您有一个现有的 roles_data.yaml 文件,请修改该文件以将 ControllerStorageNfsComputeCephStorage 服务添加到配置文件中。有关更多信息,请参阅高级 Overcloud 自定义指南中的角色

流程

  1. stack 用户身份登录 undercloud 节点,
  2. 使用 openstack overcloud roles generate 命令创建 roles_data.yaml 文件:

    [stack@undercloud ~]$ openstack overcloud roles generate --roles-path /usr/share/openstack-tripleo-heat-templates/roles -o /home/stack/roles_data.yaml ControllerStorageNfs Compute CephStorage

2.2.2. 部署更新的环境

当您准备好部署环境时,请使用 openstack overcloud deploy 命令以及使用 NFS-Ganesha 运行 CephFS 所需的自定义虚拟环境和角色。

overcloud 部署命令除其它所需选项外,还具有以下选项:

操作选项附加信息

使用 network_data_ganesha.yaml 添加额外的 StorageNFS 网络

-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml

第 2.2.2.1 节 “StorageNFS 和 network_data_ganesha.yaml 文件”

添加上一节中的 roles_data.yaml 文件中定义的自定义角色

-r /home/stack/roles_data.yaml

第 2.2.1.1 节 “生成自定义角色文件”

使用 ceph-ansible.yaml 部署 Ceph 守护进程

-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml

Deploying an Overcloud with Containerized Red Hat Ceph 指南中的 Initiating Overcloud Deployment

使用 ceph-mds.yaml部署 Ceph 元数据服务器

-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml

Deploying an Overcloud with Containerized Red Hat Ceph 指南中的 Initiating Overcloud Deployment

通过 NFS 后端使用 CephFS 部署共享文件系统服务(manila)服务。使用 director 配置 NFS-Ganesha。

-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

第 2.2.2.2 节 “CephFS 后端环境文件”

下例演示了一个 openstack overcloud deploy 命令,带有选项通过 NFS-Ganesha、Ceph 集群、Ceph MDS 和隔离的 StorageNFS 网络部署 CephFS:

[stack@undercloud ~]$ openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates  \
-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml \
-r /home/stack/roles_data.yaml \
-e /home/stack/containers-default-parameters.yaml   \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml   \
-e /home/stack/network-environment.yaml  \
-e/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

有关 openstack overcloud deploy 命令的更多信息,请参阅 Director 安装和使用 指南中的 部署命令

2.2.2.1. StorageNFS 和 network_data_ganesha.yaml 文件

使用可组合网络定义自定义网络并将其分配到任何角色。您可以使用 network_data_ganesha.yaml 文件配置 StorageNFS 可组合网络,而不使用标准 network_data.yaml 文件。这两个角色都位于 /usr/share/openstack-tripleo-heat-templates 目录中。

network_data_ganesha.yaml 文件包含一个额外部分,用于定义隔离的 StorageNFS 网络。虽然大多数安装都可以的默认设置,但您必须编辑 YAML 文件以添加网络设置,包括 VLAN ID、子网和其他设置。

name: StorageNFS
enabled: true
vip: true
name_lower: storage_nfs
vlan: 70
ip_subnet: '172.17.0.0/20'
allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}]
ipv6_subnet: 'fd00:fd00:fd00:7000::/64'
ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::4', 'end': 'fd00:fd00:fd00:7000::fffe'}]

有关可组合网络的更多信息,请参阅高级 Overcloud 自定义指南中的使用可组合网络

2.2.2.2. CephFS 后端环境文件

用于定义 CephFS 后端 manila-cephfsganesha-config.yaml 的集成式环境文件位于 /usr/share/openstack-tripleo-heat-templates/environments/ 中。

manila-cephfsganesha-config.yaml 环境文件包含与部署共享文件系统服务(manila)相关的设置。后端默认设置可用于大多数环境。以下示例显示了 director 在部署共享文件系统服务过程中使用的默认值:

[stack@undercloud ~]$ cat /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
# A Heat environment file which can be used to enable a
# a Manila CephFS-NFS driver backend.
resource_registry:
  OS::TripleO::Services::ManilaApi: ../deployment/manila/manila-api-container-puppet.yaml
  OS::TripleO::Services::ManilaScheduler: ../deployment/manila/manila-scheduler-container-puppet.yaml
  # Only manila-share is pacemaker managed:
  OS::TripleO::Services::ManilaShare: ../deployment/manila/manila-share-pacemaker-puppet.yaml
  OS::TripleO::Services::ManilaBackendCephFs: ../deployment/manila/manila-backend-cephfs.yaml
  # ceph-nfs (ganesha) service is installed and configured by ceph-ansible
  # but it's still managed by pacemaker
  OS::TripleO::Services::CephNfs: ../deployment/ceph-ansible/ceph-nfs.yaml

parameter_defaults:
  ManilaCephFSBackendName: cephfs 1
  ManilaCephFSDriverHandlesShareServers: false 2
  ManilaCephFSCephFSAuthId: 'manila' 3
  ManilaCephFSCephFSEnableSnapshots: false 4
  # manila cephfs driver supports either native cephfs backend - 'CEPHFS'
  # (users mount shares directly from ceph cluster), or nfs-ganesha backend -
  # 'NFS' (users mount shares through nfs-ganesha server)
  ManilaCephFSCephFSProtocolHelperType: 'NFS'

parameter_defaults 标头表示配置的开头。在此部分中,您可以编辑设置来覆盖 resource_registry 中设置的默认值。这包括 OS::Tripleo::Services::Services::ManilaBackendCephFs 设置的值,它为 CephFS 后端设置默认值。

1
ManilaCephFSBackendName 设置 CephFS 后端的 manila 配置名称。在这种情况下,默认后端名称为 cephfs
2
ManilaCephFSDriverHandlesShareServers 控制共享服务器的生命周期。当设置为 false 时,驱动程序不会处理生命周期。这是唯一支持的选项。
3
ManilaCephFSCephFSAuthId 定义了 director 为 manila 服务访问 Ceph 集群而创建的 Ceph 身份验证 ID。
4
ManilaCephFSEnableSnapshots 控制快照激活。false 值表示没有启用快照。当前不支持这个功能。

有关环境文件的更多信息,请参阅 Director 安装和使用指南中的环境文件

2.2.3. 完成部署后配置

在创建 NFS 共享、授予用户访问权限和挂载 NFS 共享之前,您必须完成两个部署后配置任务。

  • 将网络服务(neutron)StorageNFS 网络映射到隔离的数据中心存储 NFS 网络。
  • 创建默认共享类型。

完成这些步骤后,租户计算实例可以创建、允许访问和挂载 NFS 共享。

2.2.3.1. 创建存储提供商网络

将新隔离存储NFS 网络映射到网络(neutron)提供商网络。Compute 虚拟机附加到网络,以访问由 NFS-Ganesha 网关提供的共享导出位置。

有关使用共享文件系统服务的网络安全性 ,请参阅安全和强化指南中的强化共享文件系统服务

流程

openstack network create 命令定义 StorageNFS neutron 网络的配置。

  1. 在 undercloud 节点上输入以下命令:

    [stack@undercloud ~]$ source ~/overcloudrc
  2. 在 undercloud 节点上,创建 StorageNFS 网络:

    (overcloud) [stack@undercloud-0 ~]$ openstack network create StorageNFS --share  --provider-network-type vlan --provider-physical-network datacentre --provider-segment 70

    您可以使用以下选项输入这个命令:

    • 对于 --provider-physical-network 选项,使用默认值 datacentre,除非您通过 tripleo-heat-templates 中的 NeutronBridgeMappings 为 br-isolated 网桥设置了另一个标签。
    • 对于 --provider-segment 选项,在 heat 模板中为 StorageNFS 隔离网络设置的 VLAN 值 /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml。此值为 70,除非部署者修改了隔离的网络定义。
    • 对于 --provider-network-type 选项,请使用值 vlan

2.2.3.2. 配置共享供应商 StorageNFS 网络

在 neutron-shared 提供商网络上创建对应的 StorageNFSSubnet。确保子网与 network_data.yml 文件中的 storage_nfs 网络定义相同,并确保 StorageNFS 子网的分配范围不会重叠。不需要网关,因为 StorageNFS 子网专用于提供 NFS 共享。

先决条件

  • 分配池的开头和结束 IP 范围。
  • 子网 IP 范围。
2.2.3.2.1. 配置共享供应商 StorageNFS IPv4 网络

流程

  1. 登录 overcloud 节点。
  2. 提供 overcloud 凭据。
  3. 使用示例命令置备网络并进行以下更改:

    1. start=172.17.0.4,end=172.17.0.250 IP 值替换为您的网络的 IP 值。
    2. 172.17.0.0/20 子网范围替换为您的网络子网范围。
[stack@undercloud-0 ~]$ openstack subnet create --allocation-pool start=172.17.0.4,end=172.17.0.250 --dhcp --network StorageNFS --subnet-range 172.17.0.0/20 --gateway none StorageNFSSubnet
2.2.3.2.2. 配置共享供应商 StorageNFS IPv6 网络

流程

  1. 登录 overcloud 节点。
  2. 使用示例命令来置备网络,根据需要更新值。

    • fd00:fd00:fd00:7000::/64 子网范围替换为您的网络的子网范围。
[stack@undercloud-0 ~]$ openstack subnet create --ip-version 6 --dhcp --network StorageNFS --subnet-range fd00:fd00:fd00:7000::/64 --gateway none --ipv6-ra-mode dhcpv6-stateful --ipv6-address-mode dhcpv6-stateful StorageNFSSubnet -f yaml

2.2.3.3. 配置默认共享类型

您可以使用共享文件系统服务定义可用于使用特定设置创建共享的共享类型。共享类型的工作方式,如块存储卷类型。每种类型都有相关的设置,例如额外的规格。当您在创建共享期间调用类型时,设置会应用到共享文件系统。

使用 Red Hat OpenStack Platform(RHOSP)director,您必须在打开云前创建一个默认共享类型,供用户访问。对于带有 NFS 的 CephFS,请使用 manila type-create 命令:

$ manila type-create default false

有关共享类型的更多信息 ,请参阅存储指南中的创建共享类型

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.