GPFS Driver
GPFS 驱动程序使用 IBM 通用并行文件系统 (GPFS),由 IBM 开发的高性能集群文件系统,作为存储后端,为 manila 客户端提供文件共享。
支持的操作
创建 NFS 共享
删除 NFS 共享
创建共享快照
删除共享快照
从共享快照创建共享
允许 NFS 共享访问
拒绝 NFS 共享访问
需求
在存储后端上安装带有服务器许可证的 GPFS,版本 >= 2.0。
在存储后端服务器上安装 Kernel NFS 或 Ganesha NFS 服务器。
如果使用 Ganesha NFS,则当前支持 NFS Ganesha v1.5 和 v2.0。
创建一个 GPFS 集群并在集群上创建一个文件系统,该文件系统将用于创建 manila 共享。
为 GPFS 文件系统启用配额 (mmchfs -Q yes)。
建立 manila 宿主机与存储后端之间的网络连接。
Manila 驱动程序配置设置
需要在 manila 配置文件中设置以下参数
share_driver = manila.share.drivers.ibm.gpfs.GPFSShareDriver
gpfs_share_export_ip = <要添加到 GPFS 导出字符串的 IP>
如果后端 GPFS 服务器未在 manila 主机机器上运行,则需要以下选项才能通过 SSH 连接到远程 GPFS 后端服务器
gpfs_ssh_login = <GPFS 服务器 SSH 登录名>
并且需要以下设置之一才能通过 SSH 执行命令
gpfs_ssh_private_key = <用于登录的 GPFS 服务器 SSH 私钥的路径>
gpfs_ssh_password = <GPFS 服务器 SSH 登录密码>
以下配置参数是可选的
gpfs_mount_point_base = <导出共享所在的基目录>
gpfs_nfs_server_type = <KNFS|GNFS>
gpfs_nfs_server_list = <完全限定的 NFS 服务器名称列表>
gpfs_ssh_port = <ssh 端口号>
需要重新启动 manila-share 服务才能使配置更改生效。
已知限制
The manila.share.drivers.ibm.gpfs 模块
用于共享的 GPFS 驱动程序。
- 配置要求
GPFS 文件系统必须启用配额 (mmchfs -Q yes)。
- 说明
GPFS 独立文件集用于每个共享。
TODO(nileshb):添加共享服务器创建/删除/处理的支持。
- 限制
在使用远程 GPFS 节点和 Ganesha NFS 时,必须指定远程登录 GPFS 节点的 ‘gpfs_ssh_private_key’,并且必须在 Manila 共享服务和远程 GPFS 节点之间已经设置了无密码身份验证。
-
class CESHelper(execute, config_object)
基类: NASHelperBase
Spectrum Scale CES 的 NFS 包装器
-
allow_access(local_path, share, access)
允许访问主机。
-
deny_access(local_path, share, access, force=False)
拒绝访问主机。
-
get_access_option(access)
根据访问级别获取访问选项字符串。
-
remove_export(local_path, share)
删除导出。
-
resync_access(local_path, share, access_rules)
重新同步给定共享的所有访问规则。
-
class GPFSShareDriver(*args, **kwargs)
基类: ExecuteMixin, GaneshaMixin, ShareDriver
GPFS 共享驱动程序。
执行与共享相关的命令。支持在 GPFS 集群上创建共享。
API 版本历史
1.0 - 初始版本。1.1 - 添加了 extend_share 功能。2.0 - 添加了 NFS Ganesha 的 CES 支持
-
check_for_setup_error()
如果未满足先决条件,则返回错误。
-
create_share(ctx, share, share_server=None)
创建将表示共享的 GPFS 目录。
-
create_share_from_snapshot(ctx, share, snapshot, share_server=None, parent_share=None)
用于从快照创建共享。
-
create_snapshot(context, snapshot, share_server=None)
创建快照。
-
delete_share(ctx, share, share_server=None)
删除并清理共享存储。
-
delete_snapshot(context, snapshot, share_server=None)
删除快照。
-
do_setup(context)
共享驱动程序启动时执行的任何初始化。
-
ensure_share(ctx, share, share_server=None)
确保存储已挂载和导出。
-
extend_share(share, new_size, share_server=None)
扩展共享文件集的配额。
-
get_network_allocations_number()
返回创建 VIF 的网络分配数量。
使用 Nova 进行共享服务器的驱动程序应在此处返回零 (0),就像通用驱动程序一样。因为 Nova 将处理网络资源分配。自行处理网络的驱动程序应根据自己的要求进行计算。它可以有 1 个或多个网络接口。
-
manage_existing(share, driver_options)
将现有共享置于 Manila 管理之下。
如果提供的共享无效,则引发 ManageInvalidShare 异常,说明失败原因。
如果提供的共享处于无法管理的状态,例如在后端上复制,则驱动程序 *必须* 引发 ManageInvalidShare 异常,并提供适当的消息。
共享具有 share_type,驱动程序可以检查该 share_type 并与引用的后端共享的属性进行比较。如果它们不兼容,则引发 ManageExistingShareTypeMismatch,说明失败原因。
当使用具有设置为 False 的 driver_handles_share_servers 额外规范的 share type 管理共享时,调用此方法。
- 参数:
-
- 返回值:
share_update 字典,其中包含所需的键 ‘size’,该键应包含共享的大小。
-
update_access(context, share, access_rules, add_rules, delete_rules, update_rules, share_server=None)
更新给定共享的访问规则。
-
class KNFSHelper(execute, config_object)
基类: NASHelperBase
Kernel NFS 命令的包装器。
-
allow_access(local_path, share, access, error_on_exists=True)
允许访问一个或多个虚拟机实例。
-
deny_access(local_path, share, access)
删除一个或多个虚拟机实例的访问权限。
-
get_access_option(access)
根据访问级别获取访问选项字符串。
-
remove_export(local_path, share)
删除导出。
-
resync_access(local_path, share, access_rules)
重新同步给定共享的所有访问规则。
-
class NASHelperBase(execute, config_object)
基类: object
与共享交互的接口。
-
abstract allow_access(local_path, share, access)
允许访问主机。
-
create_export(local_path)
构造新的导出的位置。
-
abstract deny_access(local_path, share, access)
拒绝访问主机。
-
abstract get_access_option(access)
根据访问级别获取访问选项字符串。
-
get_export_options(share, access, helper)
获取导出选项。
-
abstract remove_export(local_path, share)
删除导出。
-
abstract resync_access(local_path, share, access_rules)
重新同步给定共享的所有访问规则。