Amazon FSx for NetApp ONTAP で xxGB以上のファイルを保存できないようにする設定方法を教えてください

2023.03.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Amazon FSx for NetApp ONTAP(以降FSx for ONTAP) において xxGB 以上のファイルを保存できないようにするための設定は実現可能ですか。

実現可能であれば、設定方法を教えてください。

どう対応すればいいの?

qtree を使用することで、「xxGB 以上のファイルを保存できないようにする」のように、フォルダレベルでのクォータ設定を行うことが可能です。

やってみた

今回の検証例として、1GB まで保存できる qtree の設定がされたフォルダ(ディレクトリ)を作成して動作確認を行いました。

検証環境の準備

[Amazon FSx] -> [ファイルシステムを作成] -> [Amazon FSx for NetApp ONTAP] より、FSx for ONTAP 側は下記の設定内容にて検証を行いました。

ファイルシステム作成 設定内容
作成方法 クイック作成
ファイルシステム名 - オプション 任意の名前を入力してください
(注: 最大 256 個の Unicode 文字、空白、数字、および + - = . _ : /)
デプロイタイプ シングルAZ
SSD ストレージ容量 1024 (最小)
Virtual Private Cloud (VPC) デフォルト VPC
ストレージ効率 無効

本検証を行う上では、上記の FSx for ONTAP の設定以外にも NFS マウント を行う EC2 インスタンスの作成や、EC2 インスタンスから NFS 接続(TCP:2049)を許可するセキュリテイグループの設定等を実施する必要があります。

詳しい設定方法に関しては、関連の記事がありますので必要に応じて下記弊社ブログや AWS 公式ドキュメントをご確認ください。

ONTAP CLI - 容量制限設定

管理エンドポイントにログイン

[ec2-user@ip-***-**-**-*** ~]$ ssh fsxadmin@<管理エンドポイントIPアドレス>

qtree 作成

# qtree の登録状況
::> volume quota report 
This table is currently empty.

# qtree 作成
::> volume qtree create -vserver fsx -volume vol1 -qtree test-qtree1 -security-style unix

事前確認(qtree 設定前)

qtree 設定前の事前確認として、例えば 2GB のファイルを作成できるか確認

[ec2-user@ip-***-**-**-*** fsx]$ pwd
/home/ec2-user/fsx

[ec2-user@ip-***-**-**-*** fsx]$ ls
file.csv  file.md  file.txt  test-qtree1

[ec2-user@ip-***-**-**-*** fsx]$ cd test-qtree1/

[ec2-user@ip-***-**-**-*** test-qtree1]$ sudo dd bs=1M count=2048 if=/dev/zero of=testfile1.txt
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 14.8502 秒、 145 MB/秒

[ec2-user@ip-***-**-**-*** test-qtree1]$ ls -l
合計 2105420
-rw-r--r-- 1 root root 2147483648  2月  2 07:42 testfile1.txt

# 単位(G)で分かりやすく確認
[ec2-user@ip-***-**-**-*** test-qtree1]$ ls -lh
合計 2.1G
-rw-r--r-- 1 root root 2.0G  2月  2 07:42 testfile1.txt

容量制限設定(1GB まで)

# 容量制限設定(1GBまで)
::> volume quota policy rule create -vserver fsx -policy-name default -volume vol1 -type tree -target "" -disk-limit 1GB

qtree 有効化

# qtree 有効化
::> volume quota on -vserver fsx -volume vol1 -foreground true

# 有効化確認
::> volume quota report 
Vserver: fsx

                                    ----Disk----  ----Files-----   Quota
Volume   Tree      Type    ID        Used  Limit    Used   Limit   Specifier
-------  --------  ------  -------  -----  -----  ------  ------   ---------
vol1     test-qtree1  
                   tree    1        
                                   4.02GB    1GB       3       -   test-qtree1
vol1               tree    *           0B    1GB       0       -   *
2 entries were displayed.

事後確認(qtree 設定後)

# qtree 設定確認
[ec2-user@ip-***-**-**-*** test-qtree1]$ sudo dd bs=1M count=2048 if=/dev/zero of=testfile1.txt
dd: 出力ファイル `testfile1.txt` を閉じています: No space left on device

[ec2-user@ip-***-**-**-*** test-qtree1]$ ls -l
合計 1048572
-rw-r--r-- 1 root root 1100890112  2月  2 08:10 testfile1.txt

[ec2-user@ip-***-**-**-*** test-qtree1]$ ls -lh
合計 1.0G
-rw-r--r-- 1 root root 1.1G  2月  2 08:10 testfile1.txt

まとめ

qtree の設定により、1GB を超えるファイルとして、例えば 2GB のファイルを書き込もうとするとエラーにより、書き込むことができないことを確認しました。

フォルダレベルでのクォータ(容量制限)設定手順例では、「Disk quota exceeded」というメッセージが表示されていますが、本検証ではこちらのメッセージは確認できませんでした。

しかしながら、本検証の「事後確認(qtree 設定後)」の結果が、フォルダレベルでのクォータ(容量制限)設定手順例で示されている実行結果と同様な内容であることについて確認することができました。

参考資料