FSx for NetApp ONTAP でカスタムスナップショットポリシーを設定してみた

FSx for NetApp ONTAP でカスタムスナップショットポリシーを作成するには、ONTAP CLI または ONTAP REST API を使う必要があります。一つのカスタムスナップショットポリシーの中に複数スケジュールを設定できます。
2023.10.09

コーヒーが好きな emi です。

FSx for NetApp ONTAP でカスタムスナップショットポリシーを設定してみました。
FSx for NetApp ONTAP を新規作成する場合、カスタムスナップショットポリシーをマネジメントコンソールから作成することはできません。カスタムスナップショットポリシーを作成するには、ONTAP CLI または ONTAP REST API を使う必要があります。

注意

スナップショットは ボリュームごとに最大 1,023 個 まで保存できます。それ以上は保存できません。

背景

FSx for NetApp ONTAP ではボリュームのバックアップの他、スナップショットを取得することができます。

ボリュームのバックアップは 1 時間ごとにしか取得できなかったり、リストアする際は別のボリュームを新規作成して切り替える必要がありやや時間がかかる一方、スナップショットは 5 分間隔・10 分間隔など高頻度で取得可能でリストアもコマンドを実行するだけで比較的高速に実施できます。

目的・用途に応じてバックアップもスナップショットも両方設定することが望ましいのですが、詳細は以下のブログをご参照ください。

スナップショットを自動取得するためにスナップショットポリシーを設定することができます。スナップショットポリシーはマネジメントコンソールから以下の 4 種類が選択できるようになっています。

  • Default
    • 毎時 6 世代、日次 2 世代、週次 2 世代
  • Default-1weekly
    • 毎時 6 世代、日次 2 世代、週次 1 世代
  • None
    • スナップショットは取得しない
  • カスタムポリシー
    • ユーザー指定

カスタムポリシーを選択すると、カスタムスナップショットポリシー名の入力を求められます。

しかし、新規作成の場合「カスタムスナップショットポリシーがありません」というエラーでボリュームの作成に失敗します。

カスタムスナップショットポリシーを作成するには、ONTAP CLI または REST API を使う必要があります。

構成図

以下のような構成で検証を実施しました。Systems Manager(SSM)フリートマネージャーで Windows Server に RDP 接続します。FSx for NetApp ONTAP は Windows Server に iSCSI マウントされた状態です。 FSx for NetApp ONTAP には以下二つのボリュームを作成してあります。

  • ボリューム 1:fsxn_vol1
  • ボリューム 2:fsxn_vol2

FSx for NetApp ONTAP を Windows Server に iSCSI マウントする方法は以下のブログを参照ください。

Windows Serevr にインストールした Teraterm から FSx for NetApp ONTAP に SSH 接続して ONTAP CLI を実行します。
Windows Server から FSx for NetApp ONTAP に SSH 接続する方法は以下のブログをご参照ください。

スナップショットジョブスケジュールの確認

カスタムスナップショットポリシーを作成するには、事前にスナップショットジョブスケジュールが必要です。
デフォルトで容易されているスナップショットジョブスケジュールもあります。一度デフォルトのスナップショットジョブスケジュールを表示してみてみましょう。

  • 実行コマンド
    job schedule cron show

▼実行結果

FsxId003039c51be2092f8::> job schedule cron show
Cluster Vserver  Name        Description
------- -------- ----------- --------------------------------------------------
FsxId003039c51be2092f8
        FsxId003039c51be2092f8
                 10min       @:00,:10,:20,:30,:40,:50
                 12-hourly   @0:15,12:15
                 5min        @:00,:05,:10,:15,:20,:25,:30,:35,:40,:45,:50,:55
                 6-hourly    @0:15,6:15,12:15,18:15
                 8hour       @2:15,10:15,18:15
                 daily       @0:10
                 hourly      @:05
                 monthly     1@0:20
                 pg-15-minutely
                             @:10,:25,:40,:55
                 pg-6-hourly @3:03,9:03,15:03,21:03
                 pg-daily    @0:10
                 pg-daily-set2
                             @6:25
                 pg-daily-set3
                             @12:40
                 pg-daily-set4
                             @18:55
                 pg-hourly   @:07
                 pg-hourly-set2
                             @:22
                 pg-hourly-set3
                             @:37
                 pg-hourly-set4
                             @:52
                 pg-remote-15-minutely
                             @:00,:15,:30,:45
                 pg-remote-6-hourly
                             @3:08,9:08,15:08,21:08
                 pg-remote-daily
                             @0:15
                 pg-remote-hourly
                             @:12
                 pg-remote-weekly
                             Sun@0:20
                 pg-weekly   Sun@0:15
                 pg-weekly-set2
                             Tue@4:30
                 pg-weekly-set3
                             Thu@10:44
                 pg-weekly-set4
                             Sat@16:59
                 weekly      Sun@0:15
28 entries were displayed.

FsxId003039c51be2092f8::>

例えば 12-hourly @0:15,12:15 は 12 時間ごとにスナップショットを取得するためのジョブスケジュールです。毎日 0:15 と 12:15 の二回スナップショットを取得します。
5min @:00,:05,:10,:15,:20,:25,:30,:35,:40,:45,:50,:55 は 5 分ごとにスナップショットを取得するためのジョブスケジュールです。毎時間 0 分、 5 分、10 分… 55 分という間隔でスナップショットを取得します。

カスタムスナップショットジョブスケジュールの作成

デフォルトで準備されているスナップショットジョブスケジュールを使うこともできますが、今回はカスタムのスナップショットジョブスケジュールを作成します。コマンド構文は以下のようになります。

  • コマンド構文 Create a Snapshot job schedule
    job schedule cron create -name job_name -month month -dayofweek day_of_week -day day_of_month -hour hour -minute minute

今回は 10 分毎にスナップショットを取得するジョブスケジュール emiki_10min と、1 時間毎にスナップショットを取得するジョブスケジュール emiki_hourly の二つを作成します。スナップショットの取得タイミングは以下の表のようなイメージになります。

10 分毎のジョブスケジュール作成コマンド

  • 10 分毎のジョブスケジュール作成コマンド例
    job schedule cron create -name emiki_10min -minute 0,10,20,30,40,50

▼実行結果

FsxId003039c51be2092f8::> job schedule cron create -name emiki_10min -minute 0,10,20,30,40,50

FssxId003039c51be2092f8::>

毎時 5 分のジョブスケジュール作成コマンド

  • 毎時 5 分のジョブスケジュール作成コマンド例
    job schedule cron create -name emiki_hourly -minute 5

▼実行結果

FsxId003039c51be2092f8::> job schedule cron create -name emiki_hourly -minute 5

FsxId003039c51be2092f8::>

意図した値でスナップショットジョブスケジュールが作成されたか確認

FsxId003039c51be2092f8::> job schedule cron show
Cluster Vserver  Name        Description
------- -------- ----------- --------------------------------------------------
FsxId003039c51be2092f8
        FsxId003039c51be2092f8
                 10min       @:00,:10,:20,:30,:40,:50
                 12-hourly   @0:15,12:15
                 5min        @:00,:05,:10,:15,:20,:25,:30,:35,:40,:45,:50,:55
                 6-hourly    @0:15,6:15,12:15,18:15
                 8hour       @2:15,10:15,18:15
                 daily       @0:10
                 emiki_10min @:00,:10,:20,:30,:40,:50
                 emiki_hourly
                             @:05
                 hourly      @:05
                 monthly     1@0:20
                 pg-15-minutely
                             @:10,:25,:40,:55
                 pg-6-hourly @3:03,9:03,15:03,21:03
                 pg-daily    @0:10
                 pg-daily-set2
                             @6:25
                 pg-daily-set3
                             @12:40
                 pg-daily-set4
                             @18:55
                 pg-hourly   @:07
                 pg-hourly-set2
                             @:22
                 pg-hourly-set3
                             @:37
                 pg-hourly-set4
                             @:52
                 pg-remote-15-minutely
                             @:00,:15,:30,:45
                 pg-remote-6-hourly
                             @3:08,9:08,15:08,21:08
                 pg-remote-daily
                             @0:15
                 pg-remote-hourly
                             @:12
                 pg-remote-weekly
                             Sun@0:20
                 pg-weekly   Sun@0:15
                 pg-weekly-set2
                             Tue@4:30
                 pg-weekly-set3
                             Thu@10:44
                 pg-weekly-set4
                             Sat@16:59
                 weekly      Sun@0:15
30 entries were displayed.

FsxId003039c51be2092f8::>

emiki_10min @:00,:10,:20,:30,:40,:50emiki_hourly @:05 の部分が作成したスナップショットジョブスケジュールです。

カスタムスナップショットポリシーの作成

  • コマンド構文 Create a Snapshot policy
    volume snapshot policy create -vserver SVM -policy policy_name -enabled true|false -schedule1 schedule1_name -count1 copies_to_retain -prefix1 snapshot_prefix -snapmirror-label1 snapshot_label …​ -schedule1 schedule5_name -count5 copies_to_retain-prefix5 snapshot_prefix -snapmirror-label5 snapshot_label

今回は以下のようにカスタムスナップショットポリシーを作成します。
10 分毎に取得するスナップショットを 30 世代(5 時間分)、1 時間毎に取得するスナップショットを 5 世代(5 時間分)保持するカスタムスナップショットポリシーです。
意図したスナップショットが取得できているか確認する際の目印になりますので、プレフィックスは分かりやすいものを設定することをお勧めします。

  • policy_name(スナップショットポリシー名):emiki_snapshot_policy_30_per_minute_and_5_hourly
  • schedule1_name(スケジュール1):emiki_10min
  • copies_to_retain1(保持するコピー数):30
  • snapshot_prefix1(スナップショット保存時につけるプレフィックス):emiki_10min
  • schedule2_name:emiki_hourly
  • copies_to_retain2:5
  • snapshot_prefix2:emiki_hourly

  • 実行コマンド

    volume snapshot policy create -policy emiki_snapshot_policy_30_per_minute_and_5_hourly -enabled true -schedule1 emiki_10min -count1 30 -prefix1 emiki_10min -schedule2 emiki_hourly -count2 5 -prefix2 emiki_hourly

▼実行結果

FsxId003039c51be2092f8::> volume snapshot policy create -policy emiki_snapshot_policy_30_per_minute_and_5_hourly -enabled true -schedule1 emiki_10min -count1 30 -prefix1 emiki_10min -schedule2 emiki_hourly -count2 5 -prefix2 emiki_hourly

FsxId003039c51be2092f8::>

意図した値でスナップショットポリシーが作成されたか確認

  • 実行コマンド
    volume snapshot policy show

▼実行結果

FsxId003039c51be2092f8::> volume snapshot policy show
Vserver: FsxId003039c51be2092f8
                         Number of Is
Policy Name              Schedules Enabled Comment
------------------------ --------- ------- ----------------------------------
default                          3 true    Default policy with hourly, daily & weekly schedules.
    Schedule       Count  Prefix        SnapMirror Label    Retention Period
    -------------- -----  ------------- ------------------  ------------------
    hourly             6  hourly        -                   0 seconds
    daily              2  daily         daily               0 seconds
    weekly             2  weekly        weekly              0 seconds

default-1weekly                  3 true    Default policy with 6 hourly, 2 daily & 1 weekly schedule.
    Schedule       Count  Prefix        SnapMirror Label    Retention Period
    -------------- -----  ------------- ------------------  ------------------
    hourly             6  hourly        -                   0 seconds
    daily              2  daily         -                   0 seconds
    weekly             1  weekly        -                   0 seconds

emiki_snapshot_policy_30_per_minute_and_5_hourly
                                 2 true    -
    Schedule       Count  Prefix        SnapMirror Label    Retention Period
    -------------- -----  ------------- ------------------  ------------------
    emiki_10min       30  emiki_10min   -                   0 seconds
    emiki_hourly       5  emiki_hourly  -                   0 seconds

none                             0 false   Policy for no automatic snapshots.
    Schedule       Count  Prefix        SnapMirror Label    Retention Period
    -------------- -----  ------------- ------------------  ------------------
    -                  -  -             -                   -

4 entries were displayed.

FsxId003039c51be2092f8::>

ハイライトの箇所が、作成したカスタムスナップショットポリシーです。

現在ボリュームに割り当たっているスナップショットポリシーを確認

現在ボリュームに割り当たっているスナップショットポリシーを確認しておきます。
デフォルト設定で FSx for NetApp ONTAP を作成している場合、ボリュームには default というスナップショットポリシーが割り当たっているはずです。

  • コマンド構文
    volume show -volume vol_name -fields snapshot-policy

Volume1 のスナップショットポリシー確認

  • 実行コマンド
    volume show -volume fsxn_vol1 -fields snapshot-policy

▼実行結果

FsxId003039c51be2092f8::> volume show -volume fsxn_vol1 -fields snapshot-policy
vserver         volume    snapshot-policy
--------------- --------- ---------------
sample-fsxn-svm fsxn_vol1 default

FsxId003039c51be2092f8::>

Volume2 のスナップショットポリシー確認

  • 実行コマンド
    volume show -volume fsxn_vol2 -fields snapshot-policy

▼実行結果

FsxId003039c51be2092f8::> volume show -volume fsxn_vol2 -fields snapshot-policy
vserver         volume    snapshot-policy
--------------- --------- ---------------
sample-fsxn-svm fsxn_vol2 default

FsxId003039c51be2092f8::>

fsxn_vol1fsxn_vol2 も、default というスナップショットポリシーが割り当たっているのが分かります。

作成したカスタムスナップショットポリシーに変更する(途中 y 入力)

作成したカスタムスナップショットポリシーに変更します。

  • コマンド構文
    volume modify -volume vol_name -snapshot-policy policy_name

Volume1 にスナップショットポリシー付与

  • 実行コマンド
    volume modify -volume fsxn_vol1 -snapshot-policy emiki_snapshot_policy_30_per_minute_and_5_hourly

▼実行結果

FsxId003039c51be2092f8::> volume modify -volume fsxn_vol1 -snapshot-policy emiki_snapshot_policy_30_per_minute_and_5_hourly

Warning: You are changing the Snapshot policy on volume "fsxn_vol1" to
         "emiki_snapshot_policy_30_per_minute_and_5_hourly". Snapshot copies on
         this volume that do not match any of the prefixes of the new Snapshot
         policy will not be deleted. However, when the new Snapshot policy
         takes effect, depending on the new retention count, any existing
         Snapshot copies that continue to use the same prefixes might be
         deleted. See the 'volume modify' man page for more information.
Do you want to continue? {y|n}: y
Volume modify successful on volume fsxn_vol1 of Vserver sample-fsxn-svm.

FsxId003039c51be2092f8::>

Volume2 にスナップショットポリシー付与

  • 実行コマンド
    volume modify -volume fsxn_vol2 -snapshot-policy emiki_snapshot_policy_30_per_minute_and_5_hourly

▼実行結果

FsxId003039c51be2092f8::> volume modify -volume fsxn_vol2 -snapshot-policy emiki_snapshot_policy_30_per_minute_and_5_hourly

Warning: You are changing the Snapshot policy on volume "fsxn_vol2" to
         "emiki_snapshot_policy_30_per_minute_and_5_hourly". Snapshot copies on
         this volume that do not match any of the prefixes of the new Snapshot
         policy will not be deleted. However, when the new Snapshot policy
         takes effect, depending on the new retention count, any existing
         Snapshot copies that continue to use the same prefixes might be
         deleted. See the 'volume modify' man page for more information.
Do you want to continue? {y|n}: y
Volume modify successful on volume fsxn_vol2 of Vserver sample-fsxn-svm.

FsxId003039c51be2092f8::>

警告が出ていますが、これは「新しいスナップショットポリシーで設定されているプレフィックスと、既存のスナップショットについているプレフィックスが同じ場合、保持カウント(-count copies_to_retainX)に応じて既存のスナップショットが削除される場合があります」という警告です。
今回はプレフィックスをカスタムで新規に設定したので、既存のスナップショットが削除されることはありません。
既存のスナップショットを残したい場合は、プレフィックスを既存のスナップショットと違うものにしてください。

スナップショットポリシーが変更できたか確認

スナップショットポリシーが変更できたか確認します。

Volume1 のスナップショットポリシー確認

  • 実行コマンド
    volume show -volume fsxn_vol1 -fields snapshot-policy

▼実行結果

FsxId003039c51be2092f8::> volume show -volume fsxn_vol1 -fields snapshot-policy
vserver         volume    snapshot-policy
--------------- --------- ------------------------------------------------
sample-fsxn-svm fsxn_vol1 emiki_snapshot_policy_30_per_minute_and_5_hourly

FsxId003039c51be2092f8::>

Volume2 のスナップショットポリシー確認

  • 実行コマンド
    volume show -volume fsxn_vol2 -fields snapshot-policy

▼実行結果

FsxId003039c51be2092f8::> volume show -volume fsxn_vol2 -fields snapshot-policy
vserver         volume    snapshot-policy
--------------- --------- ------------------------------------------------
sample-fsxn-svm fsxn_vol2 emiki_snapshot_policy_30_per_minute_and_5_hourly

FsxId003039c51be2092f8::>

今回の検証環境で画面取得し忘れてしまったのですが、カスタムスナップショットポリシーを設定して数分待つと、マネジメントコンソールのボリュームの詳細からカスタムスナップショットポリシー名が確認できます。

スナップショットの確認

5 時間以上経過後、取得されたスナップショット一覧を確認します。

  • Volume1 のスナップショット確認コマンド
    volume snapshot show -volume fsxn_vol1

▼実行結果

FsxId003039c51be2092f8::> volume snapshot show -volume fsxn_vol1
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
sample-fsxn-svm
         fsxn_vol1
                  hourly.2023-10-03_0605                   172KB     0%    2%
                  backup-01499da8b63283255                 256KB     0%    2%
                  hourly.2023-10-03_0705                   244KB     0%    2%
                  hourly.2023-10-03_0805                   140KB     0%    1%
                  hourly.2023-10-03_0905                   492KB     0%    4%
                  emiki_10min.2023-10-03_1330              140KB     0%    1%
                  emiki_10min.2023-10-03_1340              140KB     0%    1%
                  emiki_10min.2023-10-03_1350              140KB     0%    1%
                  emiki_10min.2023-10-03_1400              140KB     0%    1%
                  emiki_hourly.2023-10-03_1405             140KB     0%    1%
                  emiki_10min.2023-10-03_1410              140KB     0%    1%
                  emiki_10min.2023-10-03_1420              144KB     0%    1%
                  emiki_10min.2023-10-03_1430              144KB     0%    1%
                  emiki_10min.2023-10-03_1440              468KB     0%    4%
                  emiki_10min.2023-10-03_1450              148KB     0%    1%
                  emiki_10min.2023-10-03_1500              148KB     0%    1%
                  emiki_hourly.2023-10-03_1505             148KB     0%    1%
                  emiki_10min.2023-10-03_1510              148KB     0%    1%
                  emiki_10min.2023-10-03_1520              148KB     0%    1%
                  emiki_10min.2023-10-03_1530              148KB     0%    1%
                  emiki_10min.2023-10-03_1540              148KB     0%    1%
                  emiki_10min.2023-10-03_1550              148KB     0%    1%
                  emiki_10min.2023-10-03_1600              148KB     0%    1%
                  emiki_hourly.2023-10-03_1605             144KB     0%    1%
                  emiki_10min.2023-10-03_1610              460KB     0%    4%
                  emiki_10min.2023-10-03_1620              144KB     0%    1%
                  emiki_10min.2023-10-03_1630              144KB     0%    1%
                  emiki_10min.2023-10-03_1640              144KB     0%    1%
                  emiki_10min.2023-10-03_1650              144KB     0%    1%
                  emiki_10min.2023-10-03_1700              144KB     0%    1%
                  emiki_hourly.2023-10-03_1705             144KB     0%    1%
                  emiki_10min.2023-10-03_1710              144KB     0%    1%
                  emiki_10min.2023-10-03_1720              144KB     0%    1%
                  emiki_10min.2023-10-03_1730              144KB     0%    1%
                  emiki_10min.2023-10-03_1740              144KB     0%    1%
                  emiki_10min.2023-10-03_1750              144KB     0%    1%
                  emiki_10min.2023-10-03_1800              144KB     0%    1%
                  emiki_hourly.2023-10-03_1805             144KB     0%    1%
                  emiki_10min.2023-10-03_1810              496KB     0%    4%
                  emiki_10min.2023-10-03_1820              140KB     0%    1%
40 entries were displayed.

FsxId003039c51be2092f8::>
  • Volume2 のスナップショット確認コマンド
    volume snapshot show -volume fsxn_vol2

▼実行結果

FsxId003039c51be2092f8::> volume snapshot show -volume fsxn_vol2
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
sample-fsxn-svm
         fsxn_vol2
                  hourly.2023-10-03_0605                   176KB     0%    0%
                  backup-05346a1e5d51ec6e8                 260KB     0%    0%
                  hourly.2023-10-03_0705                   228KB     0%    0%
                  hourly.2023-10-03_0805                   144KB     0%    0%
                  hourly.2023-10-03_0905                   184KB     0%    0%
                  emiki_10min.2023-10-03_1330              144KB     0%    0%
                  emiki_10min.2023-10-03_1340              144KB     0%    0%
                  emiki_10min.2023-10-03_1350              144KB     0%    0%
                  emiki_10min.2023-10-03_1400             1.49MB     0%    2%
                  emiki_hourly.2023-10-03_1405             144KB     0%    0%
                  emiki_10min.2023-10-03_1410              144KB     0%    0%
                  emiki_10min.2023-10-03_1420              144KB     0%    0%
                  emiki_10min.2023-10-03_1430              144KB     0%    0%
                  emiki_10min.2023-10-03_1440              144KB     0%    0%
                  emiki_10min.2023-10-03_1450              152KB     0%    0%
                  emiki_10min.2023-10-03_1500              152KB     0%    0%
                  emiki_hourly.2023-10-03_1505             152KB     0%    0%
                  emiki_10min.2023-10-03_1510              152KB     0%    0%
                  emiki_10min.2023-10-03_1520              152KB     0%    0%
                  emiki_10min.2023-10-03_1530              152KB     0%    0%
                  emiki_10min.2023-10-03_1540              152KB     0%    0%
                  emiki_10min.2023-10-03_1550              148KB     0%    0%
                  emiki_10min.2023-10-03_1600              148KB     0%    0%
                  emiki_hourly.2023-10-03_1605             148KB     0%    0%
                  emiki_10min.2023-10-03_1610              148KB     0%    0%
                  emiki_10min.2023-10-03_1620              148KB     0%    0%
                  emiki_10min.2023-10-03_1630              148KB     0%    0%
                  emiki_10min.2023-10-03_1640              148KB     0%    0%
                  emiki_10min.2023-10-03_1650              148KB     0%    0%
                  emiki_10min.2023-10-03_1700              148KB     0%    0%
                  emiki_hourly.2023-10-03_1705             148KB     0%    0%
                  emiki_10min.2023-10-03_1710              148KB     0%    0%
                  emiki_10min.2023-10-03_1720              148KB     0%    0%
                  emiki_10min.2023-10-03_1730              148KB     0%    0%
                  emiki_10min.2023-10-03_1740              148KB     0%    0%
                  emiki_10min.2023-10-03_1750              148KB     0%    0%
                  emiki_10min.2023-10-03_1800              148KB     0%    0%
                  emiki_hourly.2023-10-03_1805             152KB     0%    0%
                  emiki_10min.2023-10-03_1810              152KB     0%    0%
                  emiki_10min.2023-10-03_1820              148KB     0%    0%
40 entries were displayed.

FsxId003039c51be2092f8::>

emiki_10min.yyyy-mm-dd_hhmmemiki_hourly.yyyy-mm-dd_hhmm がカスタムスナップショットポリシーによって取得されたスナップショットです。それぞれ 30 世代、5 世代が保持されており、古いものは削除されていることが分かります。

おわりに

FSx for NetApp ONTAP でカスタムスナップショットポリシーの設定を実施しました。
ONTAP CLI を使う必要がありますが、一つのカスタムスナップショットポリシーの中に複数スケジュールを設定できるのは良いなと思いました。

FSx for NetApp ONTAP スナップショットからのリストア方法は以下のブログをご参照ください。

どなたかのお役に立てば幸いです。

参考