[Amazon FSx for NetApp ONTAP] qtree と クォータ を使った書き込み制限をやってみる

まずはツリークォータから試してみると良さそう
2024.04.12

ボリューム内のディレクトリごとに書き込めるデータサイズを制限したい

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

皆さんはボリューム内のディレクトリごとに書き込めるデータサイズを制限したいなと思ったことはありますか? 私はあります。

ボリュームを細かく分割するのも手ですが、1つのAmazon FSx for NetApp ONTAP(以降FSxN)ファイルシステムにアタッチできるボリュームの上限は500や1,000と物足りない場合があります。

スケールアップファイルシステムあたり最大 500 ボリューム、スケールアウトファイルシステムあたり最大 1,000 ボリュームを作成できます。

FSx for ONTAP ボリュームの管理 - FSx for ONTAP

また、ボリュームを細かく分割しすぎるとバックアップや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間で共有できない
  • クォータの適用優先順位は以下のとおりです。
    1. 対象qtreeのツリークォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
    2. ボリューム上のファイルを所有しているユーザのユーザクォータ
    3. ボリューム上のファイルを所有しているグループのグループクォータ
    4. 対象qtree内にあるファイルを所有しているユーザのユーザクォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
    5. 対象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 補助文字を含むファイル、ディレクトリ、ツリーの名前を作成および表示できるようになりました。

ボリュームおよび qtree の名前の制限事項とは何ですか。 - NetApp

UTF-8の4バイト文字を含めたい場合は、ボリュームの文字コードをutf8mb4に設定しましょう。 設定方法については以下記事が参考になります。

制約事項についての参考情報 :

クォータ とは

概要

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 には影響しません。
"" - ユーザクォータ
- グループクォータ
- ツリークォータ
二重引用符( "" ) "のクォータターゲットは、デフォルトのクォータを示します。
デフォルトのクォータの場合、クォータタイプはタイプフィー
ルドの値によって決定されます。

抜粋 : クォータのターゲットとタイプ

クォータタイプごとの優先順位は以下のとおりです。

  1. 対象qtreeのツリークォータ
    • ファイルの作成または書き込みがqtree0に対して行われる場合は対象外
  2. ボリューム上のファイルを所有しているユーザのユーザクォータ
  3. ボリューム上のファイルを所有しているグループのグループクォータ
  4. 対象qtree内にあるファイルを所有しているユーザのユーザクォータ
    • ファイルの作成または書き込みがqtree0に対して行われる場合は対象外
  5. 対象qtree内にあるファイルを所有しているグループのグループクォータ
    • ファイルの作成または書き込みがqtree0に対して行われる場合は対象外

参考 : クォータの適用方法

qtree0というのは各ボリュームに存在しているデフォルトのqtreeです。

ONTAP は、各ボリュームに qtree0 という名前のデフォルトの qtree を作成します。qtree にデータを配置しない場合、データは qtree0 に格納されます。

「 qtree を使用した FlexVol ボリュームのパーティショニングの概要」を参照してください

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種類があります。

  1. デフォルトクォータ (default quotas)
  2. 明示的クォータ (explicit quotas)
  3. 派生クォータ (derived quotas)
  4. トラッキングクォータ (tracking quotas)

デフォルトクォータは特定のクォータタイプのすべてのターゲットに適用するクォータルールです。クォータルールのターゲットに""を指定した場合にデフォルトクォータとなります。

デフォルトクォータを活用することで、大量のターゲットにまとめてクォータを適用できるため、ターゲットごとに個別のクォータルールを設定する必要がありません。「ユーザー個人に割り当てたqtreeに一律で20GBのクォータをかける」ということが非常に簡単に行えます。

特定ターゲットを指定したクォータ(明示的クォータ)を作成した場合、そのクォータの値がデフォルトクォータの値を上書きます。

明示的クォータは特定のクォータターゲットに適用するクォータルールです。特定のターゲットに対するデフォルトクォータを上書きする場合にも使用します。

派生クォータはデフォルトクォータ設定時に各ターゲットに対して派生して設定されるクォータです。同じターゲットにすでに明示的クォータが存在する場合は、派生クォータは作成されません。派生クォータはクォータ指定子(Quota Specifier)が空白または、*になっています(ツリークォータはqtree名)。

派生クォータは以下のようにクォータタイプによって派生クォータの作成のされ方は異なります。

  • デフォルトツリークォータ : ボリューム上のすべてのqtreeに派生デフォルトツリークォータが作成される
  • デフォルトユーザクォータ or デフォルトグループクォータ : 同じレベル(ボリュームまたは qtree )でファイルを所有するユーザまたはグループごとに、派生ユーザクォータまたは派生グループクォータが作成される
  • デフォルトユーザクォータ or デフォルトグループクォータによって、ツリークォータもあるすべてのqtree : 派生デフォルトユーザクォータまたは派生グループクォータが作成される

トラッキングクォータはリソースの使用量を制限することは行わず、リソースの使用量のレポートを表示するためだけに使うクォータです。

クォータの設定手順

クォータのおおまかな設定手順は以下のとおりです。

  1. クォータポリシーを作成 (quota policy create)
    • SVMのデフォルトのものを使うものはスキップ可
  2. クォータポリシーをSVMに割り当て (vserver modify)
    • SVMのデフォルトのものを使うものはスキップ可
  3. クォータポリシーにクォータルールを作成 (quota policy rule create)
    • クォータルールはボリューム、クォータタイプ、qtree、ターゲットごとに作成
  4. クォータの有効化
    • ボリュームごとに有効化
    • デフォルトクォータが存在しない場合など : 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に対して新しいツリークォータを作成します。
ボリュームのデフォルト ユーザ クォータを追加する
これらのどちらの変更にも、クォータの完全な初期化が必要です。クォータのサイズ変更では有効に機能しません。

クォータ - NetApp

都度初期化を回避するために、デフォルトクォータを作成しておくとスムーズでしょう。

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 を使用した FlexVol ボリュームのパーティショニングの概要」を参照してください

それは困ります。本当にディレクトリの移動ができないか確認します。

まず、移動元となる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_unix2disk-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

ほとんど書き込めていません。ユーザーごとにボリューム内で書き込める

明示的ユーザークォータの設定と動作確認

次に、明示的ユーザークォータを試してみます。

ユーザークォータの優先順位は以下のとおりです。

  1. ボリューム上のファイルを所有しているユーザのユーザクォータ
  2. 対象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-userssm-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)でした!