DataCore SANsymphony 卷驱动¶
DataCore SANsymphony 卷驱动为 OpenStack Compute 实例提供访问 SANsymphony(TM) 软件定义存储平台的权限。
当在 OpenStack 中创建卷时,驱动程序会在 SANsymphony 服务器组中创建相应的虚拟磁盘。当卷附加到 OpenStack 中的实例时,Linux 主机将被注册,并且相应的虚拟磁盘将在 SANsymphony 服务器组中提供给该主机。
需求¶
运行 SANsymphony 软件版本 10 PSP6 或更高版本的 DataCore 服务器组。
OpenStack 集成已使用安装在 Ubuntu 20.04 上的 OpenStack 环境进行测试。有关符合条件的 Linux 主机操作系统类型的列表,请参阅 Linux 主机配置指南,网址为 DataCore 技术支持网页。
如果使用多路径 I/O,请确保在所有 OpenStack Compute 节点上登录 iSCSI 端口。(所有光纤通道端口将自动登录。)
Python 依赖项¶
websocket-client>=0.32.0使用 pip 安装此软件包
$ sudo pip install "websocket-client>=0.32.0"
配置¶
可以通过编辑 cinder.conf 文件来配置卷驱动程序。以下选项可以配置为每个服务器组或卷类型配置中的额外规范。
配置选项和默认值
datacore_disk_pools = None设置用于 DataCore OpenStack Cinder 卷驱动程序的池。此选项充当过滤器,可以指定任意数量的池。指定的池列表将用于选择虚拟磁盘所需的存储源;单个磁盘一个或镜像磁盘两个。选择基于具有最多可用空间的池。
此选项也可以指定为卷类型的额外规范。
datacore_disk_type = single设置 SANsymphony 虚拟磁盘类型(单个或镜像)。默认情况下创建单个虚拟磁盘。指定镜像以覆盖此行为。镜像虚拟磁盘需要在服务器组中包含两个 DataCore 服务器。
此选项也可以指定为卷类型的额外规范。
datacore_storage_profile = Normal设置虚拟磁盘的存储配置文件。默认设置为 Normal。其他有效值包括标准存储配置文件(Critical、High、Low 和 Archive)以及已创建的自定义配置文件的名称。
此选项也可以指定为卷类型的额外规范。
datacore_api_timeout = 300设置等待 DataCore API 调用响应的秒数。
此选项仅用于服务器组后端配置。
datacore_disk_failed_delay = 300设置等待 SANsymphony 虚拟磁盘退出“Failed”状态的秒数。
此选项仅用于服务器组后端配置。
datacore_iscsi_unallowed_targets = []设置无法用于附加到卷的 iSCSI 目标列表。默认情况下,DataCore iSCSI 卷驱动程序通过所有启用前端角色的目标端口附加卷,不同于仅通过连接到启动器的目标端口附加卷的 DataCore 光纤通道卷驱动程序。
要防止 DataCore iSCSI 卷驱动程序在卷附加中使用某些前端目标,请指定此选项并列出每个目标的 iqn 和目标机器,例如
<iqn:target name>, <iqn:target name>, <iqn:target name>。例如,<iqn.2000-08.com.company:Server1-1, iqn.2000-08.com.company:Server2-1, iqn.2000-08.com.company:Server3-1>。此选项仅用于服务器组后端配置。
use_chap_auth = False设置用于服务卷的 iSCSI 目标的 CHAP 身份验证。默认情况下禁用此选项,允许主机(OpenStack Compute 节点)在没有身份验证的情况下连接到 iSCSI 存储后端。要启用 CHAP 身份验证,这将防止主机(OpenStack Compute 节点)在没有身份验证的情况下连接到后端,请将此选项设置为 True。
此外,请指定 DataCore 卷驱动程序将存储动态创建的 CHAP 密钥的位置,方法是设置 datacore_iscsi_chap_storage 选项。
此选项仅用于服务器组后端配置。驱动程序仅为涉及的目标端口启用 CHAP,因此并非所有 DataCore 服务器都可能配置 CHAP。在启用 CHAP 之前,请确保没有 SANsymphony 卷附加到任何实例。
datacore_iscsi_chap_storage = /var/lib/cinder/.datacore_chap设置 iSCSI CHAP 身份验证密码存储文件的路径。datacore_iscsi_chap_storage 仅在 use_chap_auth = True 且未设置 chap_password 时使用。默认 datacore_iscsi_chap_storage 值为 $state_path/.datacore_chap。
CHAP 密钥以明文形式从 OpenStack 块存储传递到计算。应保护此通信以确保 CHAP 密钥不会被泄露。可以通过设置文件权限来完成此操作。在更改 CHAP 配置之前,请确保没有 SANsymphony 卷附加到任何实例。
此选项仅用于服务器组后端配置。
配置示例¶
在 cinder.conf 文件中配置选项的示例。
使用 datacore_disk_pools、datacore_disk_type 和 datacore_storage_profile 创建具有 High 优先级存储配置文件的镜像虚拟磁盘的示例
volume_driver = cinder.volume.drivers.datacore.iscsi.ISCSIVolumeDriver san_ip = <DataCore Server IP or DNS name> san_login = <User Name> san_password = <Password> datacore_disk_type = mirrored datacore_disk_pools = Disk pool 1, Disk pool 2 datacore_storage_profile = High
使用 datacore_iscsi_unallowed_targets 防止卷使用指定目标的示例
volume_driver = cinder.volume.drivers.datacore.iscsi.ISCSIVolumeDriver san_ip = <DataCore Server IP or DNS name> san_login = <User Name> san_password = <Password> datacore_iscsi_unallowed_targets = iqn.2000-08.com.datacore:mns-ssv-10-1,iqn.2000-08.com.datacore:mns-ssvdev-01-1
使用 use_chap_auth 和 chap_username 和 chap_password 启用 CHAP 身份验证的示例
volume_driver = cinder.volume.drivers.datacore.iscsi.ISCSIVolumeDriver use_chap_auth = True chap_username = user1 chap_password = user1_password
使用 use_chap_auth 和 datacore_iscsi_chap_storage 启用 CHAP 身份验证并提供 CHAP 密码存储文件路径的示例
volume_driver = cinder.volume.drivers.datacore.iscsi.ISCSIVolumeDriver use_chap_auth = True datacore_iscsi_chap_storage = /var/lib/cinder/.datacore_chap
DataCore 卷驱动程序以明文形式存储 CHAP 密钥,并且必须通过设置文件权限来保护密码文件。以下示例显示如何创建密码文件并设置权限。假设 cinder-volume 服务正在用户 cinder 下运行。请注意,以下步骤仅在用户想要更改默认 datacore_iscsi_chap_storage 位置时才需要。
$ sudo mkdir /opt/user_dir/cinder -p $ sudo /bin/sh -c "> /opt/user_dir/cinder/.datacore_chap" $ sudo chown cinder:cinder /opt/user_dir/cinder $ sudo chown cinder:cinder /opt/user_dir/cinder/.datacore_chap $ sudo chmod -v 600 /opt/user_dir/cinder/.datacore_chap
在设置 use_chap_auth = True 后,CHAP 将在 SANsymphony 中启用。如果指定了 chap_username 和 chap_password,则将使用它们,否则 iSCSI 发起程序 PortName 将用作 chap_username,并使用随机密码,并且凭据将存储在 datacore_iscsi_chap_storage 位置。
创建卷类型¶
可以使用在 datacore:disk_type 额外规范中指定的 DataCore 磁盘类型创建卷类型。在以下示例中,创建了一个名为 mirrored_disk 的卷类型,并且磁盘类型设置为 mirrored。
$ cinder type-create mirrored_disk
$ cinder type-key mirrored_disk set datacore:disk_type=mirrored
此外,卷规范也可以声明为卷类型的额外规范。以下示例为卷类型 mirrored_disk 设置其他配置选项;存储配置文件将设置为 High,虚拟磁盘将从磁盘池 1、磁盘池 2 或磁盘池 3 创建。
$ cinder type-key mirrored_disk set datacore:storage_profile=High
$ cinder type-key mirrored_disk set "datacore:disk_pools=Disk pool 1, Disk pool 2, Disk pool 3"
配置多个存储后端¶
可以配置 OpenStack 块存储以使用多个后端存储解决方案。多后端配置允许您为 SANsymphony 服务器组配置不同的存储配置。组的配置选项必须在组中定义。
要启用多个后端
在
cinder.conf文件中,设置 enabled_backends 选项以标识组。每个服务器组后端配置都与一个名称相关联。在下面的示例中,有两个组,datacore-1和datacore-2[DEFAULT] enabled_backends = datacore-1, datacore-2
在单独的部分中(例如
[datacore-1])定义每个服务器组使用的后端存储[datacore-1] volume_driver = cinder.volume.drivers.datacore.iscsi.ISCSIVolumeDriver volume_backend_name = DataCore_iSCSI san_ip = <ip_or_dns_name> san_login = <user_name> san_password = <password> use_chap_auth = True chap_username = <chap_username> chap_password = <chap_password> datacore_iscsi_chap_storage = /var/lib/cinder/.datacore_chap datacore_iscsi_unallowed_targets = iqn.2000-08.com.datacore:mns-ssv-10-1 datacore_disk_type = mirrored [datacore-2] volume_driver = cinder.volume.drivers.datacore.fc.FibreChannelVolumeDriver volume_backend_name = DataCore_FibreChannel san_ip = <ip_or_dns_name> san_login = <user_name> san_password = <password> datacore_disk_type = mirrored datacore_disk_pools = Disk pool 1, Disk pool 2 datacore_storage_profile = High
创建卷类型
$ cinder type-create datacore_iscsi $ cinder type-create datacore_fc
添加一个额外的规范以将卷类型链接到后端名称
$ cinder type-key datacore_iscsi set volume_backend_name=DataCore_iSCSI $ cinder type-key datacore_fc set volume_backend_name=DataCore_FibreChannel
有关更多信息,请参阅 配置多个存储后端。
分离卷和终止实例¶
关于在 OpenStack 中分离卷和终止实例时 SANsymphony 软件的预期行为说明
当卷从 OpenStack 中的主机分离时,虚拟磁盘将从主机取消提供,但虚拟磁盘不会被删除。
如果所有卷都从 OpenStack 中的主机分离,该主机将保持注册状态,并且所有虚拟磁盘都将从该主机取消提供。虚拟磁盘不会被删除。
如果在 OpenStack 中终止实例,实例的虚拟磁盘将从主机取消提供,具体取决于在终止时选择的选项,虚拟磁盘将被删除或保留为未提供的虚拟磁盘。
支持¶
如果需要支持包,管理员应保存 Linux 主机上的 /var/log 文件夹中的文件并手动将其附加到 DataCore 技术支持事件。