Dell EMC Unity 驱动程序

EMC 共享文件系统服务驱动程序框架 (EMCShareDriver) 利用 EMC 存储产品为 OpenStack 提供共享文件系统。EMC 驱动程序是一个基于插件的驱动程序,旨在利用不同的插件来管理不同的 EMC 存储产品。

Unity 插件管理 Unity 系统以提供共享文件系统。在此文档中,带有 Unity 插件的 EMC 驱动程序框架被称为 Unity 驱动程序。

此驱动程序通过 RESTful API 执行 Unity 上的操作。每个后端管理 Unity 的一个存储处理器。配置多个共享文件系统服务后端以管理多个 Unity 系统。

需求

  • Unity OE 4.1.x 或更高版本。

  • StorOps 1.1.0 或更高版本已安装在 Manila 节点上。

  • Unity 上已激活以下许可证

    • CIFS/SMB 支持

    • 网络文件系统 (NFS)

    • 稀疏配置

    • 光纤通道 (FC)

    • 互联网小型计算机系统接口 (iSCSI)

支持的共享文件系统和操作

详细来说,用户可以使用 EMC Unity 存储系统执行以下操作。

  • 创建/删除 NFS 共享。

  • 创建/删除 CIFS 共享。

  • 扩展共享的大小。

  • 缩小共享的大小。

  • 修改 NFS 共享的主机访问权限。

  • 修改 CIFS 共享的用户访问权限。

  • 创建/删除共享的快照。

  • 从快照创建新的共享。

  • 将共享恢复到快照。

  • 管理/取消管理共享服务器。

  • 管理/取消管理共享。

  • 管理/取消管理快照。

支持的网络拓扑

  • 扁平

    Unity 共享驱动程序完全支持这种类型,但是由于可以从其中创建的租户网络数量有限,因此限制了扁平网络。

  • VLAN

    我们建议在 Manila 中使用这种类型的网络拓扑。在大多数用例中,VLAN 用于隔离不同的租户并为每个租户提供隔离的网络。为了支持此功能,管理员需要在与 Unity 以太网端口连接的插槽中设置 Trunk 模式或允许来自该插槽的多个 VLAN。

  • VXLAN

    Unity 原生 VXLAN 尚不可用。但是,通过 Networking 和共享文件系统服务中的 HPB(分层端口绑定),Unity 可以与启用了 VXLAN 的网络环境共存。

预配置

在 Manila 节点上

需要 Python 库 storops 才能运行 Unity 驱动程序。使用 pip 命令安装它。您可能需要 root 权限才能安装 Python 库。

$ pip install storops

在 Unity 系统上

  1. 配置系统级别的 NTP 服务器。

    打开 Unity 系统的 Unisphere 并导航到

    Unisphere -> Settings -> Management -> System Time and NTP
    

    选择 启用 NTP 同步 并添加您的 NTP 服务器。

    Unity 系统和安全服务中使用的 Active Directory 域上的时间应保持同步。我们建议在 Unity 系统和 Active Directory 域上使用相同的 NTP 服务器。

  2. 配置系统级别的 DNS 服务器。

    打开 Unity 系统的 Unisphere 并导航到

    Unisphere -> Settings -> Management -> DNS Server
    

    选择 手动配置 DNS 服务器 地址 并添加您的 DNS 服务器。

后端配置

需要在 /etc/manila/manila.conf 中配置以下配置

share_driver = manila.share.drivers.dell_emc.driver.EMCShareDriver
emc_share_backend = unity
emc_nas_server = <management IP address of the Unity system>
emc_nas_login = <user with administrator privilege>
emc_nas_password = <password>
unity_server_meta_pool = <pool name>
unity_share_data_pools = <comma separated pool names>
unity_ethernet_ports = <comma separated ports list>
driver_handles_share_servers = True/False
unity_share_server = <name of NAS server in Unity system>
report_default_filter_function = True/False
  • emc_share_backend

    插件名称。将其设置为 Unity 驱动程序的 unity

  • emc_nas_server

    Unity 的管理 IP。

  • unity_server_meta_pool

    用于持久化 NAS 服务器元数据的池的名称。此选项是必需的。

  • unity_share_data_pools

    逗号分隔的列表,指定此后端要使用的池的名称。如果系统上的所有存储池都可以使用,则不要设置此选项。支持通配符。

    示例

    # Only use pool_1
    unity_share_data_pools = pool_1
    # Only use pools whose name stars from pool_
    unity_share_data_pools = pool_*
    # Use all pools on Unity
    unity_share_data_pools = *
    
  • unity_ethernet_ports

    逗号分隔的列表,指定 Unity 系统可以用于共享的以太网端口。如果所有以太网端口都可以使用,则不要设置此选项。支持通配符。Unity 共享驱动程序可以使用正常的以太网端口和链路聚合端口。

    示例

    # Only use spa_eth1
    unity_ethernet_ports = spa_eth1
    # Use port whose name stars from spa_
    unity_ethernet_ports = spa_*
    # Use all Link Aggregation ports
    unity_ethernet_ports = sp*_la_*
    # Use all available ports
    unity_ethernet_ports = *
    
  • driver_handles_share_servers

    Unity 驱动程序需要此选项设置为 TrueFalse。当值为 False 时,需要设置 unity_share_server

  • unity_share_server

    Unity 中的 NAS 服务器名称之一,用于在驱动程序处于 DHSS=False 模式时创建共享。

  • report_default_filter_function

    是否报告默认过滤器函数。默认值为 False。但是,此值将在未来的版本中更改为 True,以确保符合 Manila 的设计期望。因此,我们建议在部署中始终将此选项设置为 True 或 False,具体取决于您期望的行为。

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

支持的 MTU 大小

Unity 当前仅支持 1500 和 9000 作为 mtu 大小,用户可以从 Unity Unisphere 更改上述 mtu 大小

  1. 在 Unisphere 中,转到 设置访问,然后 以太网

  2. 双击以太网端口。

  3. 从下拉列表中选择 MTU 大小。

Unity 驱动程序将在共享服务器创建期间选择 mtu 等于共享网络 mtu 的端口。

IPv6 支持

Unity 驱动程序的 IPv6 支持是在 Queens 版本中引入的。此功能分为两部分

  1. 驱动程序能够管理 Neutron IPv6 网络中的共享或快照。

  2. 驱动程序可以使用其 IPv6 地址连接 Unity 管理接口。

IPv6 支持的预配置

需要在 /etc/manila/manila.conf 中配置以下参数以用于 Unity 驱动程序

network_plugin_ipv6_enabled = True

  • network_plugin_ipv6_enabled 指示已启用 IPv6。

如果您想使用 IPv6 地址连接 Unity,您应该使用 /net/if/mgmt uemcli 命令、mgmtInterfaceSettings RESTful api 或 Unity GUI 的系统设置来配置 IPv6 地址,并在 /etc/manila/manila.conf 中指定该地址

emc_nas_server = <IPv6 地址>

在驱动程序不创建和销毁共享服务器的模式(DHSS=False)下支持共享创建

要以这种模式创建文件共享,您需要

  1. 在 Unity 系统中创建带有网络接口的 NAS 服务器。

  2. /etc/manila/manila.conf 中设置 ‘driver_handles_share_servers=False’ 和 ‘unity_share_server’

    driver_handles_share_servers = False
    unity_share_server = <name of NAS server in Unity system>
    
  3. 指定具有 driver_handles_share_servers = False 额外规范的共享类型

    $ manila type-create ${share_type_name} False
    
  4. 创建共享。

    $ manila create ${share_protocol} ${size} --name ${share_name} --share-type ${share_type_name}
    

注意

不要在共享创建命令中指定共享网络,因为不会创建共享服务器。驱动程序将使用为共享创建指定的 unity_share_server。

快照支持

在 OpenStack 的 Mitaka 和 Newton 版本中,默认情况下为新创建的共享类型启用快照支持。从 Ocata 版本开始,必须将 snapshot_support 额外规范设置为 True 才能允许共享类型的快照。如果省略了 ‘snapshot_support’ 额外规范或将其设置为 False,用户将无法在此共享类型上创建快照。此功能分为两部分

  1. 驱动程序能够创建/删除共享的快照。

  2. 驱动程序能够从快照创建共享。

快照支持的预配置

需要使用共享类型配置以下附加规格。

  • snapshot_support = True

  • create_share_from_snapshot_support = True

对于新的共享类型,可以在创建共享类型时直接设置这些附加规格

$ manila type-create --snapshot_support True --create_share_from_snapshot_support True ${share_type_name} True

或者,可以使用以下命令更新已有的共享类型

$ manila type-key ${share_type_name} set snapshot_support=True
$ manila type-key ${share_type_name} set create_share_from_snapshot_support=True

对共享进行快照并从快照创建共享

首先,您需要从具有额外规范(snapshot_support=True,create_share_from_snapshot_support=True)的共享类型创建共享。然后使用命令对共享进行快照

$ manila snapshot-create ${source_share_name} --name ${target_snapshot_name} --description " "

在创建上一步的快照后,您可以从该快照创建共享。使用命令

$ manila create nfs 1 --name ${target_share_name} --metadata source=snapshot --description " " --snapshot-id ${source_snapshot_id}

管理现有的共享服务器

要管理 Unity 系统中现有的共享服务器,您需要

  1. 在 OpenStack 中创建网络、子网、端口(Unity 系统中 nas 服务器的 IP 地址)和共享网络。

    $ openstack network create ${network_name} --provider-network-type ${network_type}
    $ openstack subnet create ${subnet_name} --network ${network_name} --subnet-range ${subnet_range}
    $ openstack port create --network ${network_name} --fixed-ip subnet=${subnet_name},ip-address=${ip address} \
      ${port_name} --device-owner=manila:share
    $ manila share-network-create --name ${share_network_name} --neutron-net-id ${network_name} \
      --neutron-subnet-id ${subnet_name}
    
  2. 在 OpenStack 中管理共享服务器

    $ manila share-server-manage ${host} ${share_network_name} ${identifier}
    

    注意

    ‘${identifier}’ 是 Unity 系统中的 nas 服务器名称。

取消管理 Manila 共享服务器

要取消管理 OpenStack 中现有的共享服务器

$ manila share-server-unmanage ${share_server_id}

管理现有的共享

要管理 Unity 系统中现有的共享

  • 在 DHSS=True 模式下

    需要确保相关的共享服务器存在于 OpenStack 中,否则需要先管理共享服务器(检查 ‘支持管理共享服务器’ 步骤)。

    $ manila manage ${service_host} ${protocol} '${export_path}' --name ${share_name} --driver_options size=${share_size} \
      --share_type ${share_type} --share_server_id ${share_server_id}
    

    注意

    ‘${share_server_id}’ 是 OpenStack 中共享服务器的 ID。‘${share_type}’ 应该具有属性 ‘driver_handles_share_servers=True’。

  • 在 DHSS=False 模式下

    $ manila manage ${service_host} ${protocol} '${export_path}' --name ${share_name} --driver_options size=${share_size} \
      --share_type ${share_type}
    

    注意

    ‘${share_type}’ 应该具有属性 ‘driver_handles_share_servers=False’。

取消管理 Manila 共享

要取消管理 OpenStack 中现有的共享

$ manila unmanage ${share_id}

管理现有的共享快照

要管理 Unity 系统中现有的快照,您需要确保相关的共享实例存在于 OpenStack 中,否则需要先管理共享(检查 ‘支持管理共享’ 步骤)。

$ manila snapshot-manage --name ${name} ${share_name} ${provider_location} --driver_options size=${snapshot_size}

注意

‘${provider_location}’ 是 Unity 系统中的快照名称。‘${share_name}’ 是 OpenStack 中的共享名称或 ID。

取消管理 Manila 共享快照

要取消管理 OpenStack 中现有的快照

$ manila snapshot-unmanage ${snapshot_id}

支持的安全服务

Unity 共享驱动程序为 NFS 共享提供基于 IP 的身份验证方法支持,并为 CIFS 共享提供基于 用户 的身份验证方法支持。对于 CIFS 共享,Microsoft Active Directory 是唯一支持的安全服务。

IO 负载均衡

Unity 驱动程序根据选项 unity_ethernet_ports 自动分配每个存储处理器的文件接口。这平衡了 IO 流量。对于 unity_ethernet_ports 的推荐配置是指定每个存储处理器的平衡端口。例如

# Use eth2 from both SPs
unity_ethernet_ports = spa_eth2, spb_eth2

默认过滤器函数

Unity 不支持创建小于 3GB 大小的文件系统,如果用户创建的共享大小小于 3GB,Unity 驱动程序将在 Unity 中补充大小到 3GB。

Unity 驱动程序实现了 get_default_filter_function API 以报告默认过滤器函数,如果共享大小小于 3GB,Manila 将不会将共享创建调度到 Unity 后端。

Unity 驱动程序提供了一个选项 report_default_filter_function 以禁用或启用过滤器函数报告,默认值为禁用。

限制

Unity 驱动程序具有以下限制。

  • EMC Unity 不支持不同 VLAN 中的相同 IP。

  • 仅支持 NFS 的 IP 访问类型。

  • 仅支持 CIFS 的用户访问类型。

API 实现

以下驱动程序功能在插件中实现。

  • create_share:创建共享并根据使用的协议(NFS 或 CIFS)导出它。

  • create_share_from_snapshot:从快照创建共享 - 克隆快照。

  • delete_share:删除共享。

  • extend_share:扩展共享的最大大小。

  • shrink_share:缩小共享的最小大小。

  • create_snapshot:为指定的共享创建快照。

  • delete_snapshot:删除共享的快照。

  • update_access:恢复、添加或删除用户/主机对共享的访问权限。

  • allow_access:允许用户对 CIFS 共享进行访问(读写/只读)。允许主机对 NFS 共享进行访问(读写/只读)。

  • deny_access:删除用户对 CIFS 共享的访问权限(读写/只读)。删除主机对 NFS 共享的访问权限(读写/只读)。

  • ensure_share:检查共享是否存在。

  • update_share_stats:从 Unity 检索共享相关的统计信息。

  • get_network_allocations_number:返回创建 VIF 的网络分配数量。

  • setup_server:使用给定的网络参数设置和配置共享服务器。

  • teardown_server:拆除共享服务器。

  • revert_to_snapshot:将共享恢复到快照。

  • get_default_filter_function:报告默认过滤器函数。

驱动程序选项

此驱动程序特定的配置选项

Dell EMC Unity 共享驱动程序配置选项的说明

配置选项 = 默认值

描述

[DEFAULT]

unity_ethernet_ports = None

(List) 用逗号分隔的端口列表,可用于共享服务器接口。列表成员可以使用类 Unix 风格的 glob 表达式。

unity_server_meta_pool = None

(String) 用于持久化 NAS 服务器元数据的池。

unity_share_data_pools = None

(List) 用逗号分隔的池列表,可用于持久化共享数据。

unity_share_server = None

Unity 中的 NAS 服务器名称之一,当驱动程序处于 DHSS=False 模式时,用于创建共享。