[Amazon FSx for NetApp ONTAP] エクスプローラーでファイルを選択して以前のバージョンからリストアをする場合はSnapshotとの差分が必要
Snapshotを取得したのに以前のバージョン一覧に表示されない
こんにちは、のんピ(@non____97)です。
皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)を使っていて、Snapshotを取得したのに、エクスプローラーの以前のバージョン (Previous Versions)
したいなと思ったことはありますか? 私はあります。
Windows端末をお使いでSMBで接続している場合、以前のバージョン
からファイルをリストアするのが便利です。
以下記事で紹介しているとおり、SnapRestoreでは行いづらい指定したディレクトリ配下のみを特定時点に戻すということも可能です。
また、SnapRestoreと比較して、以前のバージョン
からリストアする場合は、管理者に依頼せずともユーザー側でリストア作業を行うことが可能であり、管理者もユーザー側も対応コストを減らすことが可能です。
そんな以前のバージョン
ですが、Snapshotを取得したにも関わらず、一覧に何も表示されないということがあります。(以下の要件を満たしていることが前提)
いきなりまとめ
- エクスプローラーでファイルを選択して
以前のバージョン
からリストアをする場合はSnapshotとの差分が必要- フォルダを指定した場合は差分がなくとも
以前のバージョン
からリストア可能
- フォルダを指定した場合は差分がなくとも
- まずは
以前のバージョン
で一覧を表示する要件を満たしているか確認しよう- ボリュームの
snapdir-access
がtrue
- SMBファイル共有の
show-previous-versions
が設定されている
- ボリュームの
やってみる
検証環境
検証環境は以下のとおりです。
SMBサーバーはドメイン参加しており、SMBファイル共有のオブションはデフォルトのままです。
[1/23/2025 05:25:11] FsxId0e64a4f5386f74c87::*> cifs show -vserver svm
Vserver: svm
CIFS Server NetBIOS Name: SMB-SERVER
NetBIOS Domain/Workgroup Name: CORP
Fully Qualified Domain Name: CORP.NON-97.NET
Organizational Unit: OU=FSxForONTAP,DC=corp,DC=non-97,DC=net
Default Site Used by LIFs Without Site Membership:
Workgroup Name: -
Kerberos Realm: -
Authentication Style: domain
CIFS Server Administrative Status: up
CIFS Server Description:
List of NetBIOS Aliases: -
FsxId0e64a4f5386f74c87::*> cifs share create -vserver svm -share-name previous-version-test-share -path /vol_previous_version_test/share
FsxId0e64a4f5386f74c87::*> cifs share show -share-name previous-version-test-share
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm previous- /vol_previous_ oplocks - Everyone / Full Control
version-test- version_test/ browsable
share share changenotify
show-previous-versions
また、別SVMと5分間隔のSnapMirrorを行なっています。
FsxId0e64a4f5386f74c87::*> snapmirror protect -path-list svm:vol_previous_version_test -destination-vserver svm2 -policy MirrorAllSnapshots -schedule 5min -auto-initialize true -support-tiering true
[Job 2201] Job is queued: SnapMirror protect for list of source endpoints beginning with "svm:vol_previous_version_test".
FsxId0e64a4f5386f74c87::*> snapmirror show -destination-path svm2:vol_previous_version_test_dst -fields state, status, healthy, policy, schedule, last-transfer-end-timestamp
source-path destination-path schedule policy state status healthy last-transfer-end-timestamp
----------------------------- ---------------------------------- -------- ------------------ ------------ ------ ------- ---------------------------
svm:vol_previous_version_test svm2:vol_previous_version_test_dst 5min MirrorAllSnapshots Snapmirrored Idle true 01/23 04:40:03
FsxId0e64a4f5386f74c87::*> volume show -volume vol_previous_version_test* -fields snapdir-access, snapshot-policy, snapshot-count, type, security-style, junction-path
vserver volume security-style junction-path type snapdir-access snapshot-policy snapshot-count
------- ------------------------- -------------- -------------------------- ---- -------------- --------------- --------------
svm vol_previous_version_test ntfs /vol_previous_version_test RW true none 1
svm2 vol_previous_version_test_dst
ntfs - DP true none 2
2 entries were displayed.
ファイルがない状態で以前のバージョンを確認する
まず、ファイルがない状態で以前のバージョン
を確認します。
4:50のSnapshotを確認できました。
こちらのSnapshotはSnapMirrorによって5分間隔で取得されたものです。。
Snapshot一覧を確認すると、確かにsnapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_045000
と4:50に取得したと思われるSnapshotのみが存在していました。
[1/23/2025 04:52:04] FsxId0e64a4f5386f74c87::*> snapmirror show -destination-path svm2:vol_previous_version_test_dst -fields state, status, healthy, policy, schedule, last-transfer-end-timestamp
source-path destination-path schedule policy state status healthy last-transfer-end-timestamp
----------------------------- ---------------------------------- -------- ------------------ ------------ ------ ------- ---------------------------
svm:vol_previous_version_test svm2:vol_previous_version_test_dst 5min MirrorAllSnapshots Snapmirrored Idle true 01/23 04:50:03
::*> snapshot show -volume vol_previous_version_test*
---Blocks---
Vserver Volume Snapshot Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm vol_previous_version_test
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_045000
208KB 0% 47%
svm2 vol_previous_version_test_dst
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_044500
240KB 0% 41%
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_045000
176KB 0% 34%
3 entries were displayed.
SnapMirrorのタイミングで取得されたSnapshotはsm_created
で制御されます。sm_created
のSnapshotを取得するかはSnapMirror relationshipで設定しているSnapMirror Policyで確認できます。
[1/23/2025 05:25:15] FsxId0e64a4f5386f74c87::*> snapmirror policy show
Vserver Policy Policy Number Transfer
Name Name Type Of Rules Tries Priority Comment
------- ------------------ ------ -------- ----- -------- ----------
FsxId0e64a4f5386f74c87
Asynchronous mirror-vault 3 8 normal A unified Asynchronous SnapMirror and SnapVault policy for mirroring the latest active file system and daily and weekly Snapshot copies with an hourly transfer schedule.
SnapMirror Label: sm_created Keep: 1
daily 7
weekly 52
Total Keep: 60
FsxId0e64a4f5386f74c87
AutomatedFailOver automated-failover
1 8 normal Policy for SnapMirror Synchronous with zero RTO guarantee where client I/O will not be disrupted on replication failure.
SnapMirror Label: sm_created Keep: 1
Total Keep: 1
FsxId0e64a4f5386f74c87
AutomatedFailOverDuplex
automated-failover-duplex
1 8 normal Policy for SnapMirror Synchronous with zero RTO guarantee and Bi-directional sync replication.
SnapMirror Label: sm_created Keep: 1
Total Keep: 1
FsxId0e64a4f5386f74c87
CloudBackupDefault vault 1 8 normal Vault policy with daily rule.
SnapMirror Label: daily Keep: 7
Total Keep: 7
FsxId0e64a4f5386f74c87
Continuous continuous 0 8 normal Policy for S3 bucket mirroring.
SnapMirror Label: - Keep: -
Total Keep: 0
FsxId0e64a4f5386f74c87
DPDefault async-mirror 2 8 normal Asynchronous SnapMirror policy for mirroring all Snapshot copies and the latest active file system.
SnapMirror Label: sm_created Keep: 1
all_source_snapshots 1
Total Keep: 2
FsxId0e64a4f5386f74c87
DailyBackup vault 1 8 normal Vault policy with a daily rule and a daily transfer schedule.
SnapMirror Label: daily Keep: 7
Total Keep: 7
Vserver Policy Policy Number Transfer
Name Name Type Of Rules Tries Priority Comment
------- ------------------ ------ -------- ----- -------- ----------
FsxId0e64a4f5386f74c87
Migrate migrate 2 8 normal Policy for Migrate
SnapMirror Label: sm_created Keep: 1
all_source_snapshots 1
Total Keep: 2
FsxId0e64a4f5386f74c87
MirrorAllSnapshots async-mirror 2 8 normal Asynchronous SnapMirror policy for mirroring all Snapshot copies and the latest active file system.
SnapMirror Label: sm_created Keep: 1
all_source_snapshots 1
Total Keep: 2
FsxId0e64a4f5386f74c87
MirrorAllSnapshotsDiscardNetwork
async-mirror 2 8 normal Asynchronous SnapMirror policy for mirroring all Snapshot copies and the latest active file system excluding the network configurations.
Discard Configs: network
SnapMirror Label: sm_created Keep: 1
all_source_snapshots 1
Total Keep: 2
FsxId0e64a4f5386f74c87
MirrorAndVault mirror-vault 3 8 normal A unified Asynchronous SnapMirror and SnapVault policy for mirroring the latest active file system and daily and weekly Snapshot copies.
SnapMirror Label: sm_created Keep: 1
daily 7
weekly 52
Total Keep: 60
FsxId0e64a4f5386f74c87
MirrorAndVaultDiscardNetwork
mirror-vault 3 8 normal A unified Asynchronous SnapMirror and SnapVault policy for mirroring the latest active file system and daily and weekly Snapshot copies excluding the network configurations.
Discard Configs: network
SnapMirror Label: sm_created Keep: 1
daily 7
weekly 52
Total Keep: 60
FsxId0e64a4f5386f74c87
MirrorLatest async-mirror 1 8 normal Asynchronous SnapMirror policy for mirroring the latest active file system.
SnapMirror Label: sm_created Keep: 1
Total Keep: 1
Vserver Policy Policy Number Transfer
Name Name Type Of Rules Tries Priority Comment
------- ------------------ ------ -------- ----- -------- ----------
FsxId0e64a4f5386f74c87
SnapCenterSync sync-mirror 2 8 normal Policy for SnapMirror Synchronous for Snap Center with Application Created Snapshot configuration.
SnapMirror Label: sm_created Keep: 2
app_consistent 1
Total Keep: 3
FsxId0e64a4f5386f74c87
StrictSync strict-sync-mirror
1 8 normal Policy for SnapMirror Synchronous where client access will be disrupted on replication failure.
SnapMirror Label: sm_created Keep: 2
Total Keep: 2
FsxId0e64a4f5386f74c87
Sync sync-mirror 1 8 normal Policy for SnapMirror Synchronous where client access will not be disrupted on replication failure.
SnapMirror Label: sm_created Keep: 2
Total Keep: 2
FsxId0e64a4f5386f74c87
Unified7year mirror-vault 4 8 normal Unified SnapMirror policy with 7year retention.
SnapMirror Label: sm_created Keep: 1
daily 7
weekly 52
monthly 84
Total Keep: 144
FsxId0e64a4f5386f74c87
XDPDefault vault 2 8 normal Vault policy with daily and weekly rules.
SnapMirror Label: daily Keep: 7
weekly 52
Total Keep: 59
18 entries were displayed.
SnapMirrorによって取得されたSnapshotは、取得するタイミングで転送元ボリュームから以前取得されたSnapMirrorによって取得されたSnapshotを削除します。
そのため、5分ほど経過すると転送元ボリュームの最新のSnapshotが4:55のものになりました。
[1/23/2025 04:54:37] FsxId0e64a4f5386f74c87::*> snapshot show -volume vol_previous_version_test*
---Blocks---
Vserver Volume Snapshot Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm vol_previous_version_test
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_045500
216KB 0% 38%
svm2 vol_previous_version_test_dst
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_045000
248KB 0% 42%
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_045500
156KB 0% 31%
3 entries were displayed.
[1/23/2025 04:55:10] FsxId0e64a4f5386f74c87::*> snapmirror show -destination-path svm2:vol_previous_version_test_dst -fields state, status, healthy, policy, schedule, last-transfer-end-timestamp
source-path destination-path schedule policy state status healthy last-transfer-end-timestamp
----------------------------- ---------------------------------- -------- ------------------ ------------ ------ ------- ---------------------------
svm:vol_previous_version_test svm2:vol_previous_version_test_dst 5min MirrorAllSnapshots Snapmirrored Idle true 01/23 04:55:02
それに連動して以前のバージョン
で復元できる時刻が4:50から4:55に変わりました。
ファイルを作成して、以前のバージョンを確認する
それではファイルを作成して、以前のバージョン
を確認します。
4:57に空のテキストファイルを作成しました。
この状態で以前のバージョン
を確認しましたが、何も表示されません。
ファイルを更新して、以前のバージョンを確認する
ファイルの更新をした上で、以前のバージョン
を確認しましょう。
4:59にファイルを更新しました。
この状態で5:00に以前のバージョン
を確認しましたが、何も表示されません。
これは保持しているSnapshotと現在のファイルとの間に差分がないためです。
ファイル指定をした場合、Snapshotを取得してから何も更新がないファイルについては以前のバージョン
に何もSnapshotが表示されません。
先ほど4:59に更新をしたタイミングでは4:55に取得したSnapshotがありましたが、ファイルが作成されたのが4:57であり、4:55のSnapshotにはそもそも含まれていません。
また、確認したタイミングが5:00であり、SnapMirrorによって5:00にSnapshotが取得され、4:55のSnapshotは削除された影響によって、現在のファイルとの差分もないと言う訳です。
ファイルを再度更新して、以前のバージョンを確認する
ファイルを再度更新して、以前のバージョンを確認します。
5:01にファイルを更新して、5:02に以前のバージョン
を確認しました。
すると、前回更新した時刻である4:59に戻せるように表示されていました。
これは、5:00に取得されたSnapshotと、現在のファイルとの間に差分があるためです。
ファイルを再度更新してから5分後、以前のバージョンを確認する
動きを理解するために、ファイルを再度更新してから5分後、もう一度以前のバージョンを確認しましょう。
現在は5:06です。
SnapMirrorの状態を確認すると、5:05にSnapshotを転送したようです。
[1/23/2025 05:05:30] FsxId0e64a4f5386f74c87::*> snapmirror show -destination-path svm2:vol_previous_version_test_dst -fields state, status, healthy, policy, schedule, last-transfer-end-timestamp
source-path destination-path schedule policy state status healthy last-transfer-end-timestamp
----------------------------- ---------------------------------- -------- ------------------ ------------ ------ ------- ---------------------------
svm:vol_previous_version_test svm2:vol_previous_version_test_dst 5min MirrorAllSnapshots Snapmirrored Idle true 01/23 05:05:03
以前のバージョン
を確認すると、There are no previous versions available
と変化しました。
これは5:05に取得したSnapshotと現在のファイルとの間に差分がないためです。
Snapshotを取得して、以前のバージョンを確認する
次にSnapshotを取得して、以前のバージョンを確認します。
Snapshotを取得したのは5:09です。
[1/23/2025 05:05:43] FsxId0e64a4f5386f74c87::*> snapshot create -vserver svm -volume vol_previous_version_test -snapshot previous-version-test.2024-01-23_040944
[1/23/2025 05:09:47] FsxId0e64a4f5386f74c87::*> snapshot show -volume vol_previous_version_test*
---Blocks---
Vserver Volume Snapshot Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm vol_previous_version_test
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_050500
316KB 0% 53%
previous-version-test.2024-01-23_040944 148KB 0% 35%
svm2 vol_previous_version_test_dst
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_050000
248KB 0% 42%
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_050500
156KB 0% 31%
4 entries were displayed.
5:10を迎えたタイミングでSnapMirrorが走り、SnapMirrorによって取得されたSnapshotの入れ替わりが発生しました。
[1/23/2025 05:10:46] FsxId0e64a4f5386f74c87::*> snapmirror show -destination-path svm2:vol_previous_version_test_dst -fields state, status, healthy, policy, schedule, last-transfer-end-timestamp
source-path destination-path schedule policy state status healthy last-transfer-end-timestamp
----------------------------- ---------------------------------- -------- ------------------ ------------ ------ ------- ---------------------------
svm:vol_previous_version_test svm2:vol_previous_version_test_dst 5min MirrorAllSnapshots Snapmirrored Idle true 01/23 05:10:05
[1/23/2025 05:09:50] FsxId0e64a4f5386f74c87::*> snapshot show -volume vol_previous_version_test*
---Blocks---
Vserver Volume Snapshot Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
svm vol_previous_version_test
previous-version-test.2024-01-23_040944 152KB 0% 30%
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_051000
300KB 0% 45%
svm2 vol_previous_version_test_dst
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_050500
240KB 0% 41%
previous-version-test.2024-01-23_040944 212KB 0% 38%
snapmirror.2bb6c4fc-a554-11ef-accd-b31c82a68aa5_2149324125.2025-01-23_051000
180KB 0% 34%
5 entries were displayed.
5:11に以前のバージョン
を確認します。
はい、何も表示されません。どちらのSnapshotとも差分がないためですね。
Snapshot取得後にファイルを更新して、以前のバージョンを確認する
さらにファイルを更新した上で、以前のバージョン
を確認します。
ファイルを更新したのは5:12で、ファイルを確認したのは5:12です。(テキスト上は5:11ですが、保存したタイミング的には5:12でした)
僅かしか見えていませんが、過去のバージョンに戻せそうですね。
ちなみにフォルダを指定すると、以下のようにSnapshotを取得したタイミングの時刻に戻すことができるような表示がされていました。
Snapshot取得後にファイルを更新してから5分後、以前のバージョンを確認する
Snapshot取得後にファイルを更新してから5分後、以前のバージョンを確認してみましょう。
まず、現在の状態を確認します。現在の時刻は5:16です。
はい、5:01の状態に戻せることが分かります。
5:16にファイルを更新し、5:17に以前のバージョン
を確認します。
ファイルを更新したタイミングである5:01と5:12時点に戻せることが分かります。
そのまま放置します。
現在5:20です。
5:01のみになりました。5:12との差分を保持していたSnapshotはSnapMirrorによって取得されたSnapshotであったため、5:12には戻れなくなったということです。
時系列で整理
少し時系列で整理してみましょう。
日時 | イベント | テストで用意したファイルを含むSnapshot | 以前のバージョンで表示されるSnapshot | 備考 |
---|---|---|---|---|
4:55 | SnapMirrorによるSnapshotの取得 | なし | なし | |
4:57 | テストファイルの作成 | なし | なし | |
4:59 | テストファイルの更新 | なし | なし | |
5:00 | SnapMirrorによるSnapshotの取得 | 5:00のSnapshot | なし | 取得されたSnapshotと現在のファイルに差分がないため |
5:01 | テストファイルの更新 | 5:00のSnapshot | 5:00のSnapshot | 5:00のSnapshotと現在のファイルに差分があるため |
5:05 | SnapMirrorによるSnapshotの取得 | 5:05のSnapshot | なし | 取得されたSnapshotと現在のファイルに差分がないため |
5:09 | 手動でSnapshotを取得 | 5:05のSnapshot 5:09のSnapshot |
なし | いずれのSnapshotも現在のファイルと差分がないため |
5:10 | SnapMirrorによるSnapshotの取得 | 5:09のSnapshot 5:10のSnapshot |
なし | いずれのSnapshotも現在のファイルと差分がないため |
5:12 | テストファイルの更新 | 5:09のSnapshot 5:10のSnapshot |
5:09のSnapshot | 前回の更新が最も古いSnapshotが5:09のSnapshotと差分があるため |
5:15 | SnapMirrorによるSnapshotの取得 | 5:09のSnapshot 5:15のSnapshot |
5:09のSnapshot | 前回の更新が発生したSnapshotである5:09のSnapshotと差分があるため |
5:16 | テストファイルの更新 | 5:09のSnapshot 5:15のSnapshot |
5:09のSnapshot 5:15のSnapshot |
どちらのSnapshotとも差分があるため |
5:20 | SnapMirrorによるSnapshotの取得 | 5:09のSnapshot 5:20のSnapshot |
5:09のSnapshot | 前回の更新が最も古いSnapshotが5:09のSnapshotと差分があり、5:20とのSnapshotとの差分はないため |
どのタイミングに戻る時に、いつ取得されたSnapshotが使われるのか差分を意識しよう
Amazon FSx for NetApp ONTAPにてエクスプローラーでファイルを選択して、以前のバージョン
からリストアをする場合はSnapshotとの差分が必要ということを紹介しました。
5分間隔でSnapMirrorで転送している = 直近5分前から5分刻みで戻れる ではありません。
どのタイミングに戻る時に、いつ取得されたSnapshotが使われるのか差分を意識しましょう。sm_created
のSnapshotに依存するのではなく、差分情報を保持したい間隔でSnapshotを取得するSnapshot Policyを設定しましょう。
また、まずは以前のバージョン
で一覧を表示する要件を満たしているか確認しましょう。以下の両方の条件を満たしている必要があります。
- ボリュームの
snapdir-access
がtrue
- SMBファイル共有の
show-previous-versions
が設定されている
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!