Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

SnapMirrorを使用してボリュームを複製する

共同作成者 netapp-aruldeepa

Trident は、災害復旧のためにデータを複製するために、1 つのクラスター上のソース ボリュームとピア クラスター上の宛先ボリューム間のミラー関係をサポートします。   Trident Mirror Relationship (TMR) と呼ばれる名前空間付きのカスタム リソース定義 (CRD) を使用して、次の操作を実行できます。

  • ボリューム間のミラー関係を作成する(PVC)

  • ボリューム間のミラー関係を削除する

  • 鏡の関係を破る

  • 災害発生時にセカンダリボリュームを昇格する(フェイルオーバー)

  • 計画されたフェイルオーバーまたは移行中に、クラスタ間でアプリケーションのロスレス移行を実行します。

レプリケーションの前提条件

始める前に、次の前提条件が満たされていることを確認してください。

ONTAPクラスタ
  • * 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 の例を使用して、プライマリ ボリュームとセカンダリ ボリューム間のミラー関係を作成します。

手順
  1. プライマリ Kubernetes クラスターで次の手順を実行します。

    1. 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"
    2. 以前に作成した StorageClass を使用して PVC を作成します。

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: csi-nas
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 1Gi
        storageClassName: csi-nas
    3. ローカル情報を使用して MirrorRelationship CR を作成します。

      kind: TridentMirrorRelationship
      apiVersion: trident.netapp.io/v1
      metadata:
        name: csi-nas
      spec:
        state: promoted
        volumeMappings:
        - localPVCName: csi-nas

      Trident はボリュームの内部情報とボリュームの現在のデータ保護 (DP) 状態を取得し、MirrorRelationship のステータス フィールドに入力します。

    4. 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
  2. セカンダリ Kubernetes クラスターで次の手順を実行します。

    1. 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
    2. 宛先とソースの情報を含む 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関係を作成し、初期化します。

    3. 以前に作成した 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-nas

      Trident は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 を昇格します。

手順
  1. プライマリ Kubernetes クラスターで、PVC のスナップショットを作成し、スナップショットが作成されるまで待機します。

  2. プライマリ Kubernetes クラスターで、内部詳細を取得するための SnapshotInfo CR を作成します。

    kind: SnapshotInfo
    apiVersion: trident.netapp.io/v1
    metadata:
      name: csi-nas
    spec:
      snapshot-name: csi-nas-snapshot
  3. セカンダリ Kubernetes クラスターで、TridentMirrorRelationship CR の spec.state フィールドを promoted に更新し、spec.promotedSnapshotHandle をスナップショットの internalName に更新します。

  4. セカンダリ Kubernetes クラスターで、TridentMirrorRelationship のステータス (status.state フィールド) が昇格されていることを確認します。

フェイルオーバー後にミラー関係を復元する

ミラー関係を復元する前に、新しいプライマリとして作成する側を選択します。

手順
  1. セカンダリ Kubernetes クラスターで、TridentMirrorRelationship の spec.remoteVolumeHandle フィールドの値が更新されていることを確認します。

  2. セカンダリKubernetesクラスタで、TridentMirrorRelationshipの_spec.mirror_フィールドを次のように更新します。 reestablished

追加操作

Trident は、プライマリ ボリュームとセカンダリ ボリュームで次の操作をサポートします。

プライマリPVCを新しいセカンダリPVCに複製する

プライマリ PVC とセカンダリ PVC がすでに存在することを確認します。

手順
  1. 確立されたセカンダリ (宛先) クラスターから PersistentVolumeClaim および TridentMirrorRelationship CRD を削除します。

  2. プライマリ (ソース) クラスターから TridentMirrorRelationship CRD を削除します。

  3. 確立する新しいセカンダリ (宛先) 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 の状態を反映します。 SucceededIn ProgressFailed のいずれかの値を取ることができます。