Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

NetApp Block Storage 后端指南

Red Hat OpenStack Platform 13

在 Red Hat OpenStack Platform 13 中将 NetApp 设备用作块存储后端的指南

OpenStack Documentation Team

摘要

本文档论述了如何使用 Director 将 NetApp 存储设备部署为 Red Hat OpenStack Platform 13 中的块存储服务的后端。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 简介

本文档论述了如何使用 Director 将 NetApp 设备部署为 Overcloud 的块存储服务的后端。以下小节假设:

  • 您要将 NetApp 设备和驱动程序用于块存储后端
  • OpenStack Overcloud 已经通过 Director 部署
  • NetApp 设备已经配置,并可作为存储库使用
  • 有连接到 NetApp 存储系统或代理服务器所需的凭证
  • 您有具有升级权限的帐户的用户名和密码。您可以使用为部署 Overcloud 创建的相同帐户;创建堆栈 用户,为此目的创建了 stack 用户。

当通过 Director 部署 Red Hat OpenStack Platform 时,还必须定义所有主要的 Overcloud 设置(特别是块存储服务后端),并通过 Director 进行协调。这样可确保通过任何进一步的 Overcloud 更新保留设置。

注意

有关将块存储服务配置为使用 NetApp 设备作为后端的手动说明,请参阅 Chapter 4。OpenStack 块存储服务(来自 NetApp OpenStack Deployment 和操作指南)。在更新 Overcloud 期间,需要重新应用手动配置的块存储设置,因为 Director 会覆盖它没有编排的任何设置。

本文档解释了如何在 Overcloud 的块存储服务中编排所需的 NetApp 后端配置。本文档不会通过 NetApp 后端讨论不同的部署配置。相反,要了解更多有关不同可用的 NetApp 部署选择的信息,请参阅 操作和部署选择(从 NetApp OpenStack Deployment 和操作指南中)

熟悉部署生成的后端配置(及其相应设置)后,请参考此文档,了解如何通过 Director 编排它。

注意

目前,director 仅具有部署 NetApp 后端的单一实例的集成组件。因此,本文档只描述了单个后端的部署。

部署 NetApp 后端的多个实例 需要自定义后端配置。具体步骤请查看 自定义块存储后端部署指南

第 2 章 进程描述

Red Hat OpenStack Platform 包括块存储服务支持的所有 NetApp 设备所需的所有驱动程序。此外,director 还具有将 NetApp 设备集成为 Overcloud 的后端所需的 puppet 清单、环境文件和编配模板。

将 NetApp 设备配置为后端涉及编辑默认 环境文件,并在 Overcloud 部署中包括它。此文件可以在 Undercloud 上的本地可用,并可进行编辑以适合您的环境。

编辑此文件后,通过 Director 调用该文件。这样做可确保通过将来的 Overcloud 更新来保留它。以下小节更详细地描述了此过程。

第 3 章 定义后端

重要

这部分论述了部署单一后端。部署 NetApp 后端的多个实例 需要自定义后端配置。具体步骤请查看 自定义块存储后端部署指南

借助 director 部署,将 NetApp 设备定义为块存储后端的最简单方式是通过集成的 NetApp 环境文件。此文件位于 undercloud 节点的以下路径中:

/usr/share/openstack-tripleo-heat-templates/environments/storage/cinder-netapp-config.yaml

将此文件复制到本地路径,以便稍后进行编辑并调用该路径。例如,将其复制到 ~/templates/

$ cp /usr/share/openstack-tripleo-heat-templates/environments/storage/cinder-netapp-config.yaml ~/templates/

之后,打开副本(~/templates/cinder-netapp-config.yaml),并根据情况进行编辑。以下片段显示此文件的默认内容:

# A heat environment file which can be used to enable a
# a Cinder NetApp backend, configured via puppet
resource_registry:
  OS::TripleO::Services::CinderBackendNetApp: ../puppet/services/cinder-backend-netapp.yaml  1

parameter_defaults:  2
  CinderEnableNetappBackend: true  3
  CinderNetappBackendName: 'tripleo_netapp'
  CinderNetappLogin: ''
  CinderNetappPassword: ''
  CinderNetappServerHostname: ''
  CinderNetappServerPort: '80'
  CinderNetappSizeMultiplier: '1.2'
  CinderNetappStorageFamily: 'ontap_cluster'
  CinderNetappStorageProtocol: 'nfs'
  CinderNetappTransportType: 'http'
  CinderNetappVfiler: ''
  CinderNetappVolumeList: ''
  CinderNetappVserver: ''
  CinderNetappPartnerBackendName: ''
  CinderNetappNfsShares: ''
  CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
  CinderNetappNfsMountOptions: ''
  CinderNetappCopyOffloadToolPath: ''
  CinderNetappControllerIps: ''
  CinderNetappSaPassword: ''
  CinderNetappStoragePools: ''
  CinderNetappEseriesHostType: 'linux_dm_mp'
  CinderNetappWebservicePath: '/devmgr/v2'
注意

有几个 director heat 参数控制 NFS 后端还是 NetApp NFS Block Storage 后端是否支持一个名为 NAS 的 NetApp 功能:

  • CinderNetappNasSecureFileOperations
  • CinderNetappNasSecureFilePermissions
  • CinderNasSecureFileOperations
  • CinderNasSecureFilePermissions

红帽不推荐启用此功能,因为它不会影响正常卷操作。director 会默认禁用这个功能,Red Hat OpenStack Platform 不支持它。

1
resource_registry 部分中的 OS::TripleO::Services::CinderBackendNetApp 参数引用名为 cinder-backend-netapp.yaml 的可组合服务模板。这是 Director 应该用来加载配置后端所需的资源的模板。默认情况下,参数指定 cinder-backend-netapp.yaml 相对的路径。因此,使用文件的绝对路径更新这个参数:
resource_registry:
  OS::TripleO::Services::CinderBackendNetApp: /usr/share/openstack-tripleo-heat-templates/puppet/services/cinder-backend-netapp.yaml
2
parameter_defaults 部分包含您的后端定义。特别是,它包含 director 传递给 cinder-backend-netapp.yaml 中定义的资源的参数。
3
CinderEnableNetappBackend: true 行指示 director 使用 NetApp 后端默认配置所需的 puppet 清单。这包括定义块存储服务应使用的卷驱动程序(特别是 cinder.volume.drivers.netapp.common.NetAppDriver)。

要定义 NetApp 后端,请在您看到的 parameter_defaults 部分中编辑设置。下表说明了每个参数,并列出其对应的 cinder.conf 设置。

注意

如需了解更多有关变量的信息,请参阅 NetApp OpenStack Docs 中用于 NetApp 设备的对应引用。

表 3.1. NetApp 通用后端设置

参数cinder.conf settingDescription

CinderNetappBackendName

volume_backend_name

(必需) 用来识别卷后端的任意名称。cinder-netapp-config.yaml 文件默认使用 tripleo_netapp 名称。

CinderNetappLogin

netapp_login

(必需) 用于访问后端或其代理服务器的管理帐户名称。对于这个参数,您可以使用具有集群级别的管理权限(名称或管理员)的帐户或 集群范围的帐户 [a] 使用适当的特权。

CinderNetappPassword

netapp_password

(必需) CinderNetappLogin 对应的密码。

CinderNetappServerHostname

netapp_server_hostname

(必需) 存储系统或代理服务器(用于 E-Series)。这个选项的值应该是集群管理逻辑接口(LIF)或 Storage Virtual Machine (SVM) LIF 的 IP 地址或主机名。

CinderNetappServerPort

netapp_server_port

(可选) 块存储服务应使用的 TCP 端口与 NetApp 后端通信。如果没有指定,Data ONTAP 驱动程序会将 80 用于 HTTP 443 用于 HTTPS ;E-Series 将使用 8080 作为 HTTPS

CinderNetappSizeMultiplier

netapp_size_multiplier

(已弃用) 卷创建期间,将数量乘以请求的卷大小,以确保 NetApp 后端有足够的空间。

CinderNetappStorageFamily

netapp_storage_family

(可选) 后端设备上使用的存储系列类型。将 ontap_cluster 用于集群数据 ONTAP 或 eseries 用于 E-Series。

注意:在 7-Mode 中,对 Data ONTAP 工作的 ontap_7mode 的支持已弃用。

CinderNetappStorageProtocol

netapp_storage_protocol

(必需) 要使用的存储协议。使用 nfsiscsifc

CinderNetappTransportType

netapp_transport_type

(必需) 用于与后端通信的传输协议。有效选项包括 httphttps

[a] 如需有关集群范围的帐户的更多信息,请参阅 ONTAP 配置(从 NetApp OpenStack Docs)

以下设置仅对集群 Data ONTAP 有效(正如,将 CinderNetappStorageFamily 设置为 ontap_cluster)。

表 3.2. 集群 DATA ONTAP 的 NetApp 设置

参数cinder.conf settingDescription

CinderNetappVserver

netapp_vserver

(必需) 指定卷置备应该发生的 SVM 的名称。这是指存储集群中的单个 SVM。

以下设置仅对 E-Series 系列设备有效(正如,将 CinderNetappStorageFamily 设置为 e series)。

表 3.3. E-Series 的 NetApp 设置

参数cinder.conf settingDescription

CinderNetappControllerIps

netapp_controller_ip

(必需) 以逗号分隔的控制器管理 IP/主机名列表,以限制该调配。

CinderNetappSaPassword

netapp_sa_password

(可选) 到 NetApp E-Series 存储阵列的 Password。

CinderNetappStoragePools

netapp_storage_pools

(删除) 一个以逗号分隔的磁盘池列表,这些池应该受到限制。

不要编辑此参数,因为它现在指的是不可用的驱动选项。

CinderNetappEseriesHostType

netapp_eseries_host_type

(删除) 定义可以访问 LUN 的所有启动器的操作系统类型。当将 LUN 映射到单个主机或主机组时,会使用此信息。

不要编辑此参数,因为它现在指的是不可用的驱动选项。

CinderNetappWebservicePath

netapp_webservice_path

(可选) 指定代理服务器上的 E-Series 代理应用程序的路径。要确定连接到代理应用程序的完整 URL,该驱动程序将 CinderNetappTransportTypeCinderNetappServerHostnameCinderNetappServerPort 端口值合并。

只有使用 NFS 协议时,以下设置才有效(正如,将 CinderNetappStorageProtocol 设置为 nfs)。如需更多信息,请参阅 NetApp Unified Driver for Clustered Data ONTAP with NFSNetApp Unified Driver for Data ONTAP for Data ONTAP for data ONTAP with NFS with NFS (它们包括 NetApp OpenStack Deployment 和 Operations Guide)。

表 3.4. NFS 的 NetApp 设置

参数cinder.conf settingDescription

CinderNetappNfsShares

None

(必需) 从 NetApp ONTAP 设备导出的 Data LIFs 的逗号分隔列表,由 Controller 节点挂载。此列表写入到 CinderNetappNfsSharesConfig 定义的位置。例如:

CinderNetappNfsShares: \'192.168.67.1:/cinder1,192.168.67.2:/cinder2,192.168.67.2:/cinder3,192.168.67.2:/archived_data'

CinderNetappNfsSharesConfig

nfs_shares_config

(必需) NFS 导出文件 的 Absolute 路径。此文件包含用作后端的可用 NFS 共享列表。

CinderNetappNfsMountOptions

nfs_mount_options

(可选) 您要传递给 NFS 客户端的挂载选项列表(可选)。有关有效选项的详情请参考 man mount

CinderNetappCopyOffloadToolPath [a]

netapp_copyoffload_tool_path

(可选) 指定 NetApp 复制卸载工具二进制文件 的路径。此二进制文件(在 NetApp 支持门户中可用)必须具有 Execute 权限集,因为 openstack-cinder-volume 进程需要执行此文件。

[a] 这个选项只适用于 Clustered Data ONTAP (正如,将 CinderNetappStorageFamily 设置为 ontap_cluster)。有关更多信息,请参阅 带有 NFS 的 Clustered Data ONTAP 的 NetApp Unified Driver for Clustered Data ONTAP (来自 NetApp OpenStack Deployment 和操作指南)

第 4 章 部署配置后端

Director 安装使用非 root 用户执行命令,其中包括编配块存储后端的部署。在创建 Director 安装用户 中,会为此目的创建了名为 stack 的用户。此用户使用升级的特权配置。

stack 用户身份登录 Undercloud。然后,通过运行以下命令部署 NetApp 后端(在编辑的 ~/templates/cinder-netapp-config.yaml中定义):

$ openstack overcloud deploy --templates -e ~/templates/cinder-netapp-config.yaml
重要

如果您在创建 overcloud 时传递任何额外的环境文件,请使用 -e 选项再次传递它们,以避免对 overcloud 进行不必要的更改。有关更多信息,请参阅 Director 安装和使用 指南中的 修改 Overcloud 环境

在 director 编排完成后测试后端。请参阅 第 5 章 测试配置后端

第 5 章 测试配置后端

部署后端后,测试您是否可以在其中成功创建卷。这样做需要首先载入必要的环境变量。这些变量默认在 /home/stack/overcloudrc 中定义。

要加载这些变量,请以 stack 用户身份运行以下命令:

$ source /home/stack/overcloudrc
注意

如需更多信息,请参阅 访问 Overcloud

现在,您应该登录到 Controller 节点。在这里,您可以创建一个 卷类型,它可以用来指定您要使用的后端(本例中为 第 3 章 定义后端中的新定义后端)。在启用了其他后端的 OpenStack 部署中是必需的(可能是通过 Director)。

要创建一个名为 netapp 的卷类型,请运行:

$ cinder type-create netapp

接下来,将此卷类型映射到 ] 中定义的后端。根据后端名称 tripleo_netapp (如通过 CinderNetappBackendName 参数定义),在 xref:edityaml[), run:

$ cinder type-key netapp set volume_backend_name=tripleo_netapp

现在,您应能够通过调用其卷类型,在新定义的后端上创建一个 2GB 卷。为此,请运行:

$ cinder create --volume-type netapp 2

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.