この文書は、Gfarm のディレクトリ クオータ機能を説明します。
$ gfdirquota -c dirset-a dirset-b $ gfedquota -D dirset-a -h 1073741824 $ gfedquota -D dirset-b -h 2147483648ディレクトリ /home/john-smith/dir-a をディレクトリ セット dirset-a に、 ディレクトリ /home/john-smith/dir-b1 と /home/john-smith/dir-b2 をディレクトリ セット dirset-b に 登録して、利用量管理下に置く例です。
$ gfdirquota -a dirset-a /home/john-smith/dir-a $ gfdirquota -a dirset-b /home/john-smith/dir-b1 /home/john-smith/dir-b2上記で設定した内容を確認します。
$ gfdirquota dirset-a dirset-b % gfdirquota -l john-smith:dirset-a: /home/john-smith/dir-a john-smith:dirset-b: /home/john-smith/dir-b1 /home/john-smith/dir-b2 $ gfquota -D dirset-a UserName : john-smith DirsetName : dirset-a GracePeriod : disabled FileSpace : 0 FileSpaceGracePeriod : disabled FileSpaceSoftLimit : disabled FileSpaceHardLimit : 1073741824 FileNum : 0 FileNumGracePeriod : disabled FileNumSoftLimit : disabled FileNumHardLimit : disabled PhysicalSpace : 0 PhysicalSpaceGracePeriod : disabled PhysicalSpaceSoftLimit : disabled PhysicalSpaceHardLimit : disabled PhysicalNum : 0 PhysicalNumGracePeriod : disabled PhysicalNumSoftLimit : disabled PhysicalNumHardLimit : disabled $ gfquota -D dirset-b UserName : john-smith DirsetName : dirset-b GracePeriod : disabled FileSpace : 49417 FileSpaceGracePeriod : disabled FileSpaceSoftLimit : disabled FileSpaceHardLimit : 2147483648 FileNum : 72 FileNumGracePeriod : disabled FileNumSoftLimit : disabled FileNumHardLimit : disabled PhysicalSpace : 98834 PhysicalSpaceGracePeriod : disabled PhysicalSpaceSoftLimit : disabled PhysicalSpaceHardLimit : disabled PhysicalNum : 144 PhysicalNumGracePeriod : disabled PhysicalNumSoftLimit : disabled PhysicalNumHardLimit : disabled-d オプションを使うと、dirset 名ではなくディレクトリ名を指定して、 利用量やクオータ制限値を確認することができます。
$ gfquota -d /home/john-smith/dir-b1 Pathname : gfarm://metadata-server:601/home/john-smith/dir-b1 UserName : john-smith DirsetName : dirset-b GracePeriod : disabled FileSpace : 49417 FileSpaceGracePeriod : disabled FileSpaceSoftLimit : disabled FileSpaceHardLimit : 2147483648 FileNum : 72 FileNumGracePeriod : disabled FileNumSoftLimit : disabled FileNumHardLimit : disabled PhysicalSpace : 98834 PhysicalSpaceGracePeriod : disabled PhysicalSpaceSoftLimit : disabled PhysicalSpaceHardLimit : disabled PhysicalNum : 144 PhysicalNumGracePeriod : disabled PhysicalNumSoftLimit : disabled PhysicalNumHardLimit : disabledもしも現在ディレクトリ利用量の再計算中で、利用量の集計値が不正確な場合、gfquota(1) コマンドは、下記の警告を表示します。
warning: quota usage is inaccurateディレクトリ /home/john-smith/dir-b2 を、ディレクトリセット dirset-b から削除するには、 そのディレクトリ自身を削除します。
$ gfdirquota -l dirset-b /home/john-smith/dir-b1 /home/john-smith/dir-b2 $ gfrmdir /home/john-smith/dir-b2 $ gfdirquota -l dirset-b /home/john-smith/dir-b1gfarmroot グループ権限がない場合、異なる dirset をまたぐディレクトリの移動はエラーになります。
$ mkdir dir-a/dir $ mv dir-a/dir dir-b1/ mv: cannot move `dir-a/dir' to `dir-b1/dir': Operation not supportedgfarmroot グループ権限がない場合、 空でないディレクトリを dirset へ追加しようとすると、エラーになります。
$ gfmkdir -p /home/john-smith/dir-b3/dir $ gfdirquota -a dirset-b /home/john-smith/dir-b3 gfarm://metadata-server:601/home/john-smith/dir-b3: directory not empty
gfarm2fs 起動時に、-o directory_quota_rename_error_exdev オプションを 指定した場合、一般ユーザー権限でも mv(1) コマンドによって 異なる dirset をまたぐディレクトリの移動ができるようになります。
しかしこの場合 mv(1) コマンドは移動を実現するのに、 ディレクトリの再帰的コピーと、ソース側ディレクトリの削除を用いますので、 そのディレクトリに含まれるファイル全てについて ネットワーク経由でいったんファイルシステムノードからクライアント側にコピーし、 さらにクライアントが同じ内容をファイルシステムノード側にコピーし直すことになり、 極めて低速な動作になります。 また、移動するディレクトリの配下に、アクセス不能なディレクトリや ファイルがあった場合、それらについては、移動に失敗してしまいます。 さらに移動を行なったユーザー以外が所有するファイルについては、ファイルの所有者情報等も失われてしまいます。
ディレクトリを指定した移動ではなくファイルを指定した移動であれば、 メタデータの書き換えだけで済み、ファイル内容のコピーは発生せず高速ですので、 directory_quota_rename_error_exdev オプションを使うのではなく、 ソース側と同一のディレクトリ構造を宛先側でも作成し、 ディレクトリに含まれるファイルを指定して mv(1) で移動させる方法を推奨します。