Huawei Driver

Huawei NAS Driver 是基于 OpenStack manila 服务的插件。Huawei NAS Driver 可用于为 OpenStack 中的虚拟机(实例)提供共享和快照等功能。Huawei NAS Driver 使 OceanStor V3 系列 V300R002 存储系统能够为 OpenStack 提供仅网络文件系统。

需求

  • OceanStor V3 系列 V300R002 存储系统。

  • V3 for File 需要激活以下许可证

    • CIFS

    • NFS

    • HyperSnap 许可证(用于快照)

支持的操作

V3 存储上支持以下操作

  • 创建 CIFS/NFS 共享

  • 删除 CIFS/NFS 共享

  • 允许 CIFS/NFS 共享访问

    • NFS(ro/rw) 支持 IP 和 USER 访问类型。

    • CIFS(ro/rw) 仅支持 USER 访问类型。

  • 拒绝 CIFS/NFS 共享访问

  • 创建快照

  • 删除快照

  • 管理 CIFS/NFS 共享

  • 支持一个后端中的多个存储池

  • 扩展共享

  • 缩小共享

  • 支持多个 RestURLs(<RestURL>)

  • 支持多租户

  • 确保共享

  • 从快照创建共享

  • 支持 QoS

华为上的预配置

1. 创建驱动程序配置文件。驱动程序配置文件名必须与 manila_conf 配置文件的 manila_huawei_conf_file 项相同。

2. 配置产品。产品指示存储系统类型。对于 OceanStor V3 系列 V300R002 存储系统,驱动程序配置文件如下

<?xml version='1.0' encoding='UTF-8'?>
<Config>
    <Storage>
        <Product>V3</Product>
        <LogicalPortIP>x.x.x.x</LogicalPortIP>
        <Port>abc;CTE0.A.H1</Port>
        <RestURL>https://x.x.x.x:8088/deviceManager/rest/;
        https://x.x.x.x:8088/deviceManager/rest/</RestURL>
        <UserName>xxxxxxxxx</UserName>
        <UserPassword>xxxxxxxxx</UserPassword>
    </Storage>
    <Filesystem>
        <StoragePool>xxxxxxxxx</StoragePool>
        <SectorSize>64</SectorSize>
        <WaitInterval>3</WaitInterval>
        <Timeout>60</Timeout>
        <NFSClient>
            <IP>x.x.x.x</IP>
        </NFSClient>
        <CIFSClient>
            <UserName>xxxxxxxxx</UserName>
            <UserPassword>xxxxxxxxx</UserPassword>
        </CIFSClient>
    </Filesystem>
</Config>
  • <Product> 是一种存储产品类型。将其设置为 <V3>。

  • <LogicalPortIP> 是逻辑端口的 IP 地址。

  • <Port> 是 bond 端口或 ETH 端口的端口名列表,用于创建 VLAN 和逻辑端口。可以在 <Port> 中配置多个端口(用“;”分隔)。如果未配置 <Port>,则将在阵列上选择一个在线端口。

  • <RestURL> 是 REST 接口的访问地址。可以在 <RestURL> 中配置多个 RestURLs(用“;”分隔)。当其中一个 RestURL 连接失败时,驱动程序将自动重试另一个。

  • <UserName> 是管理员的用户名。

  • <UserPassword> 是管理员的密码。

  • <StoragePool> 是要使用的存储池的名称。

  • <SectorSize> 是磁盘块的大小,可选值可以是“4”、“8”、“16”、“32”或“64”,单位是 KB。如果“sectorsize”同时在 share_type 和 xml 文件中配置,则使用 share_type 中的 sectorsize 值。如果“sectorsize”在 share_type 或 xml 文件中均未配置,则 huawei 存储后端在创建新共享时将提供默认值(64)。

  • <WaitInterval> 是查询文件系统状态的间隔时间。

  • <Timeout> 是等待设备完成命令执行的超时时间。

  • <NFSClientIP> 是用于挂载 NFS 共享的 admin 网络中的后端 IP。

  • <CIFSClientUserName> 是用于挂载 CIFS 共享的 admin 网络中的后端用户名。

  • <CIFSClientUserPassword> 是用于挂载 CIFS 共享的 admin 网络中的后端密码。

后端配置

修改 <manila.conf> manila 配置文件并添加 share_driver 和 manila_huawei_conf_file 项。配置存储系统的示例

  • <share_driver> = manila.share.drivers.huawei.huawei_nas.HuaweiNasDriver

  • <manila_huawei_conf_file> = /etc/manila/manila_huawei_conf.xml

  • <driver_handles_share_servers> = True 或 False

注意

  • 如果 <driver_handles_share_servers> 为 True,则驱动程序将在 <Port> 中选择一个端口以创建 VLAN 和逻辑端口,用于每个租户网络。并且在创建共享时,应将具有 DHSS 额外规范的共享类型设置为 True。

  • 如果 <driver_handles_share_servers> 为 False,则将使用 <LogicalPortIP> 中的 IP。同样,在创建共享时,应将具有 DHSS 额外规范的共享类型设置为 False。

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

共享类型

创建共享时,可以指定共享类型以确定将在何处以及如何创建共享。如果未指定共享类型,则使用 manila 配置文件的 default_share_type 设置。

Manila 要求共享类型包含 driver_handles_share_servers 额外规范。这可确保共享将在支持请求的 driver_handles_share_servers(共享网络)功能的后端上创建。对于 Huawei 驱动程序,必须将其设置为 False。

要在具有特定类型磁盘的后端上创建共享,请在共享类型中包含 huawei_disk_type 额外规范。此额外规范的有效值是“ssd”、“sas”、“nl_sas”或“mix”。此共享将在具有匹配磁盘类型的后端上创建。

另一个常用的 manila 额外规范用于确定创建共享的位置是 share_backend_name。当在共享类型中定义此额外规范时,共享将在具有匹配 share_backend_name 的后端上创建。

Manila “共享类型”可能包含限定的额外规范,- 额外规范对后端驱动程序和 CapabilityFilter 具有重要意义。此提交使 Huawei 驱动程序报告以下布尔功能

  • capabilities:dedupe

  • capabilities:compression

  • capabilities:thin_provisioning

  • capabilities:huawei_smartcache

    • huawei_smartcache:cachename

  • capabilities:huawei_smartpartition

    • huawei_smartpartition:partitionname

  • capabilities:qos

    • qos:maxIOPS

    • qos:minIOPS

    • qos:minbandwidth

    • qos:maxbandwidth

    • qos:latency

    • qos:iotype

  • capabilities:huawei_sectorsize

调度程序将在使用 CapabilityFilter 并且共享类型使用上述额外规范之一时选择支持所需功能的宿主机

  • capabilities:dedupe=’<is> True’ 或 ‘<is> False’

  • capabilities:compression=’<is> True’ 或 ‘<is> False’

  • capabilities:thin_provisioning=’<is> True’ 或 ‘<is> False’

  • capabilities:huawei_smartcache=’<is> True’ 或 ‘<is> False’

    • huawei_smartcache:cachename=test_cache_name

  • capabilities:huawei_smartpartition=’<is> True’ 或 ‘<is> False’

    • huawei_smartpartition:partitionname=test_partition_name

  • capabilities:qos=’<is> True’ 或 ‘<is> False’

    • qos:maxIOPS=100

    • qos:minIOPS=10

    • qos:maxbandwidth=100

    • qos:minbandwidth=10

    • qos:latency=10

    • qos:iotype=0

  • capabilities:huawei_sectorsize=’<is> True’ 或 ‘<is> False’

    • huawei_sectorsize:sectorsize=4

  • huawei_disk_type=’ssd’ 或 ‘sas’ 或 ‘nl_sas’ 或 ‘mix’

<thin_provisioning> 将报告为 [True, False] 对于 Huawei 后端。

<dedupe> 将报告为 [True, False] 对于 Huawei 后端。

<compression> 将报告为 [True, False] 对于 Huawei 后端。

<huawei_smartcache> 将报告为 [True, False] 对于 Huawei 后端。将 SSD 添加到高速缓存池,并将池划分为多个缓存分区,以缓存随机和小读 I/O 中的热点数据。

<huawei_smartpartition> 将报告为 [True, False] 对于 Huawei 后端。将共享添加到名为“test_partition_name”的智能分区。根据服务特征分配缓存资源,确保关键服务的质量。

<qos> 将报告为 True 对于使用 QoS(服务质量)规范的后端。

<huawei_sectorsize> 将报告为 [True, False] 对于 Huawei 后端。

<huawei_disk_type> 将报告为“ssd”、“sas”、“nl_sas”或“mix”对于 Huawei 后端。

限制

Huawei 驱动程序具有以下限制

  • NFS 支持 IP 和 USER 访问类型。

  • NFS 仅支持 LDAP 域。

  • CIFS 仅支持 USER 访问类型。

  • CIFS 仅支持 AD 域。

The manila.share.drivers.huawei.huawei_nas 模块

用于 Huawei 存储阵列的 Huawei Nas 驱动程序。

class HuaweiNasDriver(*args, **kwargs)

基类: ShareDriver

Huawei 共享驱动程序。

执行与共享相关的命令。驱动程序版本历史记录

1.0 - Initial version.
1.1 - Add shrink share.
      Add extend share.
      Add manage share.
      Add share level(ro).
      Add smartx capabilities.
      Support multi pools in one backend.
1.2 - Add share server support.
      Add ensure share.
      Add QoS support.
      Add create share from snapshot.
1.3 - Add manage snapshot.
      Support reporting disk type of pool.
      Add replication support.
allow_access(context, share, access, share_server=None)

允许访问共享。

check_for_setup_error()

如果未满足先决条件,则返回错误。

create_replica(context, replica_list, new_replica, access_rules, replica_snapshots, share_server=None)

将活动副本复制到此后端的新的副本。

create_share(context, share, share_server=None)

创建共享。

create_share_from_snapshot(context, share, snapshot, share_server=None, parent_share=None)

从快照创建共享。

create_snapshot(context, snapshot, share_server=None)

创建快照。

delete_replica(context, replica_list, replica_snapshots, replica, share_server=None)

删除副本。

delete_share(context, share, share_server=None)

删除共享。

delete_snapshot(context, snapshot, share_server=None)

删除快照。

deny_access(context, share, access, share_server=None)

拒绝访问共享。

do_setup(context)

huawei nas 驱动程序在启动时执行的任何初始化。

ensure_share(context, share, share_server=None)

确保共享已导出。

extend_share(share, new_size, share_server=None)

扩展现有共享的大小。

参数:
  • share – 共享模型

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

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

get_backend_driver()
get_network_allocations_number()

获取要创建的网络接口数量。

get_pool(share)

返回共享所在的池名称。

manage_existing(share, driver_options)

管理现有共享。

manage_existing_snapshot(snapshot, driver_options)

管理现有快照。

promote_replica(context, replica_list, replica, access_rules, share_server=None, quiesce_wait_time=None)

将副本提升到“活动”副本状态。

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)

缩小现有共享的大小。

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

更新访问规则列表。

update_replica_state(context, replica_list, replica, access_rules, replica_snapshots, share_server=None)

更新副本的状态。