Dell VNX 驱动程序

EMC VNX 驱动程序与配置的 VNX 阵列交互。它支持 iSCSI 和 FC 协议。

VNX cinder 驱动程序通过执行 Navisphere CLI (NaviSecCLI) 来执行卷操作,Navisphere CLI 是用于 VNX 的管理、诊断和报告功能的命令行界面。它也支持 iSCSI 和 FC 协议。

系统要求

  • VNX 块版本 5.32 或更高版本的运行环境。

  • 应为 VNX 激活 VNX 快照和稀疏配置许可。

  • Python 库 storops 版本 0.5.7 或更高版本,用于与 VNX 交互。

  • Navisphere CLI v7.32 或更高版本与驱动程序一起安装。

支持的操作

  • 创建、删除、附加和分离卷。

  • 创建、列出和删除卷快照。

  • 从快照创建卷。

  • 将镜像复制到卷。

  • 克隆卷。

  • 扩展卷。

  • 迁移卷。

  • 重新类型化卷。

  • 获取卷统计信息。

  • 创建和删除一致性组。

  • 创建、列出和删除一致性组快照。

  • 修改一致性组。

  • 高效的非破坏性卷备份。

  • 创建一个克隆的一致性组。

  • 从一致性组快照创建一致性组。

  • 支持复制 v2.1。

  • 支持通用组。

  • 将卷恢复到快照。

准备工作

本节包含准备块存储节点以使用 EMC VNX 驱动程序的说明。您应该安装 Navisphere CLI 并确保具有正确的区域配置。

安装 Navisphere CLI

Navisphere CLI 需要安装在 OpenStack 部署中的所有块存储节点上。您需要为不同的平台下载不同的版本

安装 Python 库 storops

storops 是一个 Python 库,它通过 Navisphere CLI 与 VNX 阵列交互。使用以下命令安装 storops

$ pip install storops

检查阵列软件

确保已安装以下软件以支持某些功能

特性

所需软件

全部

稀疏配置

全部

VNX 快照

支持 FAST 缓存

FASTCache

创建类型为 compressed 的卷

压缩

创建类型为 deduplicated 的卷

重复数据删除

所需软件

您可以在 软件 页面上的 存储系统属性 中检查您的阵列软件状态。其外观如下

../../../_images/emc-enabler.png

网络配置

对于 FC 驱动程序,FC 区域配置在主机和 VNX 之间正确配置。请参阅 将 FC 端口注册到 VNX 以供参考。

对于 iSCSI 驱动程序,请确保您的 VNX iSCSI 端口可被您的主机访问。请参阅 将 iSCSI 端口注册到 VNX 以供参考。

您可以使用 initiator_auto_registration = True 配置以避免手动注册端口。有关配置的详细信息,请参阅 后端配置 以供参考。

如果您正在尝试设置多路径,请参阅 多路径设置

后端配置

/etc/cinder/cinder.conf 文件中进行以下更改。

最小配置

这是一个最小后端配置的示例。有关每个选项的详细信息,请参阅以下部分。如果使用 iSCSI 协议,请设置 storage_protocol = iscsi

[DEFAULT]
enabled_backends = vnx_array1

[vnx_array1]
san_ip = 10.10.72.41
san_login = sysadmin
san_password = sysadmin
naviseccli_path = /opt/Navisphere/bin/naviseccli
volume_driver = cinder.volume.drivers.dell_emc.vnx.driver.VNXDriver
initiator_auto_registration = True
storage_protocol = fc

多个后端配置

这是一个最小后端配置的示例。有关每个选项的详细信息,请参阅以下部分。如果使用 iSCSI 协议,请设置 storage_protocol = iscsi

[DEFAULT]
enabled_backends = backendA, backendB

[backendA]
storage_vnx_pool_names = Pool_01_SAS, Pool_02_FLASH
san_ip = 10.10.72.41
storage_vnx_security_file_dir = /etc/secfile/array1
naviseccli_path = /opt/Navisphere/bin/naviseccli
volume_driver = cinder.volume.drivers.dell_emc.vnx.driver.VNXDriver
initiator_auto_registration = True
storage_protocol = fc

[backendB]
storage_vnx_pool_names = Pool_02_SAS
san_ip = 10.10.26.101
san_login = username
san_password = password
naviseccli_path = /opt/Navisphere/bin/naviseccli
volume_driver = cinder.volume.drivers.dell_emc.vnx.driver.VNXDriver
initiator_auto_registration = True
storage_protocol = fc

选项 storage_protocol 的值可以是 fciscsi,不区分大小写。

有关多个后端的更多详细信息,请参阅 配置多个存储后端

所需配置

VNX 存储处理器的 IP

指定 SP A 或 SP B IP 以进行连接

san_ip = <IP of VNX Storage Processor>

VNX 登录凭据

有两种方法可以指定凭据。

  • 使用纯文本用户名和密码。

    提供纯文本用户名和密码

    san_login = <VNX account with administrator role>
    san_password = <password for VNX account>
    storage_vnx_authentication_type = global
    

    选项 storage_vnx_authentication_type 的有效值是:global(默认)、localldap

  • 使用安全文件。

    这种方法避免在 cinder 配置文件中以纯文本形式存储密码。提供如下安全文件

    storage_vnx_security_file_dir = <path to security file>
    

请参阅 Unisphere CLI 用户指南或 通过安全文件进行身份验证,了解如何创建安全文件。

Unisphere CLI 的路径

指定 naviseccli 的绝对路径

naviseccli_path = /opt/Navisphere/bin/naviseccli

驱动程序的存储协议

  • 对于 FC 驱动程序,添加以下选项

    volume_driver = cinder.volume.drivers.dell_emc.vnx.driver.VNXDriver
    storage_protocol = fc
    
  • 对于 iSCSI 驱动程序,添加以下选项

    volume_driver = cinder.volume.drivers.dell_emc.vnx.driver.VNXDriver
    storage_protocol = iscsi
    

可选配置

VNX 池名称

指定要管理的池的列表,用逗号分隔。它们应已存在于 VNX 中。

storage_vnx_pool_names = pool 1, pool 2

如果未指定此值,将使用阵列中的所有池。

启动器自动注册

initiator_auto_registration 设置为 True 时,驱动程序将在卷附加期间自动将启动器注册到 VNX 阵列的所有工作目标端口(如果启动器尚未注册),前提是 io_port_list 未在 cinder.conf 文件中指定。

如果用户只想使用特定端口注册启动器,而不使用其他端口,则应禁用此功能。

如果将逗号分隔的列表提供给 io_port_list,则驱动程序仅将启动器注册到列表中指定的端口,并且仅返回属于 io_port_list 中目标端口的目标端口,而不是所有目标端口。

  • FC 端口示例

    io_port_list = a-1,B-3
    

    aB存储处理器,数字 13端口 ID

  • iSCSI 端口示例

    io_port_list = a-1-0,B-3-0
    

    aB存储处理器,第一个数字 13端口 ID,第二个数字 0虚拟端口 ID

注意

  • 无论它们是否在 io_port_list 中,已注册的端口将不会被取消注册,而是简单地被绕过。

  • 驱动程序将在启动时引发异常,如果 io_port_list 中的端口在 VNX 中不存在。

强制删除存储组中的卷

由于 OpenStack 超时问题,某些 available 卷可能仍保留在 VNX 阵列的存储组中。但是,VNX 阵列不允许用户删除处于存储组中的卷。引入了选项 force_delete_lun_in_storagegroup 以允许用户在这种棘手情况下删除 available 卷。

当在后端部分将 force_delete_lun_in_storagegroup 设置为 True 时,驱动程序会将卷移出存储组,然后删除它们,如果用户尝试删除 VNX 阵列上仍保留在存储组中的卷。

选项 force_delete_lun_in_storagegroup 的默认值为 True

稀疏配置中的超额订阅

超额订阅允许所有卷的容量总和(配置容量)大于池的总容量。

后端部分中的 max_over_subscription_ratio 是配置容量与总容量的比率。

选项 max_over_subscription_ratio 的默认值为 20.0,这意味着配置容量可以是总容量的 20 倍。如果此比率的值设置为大于 1.0,则配置容量可以超过总容量。

存储组自动删除

对于卷附加,驱动程序在 VNX 上为托管将消耗 VNX 块存储的虚拟机(使用计算节点的 hostname 作为存储组的名称)的每个计算节点创建一个存储组。所有附加到计算节点中虚拟机的卷都将放入存储组中。如果 destroy_empty_storage_group 设置为 True,则驱动程序将在其最后一个卷分离后删除空存储组。为了数据安全,除非 VNX 由单个块存储节点独占管理,否则不建议将 destroy_empty_storage_group=True,因为此行为需要一致的 lock_path 以进行操作同步。

启动器自动注销

启用存储组自动删除是此功能的先决条件。如果将 initiator_auto_deregistration 设置为 True,则驱动程序将在删除存储组后注销主机的所有 FC 和 iSCSI 启动器。

FC SAN 自动分区

当配置了 ZoneManager 并且在 cinder.conf 中将 zoning_mode 设置为 fabric 时,EMC VNX 驱动程序支持 FC SAN 自动分区。有关 ZoneManager 配置,请参阅 光纤通道区域管理器

卷号阈值

在 VNX 中,系统可以创建的池卷数量有限制。当达到限制时,即使存储池中仍有剩余容量,也无法创建更多池卷。换句话说,如果调度程序将卷创建请求发送到已用完池卷数量限制的后端,则创建将失败。

选项 check_max_pool_luns_threshold 的默认值为 False。当 check_max_pool_luns_threshold=True 时,基于池的后端将检查限制,如果达到限制,将向调度程序报告 0 个可用容量。因此,调度程序将能够跳过这种耗尽池卷数量的基于池的后端。

注意

从 Queens 开始,check_max_pool_luns_threshold 已过时。行为就像将 check_max_pool_luns_threshold 设置为 True 一样。

iSCSI 启动器

iscsi_initiators 是 OpenStack 计算和块存储节点上 iSCSI 启动器端口的 IP 地址的字典,这些节点希望通过 iSCSI 连接到 VNX。如果配置此选项,驱动程序将利用此信息在附加卷时为启动器找到可访问的 iSCSI 目标门户。否则,iSCSI 目标门户将以相对随机的方式选择。

注意

此选项仅对 iSCSI 驱动程序有效。

这是一个示例。VNX 将连接 host110.0.0.110.0.0.2。它将连接 host210.0.0.3

键名(示例中的 host1)应是 hostname 命令的输出。

iscsi_initiators = {"host1":["10.0.0.1", "10.0.0.2"],"host2":["10.0.0.3"]}

默认超时

指定 LUN 迁移、LUN 创建等操作的超时时间(分钟)。例如,LUN 迁移通常是一个耗时的操作,具体取决于 LUN 大小和阵列的负载。可以在特定部署中设置上限,以避免不必要的长时间等待。

此选项的默认值为 infinite

default_timeout = 60

每个存储组的最大 LUN 数量

max_luns_per_storage_group 指定存储组中的最大 LUN 数量。默认值为 255。这也是 VNX 支持的最大值。

忽略池满阈值

如果将 ignore_pool_full_threshold 设置为 True,驱动程序即使在池的满阈值被达到时也会强制创建 LUN。默认值为 False

异步迁移的默认值

选项 vnx_async_migrate 用于设置后端异步迁移的默认值。如果未在 cinder.conf 中设置此选项,则其默认值为 True,以保持兼容性。如果卷的元数据中未设置 async_migrate,将使用此选项的值。否则,元数据中的 async_migrate 值将覆盖此选项的值。有关更多详细信息,请参阅 异步迁移支持

额外的规格选项

额外的规格用于在块存储中创建的卷类型中,作为卷的首选属性。

块存储调度程序将使用额外的规格来查找适合该卷的后端,并且块存储驱动程序将基于额外规格指定的属性来创建卷。

使用以下命令创建卷类型

$ openstack volume type create demoVolumeType

使用以下命令更新卷类型的额外规格

$ openstack volume type set --property provisioning:type=thin --property thick_provisioning_support='<is> True' demoVolumeType

以下部分描述了 VNX 额外的键。

配置类型

  • 键:provisioning:type

  • 可能的值

    • 厚配置

      卷已完全配置。

      运行以下命令以创建一个 thick 卷类型

      $ openstack volume type create ThickVolumeType
      $ openstack volume type set --property provisioning:type=thick --property thick_provisioning_support='<is> True' ThickVolumeType
      
    • 精简配置

      卷是虚拟配置的。

      运行以下命令以创建一个 thin 卷类型

      $ openstack volume type create ThinVolumeType
      $ openstack volume type set --property provisioning:type=thin --property thin_provisioning_support='<is> True' ThinVolumeType
      
    • 去重

      卷是 thin 并且已启用去重。管理员应前往 VNX 配置系统级别的去重设置。要创建一个去重卷,必须在 VNX 上激活 VNX 去重许可证,并指定 deduplication_support=True 以让块存储调度程序找到合适的卷后端。

      运行以下命令以创建一个 deduplicated 卷类型

      $ openstack volume type create DeduplicatedVolumeType
      $ openstack volume type set --property provisioning:type=deduplicated --property deduplicated_support='<is> True' DeduplicatedVolumeType
      
    • compressed

      卷是 thin 并且已启用压缩。管理员应前往 VNX 配置系统级别的压缩设置。要创建一个压缩卷,必须在 VNX 上激活 VNX 压缩许可证,并使用 compression_support=True 以让块存储调度程序找到一个卷后端。VNX 不支持在压缩卷上创建快照。

      运行以下命令以创建一个 compressed 卷类型

      $ openstack volume type create CompressedVolumeType
      $ openstack volume type set --property provisioning:type=compressed --property compression_support='<is> True' CompressedVolumeType
      
  • 默认值:thick

注意

provisioning:type 替换了旧的规格键 storagetype:provisioning。后者自 Mitaka 版本发布以来已过时。

存储分层支持

  • 键:storagetype:tiering

  • 可能的值

    • StartHighThenAuto

    • Auto

    • HighestAvailable

    • LowestAvailable

    • NoMovement

  • 默认值:StartHighThenAuto

VNX 支持完全自动化的存储分层,这需要 VNX 上激活 FAST 许可证。OpenStack 管理员可以使用额外的规格键 storagetype:tiering 来设置卷的分层策略,并使用键 fast_support='<is> True' 让块存储调度程序找到管理具有激活 FAST 许可证的 VNX 的卷后端。以下是额外规格键 storagetype:tiering 支持的五个值

运行以下命令以使用分层策略创建卷类型

$ openstack volume type create ThinVolumeOnAutoTier
$ openstack volume type set --property provisioning:type=thin --property storagetype:tiering=Auto --property fast_support='<is> True' ThinVolumeOnAutoTier

注意

分层策略不能应用于去重卷。去重 LUN 的分层策略与池的设置对齐。

FAST 缓存支持

  • 键:fast_cache_enabled

  • 可能的值

    • True

    • False

  • 默认值:False

VNX 具有 FAST 缓存功能,这需要在 VNX 上激活 FAST 缓存许可证。当指定 <is> True 时,将在启用 FAST 缓存的后端上创建卷。

池名称

  • 键:pool_name

  • 可能的值:由 cinder 管理的存储池的名称

  • 默认值:无

如果用户想在一个后端管理的多个池中的某个存储池上创建卷,则应首先创建一个具有指定存储池的额外规格的卷类型,然后用户可以使用此卷类型来创建卷。

运行以下命令以创建卷类型

$ openstack volume type create HighPerf
$ openstack volume type set --property pool_name=Pool_02_SASFLASH --property volume_backend_name=vnx_41 HighPerf

过时的额外规格

注意

请勿 使用以下过时的额外规格键

  • storagetype:provisioning

  • storagetype:pool

强制分离

用户可以使用 os-force_detach 操作从所有已连接的主机分离卷。有关更多详细信息,请参阅 https://docs.openstack.org/api-ref/block-storage/v3/?expanded=force-detach-a-volume-detail#force-detach-a-volume

高级功能

快照复制

  • 元数据键:snapcopy

  • 可能的值

    • Truetrue

    • Falsefalse

  • 默认值:False

VNX 驱动程序支持快照复制,这可以加速创建复制卷的过程。

默认情况下,驱动程序将使用 异步迁移支持,这将启动 VNX 迁移会话。当使用快照复制时,驱动程序会创建快照并将其挂载为卷,这两种操作对于大型卷来说即使是瞬时的。

要启用此功能,请在创建克隆卷或从快照创建卷时附加 --metadata snapcopy=True

$ cinder create --source-volid <source-void> --name "cloned_volume" --metadata snapcopy=True

或者

$ cinder create --snapshot-id <snapshot-id> --name "vol_from_snapshot" --metadata snapcopy=True

新创建的卷是快照复制而不是完全复制。如果需要完全复制,可以使用重定型或迁移将快照复制卷转换为完全复制卷,这可能需要花费一些时间。

可以通过显示其元数据来确定卷是快照复制卷还是完全复制卷。如果元数据中的 snapcopyTruetrue,则该卷是快照复制卷。否则,它是一个完全复制卷。

$ cinder metadata-show <volume>

Constraints

  • 从单个源卷创建的快照复制卷的数量在任何时候都限制为 255 个。

  • 具有快照复制卷的源卷无法删除或迁移。

  • snapcopy 卷将在主机辅助或存储辅助迁移后更改为完全复制卷。

  • 由于 VNX 限制,snapcopy 卷无法添加到 consisgroup。

高效的非破坏性卷备份

块存储中非破坏性卷备份的默认实现效率不高,因为在备份期间会创建一个克隆卷。

高效的备份方法是为卷创建一个快照,并将此快照(VNX 中的挂载点)连接到块存储主机进行卷备份。这样可以消除卷克隆中涉及的迁移时间。

Constraints

  • 如果卷状态为 in-use,则不允许对 snap-copy 卷进行备份创建,因为无法从此卷拍摄快照。

可配置的迁移速率

VNX cinder 驱动程序利用 VNX 的 LUN 迁移。LUN 迁移涉及于克隆、迁移、重定型和从快照创建卷。当管理员在卷的 metadata 中设置 migrate_rate 时,VNX 驱动程序可以使用指定的速率启动迁移。 migrate_rate 的可用值是 highasaplowmedium

以下是将 migrate_rate 设置为 asap 的示例

$ cinder metadata <volume-id> set migrate_rate=asap

设置后,涉及 VNX LUN 迁移的任何 cinder 卷操作都将采用该值作为迁移速率。要将迁移速率恢复为默认值,请按以下方式取消设置元数据

$ cinder metadata <volume-id> unset migrate_rate

注意

当系统处于生产状态时,请勿使用 asap 迁移速率,因为正常的宿主机 I/O 可能会中断。仅在系统离线(没有宿主机级别的 I/O)时才使用 asap。

复制 v2.1 支持

Cinder 在 Mitaka 中引入了复制 v2.1 支持,它支持特定后端的回滚和回退复制。在 VNX cinder 驱动程序中,使用 **MirrorView** 设置卷的复制。

要启用此功能,需要在 cinder.conf 中设置配置如下

replication_device = backend_id:<secondary VNX serial number>,
                     san_ip:192.168.1.2,
                     san_login:admin,
                     san_password:admin,
                     naviseccli_path:/opt/Navisphere/bin/naviseccli,
                     storage_vnx_authentication_type:global,
                     storage_vnx_security_file_dir:

当前,仅支持同步模式 **MirrorView**,并且一个卷只能有一个辅助存储系统。因此,驱动程序配置部分中只能有一个 replication_device

要创建启用了复制的卷,需要创建一个卷类型

$ openstack volume type create replication-type
$ openstack volume type set --property replication_enabled="<is> True" replication-type

然后使用上述卷类型创建卷

$ openstack volume create replication-volume --type replication-type --size 1

支持的操作

  • 创建卷

  • 创建克隆卷

  • 从快照创建卷

  • 回滚卷

    $ cinder failover-host --backend_id <secondary VNX serial number> <hostname>
    
  • 回退卷

    $ cinder failover-host --backend_id default <hostname>
    

需求

  • 2 个 VNX 系统必须位于同一域中。

  • 对于 iSCSI MirrorView,用户需要在 Cinder 中启用复制之前设置 iSCSI 连接。

  • 对于 FC MirrorView,用户需要将 2 个 VNX 系统中的特定 FC 端口一起分区。

  • 两个系统上安装了 MirrorView Sync 启用器(**MirrorView/S**)。

  • 两个 VNX 系统上都启用了写入意图日志。

有关如何配置的更多信息,请参阅:MirrorView-Knowledgebook:-Releases-30-–-33

异步迁移支持

VNX Cinder 驱动程序现在支持在卷克隆期间进行异步迁移。

驱动程序现在默认使用异步迁移作为从源创建卷的默认克隆方法。驱动程序将在 VNX 上启动迁移会话后立即返回,这大大减少了可用卷的时间。

要禁用此功能,用户需要执行以下操作之一

  • cinder.conf 中为后端配置 vnx_async_migrate = False,然后重新启动 Cinder 服务。

  • 在从源创建新卷时添加 --metadata async_migrate=False

请注意,当同时设置两者时,元数据中的 async_migrate 会覆盖选项 vnx_async_migrate

Constraints

  • 在迁移完成之前,无法从源卷创建快照,这可能会影响后续从同一源卷创建的克隆。典型的受影响用例是,在通过克隆卷 0 创建卷 1 后立即通过克隆卷 1 创建卷 2。为此,建议用户执行以下操作之一

    1. 等待第一次克隆完成,或

    2. 通过克隆卷 0 而不是卷 1 创建卷 2,或

    3. 使用 --metadata async_migrate=False 创建卷 1。

最佳实践

多路径设置

建议启用多路径卷访问以实现强大的数据访问。主要配置包括

  1. 在托管计算和 cinder-volume 服务的节点上安装 multipath-toolssysfsutilssg3-utils。请查阅操作系统手册以获取特定于系统分发的安装步骤。对于基于 Red Hat 的发行版,它们应该是 device-mapper-multipathsysfsutilssg3_utils

  2. 在每个 FC/iSCSI 后端的 cinder.conf 文件中指定 use_multipath_for_image_xfer=true

  3. nova.conf 文件的 libvirt 部分中指定 volume_use_multipath=True。此选项对于 iSCSI 和 FC 驱动程序都有效。在 Newton 之前的版本中,该选项称为 iscsi_use_multipath

对于 multipath-tools,以下是 EMC 推荐的 /etc/multipath.conf 文件的示例。

user_friendly_names 未在配置中指定,因此它将采用默认值 no。不建议将其设置为 yes,因为它可能会导致 VM 实时迁移等操作失败。

blacklist {
    # Skip the files under /dev that are definitely not FC/iSCSI devices
    # Different system may need different customization
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^hd[a-z][0-9]*"
    devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"

    # Skip LUNZ device from VNX
    device {
        vendor "DGC"
        product "LUNZ"
        }
}

defaults {
    user_friendly_names no
    flush_on_last_del yes
}

devices {
    # Device attributed for EMC CLARiiON and VNX series ALUA
    device {
        vendor "DGC"
        product ".*"
        product_blacklist "LUNZ"
        path_grouping_policy group_by_prio
        path_selector "round-robin 0"
        path_checker emc_clariion
        features "1 queue_if_no_path"
        hardware_handler "1 alua"
        prio alua
        failback immediate
    }
}

注意

当在 OpenStack 中使用多路径时,由于各种问题(Bug 1336683 是一个典型示例),Nova-Compute 节点上可能会出现多路径故障设备。

尚未找到完全避免故障设备的方法。 faulty_device_cleanup.py 在使用 VNX iSCSI 存储时可以缓解此问题。 云管理员可以将脚本部署到所有 Nova-Compute 节点,并使用 CRON 作业定期在每个 Nova-Compute 节点上运行该脚本,以便故障设备不会停留太久。 请参阅: VNX 故障设备清理 以获取详细用法和脚本。

限制和约束

iSCSI 端口缓存

EMC VNX iSCSI 驱动程序缓存 iSCSI 端口信息,因此用户应在更改 iSCSI 端口配置后重新启动 cinder-volume 服务或等待一段时间(由 cinder.conf 文件中的 periodic_interval 配置),然后才能进行任何卷附加操作。 否则,由于使用了旧的 iSCSI 端口配置,附加可能会失败。

不支持带有快照的卷扩展

VNX 不支持扩展带有快照的厚卷。 如果用户尝试扩展带有快照的卷,则卷的状态将更改为 error_extending

在计算节点上部署 cinder 的限制

如果使用 cinder upload-to-image --force True 针对正在使用的卷,则不建议在计算节点上部署驱动程序。 否则,cinder upload-to-image --force True 将终止虚拟机实例对该卷的数据访问。

VNX 中的存储组与主机名

当驱动程序注意到没有将主机名作为存储组名称的现有存储组时,它将创建存储组,并将计算节点或块存储节点的注册发起程序添加到存储组中。

如果驱动程序注意到存储组已存在,它将假定已将注册发起程序也放入其中,并跳过上述操作以提高性能。

建议存储管理员不要手动创建存储组,而是依赖驱动程序进行准备。 如果存储管理员需要出于某些特殊要求手动创建存储组,则应将正确的注册发起程序也放入存储组中(否则,后续的卷附加操作将失败)。

EMC 存储辅助卷迁移

EMC VNX 驱动程序支持存储辅助卷迁移,当用户使用 cinder migrate --force-host-copy False <volume_id> <host>cinder migrate <volume_id> <host> 启动迁移时,cinder 将尝试利用 VNX 的本机卷迁移功能。

在以下情况下,将不会触发 VNX 存储辅助卷迁移

  • in-use 卷迁移在具有不同存储协议的后端之间,例如 FC 和 iSCSI。

  • 卷将在阵列之间迁移。

附录

通过安全文件进行身份验证

当驱动程序连接到 VNX 系统时,需要 VNX 凭据。 支持 globallocalldap 范围内的凭据。 有两种方法可以提供凭据。

推荐的方法是使用 Navisphere CLI 安全文件来提供凭据,这样可以避免在配置文件中提供纯文本凭据。 以下是如何执行此操作的说明。

  1. 找出 cinder-volume 进程的 Linux 用户 ID。 假设 cinder-volume 服务由帐户 cinder 运行。

  2. 以 root 用户身份运行 su

  3. /etc/passwd 文件中,将 cinder:x:113:120::/var/lib/cinder:/bin/false 更改为 cinder:x:113:120::/var/lib/cinder:/bin/bash(此临时更改是为了使步骤 4 起作用)。

  4. cinder 用户的身份将凭据保存到安全文件(假设数组凭据在 global 范围内为 admin/admin)。 在下面的命令中,使用 -secfilepath 选项指定保存安全文件的位置。

    # su -l cinder -c \
      '/opt/Navisphere/bin/naviseccli -AddUserSecurity -user admin -password admin -scope 0 -secfilepath <location>'
    
  5. cinder:x:113:120::/var/lib/cinder:/bin/bash/etc/passwd 文件中改回 cinder:x:113:120::/var/lib/cinder:/bin/false

  6. cinder.conf 文件(通常是 /etc/cinder/cinder.conf 文件)中删除凭据选项 san_loginsan_passwordstorage_vnx_authentication_type。 添加选项 storage_vnx_security_file_dir 并将其值设置为上述步骤中生成的安全文件的目录路径。 如果在上述步骤中未使用 -secfilepath,则省略此选项。

  7. 重新启动 cinder-volume 服务以验证更改。

使用 VNX 注册 FC 端口

仅当 initiator_auto_registration=False 时才需要此配置。

要访问 VNX 存储,如果未启用发起程序自动注册,则计算节点应首先在 VNX 上注册。

要执行 Copy Image to VolumeCopy Volume to Image 操作,运行 cinder-volume 服务的节点(块存储节点)也必须在 VNX 上注册。

以下步骤适用于计算节点。 同样也请对块存储节点执行相同的步骤(如果启用了发起程序自动注册,则可以跳过这些步骤)。

  1. 假设 20:00:00:24:FF:48:BA:C2:21:00:00:24:FF:48:BA:C2 是计算节点的主机名为 myhost1 且 IP 为 10.10.61.1 的 FC 发起程序端口名称的 WWN。 在 Unisphere 中注册 20:00:00:24:FF:48:BA:C2:21:00:00:24:FF:48:BA:C2

  2. 登录到 Unisphere,转到 FNM0000000000 > Hosts > Initiators

  3. 刷新并等待直到发起程序 20:00:00:24:FF:48:BA:C2:21:00:00:24:FF:48:BA:C2 与 SP 端口 A-1 出现在。

  4. 单击 Register 按钮,选择 CLARiiON/VNX 并输入主机名(这是 hostname 命令的输出)和 IP 地址

    • 主机名:myhost1

    • IP:10.10.61.1

    • 单击 Register

  5. 然后,主机 10.10.61.1 也将出现在 Hosts > Host List 下。

  6. 如果需要,使用更多端口注册 wwn

使用 VNX 注册 iSCSI 端口

仅当 initiator_auto_registration=False 时才需要此配置。

要访问 VNX 存储,如果未启用发起程序自动注册,则计算节点应首先在 VNX 上注册。

要执行 Copy Image to VolumeCopy Volume to Image 操作,运行 cinder-volume 服务的节点(块存储节点)也必须在 VNX 上注册。

以下步骤适用于计算节点。 同样也请对块存储节点执行相同的步骤(如果启用了发起程序自动注册,则可以跳过这些步骤)。

  1. 在 IP 地址为 10.10.61.1 且主机名为 myhost1 的计算节点上,执行以下命令(假设 10.10.61.35 是 iSCSI 目标)

    1. 启动节点上的 iSCSI 发起程序服务

      # /etc/init.d/open-iscsi start
      
    2. 发现 VNX 上的 iSCSI 目标端口

      # iscsiadm -m discovery -t st -p 10.10.61.35
      
    3. 更改目录到 /etc/iscsi

      # cd /etc/iscsi
      
    4. 找出节点的 iqn

      # more initiatorname.iscsi
      
  2. 使用与 SPA 端口对应的目标从计算节点登录到 VNX

    # iscsiadm -m node -T iqn.1992-04.com.emc:cx.apm01234567890.a0 -p 10.10.61.35 -l
    
  3. 假设 iqn.1993-08.org.debian:01:1a2b3c4d5f6g 是计算节点的发起程序名称。 在 Unisphere 中注册 iqn.1993-08.org.debian:01:1a2b3c4d5f6g

    1. 登录到 Unisphere,转到 FNM0000000000 > Hosts > Initiators

    2. 刷新并等待直到发起程序 iqn.1993-08.org.debian:01:1a2b3c4d5f6g 与 SP 端口 A-8v0 出现在。

    3. 单击 Register 按钮,选择 CLARiiON/VNX 并输入主机名(这是 hostname 命令的输出)和 IP 地址

      • 主机名:myhost1

      • IP:10.10.61.1

      • 单击 Register

    4. 然后,主机 10.10.61.1 也将出现在 Hosts > Host List 下。

  4. 在节点上注销 iSCSI

    # iscsiadm -m node -u
    
  5. 使用与 SPB 端口对应的目标从计算节点登录到 VNX

    # iscsiadm -m node -T iqn.1992-04.com.emc:cx.apm01234567890.b8 -p 10.10.61.36 -l
    
  6. Unisphere 中,使用 SPB 端口注册发起程序。

  7. 在节点上注销 iSCSI

    # iscsiadm -m node -u
    
  8. 如果需要,使用更多端口注册 iqn