Pure Storage FlashBlade 文件服务驱动程序,适用于 OpenStack

概述

Pure Storage FlashBlade 文件服务驱动程序为 OpenStack 提供 NFS 共享文件系统。

需求

  • Pure Storage FlashBlade

  • Purity//FB v2.3.0 或更高版本

支持的共享文件系统和操作

该驱动程序支持 NFS 共享。

支持以下操作

  • 创建共享。

  • 删除共享。

  • 允许共享访问。

  • 拒绝共享访问。

  • 创建快照。

  • 删除快照。

  • 从快照恢复。

  • 扩展共享。

  • 缩小共享。

准备和部署

重要提示

必须能够从管理网络通过共享文件系统节点访问 FlashBlade 管理接口,同时选定的 EVS 数据接口能够从 OpenStack 云访问,例如通过 Neutron flat 网络。

Kolla 部署上的配置

/etc/kolla/globals.yml 中启用共享文件系统服务和 FlashBlade 驱动程序

enable_manila: "yes"
enable_manila_backend_flashblade: "yes"

配置 OpenStack 网络,使其能够访问 FlashBlade 管理接口和 FlashBlade 数据接口。

配置两个物理网络 physnet1 和 physnet2,分别关联端口 eth1 和 eth2

/etc/kolla/globals.yml 中设置

neutron_bridge_name: "br-ex,br-ex2"
neutron_external_interface: "eth1,eth2"

注意

eth1 用于 Neutron 外部接口,eth2 用于 FlashBlade 数据接口。

FlashBlade 后端配置

/etc/kolla/globals.yml 中取消注释并设置

manila_flashblade_mgmt_vip: "172.24.44.15"
manila_flashblade_data_vip: "172.24.45.22"
manila_flashblade_api: "<API token for admin-privilaged user>"

FlashBlade 上的配置

在 Kolla OpenStack 中创建 FlashBlade 数据网络

列出可用的租户

$ openstack project list

为给定的租户(服务)创建一个网络,提供租户 ID、网络的名称、虚拟网络所实现的物理网络的名称以及虚拟网络所实现的物理机制的类型

$ openstack network create --project <SERVICE_ID> \
  --provider-physical-network physnet2 \
  --provider-network-type flat \
  flashblade_network

可选 - 列出可用的网络

$ openstack network list

为同一个租户(服务)创建一个子网,提供此子网的网关 IP、子网的名称、之前创建的网络 ID 以及子网的 CIDR

$ openstack subnet create --project <SERVICE_ID>  --gateway <GATEWAY> \
  --subnet_range <SUBNET_CIDR> flashblade_subnet

可选 - 列出可用的子网

$ openstack subnet list

将子网接口添加到路由器,提供路由器 ID 和之前创建的子网 ID

$ openstack router add submet <ROUTER_ID> <SUBNET_ID>

创建共享

在运行 manila-share 服务之前创建默认共享类型

$ openstack share type create default_share_flashblade False

+--------------------------------------+--------------------------+------------+------------+--------------------------------------+-------------------------+
| ID                                   | Name                     | visibility | is_default | required_extra_specs                 | optional_extra_specs    |
+--------------------------------------+--------------------------+------------+------------+--------------------------------------+-------------------------+
| 3e54c8a2-1e50-455e-89a0-96bb52876c35 | default_share_flashblade | public     | -          | driver_handles_share_servers : False | snapshot_support : True |
+--------------------------------------+--------------------------+------------+------------+--------------------------------------+-------------------------+

使用 FlashBlade 后端创建 NFS 共享

$ openstack share create --name <myflashbladeshare \
  --description "My Manila share" \
  --share-type default_share_flashblade \
  NFS 1

验证操作

$ openstack share list

+--------------------------------------+-------------------+------+-------------+-----------+-----------+--------------------------+-----------------+-------------------+
| ID                                   | Name              | Size | Share Proto | Status    | Is Public | Share Type Name          | Host            | Availability Zone |
+--------------------------------------+-------------------+------+-------------+-----------+-----------+--------------------------+-----------------+-------------------+
| 721c0a6d-eea6-41af-8c10-72cd98985203 | myflashbladeshare | 1    | NFS         | available | False     | default_share_flashblade | control@fb1#FB1 | nova              |
+--------------------------------------+-------------------+------+-------------+-----------+-----------+--------------------------+-----------------+-------------------+
$ openstack share show myflashbladeshare

+-----------------------------+-----------------------------------------------------------------+
| Property                    | Value                                                           |
+-----------------------------+-----------------------------------------------------------------+
| status                      | available                                                       |
| share_type_name             | default_share_flashblade                                        |
| description                 | My Manila share                                                 |
| availability_zone           | nova                                                            |
| share_network_id            | None                                                            |
| export_locations            |                                                                 |
|                             | path = 172.24.53.1:/shares/45ed6670-688b-4cf0-bfe7-34956648fb84 |
|                             | preferred = False                                               |
|                             | is_admin_only = False                                           |
|                             | id = e81e716f-f1bd-47b2-8a56-2c2f9e33a98e                       |
|                             | share_instance_id = 45ed6670-688b-4cf0-bfe7-34956648fb84        |
| share_server_id             | None                                                            |
| host                        | control@fb1#FB1                                                 |
| access_rules_status         | active                                                          |
| snapshot_id                 | None                                                            |
| is_public                   | False                                                           |
| task_state                  | None                                                            |
| snapshot_support            | True                                                            |
| id                          | 721c0a6d-eea6-41af-8c10-72cd98985203                            |
| size                        | 1                                                               |
| user_id                     | ba7f6d543713488786b4b8cb093e7873                                |
| name                        | myflashbladeshare                                               |
| share_type                  | 3e54c8a2-1e50-455e-89a0-96bb52876c35                            |
| has_replicas                | False                                                           |
| replication_type            | None                                                            |
| created_at                  | 2016-10-14T14:50:47.000000                                      |
| share_proto                 | NFS                                                             |
| consistency_group_id        | None                                                            |
| source_cgsnapshot_member_id | None                                                            |
| project_id                  | c3810d8bcc3346d0bdc8100b09abbbf1                                |
| metadata                    | {}                                                              |
+-----------------------------+-----------------------------------------------------------------+

配置多个后端

管理员可以配置一个 Manila 实例,从一个或多个后端配置共享。每个后端利用 Manila 驱动程序 API 的特定供应商实现的一个实例。

后端名称声明为配置选项 share_backend_name,位于包含该后端相关配置选项的特定配置段中。

因此,在部署多个后端的情况下,在部署之前更改默认共享后端是必要的。

修改文件 /etc/kolla/config/manila.conf 并添加内容

[DEFAULT]
enabled_share_backends = generic,fb1,fb2

修改文件 /etc/kolla/config/manila-share.conf 并添加内容

[generic]
share_driver = manila.share.drivers.generic.GenericShareDriver
interface_driver = manila.network.linux.interface.OVSInterfaceDriver
driver_handles_share_servers = True
service_instance_password = manila
service_instance_user = manila
service_image_name = manila-service-image
share_backend_name = GENERIC

[fb1]
share_backend_name = FB1
share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
driver_handles_share_servers = False
flashblade_mgmt_vip = <fb1_mgmt_ip>
flashblade_data_vip = <fb1_data_ip>
flashblade_api = <FB1 API token>

[fb2]
share_backend_name = FB2
share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
driver_handles_share_servers = False
flashblade_mgmt_vip = <fb2_mgmt_ip>
flashblade_data_vip = <fb2_data_ip>
flashblade_api = <FB2 API token>

有关如何管理共享的更多信息,请参阅 管理共享

有关如何使用 Pure Storage FlashBlade 的详细信息,请参阅 Pure Storage Manila 参考指南

使用此后端需要将 purity_fb SDK 包安装在 manila-share 容器中。为此,请按照 kolla 镜像构建指南 中概述的步骤操作,特别是 Package CustomisationCustom Repos 部分。