ONTAPのcompliance clockは 実時間から遅れるのは避けられない仕様

ONTAPでsnaplockおよび、その派生である tamperproof snapshot (期限切れになるまで削除できないsnapshot)を使用する場合、 compliance clockを使用する

compliance clockの利用を開始する場合の手順は「ONTAP Compliance Clockを初期化する」に記載されているが、運用上の注意点が書いてないような気がする・・・

NetApp TR-4526:NetApp SnapLockを使用したコンプライアンス準拠のWORMストレージ

Compialce Clockは1回設定すると、システム全体を初期化するまで時計をずらすことが出来ない。

設定時点から1秒ずつカウントアップしていくが、例えば、停電などでシステムを停止した場合はカウントが止まるので、実際の時刻とずれが発生する。

実時間とのずれが発生しても、「システム全体を初期化するまで時計をずらすことが出来ない」という仕様のため、実時間(もしくはシステム時間)とCompliance Clockのズレは広がっていくだけとなる。

これは、システム時間を意図的にずらすことで、設定してあった期限が来た、と誤認させるということをできなくするためである。

このため、長期で運用していたりすると、システム時間とCompliance Clockとが1週間異なる、といった事態が発生する。

仮想環境の場合は、「snaplock compliance-clock ntp modify -is-sync-enabled true」を設定すると、運用中であっても時々NTPと同期を取ってくれるらしいのだが、検証した環境では2日以上ずれたままとなっている(→ONTAPのtamperproof snapshotを設定してみる)

このように、実時間/システム時間とCompliance Clockにずれが生じるため、tamperproof snapshots などで指定するSnapLockのRetention time(Set the ONTAP SnapLock retention time)は、有効期限を「1時間後」「2日後」といった相対的な値で指定することになっている模様

実時間とCompliance Clockがずれている例

実時間/システム時間とCompliance Clockがずれている例を見てみる

netapp::> date
Node      Date                     Time zone
--------- ------------------------ -------------------------
netapp-01 Tue Mar 10 11:09:21 2026 Japan

netapp::> snaplock compliance-clock show
Node                ComplianceClock Time
------------------- -----------------------------------
netapp-01           Sat Mar 07 22:16:09 JST 2026 +09:00

netapp::>

この状況で作成されたsnapshotに設定された 実時間ベースのcreate-time と Compliance Clockベースのsnaplock-expiry-time

netapp::> volume snapshot show -vserver svm0 -volume snaptest -fields snaplock-expiry-time,snaplock-snapshot-expired,create-time
vserver volume   snapshot               create-time              snaplock-expiry-time     snaplock-snapshot-expired
------- -------- ---------------------- ------------------------ ------------------------ -------------------------
svm0    snaptest weekly.2026-03-08_2021 Sun Mar 08 20:21:24 2026 3/7/2026 19:12:12 +09:00 true
svm0    snaptest hourly.2026-03-09_0005 Mon Mar 09 00:05:00 2026 3/7/2026 22:55:47 +09:00 false
svm0    snaptest daily.2026-03-09_0010  Mon Mar 09 00:10:00 2026 3/7/2026 23:00:48 +09:00 false
svm0    snaptest hourly.2026-03-09_0105 Mon Mar 09 01:05:00 2026 3/7/2026 23:55:48 +09:00 false
svm0    snaptest hourly.2026-03-09_0205 Mon Mar 09 02:05:00 2026 3/8/2026 00:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_0305 Mon Mar 09 03:05:00 2026 3/8/2026 01:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_0405 Mon Mar 09 04:05:00 2026 3/8/2026 02:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_0505 Mon Mar 09 05:05:00 2026 3/8/2026 03:55:48 +09:00 false
svm0    snaptest hourly.2026-03-09_0605 Mon Mar 09 06:05:00 2026 3/8/2026 04:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_0705 Mon Mar 09 07:05:00 2026 3/8/2026 05:55:48 +09:00 false
svm0    snaptest hourly.2026-03-09_0805 Mon Mar 09 08:05:00 2026 3/8/2026 06:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_0905 Mon Mar 09 09:05:00 2026 3/8/2026 07:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_1005 Mon Mar 09 10:05:00 2026 3/8/2026 08:55:48 +09:00 false
svm0    snaptest hourly.2026-03-09_1105 Mon Mar 09 11:05:00 2026 3/8/2026 09:55:48 +09:00 false
svm0    snaptest hourly.2026-03-09_1205 Mon Mar 09 12:05:00 2026 3/8/2026 10:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_1305 Mon Mar 09 13:05:00 2026 3/8/2026 11:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_1405 Mon Mar 09 14:05:00 2026 3/8/2026 12:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_1505 Mon Mar 09 15:05:00 2026 3/8/2026 13:55:48 +09:00 false
svm0    snaptest hourly.2026-03-09_1605 Mon Mar 09 16:05:00 2026 3/8/2026 14:55:48 +09:00 false
svm0    snaptest hourly.2026-03-09_1705 Mon Mar 09 17:05:00 2026 3/8/2026 15:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_1805 Mon Mar 09 18:05:00 2026 3/8/2026 16:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_1905 Mon Mar 09 19:05:00 2026 3/8/2026 17:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_2005 Mon Mar 09 20:05:00 2026 3/8/2026 18:55:47 +09:00 false
svm0    snaptest hourly.2026-03-09_2105 Mon Mar 09 21:05:00 2026 3/8/2026 19:55:48 +09:00 false
svm0    snaptest hourly.2026-03-10_0917 Tue Mar 10 09:17:36 2026 3/8/2026 20:24:23 +09:00 false
svm0    snaptest daily.2026-03-10_0917  Tue Mar 10 09:17:36 2026 3/8/2026 20:24:23 +09:00 false
svm0    snaptest hourly.2026-03-10_1005 Tue Mar 10 10:05:00 2026 3/8/2026 21:11:47 +09:00 false
svm0    snaptest hourly.2026-03-10_1105 Tue Mar 10 11:05:00 2026 3/8/2026 22:11:47 +09:00 false
28 entries were displayed.

netapp::>

上記は、実時間 2026/03/09 21時半頃に停止して、2026/03/10 9時頃に起動している

このため、実時間 2026/03/09 21:05 時点ではCompliance clockは 25時間10分遅れだったものが、実時間 2026/03/10 09:17時点では 36時間53分遅れに拡大している。

さて、各snapshotに設定されたsnaplock-expiry-time は snapshot policyで指定した日数で設定されているので各ボリュームに設定されている値を確認する

netapp::> volume show  -vserver svm0 -volume snaptest -fields snapshot-policy
vserver volume   snapshot-policy
------- -------- ---------------
svm0    snaptest snaptest

netapp::> volume snapshot policy show -policy snaptest
Vserver: netapp
                         Number of Is
Policy Name              Schedules Enabled Comment
------------------------ --------- ------- ----------------------------------
snaptest                         3 true    -
    Schedule       Count  Prefix        SnapMirror Label    Retention Period
    -------------- -----  ------------- ------------------  ------------------
    hourly             6  hourly        -                   1 days
    daily              2  daily         daily               1 days
    weekly             1  weekly        weekly              1 days


netapp::>

ボリュームのsnapshot policyはsnaptest で設定されいたので、その設定を確認すると、上記の様に「Retention Period」は全て「1days」となっているので、1日後に有効期限が切れる、という設定となっていることがわかる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください