第 4 章 共享文件系统服务

使用共享文件系统服务(manila),您可以置备多个计算实例、裸机节点或容器可以使用的共享文件系统。云管理员创建共享类型,以准备共享服务,并使最终用户能够创建和管理共享。

先决条件

  • 最终用户至少需要一种共享类型才能使用共享文件系统服务。
  • 对于 driver_handles_share_servers=False 的后端,云管理员会提前配置必要的网络,而不是在共享文件系统后端中动态配置。
  • 对于 CephFS through NFS 后端,云管理员使用隔离网络和环境参数以及自定义 network_data 文件部署 Red Hat OpenStack Platform (RHOSP) director,以便为 NFS 导出创建隔离的 StorageNFS 网络。部署后,在 overcloud 使用之前,管理员创建对应的 Networking 服务(neutron) StorageNFS 共享提供商网络,映射到数据中心的隔离 StorageNFS 网络。
  • 要使 Compute 实例连接到此共享提供商网络,用户必须添加额外的 neutron 端口。

使用以下概念和程序了解和使用共享文件系统服务:

4.1. 共享文件系统服务(manila)后端

当云管理员使用 Red Hat OpenStack Platform (RHOSP) director 部署共享文件系统服务时,他们可以选择以下支持的后端之一:

有关支持的后端设备和驱动程序的完整列表,请参阅 RHEL OpenStack 平台中的组件、插件和驱动程序支持

4.1.1. 共享文件系统的网络

共享文件系统通过网络访问。规划云上的网络非常重要,以确保最终用户客户端将其共享连接到在 Red Hat OpenStack Platform (RHOSP)虚拟机、裸机服务器和容器上运行的工作负载。

根据最终用户所需的安全性和隔离级别,作为管理员,您可以将 driver_handles_share_servers 参数设置为 true 或 false。

如果将 driver_handles_share_servers 参数设置为 true,这将使服务能够将共享导出到最终用户定义的共享网络,并帮助隔离共享服务器。

driver_handles_share_servers 参数等于 true 时,用户可以在自助服务共享网络上置备其工作负载。这样可确保其共享由在专用网络段中完全隔离的 NAS 文件服务器导出。

最终用户使用的共享网络可以与他们可以创建的私有项目网络相同。作为管理员,您必须确保将这些隔离网络映射到的物理网络扩展至您的存储基础架构。

您还必须确保使用的系统支持项目网络的网络分段样式。存储系统,如 NetApp ONTAP 和 Dell EMC PowerMax、Unity 和 VNX,不支持 GENEVE 或 VXLAN 等虚拟覆盖分段样式。

作为替代方案,您可以在顶层交换机终止覆盖网络,并为项目网络使用更原语形式的网络,如 VLAN。另一种选择是允许共享提供商网络上的 VLAN 段,或提供对已连接到您的存储系统的预先存在的网段网络的访问。

如果将 driver_handles_share_servers 参数设置为 false,用户无法在自己的共享网络上创建共享。相反,它们必须将其客户端连接到云管理员所配置的网络。

driver_handles_share_servers 参数等于 false 时,director 可以为您创建专用的共享存储网络。例如,当使用标准 director 模板部署原生 CephFS 后端时,director 会创建一个名为 Storage 的共享提供商网络。当您通过 NFS 后端部署 CephFS 时,共享提供商网络称为 StorageNFS。您的最终用户必须将自己的客户端连接到共享存储网络,才能访问其共享。

并非所有共享文件系统存储驱动程序都支持这两种操作模式。无论您选择哪种模式,该服务都确保硬数据路径多租户隔离保证。

如果要提供硬网络路径多租户隔离保证,作为自助服务模型的一部分,则必须部署支持 driver_handles_share_servers 驱动程序模式的后端。

有关与共享的网络连接的详情,请参考 第 4.2 节 “确保到共享的网络连接”

4.1.2. 创建共享类型

共享类型充当共享文件系统服务调度程序的提示,以执行放置决策。Red Hat OpenStack Platform (RHOSP) director 使用名为 default 的默认共享类型配置共享文件系统服务,但不会创建共享类型。

重要
最终用户至少需要一种共享类型才能使用共享文件系统服务。

流程

  1. 部署 overcloud 后,以云管理员身份运行以下命令来创建共享类型:

    # manila type-create default <spec_driver_handles_share_servers>

    & lt;spec_driver_handles_share_servers > 参数是一个布尔值:

    • 对于 CephFS through NFS 或原生 CephFS,值为 false。
    • 对于其他后端,值可以是 true 或 false;将 < spec_driver_handles_share_servers > 设置为与 Manila<backend>DriverHandlesShareServers 参数的值 匹配。例如,如果您使用 NetApp 后端,则该参数名为 ManilaNetappDriverHandlesShareServers
  2. 向默认共享类型添加规格,或创建额外的共享类型以用于多个配置的后端。例如,将默认共享类型配置为选择 CephFS 后端,并使用 NetApp driver_handles_share_servers=True 后端的额外共享类型:

    (overcloud) [stack@undercloud-0 ~]$ manila type-create default false --extra-specs share_backend_name='cephfs'
    (overcloud) [stack@undercloud-0 ~]$ manila type-create netapp true --extra-specs share_backend_name='tripleo_netapp'
注意

默认情况下,共享类型是公共的,这意味着它们对所有云项目可见且可供所有云项目使用,但您可以创建专用共享类型以用于特定项目。有关如何进行私有共享类型或设置其他共享类型选项的更多信息,请参阅 安全性和强化指南

4.1.3. 共享类型的常见功能

共享类型定义了共享的常见功能。查看共享类型的常见功能,以了解您可以与共享相关的内容。

表 4.1. 共享类型的功能

功能描述

driver_handles_share_servers

true 或 false

授予使用共享网络创建共享的权限。

snapshot_support

true 或 false

授予创建共享快照的权限。

create_share_from_snapshot_support

true 或 false

授予创建共享快照克隆的权限。

revert_to_snapshot_support

true 或 false

授予将共享恢复到最新快照的权限。

mount_snapshot_support

true 或 false

授予导出和挂载快照的权限。

replication_type

dr

授予为灾难恢复创建副本的权限。一次只允许一个活跃的导出。

可读

授予创建只读副本的权限。一次只允许一个可写的、活跃的导出。

writable

授予创建读/写副本的权限。每个共享允许任意数量活跃的导出。

availability_zones

一个或多个可用区的列表

授予仅在列出的可用区上创建共享的权限。

4.1.4. 发现共享类型

作为云用户,在创建共享时必须指定共享类型。

流程

  1. 发现可用的共享类型:

    $ manila type-list

    命令输出列出了共享类型的名称和 ID。

4.1.5. 创建共享

创建用于读取和写入数据的共享。

要创建共享,请使用类似如下的命令:

$ manila create [--share-type <sharetype>] [--name <sharename>] proto GB

替换以下值:

  • sharetype 应用与指定共享类型关联的设置。

    • 可选:如果没有提供,则使用 default 共享类型。
  • sharename 是共享的名称。

    • 可选:不需要共享来具有名称,也不能保证名称是唯一的。
  • proto 是您要使用的共享协议。

    • 对于带有 NFS 的 CephFS,protonfs
    • 对于 CephFS 原生,protocephfs
    • 对于 NetApp 和 Dell EMC 存储后端,protonfscifs
  • GB 是共享的大小(以 GB 为单位)。

例如,在 第 4.1.2 节 “创建共享类型” 中,云管理员会创建一个 默认共享类型,该类型选择 CephFS 后端,另一个名为 netapp 的共享类型选择 NetApp 后端。

流程

  1. 使用示例共享类型,在 CephFS NFS 后端上创建一个名为 share-01 的 10 GB NFS 共享。本例将 CephFS 与 NFS 搭配使用:

    (user) [stack@undercloud-0 ~]$ manila create --name share-01 nfs 10
  2. 可选:在 NetApp 后端上创建一个名为 share-02 的 20 GB NFS 共享:

    (user) [stack@undercloud-0 ~]$ manila create --name share-02 --share-type netapp --share-network mynet nfs 20

4.1.6. 列出共享和导出信息

要验证您是否已成功创建了共享,请完成以下步骤。

流程

  1. 列出共享:

    (user) [stack@undercloud-0 ~]$ manila list
    
    +--------------------------------------+----------+-----+-----------+           | ID                                   | Name     | ... | Status    ...
    +--------------------------------------+----------+-----+-----------+
    | 8c3bedd8-bc82-4100-a65d-53ec51b5fe81 | share-01 | ... | available ...
    +--------------------------------------+----------+-----+-----------+
  2. 查看共享的导出位置:

    (user) [stack@undercloud-0 ~]$ manila share-export-location-list share-01
    
     +------------------------------------------------------------------
     | Path
     |  172.17.5.13:/volumes/_nogroup/e840b4ae-6a04-49ee-9d6e-67d4999fbc01
     +------------------------------------------------------------------
  3. 查看共享的参数:

    manila share-export-location-show <id>
    注意

    此信息用于在 第 4.4.2 节 “挂载共享” 中挂载共享。