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 系统,如下表所示。
后端配置选项
有关后端配置选项,请参见下表:
参数 | Description | Default | ||
---|---|---|---|---|
|
始终为 1 |
|||
|
存储驱动程序的名称 |
|
||
|
自定义名称或存储后端 |
驱动程序名称+"_"+ dataLIF |
||
|
集群或SVM管理LIF的IP地址。 可以指定完全限定域名(FQDN)。 如果Trident是使用IPv6标志安装的、则可以设置为使用IPv6地址。IPv6地址必须用方括号定义,例如 有关无缝MetroCluster切换的信息,请参见MetroCluster示例。
|
"10.0.0.1"、"[2001:1234:abc:::fefe]" |
||
|
协议 LIF 的 IP 地址。如果Trident是使用IPv6标志安装的、则可以设置为使用IPv6地址。IPv6地址必须用方括号定义,例如 |
由SVM派生 |
||
|
要使用的 Storage Virtual Machine |
如果指定了 SVM |
||
|
使用CHAP对iSCSI的ONTAP SAN驱动程序进行身份验证[布尔值]。将设置为 |
|
||
|
CHAP 启动程序密钥。如果为 |
"" |
||
|
要应用于卷的一组任意 JSON 格式的标签 |
"" |
||
|
CHAP 目标启动程序密钥。如果为 |
"" |
||
|
入站用户名。如果为 |
"" |
||
|
目标用户名。如果为 |
"" |
||
|
客户端证书的 Base64 编码值。用于基于证书的身份验证 |
"" |
||
|
客户端专用密钥的 Base64 编码值。用于基于证书的身份验证 |
"" |
||
|
受信任 CA 证书的 Base64 编码值。可选。用于基于证书的身份验证。 |
"" |
||
|
与ONTAP 集群通信所需的用户名。用于基于凭据的身份验证。 |
"" |
||
|
与ONTAP 集群通信所需的密码。用于基于凭据的身份验证。 |
"" |
||
|
要使用的 Storage Virtual Machine |
如果指定了 SVM |
||
|
在 SVM 中配置新卷时使用的前缀。无法稍后修改。要更新此参数、您需要创建一个新的后端。 |
|
||
|
要配置的聚合(可选;如果设置了聚合,则必须将其分配给 SVM )。对于 `ontap-nas-flexgroup`驱动程序、此选项将被忽略。如果未分配、则 可以使用任何可用聚合来配置FlexGroup卷。
不要指定 ASA r2 系统。 |
"" |
||
|
如果使用量超过此百分比,则配置失败。如果您使用的是Amazon FSx for NetApp ONTAP后端,请勿指定 |
"" (默认情况下不强制实施) |
||
|
如果请求的卷大小超过此值、则配置失败。此外、还会限制它为LUN管理的卷的大小上限。 |
""(默认情况下不强制实施) |
||
|
每个 FlexVol 的最大 LUN 数,必须在 50 , 200 范围内 |
|
||
|
故障排除时要使用的调试标志。例如、{"api":false、"METHO":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、 |
|
||
|
`formatOptions`用于指定命令的命令行参数、每当对卷进行格式化时、都会应用这些参数 `mkfs`。这样、您可以根据偏好格式化卷。请确保指定与mkfs命令选项类似的格式选项,但不包括设备路径。示例:"-E nobdiscard" 支持 `ontap-san`和 `ontap-san-economy`带有 iSCSI 协议的驱动程序。*此外,在使用 iSCSI 和 NVMe/TCP 协议时,支持 ASA r2 系统。* |
|||
|
在LUS-SAN-Economy后端使用ONTAP时可要求的最大FlexVol大小。 |
"" (默认情况下不强制实施) |
||
|
限制 `ontap-san-economy`后端创建新的FlexVol卷以包含其LUN。仅会使用已有的FlexVol配置新的PV. |
有关使用formatOptions的建议
Trident建议使用以下选项来加快格式化过程:
-E NODiscard:
-
保留、不要尝试在mkfs时间丢弃块(丢弃块最初在固态设备和稀疏/精简配置存储上很有用)。此选项将取代已弃用的选项"-K"、并适用于所有文件系统(xfs、ext3和ext4)。
用于配置卷的后端配置选项
您可以在中使用这些选项控制默认配置 defaults
配置部分。有关示例,请参见以下配置示例。
参数 | Description | Default |
---|---|---|
|
LUN 的空间分配 |
"true" 如果指定,则设置为 `true`适用于 ASA r2 系统。 |
|
空间预留模式;"无"(精简)或"卷"(厚)。设置为 `none`适用于 ASA r2 系统。 |
"无" |
|
要使用的Snapshot策略。设置为 `none`适用于 ASA r2 系统。 |
"无" |
|
要为创建的卷分配的 QoS 策略组。选择每个存储池 / 后端的 qosPolicy 或 adaptiveQosPolicy 之一。将QoS策略组与Trident结合使用需要使用ONTAP 9™8或更高版本。您应使用非共享QoS策略组、并确保此策略组分别应用于每个成分卷。共享QoS策略组会对所有工作负载的总吞吐量实施上限。 |
"" |
|
要为创建的卷分配的自适应 QoS 策略组。选择每个存储池 / 后端的 qosPolicy 或 adaptiveQosPolicy 之一 |
"" |
|
为快照预留的卷百分比。不要为 ASA r2 系统指定。 |
如果为"0"、则为"0" |
|
创建克隆时,从其父级拆分该克隆 |
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会将10%的空间添加到FlexVol中(在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和、NetApp建议您为Trident指定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后端为SVM配置NVMe。这是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
基于FC的SCSI (FCP)示例
您必须在ONTAP后端为SVM配置FC。这是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}}"
formatOptions的ONTAP SAN经济驱动程序示例
---
version: 1
storageDriverName: ontap-san-economy
managementLIF: ""
svm: svm1
username: ""
password: "!"
storagePrefix: whelk_
debugTraceFlags:
method: true
api: true
defaults:
formatOptions: -E nodiscard
虚拟池后端示例
在这些示例后端定义文件中、为所有存储池设置了特定默认值、例如 spaceReserve
无、 spaceAllocation
为false、和 encryption
为false。虚拟池在存储部分中进行定义。
Trident会在"Comments"字段中设置配置标签。在配置时、FlexVol volume 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"
将后端映射到 StorageClasses
以下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
后端。只有这些池提供的保护级别不是gold。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将决定选择哪个虚拟池、并确保满足存储要求。