Tegile Driver

Tegile Manila 驱动程序使用 Tegile IntelliFlash 阵列为 OpenStack 提供共享文件系统。

Tegile Driver 通过 REST API 与 Tegile 阵列交互。

需求

  • Tegile IntelliFlash 版本 3.5.1

  • 要使用 CIFS,必须在 Tegile 阵列中配置 Active Directory。

支持的操作

Tegile 阵列上支持以下操作

  • 创建 CIFS/NFS 共享

  • 删除 CIFS/NFS 共享

  • 允许 CIFS/NFS 共享访问
    • 仅支持 IP 访问类型用于 NFS

    • 支持 USER 访问类型用于 NFS 和 CIFS

    • 支持 RW 和 RO 访问

  • 拒绝 CIFS/NFS 共享访问
    • 支持 IP 访问类型用于 NFS

    • 支持 USER 访问类型用于 NFS 和 CIFS

  • 创建快照

  • 删除快照

  • 扩展共享

  • 缩小共享

  • 从快照创建共享

后端配置

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

[DEFAULT]

选项

描述

enabled_share_backends

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

enabled_share_protocols

指定允许创建共享的协议列表。对于 Tegile 驱动程序,可以是:NFSCIFSNFS, 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”。

参数:
  • context – 当前上下文

  • share – 包含共享数据的共享实例模型。

  • snapshot – 快照实例模型。

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

  • parent_share – 包含共享数据和共享服务器模型的父快照的共享模型。

返回值:

包含当前共享状态及其导出位置(如果可用)的更新字典。

示例

{
    'status': 'available',
    'export_locations': [{...}, {...}],
}

引发:

ShareBackendException。此方法中的 ShareBackendException 会将实例设置为“error”,并且操作将结束。

create_snapshot(**kwds)

用于创建快照。

参数:
  • context – 当前上下文

  • snapshot – 快照模型。可以通过 snapshot[‘share’] 检索共享模型。

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

返回值:

None 或包含导出位置列表的字典,如果可以挂载快照。

delete_share(**kwds)

用于删除共享。

delete_snapshot(**kwds)

用于删除快照。

参数:
  • context – 当前上下文

  • snapshot – 快照模型。可以通过 snapshot[‘share’] 检索共享模型。

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

ensure_share(**kwds)

调用以确保共享已导出。

驱动程序可以使用此方法更新共享的导出位置列表(如果发生更改)。为此,应返回包含导出位置的列表。

如果驱动程序实现“get_backend_info”和“ensure_shares”,则优选而不是此例程。

返回值:

None 或包含导出位置的列表

extend_share(**kwds)

扩展现有共享的大小。

参数:
  • share – 共享模型

  • new_size – 共享的新大小(new_size > share[‘size’])

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

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’])

参数:
  • share – 共享模型

  • new_size – 共享的新大小(new_size < share[‘size’])

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

:raises ShareShrinkingPossibleDataLoss, NotImplementedError

update_access(**kwds)

更新给定共享的访问规则。

access_rules 包含需要应用于共享的所有访问规则。如果驱动程序可以进行批量访问规则更新,则可以安全地忽略 add_rulesdelete_rules 参数。

如果驱动程序无法进行批量访问规则更改,则可以依赖于 add_rules 中存在新规则,并且 delete_rules 中存在需要删除的规则。

delete_rules 中的规则从未应用时,驱动程序不得引发异常,也不应尝试将规则设置为“error”状态。

add_rulesdelete_rules 可以是空列表,在这种情况下,驱动程序应确保 access_rules 中存在的规则与后端上的规则相同。强制执行此情况的一种情况是当更改所有现有规则的访问级别时(共享迁移和可读副本)。

驱动程序必须注意共享副本的此调用。当在副本之一上调用“update_access”时,该调用可能会传播到属于该共享的所有副本,尤其是在添加或删除单个规则时。如果特定的访问规则在给定副本的上下文中对驱动程序没有意义,则驱动程序应小心报告正确的行为,并采取有意义的措施。例如,如果在属于“可读”类型复制的副本上请求 R/W 访问权限;驱动程序可以添加 R/O 访问权限而不是 R/W 访问权限。请注意,引发异常导致副本和共享本身的 access_rules_status 变为“out_of_sync”。驱动程序可以在 create_replicapromote_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”转换规则视为新规则并重复该请求。