【ONTAP管理操作】SnapMirrorのFan-out構成からCascade構成への変換

## はじめに
本記事では、Netapp社のStorage OSであるONTAPのReplication機能(SnapMirror)について、**SnapMirrorのFan-out構成からCascade構成への変換を実施**します。


Cascade構成に変換するにあたって、Mirror元からのデータを初期転送する必要は無く、BaseとなるSnapshotがある限り差分転送(再同期)で対応可能です。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/2d5031f2-a934-48bc-630f-9c916fd8c2f2.png>

## それぞれの構成におけるメリット
### **Fanout**
一つのSource Volumeから複数TargetへのReplication構成になります。
一つのSourceから複数の地理的に分散した場所にデータを同期させる必要がある場合に有用で、**データセンターが複数のリージョンに分散している場合や、複数のバックアップやテスト環境が必要な場合**などにデータの可用性を高め、リスクを分散することができます。
<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/099fc6ce-82a8-2aae-e202-a623a809c94f.png>

###  **Cascade**
Source VolumeからTargetへのReplicationから別Targetへと連鎖的に行われる構成になります。
**データの複製を段階的に行いたい場合や、負荷を分散させる必要がある場合、特定のワークフローに沿ってデータを移動させる必要がある場合**に有用で、Cascadeは、データを特定の順序で複製し、データ管理の柔軟性を提供します。

<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/6b7e7fd8-d146-4c21-02b7-e393095186f0.png>


## 何をしたい？できる？
- SnapMirrorのFan-out構成からCascade構成への変換

## 記事における環境情報
本記事では、以下の環境で実施した内容となります。
- ONTAP  : 9.13.1

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/fd182b57-3766-97cf-218a-319818167bb7.png>

**Clusterを3つ用意できなかったので、2つで疑似的な環境を構成しています。**



## Fan-out構成からCascade構成への変換手順

Cascade構成を取るにあたって、以下表の構成がサポートされていますが、本記事ではSnapMirror+SnapMirrrorのCascade構成を作成します。

|2次バックアップ  |3次バックアップ|サポートの有無|
|---|---|---|
|SnapMirror |SnapMirror|〇|
|SnapMirror |SnapVault|〇|
|SnapVault |SnapMirror|〇|
|SnapVault |SnapVault|〇|






### 1. Source Volumeから2か所にSnapMirrorの実施

まずはFan-Out構成でSnapMirrorが設定されている事を確認します。

<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/ac602b6e-57c2-a5bd-cb0c-bacc1e850d82.png>


```bash:
# Cluster#2側でPeerの関係性の確認
> cluster peer show
Peer Cluster Name         Cluster Serial Number Availability   Authentication
------------------------- --------------------- -------------- --------------
cluster1                  1-80-000011           Available      ok


> vserver peer show
            Peer        Peer                           Peering        Remote
Vserver     Vserver     State        Peer Cluster      Applications   Vserver
----------- ----------- ------------ ----------------- -------------- ---------
svm02       svm01       peered       cluster1          snapmirror     svm01
svm03       svm01       peered       cluster1          snapmirror     svm01
2 entries were displayed.


# Cluster#2側でSnapMirrorの確認
> snapmirror show
                                                                       Progress
Source            Destination Mirror  Relationship   Total             Last
Path        Type  Path        State   Status         Progress  Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm01:vol01 XDP  svm02:vol01_dr1
                              Snapmirrored
                                      Idle           -         true    -
                 svm03:vol01_dr2
                              Snapmirrored
                                      Idle           -         true    -
2 entries were displayed.
```

各Volumeで共通Snapshotがある事の確認
```bash:
# Cluster#1側で実施
> snapshot show -vserver svm01 -volume vol01
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm01    vol01
                  snap01                                   160KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                           136KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_094104
                                                           136KB     0%    0%
3 entries were displayed.

# Cluster#2側で実施
> snapshot show -volume vol01*
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm02    vol01_dr1
                  snap01                                   192KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_093819
                                                           184KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_093826
                                                           220KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                           148KB     0%    0%
svm03    vol01_dr2
                  snap01                                   192KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_093826
                                                           224KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                           184KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_094104
                                                           140KB     0%    0%
8 entries were displayed.

```


### 2. 片方のMirror設定の解除(Break)
SVM svm03のvol01_dr2におけるMirror構成をBreakします。
<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/70475aab-e818-cc4f-487b-fdd6ad9365db.png>



```bash:
# Cluster#2側で実施
> snapmirror break -destination-path svm03:vol01_dr2
Operation succeeded: snapmirror break for destination "svm03:vol01_dr2".

> snapmirror show
                                                                       Progress
Source            Destination Mirror  Relationship   Total             Last
Path        Type  Path        State   Status         Progress  Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm01:vol01 XDP  svm02:vol01_dr1
                              Snapmirrored
                                      Idle           -         true    -
                 svm03:vol01_dr2
                              Broken-off
                                      Idle           -         true    -
2 entries were displayed.
```

### 3. 片方のMirror設定の削除(Delete)
SVM svm03のvol01_dr2におけるMirror構成を削除します

<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/cdb8c36f-ba63-5799-f939-909a86250f17.png>


```bash:
# Cluster#2側で実施
> snapmirror delete -destination-path svm03:vol01_dr2
Operation succeeded: snapmirror delete for the relationship with destination "svm03:vol01_dr2".


> snapmirror show
                                                                       Progress
Source            Destination Mirror  Relationship   Total             Last
Path        Type  Path        State   Status         Progress  Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm01:vol01 XDP  svm02:vol01_dr1
                              Snapmirrored
                                      Idle           -         true    -
```

### 4. cascadeするSVM間でpeer関係を構築する

本記事では2cluster構成なので、SVM peerの構成のみ実施します。
<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/7daa8e1b-96b9-780b-78ea-af53161da6ff.png>


```bash:
# Cluster#2側で実施
> vserver peer create -vserver svm02 -peer-vserver svm03 -applications snapmirror
Info: 'vserver peer create' command is successful.


> vserver peer show
            Peer        Peer                           Peering        Remote
Vserver     Vserver     State        Peer Cluster      Applications   Vserver
----------- ----------- ------------ ----------------- -------------- ---------
svm02       svm01       peered       cluster1          snapmirror     svm01
svm02       svm03       peered       cluster2          snapmirror     svm03
svm03       svm01       peered       cluster1          snapmirror     svm01
svm03       svm02       peered       cluster2          snapmirror     svm02
4 entries were displayed.

```

### 5. Mirror Volume同士だったVolumeをSnapMirror(resync)

SVM svm02のvol01_dr1とsvm03のvol01_dr2におけるSnapMirrorをresycを使い再同期します。
<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/e510d7bb-c9e1-57b4-a73a-f2352fa80cb2.png>


```bash:
# Cluster#2側で実施
> snapmirror resync -source-path svm02:vol01_dr1 -destination-path svm03:vol01_dr2 -policy MirrorAllSnapshots

Warning: All data newer than Snapshot copy
         snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058 on volume svm03:vol01_dr2 will
         be deleted.
Do you want to continue? {y|n}: y
Operation is queued: initiate snapmirror resync to destination "svm03:vol01_dr2".


> snapmirror show                                                                                                                                                                  Progress
Source            Destination Mirror  Relationship   Total             Last
Path        Type  Path        State   Status         Progress  Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm01:vol01 XDP  svm02:vol01_dr1
                              Snapmirrored
                                      Idle           -         true    -
svm02:vol01_dr1
            XDP  svm03:vol01_dr2
                              Snapmirrored
                                      Idle           -         true    -
2 entries were displayed.

> snapshot show -volume vol01*
                                                                ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm02    vol01_dr1
                  snap01                                   192KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_093819
                                                           184KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_093826
                                                           220KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                           148KB     0%    0%
svm03    vol01_dr2
                  snap01                                   192KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_093826
                                                           224KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                           160KB     0%    0%
7 entries were displayed.

```

### 6. SnapMirrorの更新
下図の①、②の順にSnapMirrorの更新を実施します。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/5b1a042c-3f45-f277-b6e5-9a1ca7bae434.png>



```bash:
# Cluster#2側で実施
> snapmirror update -destination-path svm02:vol01_dr1
Operation is queued: snapmirror update of destination "svm02:vol01_dr1".

#上記の転送が終わった後に実施
> snapmirror update -destination-path svm03:vol01_dr2
Operation is queued: snapmirror update of destination "svm03:vol01_dr2".

> snapmirror show
                                                                       Progress
Source            Destination Mirror  Relationship   Total             Last
Path        Type  Path        State   Status         Progress  Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm01:vol01 XDP  svm02:vol01_dr1
                              Snapmirrored
                                      Idle           -         true    -
svm02:vol01_dr1
            XDP  svm03:vol01_dr2
                              Snapmirrored
                                      Idle           -         true    -
2 entries were displayed.
```

Source側のSnapMirror用Snapshotが全Volumeに転送されている事を確認します。
```bash:
# Cluster#1側で実施
> snapshot show -vserver svm01 -volume vol01
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm01    vol01
                  snap01                                   160KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                           136KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_094104
                                                           136KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_102744
                                                           144KB     0%    0%
4 entries were displayed.



# Cluster#2側で実施
> snapshot show -volume vol01*
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm02    vol01_dr1
                  snap01                                   228KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                           184KB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_094104
                                                           184KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_102744
                                                           136KB     0%    0%
svm03    vol01_dr2
                  snap01                                   232KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_094058
                                                          4.58MB     0%    0%
                  snapmirror.43b06759-ae08-11ee-8648-005056b77c22_2154890293.2024-01-08_094104
                                                           184KB     0%    0%
                  snapmirror.3a0cc65f-ae08-11ee-8648-005056b77c22_2154890292.2024-01-08_102744
                                                           136KB     0%    0%
8 entries were displayed.
```


## 参考及びリンク
[SnapMirror configuration and best practices guide for ONTAP 9](https://www.netapp.com/pdf.html?item=/media/17229-tr4015pdf.pdf)

[SnapMirror カスケード関係の設定方法](https://kb-ja.netapp.com/onprem/ontap/dp/SnapMirror/How_to_configure_SnapMirror_cascade_relationship)

[ファンアウト構成およびカスケード構成のデータ保護](https://docs.netapp.com/ja-jp/ontap/data-protection/supported-deployment-config-concept.html#%E3%83%95%E3%82%A1%E3%83%B3%E3%82%A2%E3%82%A6%E3%83%88%E6%A7%8B%E6%88%90%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF)