INFINIDAT InfiniBox 块存储驱动

INFINIDAT 块存储卷驱动程序提供 iSCSI 和光纤通道支持,用于 INFINIDAT InfiniBox 存储系统。

本节说明如何配置 INFINIDAT 驱动程序。

支持的操作

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

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

  • 从快照创建卷。

  • 将卷复制到镜像。

  • 将镜像复制到卷。

  • 克隆卷。

  • 扩展卷。

  • 获取卷统计信息。

  • 创建、修改、删除和列出一致性组。

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

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

  • 将卷恢复到快照。

  • 管理和取消管理卷和快照。

  • 列出可管理的卷和快照。

  • 一次将卷附加到多个实例 (多重附加)。

  • 主机和存储辅助卷迁移。

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

外部软件包安装

该驱动程序需要 infinisdk 包来与 InfiniBox 系统通信。使用以下命令从 PyPI 安装该包

$ pip install infinisdk

设置存储阵列

提前在 InfiniBox 阵列上创建一个存储池对象。存储池将包含由 OpenStack 管理的卷。当使用相同的协议将相同的宿主机连接时,不支持在 OpenStack API 和非 OpenStack 方法之间混合使用。例如,对于使用光纤通道的相同宿主机,无法创建 SAN 启动卷和 OpenStack 卷。相反,请为其中一个卷使用不同的协议。有关池管理的详细信息,请参阅 InfiniBox 手册。

驱动程序配置

编辑 cinder.conf 文件,该文件通常位于以下路径 /etc/cinder/cinder.conf 下。

  • 为 INFINIDAT 驱动程序后端添加一个部分。

  • [DEFAULT] 部分下,使用新后端部分的名称设置 enabled_backends 参数。

使用以下参数配置驱动程序后端部分。

  • 通过设置以下参数配置驱动程序名称

    volume_driver = cinder.volume.drivers.infinidat.InfiniboxVolumeDriver
    
  • 通过添加以下参数配置 InfiniBox 阵列的管理 IP

    san_ip = InfiniBox management IP
    
  • 验证是否可以通过 HTTPS 连接管理 InfiniBox 阵列。并且应将 driver_use_ssl 参数设置为 true 以启用 HTTPS 协议的使用。如果将 driver_use_ssl 设置为(或默认为)false,则也可以使用 HTTP。要抑制 requests 库的 SSL 证书警告,请将 suppress_requests_ssl_warnings 参数设置为 true

    driver_use_ssl = true/false
    suppress_requests_ssl_warnings = true/false
    

    这些参数默认为 false

  • 配置用户凭据。

    该驱动程序需要具有管理权限的 InfiniBox 用户。我们建议创建一个专用的 OpenStack 用户帐户,该帐户拥有池管理员用户角色。有关用户帐户管理的详细信息,请参阅 InfiniBox 手册。通过添加以下参数配置用户凭据

    san_login = infinibox_username
    san_password = infinibox_password
    
  • 通过添加以下参数配置 InfiniBox 池的名称

    infinidat_pool_name = Pool defined in InfiniBox
    
  • 后端名称是后端的标识符。我们建议使用与部分名称相同的名称。通过添加以下参数配置后端名称

    volume_backend_name = back-end name
    
  • 稀疏配置。

    INFINIDAT 驱动程序支持创建稀疏或厚配置卷。通过添加以下参数配置稀疏或厚配置

    san_thin_provision = true/false
    

    此参数默认为 true

  • 配置连接协议。

    InfiniBox 驱动程序支持通过光纤通道和 iSCSI 协议连接到 InfiniBox 系统。通过添加以下参数配置所需的协议

    infinidat_storage_protocol = iscsi/fc
    

    此参数默认为 fc

  • 配置 iSCSI 网络空间。

    在使用 iSCSI 协议连接到 InfiniBox 系统时,必须在 InfiniBox 存储阵列中配置一个或多个 iSCSI 网络空间。有关网络空间管理的详细信息,请参阅 InfiniBox 手册。通过添加以下参数配置要连接的 iSCSI 网络空间的名称

    infinidat_iscsi_netspaces = iscsi_netspace
    

    可以通过逗号分隔的字符串指定多个网络空间。

    当使用 FC 协议时,会忽略此参数。

  • 配置 CHAP

    InfiniBox 在使用 iSCSI 协议时支持 CHAP 身份验证。要启用 CHAP 身份验证,请添加以下参数

    use_chap_auth = true
    

    要手动定义用户名和密码,请添加以下参数

    chap_username = username
    chap_password = password
    

    如果未定义 CHAP 用户名或密码,驱动程序将自动生成它们。

    当使用 FC 协议时,会忽略 CHAP 参数。

  • 卷压缩

    卷压缩适用于所有受支持的 InfiniBox 版本。默认情况下,所有新创建的卷的压缩继承自创建时的父池。默认情况下,所有池都启用压缩。

    要显式启用或禁用所有新创建的卷的压缩,请添加以下配置参数

    infinidat_use_compression = true/false
    

    或者,为了让所有创建的卷继承其父池在创建时的压缩设置,请将此配置参数设置为未设置状态(注释掉)。默认值为未设置。

修改 cinder.conf 文件后,重新启动 cinder-volume 服务。

为每个不同的 volume_backend_name 值创建一个新的卷类型,该值已添加到 cinder.conf 文件中。以下示例假定所有条目中都指定了相同的 volume_backend_name=infinidat-pool-a 选项,并指定卷类型 infinidat 可用于从任何一个中分配卷。创建卷类型的示例

$ openstack volume type create infinidat
$ openstack volume type set --property volume_backend_name=infinidat-pool-a infinidat

配置示例

[DEFAULT]
enabled_backends = infinidat-pool-a

[infinidat-pool-a]
volume_driver = cinder.volume.drivers.infinidat.InfiniboxVolumeDriver
volume_backend_name = infinidat-pool-a
driver_use_ssl = true
suppress_requests_ssl_warnings = true
san_ip = 10.1.2.3
san_login = openstackuser
san_password = openstackpass
san_thin_provision = true
infinidat_pool_name = pool-a
infinidat_storage_protocol = iscsi
infinidat_iscsi_netspaces = default_iscsi_space

特定驱动程序的选项

下表包含 INFINIDAT 驱动程序特定的配置选项。

INFINIDAT InfiniBox 配置选项说明

配置选项 = 默认值

描述

infinidat_iscsi_netspaces = []

(字符串列表) 用于 iSCSI 连接的网络空间名称列表

infinidat_pool_name = None

(字符串) 分配卷的池的名称

infinidat_storage_protocol = fc

(字符串(选项=[‘iscsi’, ‘fc’])) 在宿主机和存储后端之间传输数据的协议。

infinidat_use_compression = None

(布尔值) 指定是否启用(true)或禁用(false)所有新创建的卷的压缩。如果希望所有创建的卷继承其父池在创建时的压缩设置,请将其设置为未设置状态(注释掉)。默认值为未设置。