Amazon FSx for NetApp ONTAPのスナップショット機能を試してみた
Amazon FSx for NetApp ONTAPでボリューム丸ごとリストアじゃなくてファイル単位でリストアしたいな
こんにちは、のんピ(@non____97)です。
皆さんはAmazon FSx for NetApp ONTAP(以降、FSx for ONTAP)でボリューム丸ごとリストアじゃなくてファイル単位でリストアしたいなと思ったことはありますか? 私はあります。
以下記事でFSx for ONTAPのボリュームのバックアップ・リストアを紹介しました。
バックアップ・リストアが簡単にできるのは大変ありがたいですが、バックアップの単位はボリューム単位なので当然リストアする際もボリューム単位で行います。
FSx for ONTAPの一般利用者からすると、「このファイルをリストアしたいだけなのに、ボリュームごとリストアするのはちょっと大袈裟だなぁ...」と思われることもあると考えます。
FSx for ONTAPには、そんな時のためにスナップショット機能があります。
今回は、FSx for ONTAPのスナップショット機能について紹介します。
2023/4/9 追記 : AWS公式ブログにもSnapshotの紹介記事が投稿されました。併せてご覧ください。
FSx for ONTAPのスナップショット機能とは
FSx for ONTAPのスナップショット機能とは、定期的にボリューム内の状態をキャプチャする機能です。
[Snapshot] (スナップショット) は、ある時点における Amazon FSx for NetApp ONTAP ボリュームの読み取り専用イメージです。スナップショットは、ボリューム内のファイルの間違った削除や変更からの保護を提供します。スナップショットで、ユーザーは以前のスナップショットから個々のファイルやフォルダを簡単に表示および復元できます。これにより、ユーザーは簡単に変更を元に戻し、ファイルバージョンを比較できます。
(中略)
Amazon FSx ファイルシステム上のスナップショットを使用して、ユーザーは個々のファイルまたはフォルダーの以前のバージョンをすばやく復元できます。これにより、共有ファイルシステムに保存されている削除または変更されたファイルをリカバリできます。管理者の手を借りずに、デスクトップ上で直接セルフサービス方式で行うことができます。このセルフサービスアプローチにより、生産性が向上し、管理のワークロードが軽減されます。
一般利用者が個々のファイルやディレクトリを簡単にリストアすることができるので、ファイルを間違えて削除してしまった時もリストアをシステム管理者にお願いする必要はなく、自分で出来てしまうのが最高にありがたいですね。イメージとしてはVolume Shadow Copy Services(VSS)に近いです。
NetAppのスナップショットはパフォーマンスへの影響がなく、スナップショットを作成しても性能劣化はありません。詳細な仕組みについては以下サイトをご覧ください。
- FAS/AFFシリーズ ソフトウェア製品 | NetApp | 取扱製品 | ネットワールド
- 【NetApp】ONTAPの紹介 (FAS/AFF編)|技術ブログ|C&S ENGINEER VOICE
- ストレージの機能 スナップショットとは?その用途や特徴、バックアップとの違いを解説 | ストレージチャンネル
FSx for ONTAPの各ボリュームは以下のdefault
というスナップショットポリシーが適用されており、定期的にスナップショットが作成されています。
hh:05
に1時間単位で作成され、最大6世代保持する毎時スナップショット- 月曜日から土曜日の
00:10
に作成され、最大2世代保持する日次スナップショット - 毎週日曜日の
00:15
に作成され、最大2世代保持する週次スナップショット
スナップショットポリシーは自分で作成することもできます。そのため、ユースケースに合わせて「10分毎にスナップショットを作成し、最大6世代保持」などのスナップショットポリシーを運用することができます。
スナップショットの作成とリストアを試してみた
Amazon Linux 2
早速、スナップショットの作成とリストアを試してます。
まず、Amazon Linux 2からです。
NFSとiSCSIでFSx for ONTAPのボリュームをマウントしています。
$ df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 462M 0 462M 0% /dev tmpfs tmpfs 470M 0 470M 0% /dev/shm tmpfs tmpfs 470M 456K 470M 1% /run tmpfs tmpfs 470M 0 470M 0% /sys/fs/cgroup /dev/nvme0n1p1 xfs 8.0G 1.7G 6.4G 21% / /dev/mapper/3600a09806c574231752b53784865462f2 ext4 2.9G 9.1M 2.8G 1% /lun/part2 /dev/mapper/3600a09806c574231752b537848654672p1 ext4 2.0G 6.1M 1.8G 1% /lun/part1 svm-0a3a78e7c64ff2c5d.fs-0967312eff2f5f5e1.fsx.ap-northeast-1.amazonaws.com:/nfs nfs4 973M 576K 973M 1% /nfs
AWS公式ドキュメントを確認すると、.snapshot
という隠しディレクトリ内にスナップショットがあるようです。
- 元のファイルがまだ存在し、スナップショット内のファイルによって上書きしたくない場合は、Linux または macOS クライアントを使用して元のファイルの名前を変更するか、別のディレクトリに移動します。
- .snapshot ディレクトリで、復元するファイルのバージョンを含むスナップショットを見つけます。
- .snapshot ディレクトリからファイルが元々存在していたディレクトリにファイルをコピーします。
ls -la /nfs
でNFSでボリュームをマウントしているディレクトリ/nfs
を確認しても.snapshot
という隠しディレクトリはありませんでした。
$ ls -la /nfs total 8 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 . dr-xr-xr-x 23 root root 333 May 28 02:24 .. drwxr-xr-x 2 ssm-user ssm-user 4096 May 25 00:32 aws-backup-test
試しにls -la /nfs/.snapshot
で直接ディレクトリを指定してみると、確かにいくつかスナップショットがありました。
$ ls -l /nfs/.snapshot total 36 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 backup-01d01a810dc374e80 drwxr-xr-x 3 ssm-user ssm-user 4096 May 25 00:31 daily.2022-05-27_0010 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 daily.2022-05-28_0010 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 hourly.2022-05-27_2305 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 hourly.2022-05-28_0005 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 hourly.2022-05-28_0105 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 hourly.2022-05-28_0205 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 hourly.2022-05-28_0305 drwxr-xr-x 3 ssm-user ssm-user 4096 May 27 03:52 hourly.2022-05-28_0405
スナップショットのディレクトリを確認してみると、前回の記事で使用したテストファイルが保存されていました。
$ ls -l /nfs/.snapshot/hourly.2022-05-28_0405 total 4 drwxr-xr-x 2 ssm-user ssm-user 4096 May 25 00:32 aws-backup-test $ ls -l /nfs/.snapshot/hourly.2022-05-28_0405/aws-backup-test/ total 0 -rw-r--r-- 1 ssm-user ssm-user 35 May 25 00:32 aws-backup-test.txt $ cat /nfs/.snapshot/hourly.2022-05-28_0405/aws-backup-test/aws-backup-test.txt This is a test file of AWS Backup.
一方、iSCSIでマウントしているボリュームのディレクトリ/nfs
を確認しても.snapshot
という隠しディレクトリはありませんでした。iSCSIの場合、パーティションを切っていることもあり、こちらからは参照できないかもしれません。
$ ls -l /lun/part1/.snapshot ls: cannot access /lun/part1/.snapshot: No such file or directory $ sudo ls -l /lun/part1/.snapshot ls: cannot access /lun/part1/.snapshot: No such file or directory
それでは、NFSでマウントしているボリュームのスナップショットを使ってリストアしてみます。
まず、/nfs/aws-backup-test/
を削除します。
# ディレクトリの削除 $ rm -rf /nfs/aws-backup-test/ # ディレクトリが削除されたことを確認 $ ls -l /nfs/aws-backup-test/ ls: cannot access /nfs/aws-backup-test/: No such file or directory $ ls -l /nfs/ total 0
あとは.snapshot
内にあるリストアしたいディレクトリを削除したディレクトリにコピーします。
# スナップショットからリストア $ cp -pr /nfs/.snapshot/hourly.2022-05-28_0405/aws-backup-test /nfs/aws-backup-test # リストアされたことを確認 $ ls -l /nfs total 4 drwxr-xr-x 2 ssm-user ssm-user 4096 May 25 00:32 aws-backup-test $ ls -l /nfs/aws-backup-test/aws-backup-test total 0 -rw-r--r-- 1 ssm-user ssm-user 35 May 25 00:32 aws-backup-test.txt # リストアしたディレクトリとファイルのタイムスタンプが保持されていることを確認 $ date Sat May 28 05:06:01 UTC 2022
めちゃくちゃ簡単ですね。
Windows Server
Windows Serverも試してみます。
SMBでマウントしているZドライブを確認すると.snapshot
フォルダがありました。
# Zドライブにマウントされていることを確認 > Get-PSDrive Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Alias Alias C 14.41 15.59 FileSystem C:\ Windows\system32 Cert Certificate \ D 0.03 8.99 FileSystem D:\ E 0.03 8.99 FileSystem E:\ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan Z 0.00 0.95 FileSystem \\SINGLE-AZ-SVM.fsx-dev.classmet... # スナップショットを確認 > dir Z:\.snapshot ディレクトリ: Z:\.snapshot Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/05/25 0:21 backup-040de54495bdc719a d----- 2022/05/25 0:21 backup-0edac0287df3bb291 d----- 2022/05/25 0:21 daily.2022-05-27_0010 d----- 2022/05/25 0:21 daily.2022-05-28_0010 d----- 2022/05/25 0:21 hourly.2022-05-28_0005 d----- 2022/05/25 0:21 hourly.2022-05-28_0105 d----- 2022/05/25 0:21 hourly.2022-05-28_0205 d----- 2022/05/25 0:21 hourly.2022-05-28_0305 d----- 2022/05/25 0:21 hourly.2022-05-28_0405 d----- 2022/05/25 0:21 hourly.2022-05-28_0505 d----- 2022/05/20 5:52 weekly.2022-05-22_0015 > dir Z:\.snapshot\hourly.2022-05-28_0505\ ディレクトリ: Z:\.snapshot\hourly.2022-05-28_0505 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/05/25 0:23 aws-backup-test > dir Z:\.snapshot\hourly.2022-05-28_0505\aws-backup-test\ ディレクトリ: Z:\.snapshot\hourly.2022-05-28_0505\aws-backup-test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/05/25 0:23 36 aws-backup-test.txt
Windows Serverの場合もiSCSIでマウントしているボリュームのDドライブを確認しても.snapshot
という隠しフォルダはありませんでした。
> dir D:\.snapshot dir : パス 'D:\.snapshot' が存在しないため検出できません。 発生場所 行:1 文字:1 + dir D:\.snapshot + ~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (D:\.snapshot:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
それでは、SMBでマウントしているボリュームのスナップショットを使ってリストアしてみます。
# フォルダの削除 > Remove-Item -Recurse Z:\aws-backup-test # フォルダが削除されたことを確認 > dir Z:\ # スナップショットがリストアされたことを確認 > Copy-Item -Container -Recurse Z:\.snapshot\hourly.2022-05-28_0505\aws-backup-test Z:\aws-backup-test # リストアされたことを確認 > dir Z:\ ディレクトリ: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/05/28 12:39 aws-backup-test > dir Z:\aws-backup-test\ ディレクトリ: Z:\aws-backup-test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/05/25 0:23 36 aws-backup-test.txt # リストアしたフォルダとファイルのタイムスタンプが保持されていることを確認 > date 2022年5月28日 5:31:31
こちらも簡単にリストアできました。
なお、AWS公式ドキュメントに記載の、エクスプローラーの以前のバージョンの復元
からリストアも試してみたのですが、利用可能な以前のバージョンはありませんと表示されてしまいました。
Windows クライアント上のユーザーは、使い慣れた Windows ファイルエクスプローラーインターフェイスを使用して、ファイルを以前のバージョンに復元できます。
- ファイルを復元するには、復元するファイルを選択し、コンテキスト (右クリック) メニューから [Restore previous versions] (以前のバージョンの復元) を選択します。 2.その後、ユーザーは [Previous Versions] (以前のバージョン) リストから以前のバージョンを表示および復元できます。
スナップショットのデータは読み取り専用です。[Previous Versions] (以前のバージョン) タブにリストされているファイルおよびフォルダに変更を加える場合、変更するファイルとフォルダのコピーを書き込み可能な場所に保存し、そのコピーを変更する必要があります。
また、エクスプローラーからZ:\.snapshot
にアクセスしようとしたところ、アクセスできませんでした。
試しにnet use Y: \\SINGLE-AZ-SVM.fsx-dev.classmethod.jp\C$\smb_encryption
で共有smb_encryption
ではなく、共有C$
内のsmb_encryption
フォルダをYドライブにマウントしたところ、以前のバージョンの復元
で複数のバージョンを確認することができました。
Y:\.snapshot
でスナップショットを確認することもできました。
こちらの挙動は仕様です。ONTAP8.3.1なので少し古いですが、NetApp公式ドキュメントに記載がありました。
SVM管理者は、showsnapshot共有プロパティを有効または無効にすることで、Windowsクライアントのユーザが共有の~snapshotディレクトリを表示してアクセスすることができるかどうかを制御します。
showsnapshot共有プロパティが無効になっている場合、SMB 2.xを使用するWindowsクライアントのユーザは、~snapshotディレクトリのパスまたはディレクトリ内の特定のSnapshotコピーのパスを手動で入力しても、~snapshotディレクトリを表示できず、~snapshotディレクトリ内のSnapshotコピーにアクセスできません。
showsnapshot共有プロパティが有効になっている場合でも、SMB 2.xを使用するWindowsクライアントのユーザは、共有のルートにある、または共有のルートより下のジャンクションまたはディレクトリ内にある~snapshotディレクトリを表示できません。 ただし、共有に接続したあと、共有パスの末尾に手動で\~snapshotを追加することで、非表示の~snapshotディレクトリにアクセスできます。 非表示の~snapshotディレクトリには、2つのエントリ ポイントからアクセスできます。
- 共有のルート
- 共有スペースのすべてのジャンクション ポイント 非表示の~snapshotディレクトリには、共有内のジャンクション以外のサブディレクトリからはアクセスできません。
実際、試しにvserver cifs share properties addでshowsnapshot
とshow-previous-versions
プロパティを共有に追加しましたが、変わらずエクスプローラーからZ:\.snapshot
にはアクセスできませんでした。
# 現在のボリュームのプロパティを確認 ::> vserver cifs share properties show Vserver Share Properties ---------------- ------------------------- ----------------------------- classmethod-dev-fsx-netapp-ontap-single-az-svm oplocks c$ browsable changenotify encrypt-data show-previous-versions classmethod-dev-fsx-netapp-ontap-single-az-svm browsable ipc$ classmethod-dev-fsx-netapp-ontap-single-az-svm browsable smb_encryption encrypt-data classmethod-dev-fsx-netapp-ontap-single-az-svm browsable smb_encryption_restore encrypt-data 4 entries were displayed. # "showsnapshot" と "show-previous-versions" プロパティを追加 ::> vserver cifs share properties add -share-name smb_encryption_restore -share-properties showsnapshot, show-previous-versions # "showsnapshot" と "show-previous-versions" プロパティが追加されたことを確認 ::> vserver cifs share properties show Vserver Share Properties ---------------- ------------------------- ----------------------------- classmethod-dev-fsx-netapp-ontap-single-az-svm oplocks c$ browsable changenotify encrypt-data show-previous-versions classmethod-dev-fsx-netapp-ontap-single-az-svm browsable ipc$ classmethod-dev-fsx-netapp-ontap-single-az-svm browsable smb_encryption encrypt-data classmethod-dev-fsx-netapp-ontap-single-az-svm browsable smb_encryption_restore showsnapshot encrypt-data show-previous-versions 4 entries were displayed.
2022/11/30 追記: 改めてWindowsのスナップショットのリストアを以下記事で行いました。ご確認ください。
手動で作成したスナップショットからリストア
次に手動で作成したスナップショットからリストアしてみます。
Amazon Linux 2とWindows Serverとどちらも試してみましたが、特に異なる点はなかったのでAmazon Linux 2で試した内容のみ紹介します。
検証な流れとしては以下の通りです。
- 適当なファイルを数個作成する
- 手動でスナップショットを作成する
- 作成したファイルを削除する
- スナップショットから削除したファイルをリストアする
それではやっていきます。まず、以下のように適当なファイルを作成します。
# "/nfs/snapshot-test" 配下に "snapshot-test_xx.txt" というファイル10個作成 $ mkdir /nfs/snapshot-test $ cd /nfs/snapshot-test $ touch snapshot-test_{1..10}.txt $ ls -1 | xargs -I {} bash -c 'echo "This is a test file of NetApp ONTAP Snapshot" > {}' # ファイルが作成されたことを確認 $ ls -l total 0 -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_10.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_1.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_2.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_3.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_4.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_5.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_6.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_7.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_8.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_9.txt
NetApp ONTAP CLIで手動でスナップショットを作成します。
# "classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs" というボリュームのスナップショットを作成 ::> volume snapshot create -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs -snapshot manual_snapshot_2022-05-28_0910 -comment "Manual snapshot" # スナップショットが作成されたことを確認 ::> volume snapshot show -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- classmethod-dev-fsx-netapp-ontap-single-az-svm classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs daily.2022-05-27_0010 456KB 0% 49% backup-01d01a810dc374e80 476KB 0% 50% daily.2022-05-28_0010 372KB 0% 44% hourly.2022-05-28_0305 248KB 0% 34% hourly.2022-05-28_0405 380KB 0% 45% hourly.2022-05-28_0505 304KB 0% 39% hourly.2022-05-28_0605 312KB 0% 40% hourly.2022-05-28_0705 300KB 0% 39% hourly.2022-05-28_0805 152KB 0% 24% manual_snapshot_2022-05-28_0910 136KB 0% 22% 10 entries were displayed. # ::> volume snapshot show-delta -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs -snapshot1 manual_snapshot_2022-05-28_0910 -snapshot2 hourly.2022-05-28_0505 A total of 1163264 bytes (284 blocks) are different. Elapsed time between the Snapshot copies: 3h 5m 37s.
次にファイルを削除します。
# ディレクトリごとファイルを削除 $ rm -rf /nfs/snapshot-test # ディレクトリが削除されたことを確認 $ ls -l /nfs/ total 4 drwxr-xr-x 2 ssm-user ssm-user 4096 May 25 00:32 aws-backup-test
スナップショットからリストアします。NetApp ONTAP CLIからもvolume snapshot restoreでリストアできるようなので、そちらの方法でやってみます。
::> volume snapshot restore -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs -snapshot manual_snapshot_2022-05-28_0910 Warning: Quota rules currently enforced on volume "classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs" might change during this operation. If the currently enforced quota rules are different from those in Snapshot copy "manual_snapshot_2022-05-28_0910", you might have to resize or reinitialize quotas on this volume after this operation. Do you want to continue? {y|n}: y Warning: Export policies currently enforced on the qtrees of volume "classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs" will not change during this operation. If the currently enforced export policies are different from those in Snapshot copy "manual_snapshot_2022-05-28_0910", reassign the export policies of the qtrees on this volume after this operation. Do you want to continue? {y|n}: y
リストア後、ディレクトリを確認すると確かにリストアできていました。
$ ls -l /nfs/ total 8 drwxr-xr-x 2 ssm-user ssm-user 4096 May 25 00:32 aws-backup-test drwxr-xr-x 2 ssm-user ssm-user 4096 May 28 06:18 snapshot-test $ ls -l /nfs/snapshot-test/ total 0 -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_10.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_1.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_2.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_3.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_4.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_5.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_6.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_7.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_8.txt -rw-r--r-- 1 ssm-user ssm-user 45 May 28 06:19 snapshot-test_9.txt
スナップショットポリシーの作成と割り当て
最後にスナップショットポリシーの作成と割り当てを試してみます。
今回は10分間隔で最大6世代保持するスナップショットポリシーを作成します。
job schedule cron showで10分毎というジョブスケジュールがあるかどうか確認します。
::> job schedule cron show Cluster Vserver Name Description ------- -------- ----------- -------------------------------------------------- FsxId0967312eff2f5f5e1 FsxId0967312eff2f5f5e1 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.
10min
というズバリのジョブスケジュールがありました。
こちらの10min
を指定してスナップショットポリシーを作成します。
# スナップショットポリシーの作成 ::> volume snapshot policy create -policy snapshot_policy_every_10_min -enabled true -schedule1 10min -count1 6 -prefix1 every_10_min # 意図した値でスナップショットポリシーが作成されたか確認 ::> volume snapshot policy show Vserver: classmethod-dev-fsx-netapp-ontap-single-az-svm Number of Is Policy Name Schedules Enabled Comment ------------------------ --------- ------- ---------------------------------- default 3 true Default policy with hourly, daily & weekly schedules. Schedule Count Prefix SnapMirror Label ---------------------- ----- ---------------------- ------------------- hourly 6 hourly - daily 2 daily daily weekly 2 weekly weekly default-1weekly 3 true Default policy with 6 hourly, 2 daily & 1 weekly schedule. Schedule Count Prefix SnapMirror Label ---------------------- ----- ---------------------- ------------------- hourly 6 hourly - daily 2 daily - weekly 1 weekly - none 0 false Policy for no automatic snapshots. Schedule Count Prefix SnapMirror Label ---------------------- ----- ---------------------- ------------------- - - - - snapshot_policy_every_10_min 1 true - Schedule Count Prefix SnapMirror Label ---------------------- ----- ---------------------- ------------------- 10min 6 every_10_min - 4 entries were displayed.
作成したスナップショットポリシーをボリュームに割り当てます。
# 現在ボリュームに割り当たっているスナップショットポリシーを確認 ::> volume show -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs -fields snapshot-policy vserver volume snapshot-policy ---------------------------------------------- ----------------------------------------------------- --------------- classmethod-dev-fsx-netapp-ontap-single-az-svm classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs default # 作成したスナップショットポリシーに変更 ::> volume modify -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs -snapshot-policy snapshot_policy_every_10_min Warning: You are changing the Snapshot policy on volume "classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs" to "snapshot_policy_every_10_min". 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 classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs of Vserver classmethod-dev-fsx-netapp-ontap-single-az-svm. # 現在ボリュームに割り当たっているスナップショットポリシーが変更されたか確認 ::> volume show -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs -fields snapshot-policy vserver volume snapshot-policy ---------------------------------------------- ----------------------------------------------------- ---------------------------- classmethod-dev-fsx-netapp-ontap-single-az-svm classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs snapshot_policy_every_10_min
作成したスナップショットポリシーをボリュームに割り当てたことを確認したら、スナップショットが10分毎に作成されたか確認するため放置します。
# 17:52 に確認 ::> volume snapshot show -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- classmethod-dev-fsx-netapp-ontap-single-az-svm classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs daily.2022-05-27_0010 456KB 0% 52% backup-01d01a810dc374e80 476KB 0% 53% daily.2022-05-28_0010 372KB 0% 47% hourly.2022-05-28_0305 248KB 0% 37% hourly.2022-05-28_0405 380KB 0% 48% hourly.2022-05-28_0505 304KB 0% 42% hourly.2022-05-28_0605 312KB 0% 43% hourly.2022-05-28_0705 300KB 0% 42% hourly.2022-05-28_0805 152KB 0% 27% manual_snapshot_2022-05-28_0910 352KB 0% 46% every_10_min.2022-05-28_0850 136KB 0% 25% 11 entries were displayed. # 18:23 に確認 ::> volume snapshot show -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_smb_encryption ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- classmethod-dev-fsx-netapp-ontap-single-az-svm classmethod_dev_fsx_netapp_ontap_single_az_volume_smb_encryption weekly.2022-05-22_0015 484KB 0% 55% backup-040de54495bdc719a 464KB 0% 54% daily.2022-05-27_0010 428KB 0% 52% backup-0edac0287df3bb291 488KB 0% 55% daily.2022-05-28_0010 412KB 0% 51% hourly.2022-05-28_0305 316KB 0% 44% hourly.2022-05-28_0405 148KB 0% 27% hourly.2022-05-28_0505 432KB 0% 52% hourly.2022-05-28_0605 148KB 0% 27% hourly.2022-05-28_0705 332KB 0% 45% hourly.2022-05-28_0805 176KB 0% 31% manual_snapshot_2022-05-28_0910 336KB 0% 46% every_10_min.2022-05-28_0850 272KB 0% 40% every_10_min.2022-05-28_0900 140KB 0% 26% every_10_min.2022-05-28_0910 252KB 0% 39% every_10_min.2022-05-28_0920 136KB 0% 25% 16 entries were displayed. # 21:16 に確認 ::> volume snapshot show -volume classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- classmethod-dev-fsx-netapp-ontap-single-az-svm classmethod_dev_fsx_netapp_ontap_single_az_volume_nfs daily.2022-05-27_0010 456KB 0% 46% backup-01d01a810dc374e80 476KB 0% 47% daily.2022-05-28_0010 372KB 0% 41% hourly.2022-05-28_0305 248KB 0% 31% hourly.2022-05-28_0405 380KB 0% 41% hourly.2022-05-28_0505 304KB 0% 36% hourly.2022-05-28_0605 312KB 0% 37% hourly.2022-05-28_0705 300KB 0% 36% hourly.2022-05-28_0805 152KB 0% 22% manual_snapshot_2022-05-28_0910 360KB 0% 40% every_10_min.2022-05-28_1120 284KB 0% 34% every_10_min.2022-05-28_1130 144KB 0% 21% every_10_min.2022-05-28_1140 144KB 0% 21% every_10_min.2022-05-28_1150 144KB 0% 21% every_10_min.2022-05-28_1200 280KB 0% 34% every_10_min.2022-05-28_1210 144KB 0% 21% 16 entries were displayed.
確かに10分毎にスナップショットを作成し、最大6世代保持していることが分かりました。
普段使いはスナップショットからリストアするのが簡単
Amazon FSx for NetApp ONTAPでスナップショットの作成とリストアを試してみました。
普段運用していてボリューム丸ごとリストアする場面よりもファイル単位でリストアする場面の方が圧倒的に多いと思います。
そのような場面ではスナップショット機能は大変重宝しそうです。
また、スナップショットには簡単にアクセスできるので、「そういえばあの時、このファイルのどこを修正したんだっけ...」といった時にも大活躍します。
$ cat /nfs/snapshot-test/snapshot-test_1.txt This is a test file of NetApp ONTAP Snapshot # ファイルに一行追加 $ echo "new line" >> /nfs/snapshot-test/snapshot-test_1.txt # スナップショットと比較 $ diff -u /nfs/.snapshot/manual_snapshot_2022-05-28_0910/snapshot-test/snapshot-test_1.txt /nfs/snapshot-test/snapshot-test_1.txt --- /nfs/.snapshot/manual_snapshot_2022-05-28_0910/snapshot-test/snapshot-test_1.txt 2022-05-28 06:19:04.746293000 +0000 +++ /nfs/snapshot-test/snapshot-test_1.txt 2022-05-28 08:24:06.476463000 +0000 @@ -1 +1,2 @@ This is a test file of NetApp ONTAP Snapshot +new line
FSx for ONTAPを使うのであればスナップショット機能を使わない手はないですね。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!