ONTAP SAN 配置选项和示例
了解如何在Trident安装中创建和使用ONTAP SAN 驱动程序。本节提供后端配置示例以及将后端映射到 StorageClasses 的详细信息。
"ASA r2 系统"与其他ONTAP系统(ASA、 AFF和FAS)在存储层的实现上有所不同。这些变化会影响某些参数的使用,如注释中所述。"了解更多关于ASA r2 系统与其他ONTAP系统之间的区别"。
|
|
只有 `ontap-san`ASA r2 系统支持驱动程序(支持 iSCSI 和 NVMe/TCP 协议)。 |
在Trident后端配置中,无需指定您的系统是ASA r2。当您选择 `ontap-san`作为 `storageDriverName`Trident可自动检测ASA r2 或传统的ONTAP系统。如下表所示,某些后端配置参数不适用于ASA r2 系统。
后端配置选项
请参阅下表了解后端配置选项:
| 参数 | 描述 | 默认 | ||
|---|---|---|---|---|
|
始终为 1 |
|||
|
存储驱动程序的名称 |
|
||
|
自定义名称或存储后端 |
驱动程序名称 + "_" + dataLIF |
||
|
集群或 SVM 管理 LIF 的 IP 地址。 可以指定一个完全限定域名(FQDN)。 如果Trident安装时使用了 IPv6 标志,则可以设置为使用 IPv6 地址。 IPv6 地址必须用方括号定义,例如: 为了实现MetroCluster 的无缝切换,请参阅MetroCluster示例。
|
"10.0.0.1", "[2001:1234:abcd::fefe]" |
||
|
LIF协议的IP地址。如果Trident安装时使用了 IPv6 标志,则可以设置为使用 IPv6 地址。 IPv6 地址必须用方括号定义,例如: |
由支持向量机导出 |
||
|
要使用的存储虚拟机 *Metrocluster 除外。*查看MetroCluster示例。 |
如果是 SVM 则推导而来 `managementLIF`已指定 |
||
|
使用 CHAP 对ONTAP SAN 驱动程序的 iSCSI 进行身份验证 [布尔值]。设置为 `true`让Trident配置并使用双向 CHAP 作为后端给定 SVM 的默认身份验证。参考 "准备配置后端ONTAP SAN 驱动程序" 了解详情。 不支持FCP或NVMe/TCP协议。 |
|
||
|
CHAP 发起者密钥。如果是必填项 |
"" |
||
|
要应用于卷的任意 JSON 格式标签集 |
"" |
||
|
CHAP 目标发起者密钥。如果是必填项 |
"" |
||
|
入站用户名。如果是必填项 |
"" |
||
|
目标用户名。如果是必填项 |
"" |
||
|
客户端证书的 Base64 编码值。用于基于证书的身份验证 |
"" |
||
|
客户端私钥的 Base64 编码值。用于基于证书的身份验证 |
"" |
||
|
受信任 CA 证书的 Base64 编码值。可选。用于基于证书的身份验证。 |
"" |
||
|
与ONTAP集群通信所需的用户名。用于基于凭证的身份验证。有关 Active Directory 身份验证,请参阅 "使用 Active Directory 凭据向后端 SVM 验证Trident 的身份"。 |
"" |
||
|
与ONTAP集群通信所需的密码。用于基于凭证的身份验证。有关 Active Directory 身份验证,请参阅 "使用 Active Directory 凭据向后端 SVM 验证Trident 的身份"。 |
"" |
||
|
使用的存储虚拟机 |
如果是 SVM 则推导而来 `managementLIF`已指定 |
||
|
在 SVM 中配置新卷时使用的前缀。之后无法修改。要更新此参数,您需要创建一个新的后端。 |
|
||
|
用于配置的聚合(可选;如果设置,则必须分配给 SVM)。对于 `ontap-nas-flexgroup`驱动程序,此选项将被忽略。如果未分配,则可以使用任何可用的聚合来配置FlexGroup卷。
请勿指定用于ASA r2 系统。 |
"" |
||
|
如果使用率超过此百分比,则配置失败。如果您使用的是Amazon FSx for NetApp ONTAP后端,请勿指定 |
(默认情况下不强制执行) |
||
|
如果请求的卷大小大于此值,则配置失败。同时限制其管理的 LUN 卷的最大大小。 |
(默认情况下不强制执行) |
||
|
每个 Flexvol 的最大 LUN 数量必须在 [50, 200] 范围内 |
|
||
|
故障排除时要使用的调试标志。例如,{"api":false, "method":true} 除非您正在进行故障排除并且需要详细的日志转储,否则请勿使用此方法。 |
|
||
|
使用ONTAP REST API 的布尔参数。 `useREST`设置为 `true`Trident使用ONTAP REST API 与后端通信;当设置为 `false`Trident使用 ONTAPI (ZAPI) 调用与后端通信。此功能需要ONTAP 9.11.1 及更高版本。此外,所使用的ONTAP登录角色必须具有访问权限。 `ontapi`应用。预定义项满足了这一点。 `vsadmin`和 `cluster-admin`角色。从Trident 24.06 版本和ONTAP 9.15.1 或更高版本开始, `useREST`设置为 `true`默认;更改 `useREST`到 `false`使用 ONTAPI (ZAPI) 调用。 `useREST`完全符合 NVMe/TCP 标准。
如果指定,则始终设置为 `true`适用于ASA r2 系统。 |
|
||
|
用于选择 `iscsi`对于 iSCSI, `nvme`适用于 NVMe/TCP 或 `fcp`用于光纤通道 (FC) 上的 SCSI。 |
`iscsi`如果为空 |
||
|
使用 `formatOptions`为以下情况指定命令行参数 `mkfs`该命令将在每次格式化卷时应用。这样您就可以根据自己的喜好格式化音量。请确保指定与 mkfs 命令选项类似的 formatOptions,但不包括设备路径。例如:“-E nodiscard” 支持 `ontap-san`和 `ontap-san-economy`支持 iSCSI 协议的驱动程序。 此外,在使用 iSCSI 和 NVMe/TCP 协议时, ASA r2 系统也受支持。 |
|||
|
在 ontap-san-economy 后端中使用 LUN 时可请求的最大FlexVol大小。 |
(默认情况下不强制执行) |
||
|
限制 `ontap-san-economy`后端创建新的FlexVol卷来包含它们的 LUN。只有预先存在的 Flexvol 才能用于配置新的 PV。 |
使用 formatOptions 的建议
Trident建议采用以下选项来加快格式化过程:
-E nodiscard:
-
保留,不要在执行 mkfs 时尝试丢弃块(最初丢弃块对固态设备和稀疏/精简配置存储很有用)。这取代了已弃用的选项“-K”,并且适用于所有文件系统(xfs、ext3 和 ext4)。
使用 Active Directory 凭据向后端 SVM 验证Trident 的身份
您可以配置Trident以使用 Active Directory (AD) 凭据对后端 SVM 进行身份验证。在 AD 帐户可以访问 SVM 之前,您必须配置 AD 域控制器对集群或 SVM 的访问权限。对于使用 AD 帐户进行集群管理,您必须创建域隧道。参考 "在ONTAP中配置 Active Directory 域控制器访问" 了解详情。
-
为后端 SVM 配置域名系统 (DNS) 设置:
vserver services dns create -vserver <svm_name> -dns-servers <dns_server_ip1>,<dns_server_ip2> -
运行以下命令在 Active Directory 中为 SVM 创建计算机帐户:
vserver active-directory create -vserver DataSVM -account-name ADSERVER1 -domain demo.netapp.com -
使用此命令创建 AD 用户或组来管理集群或 SVM
security login create -vserver <svm_name> -user-or-group-name <ad_user_or_group> -application <application> -authentication-method domain -role vsadmin -
在Trident后端配置文件中,设置
username和password参数分别为 AD 用户或组名称和密码。
卷配置的后端配置选项
您可以使用以下选项控制默认配置。 `defaults`配置部分。例如,请参见下面的配置示例。
| 参数 | 描述 | 默认 |
|---|---|---|
|
LUN 的空间分配 |
“true” 如果指定,则设置为 `true`适用于ASA r2 系统。 |
|
空间预留模式;“无”(细)或“大量”(粗)。 设置为 `none`适用于ASA r2 系统。 |
“没有任何” |
|
要使用的快照策略。 设置为 `none`适用于ASA r2 系统。 |
“没有任何” |
|
要为创建的卷分配的 QoS 策略组。每个存储池/后端选择 qosPolicy 或 adaptiveQosPolicy 之一。将 QoS 策略组与Trident结合使用需要ONTAP 9.8 或更高版本。您应该使用非共享的 QoS 策略组,并确保该策略组单独应用于每个成员。共享的 QoS 策略组强制规定所有工作负载的总吞吐量上限。 |
"" |
|
要为创建的卷分配的自适应 QoS 策略组。每个存储池/后端选择 qosPolicy 或 adaptiveQosPolicy 之一 |
"" |
|
为快照预留的卷百分比。 请勿指定用于ASA r2 系统。 |
如果为“0”, `snapshotPolicy`为“无”,否则为“ |
|
创建时将克隆体从其母体中分离出来 |
"false" |
|
在新卷上启用NetApp卷加密 (NVE);默认设置为 |
“false” 如果指定,则设置为 `true`适用于ASA r2 系统。 |
|
启用LUKS加密。参考"使用 Linux 统一密钥设置 (LUKS)"。 |
设置为 `false`适用于ASA r2 系统。 |
|
分层策略使用“无” 请勿为ASA r2 系统指定 。 |
|
|
用于创建自定义卷名称的模板。 |
"" |
卷配置示例
以下是一个定义了默认值的示例:
---
version: 1
storageDriverName: ontap-san
managementLIF: 10.0.0.1
svm: trident_svm
username: admin
password: <password>
labels:
k8scluster: dev2
backend: dev2-sanbackend
storagePrefix: alternate-trident
debugTraceFlags:
api: false
method: true
defaults:
spaceReserve: volume
qosPolicy: standard
spaceAllocation: 'false'
snapshotPolicy: default
snapshotReserve: '10'
|
|
对于使用以下方式创建的所有卷 `ontap-san`驱动程序Trident为FlexVol增加了 10% 的额外容量,以容纳 LUN 元数据。 LUN 将按照用户在 PVC 中请求的确切大小进行配置。 Trident使FlexVol增加 10%(在ONTAP中显示为可用尺寸)。用户现在将获得他们所申请的可用容量。此项更改还可以防止 LUN 在可用空间未完全利用之前变为只读。这不适用于 ontap-san-economy。 |
对于定义后端 `snapshotReserve`Trident计算体积大小的方法如下:
Total volume size = [(PVC requested size) / (1 - (snapshotReserve percentage) / 100)] * 1.1
1.1 是Trident为容纳 LUN 元数据而额外添加到FlexVol 的10%。为了 snapshotReserve= 5%,PVC 请求 = 5 GiB,总体积大小为 5.79 GiB,可用大小为 5.5 GiB。这 `volume show`该命令应显示与此示例类似的结果:
目前,调整大小是将新计算方法应用于现有体积的唯一途径。
最小配置示例
以下示例展示了基本配置,其中大多数参数都保留默认值。这是定义后端最简单的方法。
|
|
如果您在NetApp ONTAP上使用Amazon FSx和Trident, NetApp建议您为 LIF 指定 DNS 名称而不是 IP 地址。 |
ONTAP SAN 示例
这是使用以下方法的基本配置: `ontap-san`司机。
---
version: 1
storageDriverName: ontap-san
managementLIF: 10.0.0.1
svm: svm_iscsi
labels:
k8scluster: test-cluster-1
backend: testcluster1-sanbackend
username: vsadmin
password: <password>
MetroCluster示例
您可以配置后端,以避免在切换和切换回后端后手动更新后端定义。"SVM复制和恢复" 。
为了实现无缝切换和切换回,请指定 SVM `managementLIF`并省略 `svm`参数。例如:
version: 1
storageDriverName: ontap-san
managementLIF: 192.168.1.66
username: vsadmin
password: password
ONTAP SAN 经济示例
version: 1
storageDriverName: ontap-san-economy
managementLIF: 10.0.0.1
svm: svm_iscsi_eco
username: vsadmin
password: <password>
基于证书的身份验证示例
在这个基本配置示例中 clientCertificate, clientPrivateKey , 和 trustedCACertificate(如果使用受信任的 CA,则为可选) `backend.json`分别取客户端证书、私钥和受信任 CA 证书的 base64 编码值。
---
version: 1
storageDriverName: ontap-san
backendName: DefaultSANBackend
managementLIF: 10.0.0.1
svm: svm_iscsi
useCHAP: true
chapInitiatorSecret: cl9qxIm36DKyawxy
chapTargetInitiatorSecret: rqxigXgkesIpwxyz
chapTargetUsername: iJF4heBRT0TCwxyz
chapUsername: uh2aNCLSd6cNwxyz
clientCertificate: ZXR0ZXJwYXB...ICMgJ3BhcGVyc2
clientPrivateKey: vciwKIyAgZG...0cnksIGRlc2NyaX
trustedCACertificate: zcyBbaG...b3Igb3duIGNsYXNz
双向 CHAP 示例
这些示例创建了一个后端。 useCHAP`设置为 `true。
---
version: 1
storageDriverName: ontap-san
managementLIF: 10.0.0.1
svm: svm_iscsi
labels:
k8scluster: test-cluster-1
backend: testcluster1-sanbackend
useCHAP: true
chapInitiatorSecret: cl9qxIm36DKyawxy
chapTargetInitiatorSecret: rqxigXgkesIpwxyz
chapTargetUsername: iJF4heBRT0TCwxyz
chapUsername: uh2aNCLSd6cNwxyz
username: vsadmin
password: <password>
---
version: 1
storageDriverName: ontap-san-economy
managementLIF: 10.0.0.1
svm: svm_iscsi_eco
useCHAP: true
chapInitiatorSecret: cl9qxIm36DKyawxy
chapTargetInitiatorSecret: rqxigXgkesIpwxyz
chapTargetUsername: iJF4heBRT0TCwxyz
chapUsername: uh2aNCLSd6cNwxyz
username: vsadmin
password: <password>
NVMe/TCP 示例
您的ONTAP后端必须配置有使用 NVMe 的 SVM。这是 NVMe/TCP 的基本后端配置。
---
version: 1
backendName: NVMeBackend
storageDriverName: ontap-san
managementLIF: 10.0.0.1
svm: svm_nvme
username: vsadmin
password: password
sanType: nvme
useREST: true
SCSI over FC (FCP) 示例
您的ONTAP后端必须配置有 FC 的 SVM。这是 FC 的基本后端配置。
---
version: 1
backendName: fcp-backend
storageDriverName: ontap-san
managementLIF: 10.0.0.1
svm: svm_fc
username: vsadmin
password: password
sanType: fcp
useREST: true
使用 nameTemplate 的后端配置示例
---
version: 1
storageDriverName: ontap-san
backendName: ontap-san-backend
managementLIF: <ip address>
svm: svm0
username: <admin>
password: <password>
defaults:
nameTemplate: "{{.volume.Name}}_{{.labels.cluster}}_{{.volume.Namespace}}_{{.vo\
lume.RequestName}}"
labels:
cluster: ClusterA
PVC: "{{.volume.Namespace}}_{{.volume.RequestName}}"
ontap-san-economy 驱动程序的 formatOptions 示例
---
version: 1
storageDriverName: ontap-san-economy
managementLIF: ""
svm: svm1
username: ""
password: "!"
storagePrefix: whelk_
debugTraceFlags:
method: true
api: true
defaults:
formatOptions: -E nodiscard
具有虚拟池的后端示例
在这些示例后端定义文件中,所有存储池都设置了特定的默认值,例如: `spaceReserve`没有, `spaceAllocation`为假,并且 `encryption`为假。虚拟池在存储部分中定义。
Trident在“备注”字段中设置配置标签。在FlexVol volume上设置注释。Trident 在配置时Trident虚拟池上存在的所有标签复制到存储卷。为了方便起见,存储管理员可以为每个虚拟池定义标签,并按标签对卷进行分组。
在这些示例中,一些存储池会设置自己的参数。 spaceReserve , spaceAllocation , 和 `encryption`有些值会覆盖默认值,有些池会覆盖默认值。
ONTAP SAN 示例
---
version: 1
storageDriverName: ontap-san
managementLIF: 10.0.0.1
svm: svm_iscsi
useCHAP: true
chapInitiatorSecret: cl9qxIm36DKyawxy
chapTargetInitiatorSecret: rqxigXgkesIpwxyz
chapTargetUsername: iJF4heBRT0TCwxyz
chapUsername: uh2aNCLSd6cNwxyz
username: vsadmin
password: <password>
defaults:
spaceAllocation: "false"
encryption: "false"
qosPolicy: standard
labels:
store: san_store
kubernetes-cluster: prod-cluster-1
region: us_east_1
storage:
- labels:
protection: gold
creditpoints: "40000"
zone: us_east_1a
defaults:
spaceAllocation: "true"
encryption: "true"
adaptiveQosPolicy: adaptive-extreme
- labels:
protection: silver
creditpoints: "20000"
zone: us_east_1b
defaults:
spaceAllocation: "false"
encryption: "true"
qosPolicy: premium
- labels:
protection: bronze
creditpoints: "5000"
zone: us_east_1c
defaults:
spaceAllocation: "true"
encryption: "false"
ONTAP SAN 经济示例
---
version: 1
storageDriverName: ontap-san-economy
managementLIF: 10.0.0.1
svm: svm_iscsi_eco
useCHAP: true
chapInitiatorSecret: cl9qxIm36DKyawxy
chapTargetInitiatorSecret: rqxigXgkesIpwxyz
chapTargetUsername: iJF4heBRT0TCwxyz
chapUsername: uh2aNCLSd6cNwxyz
username: vsadmin
password: <password>
defaults:
spaceAllocation: "false"
encryption: "false"
labels:
store: san_economy_store
region: us_east_1
storage:
- labels:
app: oracledb
cost: "30"
zone: us_east_1a
defaults:
spaceAllocation: "true"
encryption: "true"
- labels:
app: postgresdb
cost: "20"
zone: us_east_1b
defaults:
spaceAllocation: "false"
encryption: "true"
- labels:
app: mysqldb
cost: "10"
zone: us_east_1c
defaults:
spaceAllocation: "true"
encryption: "false"
- labels:
department: legal
creditpoints: "5000"
zone: us_east_1c
defaults:
spaceAllocation: "true"
encryption: "false"
NVMe/TCP 示例
---
version: 1
storageDriverName: ontap-san
sanType: nvme
managementLIF: 10.0.0.1
svm: nvme_svm
username: vsadmin
password: <password>
useREST: true
defaults:
spaceAllocation: "false"
encryption: "true"
storage:
- labels:
app: testApp
cost: "20"
defaults:
spaceAllocation: "false"
encryption: "false"
将后端映射到存储类
以下 StorageClass 定义指的是具有虚拟池的后端示例。使用 `parameters.selector`字段中,每个 StorageClass 都会指出哪些虚拟池可用于托管卷。卷将具有所选虚拟池中定义的各个方面。
-
这 `protection-gold`StorageClass 将映射到第一个虚拟池。 `ontap-san`后端。这是唯一提供黄金级保护的泳池。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-gold provisioner: csi.trident.netapp.io parameters: selector: "protection=gold" fsType: "ext4" -
这 `protection-not-gold`StorageClass 将映射到第二个和第三个虚拟池。 `ontap-san`后端。除了黄金级别之外,只有这些金池提供其他级别的保护。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-not-gold provisioner: csi.trident.netapp.io parameters: selector: "protection!=gold" fsType: "ext4" -
这 `app-mysqldb`StorageClass 将映射到第三个虚拟池 `ontap-san-economy`后端。这是唯一一个为mysqldb类型应用程序提供存储池配置的存储池。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: app-mysqldb provisioner: csi.trident.netapp.io parameters: selector: "app=mysqldb" fsType: "ext4" -
这 `protection-silver-creditpoints-20k`StorageClass 将映射到第二个虚拟池 `ontap-san`后端。这是唯一提供银级保护和 20000 积分的彩池。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-silver-creditpoints-20k provisioner: csi.trident.netapp.io parameters: selector: "protection=silver; creditpoints=20000" fsType: "ext4" -
这 `creditpoints-5k`StorageClass 将映射到第三个虚拟池 `ontap-san`后端和第四个虚拟池 `ontap-san-economy`后端。这是唯一提供 5000 积分的彩池产品。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: creditpoints-5k provisioner: csi.trident.netapp.io parameters: selector: "creditpoints=5000" fsType: "ext4" -
这
my-test-app-sc`StorageClass 将映射到 `testAPP`虚拟池 `ontap-san`司机 `sanType: nvme。这是唯一一家提供泳池的公司testApp。--- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-test-app-sc provisioner: csi.trident.netapp.io parameters: selector: "app=testApp" fsType: "ext4"
Trident将决定选择哪个虚拟池,并确保满足存储需求。