Pure Storage FlashBlade 驱动程序用于 OpenStack Manila

Pure Storage FlashBlade Manila 驱动程序使用 Pure Storage 的 FlashBlade 本地文件系统功能,为 OpenStack 提供 NFS 共享文件系统。

支持的操作

以下操作支持 Pure Storage FlashBlade

  • 创建/删除 NFS 共享

    • 在访问规则允许访问之前,共享不可访问

  • 允许/拒绝 NFS 共享访问

    • 需要 IP 访问规则才能访问 NFS 共享

  • 创建/删除快照

  • 扩展和缩小共享

  • 还原到快照

不支持共享网络。共享直接在 FlashBlade 上创建,无需使用共享服务器或服务 VM。网络连接在 Manila 之外设置。

通用要求

在运行 Manila 共享服务的系统上

  • 来自 PyPI 的 purity_fb 1.12.1 或更高版本。

在 Pure Storage FlashBlade 上

  • Purity//FB 操作系统软件版本 2.3.0 或更高版本

网络要求

FlashBlade (REST) 和 manila 主机之间的连接对于共享管理是必需的。

客户端和 FlashBlade 之间的连接对于挂载和使用共享是必需的。这包括

  • 从客户端到外部网络的路由

  • 为客户端分配外部 IP 地址(例如,浮动 IP)

  • 正确配置 Manila 主机网络以进行 IP 转发

  • 正确配置 FlashBlade 网络以用于客户端子网

驱动程序配置

在配置驱动程序之前,请确保已满足以下网络要求

  • 必须可以从运行 Manila 共享服务的系统访问管理子网

  • 必须可以从运行 Nova 计算服务的系统访问数据子网

  • 必须为具有管理权限的用户提供 API 令牌

执行以下步骤

  1. manila.conf 中配置 Pure Storage FlashBlade 参数

  2. 配置/创建共享类型

  3. 重启服务

还假定 OpenStack 网络已正确配置。

步骤 1 - FlashBlade 参数配置

需要在 manila.conf 的 [DEFAULT] 部分中配置以下参数

选项

描述

enabled_share_backends

用于指定后端的 manila.conf 节的名称。例如:enabled_share_backends = flashblade

enabled_share_protocols

指定允许用于共享创建的协议列表。此驱动程序版本仅支持 NFS

需要在 /etc/manila/manila.conf 的 [backend] 部分中配置以下参数

选项

描述

share_backend_name

后端的名称。

share_driver

Python 模块路径。对于此驱动程序 必须是manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver

driver_handles_share_servers

驱动程序工作模式。对于此驱动程序 必须是False

flashblade_mgmt_vip

Pure Storage FlashBlade 存储系统管理 VIP 的名称(或 IP 地址)。

flashblade_data_vip

Pure Storage FlashBlade 存储系统数据 VIP 的名称(或 IP 地址)。

flashblade_api

管理用户帐户的 API 令牌

flashblade_eradicate (可选)

启用时,在 Manila 中删除时,所有 FlashBlade 文件系统和快照都将被清除。设置此选项为 True 后,数据将无法恢复!禁用时,文件系统和快照将进入待清除状态,可以恢复。默认值为 True

以下是 FlashBlade 驱动程序有效配置的示例

[DEFAULT]
...
enabled_share_backends = flashblade
enabled_share_protocols = NFS
...

[flashblade]
share_backend_name = flashblade
share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
driver_handles_share_servers = False
flashblade_mgmt_vip = 1.2.3.4
flashblade_data_vip = 1.2.3.5,1.2.3.6
flashblade_api = T-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

需要重新启动 manila-share 服务才能使配置更改生效。

步骤 2 - 共享类型配置

共享文件系统服务要求共享类型包含 driver_handles_share_servers 额外规范。这可确保共享将在支持请求的 driver_handles_share_servers 功能的后端上创建。对于 OpenStack 的 Pure Storage FlashBlade 驱动程序,必须将其设置为 False。

$ manila type-create flashblade False

此外,驱动程序还报告以下可以在共享类型中指定的常见功能

功能

描述

thin_provisioning = True

在 FlashBlade 上创建的所有共享始终是稀疏配置的。如果设置此选项,则该值 必须是True

snapshot_support = True/False

FlashBlade 支持共享快照。如果设置此选项,则该值 必须是True

revert_to_snapshot = True/False

FlashBlade 支持将共享还原到最新的可用快照。如果设置此选项,则该值 必须是True

要在共享类型上指定常用功能,请使用 type-key 命令,例如

$ manila type-key flashblade set snapshot_support=True
$ manila type-key flashblade set revert_to_snapshot=True

步骤 3 - 重启服务

重启所有共享文件系统服务(manila-share、manila-scheduler 和 manila-api)。此步骤特定于您的环境。例如,systemctl restart <controller>@manila-shr 用于重启共享服务。

manila.share.drivers.purestorage.flashblade 模块

Pure Storage FlashBlade 共享驱动程序

class FlashBladeShareDriver(*args, **kwargs)

基类: ShareDriver

版本历史

1.0.0 - 初始版本 2.0.0 - Xena 版本 3.0.0 - Yoga 版本 4.0.0 - Zed 版本 5.0.0 - Antelope 版本 6.0.0 - Bobcat 版本 7.0.0 - 2024.1 (Caracal) 版本 8.0.0 - 2025.1 (Epoxy) 版本 9.0.0 - 2025.2 (Flamingo) 版本

USER_AGENT_BASE = 'OpenStack Manila'
VERSION = '9.0'
create_share(context, share, share_server=None)

根据使用的协议创建共享并导出它。

create_snapshot(context, snapshot, share_server=None)

调用以创建快照

delete_share(context, share, share_server=None)

调用以删除共享

delete_snapshot(context, snapshot, share_server=None)

调用以删除快照

do_setup(context)

驱动程序初始化

ensure_share(context, share, share_server=None)

虚拟 - 调用以确保共享已导出。

由于在 FlashBlade 上创建的所有共享都保证已导出,因此此检查是多余的

extend_share(share, new_size, share_server=None)

使用 resize_share 扩展共享

revert_to_snapshot(context, snapshot, share_access_rules, snapshot_access_rules, share_server=None)

将共享(就地)恢复到指定的快照。

不删除共享快照。 必须将共享和快照都设置为“可用”,才能尝试还原。 快照必须是由 Manila 拍摄的最新快照;API 层执行此检查,因此驱动程序无需执行此操作。

必须就地将共享恢复到快照的内容。 应用程序管理员应使应用程序静默或以其他方式准备共享文件系统内容突然更改。

参数:
  • context – 当前上下文

  • snapshot – 要还原的快照

  • share_access_rules – 受影响共享的所有访问规则的列表

  • snapshot_access_rules – 受影响快照的所有访问规则的列表

  • share_server – 可选 – 共享服务器模型或 None

shrink_share(share, new_size, share_server=None)

使用 resize_share 缩小共享

update_access(context, share, access_rules, add_rules, delete_rules, update_rules, share_server=None)

更新共享访问权限

purity_fb_to_manila_exceptions(func)