Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

ONTAP SAN 配置選項和範例

貢獻者 netapp-aruldeepa

了解如何在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 系統。

後端配置選項

請參閱下表以了解後端配置選項:

範圍 描述 預設

version

始終為 1

storageDriverName

儲存驅動程式的名稱

ontap-san`或者 `ontap-san-economy

backendName

自訂名稱或儲存後端

驅動程式名稱 + "_" + dataLIF

managementLIF

叢集或 SVM 管理 LIF 的 IP 位址。

可以指定一個完全限定網域名稱(FQDN)。

如果Trident安裝時使用了 IPv6 標誌,則可以設定為使用 IPv6 位址。 IPv6 位址必須用方括號定義,例如: [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]

為了實現MetroCluster 的無縫切換,請參閱MetroCluster範例

註 如果您使用的是「vsadmin」憑證, `managementLIF`必須是SVM的憑證;如果使用「admin」憑證, `managementLIF`必須是集群的那個。

"10.0.0.1", "[2001:1234:abcd::fefe]"

dataLIF

LIF協定的IP位址。如果Trident安裝時使用了 IPv6 標誌,則可以設定為使用 IPv6 位址。 IPv6 位址必須用方括號定義,例如: [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555] 。 *請勿指定使用 iSCSI。 *Trident的使用"ONTAP選擇性 LUN 地圖"發現建立多路徑會話所需的 iSCSI LIF。如果出現以下情況,則會產生警告: `dataLIF`已明確定義。 *Metrocluster 除外。 *查看MetroCluster範例

由支援向量機導出

svm

要使用的儲存虛擬機器 *Metrocluster 除外。 *查看MetroCluster範例

如果是 SVM 則推導而來 `managementLIF`已指定

useCHAP

使用 CHAP 對ONTAP SAN 驅動程式的 iSCSI 進行驗證 [布林值]。設定為 `true`讓Trident配置並使用雙向 CHAP 作為後端給定 SVM 的預設身份驗證。參考 "準備配置後端ONTAP SAN 驅動程式" 了解詳情。 *不支援FCP或NVMe/TCP協定。 *

false

chapInitiatorSecret

CHAP 發起者金鑰。如果是必填項 useCHAP=true

“”

labels

若要套用於磁碟區的任意 JSON 格式標籤集

“”

chapTargetInitiatorSecret

CHAP 目標發起者金鑰。如果是必填項 useCHAP=true

“”

chapUsername

入站用戶名。如果是必填項 useCHAP=true

“”

chapTargetUsername

目標用戶名。如果是必填項 useCHAP=true

“”

clientCertificate

用戶端憑證的 Base64 編碼值。用於基於憑證的身份驗證

“”

clientPrivateKey

客戶端私鑰的 Base64 編碼值。用於基於憑證的身份驗證

“”

trustedCACertificate

受信任 CA 憑證的 Base64 編碼值。選修的。用於基於憑證的身份驗證。

“”

username

與ONTAP叢集通訊所需的使用者名稱。用於基於憑證的身份驗證。有關 Active Directory 驗證,請參閱 "使用 Active Directory 憑證向後端 SVM 驗證Trident 的身份"

“”

password

與ONTAP集群通訊所需的密碼。用於基於憑證的身份驗證。有關 Active Directory 驗證,請參閱 "使用 Active Directory 憑證向後端 SVM 驗證Trident 的身份"

“”

svm

使用的儲存虛擬機

如果是 SVM 則推導而來 `managementLIF`已指定

storagePrefix

在 SVM 中配置新磁碟區時所使用的前綴。之後無法修改。要更新此參數,您需要建立一個新的後端。

trident

aggregate

用於配置的聚合(可選;如果設置,則必須指派給 SVM)。對於 `ontap-nas-flexgroup`驅動程序,此選項將被忽略。如果未分配,則可以使用任何可用的聚合來配置FlexGroup磁碟區。

註 當 SVM 中的聚合資料更新時, Trident會自動輪詢 SVM 進行更新,而無需重新啟動Trident控制器。當您在Trident中配置特定聚合以配置磁碟區時,如果該聚合被重新命名或移出 SVM,則在輪詢 SVM 聚合時, Trident中的後端將變為失敗狀態。您必須將聚合變更為 SVM 上存在的聚合,或將其完全刪除,才能使後端恢復連線。

請勿指定用於ASA r2 系統

“”

limitAggregateUsage

如果使用率超過此百分比,則配置失敗。如果您使用的是Amazon FSx for NetApp ONTAP後端,請勿指定 limitAggregateUsage。提供的 `fsxadmin`和 `vsadmin`不包含檢索匯總使用情況和使用Trident限制它所需的權限。 請勿指定用於ASA r2 系統

(預設不強制執行)

limitVolumeSize

如果請求的磁碟區大小大於此值,則配置失敗。同時限制其管理的 LUN 卷的最大大小。

(預設不強制執行)

lunsPerFlexvol

每個 Flexvol 的最大 LUN 數量必須在 [50, 200] 範圍內

100

debugTraceFlags

故障排除時要使用的調試標誌。例如,{"api":false, "method":true} 除非您正在進行故障排除並且需要詳細的日誌轉儲,否則請勿使用此方法。

null

useREST

使用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 標準。

註 NVMe 僅支援ONTAP REST API,不支援 ONTAPI (ZAPI)。

如果指定,則始終設定為 `true`適用於ASA r2 系統

true`適用於ONTAP 9.15.1 或更高版本,否則 `false

sanType

用於選擇 `iscsi`對於 iSCSI, `nvme`適用於 NVMe/TCP 或 `fcp`用於光纖通道 (FC) 上的 SCSI。

`iscsi`如果為空

formatOptions

使用 `formatOptions`為以下情況指定命令列參數 `mkfs`該命令將在每次格式化磁碟區時套用。這樣您就可以根據自己的喜好格式化音量。請確保指定與 mkfs 指令選項類似的 formatOptions,但不包含裝置路徑。例如:“-E nodiscard”

*支援 `ontap-san`和 `ontap-san-economy`支援 iSCSI 協定的驅動程式。 * *此外,在使用 iSCSI 和 NVMe/TCP 協定時, ASA r2 系統也受支援。 *

limitVolumePoolSize

在 ontap-san-economy 後端使用 LUN 時可請求的最大FlexVol大小。

(預設不強制執行)

denyNewVolumePools

限制 `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 網域控制站存取" 了解詳情。

步驟
  1. 為後端 SVM 配置網域名稱系統 (DNS) 設定:

    vserver services dns create -vserver <svm_name> -dns-servers <dns_server_ip1>,<dns_server_ip2>

  2. 執行下列命令在 Active Directory 中為 SVM 建立電腦帳戶:

    vserver active-directory create -vserver DataSVM -account-name ADSERVER1 -domain demo.netapp.com

  3. 使用此命令建立 AD 使用者或群組來管理叢集或 SVM

    security login create -vserver <svm_name> -user-or-group-name <ad_user_or_group> -application <application> -authentication-method domain -role vsadmin

  4. 在Trident後端設定檔中,設定 usernamepassword 參數分別為 AD 使用者或群組名稱和密碼。

用於配置磁碟區的後端配置選項

您可以使用下列選項控制預設配置。 `defaults`配置部分。例如,請參閱下面的設定範例。

範圍 描述 預設

spaceAllocation

LUN 的空間分配

“true” 如果指定,則設定為 `true`適用於ASA r2 系統

spaceReserve

空間預留模式;「無」(細)或「大量」(粗)。 設定為 `none`適用於ASA r2 系統。

“沒有任何”

snapshotPolicy

要使用的快照策略。 設定為 `none`適用於ASA r2 系統

“沒有任何”

qosPolicy

若要為建立的磁碟區指派的 QoS 策略群組。每個儲存池/後端選擇 qosPolicy 或 adaptiveQosPolicy 之一。將 QoS 策略群組與Trident結合使用需要ONTAP 9.8 或更高版本。您應該使用非共享的 QoS 策略群組,並確保該策略群組單獨套用至每個成員。共享的 QoS 策略群組強制規定所有工作負載的總吞吐量上限。

“”

adaptiveQosPolicy

若要為建立的磁碟區指派的自適應 QoS 策略群組。每個儲存池/後端選擇 qosPolicy 或 adaptiveQosPolicy 之一

“”

snapshotReserve

為快照預留的磁碟區百分比。 請勿指定用於ASA r2 系統

如果為“0”, `snapshotPolicy`為“無”,否則為“

splitOnClone

創建時將克隆體從其母體中分離出來

“錯誤的”

encryption

在新磁碟區啟用NetApp磁碟區加密 (NVE);預設為 false。若要使用此選項,必須在叢集上取得 NVE 許可並啟用 NVE。如果後端啟用了 NAE,則在Trident中配置的任何磁碟區都會啟用 NAE。更多信息,請參閱:"Trident如何與 NVE 和 NAE 協同工作"

“false” 如果指定,則設定為 `true`適用於ASA r2 系統

luksEncryption

啟用LUKS加密。參考"使用 Linux 統一金鑰設定 (LUKS)"

設定為 `false`適用於ASA r2 系統

tieringPolicy

分層策略使用「無」 請勿為ASA r2 系統指定

nameTemplate

用於建立自訂磁碟區名稱的範本。

“”

卷配置範例

以下是一個定義了預設值的範例:

---
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`該命令應顯示與此範例類似的結果:

顯示 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>
基於憑證的身份驗證範例

在這個基本設定範例中 clientCertificateclientPrivateKey , 和 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

ONTAP SAN CHAP 範例
---
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>
ONTAP SAN 經濟 CHAP 範例
---
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在「備註」欄位中設定配置標籤。在配置時, Trident會將虛擬池上的所有標籤複製到儲存卷,並在FlexVol volume上設定註解。為了方便起見,儲存管理員可以為每個虛擬池定義標籤,並按標籤將磁碟區分組。

在這些範例中,一些儲存池會設定自己的參數。 spaceReservespaceAllocation , 和 `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將決定選擇哪個虛擬池,並確保滿足儲存需求。