SnapMirrorを使用してボリュームを複製する
Trident は、災害復旧のためにデータを複製するために、1 つのクラスター上のソース ボリュームとピア クラスター上の宛先ボリューム間のミラー関係をサポートします。 Trident Mirror Relationship (TMR) と呼ばれる名前空間付きのカスタム リソース定義 (CRD) を使用して、次の操作を実行できます。
-
ボリューム間のミラー関係を作成する(PVC)
-
ボリューム間のミラー関係を削除する
-
鏡の関係を破る
-
災害発生時にセカンダリボリュームを昇格する(フェイルオーバー)
-
計画されたフェイルオーバーまたは移行中に、クラスタ間でアプリケーションのロスレス移行を実行します。
レプリケーションの前提条件
始める前に、次の前提条件が満たされていることを確認してください。
-
* Trident *: ONTAP をバックエンドとして使用するソース Kubernetes クラスターと宛先 Kubernetes クラスターの両方に、 Tridentバージョン 22.10 以降が存在している必要があります。
-
ライセンス: データ保護バンドルを使用するONTAP SnapMirror非同期ライセンスは、ソースと宛先の両方のONTAPクラスタで有効にする必要があります。参照 "ONTAPにおけるSnapMirrorライセンスの概要"詳細についてはこちらをご覧ください。
ONTAP 9.10.1以降では、すべてのライセンスがNetAppライセンス ファイル(NLF)として提供されます。これは、複数の機能を有効にする単一のファイルです。参照"ONTAP Oneに含まれるライセンス"詳細についてはこちらをご覧ください。
SnapMirror非同期保護のみがサポートされます。
-
クラスタと SVM: ONTAPストレージ バックエンドをピアリングする必要があります。参照 "クラスタとSVMのピアリングの概要"詳細についてはこちらをご覧ください。
2 つのONTAPクラスタ間のレプリケーション関係で使用される SVM 名が一意であることを確認します。 -
* Tridentと SVM*: ピア接続されたリモート SVM は、宛先クラスター上のTridentで使用できる必要があります。
NetApp Trident は、次のドライバーでサポートされるストレージ クラスを使用して、 NetApp SnapMirrorテクノロジによるボリューム レプリケーションをサポートします。 ontap-nas : NFS ontap-san : iSCSI ontap-san : FC ontap-san : NVMe/TCP (最低でもONTAPバージョン 9.15.1 が必要)
|
|
SnapMirrorを使用したボリューム レプリケーションは、 ASA r2 システムではサポートされていません。 ASA r2システムの詳細については、以下を参照してください。"ASA r2 ストレージシステムについて学ぶ" 。 |
ミラーPVCを作成する
次の手順に従って、CRD の例を使用して、プライマリ ボリュームとセカンダリ ボリューム間のミラー関係を作成します。
-
プライマリ Kubernetes クラスターで次の手順を実行します。
-
StorageClassオブジェクトを作成し、 `trident.netapp.io/replication: true`パラメータ。
例apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-nas provisioner: csi.trident.netapp.io parameters: backendType: "ontap-nas" fsType: "nfs" trident.netapp.io/replication: "true" -
以前に作成した StorageClass を使用して PVC を作成します。
例kind: PersistentVolumeClaim apiVersion: v1 metadata: name: csi-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: csi-nas -
ローカル情報を使用して MirrorRelationship CR を作成します。
例kind: TridentMirrorRelationship apiVersion: trident.netapp.io/v1 metadata: name: csi-nas spec: state: promoted volumeMappings: - localPVCName: csi-nasTrident はボリュームの内部情報とボリュームの現在のデータ保護 (DP) 状態を取得し、MirrorRelationship のステータス フィールドに入力します。
-
TridentMirrorRelationship CR を取得して、PVC の内部名と SVM を取得します。
kubectl get tmr csi-nas
kind: TridentMirrorRelationship apiVersion: trident.netapp.io/v1 metadata: name: csi-nas generation: 1 spec: state: promoted volumeMappings: - localPVCName: csi-nas status: conditions: - state: promoted localVolumeHandle: "datavserver:trident_pvc_3bedd23c_46a8_4384_b12b_3c38b313c1e1" localPVCName: csi-nas observedGeneration: 1
-
-
セカンダリ Kubernetes クラスターで次の手順を実行します。
-
trident.netapp.io/replication: true パラメータを使用して StorageClass を作成します。
例apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-nas provisioner: csi.trident.netapp.io parameters: trident.netapp.io/replication: true -
宛先とソースの情報を含む MirrorRelationship CR を作成します。
例kind: TridentMirrorRelationship apiVersion: trident.netapp.io/v1 metadata: name: csi-nas spec: state: established volumeMappings: - localPVCName: csi-nas remoteVolumeHandle: "datavserver:trident_pvc_3bedd23c_46a8_4384_b12b_3c38b313c1e1"Trident は、設定された関係ポリシー名 (またはONTAPのデフォルト) を使用してSnapMirror関係を作成し、初期化します。
-
以前に作成した StorageClass を使用して、セカンダリ (SnapMirror の宛先) として機能する PVC を作成します。
例kind: PersistentVolumeClaim apiVersion: v1 metadata: name: csi-nas annotations: trident.netapp.io/mirrorRelationship: csi-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: csi-nasTrident はTridentMirrorRelationship CRD をチェックし、関係が存在しない場合はボリュームの作成に失敗します。関係が存在する場合、 Trident は、新しいFlexVol volumeが、MirrorRelationship で定義されたリモート SVM とピアリングされている SVM に配置されるようにします。
-
ボリュームレプリケーションの状態
Trident Mirror Relationship (TMR) は、PVC 間のレプリケーション関係の一方の端を表す CRD です。宛先 TMR には状態があり、これによってTrident に目的の状態が伝えられます。宛先 TMR の状態は次のとおりです。
-
確立済み: ローカル PVC はミラー関係の宛先ボリュームであり、これは新しい関係です。
-
昇格: ローカル PVC は読み取り/書き込み可能でマウント可能であり、現在ミラー関係は有効ではありません。
-
再確立: ローカル PVC はミラー関係の宛先ボリュームであり、以前もそのミラー関係にありました。
-
宛先ボリュームがソース ボリュームと関係があった場合、宛先ボリュームの内容が上書きされるため、再確立された状態を使用する必要があります。
-
ボリュームが以前にソースと関係していなかった場合、再確立された状態は失敗します。
-
計画外のフェイルオーバー中にセカンダリ PVC を昇格する
セカンダリ Kubernetes クラスターで次の手順を実行します。
-
TridentMirrorRelationshipの_spec.state_フィールドを次のように更新します。
promoted。
計画されたフェイルオーバー中にセカンダリ PVC を昇格する
計画されたフェイルオーバー (移行) 中に、次の手順を実行してセカンダリ PVC を昇格します。
-
プライマリ Kubernetes クラスターで、PVC のスナップショットを作成し、スナップショットが作成されるまで待機します。
-
プライマリ Kubernetes クラスターで、内部詳細を取得するための SnapshotInfo CR を作成します。
例kind: SnapshotInfo apiVersion: trident.netapp.io/v1 metadata: name: csi-nas spec: snapshot-name: csi-nas-snapshot -
セカンダリ Kubernetes クラスターで、TridentMirrorRelationship CR の spec.state フィールドを promoted に更新し、spec.promotedSnapshotHandle をスナップショットの internalName に更新します。
-
セカンダリ Kubernetes クラスターで、TridentMirrorRelationship のステータス (status.state フィールド) が昇格されていることを確認します。
フェイルオーバー後にミラー関係を復元する
ミラー関係を復元する前に、新しいプライマリとして作成する側を選択します。
-
セカンダリ Kubernetes クラスターで、TridentMirrorRelationship の spec.remoteVolumeHandle フィールドの値が更新されていることを確認します。
-
セカンダリKubernetesクラスタで、TridentMirrorRelationshipの_spec.mirror_フィールドを次のように更新します。
reestablished。
追加操作
Trident は、プライマリ ボリュームとセカンダリ ボリュームで次の操作をサポートします。
プライマリPVCを新しいセカンダリPVCに複製する
プライマリ PVC とセカンダリ PVC がすでに存在することを確認します。
-
確立されたセカンダリ (宛先) クラスターから PersistentVolumeClaim および TridentMirrorRelationship CRD を削除します。
-
プライマリ (ソース) クラスターから TridentMirrorRelationship CRD を削除します。
-
確立する新しいセカンダリ (宛先) PVC のプライマリ (ソース) クラスターに新しい TridentMirrorRelationship CRD を作成します。
ミラーリングされたプライマリまたはセカンダリ PVC のサイズを変更する
PVC は通常どおりサイズを変更できますが、データの量が現在のサイズを超えると、 ONTAP は宛先 flevxol を自動的に拡張します。
PVCからレプリケーションを削除する
レプリケーションを削除するには、現在のセカンダリ ボリュームに対して次のいずれかの操作を実行します。
-
セカンダリ PVC の MirrorRelationship を削除します。これにより、レプリケーション関係が切断されます。
-
または、spec.state フィールドを promoted に更新します。
PVC を削除する(以前にミラーリングされたもの)
Trident はレプリケートされた PVC をチェックし、ボリュームの削除を試みる前にレプリケーション関係を解放します。
TMRを削除する
ミラー関係の一方の TMR を削除すると、 Trident が削除を完了する前に、残りの TMR が promoted 状態に移行します。削除対象として選択された TMR がすでに promoted 状態にある場合、既存のミラー関係は存在せず、TMR は削除され、 Trident はローカル PVC を ReadWrite に昇格します。この削除により、 ONTAPのローカル ボリュームのSnapMirrorメタデータが解放されます。このボリュームが将来ミラー関係で使用される場合は、新しいミラー関係を作成するときに、ボリュームのレプリケーション状態が確立された新しい TMR を使用する必要があります。
ONTAPがオンラインのときにミラー関係を更新する
ミラー関係は、確立された後はいつでも更新できます。使用することができます `state: promoted`または `state: reestablished`関係を更新するためのフィールド。宛先ボリュームを通常の ReadWrite ボリュームに昇格する場合、promotedSnapshotHandle を使用して、現在のボリュームを復元する特定のスナップショットを指定できます。
ONTAPがオフラインのときにミラー関係を更新する
CRD を使用すると、 Trident がONTAPクラスタに直接接続されていなくても、 SnapMirror の更新を実行できます。 TridentActionMirrorUpdate の次の例の形式を参照してください。
apiVersion: trident.netapp.io/v1
kind: TridentActionMirrorUpdate
metadata:
name: update-mirror-b
spec:
snapshotHandle: "pvc-1234/snapshot-1234"
tridentMirrorRelationshipName: mirror-b
`status.state`TridentActionMirrorUpdate CRD の状態を反映します。 Succeeded、In Progress、Failed のいずれかの値を取ることができます。