2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【ONTAP管理操作】SnapMirrorからのSnapVaultへの変換について

Last updated at Posted at 2024-01-09

はじめに

SnapVaultは、NetApp社の提供するStorageであるONTAPのデータ保護技術の一部で、バックアップとアーカイブ機能で、データを二次ストレージに効率的にバックアップし、長期間保持することができます。

qiita-square

操作自体は全てsnapmirrorコマンドで実施しているので、分かり難いのですが、端的な違いとしては、Source側よりも多くの世代のVolume Snapshot世代をReplication先に保持できるのがSnapVaultになります。

本記事では、オンプレミス環境でSnapMirrorによるReplication関係をSnapVaultに変換する手順について記載します。

なお、SnapMirror利用時のベストプラクティスはSnapMirror configuration and best practices guide for ONTAP 9を参照下さい。
qiita-square

何をしたい?できる?

  • SnapMirrorの挙動を再確認
  • SnapMirrorのPolicy変更とラベル定義を行い、SnapVaultとして利用

記事における環境情報

本記事では、以下の環境で実施した内容となります。

  • ONTAP : 9.13.1

本記事では、既にSnapMirrorが構築されている環境を前提としています。

環境のイメージとしては以下の通り
Source(本番) Cluster01側 => Destination(DR) Cluster02側という方向で転送します。
qiita-square

SnapMirrorの挙動確認

まずは、全Snapshotが転送されているSnapMirror環境について、
Destination側(Mirror先)だけSnapshot世代が増える事が無い事を確認します。

1. Snapshot世代の比較

Mirror元とMirror先にSnapMirror用のSnapshotとは別に、
user_sanp01,user_sanp02が存在していることが確認できます。

qiita-square
# Cluster#1側の状態
> snapshot show -vserver svm1 -volume vol01
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm1     vol01
                  user_snap01                              140KB     0%    0%
                  user_snap02                              140KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_074524 144KB 0% 0%
3 entries were displayed.


# Cluster#2側の状態
> snapmirror show -vserver svm1_dr -fields Policy
source-path destination-path policy
----------- ---------------- ------------------
svm1:vol01  svm1_dr:vol01_dr MirrorAllSnapshots


> snapshot show -vserver svm1_dr -volume vol01_dr
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm1_dr  vol01_dr
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_070606 188KB 0% 0%
                  user_snap01                              184KB     0%    0%
                  user_snap02                              184KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_074524 136KB 0% 0%
4 entries were displayed.

2. Snapshotローテーション実施後

Source側を2世代のローテーションという前提にしているので、user_snap03を作成してからuser_snap01を削除します。
(通常スケジュール利用で作成及び削除される内容、手動で実施している形です)

qiita-square
# Cluster#1から実施
> snapshot create -vserver svm1 -volume vol01 -snapshot user_snap03

> snapshot delete -vserver svm1 -volume vol01 -snapshot user_snap01
Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "user_snap01" for volume "vol01" in Vserver "svm1" ?
         {y|n}: y


> snapshot show -vserver svm1 -volume vol01
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm1     vol01
                  user_snap02                              140KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_074524 144KB 0% 0%
                  user_snap03                              144KB     0%    0%
3 entries were displayed.

3. SnapMirrorの差分転送を行い、転送されたSnapshotの確認

Destination側のVolumeを所有する為のSVM作成を実施します。
Source側と同じSnapshotが存在する事を確認します。
qiita-square

# Cluster#2側で実施
> snapmirror update -destination-path svm1_dr:vol01_dr
Operation is queued: snapmirror update of destination "svm1_dr:vol01_dr".

> snapshot show -vserver svm1_dr -volume vol01_dr
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm1_dr  vol01_dr
                  user_snap02                              184KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_074524 188KB 0% 0%
                  user_snap03                              184KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_082907 136KB 0% 0%
4 entries were displayed.

SnapVaultへの変更手順

変更前にはスケジュール転送は一旦停止しておきます。
DefaultでVault用のPolicyは用意されていますが、本記事では手動でタイプvaultのPolicy作成する方法を説明します。

なお、Source側のSnapshot保持世代数によっては、Snapshot作成のスケジュールローテーションとSnapMirror転送スケジュールをスクリプトやAPIを使わずにONTAP内で完結させることも可能です。
その場合、タイプをmirror-vaultとして設定することで、管理作業がより簡単になります。

Policy名 バックアップ側で保持するSnapshot タイプ
XDPDefault 日次7+週次52の計59世代 vault
DailyBackup 日次7世代 vault
MirrorAndVault 日次7+週次52+Mirror用の計60世代 mirror-vault

タイプvaultとmirror-vaultの端的な違いは、Replication(SnapMirror転送)に利用されるBaseとなる
Snapshotを専用のものを別途用意するか、手動や日時作成されるSnapshotをBaseにするかの違いになります。

qiita-square

以下のvault利用を例にすると、転送する際に以下の操作がなされた後の図となってます。

  1. Source側でSnapshot(vault_sanp03)を作成
  2. SnapMirror Updateによる転送実施
  3. SourceでSnapshot(vault_sanp02)を削除

つまり、Source側を日時の1世代でローテーションする事を考えた場合に
スケジュール作成のSnapshotでは古い世代の削除がDestination側のClusterに転送が終わるまで削除できないという意味合いになります。(差分転送出来なくなるので)

qiita-square

1. SnapVault用のSnapMirror Policy作成

バックアップ側で保持するSnapshotを5世代で、test_vaultというラベルの付いたSnapshotのみ転送するようにPolicyの作成とルールの追加をバックアップ側のClusterで実施します。

また、バックアップ側クラスタへ転送する際に、基準となるSnapshotはSnapmirror.XXXというSnapshotから、test_labelというラベルの付いたSnapshotに変更されます。

qiita-square
# Cluster#2側で実施
> snapmirror policy create -vserver svm1_dr -policy test_vault -tries 8 -transfer-priority normal -ignore-atime false -restart always -type vault

> snapmirror policy add-rule -vserver svm1_dr -policy test_vault -snapmirror-label test_label -keep 5

2. SnapMirror用のPolicyを変更

Mirror用のPolicyで作成したSnapMirror関係を上記のVault用のPolicyに変更します。

# Cluster#2側で実施
> snapmirror modify -destination-path svm1_dr:vol01_dr -policy test_vault
Operation succeeded: snapmirror modify for the relationship with destination "svm1_dr:vol01_dr".

> snapmirror show -destination-path svm1_dr:vol01_dr -fields policy
source-path destination-path policy
----------- ---------------- ----------
svm1:vol01  svm1_dr:vol01_dr test_vault

3. snapmirror-labelの付いたSnapshotの作成

Cluster#1側(Source側)で、snapshotの作成を実施します。
本記事では、snapmirror-labelの付いたSnapshotのみ転送される事を確認する為、
snapmirror-labelの無いSnapshotの作成も合わせて実施しています。

qiita-square
# Cluster#1側で実施
> snapshot create -vserver svm1 -volume vol01 -snapshot vault_snap01 -snapmirror-label test_label

> snapshot create -vserver svm1 -volume vol01 -snapshot no_label_snap01

> snapshot show -vserver svm1 -volume vol01 -fields snapmirror-label
vserver volume snapshot    snapmirror-label
------- ------ ----------- ----------------
svm1    vol01  user_snap02 -
svm1    vol01  user_snap03 -
svm1    vol01  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_082907 -
svm1    vol01  vault_snap01 test_label
svm1    vol01  no_label_snap01 -
5 entries were displayed.

4. snapmirror updateによる差分転送の実施

Labelの付いたsnapshotのみ転送されている事を確認します。
(user_snaXXやsnapmirror.XXはvaultに変更前から転送されていたもの)

qiita-square
# Cluster#2側で実施
> snapmirror update -destination-path svm1_dr:vol01_dr
Operation is queued: snapmirror update of destination "svm1_dr:vol01_dr".


> snapshot show -vserver svm1_dr -volume vol01_dr
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm1_dr  vol01_dr
                  user_snap02                              184KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_074524 188KB 0% 0%
                  user_snap03                              184KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_082907 184KB 0% 0%
                  vault_snap01                             136KB     0%    0%
5 entries were displayed.

Labelの付いたsnapshotを1世代でローテーションを繰り返しても、バックアップ先Clusterには複数世代保持されている事が確認できます。
qiita-square

# Cluster#1側でラベルのついたSnapshot作成を実施
> snapshot create -vserver svm1 -volume vol01 -snapshot vault_snap02 -snapmirror-label test_label


# Cluster#2側で差分転送の実施
> snapmirror update -destination-path svm1_dr:vol01_dr
Operation is queued: snapmirror update of destination "svm1_dr:vol01_dr".


# Cluster#1側でラベルのついた古いSnapshot削除を実施
> snapshot delete  -vserver svm1 -volume vol01 -snapshot vault_snap01

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "vault_snap01" for volume "vol01" in Vserver "svm1" ?
         {y|n}: y

         

# Cluster#1側でラベルのついたSnapshot作成を実施
> snapshot create -vserver svm1 -volume vol01 -snapshot vault_snap03 -snapmirror-label test_label


# Cluster#2側で差分転送の実施
> snapmirror update -destination-path svm1_dr:vol01_dr
Operation is queued: snapmirror update of destination "svm1_dr:vol01_dr".

# Cluster#1側でラベルのついた古いSnapshot削除を実施
> snapshot delete -vserver svm1 -volume vol01 -snapshot vault_snap02
Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "vault_snap02" for volume "vol01" in Vserver "svm1" ?
         {y|n}: y

> snapshot show -vserver svm1 -volume vol01 -fields snapmirror-label
vserver volume snapshot    snapmirror-label
------- ------ ----------- ----------------
svm1    vol01  user_snap02 -
svm1    vol01  user_snap03 -
svm1    vol01  no_label_snap01 -
svm1    vol01  vault_snap03 test_label
4 entries were displayed.


# Cluster#2側でSnapshot確認の実施
> snapshot show -vserver svm1_dr -volume vol01_dr
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm1_dr  vol01_dr
                  user_snap02                              184KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_074524 188KB 0% 0%
                  user_snap03                              184KB     0%    0%
                  snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_082907 184KB 0% 0%
                  vault_snap01                             184KB     0%    0%
                  vault_snap02                             184KB     0%    0%
                  vault_snap03                             136KB     0%    0%
7 entries were displayed

5. 不要なSnapshotの削除

SnapVault用途では無いSnapshotの削除を実行します。
(ここでは、SnapMirror実行時に転送されたuser_snapXXやsnapmirror.XXXを削除)
qiita-square

# Cluster#1側で実施
> snapshot delete  -vserver svm1 -volume vol01 -snapshot user_snap02

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "user_snap02" for volume "vol01" in Vserver "svm1" ? 
         {y|n}: y

> snapshot delete  -vserver svm1 -volume vol01 -snapshot user_snap03

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "user_snap03" for volume "vol01" in Vserver "svm1" ? 
         {y|n}: y

> snapshot delete  -vserver svm1 -volume vol01 -snapshot no_label_snap01

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "no_label_snap01" for volume "vol01" in Vserver "svm1" ? 
         {y|n}: y

> snapshot show -vserver svm1 -volume vol01 -fields snapmirror-label
vserver volume snapshot     snapmirror-label
------- ------ ------------ ----------------
svm1    vol01  vault_snap03 test_label


# Cluster#2側で実施
> snapshot delete -vserver svm1_dr -volume vol01_dr -snapshot user*

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "user_snap02" for volume "vol01_dr" in Vserver "svm1_dr" ?
         {y|n}: y

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "user_snap03" for volume "vol01_dr" in Vserver "svm1_dr" ?
         {y|n}: y
2 entries were acted on.



> snapshot delete -vserver svm1_dr -volume vol01_dr -snapshot snapmirror*

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_074524" for volume
         "vol01_dr" in Vserver "svm1_dr" ?
         {y|n}: y

Warning: Deleting a Snapshot copy permanently removes data that is stored only in that Snapshot copy. Are you sure you want to
         delete Snapshot copy "snapmirror.4e370cc6-aac3-11ee-a59c-0050569d3c7a_2154890291.2024-01-04_082907" for volume
         "vol01_dr" in Vserver "svm1_dr" ?
         {y|n}: y
2 entries were acted on.



> snapshot show -vserver svm1_dr -volume vol01_dr
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm1_dr  vol01_dr
                  vault_snap01                             184KB     0%    0%
                  vault_snap02                             184KB     0%    0%
                  vault_snap03                             144KB     0%    0%
3 entries were displayed.

6. Destination側のVolumeサイズの拡張

SnapVault用途では、Destination側(Mirror先)のSnapshot保持世代が多くなる為、
差分を確保できるように、Volumeサイズを拡張しておきます。
(手順的には最後である必要は無いです)

qiita-square
# Cluster#2側で10GBから15GBに拡張の実施
> volume size -vserver svm1_dr -volume vol01_dr
vol size: Volume "svm1_dr:vol01_dr" has size 10g.


> volume size -vserver svm1_dr -volume vol01_dr -new-size 15g
vol size: Volume "svm1_dr:vol01_dr" size set to 15g.

Based on the new volume size, the system automatically adjusted the volume autosize settings as follows:
The volume is set to shrink to a minimum of 15g when the volume-used space falls below 80%.

参考及びリンク

SnapMirror configuration and best practices guide for ONTAP 9

SnapMirror 関係に対応した ONTAP バージョン

SnapMirror レプリケーションのワークフロー

SnapMirrorテクノロジを使用したバックアップのアーカイブ

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?