2.2. 通过 NFS 和自定义 network_data 文件安装 CephFS 的 OpenStack


通过 NFS 安装 CephFS 包括:

  1. 安装 ceph-ansible 软件包。
  2. 使用 openstack overcloud image prepare 命令准备 overcloud 容器镜像。
  3. 生成自定义角色文件(roles_data.yaml)和 network_data.yaml 文件。
  4. 使用带有自定义角色和环境的 openstack overcloud deploy 命令,部署 Ceph、共享文件系统服务(manila)和 CephFS。
  5. 配置隔离的 StorageNFS 网络并创建默认共享类型。

示例在 OpenStack 环境中使用标准 stack 用户。

任务应当与 OpenStack 安装或环境更新结合使用。

2.2.1. 安装 ceph-ansible 软件包

OpenStack director 需要安装 ceph-ansible 软件包,才能在 undercloud 节点上部署容器化 Ceph。

流程

  1. 登录 undercloud 节点。
  2. 使用具有提升权限的 yum install 安装 ceph-ansible 软件包。

    [stack@undercloud-0 ~]$ sudo yum install -y ceph-ansible
    [stack@undercloud-0 ~]$ sudo yum list ceph-ansible
    ...
    Installed Packages
    ceph-ansible.noarch 3.1.0-0.1.el7 rhelosp-13.
    Copy to Clipboard Toggle word wrap

2.2.2. 准备 overcloud 容器镜像

由于所有服务在 OpenStack 中都是容器化的,因此必须使用 openstack overcloud image prepare 命令准备 overcloud。使用附加选项运行这个命令,将 cephmanila 服务的默认镜像添加到 docker 注册表。Ceph MDS 和 NFS-Ganesha 服务使用相同的 Ceph 基础容器镜像。

如需有关容器镜像的更多信息,请参阅 Director 安装和使用指南中的 额外服务 容器镜像 部分。

流程

  1. 从 undercloud 中,使用 -e 运行 openstack overcloud image prepare 命令,使其包含这些环境文件:

    $ openstack overcloud container image prepare \
      ...
      -e  /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
      -e  /usr/share/openstack-tripleo-heat-templates/environments/services-docker/manila.yaml \
      ...
    Copy to Clipboard Toggle word wrap
  2. 使用 grep 验证 cephmanila 服务的默认镜像在 containers-default-parameters.yaml 文件中可用。

    [stack@undercloud-0 ~]$ grep -E 'ceph|manila' composable_roles/docker-images.yaml
    DockerCephDaemonImage: 192.168.24.1:8787/rhceph:3-12
    DockerManilaApiImage: 192.168.24.1:8787/rhosp13/openstack-manila-api:2018-08-22.2
    DockerManilaConfigImage: 192.168.24.1:8787/rhosp13/openstack-manila-api:2018-08-22.2
    DockerManilaSchedulerImage: 192.168.24.1:8787/rhosp13/openstack-manila-scheduler:2018-08-22.2
    DockerManilaShareImage: 192.168.24.1:8787/rhosp13/openstack-manila-share:2018-08-22.2
    Copy to Clipboard Toggle word wrap

2.2.2.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
Copy to Clipboard Toggle word wrap

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

流程

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

注意

如果您有一个现有的 roles_data.yaml 文件,请进行修改,以将 ControllerStorageNfsComputeCephStorage 服务添加到配置文件。请参考 高级 Overcloud 自定义指南中的 角色 部分

  1. 登录 undercloud 节点。
  2. 使用 openstack overcloud 角色 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
    Copy to Clipboard Toggle word wrap

2.2.3. 部署更新的环境

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

除了其他所需选项外,overcloud deploy 命令还具有以下选项。

Expand
操作Option其它信息

overcloud 容器镜像准备添加更新的默认容器

-e /home/stack/containers-default-parameters.yaml

第 2.2.2 节 “准备 overcloud 容器镜像”

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

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

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

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

-r /home/stack/roles_data.yaml

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

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

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

启动 Overcloud 部署(使用 Containzerized Red Hat Ceph 部署 Overcloud

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

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

启动 Overcloud 部署(使用 Containzerized Red Hat Ceph 部署 Overcloud

通过 NFS 后端使用 CephFS 部署 manila 服务。通过 director 配置 NFS-Ganesha。

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

第 2.2.3.2 节 “manila-cephfsganesha-config.yaml

以下示例显示 openstack overcloud deploy 命令整合了 通过 NFS-Ganesha、Ceph 集群、Ceph MDS 和 isolated 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  /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.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
Copy to Clipboard Toggle word wrap

如需有关 openstack overcloud deploy 命令的更多信息,请参阅 Director 安装和使用 指南中的使用 CLI 工具创建 Overcloud 部分。

2.2.3.1. StorageNFS 和 network_data_ganesha.yaml 文件

可组合网络允许您定义自定义网络,并将它们分配给任何角色。StorageNFS 可组合网络使用 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
ame_lower: storage_nfs
vlan: 70
ip_subnet: '172.16.4.0/24'
allocation_pools: [{'start': '172.16.4.4', 'end': '172.16.4.250'}]
ipv6_subnet: 'fd00:fd00:fd00:7000::/64'
ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::10', 'end': 'fd00:fd00:fd00:7000:ffff:ffff:ffff:fffe'}]
Copy to Clipboard Toggle word wrap

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

2.2.3.2. manila-cephfsganesha-config.yaml

用于定义 CephFS 后端的集成式环境文件位于 undercloud 节点的以下路径中:

/usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
Copy to Clipboard Toggle word wrap

manila-cephfsganesha-config.yaml 环境文件包含与共享文件系统服务部署相关的设置。后端默认设置可用于大多数环境。这个示例显示了部署共享文件系统服务时 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: ../docker/services/manila-api.yaml
  OS::TripleO::Services::ManilaScheduler: ../docker/services/manila-scheduler.yaml
  # Only manila-share is pacemaker managed:
  OS::TripleO::Services::ManilaShare: ../docker/services/pacemaker/manila-share.yaml
  OS::TripleO::Services::ManilaBackendCephFs: ../puppet/services/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: ../docker/services/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'
Copy to Clipboard Toggle word wrap

parameter_defaults 标头表示配置的开头。具体来说,此标题下的设置可让您覆盖 resource_registry 中设置的默认值。这包括 OS::Tripleo::Services::ManilaBackendCephFs 设置的值,后者为 CephFS 后端设置默认值。

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

有关环境文件的更多信息, 请参阅高级 Overcloud 自定义指南中的 环境文件。

2.2.4. 完成部署后配置

在允许用户访问前需要完成两个部署后配置项目:

  • neutron StorageNFS 网络必须映射到隔离的数据中心 NFS 网络,以及
  • 必须创建 default 共享类型。

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

2.2.4.1. 配置隔离网络

新的 isolated StorageNFS 网络必须映射到 neutron-shared 提供商网络。Compute 虚拟机将附加到此 neutron 网络,以访问由 NFS-Ganesha 网关提供的共享导出位置。

有关使用共享文件系统服务网络安全的一般信息,请参阅《 安全和强化指南》中强化 共享文件系统服务 的章节

流程

openstack network create 命令定义 StorageNFS neutron 网络的配置。使用以下选项运行这个命令:

  • 对于 --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

要使用这个命令:

  1. 从 undercloud 节点:

    [stack@undercloud ~]$ source ~/overcloudrc
    Copy to Clipboard Toggle word wrap
  2. 在 undercloud 节点上,运行 openstack network create 命令创建 StorageNFS 网络:

    [stack@undercloud-0 ~]$ openstack network create StorageNFS --share --provider-network-type vlan --provider-physical-network datacentre  --provider-segment 70
    +---------------------------+--------------------------------------+
    | Field                   	| Value
    +---------------------------+--------------------------------------+
    | admin_state_up          	| UP
    | availability_zone_hints   |
    | availability_zones      	|
    | created_at              	| 2018-09-17T21:12:49Z
    | description             	|
    | dns_domain              	| None
    | id                      	| cd272981-0a5e-4f3d-83eb-d25473f5176e
    | ipv4_address_scope       	| None
    | ipv6_address_scope      	| None
    | is_default              	| False
    | is_vlan_transparent   	  | None
    | mtu                   	  | 1500
    | name                    	| StorageNFS
    | port_security_enabled   	| True
    | project_id            	  | 3ca3408d545143629cd0ec35d34aea9c
    | provider-network-type 	  | vlan
    | provider-physical-network | datacentre
    | provider-segment          | 70
    | qos_policy_id         	  | None
    | revision_number       	  | 3
    | router:external       	  | Internal
    | segments                	| None
    | shared                  	| True
    | status                  	| ACTIVE
    | subnets                 	|
    | tags                    	|
    | updated_at              	| 2018-09-17T21:12:49Z
    +---------------------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap

2.2.4.2. 设置共享供应商 StorageNFS 网络

在 neutron 共享提供商网络上创建对应的 StorageNFSSubnet。确保子网与 undercloud 中的 storage_nfs_subnet 相同,但请确保此子网的分配范围和对应的 undercloud 子网没有重叠。不需要网关,因为此子网专用于提供 NFS 共享。

要求

  • 分配池的开头和结束 IP 范围
  • 子网 IP 范围

流程

  1. 登录 overcloud 节点。
  2. 使用 sample 命令调配网络,更新需要的值。

    1. start=172.16.4.150,end=172.16.4.250 IP 值替换为您的网络。
    2. 172.16.4.0/24 子网范围替换为您的网络的正确范围。
[stack@undercloud-0 ~]$ openstack subnet create --allocation-pool start=172.16.4.150,end=172.16.4.250 --dhcp --network StorageNFS --subnet-range 172.16.4.0/24 --gateway none StorageNFSSubnet
+-------------------+--------------------------------------+
| Field         	  | Value
+-------------------+--------------------------------------+
| allocation_pools  | 172.16.4.150-172.16.4.250
| cidr            	| 172.16.4.0/24
| created_at    	  | 2018-09-17T21:22:14Z
| description   	  |
| dns_nameservers   |
| enable_dhcp   	  | True
| gateway_ip    	  | None
| host_routes   	  |
| id            	  | 8c696d06-76b7-4d77-a375-fd2e71e3e480
| ip_version    	  | 4
| ipv6_address_mode | None
| ipv6_ra_mode  	  | None
| name          	  | StorageNFSSubnet
| network_id      	| cd272981-0a5e-4f3d-83eb-d25473f5176e
| project_id      	| 3ca3408d545143629cd0ec35d34aea9c
| revision_number   | 0
| segment_id    	  | None
| service_types 	  |
| subnetpool_id 	  | None
| tags          	  |
| updated_at    	  | 2018-09-17T21:22:14Z
+-------------------+--------------------------------------+
Copy to Clipboard Toggle word wrap

2.2.4.3. 设置默认共享类型

共享文件系统服务允许您定义可用于创建与特定设置的共享类型。共享类型(如 Block Storage 卷类型):每种类型都有关联的设置(名称、额外规格),并在共享创建期间调用类型应用这些设置。

OpenStack director 需要一个 default 共享类型。在打开云才能访问之前,必须创建此默认共享类型。对于使用 NFS 的 CephFS,请使用 manila type-create 命令:

manila type-create default false
Copy to Clipboard Toggle word wrap

有关共享类型的信息,请参阅《 存储指南》的" 创建和管理 共享类型"部分

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat