書き込みして一定時間経過したファイルは編集できないようにしたい
こんにちは、のんピ(@non____97)です。
皆さんは書き込みして一定時間経過したファイルは編集できないようにしたいなと思ったことはありますか? 私はあります。
ファイルをロックすることで、データの改ざんや誤削除を防ぐことが可能です。また、コンプライアンス要件として一定期間データの保持が義務付けられている場合にも役立つでしょう。
Amazon FSx for NetApp ONTAPではSnapLockというWORM(Write Once Read Many)の機能があります。
SnapLockを活用することで、上述の要件を満たすことが可能です。
以降SnapLockの説明をします。
いきなりまとめ
- SnapLockとはONTAPが提供するWORM機能
- 保持期間が経過するまで基本的に削除はできない
- 例外としてEnterpriseモードで特権削除を使用できる場合は削除できる
- SnapMirrorの転送先でのみSnapLockを有効化して運用するのが現実的か
- この時、SnapMirror policyは
vault
である必要がある
- この時、SnapMirror policyは
SnapLockとは
概要
SnapLockとは、ONTAPが提供するWORM機能です。
WORMとは、一度書き込んだデータを読み出せるが変更をさせない方式です。SnapLock以外のWORM機能は、AWSだとS3のオブジェクトロックやAWS Backupのボールトロックなどがあります。
SnapLockにおいては、ボリュームに書き込んだファイルを改ざんや削除から保護します。
サポートプロトコルはNFSとSMBです。iSCSI LUNは原則サポートしていないので注意しましょう。
SnapLock では、CIFSやNFSなどの標準オープンファイルプロトコルを使用して、ファイルレベルでこのようなデータ保持を実行できます。SnapLock でサポートされるオープンファイルプロトコルは、NFS(バージョン2、3、4)とCIFS(SMB 1.0、2.0、および3.0)です。 . . (中略) . . SnapLockでは、SnapLock以外のボリュームで作成されたSnapshotコピーをSnapLockバックアップ関係の一部として保護するためにSnapLockに転送する場合にのみ、LUNがサポートされます。読み取り/書き込みSnapLockボリュームではLUNはサポートされません。ただし、Snapshotコピーの改ざんは、SnapMirrorのソースボリュームと、LUNを含むデスティネーションボリュームの両方でサポートされます。
また、SnapLockはボリューム単位で設定します。一度SnapLockを有効にしたボリュームはSnapLockの概要は以下ドキュメントにもまとまっています。
WORM状態の遷移
SnapLockを有効にしたボリューム上のファイルはその瞬間から永久に削除できないという訳ではありません。WORM状態前のファイルは編集、削除は可能ですし、WORM状態になってから指定された保持期間を経過したファイルを削除することが可能です。
WORM状態にするためには以下の3つの方法があります。
- NFSやSMBのファイル属性操作
- SnapLockの自動コミット機能により、指定した期間書き込みがない場合
- ボリュームアペンドモード(VAM)を有効にした場合
順番に説明します。
「1. NFSやSMBのファイル属性操作」とは、ファイルを読み取り専用にする操作です。
具体的には以下のように書き込み権限を奪えば、対象ファイルはWORM状態になります。
bashの場合
$ chmod -w document.txt
cmdの場合
$ attrib +r document.txt
WORMにコミットされたファイルはatimeが保持時刻に設定されます。
$ ls -l /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB*
-rw-r--r--. 1 root root 1073741824 Apr 16 09:51 /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1073741824 Apr 16 09:51 /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB_2
# WORMコミット前の atime の確認
$ stat /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB*
File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB
Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file
Device: 33h/51d Inode: 98 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:nfs_t:s0
Access: 2024-04-16 09:51:34.944474000 +0000
Modify: 2024-04-16 09:51:41.284633000 +0000
Change: 2024-04-16 09:51:41.284633000 +0000
Birth: -
File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB_2
Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file
Device: 33h/51d Inode: 99 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:nfs_t:s0
Access: 2024-04-16 09:51:52.052487000 +0000
Modify: 2024-04-16 09:51:58.352767000 +0000
Change: 2024-04-16 09:51:58.352767000 +0000
Birth: -
# WORMコミット
$ sudo chmod -w /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB*
# WORMコミット後の atime の確認
$ stat /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB*
File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB
Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file
Device: 33h/51d Inode: 98 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:nfs_t:s0
Access: 2024-04-16 09:55:34.000000000 +0000
Modify: 2024-04-16 09:51:41.284633000 +0000
Change: 2024-04-16 09:53:34.000000000 +0000
Birth: -
File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB_2
Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file
Device: 33h/51d Inode: 99 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:nfs_t:s0
Access: 2024-04-16 09:55:34.000000000 +0000
Modify: 2024-04-16 09:51:58.352767000 +0000
Change: 2024-04-16 09:53:34.000000000 +0000
Birth: -
# 現在の時刻 + デフォルト保持期間2分が atime として設定される
$ date
Tue Apr 16 09:53:44 UTC 2024
毎度毎度、手動でファイルを読み取り専用にするのは面倒ですよね。そんな時には「2. SnapLockの自動コミット機能により、指定した期間書き込みがない場合」です。
自動コミット期間中にファイルの変更がなかった場合、SnapLockボリューム上でファイルがWORM状態にコミットされます。自動コミットの期間は、5 分から 10 年の間で指定できます。
最後に「3. ボリュームアペンドモード(VAM)を有効にした場合」です。
WORMで保護されたファイルにある既存のデータは変更できません。ただし、VAMを有効にしたボリュームについては、作成されたファイルは追記可能だが、既存データの編集はできない状態にすることが可能です。手動コミットをすることで以降の書き込みを防ぐことも可能です。
保持期間の計算
各ファイルの保持期間の計算は、ベースとなるComplianceClockと、ファイルごとに設定された保持期間またはSnapLockのデフォルト保持期間によって行われます。
ComplianceClockとはSnapLock専用の時刻です。
ComplianceClockは管理者が1回だけ初期化でき、その後はONTAP内部で時刻計算をします。初期化後は管理者は時刻を進める操作はできなくなります。これにより、WORMファイルの保持期間の短縮を防ぐことが可能です。
また、WORMの保持期間が経過してもファイルに追記することはできません。削除するか、再度保持期間を指定してWORMコミットするかの2択です。
期限の切れた保持期間
WORM ファイルの保持期間が終了すると、ファイルを削除するか、新しい保持期間を設定して WORM 保護を再度有効にすることができます。WORM ファイルは、保持期間の終了後は、自動的に削除されることはありません。保持期間が終了しても、引き続き、WORM ファイルの内容を変更することはできません。
保持期間の関係性はStorage-JAWS#1の以下資料が非常に分かりやすいです。
抜粋 : Storage-JAWS #1
2種類のリテンションモード
SnapLockにはComplianceモードとEnterpriseモードという2種類のリテンションモードがあります。各リテンションモードの説明と相違点は以下のとおりです。
SnapLock 機能 | SnapLock Compliance | SnapLock Enterprise |
---|---|---|
説明 | Compliance ボリューム上の WORM に移行したファイルは、保持期間が終了するまで削除することはできません。 | Enterprise ボリューム上の WORM に移行したファイルは、権限を持つユーザーが特権削除を使用すると、保持期間の終了前に削除することができます。 |
ユースケース | 政府または業界に固有の指令 (SEC 規則 17a-4 (f)、FINRA 規則 4511、CFTC 規制 1.31 など) に対応するため。
ランサムウェア攻撃から防御するため。 |
組織内のデータ整合性と内部コンプライアンスを強化するため。
SnapLock Compliance を使用する前に保持設定をテストするため。 |
自動コミット | はい | はい |
イベントベースの保持 (EBR)* | はい | はい |
リーガルホールド* | はい | いいえ |
特権削除 | いいえ | はい |
ボリューム付加モード | はい | はい |
SnapLock 監査ログボリューム | はい | はい |
抜粋 : SnapLock の働き - FSx for ONTAP
大まかに以下のような使い分けをすると良いと思います。
- Complianceモード
- 要件に対して厳格に対応する必要がある
- いずれの管理者も信用しない
- ファイルの改ざん、削除を確実に防ぎたい
- Enterpriseモード
- 組織内のポリシーを準拠する必要がある
- 管理者は信用できる
- FSxNの移行時など、必要に応じてボリュームを削除できる口が欲しい
上述の表に出てきた以下について以降説明します。
- 特権削除
- リーガルホールド
- イベントベースの保持 (EBR)
- SnapLock監査ログボリューム
特権削除
特権削除は保持期間が経過する前にWORMファイルを削除する機能です。
特権削除を有効化するには、SnapLockボリュームと同じSVMでSnapLock監査ログボリュームを最初に作成する必要があります。
特権削除をした際はSnapLock 監査ログボリュームに記録されます。特権削除で消せはできるけれども、その証跡はしっかり残るということですね。
特権削除の機能を完全に完全に無効化することも可能です。完全に無効にした場合、以降対象ボリュームで特権付き削除を有効にすることはできません。
リーガルホールド
リーガルホールドは保持期間経過後もWORMファイルとして扱うようにする機能です。
保持期間が経過したファイルであっても、リーガルホールドを有効化することで、ファイルの削除を防ぐことができます。
イベントベースの保持 (EBR)
関連する保持期間を含むカスタムポリシーを作成する機能です。
これにより、指定したパス配下のファイルをまとめてWORMにコミットすることが可能です。
SnapLock 監査ログボリューム
SnapLock 監査ログボリュームは、特権削除やリーガルホールドなどの消去できないイベントのレコードの保存先となるボリュームです。
監査ログボリュームは、/snaplock_audit_log
というジャンクションパスにマウントする必要があります。
SnapLock 監査ログボリュームの最小保持期間は6か月です。これはボリュームがEnterpriseモードで作成されたとしても、この保持期間が経過するまで、SnapLock監査ログボリューム、SVM、およびそれに関連するファイルシステムを削除できなくなります。
気軽に作成してしまうと、6ヶ月削除できないFSxNファイルシステムの出来上がりです。注意しましょう。
SnapLock でサポートされる機能とサポートされない機能
SnapLock でサポートされる機能とサポートされない機能は以下のとおりです。
Feature | Supported with SnapLock Compliance | Supported with SnapLock Enterprise |
---|---|---|
Consistency Groups | No | No |
Encrypted volumes | Yes, beginning with ONTAP 9.2. Learn more about Encryption and SnapLock. | Yes, beginning with ONTAP 9.2. Learn more about Encryption and SnapLock. |
FabricPools on SnapLock aggregates | No | Yes, beginning with ONTAP 9.8. Learn more about FabricPool on SnapLock Enterprise aggregates. |
Flash Pool aggregates | Yes, beginning with ONTAP 9.1. | Yes, beginning with ONTAP 9.1. |
FlexClone | You can clone SnapLock volumes, but you cannot clone files on a SnapLock volume. | You can clone SnapLock volumes, but you cannot clone files on a SnapLock volume. |
FlexGroup volumes | Yes, beginning with ONTAP 9.11.1. Learn more about FlexGroup volumes. | Yes, beginning with ONTAP 9.11.1. Learn more about FlexGroup volumes. |
LUNs | No. Learn more about LUN support with SnapLock. | No. Learn more about LUN support with SnapLock. |
MetroCluster configurations | Yes, beginning with ONTAP 9.3. Learn more about MetroCluster support. | Yes, beginning with ONTAP 9.3. Learn more about MetroCluster support. |
Multi-admin verification (MAV) | Yes, beginning with ONTAP 9.13.1. Learn more about MAV support. | Yes, beginning with ONTAP 9.13.1. Learn more about MAV support. |
SAN | No | No |
Single-file SnapRestore | No | Yes |
SnapMirror Business Continuity | No | No |
SnapRestore | No | Yes |
SMTape | No | No |
SnapMirror Synchronous | No | No |
SSDs | Yes, beginning with ONTAP 9.1. | Yes, beginning with ONTAP 9.1. |
Storage efficiency features | Yes, beginning with ONTAP 9.9.1. Learn more about storage efficiency support. | Yes, beginning with ONTAP 9.9.1. Learn more about storage efficiency support. |
抜粋 : What SnapLock is - Supported and unsupported features with SnapLock
FSxNの場合特に注意すべき点は、ComplianceモードだとFabric Poolをサポートしていない点です。
料金
SnapLock ライセンスとして、SnapLockボリュームの物理ストレージサイズに応じて課金が発生します。
東京リージョンのSingle-AZの場合は、0.0244USD/GB
です。
ただし、上限が決まっています。具体的にはリージョンおよびアカウント単位で集計したSnapLockボリュームの最初の 60 TB 分に対してのみ課金が発生します。100TBスケールの環境の場合はコストメリットが出てきそうです。
やってみた
SnapLockの管理ユーザーの作成
実際にやってみましょう。
対象のFSxNファイルシステムのONTAPバージョンは9.13.1P7D3です。
::> set diag
Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y
::*> version
NetApp Release 9.13.1P7D3: Wed Feb 14 13:11:46 UTC 2024
SnapLockボリューム作成前にComplianceClockを確認します。
::*> snaplock compliance-clock show
Node ComplianceClock Time Node ID ID
----------- ----------------------------------- ---------- -------------
FsxId0203a077973a5b898-01
Mon Apr 15 05:24:47 UTC 2024 +00:00 3323134672 1713157822543
FsxId0203a077973a5b898-02
Mon Apr 15 05:24:47 UTC 2024 +00:00 3323134545 1713157821689
2 entries were displayed.
::*> snaplock compliance-clock show -instance
Node: FsxId0203a077973a5b898-01
ComplianceClock Time: Mon Apr 15 05:26:07 UTC 2024 +00:00
Node ID: 3323134672
ID: 1713157822543
ComplianceClock Time (secs): 1713158767
ComplianceClock Skew (secs): 2
Node: FsxId0203a077973a5b898-02
ComplianceClock Time: Mon Apr 15 05:26:07 UTC 2024 +00:00
Node ID: 3323134545
ID: 1713157821689
ComplianceClock Time (secs): 1713158767
ComplianceClock Skew (secs): 2
2 entries were displayed.
既にComplianceClockは初期化されていそうですね。
試しにリーガルホールドの設定を確認してみます。
::*> snaplock legal-hold show
Error: show failed: Only a user with the security login role "vsadmin-snaplock" is allowed to perform this operation.
はい、vsadmin-snaplock
のロールが割り当たっていないと確認できないようです。
現在ONTAP CLIを操作しているユーザーにはファイルシステムの管理ロールfsxadmin
が割り当たっています。これでも表示できないとのことです。
指示通り、vsadmin-snaplock
のロールが割り当たているユーザーを作成します。vsadmin-snaplock
は以下AWS公式ドキュメントの通り、特権削除を含む SnapLock オペレーションの実行が可能です。
今回はsnaplock-user
というユーザーを作成します。
::*> security login show
Vserver: FsxId0203a077973a5b898
Second
User/Group Authentication Acct Authentication
Name Application Method Role Name Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
autosupport console password autosupport no none
fsxadmin http password fsxadmin no none
fsxadmin ontapi password fsxadmin no none
fsxadmin ssh password fsxadmin no none
fsxadmin ssh publickey fsxadmin - none
Vserver: svm
Second
User/Group Authentication Acct Authentication
Name Application Method Role Name Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
vsadmin http password vsadmin yes none
vsadmin ontapi password vsadmin yes none
vsadmin ssh password vsadmin yes none
8 entries were displayed.
::*> security login create -vserver svm -user-or-group-name snaplock-user -application ssh -authentication-method password -role vsadmin-snaplock
Please enter a password for user 'snaplock-user':
Please enter it again:
::*> security login show
Vserver: FsxId0203a077973a5b898
Second
User/Group Authentication Acct Authentication
Name Application Method Role Name Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
autosupport console password autosupport no none
fsxadmin http password fsxadmin no none
fsxadmin ontapi password fsxadmin no none
fsxadmin ssh password fsxadmin no none
fsxadmin ssh publickey fsxadmin - none
Vserver: svm
Second
User/Group Authentication Acct Authentication
Name Application Method Role Name Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
snaplock-user ssh password vsadmin-snaplock no none
vsadmin http password vsadmin yes none
vsadmin ontapi password vsadmin yes none
vsadmin ssh password vsadmin yes none
9 entries were displayed.
作成したユーザーでSVMにSSHします。
$ ssh snaplock-user@svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com
The authenticity of host 'svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com (10.0.8.35)' can't be established.
ED25519 key fingerprint is SHA256:tHz7BDMlAkonbVXcWjOTxF2/Ia1P6nvqaNxa3V11DdI.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com' (ED25519) to the list of known hosts.
(snaplock-user@svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com) Password:
This is your first recorded login.
svm::> set diag
Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y
svm::*>
接続できましたね。
先ほど失敗したコマンドを叩いてみます。
svm::*> snaplock legal-hold show
This table is currently empty.
正常に実行できました。
SnapLockボリュームの作成
次に、SnapLockボリュームを作成します。
今回はマネジメントコンソールから作成します。
::*> volume create -snaplock-type ?
non-snaplock Non SnapLock
compliance SnapLock Compliance
enterprise SnapLock Enterprise
SnapLock周りの設定をまとめると、以下のとおりです。
- リテンションモード : Enterprise
- 監査ログボリューム : 作成しない
- 最小保持期間 : 1分
- 最大保持期間 : 3分
- デフォルト保持期間 : 2分
- 自動コミット : 無効
- 特権削除 : 無効
- ボリュームアペンドモード : 無効
作成後、ONTAP CLIでボリュームの状態を確認します。
::*> volume efficiency show -volume vol_snaplock -fields state, policy, storage-efficiency-mode, inline-compression, inline-dedupe, compression, data-compaction, auto-adaptive-compression-savings, auto-adaptive-compression-existing-volume, using-auto-adaptive-compression
vserver volume state policy compression inline-compression storage-efficiency-mode inline-dedupe data-compaction auto-adaptive-compression-savings using-auto-adaptive-compression auto-adaptive-compression-existing-volume
------- ------------ -------- ------ ----------- ------------------ ----------------------- ------------- --------------- --------------------------------- ------------------------------- -----------------------------------------
svm vol_snaplock Disabled auto false false efficient false false true false false
::*> volume show -volume vol_snaplock -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy, snapshot-polic, snaplock-type, snapshot-locking-enabled
vserver volume size available filesystem-size total used percent-used snapshot-policy dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent snaplock-type logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent snapshot-locking-enabled
------- ------------ ----- --------- --------------- ------- ----- ------------ --------------- ------------------ -------------------------- ------------------- ------------- --------------------- ------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- ------------------------------------------- ------------------------
svm vol_snaplock 128GB 121.6GB 128GB 121.6GB 336KB 0% none 0B 0% 0B 336KB 0% enterprise 336KB 0% - 336KB none 0B 0% false
確かにSnapLockがリテンションモードEnterpriseで設定されています。
ComplianceClockは変わりありませんでした。初期化されることなく、粛々と時刻を刻んでいます。
::*> snaplock compliance-clock show
Node ComplianceClock Time Node ID ID
----------- ----------------------------------- ---------- -------------
FsxId0203a077973a5b898-01
Mon Apr 15 05:47:01 UTC 2024 +00:00 3323134672 1713157822543
FsxId0203a077973a5b898-02
Mon Apr 15 05:47:01 UTC 2024 +00:00 3323134545 1713157821689
2 entries were displayed.
また、aggregateがSnapLock aggregateになっていました。
::*> aggr show -fields snaplock-type
aggregate snaplock-type
--------- -------------
aggr1 enterprise
ONTAP 9.13.1はSnapLockボリュームと非SnapLockボリュームを同じaggregate上に作成できるので、特に気しなくても良いと思います。
ONTAP 9.10.1 よりも前のリリースでは、別の SnapLock アグリゲートを作成する必要があります。ONTAP 9.10.1 以降では、 SnapLock ボリュームと非 SnapLock ボリュームを同じアグリゲート上に配置できるため、 ONTAP 9.10.1 を使用している場合に別の SnapLock アグリゲートを作成する必要がなくなりました。
手動コミット
ファイルを作成して、手動コミットをしてみましょう。
SnapLockボリュームをマウントして、適当なファイルを作成します。
$ sudo mkdir -p /mnt/fsxn/vol_snaplock
$ sudo mount -t nfs svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol_snaplock /mnt/fsxn/vol_snaplock
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol_snaplock nfs4 122G 320K 122G 1% /mnt/fsxn/vol_snaplock
$ echo test | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null
$ cat /mnt/fsxn/vol_snaplock/test.txt
test
コミット前なので追記や削除も可能です。
$ echo test2 | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null
$ cat /mnt/fsxn/vol_snaplock/test.txt
test
test2
$ sudo rm /mnt/fsxn/vol_snaplock/test.txt
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
ls: cannot access '/mnt/fsxn/vol_snaplock/test.txt': No such file or directory
再度ファイルを作成して、手動コミットします。
$ echo test | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
$ sudo chmod -w /mnt/fsxn/vol_snaplock/test.txt
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-r--r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
$ sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt
chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system
再度書き込み権限を付与しようとすると、拒否されました。
しばらくすると、保持期間を超過したのか書き込み権限を付与できました。
$ sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
再度手動コミットしてみます。
$ sudo chmod -w /mnt/fsxn/vol_snaplock/test.txt
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-r--r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
$ sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
時間を空けずに書き込み権限を付与できました。保持期間を指定せずに再手動コミットはできないようです。
保持期間を超過したファイルを変更しようとしてみます。
$ echo test2 | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null
tee: /mnt/fsxn/vol_snaplock/test.txt: Read-only file system
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
はい、先述のとおり編集はできません。
削除は問題なくできることを確認します。
$ sudo rm /mnt/fsxn/vol_snaplock/test.txt
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
ls: cannot access '/mnt/fsxn/vol_snaplock/test.txt': No such file or directory
保持期間の終了タイミングの確認
保持期間の終了タイミングの確認をします。
$ echo test | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-rw-r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt
$ sudo chmod -w /mnt/fsxn/vol_snaplock/test.txt
$ while true; do
date
sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt
result=$?
ls -l /mnt/fsxn/vol_snaplock/test.txt
if [ $result -eq 0 ]; then
break
fi
sleep 5
done
Mon Apr 15 07:36:54 UTC 2024
chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system
-r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt
Mon Apr 15 07:36:59 UTC 2024
chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system
-r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt
.
.
(中略)
.
.
chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system
-r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt
Mon Apr 15 07:38:52 UTC 2024
chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system
-r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt
Mon Apr 15 07:38:57 UTC 2024
$ ls -l /mnt/fsxn/vol_snaplock/test.txt
-rw-r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt
ちょうど2分ですね。SnapLockで指定したデフォルト保持期間の間変更できなかったことが分かります。
自動コミット
次に自動コミットの動作確認です。
ONTAP CLIから自動コミットを有効化します。自動コミット期間はミニマムの5分です。
svm::*> volume snaplock show -volume vol_snaplock -instance
Volume: vol_snaplock
SnapLock Type: enterprise
Minimum Retention Period: 1 minutes
Default Retention Period: 2 minutes
Maximum Retention Period: 3 minutes
Autocommit Period: none
Is Volume Append Mode Enabled: false
Privileged Delete: -
Expiry Time: Mon Apr 15 07:38:53 GMT 2024
ComplianceClock Time: Mon Apr 15 08:01:17 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 0
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention File Count: 0
svm::*> volume snaplock modify -volume vol_snaplock -autocommit-period "5 minutes"
svm::*> volume snaplock show -volume vol_snaplock -instance
Volume: vol_snaplock
SnapLock Type: enterprise
Minimum Retention Period: 1 minutes
Default Retention Period: 2 minutes
Maximum Retention Period: 3 minutes
Autocommit Period: 5 minutes
Is Volume Append Mode Enabled: false
Privileged Delete: -
Expiry Time: Mon Apr 15 07:38:53 GMT 2024
ComplianceClock Time: Mon Apr 15 08:08:33 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 0
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention
自動コミットを有効化後、自動コミット期間内に定期的に書き込んでいる間はWORMにコミットされないことを確認します。
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null
$ while true; do
date
echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null
result=$?
ls -l /mnt/fsxn/vol_snaplock/date.txt
if [ $result -ne 0 ]; then
break
fi
sleep 30
done
Mon Apr 15 08:21:00 UTC 2024
-rw-r--r--. 1 root root 58 Apr 15 08:21 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:21:31 UTC 2024
-rw-r--r--. 1 root root 87 Apr 15 08:21 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:22:01 UTC 2024
-rw-r--r--. 1 root root 116 Apr 15 08:22 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:22:31 UTC 2024
-rw-r--r--. 1 root root 145 Apr 15 08:22 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:23:02 UTC 2024
-rw-r--r--. 1 root root 174 Apr 15 08:23 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:23:32 UTC 2024
-rw-r--r--. 1 root root 203 Apr 15 08:23 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:24:03 UTC 2024
-rw-r--r--. 1 root root 232 Apr 15 08:24 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:24:33 UTC 2024
-rw-r--r--. 1 root root 261 Apr 15 08:24 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:25:03 UTC 2024
-rw-r--r--. 1 root root 290 Apr 15 08:25 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:25:34 UTC 2024
-rw-r--r--. 1 root root 319 Apr 15 08:25 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:26:04 UTC 2024
-rw-r--r--. 1 root root 348 Apr 15 08:26 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:26:34 UTC 2024
-rw-r--r--. 1 root root 377 Apr 15 08:26 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:27:05 UTC 2024
-rw-r--r--. 1 root root 406 Apr 15 08:27 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:27:35 UTC 2024
-rw-r--r--. 1 root root 435 Apr 15 08:27 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:28:05 UTC 2024
-rw-r--r--. 1 root root 464 Apr 15 08:28 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:28:36 UTC 2024
-rw-r--r--. 1 root root 493 Apr 15 08:28 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:29:06 UTC 2024
-rw-r--r--. 1 root root 522 Apr 15 08:29 /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:29:36 UTC 2024
-rw-r--r--. 1 root root 551 Apr 15 08:29 /mnt/fsxn/vol_snaplock/date.txt
^C
最後に編集してから、5分経過後に書き込もうとするとエラーになりました。自動コミットされたタイミングで書き込み権限を奪うようです。
$ date
Mon Apr 15 08:34:49 UTC 2024
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null
tee: /mnt/fsxn/vol_snaplock/date.txt: Read-only file system
$ ls -l /mnt/fsxn/vol_snaplock/date.txt
-r--r--r--. 1 root root 551 Apr 15 08:29 /mnt/fsxn/vol_snaplock/date.txt
ボリュームアペンドモード(VAM)の確認
ボリュームアペンドモード(VAM)の確認をします。
マウント状態ではVAMを有効化することができないことを確認します。
svm::*> volume snaplock modify -volume vol_snaplock -is-volume-append-mode-enabled true
Error: command failed: Failed to modify volume append mode because the volume is in the mounted state. Unmount the volume using the "volume unmount -vserver svm -volume vol_snaplock" command, and then try the command again.
アンマウントしても、ボリューム内にファイルやSnapshotが存在している場合はVAMを有効化できないことを確認します。
::*> volume unmount -volume vol_snaplock
Queued private job: 28
svm::*> volume snaplock modify -volume vol_snaplock -is-volume-append-mode-enabled true
Error: command failed: Failed to modify volume append mode because the volume is not empty. It must not have any data or Snapshot copies.
ボリューム内のファイルを削除した上で、VAMを有効化します。
svm::*> volume mount -volume vol_snaplock -junction-path /vol_snaplock
Queued private job: 29
(ここから bash)
$ sudo rm -rf /mnt/fsxn/vol_snaplock/*
$ ls -l /mnt/fsxn/vol_snaplock/
total 0
(ここからONTAP CLI)
::*> volume unmount -volume vol_snaplock
Queued private job: 30
svm::*> volume snaplock modify -volume vol_snaplock -is-volume-append-mode-enabled true
svm::*> volume snaplock show -volume vol_snaplock -instance
Volume: vol_snaplock
SnapLock Type: enterprise
Minimum Retention Period: 1 minutes
Default Retention Period: 2 minutes
Maximum Retention Period: 3 minutes
Autocommit Period: 5 minutes
Is Volume Append Mode Enabled: true
Privileged Delete: -
Expiry Time: Mon Apr 15 08:36:36 GMT 2024
ComplianceClock Time: Mon Apr 15 08:40:39 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 0
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention File Count: 0
svm::*> volume mount -volume vol_snaplock -junction-path /vol_snaplock
Queued private job: 31
VAMの動作確認のため、空ファイルを作成します。
$ sudo touch /mnt/fsxn/vol_snaplock/date.txt
touch: setting times of '/mnt/fsxn/vol_snaplock/date.txt': Read-only file system
$ ls -l /mnt/fsxn/vol_snaplock/date.txt
-rw-r--r--. 1 root root 0 Apr 15 08:56 /mnt/fsxn/vol_snaplock/date.txt
モードビット上では書き込み権限が付与されていますが、内部的には読み込み専用と判定されたようです。
追記ができることを確認します。
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null
$ cat /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:57:22 UTC 2024
Mon Apr 15 08:57:47 UTC 2024
問題なくできますね。
書き込んだ内容を削除をしようとしてみます。
$ sudo sed -i '1d' /mnt/fsxn/vol_snaplock/date.txt
sed: cannot remove /mnt/fsxn/vol_snaplock/sedSNMW7M: Read-only file system
# 先頭行を削除して保存
$ sudo vi /mnt/fsxn/vol_snaplock/date.txt
$ ls -l /mnt/fsxn/vol_snaplock/date.txt
-rw-r--r--. 1 root root 58 Apr 15 08:57 /mnt/fsxn/vol_snaplock/date.txt
$ cat /mnt/fsxn/vol_snaplock/date.txt
Mon Apr 15 08:57:22 UTC 2024
Mon Apr 15 08:57:47 UTC 2024
書き込んだ内容の編集は拒否されました。自動コミット期間前に書き込んだ内容も削除できないので注意したいです。VAMを有効化するのはログファイル専用ボリュームなど適した用途のみ有効にしたいところです。
手動でコミットした後の変更はどうでしょうか。
$ sudo touch /mnt/fsxn/vol_snaplock/date2.txt
touch: setting times of '/mnt/fsxn/vol_snaplock/date2.txt': Read-only file system
$ ls -l /mnt/fsxn/vol_snaplock/date2.txt
-rw-r--r--. 1 root root 0 Apr 15 09:03 /mnt/fsxn/vol_snaplock/date2.txt
$ sudo chmod -w /mnt/fsxn/vol_snaplock/date2.txt
$ ls -l /mnt/fsxn/vol_snaplock/date2.txt
-r--r--r--. 1 root root 0 Apr 15 09:03 /mnt/fsxn/vol_snaplock/date2.txt
$ sudo chmod +w /mnt/fsxn/vol_snaplock/date2.txt
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date2.txt > /dev/null
$ sudo chmod -w /mnt/fsxn/vol_snaplock/date2.txt
$ sudo chmod +w /mnt/fsxn/vol_snaplock/date2.txt
chmod: changing permissions of '/mnt/fsxn/vol_snaplock/date2.txt': Read-only file system
ファイルサイズが0バイトの状態で読み取り専用にした場合は保持期間内に書き込み権限の付与ができました。一方、ファイルサイズが0バイト超の場合は、手動コミットが効きました。
コミット後の重複排除
SnapLockと重複排除の相性はどうでしょうか。
コミット後のファイルに対して重複排除を効かせてもデータサイズは減少するのでしょうか。
以下のようにSnapLockはStorage Efficiencyをサポートしていそうです。
ストレージ効率
ONTAP 9.9.1以降SnapLock では、SnapLock およびアグリゲートに対して、データコンパクション、ボリューム間重複排除、適応圧縮などのStorage Efficiency機能がサポートされます。Storage Efficiencyの詳細については、を参照してください "CLI による論理ストレージ管理の概要"。
実際に試してみましょう。
Storage Efficiencyを有効にします。
svm::*> volume efficiency on -volume vol_snaplock
Efficiency for volume "vol_snaplock" of Vserver "svm" is enabled.
svm::*> volume efficiency show -volume vol_snaplock -fields state, policy, storage-efficiency-mode, inline-compression, inline-dedupe, compression, data-compaction, auto-adaptive-compression-savings, auto-adaptive-compression-existing-volume, using-auto-adaptive-compression
vserver volume state policy compression inline-compression storage-efficiency-mode inline-dedupe data-compaction auto-adaptive-compression-savings using-auto-adaptive-compression auto-adaptive-compression-existing-volume
------- ------------ ------- ------ ----------- ------------------ ----------------------- ------------- --------------- --------------------------------- ------------------------------- -----------------------------------------
svm vol_snaplock Enabled auto false false efficient false false true false false
手動でコミットします。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB bs=1M count=1024
dd: closing output file '/mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB': Read-only file system
$ sudo cp /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2
cp: failed to close '/mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2': Read-only file system
$ ls -l /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB*
-rw-r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2
$ sudo chmod -w /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB*
$ ls -l /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB*
-r--r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB
-r--r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2
重複排除を実行します。
::*> volume efficiency start -volume vol_snaplock -scan-old-data
Warning: This operation scans all of the data in volume "vol_snaplock" of Vserver "svm". It might take a significant time, and degrade performance during that time.
Do you want to continue? {y|n}: y
The efficiency operation for volume "vol_snaplock" of Vserver "svm" has started.
svm::*> volume show -volume vol_snaplock -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy, snapshot-policy
vserver volume size available filesystem-size total used percent-used snapshot-policy dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent
------- ------------ ----- --------- --------------- ------- ------- ------------ --------------- ------------------ -------------------------- ------------------- ------------- --------------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- -------------------------------------------
svm vol_snaplock 128GB 120.7GB 128GB 121.6GB 951.5MB 0% none 807.8MB 46% 807.8MB 951.5MB 1% 1.72GB 1% - 1.72GB none 0B 0%
::*> aggr show-efficiency -instance
Name of the Aggregate: aggr1
Node where Aggregate Resides: FsxId0203a077973a5b898-01
Logical Size Used by Volumes, Clones, Snapshot Copies in the Aggregate: 1.71GB
Total Physical Used: 946.0MB
Total Storage Efficiency Ratio: 1.85:1
Total Data Reduction Logical Used Without Snapshots: 1.71GB
Total Data Reduction Physical Used Without Snapshots: 945.4MB
Total Data Reduction Efficiency Ratio Without Snapshots: 1.85:1
Total Data Reduction Logical Used without snapshots and flexclones: 1.71GB
Total Data Reduction Physical Used without snapshots and flexclones: 945.4MB
Total Data Reduction Efficiency Ratio without snapshots and flexclones: 1.85:1
Total Logical Size Used by Volumes, Clones, Snapshot Copies in the FabricPool Performance Tier: 1.72GB
Total Physical Used in FabricPool Performance Tier: 1013MB
Total FabricPool Performance Tier Storage Efficiency Ratio: 1.74:1
Total Data Reduction Logical Used without snapshots and flexclones in the FabricPool Performance Tier: 1.72GB
Total Data Reduction Physical Used without snapshots and flexclones in the FabricPool Performance Tier: 1013MB
Total FabricPool Performance Tier Data Reduction Efficiency Ratio without snapshots and flexclones: 1.74:1
Logical Space Used for All Volumes: 1.71GB
Physical Space Used for All Volumes: 945.2MB
Space Saved by Volume Deduplication: 807.8MB
Space Saved by Volume Deduplication and pattern detection: 807.8MB
Volume Deduplication Savings ratio: 1.85:1
Space Saved by Volume Compression: 0B
Volume Compression Savings ratio: 1.00:1
Space Saved by Inline Zero Pattern Detection: 0B
Volume Data Reduction SE Ratio: 1.85:1
Logical Space Used by the Aggregate: 946.0MB
Physical Space Used by the Aggregate: 946.0MB
Space Saved by Aggregate Data Reduction: 0B
Aggregate Data Reduction SE Ratio: 1.00:1
Logical Size Used by Snapshot Copies: 1.76MB
Physical Size Used by Snapshot Copies: 596KB
Snapshot Volume Data Reduction Ratio: 3.02:1
Logical Size Used by FlexClone Volumes: 0B
Physical Sized Used by FlexClone Volumes: 0B
FlexClone Volume Data Reduction Ratio: 1.00:1
Snapshot And FlexClone Volume Data Reduction SE Ratio: 3.02:1
Number of Volumes Offline: 0
Number of SIS Disabled Volumes: 1
Number of SIS Change Log Disabled Volumes: 1
重複排除によってボリュームの物理使用量が減少していますね。また、aggregateの物理使用量も書き込んだデータサイズ1GB未満です。
SnapLockでWORMにコミットされた状態でも重複排除は効くようですね。
コミット後の圧縮
コミット後の圧縮はどうでしょうか。試してみます。
Inactive data compressionを有効化します。
svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance
Volume: vol_snaplock
Vserver: svm
Is Enabled: false
Scan Mode: -
Progress: IDLE
Status: SUCCESS
Compression Algorithm: lzopro
Failure Reason: -
Total Blocks: -
Total blocks Processed: -
Percentage: -
Phase1 L1s Processed: -
Phase1 Lns Skipped: -
Phase2 Total Blocks: -
Phase2 Blocks Processed: -
Number of Cold Blocks Encountered: 0
Number of Repacked Blocks: 0
Number of Compression Done Blocks: 0
Number of Vol-Overwrites: 0
Time since Last Inactive Data Compression Scan started(sec): 0
Time since Last Inactive Data Compression Scan ended(sec): 0
Time since Last Successful Inactive Data Compression Scan started(sec): -
Time since Last Successful Inactive Data Compression Scan ended(sec): 0
Average time for Cold Data Compression(sec): 0
Tuning Enabled: true
Threshold: 14
Threshold Upper Limit: 21
Threshold Lower Limit: 14
Client Read history window: 14
Incompressible Data Percentage: 0%
svm::*> volume efficiency modify -volume vol_snaplock -compression true
svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance
Volume: vol_snaplock
Vserver: svm
Is Enabled: true
Scan Mode: -
Progress: IDLE
Status: SUCCESS
Compression Algorithm: lzopro
Failure Reason: -
Total Blocks: -
Total blocks Processed: -
Percentage: -
Phase1 L1s Processed: -
Phase1 Lns Skipped: -
Phase2 Total Blocks: -
Phase2 Blocks Processed: -
Number of Cold Blocks Encountered: 0
Number of Repacked Blocks: 0
Number of Compression Done Blocks: 0
Number of Vol-Overwrites: 0
Time since Last Inactive Data Compression Scan started(sec): 0
Time since Last Inactive Data Compression Scan ended(sec): 0
Time since Last Successful Inactive Data Compression Scan started(sec): -
Time since Last Successful Inactive Data Compression Scan ended(sec): 0
Average time for Cold Data Compression(sec): 0
Tuning Enabled: true
Threshold: 14
Threshold Upper Limit: 21
Threshold Lower Limit: 14
Client Read history window: 14
Incompressible Data Percentage: 0%
圧縮が効きやすいファイルを作成して、手動でコミットします。
$ yes \
$(base64 /dev/urandom -w 0 \
| head -c 1K
) \
| tr -d '\n' \
| sudo dd of=/mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB bs=4M count=4096 iflag=fullblock
dd: closing output file '/mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB': Read-only file system
$ ls -lh /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB
-rw-r--r--. 1 root root 16G Apr 15 09:58 /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB
$ sudo chmod -w /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB
$ ls -lh /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB
-r--r--r--. 1 root root 16G Apr 15 09:58 /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB
Inactive data compressionを実行します。
svm::*> volume efficiency inactive-data-compression start -volume vol_snaplock -inactive-days 0
Inactive data compression scan started on volume "vol_snaplock" in Vserver "svm"
svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance
Volume: vol_snaplock
Vserver: svm
Is Enabled: true
Scan Mode: default
Progress: RUNNING
Status: SUCCESS
Compression Algorithm: lzopro
Failure Reason: -
Total Blocks: -
Total blocks Processed: -
Percentage: 0%
Phase1 L1s Processed: 4974
Phase1 Lns Skipped:
L1: 0
L2: 0
L3: 0
L4: 0
L5: 0
L6: 0
L7: 0
Phase2 Total Blocks: 0
Phase2 Blocks Processed: 0
Number of Cold Blocks Encountered: 1001288
Number of Repacked Blocks: 0
Number of Compression Done Blocks: 726256
Number of Vol-Overwrites: 0
Time since Last Inactive Data Compression Scan started(sec): 0
Time since Last Inactive Data Compression Scan ended(sec): 0
Time since Last Successful Inactive Data Compression Scan started(sec): -
Time since Last Successful Inactive Data Compression Scan ended(sec): 0
Average time for Cold Data Compression(sec): 0
Tuning Enabled: true
Threshold: 14
Threshold Upper Limit: 21
Threshold Lower Limit: 14
Client Read history window: 14
Incompressible Data Percentage: 0%
svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance
Volume: vol_snaplock
Vserver: svm
Is Enabled: true
Scan Mode: default
Progress: RUNNING
Status: SUCCESS
Compression Algorithm: lzopro
Failure Reason: -
Total Blocks: -
Total blocks Processed: -
Percentage: 43%
Phase1 L1s Processed: 17121
Phase1 Lns Skipped:
L1: 0
L2: 0
L3: 0
L4: 0
L5: 0
L6: 0
L7: 0
Phase2 Total Blocks: 11004608
Phase2 Blocks Processed: 4700241
Number of Cold Blocks Encountered: 4108584
Number of Repacked Blocks: 0
Number of Compression Done Blocks: 3820576
Number of Vol-Overwrites: 0
Time since Last Inactive Data Compression Scan started(sec): 0
Time since Last Inactive Data Compression Scan ended(sec): 0
Time since Last Successful Inactive Data Compression Scan started(sec): -
Time since Last Successful Inactive Data Compression Scan ended(sec): 0
Average time for Cold Data Compression(sec): 0
Tuning Enabled: true
Threshold: 14
Threshold Upper Limit: 21
Threshold Lower Limit: 14
Client Read history window: 14
Incompressible Data Percentage: 0%
svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance
Volume: vol_snaplock
Vserver: svm
Is Enabled: true
Scan Mode: -
Progress: IDLE
Status: SUCCESS
Compression Algorithm: lzopro
Failure Reason: -
Total Blocks: -
Total blocks Processed: -
Percentage: -
Phase1 L1s Processed: -
Phase1 Lns Skipped: -
Phase2 Total Blocks: -
Phase2 Blocks Processed: -
Number of Cold Blocks Encountered: 4108760
Number of Repacked Blocks: 0
Number of Compression Done Blocks: 3820752
Number of Vol-Overwrites: 0
Time since Last Inactive Data Compression Scan started(sec): 21
Time since Last Inactive Data Compression Scan ended(sec): 0
Time since Last Successful Inactive Data Compression Scan started(sec): -
Time since Last Successful Inactive Data Compression Scan ended(sec): 0
Average time for Cold Data Compression(sec): 21
Tuning Enabled: true
Threshold: 14
Threshold Upper Limit: 21
Threshold Lower Limit: 14
Client Read history window: 14
Incompressible Data Percentage: 5%
圧縮したデータブロックが3,820,752なので、3,820,752 * 4 / 1,024 / 1,024 = 14.57GiB
分のデータを圧縮していそうですね。
Inactive data compression実行完了後のaggregateの物理使用量を確認します。
::*> aggr show-efficiency -instance
Name of the Aggregate: aggr1
Node where Aggregate Resides: FsxId0203a077973a5b898-01
Logical Size Used by Volumes, Clones, Snapshot Copies in the Aggregate: 16.32GB
Total Physical Used: 7.33GB
Total Storage Efficiency Ratio: 2.23:1
Total Data Reduction Logical Used Without Snapshots: 16.32GB
Total Data Reduction Physical Used Without Snapshots: 7.33GB
Total Data Reduction Efficiency Ratio Without Snapshots: 2.23:1
Total Data Reduction Logical Used without snapshots and flexclones: 16.32GB
Total Data Reduction Physical Used without snapshots and flexclones: 7.33GB
Total Data Reduction Efficiency Ratio without snapshots and flexclones: 2.23:1
Total Logical Size Used by Volumes, Clones, Snapshot Copies in the FabricPool Performance Tier: 16.60GB
Total Physical Used in FabricPool Performance Tier: 7.72GB
Total FabricPool Performance Tier Storage Efficiency Ratio: 2.15:1
Total Data Reduction Logical Used without snapshots and flexclones in the FabricPool Performance Tier: 16.60GB
Total Data Reduction Physical Used without snapshots and flexclones in the FabricPool Performance Tier: 7.72GB
Total FabricPool Performance Tier Data Reduction Efficiency Ratio without snapshots and flexclones: 2.15:1
Logical Space Used for All Volumes: 16.32GB
Physical Space Used for All Volumes: 15.46GB
Space Saved by Volume Deduplication: 875.1MB
Space Saved by Volume Deduplication and pattern detection: 875.1MB
Volume Deduplication Savings ratio: 1.06:1
Space Saved by Volume Compression: 0B
Volume Compression Savings ratio: 1.00:1
Space Saved by Inline Zero Pattern Detection: 0B
Volume Data Reduction SE Ratio: 1.06:1
Logical Space Used by the Aggregate: 21.28GB
Physical Space Used by the Aggregate: 7.33GB
Space Saved by Aggregate Data Reduction: 13.95GB
Aggregate Data Reduction SE Ratio: 2.90:1
Logical Size Used by Snapshot Copies: 2.37MB
Physical Size Used by Snapshot Copies: 736KB
Snapshot Volume Data Reduction Ratio: 3.29:1
Logical Size Used by FlexClone Volumes: 0B
Physical Sized Used by FlexClone Volumes: 0B
FlexClone Volume Data Reduction Ratio: 1.00:1
Snapshot And FlexClone Volume Data Reduction SE Ratio: 3.29:1
Number of Volumes Offline: 0
Number of SIS Disabled Volumes: 1
Number of SIS Change Log Disabled Volumes: 1
7.33GBと書き込んだ量よりも少ないですね。
一晩寝かせると、5.16GBとさらに少なくなっていました。SnapLockでWORMにコミットされた状態でも圧縮は効くようですね。
::*> aggr show-efficiency -instance
Name of the Aggregate: aggr1
Node where Aggregate Resides: FsxId0203a077973a5b898-01
Logical Size Used by Volumes, Clones, Snapshot Copies in the Aggregate: 16.32GB
Total Physical Used: 5.16GB
Total Storage Efficiency Ratio: 3.16:1
Total Data Reduction Logical Used Without Snapshots: 16.32GB
Total Data Reduction Physical Used Without Snapshots: 5.16GB
Total Data Reduction Efficiency Ratio Without Snapshots: 3.16:1
Total Data Reduction Logical Used without snapshots and flexclones: 16.32GB
Total Data Reduction Physical Used without snapshots and flexclones: 5.16GB
Total Data Reduction Efficiency Ratio without snapshots and flexclones: 3.16:1
Total Logical Size Used by Volumes, Clones, Snapshot Copies in the FabricPool Performance Tier: 16.60GB
Total Physical Used in FabricPool Performance Tier: 5.56GB
Total FabricPool Performance Tier Storage Efficiency Ratio: 2.99:1
Total Data Reduction Logical Used without snapshots and flexclones in the FabricPool Performance Tier: 16.60GB
Total Data Reduction Physical Used without snapshots and flexclones in the FabricPool Performance Tier: 5.56GB
Total FabricPool Performance Tier Data Reduction Efficiency Ratio without snapshots and flexclones: 2.99:1
Logical Space Used for All Volumes: 16.32GB
Physical Space Used for All Volumes: 15.47GB
Space Saved by Volume Deduplication: 875.1MB
Space Saved by Volume Deduplication and pattern detection: 875.1MB
Volume Deduplication Savings ratio: 1.06:1
Space Saved by Volume Compression: 0B
Volume Compression Savings ratio: 1.00:1
Space Saved by Inline Zero Pattern Detection: 0B
Volume Data Reduction SE Ratio: 1.06:1
Logical Space Used by the Aggregate: 19.11GB
Physical Space Used by the Aggregate: 5.16GB
Space Saved by Aggregate Data Reduction: 13.95GB
Aggregate Data Reduction SE Ratio: 3.70:1
Logical Size Used by Snapshot Copies: 2.37MB
Physical Size Used by Snapshot Copies: 736KB
Snapshot Volume Data Reduction Ratio: 3.29:1
Logical Size Used by FlexClone Volumes: 0B
Physical Sized Used by FlexClone Volumes: 0B
FlexClone Volume Data Reduction Ratio: 1.00:1
Snapshot And FlexClone Volume Data Reduction SE Ratio: 3.29:1
Number of Volumes Offline: 0
Number of SIS Disabled Volumes: 1
Number of SIS Change Log Disabled Volumes: 1
コミット後のSnapMirror
コミット後のデータをSnapMirrorできるか確認します。
VAMが有効だったり、自動コミットが有効だと検証しづらいので新規にボリュームを用意します。
::*> volume create -vserver svm -volume vol_snaplock2 -aggregate aggr1 -state online -type RW -security-style unix -size 64GB -tiering-policy none -snapshot-policy none -junction-path /vol_snaplock2 -language utf8mb4 -snaplock-type enterprise
[Job 65] Job succeeded: Successful
::*> volume show -volume vol_snaplock2 -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy, snapshot-policy
vserver volume size available filesystem-size total used percent-used snapshot-policy dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent
------- ------------- ---- --------- --------------- ------- ----- ------------ --------------- ------------------ -------------------------- ------------------- ------------- --------------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- -------------------------------------------
svm vol_snaplock2 64GB 60.80GB 64GB 60.80GB 304KB 0% none 0B 0% 0B 304KB 0% 304KB 0% - 304KB none - -
svm::*> volume snaplock show -volume vol_snaplock2 -instance
Volume: vol_snaplock2
SnapLock Type: enterprise
Minimum Retention Period: 0 years
Default Retention Period: min
Maximum Retention Period: 30 years
Autocommit Period: none
Is Volume Append Mode Enabled: false
Privileged Delete: -
Expiry Time: none
ComplianceClock Time: Tue Apr 16 04:39:56 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 0
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention File Count: 0
svm::*> volume snaplock modify -volume vol_snaplock2 -minimum-retention-period "1 minutes" -default-retention-period "2 minutes" -maximum-retention-period "3 minutes"
svm::*> volume snaplock show -volume vol_snaplock2 -instance
Volume: vol_snaplock2
SnapLock Type: enterprise
Minimum Retention Period: 1 minutes
Default Retention Period: 2 minutes
Maximum Retention Period: 3 minutes
Autocommit Period: none
Is Volume Append Mode Enabled: false
Privileged Delete: -
Expiry Time: none
ComplianceClock Time: Tue Apr 16 04:43:13 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 0
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention File Count: 0
用意したボリュームに書き込みます。
$ sudo mkdir -p /mnt/fsxn/vol_snaplock2
$ sudo mount -t nfs svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol_snaplock2 /mnt/fsxn/vol_snaplock2
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock2/date.txt > /dev/null
$ cat /mnt/fsxn/vol_snaplock2/date.txt
Tue Apr 16 04:53:49 UTC 2024
SnapMirrorの転送先ボリュームを作成して、SnapMirror relastionshipを作成します。
::*> volume create -vserver svm -volume vol_snaplock2_dst -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow
Warning: The volume is being created on a SnapLock aggregate, but the "snaplock-type" has not been specified. The volume will be created as a non-SnapLock volume.
Do you want to continue? {y|n}: y
[Job 70] Job succeeded: Successful
::*> volume show -volume vol_snaplock2_dst -fields snaplock-type
vserver volume snaplock-type
------- ----------------- -------------
svm vol_snaplock2_dst non-snaplock
SnapMirror relastionshipに初期化をします。
::*> snapmirror initialize -destination-path svm:vol_snaplock2_dst
Operation is queued: snapmirror initialize of destination "svm:vol_snaplock2_dst".
::*>
::*> snapmirror show
Progress
Source Destination Mirror Relationship Total Last
Path Type Path State Status Progress Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm:vol_snaplock2
XDP svm:vol_snaplock2_dst
Uninitialized
Idle - false -
::*> snapmirror show-history
Destination Source Start End
Path Path Operation Time Time Result
----------- ----------- --------- ----------- ----------- -------
svm:vol_snaplock2_dst
svm:vol_snaplock2
initialize
4/16/2024 05:11:32
4/16/2024 05:11:32
failure
svm:vol_snaplock2_dst
svm:vol_snaplock2
create 4/16/2024 05:10:50
4/16/2024 05:10:50
success
2 entries were displayed.
::*> snapmirror show-history -instance
Destination Path: svm:vol_snaplock2_dst
Source Path: svm:vol_snaplock2
Relationship ID: b1043ac1-fbaf-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: initialize
Operation ID: c9fb2831-fbaf-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:11:32
End Time: 4/16/2024 05:11:32
Result: failure
Transfer Size: -
Additional Information: XDP relationship not supported between volumes with different SnapLock types: the SnapLock type of source volume is "enterprise" and the SnapLock type of destination volume is "non-snaplock".
Destination Path: svm:vol_snaplock2_dst
Source Path: svm:vol_snaplock2
Relationship ID: b1043ac1-fbaf-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: create
Operation ID: b1043a54-fbaf-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:10:50
End Time: 4/16/2024 05:10:50
Result: success
Transfer Size: -
Additional Information: -
2 entries were displayed.
どうやら転送元がSnapLockボリュームの場合、転送先ボリュームは転送元と同じリテンションモードである必要があるようです。
ドキュメントをよくよく見ると、しっかり書いてありました。
SnapMirror を使用すると、ディザスタリカバリなどの目的で、地理的に離れた別の場所に WORM ファイルをレプリケートできます。ソースボリュームとデスティネーションボリュームの両方が SnapLock 用に設定されていて、両方のボリュームの SnapLock モードが Compliance または Enterprise である必要があります。ボリュームとファイルの主要な SnapLock プロパティがすべてレプリケートされます。
転送元ボリュームと同じくEnterpriseモードのSnapLockの設定をした転送先ボリュームを用意して、SnapMirrorします。作成後にSnapLockのリテンションモードを変更することはできないようなので注意しましょう。
::*> volume create -vserver svm -volume vol_snaplock2_dst2 -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow -snaplock-type enterprise
[Job 72] Job succeeded: Successful
::*> volume show -volume vol_snaplock2_dst2 -fields snaplock-type
vserver volume snaplock-type
------- ------------------ -------------
svm vol_snaplock2_dst2 enterprise
::*> snapmirror create -source-path svm:vol_snaplock2 -destination-path svm:vol_snaplock2_dst2 -policy MirrorAllSnapshots
Operation succeeded: snapmirror create for the relationship with destination "svm:vol_snaplock2_dst2".
::*> snapmirror initialize -destination-path svm:vol_snaplock2_dst2
Operation is queued: snapmirror initialize of destination "svm:vol_snaplock2_dst2".
::*> snapmirror show
Progress
Source Destination Mirror Relationship Total Last
Path Type Path State Status Progress Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm:vol_snaplock2
XDP svm:vol_snaplock2_dst
Uninitialized
Idle - false -
svm:vol_snaplock2_dst2
Snapmirrored
Finalizing 13.85KB true 04/16 05:15:28
2 entries were displayed.
::*> snapmirror show
Progress
Source Destination Mirror Relationship Total Last
Path Type Path State Status Progress Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm:vol_snaplock2
XDP svm:vol_snaplock2_dst
Uninitialized
Idle - false -
svm:vol_snaplock2_dst2
Snapmirrored
Idle - true -
2 entries were displayed.
::*> snapmirror show-history -destination-path svm:vol_snaplock2_dst2 -instance
Destination Path: svm:vol_snaplock2_dst2
Source Path: svm:vol_snaplock2
Relationship ID: 35c53c26-fbb0-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: scheduled-update
Operation ID: 246dc3cc-12f4-4d12-ae49-ae920599f6d4
Start Time: 4/16/2024 05:15:25
End Time: 4/16/2024 05:15:29
Result: success
Transfer Size: 13.85KB
Additional Information: -
Destination Path: svm:vol_snaplock2_dst2
Source Path: svm:vol_snaplock2
Relationship ID: 35c53c26-fbb0-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: initialize
Operation ID: 5450f18b-fbb0-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:15:25
End Time: 4/16/2024 05:15:27
Result: success
Transfer Size: 21.12KB
Additional Information: -
Destination Path: svm:vol_snaplock2_dst2
Source Path: svm:vol_snaplock2
Relationship ID: 35c53c26-fbb0-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: create
Operation ID: 35c53bb6-fbb0-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:14:32
End Time: 4/16/2024 05:14:33
Result: success
Transfer Size: -
Additional Information: -
3 entries were displayed.
正しく転送できました。
また、転送先ボリュームのSnapLockの設定を確認すると、転送元と同じ設定がされていました。良きように転送してくれるようです。
svm::*> volume snaplock show -volume vol_snaplock2_dst2 -instance
Volume: vol_snaplock2_dst2
SnapLock Type: enterprise
Minimum Retention Period: 1 minutes
Default Retention Period: 2 minutes
Maximum Retention Period: 3 minutes
Autocommit Period: none
Is Volume Append Mode Enabled: false
Privileged Delete: -
Expiry Time: Tue Apr 16 05:17:04 GMT 2024
ComplianceClock Time: Tue Apr 16 05:18:57 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 3
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention File Count: 0
SnapMirrorの転送先がSnapLockボリューム
続いて、SnapMirrorの転送先がSnapLockボリュームの場合を確認します。
以下のようにSnapLockボリュームでないボリュームを用意しました。
::*> volume show -volume vol1 -fields snaplock-type
vserver volume snaplock-type
------- ------ -------------
svm vol1 non-snaplock
転送先のSnapLockボリュームを作成します。
::*> volume create -vserver svm -volume vol_dst -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow -snaplock-type enterprise[Job 74] Job succeeded: Successful
::*> volume snaplock show -volume vol_dst -instance
Vserver: svm
Volume: vol_dst
SnapLock Type: enterprise
Minimum Retention Period: 0 years
Default Retention Period: min
Maximum Retention Period: 30 years
Autocommit Period: none
Is Volume Append Mode Enabled: false
Privileged Delete: -
Expiry Time: none
ComplianceClock Time: Tue Apr 16 05:30:40 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 0
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention File Count: 0
::*> volume snaplock modify -volume vol_dst -minimum-retention-period "1 minutes" -default-retention-period "2 minutes" -maximum-retention-period "3 minutes"
::*> volume snaplock show -volume vol_dst -instance
Vserver: svm
Volume: vol_dst
SnapLock Type: enterprise
Minimum Retention Period: 1 minutes
Default Retention Period: 2 minutes
Maximum Retention Period: 3 minutes
Autocommit Period: none
Is Volume Append Mode Enabled: false
Privileged Delete: -
Expiry Time: none
ComplianceClock Time: Tue Apr 16 05:31:10 UTC 2024 +00:00
ComplianceClock ID: 1713157822543
ComplianceClock NodeID: 3323134672
ComplianceClock Skew (secs): 0
Litigation Count: 0
Is SnapLock Audit Log Volume: false
Unspecified Retention File Count: 0
SnapMirror relationshipを初期化します。
::*> snapmirror create -source-path svm:vol1 -destination-path svm:vol_dst -policy MirrorAllSnapshots
Operation succeeded: snapmirror create for the relationship with destination "svm:vol_dst".
::*> snapmirror initialize -destination-path svm:vol_dst
Operation is queued: snapmirror initialize of destination "svm:vol_dst".
::*> snapmirror show
Progress
Source Destination Mirror Relationship Total Last
Path Type Path State Status Progress Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm:vol1 XDP svm:vol_dst Uninitialized
Idle - false -
svm:vol_snaplock2
XDP svm:vol_snaplock2_dst
Uninitialized
Idle - false -
svm:vol_snaplock2_dst2
Snapmirrored
Idle - true -
3 entries were displayed.
::*> snapmirror show-history -destination-path svm:vol_dst -instance
Destination Path: svm:vol_dst
Source Path: svm:vol1
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: initialize
Operation ID: ac30a859-fbb2-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:32:11
End Time: 4/16/2024 05:32:11
Result: failure
Transfer Size: -
Additional Information: Policy is not of type "vault" for SnapMirror relationship of type "XDP" on SnapLock destination volume "svm:vol_dst".
Destination Path: svm:vol_dst
Source Path: svm:vol1
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: create
Operation ID: a38f568f-fbb2-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:31:56
End Time: 4/16/2024 05:31:56
Result: success
Transfer Size: -
Additional Information: -
2 entries were displayed.
SnapMirror policyのタイプがvault
でなければダメなようです。
mirror-vault
の場合はどうでしょうか。SnapMirror policyをMirrorAndVault
に変更して再トライします。
::*> snapmirror modify -destination-path svm:vol_dst -policy MirrorAndVault
Operation succeeded: snapmirror modify for the relationship with destination "svm:vol_dst".
::*> snapmirror initialize -destination-path svm:vol_dst
Operation is queued: snapmirror initialize of destination "svm:vol_dst".
::*> snapmirror show-history -destination-path svm:vol_dst -instance
Destination Path: svm:vol_dst
Source Path: svm:vol1
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: initialize
Operation ID: 0332bd6a-fbb3-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:34:37
End Time: 4/16/2024 05:34:37
Result: failure
Transfer Size: -
Additional Information: Policy is not of type "vault" for SnapMirror relationship of type "XDP" on SnapLock destination volume "svm:vol_dst".
Destination Path: svm:vol_dst
Source Path: -
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: modify
Operation ID: fedf220e-fbb2-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:34:29
End Time: 4/16/2024 05:34:29
Result: success
Transfer Size: -
Additional Information: -
Destination Path: svm:vol_dst
Source Path: svm:vol1
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: initialize
Operation ID: ac30a859-fbb2-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:32:11
End Time: 4/16/2024 05:32:11
Result: failure
Transfer Size: -
Additional Information: Policy is not of type "vault" for SnapMirror relationship of type "XDP" on SnapLock destination volume "svm:vol_dst".
Destination Path: svm:vol_dst
Source Path: svm:vol1
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: create
Operation ID: a38f568f-fbb2-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:31:56
End Time: 4/16/2024 05:31:56
Result: success
Transfer Size: -
Additional Information: -
4 entries were displayed.
エラー内容は変わりありません。vault
を含むではなく、vault
でなければならないようですね。
vault
であるXDPDefault
にSnapMirror policyを変更して再チャレンジします。
::*> snapmirror policy show -fields type
vserver policy type
---------------------- ------------ ------------
FsxId0203a077973a5b898 Asynchronous mirror-vault
FsxId0203a077973a5b898 AutomatedFailOver
automated-failover
FsxId0203a077973a5b898 CloudBackupDefault
vault
FsxId0203a077973a5b898 Continuous continuous
FsxId0203a077973a5b898 DPDefault async-mirror
FsxId0203a077973a5b898 DailyBackup vault
FsxId0203a077973a5b898 Migrate migrate
FsxId0203a077973a5b898 MirrorAllSnapshots
async-mirror
FsxId0203a077973a5b898 MirrorAllSnapshotsDiscardNetwork
async-mirror
FsxId0203a077973a5b898 MirrorAndVault
mirror-vault
FsxId0203a077973a5b898 MirrorAndVaultDiscardNetwork
mirror-vault
FsxId0203a077973a5b898 MirrorLatest async-mirror
FsxId0203a077973a5b898 SnapCenterSync
sync-mirror
FsxId0203a077973a5b898 StrictSync strict-sync-mirror
FsxId0203a077973a5b898 Sync sync-mirror
FsxId0203a077973a5b898 Unified7year mirror-vault
FsxId0203a077973a5b898 XDPDefault vault
17 entries were displayed.
::*> snapmirror policy show -type vault
Vserver Policy Policy Number Transfer
Name Name Type Of Rules Tries Priority Comment
------- ------------------ ------ -------- ----- -------- ----------
FsxId0203a077973a5b898
CloudBackupDefault vault 1 8 normal Vault policy with daily rule.
SnapMirror Label: daily Keep: 7
Total Keep: 7
FsxId0203a077973a5b898
DailyBackup vault 1 8 normal Vault policy with a daily rule and a daily transfer schedule.
SnapMirror Label: daily Keep: 7
Total Keep: 7
FsxId0203a077973a5b898
XDPDefault vault 2 8 normal Vault policy with daily and weekly rules.
SnapMirror Label: daily Keep: 7
weekly 52
Total Keep: 59
3 entries were displayed.
::*> snapmirror modify -destination-path svm:vol_dst -policy XDPDefault
Operation succeeded: snapmirror modify for the relationship with destination "svm:vol_dst".
::*> snapmirror initialize -destination-path svm:vol_dst
Operation is queued: snapmirror initialize of destination "svm:vol_dst".
::*> snapmirror show-history -destination-path svm:vol_dst -instance -max-rows-per-relationship 1
Destination Path: svm:vol_dst
Source Path: svm:vol1
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: initialize
Operation ID: 51303b10-fbb3-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:36:48
End Time: 4/16/2024 05:36:50
Result: success
Transfer Size: 17.82KB
Additional Information: -
今度は正常に転送が完了しました。
転送されたSnapshotを確認すると、まだSnapLockの保持期間を示すsnaplock-expiry-time
は指定されていません。
::*> snapshot show -volume vol1, vol_dst -fields snaplock-expiry-time
vserver volume snapshot snaplock-expiry-time
------- ------ ---------------------------------------------------------------------------- --------------------
svm vol1 snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 -
svm vol_dst
snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 -
2 entries were displayed.
差分転送してみましょう。
転送元ボリュームに適当にファイルを作成します。
$ sudo mount -t nfs svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol1 /mnt/fsxn/vol1
$ echo $(date) | sudo tee -a /mnt/fsxn/vol1/date.txt > /dev/null
$ ls -l /mnt/fsxn/vol1/date.txt
-rw-r--r--. 1 root root 29 Apr 16 05:44 /mnt/fsxn/vol1/date.txt
$ cat /mnt/fsxn/vol1/date.txt
Tue Apr 16 05:44:34 UTC 2024
XDPDefault
はsm_created
がありません。つまりは、SnapMirror転送時にSnapshotを取得してくれません。
SnapMirror policyを確認するとdaily
とweekly
というラベルが付与されているSnapshotは転送してくれそうです。
今回はdaily
ラベルが付与されたSnapshotを手動で作成します。
::*> snapshot create -vserver svm -volume vol1 -snapshot daily.snaplock-test -snapmirror-label daily
::*> snapshot show -volume vol1, vol_dst -fields snaplock-expiry-time, snapmirror-label
vserver volume snapshot snapmirror-label snaplock-expiry-time
------- ------ ---------------------------------------------------------------------------- ---------------- --------------------
svm vol1 snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 - -
svm vol1 daily.snaplock-test daily -
svm vol_dst
snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 - -
3 entries were displayed.
Snapshot作成後、SnapMirrorの差分同期をします。
::*> snapmirror update -destination-path svm:vol_dst
Operation is queued: snapmirror update of destination "svm:vol_dst".
::*> snapmirror show
Progress
Source Destination Mirror Relationship Total Last
Path Type Path State Status Progress Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
svm:vol1 XDP svm:vol_dst Snapmirrored
Idle - true -
svm:vol_snaplock2
XDP svm:vol_snaplock2_dst
Uninitialized
Idle - false -
svm:vol_snaplock2_dst2
Snapmirrored
Idle - true -
3 entries were displayed.
::*> snapmirror show-history -destination-path svm:vol_dst -instance -max-rows-per-relationship 1
Destination Path: svm:vol_dst
Source Path: svm:vol1
Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac
Relationship Group Type: none
Operation: manual-update
Operation ID: beda1ea9-fbb4-11ee-9f88-c748fac02eac
Start Time: 4/16/2024 05:47:00
End Time: 4/16/2024 05:47:02
Result: success
Transfer Size: 13.85KB
Additional Information: -
::*> snapshot show -volume vol1, vol_dst -fields snaplock-expiry-time, expiry-time, snapmirror-label
vserver volume snapshot snapmirror-label expiry-time snaplock-expiry-time
------- ------ ------------------- ---------------- ----------- --------------------
svm vol1 daily.snaplock-test daily - -
svm vol_dst
daily.snaplock-test daily - 4/16/2024 05:49:01 +00:00
2 entries were displayed.
転送先ボリュームに転送されたSnapshotにsnaplock-expiry-time
が設定されました。設定された時刻はSnapMirrorによって転送された時間 + SnapLockのデフォルト保持期間2分でした。
ボリュームのSnapLockの解除
できません。
volume modifyには、既存のボリュームのSnapLockモードを変更する方法は紹介されていません。
SnapLockボリュームから通常のボリュームに戻したい場合はDataSyncやrsync、Robocopyを使ってファイルを転送してあげましょう。
一方、非SnapLockボリュームからSnapLockボリュームへの変換についてはSnapMirrorで代替できると考えます。
SnapMirrorの転送先ボリュームでSnapLockをかける運用から始めよう
Amazon FSx for NetApp ONTAPでSnapLockによるWORMを試してみました。
コンプライアンス遵守や改ざん、誤削除対策としてWORM機能は非常に有用です。
ただし、使い方を間違えると数年削除できないファイルシステムを作成してしまう可能性があります。SnapLockを有効化する際は慎重に行いましょう。
個人的にはSnapLockを導入する場合、SnapMirrorの転送先ボリュームでSnapLockをかける運用から始めるのが良いと考えます。
オリジナルのボリュームにSnapLockをかけてしまうと「どうしても編集したいけど、編集できない」と運用が回らない可能性があります。SnapMirrorの転送先であれば元々読み取り専用ボリュームなので、そのような事象は回避できると考えます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!