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_poolsdatacore_disk_typedatacore_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_authchap_usernamechap_password 启用 CHAP 身份验证的示例

    volume_driver = cinder.volume.drivers.datacore.iscsi.ISCSIVolumeDriver
    
    use_chap_auth = True
    
    chap_username = user1
    
    chap_password = user1_password
    
  • 使用 use_chap_authdatacore_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_usernamechap_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 服务器组配置不同的存储配置。组的配置选项必须在组中定义。

要启用多个后端

  1. cinder.conf 文件中,设置 enabled_backends 选项以标识组。每个服务器组后端配置都与一个名称相关联。在下面的示例中,有两个组,datacore-1datacore-2

    [DEFAULT]
    
    enabled_backends = datacore-1, datacore-2
    
  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
    
  3. 创建卷类型

    $ cinder type-create datacore_iscsi
    
    $ cinder type-create datacore_fc
    
  4. 添加一个额外的规范以将卷类型链接到后端名称

    $ cinder type-key datacore_iscsi set volume_backend_name=DataCore_iSCSI
    
    $ cinder type-key datacore_fc set volume_backend_name=DataCore_FibreChannel
    

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

分离卷和终止实例

关于在 OpenStack 中分离卷和终止实例时 SANsymphony 软件的预期行为说明

  1. 当卷从 OpenStack 中的主机分离时,虚拟磁盘将从主机取消提供,但虚拟磁盘不会被删除。

  2. 如果所有卷都从 OpenStack 中的主机分离,该主机将保持注册状态,并且所有虚拟磁盘都将从该主机取消提供。虚拟磁盘不会被删除。

  3. 如果在 OpenStack 中终止实例,实例的虚拟磁盘将从主机取消提供,具体取决于在终止时选择的选项,虚拟磁盘将被删除或保留为未提供的虚拟磁盘。

支持

如果需要支持包,管理员应保存 Linux 主机上的 /var/log 文件夹中的文件并手动将其附加到 DataCore 技术支持事件。