第 6 章 配置共享文件系统服务(manila)
使用共享文件系统服务(manila),您可以置备多个云用户实例、裸机节点或容器可以使用的共享文件系统。云管理员创建共享类型,以准备共享服务,并使最终用户能够创建和管理共享。您可以使用共享文件系统服务命令行客户端来管理共享文件系统。
先决条件
- 最终用户至少需要一种共享类型才能使用共享文件系统服务。
-
对于
driver_handles_share_servers=false
的后端,云管理员会提前配置必要的网络,而不是动态地在共享文件系统后端中。 -
对于 CephFS-NFS 后端,云管理员使用隔离网络和环境参数以及自定义
network_data
文件部署 Red Hat OpenStack Platform (RHOSP) director,以便为 NFS 导出创建隔离的 StorageNFS 网络。部署后,在 overcloud 使用之前,管理员创建对应的 Networking 服务(neutron) StorageNFS 共享提供商网络,映射到数据中心的隔离 StorageNFS 网络。 - 要使 Compute 实例连接到此共享提供商网络,用户必须添加额外的 neutron 端口。
6.1. 配置共享文件系统服务后端
当云管理员使用 Red Hat OpenStack Platform (RHOSP) director 部署共享文件系统服务(manila)时,他们可以选择一个或多个支持的后端,如原生 CephFS、CephFS-NFS、NetApp、Dell EMC unity 等。
有关原生 CephFS 和 CephFS-NFS 的更多信息,请参阅 部署 Red Hat Ceph Storage 和 Red Hat OpenStack Platform。
有关支持的后端设备和驱动程序的完整列表,请参阅 Red Hat OpenStack Platform 中的红帽知识库文章、组件、插件和驱动程序支持的 Manila 部分。
6.1.1. 配置多个后端
后端是与共享文件系统服务(manila)驱动程序配对的存储系统或技术,用于导出文件系统。共享文件系统服务要求至少一个后端才能运行。在很多情况下,一个后端就足够了。但是,您也可以在单个共享文件系统服务安装中使用多个后端。
Red Hat OpenStack Platform (RHOSP)不支持到共享文件系统服务部署的同一后端的多个实例。例如,您无法在同一部署中添加两个 Red Hat Ceph Storage 集群作为后端。CephFS 原生和 CephFS-NFS 被视为具有不同协议的后端。
共享文件系统服务的调度程序决定用于共享创建请求的目标后端。共享文件系统服务中的单一后端可以公开多个存储池。
当您配置多个后端时,调度程序会选择一个存储池,以从所有配置的后端公开的池中创建资源。这个过程是从最终用户中提取的。最终用户只能看到由云管理员公开的功能。
6.1.2. 部署多个后端
默认情况下,用于部署共享文件系统服务(manila)的环境文件只有一个后端。使用以下示例步骤来部署两个后端,即 CephFS-NFS 后端和 NetApp 后端。
当您从同一供应商向部署添加多个存储后端时,请使用此流程配置一个后端。将其他后端配置为自定义后端。如需更多信息,请参阅配置自定义后端 和部署自定义后端。
先决条件
- 至少两个后端。
- 当您从需要外部软件组件的存储供应商中使用后端驱动程序时,您必须在部署过程中覆盖共享文件系统服务的标准容器镜像。例如,您可以在 红帽生态系统目录 中查找 Dell EMC unity 存储系统的 Dell EMC unity 容器镜像。
流程
创建存储自定义 YAML 文件以提供适合您环境的任何值或覆盖:
$ vi /home/stack/templates/<multiple_backends>.yaml
-
将
<multiple_backends
> 替换为您的文件的名称。
-
将
配置存储自定义 YAML 文件,使其包含任何覆盖并启用多个后端:
parameter_defaults: ManilaEnabledShareProtocols: - NFS ManilaNetappLogin: '<login_name>' ManilaNetappPassword: '<password>' ManilaNetappServerHostname: '<netapp-hostname>' ManilaNetappVserver: ‘<netapp-vserver>’ ManilaNetappDriverHandlesShareServers: 'false'
-
将尖括号 <
;&
gt; 中的值替换为 YAML 文件的正确值。
-
将尖括号 <
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
使用其他环境文件将存储自定义 YAML 文件添加到堆栈中,并部署 overcloud。这个示例配置启用带有 NetApp 后端和 CephFS-NFS 后端的共享文件系统服务。
$ openstack overcloud deploy \ --timeout 100 \ --stack overcloud \ --templates /usr/share/openstack-tripleo-heat-templates \ -n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -r /home/stack/templates/roles/roles_data.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/manila-netapp-config.yaml \ -e /home/stack/templates/storage_customizations.yaml \ ...
其他资源
-
有关
ManilaEnabledShareProtocols
参数的详情,请参考 第 6.1.7 节 “更改允许的 NAS 协议”。
6.1.3. 确认部署多个后端
使用 manila service-list
命令来验证您的共享文件系统服务(manila)后端是否已成功部署。如果您在多个后端中使用健康检查,ping 测试也会返回一个响应,即使其中一个后端不响应,因此这不是验证部署的一种可靠方法。
流程
提供 overcloud 凭证文件:
$ source ~/<credentials_file>
-
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
确认共享文件系统服务后端列表:
$ manila service-list +----+--------+--------+------+---------+-------+----------------------------+ | Id | Binary | Host | Zone | Status | State | Updated_at | +----+--------+--------+------+---------+-------+----------------------------+ | 2 | manila-scheduler | hostgroup | nova | enabled | up | 2021-03-24T16:49:09.000000 | | 5 | manila-share | hostgroup@cephfs | nova | enabled | up | 2021-03-24T16:49:12.000000 | | 8 | manila-share | hostgroup@tripleo_netapp | nova | enabled | up | 2021-03-24T16:49:06.000000 |
每个成功部署的后端的状态都显示为
enabled
,并且状态显示为up
。
6.1.4. 配置自定义后端
您可以在 Red Hat OpenStack Platform (RHOSP) director 安装程序中部署没有对应实现的自定义存储后端。
当您从同一供应商向部署添加多个存储后端时,请使用 部署多个后端 中的步骤来配置一个后端。将其他后端配置为自定义后端。
当您部署自定义后端时,检查存储后端供应商是否需要自定义容器镜像,而不是共享文件系统服务(manila)的标准容器镜像。您可以在 红帽生态系统目录 中找到自定义容器镜像。
流程
创建存储自定义 YAML 文件以提供适合您环境的任何值或覆盖:
$ vi /home/stack/templates/<custom_backend_data>.yaml
-
将
<custom_backend_data
> 替换为您的文件的名称。
-
将
使用共享文件系统服务所需的容器镜像配置存储自定义 YAML 文件:
parameter_defaults: ContainerManilaShareImage: <custom_container_image_url>
-
将
<custom_container_image_url
> 替换为自定义容器镜像的 URL。
-
将
使用
ControllerExtraConfig
参数配置共享文件系统服务所需的后端。此参数确保配置应用到所有 Controller 节点:parameter_defaults: ... ControllerExtraConfig: manila::config::manila_config: <backend_name>/<parameter>: value: '<parameter_value>'
-
将
<backend_name
> 替换为自定义后端的名称。 -
将
<
;parameter> 替换为您要为此后端配置的参数的名称,如netapp_server_hostname
或netapp_password
。 将
<parameter_value
> 替换为您要为参数设置的值,如203.0.113.20
或admin_password
。注意如果使用自定义角色,请使用
[role_name]ExtraConfig
而不是ControllerExtraConfig
参数。将[role_name]
替换为您的自定义角色的名称。
-
将
6.1.5. 部署自定义后端
当您为 Red Hat OpenStack Platform (RHOSP)部署配置 自定义存储后端时,如 配置自定义后端 中所述,您可以将其添加到部署中。
流程
创建存储自定义 YAML 文件以提供适合您环境的任何值或覆盖:
$ vi /home/stack/templates/<manila_enabled_share_backends>.yaml
-
将
<manila_enabled_share_backends
> 替换为您的文件的名称。
-
将
配置存储自定义 YAML 文件,将自定义后端添加到启用的共享后端列表中:
parameter_defaults: ControllerExtraConfig: manila_user_enabled_backends: - '<backend_name>'
-
将
<backend_name
> 替换为自定义后端的名称。
-
将
使用其他环境文件将存储自定义 YAML 文件添加到堆栈中,并部署 overcloud:
$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<manila_enabled_share_backends>.yaml
6.1.6. 为后端部署可用区
您可以创建可用区(AZ)来对云用户的云基础架构和服务进行分组。您可以将 AZ 映射到故障域和计算资源,以实现高可用性、容错和资源调度。例如,您可以创建一个具有特定硬件的 Compute 节点的 AZ,该用户在创建需要该硬件的实例时可以指定这些硬件。
共享始终与 AZ 关联。如果您在创建共享时没有设置 AZ 参数,则共享文件系统服务(manila)将共享与名为 nova
的默认 AZ 关联。您可以使用 ManilaXXXAvailabilityZone
参数,其中 XXX
与特定后端关联,为共享文件系统服务后端配置不同的 AZ。有关 AZ 的更多信息,请参阅配置计算服务以进行实例创建中的创建和管理主机聚合。
- 重要
- 如果您更改了现有共享的 AZ 参数,则这些共享将继续与原始 AZ 关联,而其后端映射到新的 AZ。目前,当您更改现有共享上的 AZ 参数时,无法协调原始 AZ 和新映射的 AZ 参数之间的冲突。
流程
在您的共享文件系统服务环境文件中添加以下参数,以创建两个 AZ:
parameter_defaults: ManilaXXXAvailabilityZone: zone1 ManilaYYYAvailabilityZone: zone2
将
XXX
和YYY
替换为支持的后端值,例如:ManilaCephFSAvailabilityZone ManilaNetAppAvailabilityZone
以下示例部署两个后端,其中
CephFS
是区 1,NetApp
是 zone 2:parameter_defaults: ManilaCephFSAvailabilityZone: zone1 ManilaNetAppAvailabilityZone: zone2
- 注意
-
在
/usr/share/openstack-tripleo-heat-templates/deployment/manila/
目录中搜索与后端关联的 heat 模板,以获取正确的后端值。
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
使用其他环境文件将更新的共享文件系统服务环境文件添加到堆栈中,并部署 overcloud:
$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<updated_environment_file>.yaml
-
部署后,使用
availability_zones
共享类型额外规格将共享类型限制为一个或多个 AZ。只要共享类型没有限制,云用户可以直接在 AZ 中创建共享。
6.1.7. 更改允许的 NAS 协议
您可以使用共享文件系统服务(manila)在 NFS、CephFS 或 CIFS 网络附加存储(NAS)协议中导出共享。默认情况下,共享文件系统服务启用部署中后端支持的所有 NAS 协议。
作为 Red Hat OpenStack Platform (RHOSP)管理员,您可以更改 ManilaEnabledShareProtocols
参数,并只列出您要在云中允许的协议。例如,如果您的部署中的后端同时支持 NFS 和 CIFS,您可以更改默认值并启用一个协议。
并非所有存储后端驱动程序都支持 CIFS 协议。有关哪些认证存储系统支持 CIFS 的详情,请查看 红帽生态系统目录。有关通过 RHOSP director 配置服务的详情,请参考厂商存储文档。
流程
提供 overcloud 凭证文件:
$ source ~/<credentials_file>
-
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
创建存储自定义 YAML 文件以提供适合您环境的任何值或覆盖:
$ vi /home/stack/templates/<share_protocols>.yaml
-
将
<share_protocols
> 替换为您的文件的名称。
-
将
使用您要启用的 NAS 协议配置
ManilaEnabledShareProtocols
参数:parameter_defaults: ManilaEnabledShareProtocols: - NFS - CEPHFS
使用其他环境文件将存储自定义 YAML 文件添加到堆栈中,并部署 overcloud:
$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<share_protocols>.yaml
注意部署不会验证设置。您分配的 NAS 协议必须被共享文件系统服务部署中的后端支持。
6.1.8. 查看后端功能
共享文件系统服务(manila)的调度程序组件根据几个因素(如容量、配置配置、放置提示以及后端存储系统驱动程序检测到和公开的功能)做出智能放置决策。
流程
运行以下命令来查看可用功能:
$ manila pool-list --detail +------------------------------------+----------------------------+ | Property | Value | +------------------------------------+----------------------------+ | name | hostgroup@cephfs#cephfs | | pool_name | cephfs | | total_capacity_gb | 1978 | | free_capacity_gb | 1812 | ... | driver_handles_share_servers | False | | snapshot_support | True | | create_share_from_snapshot_support | False | | revert_to_snapshot_support | False | | mount_snapshot_support | False | ... +------------------------------------+----------------------------+ +------------------------------------+-----------------------------------+ | Property | Value | +------------------------------------+-----------------------------------+ | name | hostgroup@tripleo_netapp#aggr1_n1 | | pool_name | aggr1_n1 | | total_capacity_gb | 6342.1 | | free_capacity_gb | 6161.99 | ... | driver_handles_share_servers | False | | mount_snapshot_support | False | | replication_type | None | | replication_domain | None | | sg_consistent_snapshot_support | host | | ipv4_support | True | | ipv6_support | False | +------------------------------------+-----------------------------------+ +------------------------------------+-----------------------------------+ | Property | Value | +------------------------------------+-----------------------------------+ | name | hostgroup@tripleo_netapp#aggr1_n2 | | pool_name | aggr1_n2 | | total_capacity_gb | 6342.1 | | free_capacity_gb | 6209.26 | ... | snapshot_support | True | | create_share_from_snapshot_support | True | | revert_to_snapshot_support | True | | driver_handles_share_servers | False | | mount_snapshot_support | False | | replication_type | None | | replication_domain | None | | sg_consistent_snapshot_support | host | | ipv4_support | True | | ipv6_support | False | +------------------------------------+-----------------------------------+
相关信息
要影响放置决策,作为管理员,您可以使用共享类型和额外规格。有关共享类型的更多信息,请参阅创建共享类型。