ボリューム内のディレクトリごとに書き込めるデータサイズを制限したい
こんにちは、のんピ(@non____97)です。
皆さんはボリューム内のディレクトリごとに書き込めるデータサイズを制限したいなと思ったことはありますか? 私はあります。
ボリュームを細かく分割するのも手ですが、1つのAmazon FSx for NetApp ONTAP(以降FSxN)ファイルシステムにアタッチできるボリュームの上限は500や1,000と物足りない場合があります。
スケールアップファイルシステムあたり最大 500 ボリューム、スケールアウトファイルシステムあたり最大 1,000 ボリュームを作成できます。
また、ボリュームを細かく分割しすぎるとバックアップやSnapMirrorの管理も大変になります。
FSxNではqtreeとクォータ(quota)を使って、ディレクトリごと、ユーザーごと、グループごとの書き込み制限が可能です。Amazon FSx for Windows File Serverではディレクトリ単位では設定できないのでありがたいですね。
以降qtreeとクォータについて紹介します。
いきなりまとめ
- qtreeはONTAPのボリューム内に作成可能な特殊なサブディレクトリ
- qtreeにより以下設定を個別に管理できる
- クォータ
- セキュリティスタイル
- NASアクセス時の権限
- CIFS oplock
- エクスポート
- qtreeをネストさせたり、ディレクトリ内にqtreeを作成することはできない
- 各ボリュームにはデフォルト
qtree0
というqtreeが存在している - qtreeのリネーム、属性の変更、削除はNASアクセスでも行える
- 意図しない削除を防ぐために、NASアクセスによるqtreeの削除はできないようにするのが望ましい
- qtree <-> 一般ディレクトリの変換はできない
- qtree、一般ディレクトリ内のファイルやサブディレクトリを自身でコピーする必要がある
- クォータは以下ごとに書き込み量やファイル数を制限する機能
- ツリークォータ : 各qtree内に対する制限
- ユーザークォータ : 各ユーザーごとに対する制限
- グループクォータ : 各グループごとに対する制限
- クォータはソフトクォータとハードクォータが存在
- ソフトクォータ : 閾値を超過および、閾値以下になった場合に通知するもの
- ハードクォータ : 閾値を超過した際に後続の書き込みを防止するもの
- クォータはクォータルールとして登録する
- クォータルールはクォータポリシーにまとめられる
- SVMは一つのクォータポリシーしか適用できない
- クォータポリシーはSVM間で共有できない
- クォータの適用優先順位は以下のとおりです。
- 対象qtreeのツリークォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
- ボリューム上のファイルを所有しているユーザのユーザクォータ
- ボリューム上のファイルを所有しているグループのグループクォータ
- 対象qtree内にあるファイルを所有しているユーザのユーザクォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
- 対象qtree内にあるファイルを所有しているグループのグループクォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
- クォータの種類は以下の4種類
- デフォルトクォータ : 全てのターゲットに対するクォータ
- 明示的クォータ : 明示的にターゲットを指定した場合のクォータ
- 派生クォータ : デフォルトクォータによって各ターゲットごとに作成されたクォータ
- トラッキングクォータ : 書き込みを制限しないクォータ
- 各クォータタイプごとにデフォルトクォータを設定していない場合にクォータを追加する際は、クォータの初期化が必要
- クォータの初期化をする際はクォータを一度無効化して、再度有効化する必要がある
- デフォルトクォータが存在している場合にクォータを追加する際は、クォータのリサイズで対応可能
- デフォルトツリークォータを用意しておくことで、「ユーザー個人に割り当てたqtreeに一律で20GBのクォータをかける」という実装が簡単に行える
- クォータは論理使用量で判断する
- 重複排除後の物理ストレージ使用量ではない
- qtreeやクォータを設定したボリュームをSnapMirrorした場合の転送先ボリュームの挙動は以下のとおり
- qtree : 転送先でも存在している
- クォータ : クォータルールは設定されていない
qtree とは
概要
qtreeとはONTAPのボリューム内に論理的なサブディレクトリを作成し、以下について個別に管理できる機能です。
- クォータ
- セキュリティスタイル
- NASアクセス時の権限
- CIFS oplock
- エクスポート
FlexVolume内にqtreeを複数用意することで、各ディレクトリごとにきめ細かいクォータを設定できます。
qtreeはユーザーからは通常のディレクトリとして認識されます。通常のディレクトリのようにACLの設定が可能です。
qtreeを作成する際はONTAP CLI(volume qtree create)やONTAP REST APIから作成します。NFSやSMBなどのNASクライアント からは作成できません。
一方でqtreeの削除は通常のディレクトリと同じようにNASクライアントから行えます。注意しましょう。
主な制約事項
主な制約事項は以下のとおりです。
- qtree 名の最大文字数は 64 文字
- qtree名に一部の特殊文字(カンマやスペースなど)は使用しない
- 使用すると、ONTAP機能に問題が発生する可能性がある
- ボリュームジャンクションパスの長さは 255 文字以内
- qtreeの配下にqtreeは作成できない
- ボリュームの任意のディレクトリ配下にqtreeは作成できない
- qtreeから通常のディレクトリに、通常のディレクトリからqtreeには相互に変換できない
- qtreeや通常のディレクトリからNASアクセスによるコピーを行う必要がある
- qtreeはFlexVolume/FlexGroupのボリュームごとに最大4,995個作成可能
一般利用する分で最も注意すべきなのは、ボリュームのルートにしか作成できないことでしょうか。
ジャンクションパスが/user
というボリュームがある時に、各ユーザーごとのqtreeを作成する場合、qtreeのジャンクションパスは以下のような形になります。
/user/user1
/user/user2
/user/user3
以下のようなジャンクションパスのqtreeを作成することはできません。
/user/営業部/user1
/user/システム開発部/user2
また、qtreeの名前自体はUTF-8で指定可能です。そのため、日本語のようなマルチバイト文字を含むディレクトリもqtreeで対応可能です。
ONTAP 9.5 以降では、 4 バイトの UTF-8 エンコード形式の名前がサポートされるようになり、 Basic Multilingual Plane ( BMP ;基本多言語面)以外の Unicode 補助文字を含むファイル、ディレクトリ、ツリーの名前を作成および表示できるようになりました。
UTF-8の4バイト文字を含めたい場合は、ボリュームの文字コードをutf8mb4
に設定しましょう。 設定方法については以下記事が参考になります。
制約事項についての参考情報 :
- ボリュームおよび qtree の名前の制限事項とは何ですか。 - NetApp
- ONTAP がマルチバイトのファイル、ディレクトリ、qtree 名を処理する方法
- ディレクトリの qtree への変換の概要
- AWS のストレージの制限 | NetApp Documentation
クォータ とは
概要
ONTAPにおけるクォータとはディレクトリごと、ユーザーごと、グループごとに書き込み量やファイル数を制限する機能です。
クォータにはソフトクォータとハードクォータがあります。
- ソフトクォータ
- 閾値を超えた場合、SNMPによる通知、EMSに記録する
- 閾値以下になった場合も通知される
- ハードクォータ
- 閾値を超えた場合、SNMPによる通知、EMSに記録をし、後続の書き込みを防止する
FSxNではEMSのイベントログをCloudWatch Logsで拾ったり、EventBridgeで検知することはできません。もし、ソフトクォータの閾値を超過した場合に気づきたい場合は、NetAppのCloud Insightsを使用したり、ONTAP REST APIを使用して定期的にEMSイベントログを拾うLambda関数が必要になります。
なかなか導入のハードルも高いため、FSxNで使うとするとハードクォータのみがほとんどかと思います。
クォータ関連のSNMPトラップやEMSのイベントログは以下をご覧ください。
クォータの実際のルールはクォータポリシーごとに設定します。クォータポリシーは各SVM単位で定義します。異なるSVMと共有することはできないので注意しましょう。また、クォータのルールはボリューム固有の設定です。
クォータタイプ
クォータタイプはユーザークォータ、グループクォータ、ツリークォータの3種類があります。以下のように、それぞれクォータを適用するターゲットを指定することができます。
クォータターゲット | クォータタイプ | ターゲットの指定方法 | 注意事項 |
---|---|---|---|
user | ユーザクォータ | - UNIX ユーザ名 UNIX UID - UID がユーザと一致しているファイルまたはディレクトリ - Windows 2000 より前の形式の Windows ユーザ名 - Windows SID - ユーザの SID によって所有されている ACL を持つファイルまたはディレクトリ |
ユーザクォータは、特定のボリュームまたは qtree に適用できます。 |
group | グループクォータ | - UNIX グループ名 UNIX GID - GID がグループと一致するファイルまたはディレクトリ |
グループクォータは、特定のボリュームまたは qtree に適用できます。
※ ONTAP では、 Windows ID に基づいてグループクォータを適用しません。 |
qtree | ツリークォータ | qtree 名 | ツリークォータは特定のボリュームに適用され、他のボリューム内の qtree には影響しません。 |
"" | - ユーザクォータ - グループクォータ - ツリークォータ |
二重引用符( "" ) | "のクォータターゲットは、デフォルトのクォータを示します。 デフォルトのクォータの場合、クォータタイプはタイプフィー ルドの値によって決定されます。 |
抜粋 : クォータのターゲットとタイプ
クォータタイプごとの優先順位は以下のとおりです。
- 対象qtreeのツリークォータ
- ファイルの作成または書き込みが
qtree0
に対して行われる場合は対象外
- ファイルの作成または書き込みが
- ボリューム上のファイルを所有しているユーザのユーザクォータ
- ボリューム上のファイルを所有しているグループのグループクォータ
- 対象qtree内にあるファイルを所有しているユーザのユーザクォータ
- ファイルの作成または書き込みが
qtree0
に対して行われる場合は対象外
- ファイルの作成または書き込みが
- 対象qtree内にあるファイルを所有しているグループのグループクォータ
- ファイルの作成または書き込みが
qtree0
に対して行われる場合は対象外
- ファイルの作成または書き込みが
参考 : クォータの適用方法
qtree0
というのは各ボリュームに存在しているデフォルトのqtreeです。
ONTAP は、各ボリュームに qtree0 という名前のデフォルトの qtree を作成します。qtree にデータを配置しない場合、データは qtree0 に格納されます。
qtree0
に対するツリークォータ = ボリューム内のqtree以外のディレクトリに対するクォータは効かないので注意しましょう。
NFSとSMBとマルチプロトコルアクセスを使用している環境でユーザークォータを有効にする場合は、クォータルールでユーザーマッピングをするのを忘れずに行いましょう。設定しない場合は同一ユーザーとして認識してくれません。
- The user-mapping parameter is set to "on" in the quota rule for the user.
- The user names have been mapped with the vserver name-mapping commands.
クォータの種類
クォータの種類は以下の4種類があります。
- デフォルトクォータ (default quotas)
- 明示的クォータ (explicit quotas)
- 派生クォータ (derived quotas)
- トラッキングクォータ (tracking quotas)
デフォルトクォータは特定のクォータタイプのすべてのターゲットに適用するクォータルールです。クォータルールのターゲットに""
を指定した場合にデフォルトクォータとなります。
デフォルトクォータを活用することで、大量のターゲットにまとめてクォータを適用できるため、ターゲットごとに個別のクォータルールを設定する必要がありません。「ユーザー個人に割り当てたqtreeに一律で20GBのクォータをかける」ということが非常に簡単に行えます。
特定ターゲットを指定したクォータ(明示的クォータ)を作成した場合、そのクォータの値がデフォルトクォータの値を上書きます。
明示的クォータは特定のクォータターゲットに適用するクォータルールです。特定のターゲットに対するデフォルトクォータを上書きする場合にも使用します。
派生クォータはデフォルトクォータ設定時に各ターゲットに対して派生して設定されるクォータです。同じターゲットにすでに明示的クォータが存在する場合は、派生クォータは作成されません。派生クォータはクォータ指定子(Quota Specifier)が空白または、*
になっています(ツリークォータはqtree名)。
派生クォータは以下のようにクォータタイプによって派生クォータの作成のされ方は異なります。
- デフォルトツリークォータ : ボリューム上のすべてのqtreeに派生デフォルトツリークォータが作成される
- デフォルトユーザクォータ or デフォルトグループクォータ : 同じレベル(ボリュームまたは qtree )でファイルを所有するユーザまたはグループごとに、派生ユーザクォータまたは派生グループクォータが作成される
- デフォルトユーザクォータ or デフォルトグループクォータによって、ツリークォータもあるすべてのqtree : 派生デフォルトユーザクォータまたは派生グループクォータが作成される
トラッキングクォータはリソースの使用量を制限することは行わず、リソースの使用量のレポートを表示するためだけに使うクォータです。
クォータの設定手順
クォータのおおまかな設定手順は以下のとおりです。
- クォータポリシーを作成 (quota policy create)
- SVMのデフォルトのものを使うものはスキップ可
- クォータポリシーをSVMに割り当て (vserver modify)
- SVMのデフォルトのものを使うものはスキップ可
- クォータポリシーにクォータルールを作成 (quota policy rule create)
- クォータルールはボリューム、クォータタイプ、qtree、ターゲットごとに作成
- クォータの有効化
- ボリュームごとに有効化
- デフォルトクォータが存在しない場合など : quota off -> quota on
- 明示的クォータを追加する場合や、クォータルールの値を変更する場合など : quota resize
詳細な手順は以下NetApp KBに記載があります。
デフォルトクォータが存在しない状態で、クォータルールを追加する場合、クォータの初期化(ボリュームのファイルシステムの全スキャン)が必要となります。詳細な条件は以下のとおりです。
- これまでクォータを持っていなかったターゲット(明示的クォータでもデフォルトクォータから派生したクォータでもない)にクォータを作成した場合。
- qtree のセキュリティ形式を UNIX 形式から mixed 形式、または NTFS 形式に変更する場合
- qtree のセキュリティ形式を mixed 形式または NTFS 形式から UNIX 形式に変更した場合
- 複数のユーザを含むクォータターゲットからユーザを削除する場合、またはすでに複数のユーザを含むターゲットにユーザを追加する場合
- クォータに大幅な変更を加える場合
ボリュームのファイルシステムの全スキャンを行う際は、実行完了までクォータは無効となります。
一方、デフォルトクォータが存在しており、派生クォータを追加する場合や、既存のクォータルールの値を変更する場合はボリュームのファイルシステムの全スキャンは行われず、クォータの初期化よりも早く適用できます。詳細な条件は以下のとおりです。
- 既存のクォータを変更する場合
たとえば、既存のクォータの制限を変更する場合などです。- デフォルトクォータまたはデフォルト追跡クォータが適用されているクォータターゲットにクォータを追加した場合
- デフォルトクォータまたはデフォルト追跡クォータのエントリが指定されているクォータを削除した場合
- 別々のユーザクォータを 1 つのマルチユーザクォータに統合した場合
クォータの反映方法は以下NetApp KBも参考になります。
クォータをアクティブ化する方法:
クォータはボリューム レベルでアクティブ化できます。
新しいクォータとクォータに対する変更は、アクティブ化されるまでは有効になりません。
クォータは、初期化(有効化)またはサイズ変更によってアクティブ化されます。クォータをいったん無効にしてもう一度有効にする操作は、再初期化と呼ばれます。
初期化プロセスには、次の2つの部分が含まれます。クォータオンとクォータサイズ変更アクティブ化プロセスの長さとクォータ適用への影響は、アクティブ化のタイプによって異なります。
初期化プロセスには、次の2つの部分が含まれます。 quota onコマンドとボリュームのファイルシステム全体のクォータスキャンスキャンは、quota onコマンドが正常に完了したあとに開始されます。クォータ スキャンには、多少時間がかかる可能性があります。ボリュームに含まれるファイルが多いほど、長い時間がかかります。スキャンが完了するまで、クォータのアクティブ化は完了せず、クォータも適用されません。
サイズ変更プロセスで実行されるのは、quota resizeコマンドだけです。サイズ変更プロセスにはクォータ スキャンが含まれないため、クォータの初期化よりも短い時間で完了します。サイズ変更プロセスではクォータが適用されます。
デフォルトでは、quota onコマンドとquota resizeコマンドはバックグラウンドで実行されるため、他のコマンドを同時に使用できます。サイズ変更または再初期化のタイミング:
クォータのサイズ変更はクォータの初期化よりも高速です。可能なかぎりサイズ変更を使用してください。ただし、サイズ変更を使用できるのは、クォータに対する特定の種類の変更に限られます。
クォータに小規模または大規模な変更を加える場合は、クォータの完全な再初期化が必要です。次の種類の変更をquotasファイルに加える場合、クォータのサイズを変更できます。
既存のクォータの変更。
たとえば、既存のクォータの制限を変更する場合などです。デフォルト クォータまたはデフォルト追跡クォータが適用されているクォータ ターゲットにクォータを追加する場合
デフォルト クォータまたはデフォルト追跡クォータのエントリが指定されているクォータを取り消す場合
単独のユーザ クォータを1つのマルチユーザ クォータに統合する場合
初期化が必要なクォータの変更例:
3つのqtreeを含むボリュームがあり、そのボリューム内のクォータは3つのツリークォータのみであるとします。次の変更を行うことにしました。新しいqtreeを追加し、そのqtreeに対して新しいツリークォータを作成します。
ボリュームのデフォルト ユーザ クォータを追加する
これらのどちらの変更にも、クォータの完全な初期化が必要です。クォータのサイズ変更では有効に機能しません。
都度初期化を回避するために、デフォルトクォータを作成しておくとスムーズでしょう。
qtreeを触ってみる
ボリュームの作成
実際に触ってみましょう。まず、qtreeです。
qtreeを配置するボリュームを用意します。ボリュームはセキュリティスタイルがUNIXとNTFSのものをそれぞれ用意します。
::> set diag
Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y
::*> volume create -vserver svm -volume vol_quota_unix -aggregate aggr1 -state online -type RW -security-style unix -size 10TB -tiering-policy none -snapshot-policy none -junction-path /vol_quota_unix -language utf8mb4 -foreground true
[Job 164] Job succeeded: Successful
::*> volume create -vserver svm -volume vol_quota_ntfs -aggregate aggr1 -state online -type RW -security-style ntfs -size 10TB -tiering-policy none -snapshot-policy none -junction-path /vol_quota_ntfs -language utf8mb4 -foreground true
[Job 166] Job succeeded: Successful
::*> volume show -vserver svm -volume vol_quota* -state online -fields security-style, junction-path
vserver volume security-style junction-path
------- -------------- -------------- ---------------
svm vol_quota_ntfs ntfs /vol_quota_ntfs
svm vol_quota_unix unix /vol_quota_unix
2 entries were displayed.
::*> volume efficiency show -vserver svm -volume vol_quota*
Vserver Volume State Status Progress Policy
---------- ---------------- --------- ----------- ------------------ ----------
svm vol_quota_ntfs Enabled Idle Idle for 00:02:58 auto
svm vol_quota_unix Enabled Idle Idle for 00:03:03 auto
2 entries were displayed.
Snapshotポリシーはnoneで、Storage Efficiencyは有効(TSSE)です。
qtreeの作成
qtreeを作成する前にqtreeの状態を確認します。
::*> qtree ?
create Create a new qtree
delete Delete a qtree
modify Modify qtree attributes
oplocks Modify qtree oplock mode
rename Rename an existing qtree
security Modify qtree security style
show Display a list of qtrees
::*> qtree show -volume vol_quota*
Vserver Volume Qtree Style Oplocks Status
---------- ------------- ------------ ------------ --------- --------
svm vol_quota_ntfs
"" ntfs enable normal
svm vol_quota_unix
"" unix enable normal
2 entries were displayed.
::*> qtree show -volume vol_quota* -instance
Vserver Name: svm
Volume Name: vol_quota_ntfs
Qtree Name: ""
Actual (Non-Junction) Qtree Path: /vol/vol_quota_ntfs
Security Style: ntfs
Oplock Mode: enable
User ID: -
Group ID: -
Unix Permissions: -
Qtree Id: 0
Qtree Status: normal
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
Vserver Name: svm
Volume Name: vol_quota_unix
Qtree Name: ""
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix
Security Style: unix
Oplock Mode: enable
User ID: root
Group ID: root
Unix Permissions: ---rwxr-xr-x
Qtree Id: 0
Qtree Status: normal
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
2 entries were displayed.
""
というqtreeが各ボリュームに存在しています。これはqtree0
です。
それではqtreeを各ボリュームに作成します。
::*> qtree create -volume vol_quota_unix -qtree qtree_unix -security-style unix
::*> qtree create -volume vol_quota_ntfs -qtree qtree_ntfs -security-style ntfs
::*> qtree show -volume vol_quota*
Vserver Volume Qtree Style Oplocks Status
---------- ------------- ------------ ------------ --------- --------
svm vol_quota_ntfs
"" ntfs enable normal
svm vol_quota_ntfs
qtree_ntfs ntfs enable normal
svm vol_quota_unix
"" unix enable normal
svm vol_quota_unix
qtree_unix unix enable normal
4 entries were displayed.
::*> qtree show -volume vol_quota* -qtree qtree* -instance
Vserver Name: svm
Volume Name: vol_quota_ntfs
Qtree Name: qtree_ntfs
Actual (Non-Junction) Qtree Path: /vol/vol_quota_ntfs/qtree_ntfs
Security Style: ntfs
Oplock Mode: enable
User ID: -
Group ID: -
Unix Permissions: -
Qtree Id: 1
Qtree Status: normal
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
Vserver Name: svm
Volume Name: vol_quota_unix
Qtree Name: qtree_unix
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_unix
Security Style: unix
Oplock Mode: enable
User ID: root
Group ID: root
Unix Permissions: ---rwxr-xr-x
Qtree Id: 1
Qtree Status: normal
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
2 entries were displayed.
作成できました。
qtreeをネストすることはできないことも確認しておきましょう。
::*> qtree create -volume vol_quota_unix -qtree qtree_unix/qtree_unix2 -security-style unix
Error: "qtree_unix/qtree_unix2" is an invalid value for field "-qtree <qtree name>"
サポートされていないと怒られますね。
NFSからqtreeを確認します。
$ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix /mnt/fsxn/vol_quota_unix/
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 842G 92% /mnt/fsxn/vol_quota_unix
$ ls -l /mnt/fsxn/vol_quota_unix/
total 4
drwxr-xr-x. 2 root root 4096 Apr 11 04:57 qtree_unix
通常のディレクトリのように認識されていますね。
NASアクセスによるqtreeの所有者とグループの変更
通常のディレクトリとして認識できるということは、NASアクセスによるqtreeの所有者とグループも変更できるのでしょうか。実際に試してみます。
$ id
uid=1001(ssm-user) gid=1001(ssm-user) groups=1001(ssm-user) context=system_u:system_r:unconfined_service_t:s0
$ sudo chown ssm-user:ssm-user /mnt/fsxn/vol_quota_unix/qtree_unix/
$ ls -l /mnt/fsxn/vol_quota_unix/
total 4
drwxr-xr-x. 2 ssm-user ssm-user 4096 Apr 11 04:57 qtree_unix
問題なく変更できました。
ONTAP CLIからqtreeのユーザーとグループを確認すると、uidとgidがchown
で指定したものとなりました。本来であればqtree modifyで変更するべきだと思いますが、問題なさそうです。
::*> qtree show -volume vol_quota_unix -qtree qtree_unix -instance
Vserver Name: svm
Volume Name: vol_quota_unix
Qtree Name: qtree_unix
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_unix
Security Style: unix
Oplock Mode: enable
User ID: 1001
Group ID: 1001
Unix Permissions: ---rwxr-xr-x
Qtree Id: 1
Qtree Status: normal
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
NASアクセスによるqtreeのリネーム
ついでにNASアクセスによるqtreeのリネームを確認します。
本来であればqtree renameで行うべきですが、試してみます。
$ sudo mv /mnt/fsxn/vol_quota_unix/qtree_unix /mnt/fsxn/vol_quota_unix/qtree_unix_renamed
$ ls -l /mnt/fsxn/vol_quota_unix/
total 4
drwxr-xr-x. 2 ssm-user ssm-user 4096 Apr 11 04:57 qtree_unix_renamed
NFSでは問題なくできました。
ONTAP CLIからqtreeを確認すると、qtree名がリネーム後のものになっていました。リネームができるのであれば、NASアクセスでメタデータを変更するとqtreeで壊れるということはなさそうです。
::*> qtree show -volume vol_quota_unix -qtree qtree_* -instance
Vserver Name: svm
Volume Name: vol_quota_unix
Qtree Name: qtree_unix_renamed
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_unix_renamed
Security Style: unix
Oplock Mode: enable
User ID: 1001
Group ID: 1001
Unix Permissions: ---rwxr-xr-x
Qtree Id: 1
Qtree Status: normal
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
NASアクセスによるqtreeの削除
NASアクセスによるqtreeの削除も確認します。ONTAP上ではqtreeがゾンビのように残ってしまうのでしょうか。
試してみます。
$ sudo rmdir /mnt/fsxn/vol_quota_unix/qtree_unix_renamed
$ ls -l /mnt/fsxn/vol_quota_unix/
total 0
削除できました。
ONTAP CLIからqtreeを確認すると、対象のqtreeは削除されていました。問題なさそうです。
::*> qtree show -volume vol_quota_unix -qtree qtree_* -instance
There are no entries matching your query.
一方で、簡単にNASアクセスによってqtreeは削除可能ということが分かりました。実際に利用する際は一般利用者はqtreeを削除できないようにACLを制御する必要がありそうです。
マルチバイト文字を含む名前のqtreeの作成
マルチバイト文字を含む名前のqtreeの作成ができることを確認します。
::*> qtree create -volume vol_quota_unix -qtree qtree_ゆにっくす -security-style unix
::*> qtree show -volume vol_quota_unix -qtree qtree_* -instance
Vserver Name: svm
Volume Name: vol_quota_unix
Qtree Name: qtree_ゆにっくす
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_ゆにっくす
Security Style: unix
Oplock Mode: enable
User ID: root
Group ID: root
Unix Permissions: ---rwxr-xr-x
Qtree Id: 1
Qtree Status: normal
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
問題なくqtree_ゆにっくす
というqtreeを作成できました。
NFSクライアントからも確認してみます。
$ ls -l /mnt/fsxn/vol_quota_unix/
total 4
drwxr-xr-x. 2 root root 4096 Apr 11 05:08 qtree_ゆにっくす
問題なく認識できていますね。
qtree間のディレクトリの移動
NetApp公式ドキュメントにはqtree間でディレクトリを移動できないと記載がありました。
ディレクトリは qtree 間で移動できません。qtree 間で移動できるのはファイルだけです。
それは困ります。本当にディレクトリの移動ができないか確認します。
まず、移動元となるqtreeを作成します。
::*> qtree create -volume vol_quota_unix -qtree qtree_unix2 -security-style unix
NFSクライアントから作成したqtreeにディレクトリとファイルを作成します。
$ ls -l /mnt/fsxn/vol_quota_unix/
total 8
drwxr-xr-x. 2 root root 4096 Apr 11 05:52 qtree_unix2
drwxr-xr-x. 2 root root 4096 Apr 11 05:08 qtree_ゆにっくす
$ sudo mkdir -p /mnt/fsxn/vol_quota_unix/qtree_unix2/dir1/dir2
$ echo "test" | sudo tee -a /mnt/fsxn/vol_quota_unix/qtree_unix2/dir1/dir2/test.txt > /dev/null
$ ls -l /mnt/fsxn/vol_quota_unix/qtree_unix2/dir1/dir2
total 0
-rw-r--r--. 1 root root 5 Apr 11 05:56 test.txt
qtree_unix2
内のディレクトリとファイルをqtree_ゆにっくす
に移動させます。
$ sudo mv /mnt/fsxn/vol_quota_unix/qtree_unix2/* /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/
$ ls -lR /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/
/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/:
total 4
drwxr-xr-x. 3 root root 4096 Apr 11 05:55 dir1
/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/dir1:
total 4
drwxr-xr-x. 2 root root 4096 Apr 11 05:56 dir2
/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/dir1/dir2:
total 0
-rw-r--r--. 1 root root 5 Apr 11 05:56 test.txt
$ ls -lR /mnt/fsxn/vol_quota_unix/qtree_unix2/
/mnt/fsxn/vol_quota_unix/qtree_unix2/:
total 0
問題なく移動できました。あの記述はなんだったのでしょうか。
クォータを触ってみる
ツリークォータの設定
次にクォータを触ってみます。
まず、ツリークォータです。
現在、クォータは適用されていません。
::*> quota report -vserver svm -volume vol_quota_*
There are no entries matching your query.
::*> quota show -vserver svm -volume vol_quota*
Scan
Vserver Volume State Status
--------- ------------ --------------- ------
svm vol_quota_ntfs
off -
svm vol_quota_unix
off -
2 entries were displayed.
::*> quota show -vserver svm -volume vol_quota* -instance
Vserver Name: svm
Volume Name: vol_quota_ntfs
Quota State: off
Scan Status: -
Logging Messages: -
Logging Interval: -
Sub Quota Status: none
Last Quota Error Message: -
Collection of Quota Errors: -
User Quota enforced: -
Group Quota enforced: -
Tree Quota enforced: -
Extended Policy Name: -
Vserver Name: svm
Volume Name: vol_quota_unix
Quota State: off
Scan Status: -
Logging Messages: -
Logging Interval: -
Sub Quota Status: none
Last Quota Error Message: -
Collection of Quota Errors: -
User Quota enforced: -
Group Quota enforced: -
Tree Quota enforced: -
Extended Policy Name: -
2 entries were displayed.
デフォルトのクォータポリシーが存在していることを確認します。
::*> quota policy show
Vserver Policy Name Last Modified Policy ID
-------------- -------------------- ---------------- ---------------
svm default 4/7/2024 01:37:28 12884901889
::*> quota policy show -instance
Vserver: svm
Policy Name: default
Last Modified: 4/7/2024 01:37:28
Policy ID: 12884901889
::*> quota policy rule show
This table is currently empty.
qtreeごとに1GBの書き込みを制限するデフォルトツリークォータを作成します。
::*> volume quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type tree -target "" -disk-limit 1GB
::*> quota policy rule show
Vserver: svm Policy: default Volume: vol_quota_unix
Soft Soft
User Disk Disk Files Files
Type Target Qtree Mapping Limit Limit Limit Limit Threshold
----- -------- ------- ------- -------- ------- ------ ------- ---------
tree "" "" - 1GB - - - -
::*> quota policy rule show -instance
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: tree
Target: ""
Qtree Name: ""
User Mapping: -
Disk Limit: 1GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
クォータの有効化を行います。
::*> quota on -vserver svm -volume vol_quota_unix
[Job 168] Job is queued: "quota on" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> job show 168
Owning
Job ID Name Vserver Node State
------ -------------------- ---------- -------------- ----------
168 Quota Operation svm FsxId009351b227391d1f1-01
Success
Description: "quota on" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm"
::*> quota show -vserver svm -volume vol_quota_unix -instance
Vserver Name: svm
Volume Name: vol_quota_unix
Quota State: on
Scan Status: -
Logging Messages: on
Logging Interval: 1h
Sub Quota Status: none
Last Quota Error Message: -
Collection of Quota Errors: -
User Quota enforced: false
Group Quota enforced: false
Tree Quota enforced: true
Extended Policy Name: -
クォータが有効化されました。
デフォルトツリークォータの動作確認
デフォルトツリークォータの動作確認をします。
現在のレポートを確認します。
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1 0B 1GB 4 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2 0B 1GB 1 - qtree_unix2
vol_quota_unix
tree * 0B 1GB 0 - *
3 entries were displayed.
::*> quota report -vserver svm -volume vol_quota_unix -instance
Vserver Name: svm
Volume Name: vol_quota_unix
Index: 2305843013508661248
Qtree Name: qtree_ゆにっくす
Quota Type: tree
Quota Target: 1
Quota Target ID: 1
Disk Space Used: 0B
Disk Space Limit: 1GB
Files Used: 4
Files Limit: -
Disk Space Threshold: -
Soft Disk Space Limit: -
Soft Files Limit: -
Quota Specifier: qtree_ゆにっくす
Disk Space Used % Soft Disk Space Limit: -
Disk Space Used % Disk Space Threshold: -
Disk Space Used % Disk Space Limit: 0%
Files Used % Soft File Limit: -
Files Used % File Limit: -
Vserver Name: svm
Volume Name: vol_quota_unix
Index: 2305843017803628544
Qtree Name: qtree_unix2
Quota Type: tree
Quota Target: 2
Quota Target ID: 2
Disk Space Used: 0B
Disk Space Limit: 1GB
Files Used: 1
Files Limit: -
Disk Space Threshold: -
Soft Disk Space Limit: -
Soft Files Limit: -
Quota Specifier: qtree_unix2
Disk Space Used % Soft Disk Space Limit: -
Disk Space Used % Disk Space Threshold: -
Disk Space Used % Disk Space Limit: 0%
Files Used % Soft File Limit: -
Files Used % File Limit: -
Vserver Name: svm
Volume Name: vol_quota_unix
Index: 5764607523034234880
Qtree Name:
Quota Type: tree
Quota Target: *
Quota Target ID: *
Disk Space Used: 0B
Disk Space Limit: 1GB
Files Used: 0
Files Limit: -
Disk Space Threshold: -
Soft Disk Space Limit: -
Soft Files Limit: -
Quota Specifier: *
Disk Space Used % Soft Disk Space Limit: -
Disk Space Used % Disk Space Threshold: -
Disk Space Used % Disk Space Limit: 0%
Files Used % Soft File Limit: -
Files Used % File Limit: -
3 entries were displayed.
各qtreeごとに1GBのクォータが設定されていることや、qtree内のストレージ使用量、ファイルの数が分かりますね。
実際に書き込んでみます。
まず、qtree0に対してはツリークォータが効かないことを確認したいので、ボリュームのルートに書き込みます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/random_pattern_binary_block_1GiB bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.23195 s, 172 MB/s
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 841G 92% /mnt/fsxn/vol_quota_unix
1GiB問題なく書き込めました。さらに1GiB書き込みます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/random_pattern_binary_block_1GiB_2 bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.42068 s, 167 MB/s
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 840G 92% /mnt/fsxn/vol_quota_unix
クォータ以上の書き込みを行いましたが、制限はされませんね。
クォータのレポートを確認します。
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1 0B 1GB 4 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2 0B 1GB 1 - qtree_unix2
vol_quota_unix
tree * 0B 1GB 0 - *
3 entries were displayed.
はい、2GiB書き込みましたがレポートとして上がってきていません。このことからqtree0に対してはツリークォータが効かないことが分かりました。
続いて、qtreeに対して書き込みを行います。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB bs=1M count=1024
dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB': No space left on device
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
total 1.0G
drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1
-rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
書き込みが途中で終了しました。クォータが効いていそうです。
再度1GiBのデータを書き込もうとしてみます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2 bs=1M count=1024
dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2': No space left on device
13+0 records in
12+0 records out
12582912 bytes (13 MB, 12 MiB) copied, 0.0938965 s, 134 MB/s
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
total 1.0G
drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1
-rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 0 Apr 11 06:35 random_pattern_binary_block_1GiB_2
ほとんど書き込めていませんね。
クォータレポートを確認します。
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
1023MB 1GB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2 0B 1GB 1 - qtree_unix2
vol_quota_unix
tree * 0B 1GB 0 - *
3 entries were displayed.
::*> quota report -vserver svm -volume vol_quota_unix -index 2305843013508661248
Vserver Name: svm
Volume Name: vol_quota_unix
Index: 2305843013508661248
Qtree Name: qtree_ゆにっくす
Quota Type: tree
Quota Target: 1
Quota Target ID: 1
Disk Space Used: 1023MB
Disk Space Limit: 1GB
Files Used: 6
Files Limit: -
Disk Space Threshold: -
Soft Disk Space Limit: -
Soft Files Limit: -
Quota Specifier: qtree_ゆにっくす
Disk Space Used % Soft Disk Space Limit: -
Disk Space Used % Disk Space Threshold: -
Disk Space Used % Disk Space Limit: 100%
Files Used % Soft File Limit: -
Files Used % File Limit: -
書き込んだqtreeqtree_ゆにっくす
のDisk Space Used % Disk Space Limit
が100%となっていることが分かります。クォータがしっかり効いていますね。
EMSイベントログを確認すると、以下のようにツリークォータの上限に達したとの記録がされていました。
::*> event log show
Time Node Severity Event
------------------- ---------------- ------------- ---------------------------
4/11/2024 06:34:37 FsxId009351b227391d1f1-01
NOTICE wafl.quota.qtree.exceeded: tid 1: tree quota exceeded on volume vol_quota_unix@vserver:646592b9-f47f-11ee-8e23-0fe9d475982c. Additional warnings will be suppressedfor approximately 60 minutes or until a 'quota resize' is performed.
.
.
(以下略)
.
.
念の為、もう一つのqtreeにもクォータが効いていることを確認します。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_2GiB bs=1M count=2048
dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_2GiB': No space left on device
1134+0 records in
1133+0 records out
1188036608 bytes (1.2 GB, 1.1 GiB) copied, 6.71292 s, 177 MB/s
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
1023MB 1GB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 1GB 2 - qtree_unix2
vol_quota_unix
tree * 0B 1GB 0 - *
3 entries were displayed.
途中で書き込みができなくなりました。問題なく動作していますね。
デフォルトツリークォータのリサイズ
デフォルトツリークォータのリサイズを行います。試しに1GBから500MBに変更します。
::*> quota policy rule modify -policy-name default -volume vol_quota_unix -type tree -target "" -qtree "" -disk-limit 500MB
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
1023MB 1GB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 1GB 2 - qtree_unix2
vol_quota_unix
tree * 0B 1GB 0 - *
3 entries were displayed.
はい、ルールを変更しただけではクォータは反映されません。 quota resizeでリサイズします。
::*> quota resize -vserver svm -volume vol_quota_unix
[Job 169] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> job show 169
Owning
Job ID Name Vserver Node State
------ -------------------- ---------- -------------- ----------
169 Quota Operation svm FsxId009351b227391d1f1-01
Success
Description: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm"
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
1023MB 500MB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 500MB 2 - qtree_unix2
vol_quota_unix
tree * 0B 500MB 0 - *
3 entries were displayed.
quota resizeを実行することで、クォータルールが反映されました。
明示的クォータの作成
明示的クォータの作成をします。
qtree_ゆにっくす
に対して2GBの制限をします。
::*> volume quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type tree -target "qtree_ゆにっくす" -disk-limit 2GB
::*> quota policy rule show
Vserver: svm Policy: default Volume: vol_quota_unix
Soft Soft
User Disk Disk Files Files
Type Target Qtree Mapping Limit Limit Limit Limit Threshold
----- -------- ------- ------- -------- ------- ------ ------- ---------
tree "" "" - 500MB - - - -
tree qtree_ゆにっくす
"" - 2GB - - - -
2 entries were displayed.
::*> quota policy rule show -instance
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: tree
Target: ""
Qtree Name: ""
User Mapping: -
Disk Limit: 500MB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: tree
Target: qtree_ゆにっくす
Qtree Name: ""
User Mapping: -
Disk Limit: 2GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
2 entries were displayed.
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
1023MB 500MB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 500MB 2 - qtree_unix2
vol_quota_unix
tree * 0B 500MB 0 - *
3 entries were displayed.
クォータルールを作成されただけでは反映されません。
デフォルトツリークォータが既に存在しているので、初期化ではなくリサイズをします。
::*> quota resize -vserver svm -volume vol_quota_unix
[Job 170] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> job show 170
Owning
Job ID Name Vserver Node State
------ -------------------- ---------- -------------- ----------
170 Quota Operation svm FsxId009351b227391d1f1-01
Success
Description: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm"
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
1023MB 2GB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 500MB 2 - qtree_unix2
vol_quota_unix
tree * 0B 500MB 0 - *
3 entries were displayed.
qtree_ゆにっくす
のクォータは2GBになり、他のqtreeはクォータは500MBのままであることを確認できました。
qtree_ゆにっくす
に書き込みます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2 bs=1M count=1024
dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2': No space left on device
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
total 2.0G
drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1
-rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2
クォータで設定したサイズまで書き込めていますね。
レポートからもqtreeに2GB書き込まれていることが分かります。
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
2.00GB 2GB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 500MB 2 - qtree_unix2
vol_quota_unix
tree * 0B 500MB 0 - *
3 entries were displayed.
デフォルトユーザークォータの設定
次にデフォルトユーザークォータの設定をします。
各ユーザーそれぞれ1GBまでしか書き込めないようにします。
::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type user -target "" -disk-limit 1GB
Error: command failed: "qtree" is a required field
::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type user -target "" -qtree "" -disk-limit 1GB
::*> quota policy rule show -vserver svm
Vserver: svm Policy: default Volume: vol_quota_unix
Soft Soft
User Disk Disk Files Files
Type Target Qtree Mapping Limit Limit Limit Limit Threshold
----- -------- ------- ------- -------- ------- ------ ------- ---------
tree "" "" - 500MB - - - -
tree qtree_ゆにっくす
"" - 2GB - - - -
user "" "" off 1GB - - - -
3 entries were displayed.
::*> quota policy rule show -vserver svm -instance
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: tree
Target: ""
Qtree Name: ""
User Mapping: -
Disk Limit: 500MB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: tree
Target: qtree_ゆにっくす
Qtree Name: ""
User Mapping: -
Disk Limit: 2GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: user
Target: ""
Qtree Name: ""
User Mapping: off
Disk Limit: 1GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
3 entries were displayed.
クォータの反映をします。
まずはリサイズで試します。
::*> quota resize -vserver svm -volume vol_quota_unix
[Job 173] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> job show 173
Owning
Job ID Name Vserver Node State
------ -------------------- ---------- -------------- ----------
173 Quota Operation svm FsxId009351b227391d1f1-01
Success
Description: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm"
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
qtree_ゆにっくす
tree 1
2.00GB 2GB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 500MB 2 - qtree_unix2
vol_quota_unix
tree * 0B 500MB 0 - *
3 entries were displayed.
はい、既存のデフォルトユーザークォータは存在しないのでリサイズではクォータの反映ができません。
クォータを初期化するため、一度クォータを無効化して、再度有効化します。
::*> quota off -vserver svm -volume vol_quota_unix
[Job 174] Job is queued: "quota off" performed on volume "vol_quota_unix" in Vserver "svm".
::*> job show 174
Owning
Job ID Name Vserver Node State
------ -------------------- ---------- -------------- ----------
174 Quota Operation svm FsxId009351b227391d1f1-01
Success
Description: "quota off" performed on volume "vol_quota_unix" in Vserver "svm"
::*> quota report -vserver svm -volume vol_quota_unix
There are no entries matching your query.
::*> quota on -vserver svm -volume vol_quota_unix
[Job 175] Job is queued: "quota on" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> quota report -vserver svm -volume vol_quota_unix
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_unix
user root
5.01GB - 11 -
vol_quota_unix
qtree_ゆにっくす
user root
2.00GB - 6 -
vol_quota_unix
qtree_unix2
user root
1023MB - 2 -
vol_quota_unix
qtree_ゆにっくす
tree 1
2.00GB 2GB 6 - qtree_ゆにっくす
vol_quota_unix
qtree_unix2
tree 2
1023MB 500MB 2 - qtree_unix2
vol_quota_unix
user * 0B 1GB 0 - *
vol_quota_unix
qtree_ゆにっくす
user * 0B 1GB 0 - *
vol_quota_unix
qtree_unix2
user * 0B 1GB 0 - *
vol_quota_unix
tree * 0B 500MB 0 - *
9 entries were displayed.
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 5.01GB - 11 - -
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2.00GB - 6 - -
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 1023MB - 2 - -
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2.00GB 2GB 6 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 1023MB 500MB 2 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 500MB 0 - - *
9 entries were displayed.
クォータルールが反映されましたね。
各qtreeやユーザーとユーザーごとに派生クォータが作成されています。
rootユーザーのdisk-used
が5.01GBに関わらず、qtree_ゆにっくす
とqtree_unix2
のdisk-used
の合計が3GBです。
これはユーザークォータはqtree0
に対しての書き込み量も含まれているためです。デフォルトツリークォータでqtree0
に対する制限は効かないことを試した際に書き込んだ2GBが含まれてます。
デフォルトユーザークォータの動作確認
デフォルトユーザークォータの動作確認です。
レポート上でrootユーザーに対するdisk-limit
のユーザークォータは-
となっています。
これはrootユーザーは派生ユーザークォータによる制限を受けないためです。
派生クォータの設定は、制限やユーザマッピングなど、デフォルトクォータと同じです。たとえば、デフォルトユーザクォータのディスク制限が 50MB でユーザマッピングが有効の場合、作成される派生クォータもディスク制限が 50MB でユーザマッピングが有効になります。
ただし、 3 つの特殊なユーザとグループの場合、派生クォータに制限はありません。次のユーザとグループがデフォルトのユーザクォータまたはグループクォータのレベルでファイルを所有している場合、派生クォータはデフォルトのユーザクォータまたはグループクォータと同じユーザマッピング設定で作成されますが、単なる追跡クォータになります(制限なし)。
- UNIX root ユーザ( UID 0 )
- UNIX ルートグループ( GID 0 )
- Windows BUILTIN\Administrators グループ
Windows グループのクォータはユーザクォータとして追跡されるため、このグループの派生クォータは、デフォルトグループクォータではなくデフォルトユーザクォータから派生するユーザクォータになります。
一方でツリークォータの制約は受けます。
試しに書き込んでみましょう。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_3 bs=1M count=1024
dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_3': No space left on device
7+0 records in
6+0 records out
6291456 bytes (6.3 MB, 6.0 MiB) copied, 0.0381954 s, 165 MB/s
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
total 2.1G
drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1
-rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2
はい、ほとんど書き込めませんでした。レポートからもその様子は分かります。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 5.01GB - 12 - -
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 1023MB - 2 - -
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 1023MB 500MB 2 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 500MB 0 - - *
9 entries were displayed.
デフォルトツリークォータが500MBだと検証がしづらいので、16GBに変更します。
::*> quota policy rule modify -policy-name default -volume vol_quota_unix -type tree -target "" -qtree "" -disk-limit 16GB
::*> quota resize -vserver svm -volume vol_quota_unix
[Job 176] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 5.01GB - 12 - -
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 1023MB - 2 - -
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 1023MB 16GB 2 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
9 entries were displayed.
デフォルトツリークォータの派生クォータであるqtree_ゆにっくす
のツリークォータが16GBまで書き込めるようになりました。
qtree_ゆにっくす
に対してec2-user
で書き込んでみます。
$ sudo -u ec2-user id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal) context=system_u:system_r:unconfined_service_t:s0
$ sudo chmod 777 /mnt/fsxn/vol_quota_unix/qtree_unix2
$ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ec2-user bs=1M count=1024
dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ec2-user': Disk quota exceeded
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_unix2
total 2.0G
-rw-r--r--. 1 ec2-user ec2-user 1020M Apr 11 07:24 random_pattern_binary_block_1GiB_ec2-user
-rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB
ユーザークォータで設定した1GBほど書き込めました。
レポートを確認すると、「ec2-user
のuidである1000
が1GBのクォータがある中、1023MB書き込んだ」と表示されています。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 5.01GB - 12 - -
svm vol_quota_unix 4294967296000
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 1023MB - 2 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 2.00GB 16GB 3 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
11 entries were displayed.
ユーザークォータなので、他ユーザーも1GB書き込めるはずです。
ssm-user
からも書き込みます。
$ sudo -u ssm-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ssm-user bs=1M count=1024
dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ssm-user': Disk quota exceeded
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_unix2
total 3.0G
-rw-r--r--. 1 ec2-user ec2-user 1020M Apr 11 07:24 random_pattern_binary_block_1GiB_ec2-user
-rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user
-rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB
ssm-user
も1GBほど書き込めました。
レポートからも「ssm-user
のuidである1001
が1GBのクォータがある中、1023MB書き込んだ」と表示されています。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 5.01GB - 12 - -
svm vol_quota_unix 4294967296000
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 1023MB - 2 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 3.00GB 16GB 4 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
13 entries were displayed.
念の為、rootユーザーはユーザークォータの影響を受けないことを確認します。
$ sudo -u root dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_2GiB_root bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 13.6265 s, 158 MB/s
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_unix2
total 5.1G
-rw-r--r--. 1 ec2-user ec2-user 1020M Apr 11 07:24 random_pattern_binary_block_1GiB_ec2-user
-rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user
-rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB
-rw-r--r--. 1 root root 2.0G Apr 11 07:29 random_pattern_binary_block_2GiB_root
はい、デフォルトユーザークォータの1GB以上のデータを書き込めました。
レポートからもrootユーザーがqtree_unix2
が合計3.01GB書き込んでいることが分かります。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 7.02GB - 13 - -
svm vol_quota_unix 4294967296000
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 3.01GB - 3 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 5.01GB 16GB 5 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
13 entries were displayed.
デフォルトユーザークォータはユーザーごとにボリューム内の全qtree内で書き込めるデータサイズを制限しています。実際に別qtreeにも書き込めなくなっているか確認します。
下準備としてqtree_ゆにっくす
の明示的ツリークォータを2GBから4GBに変更します。
::*> quota policy rule modify -policy-name default -volume vol_quota_unix -type tree -target "qtree_ゆにっくす" -qtree "" -disk-limit 4GB
::*> quota resize -vserver svm -volume vol_quota_unix
[Job 177] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 7.02GB - 13 - -
svm vol_quota_unix 4294967296000
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 3.01GB - 3 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 4GB 7 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 5.01GB 16GB 5 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
13 entries were displayed.
この状態で書き込みます。
$ sudo chmod 777 /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
$ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user bs=1M count=1024
dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user': Disk quota exceeded
10+0 records in
9+0 records out
9437184 bytes (9.4 MB, 9.0 MiB) copied, 0.0637273 s, 148 MB/s
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
total 2.1G
drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1
-rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2
-rw-r--r--. 1 root root 5.3M Apr 11 07:14 random_pattern_binary_block_1GiB_3
-rw-r--r--. 1 ec2-user ec2-user 10M Apr 11 07:34 random_pattern_binary_block_1GiB_ec2-user
ほとんど書き込めていません。ユーザーごとにボリューム内で書き込める
明示的ユーザークォータの設定と動作確認
次に、明示的ユーザークォータを試してみます。
ユーザークォータの優先順位は以下のとおりです。
- ボリューム上のファイルを所有しているユーザのユーザクォータ
- 対象qtree内にあるファイルを所有しているユーザのユーザクォータ
qtreeに対して明示的ユーザークォータを設定しても、デフォルトユーザークォータが優先されそうです。実際に確認します。
ec2-user
のuid1000
はqtreeqtree_ゆにっくす
に2GBまで書き込めるような明示的ユーザークォータを設定します。
::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type user -target "1000" -qtree "qtree_ゆにっくす" -disk-limit 2GB
::*> quota policy rule show
Vserver: svm Policy: default Volume: vol_quota_unix
Soft Soft
User Disk Disk Files Files
Type Target Qtree Mapping Limit Limit Limit Limit Threshold
----- -------- ------- ------- -------- ------- ------ ------- ---------
tree "" "" - 16GB - - - -
tree qtree_ゆにっくす
"" - 4GB - - - -
user "" "" off 1GB - - - -
user 1000 qtree_ゆにっくす
off 2GB - - - -
4 entries were displayed.
::*> quota policy rule show -instance
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: tree
Target: ""
Qtree Name: ""
User Mapping: -
Disk Limit: 16GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: tree
Target: qtree_ゆにっくす
Qtree Name: ""
User Mapping: -
Disk Limit: 4GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: user
Target: ""
Qtree Name: ""
User Mapping: off
Disk Limit: 1GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
Vserver: svm
Policy Name: default
Volume Name: vol_quota_unix
Type: user
Target: 1000
Qtree Name: qtree_ゆにっくす
User Mapping: off
Disk Limit: 2GB
Files Limit: -
Threshold for Disk Limit: -
Soft Disk Limit: -
Soft Files Limit: -
Extended Policy Name: -
4 entries were displayed.
::*> quota resize -vserver svm -volume vol_quota_unix
[Job 178] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm".
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 7.02GB - 13 - -
svm vol_quota_unix 4294967296000
user 1000 1000 1023MB 1GB 2 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 285769944006656
qtree_ゆにっくす
user 1000 1000 20KB 2GB 1 - - 1000
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 3.01GB - 3 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 4GB 8 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 5.01GB 16GB 5 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
14 entries were displayed.
実際に書き込んでみます。
$ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user bs=1M count=1024
dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user': Disk quota exceeded
12+0 records in
11+0 records out
11534336 bytes (12 MB, 11 MiB) copied, 0.0720174 s, 160 MB/s
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
total 2.1G
drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1
-rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2
-rw-r--r--. 1 root root 5.3M Apr 11 07:14 random_pattern_binary_block_1GiB_3
-rw-r--r--. 1 ec2-user ec2-user 0 Apr 11 07:42 random_pattern_binary_block_1GiB_ec2-user
$ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user_2 bs=1M count=1024
dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user_2': Disk quota exceeded
15+0 records in
14+0 records out
14680064 bytes (15 MB, 14 MiB) copied, 0.0882806 s, 166 MB/s
$ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす
total 2.1G
drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1
-rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2
-rw-r--r--. 1 root root 5.3M Apr 11 07:14 random_pattern_binary_block_1GiB_3
-rw-r--r--. 1 ec2-user ec2-user 0 Apr 11 07:42 random_pattern_binary_block_1GiB_ec2-user
-rw-r--r--. 1 ec2-user ec2-user 0 Apr 11 07:44 random_pattern_binary_block_1GiB_ec2-user_2
やはり、ほとんど書き込めていませんね。
レポートからもその様子が分かります。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 7.02GB - 13 - -
svm vol_quota_unix 4294967296000
user 1000 1000 1023MB 1GB 3 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 285769944006656
qtree_ゆにっくす
user 1000 1000 0B 2GB 2 - - 1000
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 3.01GB - 3 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 1023MB 1GB 1 - - *
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 5.01GB 16GB 5 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
14 entries were displayed.
NetApp公式ドキュメントに記載の以下内容と同じようなシチュエーションです。
最も上限の低いクォータが、最初に超過するクォータとはかぎりません。たとえば、ボリューム vol1 のユーザクォータが 100GB の場合、 また、ボリューム vol1 に含まれる qtree q2 のユーザクォータは 20GB 、そのユーザがすでに 80GB を超えるデータをボリューム vol1 に(ただし qtree q2 以外)書き込んでいる場合、ボリュームの制限を最初に超過する可能性があります。
ユーザークォータを使用する場合、デフォルトユーザークォータは慎重に設定する方が良さそうです。
qtreeをマウントした場合の使用率の見え方
ふと、qtreeをマウントした場合の使用率が気になったので確認をしてみます。
$ sudo umount /mnt/fsxn/vol_quota_unix/
$ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_ゆにっくす /mnt/fsxn/vol_quota_unix/
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_ゆにっくす nfs4 4.0G 2.0G 2.0G 50% /mnt/fsxn/vol_quota_unix
ボリュームに割り当てたサイズではなく、デフォルトツリークォータがサイズとして見えていますね。
なお、ec2-user
やssm-user
などユーザークォータが効いているユーザーにスイッチしてからdf
しましたが、結果は変わりありませんでした。
$ sudo umount /mnt/fsxn/vol_quota_unix/
$ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 /mnt/fsxn/vol_quota_unix/
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 5.1G 11G 32% /mnt/fsxn/vol_quota_unix
$ sudo -u ec2-user df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 5.1G 11G 32% /mnt/fsxn/vol_quota_unix
クォータは重複排除後のデータサイズで判定しているのか
クォータは重複排除後のデータサイズで判定しているのか気になったので確認します。
ec-user
が書き込めるように、既存のファイルを削除します。
$ rm -rf /mnt/fsxn/vol_quota_unix/random_pattern_binary_block_1GiB_ec2-user
$ ls -l /mnt/fsxn/vol_quota_unix/
total 4202496
-rw-r--r--. 1 ssm-user ssm-user 1073741824 Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user
-rw-r--r--. 1 root root 1082654720 Apr 11 06:39 random_pattern_binary_block_2GiB
-rw-r--r--. 1 root root 2147483648 Apr 11 07:29 random_pattern_binary_block_2GiB_root
レポートから、ec2-user(uid : 1000)の使用しているサイズが0Byteになったことを確認します。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 7.02GB - 13 - -
svm vol_quota_unix 4294967296000
user 1000 1000 0B 1GB 2 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 285769944006656
qtree_ゆにっくす
user 1000 1000 0B 2GB 2 - - 1000
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 3.01GB - 3 - -
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 4.01GB 16GB 4 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
13 entries were displayed.
0埋めした512MBのファイルを書き込みます。
$ sudo -u ec2-user dd if=/dev/zero of=/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-user bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 2.57542 s, 208 MB/s
$ ls -lh /mnt/fsxn/vol_quota_unix/
total 4.6G
-rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user
-rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB
-rw-r--r--. 1 root root 2.0G Apr 11 07:29 random_pattern_binary_block_2GiB_root
-rw-r--r--. 1 ec2-user ec2-user 512M Apr 11 07:58 zero_padding_block_512MiB_ec2-user
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 4.6G 12G 29% /mnt/fsxn/vol_quota_unix
レポートを確認すると、512MB重複排除されec2-user
で書き込んだ物理ストレージ消費量は0になるはずですが、514.0MBと記録されていますね。クォータは論理サイズで判定していそうです。
::*> volume show -volume vol_quota_unix -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
vserver volume size available filesystem-size total used percent-used 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_quota_unix 10TB 833.6GB 10TB 9.50TB 8.18GB 0% 512MB 6% 0B 8.18GB 0% 8.68GB 0% - 8.68GB none 0B 0%
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 7.02GB - 13 - -
svm vol_quota_unix 4294967296000
user 1000 1000 514.0MB 1GB 3 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 285769944006656
qtree_ゆにっくす
user 1000 1000 0B 2GB 2 - - 1000
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 3.01GB - 3 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 514.0MB 1GB 1 - - *
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 4.51GB 16GB 5 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
14 entries were displayed.
再度0埋めした512MBのファイルを書き込みます。
$ sudo -u ec2-user dd if=/dev/zero of=/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-user_2 bs=1M count=512
dd: closing output file '/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-user_2': Disk quota exceeded
$ ls -lh /mnt/fsxn/vol_quota_unix/
total 5.1G
-rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user
-rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB
-rw-r--r--. 1 root root 2.0G Apr 11 07:29 random_pattern_binary_block_2GiB_root
-rw-r--r--. 1 ec2-user ec2-user 512M Apr 11 07:58 zero_padding_block_512MiB_ec2-user
-rw-r--r--. 1 ec2-user ec2-user 508M Apr 11 08:00 zero_padding_block_512MiB_ec2-user_2
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 5.1G 11G 32% /mnt/fsxn/vol_quota_unix
ディスクスペースがないとなりましたね。
レポートでもしっかり1GB使用していることが分かります。
::*> volume show -volume vol_quota_unix -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
vserver volume size available filesystem-size total used percent-used 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_quota_unix 10TB 833.6GB 10TB 9.50TB 8.18GB 0% 1019MB 11% 0B 8.18GB 0% 9.18GB 0% - 9.18GB none 0B 0%
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_unix 0 user root 0 7.02GB - 13 - -
svm vol_quota_unix 4294967296000
user 1000 1000 1023MB 1GB 4 - - *
svm vol_quota_unix 4299262263296
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 281474976710656
qtree_ゆにっくす
user root 0 2GB - 7 - -
svm vol_quota_unix 285769944006656
qtree_ゆにっくす
user 1000 1000 0B 2GB 2 - - 1000
svm vol_quota_unix 562949953421312
qtree_unix2
user root 0 3.01GB - 3 - -
svm vol_quota_unix 567244920717312
qtree_unix2
user 1000 1000 1023MB 1GB 2 - - *
svm vol_quota_unix 567249215684608
qtree_unix2
user 1001 1001 1023MB 1GB 1 - - *
svm vol_quota_unix 2305843013508661248
qtree_ゆにっくす
tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす
svm vol_quota_unix 2305843017803628544
qtree_unix2
tree 2 2 5.01GB 16GB 6 - - qtree_unix2
svm vol_quota_unix 3458764513820540928
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459045988797251584
qtree_ゆにっくす
user * * 0B 1GB 0 - - *
svm vol_quota_unix 3459327463773962240
qtree_unix2
user * * 0B 1GB 0 - - *
svm vol_quota_unix 5764607523034234880
tree * * 0B 16GB 0 - - *
14 entries were displayed.
ユーザークォータはqtree0にも動作することを確認
ユーザークォータはqtree0
にも動作することを確認します。
ユーザークォータが効いているボリュームをマウントし、ボリュームのルートに512MBのファイルを作成しようとします。
$ sudo umount /mnt/fsxn/vol_quota_unix
$ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/ /mnt/fsxn/vol_quota_unix/
$ df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 826G 92% /mnt/fsxn/vol_quota_unix
$ sudo -u ec2-user df -hT -t nfs4
Filesystem Type Size Used Avail Use% Mounted on
svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 826G 92% /mnt/fsxn/vol_quota_unix
$ ls -l /mnt/fsxn/vol_quota_unix
total 2105432
drwxrwxrwx. 2 root root 4096 Apr 11 08:00 qtree_unix2
drwxrwxrwx. 3 root root 4096 Apr 11 07:44 qtree_ゆにっくす
-rw-r--r--. 1 root root 1073741824 Apr 11 06:31 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1073741824 Apr 11 06:32 random_pattern_binary_block_1GiB_2
$ sudo chmod 777 /mnt/fsxn/vol_quota_unix
$ sudo -u ec2-user dd if=/dev/zero of=/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-users bs=1M count=512
dd: error writing '/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-users': Disk quota exceeded
54+0 records in
53+0 records out
55574528 bytes (56 MB, 53 MiB) copied, 0.152904 s, 363 MB/s
$ ls -l /mnt/fsxn/vol_quota_unix
total 2105432
drwxrwxrwx. 2 root root 4096 Apr 11 08:00 qtree_unix2
drwxrwxrwx. 3 root root 4096 Apr 11 07:44 qtree_ゆにっくす
-rw-r--r--. 1 root root 1073741824 Apr 11 06:31 random_pattern_binary_block_1GiB
-rw-r--r--. 1 root root 1073741824 Apr 11 06:32 random_pattern_binary_block_1GiB_2
-rw-r--r--. 1 ec2-user ec2-user 0 Apr 12 02:32 zero_padding_block_512MiB_ec2-users
はい、ほとんど書き込めませんでした。
ユーザークォータをボリューム全体に効かせたい場合は、qtreeを作成する必要はないことが分かります。
デフォルトユーザークォータの確認 (SMBの場合)
NFSのパターンばかり試しましたが、SMBでも試してみましょう。
下準備でqtreeのパスとするファイル共有を作成します。SMBサーバーは以下記事のとおり、既にドメイン参加しています。
::*> cifs server show
Server Status Domain/Workgroup Authentication
Vserver Name Admin Name Style
----------- --------------- --------- ---------------- --------------
svm SMB-SHARE up CORP domain
::*> cifs share create -vserver svm -share-name quota_ntfs -path /vol_quota_ntfs/qtree_ntfs
::*> cifs share show -share-name quota_ntfs
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm quota_ntfs /vol_quota_ntfs/ oplocks - Everyone / Full Control
qtree_ntfs browsable
changenotify
show-previous-versions
デフォルトユーザークォータを作成します。
::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_ntfs -type user -target "" -qtree "" -disk-limit 1GB
::*> quota policy rule show -vserver svm -volume vol_quota_ntfs
Vserver: svm Policy: default Volume: vol_quota_ntfs
Soft Soft
User Disk Disk Files Files
Type Target Qtree Mapping Limit Limit Limit Limit Threshold
----- -------- ------- ------- -------- ------- ------ ------- ---------
user "" "" off 1GB - - - -
::*> quota on -vserver svm -volume vol_quota_ntfs
[Job 179] Job is queued: "quota on" performed for quota policy "default" on volume "vol_quota_ntfs" in Vserver "svm".
::*> quota report -vserver svm -volume vol_quota_ntfs
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_ntfs
user BUILTIN\Administrators
0B - 2 -
vol_quota_ntfs
user * 0B 1GB 0 - *
2 entries were displayed.
設定されましたね。
ドメインユーザーtest-user01
でRDP接続をして、1GiBのファイルを書き込みます。
> Get-ChildItem Env:\USERNAME
Name Value
---- -----
USERNAME test-user01
> New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\SMB-SHARE\quota_ntfs" -Persist
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Z 0.00 1.00 FileSystem \\SMB-SHARE\quota_ntfs
> fsutil file createnew Z:\fsutil_file_test-user01.txt 1073741824
Error: There is not enough space on the disk.
スペースがないと弾かれました。ユーザークォータが効いていそうです。
レポートを確認すると、そもそも書き込まれていません。
::*> quota report -vserver svm -volume vol_quota_ntfs
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_ntfs
user BUILTIN\Administrators
0B - 2 -
vol_quota_ntfs
user * 0B 1GB 0 - *
2 entries were displayed.
1GiBではなく、1GB書き込んでみます。
> fsutil file createnew Z:\fsutil_file_test-user01.txt 1000000000
File Z:\fsutil_file_test-user01.txt is created
> ls Z:\
Directory: Z:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 4/11/2024 8:36 AM 1000000000 fsutil_file_test-user01.txt
> Get-PSDrive -PSProvider FileSystem
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
C 17.84 12.16 FileSystem C:\ Users\test-user01
Z 0.93 0.07 FileSystem \\SMB-SHARE\quota_ntfs
書き込まれましたね。Free (GB)
が0.07なので、ユーザークォータがしっかり効いていることが分かります。
エクスプローラーでは以下のように、空き容量が少ないと赤く警告してくれています。
レポートからもドメインユーザーtest-user01
が957.4MB書き込んだことが分かります。
::*> quota report -vserver svm -volume vol_quota_ntfs
Vserver: svm
----Disk---- ----Files----- Quota
Volume Tree Type ID Used Limit Used Limit Specifier
------- -------- ------ ------- ----- ----- ------ ------ ---------
vol_quota_ntfs
user BUILTIN\Administrators
0B - 2 -
vol_quota_ntfs
user CORP\test-user01
957.4MB 1GB 1 - *
vol_quota_ntfs
user * 0B 1GB 0 - *
3 entries were displayed.
::*> quota report -vserver svm -volume vol_quota_ntfs -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ------------- ---- ---------- ---------------------- --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_ntfs 2473901162496 user BUILTIN\Administrators S-1-5-32-544 0B - 2 - -
svm vol_quota_ntfs 61211873902592
user CORP\test-user01 S-1-5-21-38571244-2121234638-1230449559-1606
957.4MB 1GB 1 - - *
svm vol_quota_ntfs 3458764513820540928
user * * 0B 1GB 0 - - *
3 entries were displayed.
別のユーザーでも試します。
> Get-ChildItem Env:\USERNAME
Name Value
---- -----
USERNAME test-user02
> New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\SMB-SHARE\quota_ntfs" -Persist
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Z 0.00 1.00 FileSystem \\SMB-SHARE\quota_ntfs
> fsutil file createnew Z:\fsutil_file_test-user02.txt 1000000000
File Z:\fsutil_file_test-user02.txt is created
> ls Z:\
Directory: Z:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 4/11/2024 8:36 AM 1000000000 fsutil_file_test-user01.txt
-a---- 4/11/2024 8:40 AM 1000000000 fsutil_file_test-user02.txt
> Get-PSDrive -PSProvider FileSystem
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
C 17.85 12.15 FileSystem C:\ Users\test-user02
Z 0.93 0.07 FileSystem \\SMB-SHARE\quota_ntfs
ユーザーごとにクォータを認識していそうですね。
レポートは以下のとおりです。
::*> quota report -vserver svm -volume vol_quota_ntfs -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier
vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier
------- -------------- ------------- ---- ---------- ---------------------- --------------- --------- ---------- ---------- ---------- --------- ---------------
svm vol_quota_ntfs 2473901162496 user BUILTIN\Administrators S-1-5-32-544 0B - 2 - -
svm vol_quota_ntfs 61211873902592
user CORP\test-user01 S-1-5-21-38571244-2121234638-1230449559-1606
957.4MB 1GB 1 - - *
svm vol_quota_ntfs 61216168869888
user CORP\test-user02 S-1-5-21-38571244-2121234638-1230449559-1607
957.4MB 1GB 1 - - *
svm vol_quota_ntfs 3458764513820540928
user * * 0B 1GB 0 - - *
4 entries were displayed.
qtreeやクォータを設定したボリュームをSnapMirrorしてみる
SnapMirrorの実行
qtreeやクォータを設定したボリュームをSnapMirrorした際の挙動はどうなるのでしょうか。
試してみます。
::*> volume create -vserver svm -volume vol_quota_unix_dst -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow
[Job 184] Job succeeded: Successful
::*> snapmirror create -source-path svm:vol_quota_unix -destination-path svm:vol_quota_unix_dst -policy MirrorAllSnapshots
Operation succeeded: snapmirror create for the relationship with destination "svm:vol_quota_unix_dst".
::*> snapmirror initialize -destination-path svm:vol_quota_unix_dst
Operation is queued: snapmirror initialize of destination "svm:vol_quota_unix_dst".
::*> snapmirror show -destination-path svm:vol_quota_unix_dst
Source Path: svm:vol_quota_unix
Source Cluster: -
Source Vserver: svm
Source Volume: vol_quota_unix
Destination Path: svm:vol_quota_unix_dst
Destination Cluster: -
Destination Vserver: svm
Destination Volume: vol_quota_unix_dst
Relationship Type: XDP
Relationship Group Type: none
Managing Vserver: svm
SnapMirror Schedule: -
SnapMirror Policy Type: async-mirror
SnapMirror Policy: MirrorAllSnapshots
Tries Limit: -
Throttle (KB/sec): unlimited
Consistency Group Item Mappings: -
Current Transfer Throttle (KB/sec): unlimited
Mirror State: Uninitialized
Relationship Status: Transferring
File Restore File Count: -
File Restore File List: -
Transfer Snapshot: snapmirror.646592b9-f47f-11ee-8e23-0fe9d475982c_2163179401.2024-04-11_085150
Snapshot Progress: 0B
Total Progress: 0B
Network Compression Ratio: 1:1
Snapshot Checkpoint: 0B
Newest Snapshot: -
Newest Snapshot Timestamp: -
Exported Snapshot: -
Exported Snapshot Timestamp: -
Healthy: true
Relationship ID: b8d55938-f7e0-11ee-8e23-0fe9d475982c
Source Vserver UUID: 646592b9-f47f-11ee-8e23-0fe9d475982c
Destination Vserver UUID: 646592b9-f47f-11ee-8e23-0fe9d475982c
Current Operation ID: bc12c7bf-f7e0-11ee-8e23-0fe9d475982c
Transfer Type: initialize
Transfer Error: -
Last Transfer Type: -
Last Transfer Error: -
Last Transfer Error Codes: -
Last Transfer Size: -
Last Transfer Network Compression Ratio: -
Last Transfer Duration: -
Last Transfer From: -
Last Transfer End Timestamp: -
Unhealthy Reason: -
Progress Last Updated: 04/11 08:51:50
Relationship Capability: 8.2 and above
Lag Time: -
Current Transfer Priority: normal
SMTape Operation: -
Destination Volume Node Name: FsxId009351b227391d1f1-01
Identity Preserve Vserver DR: -
Number of Successful Updates: 0
Number of Failed Updates: 0
Number of Successful Resyncs: 0
Number of Failed Resyncs: 0
Number of Successful Breaks: 0
Number of Failed Breaks: 0
Total Transfer Bytes: 0
Total Transfer Time in Seconds: 0
Source Volume MSIDs Preserved: -
OpMask: ffffffffffffffff
Is Auto Expand Enabled: -
Percent Complete for Current Status: -
::*> snapmirror show -destination-path svm:vol_quota_unix_dst -fields state, status, total-progress, progress-last-updated
source-path destination-path state status total-progress progress-last-updated
------------------ ---------------------- ------------ ------ -------------- ---------------------
svm:vol_quota_unix svm:vol_quota_unix_dst Snapmirrored Idle - -
SnapMirrorの転送は問題なく完了しました。
SnapMirror転送先ボリュームのqtreeの確認
SnapMirror転送先ボリュームのqtreeを確認します。
::*> qtree show -vserver svm -volume vol_quota_unix_dst
Vserver Volume Qtree Style Oplocks Status
---------- ------------- ------------ ------------ --------- --------
svm vol_quota_unix_dst
"" unix enable readonly
svm vol_quota_unix_dst
qtree_unix2 unix enable readonly
svm vol_quota_unix_dst
qtree_ゆにっくす
unix enable readonly
3 entries were displayed.
::*> qtree show -vserver svm -volume vol_quota_unix_dst -instance
Vserver Name: svm
Volume Name: vol_quota_unix_dst
Qtree Name: ""
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix_dst
Security Style: unix
Oplock Mode: enable
User ID: root
Group ID: root
Unix Permissions: ---rwxr-xr-x
Qtree Id: 0
Qtree Status: readonly
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
Vserver Name: svm
Volume Name: vol_quota_unix_dst
Qtree Name: qtree_unix2
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix_dst/qtree_unix2
Security Style: unix
Oplock Mode: enable
User ID: root
Group ID: root
Unix Permissions: ---rwxrwxrwx
Qtree Id: 2
Qtree Status: readonly
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
Vserver Name: svm
Volume Name: vol_quota_unix_dst
Qtree Name: qtree_ゆにっくす
Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix_dst/qtree_ゆにっくす
Security Style: unix
Oplock Mode: enable
User ID: root
Group ID: root
Unix Permissions: ---rwxrwxrwx
Qtree Id: 1
Qtree Status: readonly
Export Policy: default
Is Export Policy Inherited: true
QoS policy group: -
3 entries were displayed.
作成したqtreeが存在しています。qtreeを作り直すという手間はなさそうです。
SnapMirror転送先ボリュームのクォータルールの確認
SnapMirror転送先ボリュームのクォータルールを確認します。
::*> quota show vol_quota*
Scan
Vserver Volume State Status
--------- ------------ --------------- ------
svm vol_quota_ntfs
on -
svm vol_quota_unix
on -
svm vol_quota_unix_dst
off -
3 entries were displayed.
::*> quota policy rule show -vserver svm
Vserver: svm Policy: default Volume: vol_quota_ntfs
Soft Soft
User Disk Disk Files Files
Type Target Qtree Mapping Limit Limit Limit Limit Threshold
----- -------- ------- ------- -------- ------- ------ ------- ---------
user "" "" off 1GB - - - -
Vserver: svm Policy: default Volume: vol_quota_unix
Soft Soft
User Disk Disk Files Files
Type Target Qtree Mapping Limit Limit Limit Limit Threshold
----- -------- ------- ------- -------- ------- ------ ------- ---------
tree "" "" - 16GB - - - -
tree qtree_ゆにっくす
"" - 4GB - - - -
user "" "" off 1GB - - - -
user 1000 qtree_ゆにっくす
off 2GB - - - -
5 entries were displayed.
クォータルールはSnapMirrorのクォータルールは設定されていません。
そのため、SnapMirrorを用いてDRや移行をする際は都度クォータルールを設定してあげる必要があります。
まずはツリークォータから試してみると良さそう
Amazon FSx for NetApp ONTAPにおけるqtreeとクォータを使った書き込み制限をやってみました。
個人的にはツリークォータから試してみると良さそうだなと感じました。qtreeが分かれているのであれば、ユーザーごとやグループごとにqtreeをまたがって、書き込みの制限をしたいケースは稀かと思います。
ユーザークォータが活躍するのはqtreeを用意するのが手間であり、サクッとWorkSpacesやAppStream2.0の移動ユーザープロファイル(roaming user profile)の使用量をユーザーごとに制限をしたい場合かと思います。
おおよそ需要があるのは「ディレクトリごとに書き込めるサイズを制限したい」だと考えます。そのような場合にツリークォータは刺さります。ツリークォータは明示的クォータを設定すれば微調整も簡単なのでおすすめです。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!