[Amazon FSx for NetApp ONTAP] エクスプローラーでファイルを選択して以前のバージョンからリストアをする場合はSnapshotとの差分が必要

[Amazon FSx for NetApp ONTAP] エクスプローラーでファイルを選択して以前のバージョンからリストアをする場合はSnapshotとの差分が必要

Clock Icon2025.01.23

Snapshotを取得したのに以前のバージョン一覧に表示されない

こんにちは、のんピ(@non____97)です。

皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)を使っていて、Snapshotを取得したのに、エクスプローラーの以前のバージョン (Previous Versions)したいなと思ったことはありますか? 私はあります。

Windows端末をお使いでSMBで接続している場合、以前のバージョンからファイルをリストアするのが便利です。

以下記事で紹介しているとおり、SnapRestoreでは行いづらい指定したディレクトリ配下のみを特定時点に戻すということも可能です。

https://dev.classmethod.jp/articles/amazon-fsx-for-netapp-ontap-snaprestore-specific-directory/

また、SnapRestoreと比較して、以前のバージョンからリストアする場合は、管理者に依頼せずともユーザー側でリストア作業を行うことが可能であり、管理者もユーザー側も対応コストを減らすことが可能です。

そんな以前のバージョンですが、Snapshotを取得したにも関わらず、一覧に何も表示されないということがあります。(以下の要件を満たしていることが前提)

https://docs.netapp.com/ja-jp/ontap/smb-admin/requirements-microsoft-previous-versions-concept.html

https://docs.netapp.com/ja-jp/ontap/smb-admin/create-snapshot-config-previous-versions-access-task.html

いきなりまとめ

  • エクスプローラーでファイルを選択して以前のバージョンからリストアをする場合はSnapshotとの差分が必要
    • フォルダを指定した場合は差分がなくとも以前のバージョンからリストア可能
  • まずは以前のバージョンで一覧を表示する要件を満たしているか確認しよう
    • ボリュームのsnapdir-accesstrue
    • 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.

ファイルがない状態で以前のバージョンを確認する

まず、ファイルがない状態で以前のバージョンを確認します。

1.ファイルを作成していない状態で以前のバージョン-2.png

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に変わりました。

2.ファイルを作成していない状態で以前のバージョン_5分経過後-2.png

ファイルを作成して、以前のバージョンを確認する

それではファイルを作成して、以前のバージョンを確認します。

4:57に空のテキストファイルを作成しました。

この状態で以前のバージョンを確認しましたが、何も表示されません。

3.いくら待っても表示されない-2.png

ファイルを更新して、以前のバージョンを確認する

ファイルの更新をした上で、以前のバージョンを確認しましょう。

4:59にファイルを更新しました。

この状態で5:00に以前のバージョンを確認しましたが、何も表示されません。

4.ファイル更新_459-2.png

これは保持している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に以前のバージョンを確認しました。

5.ファイル更新_501-2.png

すると、前回更新した時刻である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と変化しました。

6.ファイル更新後_0506-2.png

これは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に以前のバージョンを確認します。

7.Snapshot取得後_511-2.png

はい、何も表示されません。どちらのSnapshotとも差分がないためですね。

Snapshot取得後にファイルを更新して、以前のバージョンを確認する

さらにファイルを更新した上で、以前のバージョンを確認します。

ファイルを更新したのは5:12で、ファイルを確認したのは5:12です。(テキスト上は5:11ですが、保存したタイミング的には5:12でした)

8.Snapshot取得後ファイル更新_0512-2.png

僅かしか見えていませんが、過去のバージョンに戻せそうですね。

ちなみにフォルダを指定すると、以下のようにSnapshotを取得したタイミングの時刻に戻すことができるような表示がされていました。

9.フォルダ指定_0514-2.png

Snapshot取得後にファイルを更新してから5分後、以前のバージョンを確認する

Snapshot取得後にファイルを更新してから5分後、以前のバージョンを確認してみましょう。

まず、現在の状態を確認します。現在の時刻は5:16です。

10.Snapshot取得後_0516-2.png

はい、5:01の状態に戻せることが分かります。

5:16にファイルを更新し、5:17に以前のバージョンを確認します。

11.Snapshot取得後ファイル更新_0517-2.png

ファイルを更新したタイミングである5:01と5:12時点に戻せることが分かります。

そのまま放置します。

現在5:20です。

12.Snapshot取得後ファイル更新_0520-2.png

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を設定しましょう。

https://dev.classmethod.jp/articles/i-tried-setting-a-custom-snapshot-policy-in-fsx-for-netapp-ontap/

また、まずは以前のバージョンで一覧を表示する要件を満たしているか確認しましょう。以下の両方の条件を満たしている必要があります。

  • ボリュームのsnapdir-accesstrue
  • SMBファイル共有のshow-previous-versionsが設定されている

この記事が誰かの助けになれば幸いです。

以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.