Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

通过 NFS 后端使用共享文件系统服务的 CephFS

Red Hat OpenStack Platform 13

通过 OpenStack 中的 NFS 使用 CephFS 了解、使用 CephFS 管理共享文件系统服务

OpenStack Documentation Team

摘要

本指南详细介绍了通过 Red Hat OpenStack Platform 环境的 NFS 通过 NFS 安装、配置和验证共享文件系统服务(manila)的不同步骤。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 通过 NFS 使用 CephFS 的 OpenStack 共享文件系统服务

Red Hat OpenStack Platform (RHOSP)提供了在 Red Hat Enterprise Linux 上构建私有或公共基础架构即服务(IaaS)云的基础。它是用于开发支持云工作负载的可扩展容错平台。

通过 NFS 使用 Ceph 文件系统(CephFS)的共享文件系统服务(manila)使云管理员能够使用与块和对象存储相同的 Ceph 集群,通过 NFS 协议提供文件共享。如需更多信息,请参阅 存储指南中的 共享文件系统服务 章节。

本指南讨论了与通过 NFS 安装、配置、部署和测试 CephFS 相关的概念和步骤。

通过 NFS 使用 Ceph 文件系统(CephFS)的 OpenStack 共享文件系统服务(manila)为 Red Hat OpenStack Platform 提供了容错的 NFS 共享服务。如需更多信息,请参阅 存储指南中的 共享文件系统服务 章节。

1.1. 通过 NFS 对 CephFS 介绍

CephFS 是 Ceph 的高扩展性、开源分布式文件系统组件,是一个统一的分布式存储平台。Ceph 使用可靠的自主分布式对象存储(RADOS)实施对象、块和文件存储。CephFS 兼容 POSIX,提供对 Ceph 存储集群的文件访问权限。

共享文件系统服务允许用户在 CephFS 中创建共享,并通过 NFS-Ganesha 使用 NFS 4.1 访问它们。NFS-Ganesha 控制对共享的访问,并通过 NFS 4.1 协议将其导出到客户端。共享文件系统服务从 OpenStack 中管理这些共享的生命周期。当云管理员通过 NFS 将服务设置为使用 CephFS 时,这些文件共享来自 CephFS 集群,但以熟悉的 NFS 共享来创建和访问。

1.2. 通过 NFS 将共享文件系统服务与 CephFS 搭配使用的好处

通过 NFS 使用 CephFS 的共享文件系统服务(manila)使云管理员能够使用与块和对象存储相同的 Ceph 集群,通过熟悉的 NFS 协议提供文件共享,该协议默认可在大多数操作系统中可用。CephFS 可最大程度利用 Ceph 集群,该集群已用作 OpenStack 云中其他服务的存储后端,如块存储(cinder)、对象存储等。

注意

目前,不支持将 CephFS 添加到没有由 Red Hat OpenStack director 配置的外部部署 Ceph 集群。目前,director 中只能定义一个 CephFS 后端。

Red Hat OpenStack Platform 13 完全支持 CephFS NFS 驱动程序(NFS-Ganesha),这与 CephFS 原生驱动程序不同,后者是一项技术预览功能。

重要

Red Hat CephFS 原生驱动程序 仅作为技术预览提供,因此不享有红帽的全面支持。

有关技术预览功能的更多信息,请参阅覆盖范围详细信息

通过 NFS 部署,Ceph 存储后端与用户的网络分离,使得底层 Ceph 存储容易受到恶意攻击的影响和不必要的错误。

用于 data-plane 流量和用于 control plane 服务(如共享文件系统服务)的 API 网络的独立网络,使文件存储更加安全。

Ceph 客户端受管理控制。最终用户控制不能直接访问 Ceph 集群存储后端的 NFS 客户端(例如,隔离用户虚拟机)。

1.3. Ceph 文件系统架构

Ceph 文件系统(CephFS)是一种分布式文件系统,可通过 NFS v4 协议(支持)或 CephFS 原生驱动程序(技术预览)与 NFS-Ganesha 一起使用。

1.3.1. 带有原生驱动程序的 CephFS

CephFS 原生驱动程序组合了 OpenStack 共享文件系统服务(manila)和 Red Hat Ceph Storage。通过 director 部署时,控制器节点托管 Ceph 守护进程,如管理器、元数据服务器(MDS)和监控(MON)以及共享文件系统服务。

Compute 节点可以托管一个或多个租户。租户由白色框表示,其中包含由两个 NIC 的用户管理的虚拟机(使用两个 NIC )访问 cephmanila 守护进程,方法是通过公共 Ceph 存储网络连接来访问 ceph 和 manila 守护进程。此网络还允许访问 Ceph Object Storage Daemon (OSD)提供的存储节点上的数据。托管在租户引导上的实例(VM)有两个 NIC:一个用于存储提供商网络,第二个专用于外部提供商网络的租户拥有路由器。

存储提供商网络将租户上运行的虚拟机连接到公共 Ceph 存储网络。Ceph 公共网络提供 Ceph 对象存储节点、元数据服务器(MDS)和控制器节点的后端访问。使用原生驱动程序时,CephFS 依赖于与客户端和服务器协作来强制执行配额,保证租户隔离并提高安全性。在私有云上具有可信最终用户的环境中,具有原生驱动程序的 CephFS 效果良好。此配置要求在用户控制下运行的软件,才能使操作正常工作。

CephFS nfs topology 原生驱动程序

1.3.2. CephFS via NFS

OpenStack 共享文件系统服务(manila)中的 NFS 后端包含 Ceph 元数据服务器(MDS)、NFS 网关(NFS-Ganesha)和 Ceph 集群服务组件的 CephFS。共享文件系统服务的 CephFS NFS 驱动程序使用 NFS-Ganesha 网关来提供 CephFS 共享的 NFSv4 协议访问。Ceph MDS 服务将文件系统的目录和文件名称映射到 RADOS 集群中存储的对象。NFS 网关可以使用不同的存储后端(如 Ceph)提供 NFS 文件共享。NFS-Ganesha 服务与 Ceph 服务一起在控制器节点上运行。

实例至少使用两个 NIC 引导:一个用于连接到租户路由器,第二个 NIC 连接到 StorageNFS 网络,后者直接连接到 NFS-Ganesha 网关。使用 NFS 协议的实例挂载共享。Ceph OSD 节点上托管的 CephFS 共享通过 NFS 网关提供。

NFS-Ganesha 通过阻止用户实例直接访问 MDS 和其他 Ceph 服务来提高安全性。实例无法直接访问 Ceph 守护进程。

CephFS nfs topology nfs 驱动程序

1.3.2.1. Ceph 服务和客户端访问

除了监控器外,OSD、RGW (RGW)和管理器服务在 Ceph 提供对象和/或块存储时部署,还需要 Ceph 元数据服务(MDS),并且使用 NFS 协议,一个 NFS-Ganesha 服务需要作为原生 CephFS 的网关。(面向用户的对象存储,还部署 RGW 服务)。网关运行 CephFS 客户端来访问 Ceph 公共网络,且受管理而非最终用户控制。

NFS-Ganesha 在其自身的 docker 容器中运行,它们与 Ceph 公共网络和新的隔离网络 StorageNFS 接口。OpenStack director 的可组合网络功能用于部署此网络并将其连接到控制器节点。然后,云管理员将网络配置为 neutron 提供商网络。

NFS-Ganesha 通过 Ceph 公共网络访问 CephFS,并使用 StorageNFS 网络上的地址绑定其 NFS 服务。

要访问 NFS 共享,用户 VM (nova 实例)会置备连接到存储 NFS 网络的额外 NIC。使用 NFS-Ganesha 服务器的 VIP,CephFS 共享导出位置显示为标准 NFS IP:<path > tuples。用户虚拟机的访问控制是使用该网络上的用户虚拟机的 IP 进行。

Neutron 安全组可防止属于租户 1 的用户虚拟机访问属于 StorageNFS 网络租户 2 的用户虚拟机。租户共享相同的 CephFS 文件系统,但强制实施租户数据路径,因为用户虚拟机只能访问导出树下的文件: /path/to/share1/…./path/to/share2/…。

1.3.2.2. 通过 NFS 容错功能使用 CephFS 共享文件系统服务

当 OpenStack director 启动 Ceph 服务守护进程时,它们管理自己的高可用性(HA)状态,一般情况下,这些守护进程的多个实例正在运行。相反,在这个发行版本中,一次只有一个 NFS-Ganesha 实例才能为文件共享提供服务。

为通过 NFS 共享避免 CephFS 的数据路径中的单点故障,NFS-Ganesha 在由 Pacemaker-Corosync 集群管理的主动 - 被动配置中运行 OpenStack 控制器节点。NFS-Ganesha 在作为虚拟服务 IP 地址的虚拟服务间充当控制器节点。

如果控制器出现故障(或者特定控制器节点上的服务失败且无法在该节点上恢复),Pacemaker-Corosync 会在使用相同虚拟 IP 的不同控制器上启动一个新的 NFS-Ganesha 实例。现有客户端挂载会被保留,因为它们使用虚拟 IP 作为共享的导出位置。

失败后,使用默认 NFS mount-option 设置和 NFS 4.1 或更高版本,TCP 连接会被重置,客户端重新连接。I/O 操作在故障切换过程中临时停止响应,但它们不会失败。应用程序 I/O 也停止响应,但在故障转移完成后恢复。

新的连接、新的锁定状态等会被拒绝,直到宽限期达到 90 秒后,服务器会等待客户端回收其锁定。NFS-Ganesha 保留客户端列表,如果它发现所有客户端回收了锁定,则会退出宽限期。

注意

宽限期的默认值为 90 秒。这个值可通过 NFSv4 Grace_Period 配置选项可调项。

第 2 章 通过 NFS 安装进行 CephFS

2.1. 带有 NFS-Ganesha 部署的 CephFS

在 OpenStack 环境中通过 NFS 安装进行典型的 Ceph 文件系统(CephFS)包括:

  • 运行容器化 Ceph 元数据服务器(MDS)、Ceph monitor (MON)、manila 和 NFS-Ganesha 服务的 OpenStack 控制器节点。其中一些服务可能在同一节点上共存,或者可能具有一个或多个专用节点。
  • Ceph 存储集群,在 Ceph 存储节点上运行具有容器化对象存储守护进程(OSD)。
  • 一个隔离的 StorageNFS 网络,可从租户提供对 NFS 共享调配的 NFS-Ganesha 服务的访问。

共享文件系统服务(manila)服务提供 API,允许租户请求文件系统共享,这些共享由驱动程序模块实现。Red Hat CephFS 的驱动程序(名称,manila.share.drivers.cephfs.driver.CephFSDriver)允许共享文件系统服务使用 CephFS 作为后端。Red Hat OpenStack Platform director 配置部署 NFS-Ganesha 网关的驱动程序,以便通过 NFS 4.1 协议显示 CephFS 共享。在本文档中,此配置通过 NFS 称为 CephFS。

使用 OpenStack director 使用 overcloud 上的 CephFS 后端部署共享文件系统服务(在 heat 模板中定义)会自动创建所需的存储网络。有关网络计划的更多信息,请参阅 Director 安装和使用指南中的 规划 网络部分。

虽然您可以通过编辑节点的 /etc/manila/manila.conf 文件手动配置共享文件系统服务,但在将来的 overcloud 更新中,任何设置都可以被 Red Hat OpenStack Platform director 覆盖。配置共享文件系统服务后端的建议方法是通过 director。

这部分论述了如何在由 director 管理的集成部署中通过 NFS 安装 CephFS。

注意

目前,不支持将 CephFS 添加到没有由 Red Hat OpenStack director 配置的外部部署 Ceph 集群。目前,一次只能在 director 中定义一个 CephFS 后端。

2.1.1. 要求

要通过 NFS 使用 CephFS,您需要一个 Red Hat OpenStack Platform 版本 13 或更新版本的环境,该环境可以是现有的或新的 OpenStack 环境。CephFS 可用于 Red Hat Ceph Storage 版本 3。有关如何 部署此类环境的说明,请参阅使用容器化 Red Hat Ceph 部署 Overcloud 指南

本文档假设:

  • 共享文件系统服务将安装到控制器节点上,因为 是默认行为。
  • NFS-Ganesha 网关服务将安装到控制器的 Pacemaker 集群上。
  • 共享文件系统服务将仅使用一个 CephFS 后端的一个实例。其他非 CephFS 后端可以与单一 CephFS 后端一起使用。
  • 由 OpenStack Platform director 创建的额外网络(StorageNFS),用于存储流量。
  • 新的 Red Hat Ceph Storage 版本 3 集群通过 NFS 同时配置 CephFS。

2.1.2. 文件共享

文件共享在 OpenStack 共享文件系统服务(manila)、Ceph 文件系统(CephFS)和 Ceph 通过 NFS 之间稍有不同。

共享文件系统服务提供共享,其中共享是单个文件系统命名空间和一组存储或共享单元,以及定义的大小(例如,带有配额的子目录)。共享文件系统存储可以启用多个客户端,因为在请求访问时文件系统会在访问前设置(versus 块存储在请求时设置)。

使用 CephFS 时,共享被视为具有定义配额的目录,以及指向特定存储池或命名空间的布局。CephFS 配额将目录的大小限制为共享文件系统服务创建的大小共享。对 Ceph 共享的访问由 MDS 身份验证功能决定。

通过 NFS 使用 CephFS,通过 NFS 协议置备并访问文件共享。NFS 协议还处理安全性。

2.1.3. 通过 NFS 进行 CephFS 使用的隔离网络

通过 NFS 部署进行 CephFS 使用额外的隔离网络 StorageNFS。部署此网络以便用户可在该网络上通过 NFS 挂载共享,而无需访问为基础架构流量保留的存储或存储管理网络。

有关隔离网络的更多信息,请参阅 Director 安装和使用 指南中的 https://access.redhat.com/documentation/zh-cn/red_hat_openstack_platform/13/html/advanced_overcloud_customization/basic-network-isolation

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.

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 \
      ...
  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

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

如需有关 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

2.2.3. 部署更新的环境

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

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

操作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

如需有关 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'}]

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

2.2.3.2. manila-cephfsganesha-config.yaml

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

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

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'

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
  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
    +---------------------------+--------------------------------------+

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
+-------------------+--------------------------------------+

2.2.4.3. 设置默认共享类型

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

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

manila type-create default false

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

第 3 章 通过 NFS 部署验证 CephFS 是否成功

通过 NFS 部署 CephFS 作为 OpenStack 共享文件系统服务(manila)的后端,在 overcloud 环境中添加新的元素。

新的 overcloud 元素有:

  • StorageNFS 网络
  • 控制器上的 Ceph MDS 服务
  • 控制器上的 NFS-Ganesha 服务

有关通过 NFS 使用 CephFS 共享文件系统服务 的更多信息,请参阅 存储指南中的 共享文件系统服务一章。

云管理员必须通过 NFS 环境验证 CephFS 的稳定性,然后才能供服务用户使用。

前提条件

3.1. 验证隔离的 StorageNFS 网络创建

network_data_ganesha.yaml 文件用于将 NFS 部署为共享文件系统服务系统后端创建 StorageNFS VLAN:

- name: StorageNFS
  enabled: true
  vip: true
  name_lower: storage_nfs
  vlan: 310
  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'}]

完成以下步骤以验证隔离的 StorageNFS 网络是否存在。

流程

  1. 登录 overcloud 中的其中一个控制器。
  2. 运行以下命令检查连接的网络,并验证 network_data_ganesha.yaml 中设置的 VLAN 是否存在:

    $ ip a
    15: vlan310: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ether 32:80:cf:0e:11:ca brd ff:ff:ff:ff:ff:ff
        inet 172.16.4.4/24 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet 172.16.4.7/32 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet6 fe80::3080:cfff:fe0e:11ca/64 scope link
           valid_lft forever preferred_lft forever

3.2. 验证 Ceph MDS 服务

使用 systemctl status 命令验证 Ceph MDS 服务状态。

流程

  1. 在所有控制器上运行以下命令,以检查 MDS docker 容器的状态:

    $ systemctl status ceph-mds@<CONTROLLER-HOST>

    例如:

    ceph-mds@controller-0.service - Ceph MDS
       Loaded: loaded (/etc/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2018-09-18 20:11:53 UTC; 6 days ago
     Main PID: 65066 (docker-current)
       CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@controller-0.service
               └─65066 /usr/bin/docker-current run --rm --net=host --memory=4g --cpu-quota=100000 -v /var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v /var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/...

3.3. 验证 Ceph 集群状态

完成以下步骤以验证 Ceph 集群状态。

流程

  1. 登录到活跃的控制器。
  2. 运行以下命令:

    $ sudo ceph -s
    
    cluster:
        id: 3369e280-7578-11e8-8ef3-801844eeec7c
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum overcloud-controller-1,overcloud-controller-2,overcloud-controller-0
        mgr: overcloud-controller-1(active), standbys: overcloud-controller-2, overcloud-controller-0
        mds: cephfs-1/1/1 up  {0=overcloud-controller-0=up:active}, 2 up:standby
        osd: 6 osds: 6 up, 6 in
    注意

    注意备用上有一个活跃 MDS 和两个 MDS。

  3. 要更加详细地检查 Ceph 文件系统的状态,请运行以下命令,其中 &lt ;cephfs& gt; 是 Ceph 文件系统的大小:

    $ sudo ceph fs ls
    
    name: cephfs, metadata pool: manila_metadata, data pools: [manila_data]

3.4. 验证 NFS-Ganesha 和 manila-share 服务状态

完成以下步骤以验证 NFS-Ganesha 和 manila-share 服务的状态。

流程

  1. 从其中一个控制器运行以下命令,确认 ceph-nfsopenstack-manila-share 是否已启动:

    $ pcs status
    
    ceph-nfs       (systemd:ceph-nfs@pacemaker):   Started overcloud-controller-1
    
    Docker container: openstack-manila-share [192.168.24.1:8787/rhosp13/openstack-manila-share:pcmklatest]
       openstack-manila-share-docker-0      (ocf::heartbeat:docker):        Started overcloud-controller-1

3.5. 验证 manila-api 服务确认调度程序和共享服务

完成以下步骤以确认 manila-api 服务确认调度程序和共享服务。

流程

  1. 登录 undercloud。
  2. 运行以下命令:

    $ source /home/stack/overcloudrc
  3. 运行以下命令,以确认 manila-schedulermanila-share 已启用:

    $ manila service-list
    
    | Id | Binary          | Host             | Zone | Status | State | Updated_at |
    
    | 2 | manila-scheduler | hostgroup        | nova | enabled | up | 2018-08-08T04:15:03.000000 |
    | 5 | manila-share | hostgroup@cephfs | nova | enabled | up | 2018-08-08T04:15:03.000000 |

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.