Tegile Driver
Tegile Manila 驱动程序使用 Tegile IntelliFlash 阵列为 OpenStack 提供共享文件系统。
Tegile Driver 通过 REST API 与 Tegile 阵列交互。
支持的操作
Tegile 阵列上支持以下操作
创建 CIFS/NFS 共享
删除 CIFS/NFS 共享
- 允许 CIFS/NFS 共享访问
-
- 拒绝 CIFS/NFS 共享访问
-
创建快照
删除快照
扩展共享
缩小共享
从快照创建共享
后端配置
需要在 /etc/manila/manila.conf 的 [DEFAULT] 部分配置以下参数
[DEFAULT] |
选项 |
描述 |
enabled_share_backends |
用于指定后端的 manila.conf 节的名称。例如:enabled_share_backends = tegileNAS |
enabled_share_protocols |
指定允许创建共享的协议列表。对于 Tegile 驱动程序,可以是:NFS 或 CIFS 或 NFS, CIFS。 |
需要在 /etc/manila/manila.conf 的 [backend] 部分配置以下参数
[tegileNAS] |
选项 |
描述 |
share_backend_name |
后端的名称。 |
share_driver |
Python 模块路径。对于 Tegile 驱动程序,必须是:manila.share.drivers.tegile.tegile.TegileShareDriver。 |
driver_handles_share_servers |
DHSS,驱动程序工作模式。对于 Tegile 驱动程序,**必须**为:False。 |
tegile_nas_server |
Manila 节点连接 Tegile 阵列的 IP 地址。 |
tegile_nas_login |
此字段用于向 Tegile 阵列提供用户名凭据。 |
tegile_nas_password |
此字段用于向 Tegile 阵列提供密码凭据。 |
tegile_default_project |
此字段可用于在 Tegile 阵列中指定创建共享的默认项目。此字段是可选的。 |
以下是 Tegile 驱动程序有效配置的示例
[DEFAULT]
enabled_share_backends = tegileNAS
enabled_share_protocols = NFS,CIFS
[tegileNAS]
driver_handles_share_servers = False
share_backend_name = tegileNAS
share_driver = manila.share.drivers.tegile.tegile.TegileShareDriver
tegile_nas_server = 10.12.14.16
tegile_nas_login = admin
tegile_nas_password = password
tegile_default_project = financeshares
需要重新启动 manila-share 服务才能使配置更改生效。
限制
Tegile 驱动程序具有以下限制
IP 访问类型仅支持 NFS。
仅支持 FLAT 网络。
manila.share.drivers.tegile.tegile 模块
Tegile 存储的共享驱动程序。
-
class TegileShareDriver(*args, **kwargs)
基类: ShareDriver
Tegile NAS 驱动程序。允许使用 NFS 和 CIFS NAS 存储。
-
create_share(**kwds)
用于创建共享。
-
create_share_from_snapshot(**kwds)
用于从快照创建共享。
如果需要从一个主机复制数据到另一个主机,则从快照创建共享可能比简单的克隆操作花费更长的时间。因此,驱动程序可以通过在模型更新中提供“creating_from_snapshot”状态来异步完成此创建。
当异步响应时,驱动程序必须实现“get_share_status”调用,以便为具有“creating_from_snapshot”状态的共享提供更新。
预计驱动程序将返回一个模型更新到共享管理器,其中包含:共享状态和导出位置列表。只有在“available”状态下,才需要导出位置列表。当前支持的状态是“available”和“creating_from_snapshot”。
- 参数:
-
- 返回值:
包含当前共享状态及其导出位置(如果可用)的更新字典。
示例
{
'status': 'available',
'export_locations': [{...}, {...}],
}
- 引发:
ShareBackendException。此方法中的 ShareBackendException 会将实例设置为“error”,并且操作将结束。
-
create_snapshot(**kwds)
用于创建快照。
- 参数:
-
- 返回值:
None 或包含导出位置列表的字典,如果可以挂载快照。
-
delete_share(**kwds)
用于删除共享。
-
delete_snapshot(**kwds)
用于删除快照。
- 参数:
-
-
ensure_share(**kwds)
调用以确保共享已导出。
驱动程序可以使用此方法更新共享的导出位置列表(如果发生更改)。为此,应返回包含导出位置的列表。
如果驱动程序实现“get_backend_info”和“ensure_shares”,则优选而不是此例程。
- 返回值:
None 或包含导出位置的列表
-
extend_share(**kwds)
扩展现有共享的大小。
- 参数:
-
-
get_network_allocations_number(**kwds)
返回创建 VIF 的网络分配数量。
使用 Nova 进行共享服务器的驱动程序应在此处返回零 (0),就像通用驱动程序一样。因为 Nova 将处理网络资源分配。自行处理网络的驱动程序应根据自己的要求进行计算。它可以有 1 个或多个网络接口。
-
get_pool(**kwds)
返回共享所在的池名称。
- 参数:
share – 由驱动程序托管的共享。
-
shrink_share(**kwds)
缩小现有共享的大小。
如果共享上的已用空间大于 new_size,驱动程序应引发 ShareShrinkingPossibleDataLoss 异常:raise ShareShrinkingPossibleDataLoss(share_id=share[‘id’])
- 参数:
-
:raises ShareShrinkingPossibleDataLoss, NotImplementedError
-
update_access(**kwds)
更新给定共享的访问规则。
access_rules 包含需要应用于共享的所有访问规则。如果驱动程序可以进行批量访问规则更新,则可以安全地忽略 add_rules 和 delete_rules 参数。
如果驱动程序无法进行批量访问规则更改,则可以依赖于 add_rules 中存在新规则,并且 delete_rules 中存在需要删除的规则。
当 delete_rules 中的规则从未应用时,驱动程序不得引发异常,也不应尝试将规则设置为“error”状态。
add_rules 和 delete_rules 可以是空列表,在这种情况下,驱动程序应确保 access_rules 中存在的规则与后端上的规则相同。强制执行此情况的一种情况是当更改所有现有规则的访问级别时(共享迁移和可读副本)。
驱动程序必须注意共享副本的此调用。当在副本之一上调用“update_access”时,该调用可能会传播到属于该共享的所有副本,尤其是在添加或删除单个规则时。如果特定的访问规则在给定副本的上下文中对驱动程序没有意义,则驱动程序应小心报告正确的行为,并采取有意义的措施。例如,如果在属于“可读”类型复制的副本上请求 R/W 访问权限;驱动程序可以添加 R/O 访问权限而不是 R/W 访问权限。请注意,引发异常将导致副本和共享本身的 access_rules_status 变为“out_of_sync”。驱动程序可以在 create_replica 和 promote_replica 调用上提供的有效访问规则上同步。
- 参数:
context – 当前上下文
share – 包含共享数据的共享模型。
access_rules – 给定共享的访问规则列表
add_rules – 空列表或应添加的访问规则列表。access_rules 已经包含这些规则。
delete_rules – 空列表或应删除的访问规则列表。access_rules 不包含这些规则。
update_rules – 空列表或应更新的访问规则列表。access_rules 已经包含这些规则。
share_server – None 或共享服务器模型
- 返回值:
None,或包含格式为
‘09960614-8574-4e03-89cf-7cf267b0bd08’: {
‘access_key’: ‘alice31493e5441b8171d2310d80e37e’, ‘state’: ‘error’,
},
’28f6eabb-4342-486a-a7f4-45688f0c0295’: {
‘access_key’: ‘bob0078aa042d5a7325480fd13228b’, ‘state’: ‘active’,
},
}
的更新字典。顶层键是需要更新的访问规则的 ‘access_id’ 字段。access_key``s 是 授予访问权限的实体的凭据(字符串)。 ``access_rules 参数中的任何规则都可以更新。
重要提示
在此方法中引发异常将强制所有处于“applying”和“denying”状态的规则变为“error”。
可以显式通过此返回参数将访问规则设置为“error”状态,或者因为在此方法中引发了异常。这样的访问规则将不再发送到驱动程序后续的访问规则更新中。但是,当用户拒绝该规则时,驱动程序将被要求拒绝代表该规则的客户端的访问权限。我们期望在驱动程序上出错的规则永远不会存在于后端。因此,请勿使删除请求失败。
此外,驱动程序可能会收到请求以添加规则,该规则已经存在于后端。当共享管理器服务在驱动程序提交访问规则更改时停止工作时,可能会发生这种情况。由于我们无法确定在中断之前驱动程序是否已成功应用该规则,因此我们将所有“applying”转换规则视为新规则并重复该请求。