IBM Storage Virtualize 系列卷驱动程序¶
Storage Virtualize 系列卷管理驱动程序提供各种块存储服务。它为 OpenStack Compute 实例提供对 IBM Storage Virtualize 系列存储产品的访问。这些产品包括 SAN Volume Controller、Storwize 和 FlashSystem 系列成员,这些成员基于 IBM Storage Virtualize 构建(包括 FlashSystem 5xxx、7xxx、9xxx)。
有关特定产品文档,请参阅 IBM 文档。
注意
IBM Storage Virtualize 系列以前称为 IBM Storwize。因此,产品代码包含“Storwize”术语和前缀。
支持的操作¶
IBM Storage Virtualize 系列卷驱动程序支持以下块存储服务卷操作
创建、列出、删除、附加(映射)和分离(取消映射)卷。
创建、列出和删除卷快照。
将镜像复制到卷。
将卷复制到镜像。
克隆卷。
扩展卷。
重新类型化卷。
从快照创建卷。
创建、列出和删除一致性组。
创建、列出和删除一致性组快照。
修改一致性组(添加或删除卷)。
从源创建一致性组(源可以是 CG 或 CG 快照)。
管理现有卷。
对于复制后端的主机故障转移。
对于复制后端的主机故障恢复。
创建、列出和删除复制组。
启用、禁用复制组。
复制组的故障转移、故障恢复。
配置 Storage Virtualize 系列系统¶
网络配置¶
Storage Virtualize 系列系统必须配置为 iSCSI、光纤通道或两者兼有。
如果使用 iSCSI,每个 Storage Virtualize 系列节点应至少有一个 iSCSI IP 地址。Storage Virtualize 系列驱动程序使用与卷的首选节点(如果可用)关联的 iSCSI IP 地址来将卷附加到实例,否则它使用系统上可用的第一个 iSCSI IP 地址。驱动程序直接从存储系统获取 iSCSI IP 地址。您无需将这些 iSCSI IP 地址直接提供给驱动程序。
注意
如果使用 iSCSI,请确保计算节点具有对 Storage Virtualize 系列系统的 iSCSI 网络访问权限。
如果使用光纤通道 (FC),每个 Storage Virtualize 系列节点应至少配置一个 WWPN 端口。驱动程序使用所有可用的 WWPN 将卷附加到实例。驱动程序直接从存储系统获取 WWPN。您无需将这些 WWPN 直接提供给驱动程序。
注意
如果使用 FC,请确保计算节点具有对 Storage Virtualize 系列系统的 FC 连接。
iSCSI CHAP 身份验证¶
如果使用 iSCSI 进行数据访问,并且 storwize_svc_iscsi_chap_enabled 设置为 True,则驱动程序会将随机生成的 CHAP 密钥与 Storage Virtualize 系列上的所有主机关联。计算节点在创建 iSCSI 连接时使用这些密钥。
警告
CHAP 密钥会添加到现有主机以及新创建的主机。如果启用 CHAP 选项,主机将无法在没有生成的密钥的情况下访问存储。
注意
并非所有 OpenStack Compute 驱动程序都支持 CHAP 身份验证。请在使用前检查兼容性。
注意
CHAP 密钥从 OpenStack 块存储以明文形式传递到 Compute。应保护此通信以确保不会发现 CHAP 密钥。
配置存储池¶
IBM Storage Virtualize 系列驱动程序可以在多个池中分配卷。应提前创建池,并使用 storwize_svc_volpool_name 配置标志以逗号分隔列表的形式提供给驱动程序。有关完整配置标志列表,请参阅 cinder.conf 中的 Storage Virtualize 系列驱动程序选项。
配置驱动程序的用户身份验证¶
驱动程序需要访问 Storage Virtualize 系列系统的管理界面。驱动程序使用 SSH 与管理进行通信。应使用 san_ip 标志向驱动程序提供 Storage Virtualize 系列管理 IP,并应使用 san_ssh_port 标志提供管理端口。默认情况下,端口值配置为端口 22(SSH)。此外,您可以使用 storwize_san_secondary_ip 标志设置辅助管理 IP。
注意
确保运行 cinder-volume 管理驱动程序的计算节点具有对存储系统的 SSH 网络访问权限。
为了允许驱动程序与 Storage Virtualize 系列系统通信,您必须向驱动程序提供存储系统上的用户。驱动程序具有两种身份验证方法:基于密码的身份验证和 SSH 密钥对身份验证。用户应具有管理员角色。建议为管理驱动程序创建一个新用户。请咨询您的存储和安全管理员,了解首选的身份验证方法以及密码或 SSH 密钥应以安全方式存储的方式。
注意
在 Storage Virtualize 系列系统上创建新用户时,请确保该用户属于管理员组或具有管理员角色的其他组。
如果使用密码身份验证,请在 Storage Virtualize 系列系统上为用户分配密码。用于用户和密码的驱动程序配置标志分别是 san_login 和 san_password。
如果您正在使用 SSH 密钥对身份验证,请使用以下说明或任何其他方法创建 SSH 私钥和公钥。通过上传公钥将公钥与用户关联:在 Storage Virtualize 系列管理 GUI 的 选择文件 选项下选择 SSH 公钥。或者,您可以使用命令行界面关联 SSH 公钥;有关详细信息,请参阅 Storage Virtualize 系列文档。应使用 san_private_key 配置标志向驱动程序提供私钥。
使用 OpenSSH 创建 SSH 密钥对¶
您可以使用 OpenSSH 创建 SSH 密钥对,方法是运行
$ ssh-keygen -t rsa
该命令提示输入用于保存密钥对的文件。例如,如果您选择 key 作为文件名,则会创建两个文件:key 和 key.pub。 key 文件包含私钥 SSH 密钥,key.pub 包含公钥 SSH 密钥。
该命令还提示输入密码短语,该密码短语应为空。
私钥文件应使用 san_private_key 配置标志提供给驱动程序。应使用存储管理 GUI 或命令行界面将公钥上传到 Storage Virtualize 系列系统。
注意
确保 Cinder 具有对私钥文件的读取权限。
配置 Storage Virtualize 系列驱动程序¶
启用 Storage Virtualize 系列驱动程序¶
通过在 cinder.conf 文件中将 volume_driver 选项设置为 Storage Virtualize 系列驱动程序来设置卷驱动程序,如下所示
iSCSI
[svc1234]
volume_driver = cinder.volume.drivers.ibm.storwize_svc.storwize_svc_iscsi.StorwizeSVCISCSIDriver
san_ip = 1.2.3.4
san_login = superuser
san_password = passw0rd
storwize_svc_volpool_name = cinder_pool1
volume_backend_name = svc1234
FC
[svc1234]
volume_driver = cinder.volume.drivers.ibm.storwize_svc.storwize_svc_fc.StorwizeSVCFCDriver
san_ip = 1.2.3.4
san_login = superuser
san_password = passw0rd
storwize_svc_volpool_name = cinder_pool1
volume_backend_name = svc1234
复制配置¶
添加以下内容到后端规范以指定要复制到另一个存储:
replication_device = backend_id:rep_svc,
san_ip:1.2.3.5,
san_login:superuser,
san_password:passw0rd,
pool_name:cinder_pool1
backend_id 是远程存储的唯一名称,san_ip、san_login 和 san_password 是远程存储的身份验证信息。 pool_name 是复制目标卷的池名称。
注意
由于目前仅支持一个复制目标,因此每个后端存储只能配置一个 replication_device。
cinder.conf 中的 Storage Virtualize 系列驱动程序选项¶
以下选项指定所有卷的默认值。可以使用卷类型覆盖某些选项,如下所述。
注意
IBM Storage Virtualize 系列以前称为 IBM Storwize。因此,产品代码包含“Storwize”术语和前缀。
配置选项 = 默认值 |
描述 |
|---|---|
[DEFAULT] |
|
|
(字符串) SAN 控制器的 IP 地址。 |
|
(字符串) SAN 控制器的用户名。 |
|
(字符串) SAN 控制器的密码。 |
|
(字符串) 用于 SSH 身份验证的私钥文件的文件名。 |
|
(端口号) 与 SAN 配合使用的 SSH 端口。 |
|
(整数) SSH 连接超时时间(秒)。 |
|
(整数) 池中的最小 SSH 连接数。 |
|
(整数) 池中的最大 SSH 连接数。 |
|
(字符串) 指定如果 san_ip 无效或无法访问,则要使用的辅助管理 IP 或主机名。 |
|
(布尔值) 允许租户在创建时指定 QoS。 |
|
(整数) 指定在创建完整卷副本时要使用的 Storage Virtualize 系列 FlashCopy 复制速率。默认速率为 50,有效速率为 1-100。 |
|
(整数) 指定映射的 Storwize 清理速率。默认速率为 50,有效速率为 0-150。 |
|
(整数) 等待 FlashCopy 准备的最大秒数。 |
|
(布尔值) 配置 iSCSI 连接的 CHAP 身份验证。(默认:启用) |
|
(布尔值) 已弃用:此选项不再有任何影响。它已被弃用,将在下一个版本中删除。 |
|
(布尔值) 使用多路径连接(仅 FC;iSCSI 多路径由 Nova 控制)。 |
|
(字符串) 如果以拉伸集群模式运行,请指定存储镜像副本的池的名称。例如:“pool2” |
|
(布尔值) 卷的存储系统自动扩展参数(True/False)。 |
|
(布尔值) 卷的存储系统压缩选项。 |
|
(布尔值) 为卷启用 Easy Tier。 |
|
(整数) 卷的存储系统粒度参数(32/64/128/256) |
|
(整数) 分配卷的 I/O 组 |
|
(布尔值) 指定在创建期间不格式化卷。 |
|
(整数) 卷的存储系统空间效率参数(百分比)。 |
|
(整数) 卷容量警告的存储系统阈值(百分比)。 |
|
(列表) 卷的存储系统存储池的逗号分隔列表。 |
|
(字符串) 指定存储镜像副本的池的名称。例如:“pool2” |
|
(布尔值) 定义一个可选参数,用于在删除主卷或将其移动到非镜像关系时保留辅助卷在镜像关系中。 |
|
(字符串) 指定 HyperSwap 卷的对等池的名称。对等池必须存在于另一站点上。 |
|
(字典) 指定主机的站点信息。可以指定一个 WWPN 或多个 WWPN 用于主机。例如:storwize_preferred_host_site=site1:wwpn1,site2:wwpn2&wwpn3 或 storwize_preferred_host_site=site1:iqn1,site2:iqn2 |
|
(整数) 定义适用于循环模式为多模式的 Global Mirror 关系的循环周期。使用 multi cycling_mode 的 Global Mirror 关系最多每个周期执行一次完整循环。默认值为 300 秒,有效秒数为 60-86400。 |
|
(字符串) 指定要创建主机的端口集名称。 |
请注意以下事项
身份验证需要密码 (
san_password) 或 SSH 私钥 (san_private_key)。必须指定其中一个。如果同时指定两者,驱动程序仅使用 SSH 私钥。默认情况下,驱动程序创建稀疏分配的卷。
storwize_svc_vol_rsize标志定义了稀疏分配卷的初始物理分配百分比,或者如果设置为-1,驱动程序将创建完全分配的卷。有关可用选项的更多详细信息,请参阅 Storage Virtualize 系列文档。
使用卷类型进行放置¶
IBM Storage Virtualize 系列公开了可以添加到 extra specs 的卷类型中,并由过滤器调度器用于确定新卷放置位置的功能。请确保使用 capabilities: 前缀这些键,以指示调度器应使用它们。支持以下 extra specs
capabilities:volume_backend_name- 指定应创建卷的特定后端。后端名称是 Storage Virtualize 系列存储系统的名称(如在lssystem中所示)与池(mdisk 组)名称的连接。capabilities:volume_backend_name=myV7000_openstackpool
capabilities:compression_support- 根据压缩支持指定后端。应使用True值来请求支持压缩的后端,并使用False值来请求不支持压缩的后端。如果您对压缩支持没有约束,请不要设置此键。请注意,指定True并不会启用压缩;它仅请求将卷放置在支持压缩的后端上。示例语法capabilities:compression_support='<is> True'
注意
目前,指示 compression_license 支持的 compression_enabled() API 尚未完全正常运行。它并非在所有存储类型上都有效。将在后续版本中添加其他功能。
capabilities:easytier_support- 与compression_support键类似,但用于根据 Easy Tier 功能的支持情况进行指定。示例语法capabilities:easytier_support='<is> True'
capabilities:pool_name- 如果仅配置了多个池,则指定创建卷的特定池。pool_name 应该是 storwize_svc_volpool_name 标志中配置的一个值。示例语法capabilities:pool_name=cinder_pool2
配置每个卷创建选项¶
卷类型也可用于将选项传递给 IBM Storage Virtualize 系列驱动程序,从而覆盖配置文件中设置的默认值。与前述示例相反,其中使用 capabilities 范围将参数传递给 Cinder 调度器,可以使用 drivers 范围将选项传递给 Storage Virtualize 系列驱动程序。
Storage Virtualize 系列驱动程序支持以下 extra specs 键
rsize
警告
autoexpand
grainsize
compression
easytier
multipath
iogrp
mirror_pool
volume_topology
peer_pool
flashcopy_rate
clean_rate
cycle_period_seconds
这些键具有与配置文件中对应项相同的语义。它们的设置方式类似;例如,rsize=2 或 compression=False。
示例:卷类型¶
在以下示例中,我们创建一个卷类型来指定支持压缩的控制器,并启用压缩
$ openstack volume type create compressed
$ openstack volume type set --property capabilities:compression_support='<is> True' --property drivers:compression=True compressed
然后,我们可以使用此类型创建一个 50GB 卷
$ openstack volume create "compressed volume" --type compressed --size 50
在以下示例中,创建一个启用同步复制(metro mirror)的卷类型
$ openstack volume type create ReplicationType
$ openstack volume type set --property replication_type="<in> metro" \
--property replication_enabled='<is> True' --property volume_backend_name=svc234 ReplicationType
在以下示例中,我们创建一个卷类型以支持 stretch 集群卷或镜像卷
$ openstack volume type create mirror_vol_type
$ openstack volume type set --property volume_backend_name=svc1 \
--property drivers:mirror_pool=pool2 mirror_vol_type
卷类型可以用于向用户提供不同的
性能级别(例如,完全分配在 HDD 层上,使用 Easy Tier 进行 HDD-SDD 混合,或完全分配在 SSD 层上)
弹性级别(例如,在具有不同 RAID 级别的池中分配卷)
功能(例如,启用/禁用实时压缩、复制卷创建)
QOS¶
Storage Virtualize 系列驱动程序通过控制 I/O 量来为存储卷提供 QOS 支持。QOS 通过编辑 etc/cinder/cinder.conf 文件并将 storwize_svc_allow_tenant_qos 设置为 True 来启用。
有三种方法可以设置 Storage Virtualize 系列 IOThrottling 参数以用于存储卷
将
qos:IOThrottling键添加到 QOS 规范中,并将其与卷类型关联。将
qos:IOThrottling键添加到带有卷类型的额外规范中。将
qos:IOThrottling键添加到存储卷元数据中。
注意
如果您将具有 QOS 的卷类型更改为没有 QOS 的新卷类型,QOS 配置设置将被删除。
Storage Virtualize 系列驱动程序的运行注意事项¶
迁移卷¶
在 OpenStack 块存储的卷迁移功能上下文中,IBM Storage Virtualize 系列驱动程序启用了存储的虚拟化技术。当将卷从一个池迁移到另一个池时,该卷几乎会立即出现在目标池中,而存储会在后台移动数据。
注意
要启用此功能,参与给定卷迁移的两个池必须具有相同的值 extent_size。如果池的 extent_size 值不同,数据仍然会在池之间直接移动(非主机端复制),但操作将是同步的。
扩展卷¶
IBM Storage Virtualize 系列驱动程序允许扩展卷的大小,但仅适用于没有快照的卷。
快照和克隆¶
快照使用 FlashCopy 实现,不带后台复制(节省空间)。卷克隆(从现有卷创建的卷)使用 FlashCopy 实现,但启用了后台复制。这意味着卷克隆是独立的完整副本。在进行此后台复制时,尝试删除或扩展源卷将导致该操作等待复制完成。
卷重定型¶
IBM Storage Virtualize 系列驱动程序使您可以修改卷类型。当您修改卷类型时,您还可以更改这些额外的规范属性
rsize
警告
autoexpand
grainsize
compression
easytier
iogrp
nofmtdisk
mirror_pool
volume_topology
peer_pool
flashcopy_rate
cycle_period_seconds
注意
当您更改 rsize、grainsize 或 compression 属性时,卷副本将在阵列上异步同步。
注意
要更改 iogrp 属性,需要 IBM Storage Virtualize 系列固件版本 6.4.0 或更高版本。
复制操作¶
在卷类型中配置复制¶
仅当卷使用具有额外规范 replication_enabled 设置为 <is> True 的卷类型创建时,才会复制该卷。现在支持三种类型的复制,即 Global Mirror(异步)、带有变更卷的 Global Mirror(异步)和 Metro Mirror(同步)。可以通过具有额外规范 replication_type 设置为 <in> global、<in> gmcv 或 <in> metro 的卷类型来指定。如果未指定 replication_type,则将为复制创建 Global Mirror。
如果 replication_type 设置为 <in> gmcv,可以将 cycle_period_seconds 设置为执行具有多模式循环的 Global Mirror 关系的循环时间。默认值为 300。示例语法
$ cinder type-create gmcv_type
$ cinder type-key gmcv_type set replication_enabled='<is> True' \
replication_type="<in> gmcv" drivers:cycle_period_seconds=500
注意
最好在创建复制卷之前,在存储后端手动建立复制源存储和复制目标存储之间的伙伴关系。
故障转移主机¶
当主存储关闭时,设计了 failover-host 命令。
$ cinder failover-host cinder@svciscsi --backend_id target_svc_id
如果已执行故障转移命令并且已恢复主存储,则可以通过简单地将默认值指定为 backend_id 来执行故障恢复。
$ cinder failover-host cinder@svciscsi --backend_id default
注意
在执行故障恢复操作之前,请手动将复制目标卷上的数据同步到主卷上,并且仅在同步完成后才执行故障恢复,因为同步可能需要很长时间。如果不同步手动完成,Storage Virtualize 系列块存储服务驱动程序将执行同步并完成同步后执行故障恢复。
复制组¶
在创建复制组之前,应将键 consistent_group_replication_enabled 设置为 <is> True 的组规范设置为组类型中。用于创建组的卷类型必须启用复制,并且其 replication_type 应设置为 <in> global 或 <in> metro。“failover_group” api 允许在不故障转移整个主机的情况下对组进行故障转移和故障恢复。示例语法
创建复制组
$ cinder group-type-create rep-group-type-example
$ cinder group-type-key rep-group-type-example set consistent_group_replication_enabled='<is> True'
$ cinder type-create type-global
$ cinder type-key type-global set replication_enabled='<is> True' replication_type='<in> global'
$ cinder group-create rep-group-type-example type-global --name global-group
故障转移复制组
$ cinder group-failover-replication --secondary-backend-id target_svc_id group_id
故障恢复复制组
$ cinder group-failover-replication --secondary-backend-id default group_id
注意
可选地,allow-attached-volume 可用于故障转移正在使用的卷,但不建议故障转移/恢复正在使用的卷。如果用户对正在使用的卷执行故障转移操作,则在故障转移后卷状态将保持正在使用状态。但是,正在使用的复制卷将变为只读,因为主卷已更改为辅助侧,并且实例仍然连接到主卷。因此,请先分离复制卷,然后重新连接,如果用户想将正在使用的复制卷作为读写重新使用。
HyperSwap 卷¶
使用具有额外规范 drivers:volume_topology 设置为 hyperswap 的卷类型创建 HyperSwap 卷。要支持 HyperSwap 卷,需要 IBM Storage Virtualize 系列固件版本 7.6.0 或更高版本。将以下内容添加到后端配置中,以指定 HyperSwap 卷的主机首选站点。FC
storwize_preferred_host_site = site1:20000090fa17311e&ff00000000000001,
site2:20000089762sedce&ff00000000000000
iSCSI
storwize_preferred_host_site = site1:iqn.1993-08.org.debian:01:eac5ccc1aaa&iqn.1993-08.org.debian:01:be53b7e236be,
site2:iqn.1993-08.org.debian:01:eac5ccc1bbb&iqn.1993-08.org.debian:01:abcdefg9876w
site1 和 site2 是 Storage Virtualize 系列存储系统中使用的两个主机站点的名称。WWPN 和 IQN 是 Storage Virtualize 系列中用于主机映射的连接器。
$ cinder type-create hyper_type
$ cinder type-key hyper_type set drivers:volume_topology=hyperswap \
drivers:peer_pool=Pool_site2
注意
属性 rsize 被视为 HyperSwap 卷的 buffersize。HyperSwap 属性 iogrp 由存储选择。
使用具有组规范 hyperswap_group_enabled 设置为 <is> True 的组类型创建组作为 HyperSwap 组。