IBM Storage Driver for OpenStack¶
介绍¶
IBM Storage Driver for OpenStack 是 OpenStack 云环境中的一个软件组件,它能够利用受支持的 IBM 存储系统提供的存储资源。
该驱动程序已在存储系统上验证,具体细节请参阅下面的“受支持的存储系统”部分。
在驱动程序配置在 OpenStack Cinder 节点上之后,Cinder 节点可以将存储卷分配给 Nova 节点。Nova 节点上的虚拟机随后可以使用这些存储资源。
概念图¶
下图说明了 IBM 存储系统如何连接到 OpenStack 云环境,并在 IBM Storage Driver for OpenStack 配置在 OpenStack Cinder 节点上时提供存储资源。OpenStack 云通过光纤通道连接到 IBM 存储系统。远程云用户可以从 OpenStack 云发出存储资源请求。这些请求由 IBM Storage Driver 透明地处理,该驱动程序与 IBM 存储系统通信并控制其上的存储卷。然后,IBM 存储资源提供给 OpenStack 云中的 Nova 节点。
兼容性和要求¶
本节指定 IBM Storage Driver for OpenStack 的兼容性和要求。
受支持的存储系统¶
IBM Storage Driver for OpenStack 支持 IBM 存储系统,具体细节请参阅下表。
存储系统 |
微代码版本 |
连接性 |
|---|---|---|
IBM DS8870 |
7.5 SP4 或更高版本,带有 RESTful API 补丁的 7.5 |
光纤通道 (FC) |
IBM DS8880 |
8.1 或更高版本 |
光纤通道 (FC) |
Copy Services 许可证¶
Copy Services 功能可帮助您实施存储解决方案,通过提供映像缓存、复制和克隆功能,使您的业务全天候运行。Copy Services 许可证基于参与 Copy Services 功能的卷的可用容量。
Copy Services 许可证适用于以下许可证范围:FB 和 ALL(FB 和 CKD)。
Copy Services 许可证包括以下功能
Global Mirror
Metro Mirror
Metro/Global Mirror
Point-in-Time Copy/FlashCopy®
z/OS® Global Mirror
z/OS Metro/Global Mirror 增量重同步 (RMZ)
Copy Services 许可证功能码以递增的方式订购,最高可达特定容量。例如,如果您需要 160 TB 的容量,请订购 10 个功能码 8251(每个 10 TB,最高 100 TB 容量),以及 4 个功能码 8252(每个 15 TB,额外 60 TB)。
Copy Services 许可证包括以下功能码。
功能码 |
已许可功能指示符的功能码 |
|---|---|
8250 |
CS - 未激活 |
8251 |
CS - 10 TB(最高 100 TB 容量) |
8252 |
CS - 15 TB(从 100.1 TB 到 250 TB 容量) |
8253 |
CS - 25 TB(从 250.1 TB 到 500 TB 容量) |
8254 |
CS - 75 TB(从 500.1 TB 到 1250 TB 容量) |
8255 |
CS - 175 TB(从 1250.1 TB 到 3000 TB 容量) |
8256 |
CS - 300 TB(从 3000.1 TB 到 6000 TB 容量) |
8260 |
CS - 500 TB(从 6000.1 TB 到 10,000 TB 容量) |
订购 Copy Services 许可证时,适用以下订购规则
应根据参与一个或多个 Copy Services 关系的 所有卷的总可用容量来订购 Copy Services 许可证。
已许可的授权必须等于或小于分配给参与 Copy Services 操作的卷的总可用容量。
必须为源(主)和目标(辅助)存储系统购买功能。
OpenStack Cinder 和 Nova 节点上所需的软件¶
IBM Storage Driver 使用 OpenStack Cinder 和 Nova-compute 节点上的以下软件。
软件 |
安装在 |
|---|---|
Ubuntu Server (16.04), x64 Red Hat Enterprise Linux (RHEL) 7.x, x64 CentOS Linux 7.x, x64 KVM for IBM z Systems |
所有 OpenStack Cinder 节点 |
IBM Storage Host Attachment Kit for Linux |
所有 OpenStack Cinder 和 Nova 计算节点,这些节点连接到存储系统并使用 RHEL 7.x 或 CentOS Linux 7.x |
Linux 补丁包 |
所有 OpenStack Cinder 节点 |
sysfsutils 实用程序 |
所有 OpenStack Cinder 节点在 FC 网络上 |
配置¶
通过更改 cinder.conf 文件手动配置驱动程序,如下所示
volume_driver = cinder.volume.drivers.ibm.ibm_storage.IBMStorageDriver
DS8000 配置说明¶
配置选项 = 默认值 |
描述 |
|---|---|
[DEFAULT] |
|
|
(字符串) IODevice 地址和单元地址之间的映射。 |
|
(字符串) 如果您的 OpenStack 版本早于 Liberty 并且您正在连接到 zLinux 系统,则设置为 zLinux。否则设置为 auto。此参数的有效值包括:‘auto’、‘AMDLinuxRHEL’、‘AMDLinuxSuse’、‘AppleOSX’、‘Fujitsu’、‘Hp’、‘HpTru64’、‘HpVms’、‘LinuxDT’、‘LinuxRF’、‘LinuxRHEL’、‘LinuxSuse’、‘Novell’、‘SGI’、‘SVC’、‘SanFsAIX’、‘SanFsLinux’、‘Sun’、‘VMWare’、‘Win2000’、‘Win2003’、‘Win2008’、‘Win2012’、‘iLinux’、‘nSeries’、‘pLinux’、‘pSeries’、‘pSeriesPowerswap’、‘zLinux’、‘iSeries’。 |
|
(字符串) 设置 SSID 的前两位 |
|
(字符串) 连接到 IBM Storage Array 的代理驱动程序 |
|
(字符串) 用于创建卷的集群名称 |
|
(字符串) SAN 控制器的 IP 地址 |
|
(字符串) SAN 控制器的用户名 |
|
(字符串) SAN 控制器的密码 |
复制参数¶
参数 |
描述 |
适用范围 |
|---|---|---|
replication _device |
卷复制参数 |
DS8000 |
backend_id |
目标存储系统的 IP 地址或主机名 |
DS8000 |
san_login |
在复制过程中使用的用户名 |
DS8000 |
san_password |
在复制过程中使用的密码(base64 编码) |
DS8000 |
san_clustername |
目标存储系统上的池名称 |
DS8000 |
port_pairs |
参与复制的 IO 端口的 ID 对 |
DS8000 |
lss_range_for _cg |
为一致性组保留的 LSS 范围 |
DS8000 |
安全¶
以下信息概述了 IBM Storage Driver for OpenStack 的安全性。
配置 Cinder 节点以进行受信任的通信¶
IBM Storage Driver for OpenStack 通过 HTTPS 与 DS8000 通信,使用自签名证书或由证书颁发机构 (CA) 签名的证书。配置受信任的通信链路,以确保 Cinder 节点成功连接到 DS8000 存储系统,具体细节请参阅以下部分。
配置受信任的通信链路¶
在配置 DS8000 后端之前,请完成以下步骤以建立信任链。
在您的操作系统 shell 中,运行此命令以获取证书:
openssl x509 -in <(openssl s_client -connect <host fqdn>:8452 -prexit 2>/dev/null) -text -out <host fqdn>.pem如果证书是自签名的,将显示以下信息
--- Certificate chain 0 s:/CN=ds8000.ibm.com i:/CN=ds8000.ibm.com ---
通过将证书
<fqdn>.pem 移动到 /opt/ibm/ds8k_certs/<host>.pem文件来创建异常。验证
<host fqdn>是否与 san_ip 中配置的一致。如果证书主题和颁发者不同,则证书由 CA 签名,如下所示
--- Certificate chain 0 s:/C=US/ST=New York/L=Armonk/O=IBM/OU=EI/CN=www.ibm.com i:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G3 1 s:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G3 i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA ---
将公共证书添加到受信任的 CA 证书存储中以完成信任链,如下所述。
验证受信任的通信链路,如下所述。
将公共证书添加到受信任的 CA 证书存储¶
根据所使用的操作系统,将 CA 公共证书添加到 Cinder 节点上的受信任的 CA 证书存储中。
对于 RHEL 7.x 或 CentOS 7.x,将要信任的证书(以 PEM 格式)放入 /etc/pki/ca-trust/source/anchors/ 目录中。然后,运行
sudo update-ca-trust命令。对于 Ubuntu 18.04,将要信任的证书(以 PEM 格式)放入 /usr/local/share/ca-certificates/ 目录中。使用
*.crt扩展名重命名该文件。然后,运行sudo update-ca-certificates命令。对于带有 certifi 的 Python requests 库,运行
cat ca_public_certificate.pem命令将证书附加到 certifi 信任存储文件的位置。例如cat ca_public_certificate.pem >> /usr/local/lib/python3.6/ dist-packages/certifi/cacert.pem.
验证受信任的通信链路¶
验证已成功建立信任链。
根据安装类型,获取 Python 库 requests 信任存储的位置。
RHEL 7.x 或 CentOS 7.x
# python3 Python 3.6.8 (default, Aug 7 2019, 17:28:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import requests >>> print(requests.certs.where()) /etc/pki/ca-trust/extracted/openssl/ ca-bundle.trust.crt
Ubuntu 18.04
# python3 Python 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import requests >>> print(requests.certs.where()) /etc/ssl/certs/ca-certificates.crt
带有 certifi 的 Python requests 库
# python3 Python 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import requests >>> print(requests.certs.where()) /usr/local/lib/python3.6/dist-packages/ certifi/cacert.pem
运行
openssl s_client -CAfile <location> -connect <host fqdn>:8452 </dev/null命令。以下返回码指示建立受信任的通信链路的成功或失败尝试。
验证返回码:0(ok):成功。
验证返回码:21(无法验证第一个证书),或任何其他非零值:失败。
故障排除¶
请参考此信息以解决在使用 IBM Storage Driver for OpenStack 时可能遇到的技术问题。
检查 Cinder 日志文件¶
Cinder 日志文件记录了可能对故障排除有用的操作信息。
为了实现最佳和清晰的日志记录,请在位于 /etc/cinder 文件夹中的 cinder.conf 文件中激活详细的日志记录级别。将以下行添加到文件中,保存文件,然后重新启动 cinder-volume 服务
verbose = True
debug = True
要关闭详细的日志记录级别,请将 True 更改为 False,保存文件,然后重新启动 cinder-volume 服务。
定期检查日志文件,以确保 IBM Storage Driver 正常运行。要检查 Cinder 节点上的日志文件,请转到 /var/log/cinder 文件夹并打开名为 cinder-volume.log 或 volume.log 的活动日志文件。
最佳实践¶
本节包含一般指导和最佳实践。
配置卷复制 (DS8000 系列)¶
卷复制对于在基于 OpenStack 的云上运行的灾难恢复和高可用性应用程序是必需的。IBM Storage Driver for OpenStack 支持 DS8000 存储系统的同步 (Metro Mirror) 卷复制。
验证
DS8000 系统上存在主存储池和远程存储池。
初级站点和辅助站点之间建立了可靠的通信链路,包括物理连接和 PPRC 路径。
DS8000 存储系统上启用了 Metro Mirror 复制。
执行以下过程,用您自己的值替换示例中的值
enabled_backends = ibm_ds8k_1, ibm_ds8k_2 [ibm_ds8k_1] proxy = cinder.volume.drivers.ds8k_proxy.DS8KProxy volume_backend_name = ibm_ds8k_1 san_clustername = P2,P3 san_password = actual_password san_login = actual_username san_ip = host_fqdn volume_driver = cinder.volume.drivers.ibm.ibm_storage.IBMStorageDriver chap = disabled connection_type = fibre_channel replication_device = connection_type: fibre_channel, backend_id: bar, san_ip: host_fqdn, san_login: actual_username, san_password: actual_password, san_clustername: P4, port_pairs: I0236-I0306; I0237-I0307 [ibm_ds8k_2] proxy = cinder.volume.drivers.ibm.ds8k_proxy.DS8KProxy volume_backend_name = ibm_ds8k_2 san_clustername = P4,P5 san_password = actual_password san_login = actual_username san_ip = 10.0.0.1 volume_driver = cinder.volume.drivers.ibm.ibm_storage.IBMStorageDriver chap = disabled connection_type = fibre_channel
配置组¶
IBM Storage Driver for OpenStack 支持卷分组。可以将这些组分配组类型,并用于复制和组快照。
复制组¶
为了更好地控制复制粒度,用户可以使用卷分组。这使得卷组复制和故障转移而不会影响整个后端。用户可以选择通用的组复制和一致性组 (CG) 复制。对于一致性组复制,驱动程序使用存储功能来处理 CG 并将其复制到远程站点。另一方面,在通用组复制中,驱动程序单独复制每个卷。此外,用户可以选择复制类型。
要配置组复制
创建同步复制的一致性组。
创建用于复制的卷类型。
#cinder type-create rep-vol-1
创建用于复制的卷类型。
#cinder type-key rep-vol-1 set replication_type='<is> sync' replication_enabled='<is> True'
创建一个组类型。
#cinder group-type-create rep-gr-1
配置组类型。
#cinder group-type-key rep-gr-1 set group_replication_enabled='<is> True' replication_type='<is> sync'
创建复制组,使用现有的组类型和卷类型。
#cinder group-create rep-gr-1 rep-vol-1 --name replicated-gr-1
创建卷并将其添加到组中。
创建复制卷。
#cinder create --name vol-1 --volume-type rep-vol-1 1
将卷添加到组中。
#cinder group-update --add-volumes 91492ed9-c3cf-4732-a525-60e146510b90 replicated-gr-1
注意
您也可以使用 –group-id 参数直接在组中创建卷,后跟新卷所属组的 ID。此功能由 API 版本 3.13 及更高版本支持。
启用复制。
#cinder group-enable-replication replicated-gr-1
禁用复制。
#cinder group-disable-replication replicated-gr-1
故障转移复制组。
#cinder group-failover-replication replicated-gr-1
一致性组¶
一致性组与复制组基本相同,但增加了对组快照的支持 (consistent_group_snapshot_enabled 参数)。请参阅下面的配置示例。
#cinder group-type-create cg1
#cinder group-type-show cg1
#cinder group-type-key cg1 set consistent_group_snapshot_enabled="<is> True"
#cinder group-create --name cg1 IBM-DS8K_ibm.com_P0_P1_fibre_channel_not_thin,
IBM-DS8K_ibm.com_P0_P1_fibre_channel_thin,
IBM-DS8K_ibm.com_P0_P1_fibre_channel_not_thin_replica,
IBM-DS8K_ibm.com_P0_P1_fibre_channel_thin_replica
使用卷类型进行卷分配控制 (DS8000 系列)¶
为了更好地控制卷放置的粒度,您可以使用卷类型。这使得卷能够在特定的 LSS 或池上创建。您可以结合使用这两种类型。
存储池
#cinder type-key pool-1_2 set drivers:storage_pool_ids='P1,P2'
LSS
#cinder type-key lss80_81 set drivers:storage_lss_ids='80,81'