[GFARM LOGO] 文書集 > ユーザーズマニュアル > ディレクトリクオータ機能

ディレクトリクオータ機能

English | 日本語

この文書は、Gfarm のディレクトリクオータ機能を説明します。

概要

制限事項

利用例

dirset-a と dirset-b の 2つのディレクトリセットを作成し、前者を 1GiB、後者を2GiBに利用制限する例です。
$ 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 オプションを使うと、ディレクトリセット名ではなくディレクトリ名を指定して、 利用量やクオータ制限値を確認することができます。
$ 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-b1
gfarmroot グループ権限がない場合、異なるディレクトリクオータをまたぐディレクトリの移動はエラーになります。
$ mkdir dir-a/dir
$ mv dir-a/dir dir-b1/
mv: cannot move `dir-a/dir' to `dir-b1/dir': Operation not supported
gfarmroot グループ権限がない場合、 空でないディレクトリをディレクトリセットへ追加しようとすると、エラーになります。
$ 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 の directory_quota_rename_error_exdev オプション

gfarm2fs 起動時に、-o directory_quota_rename_error_exdev オプションを 指定した場合、一般ユーザー権限でも mv(1) コマンドによって 異なるディレクトリクオータをまたぐディレクトリの移動ができるようになります。

しかしこの場合 mv(1) コマンドは移動を実現するのに、 ディレクトリの再帰的コピーと、ソース側ディレクトリの削除を用いますので、 そのディレクトリに含まれるファイル全てについて ネットワーク経由でいったんファイルシステムノードからクライアント側にコピーし、 さらにクライアントが同じ内容をファイルシステムノード側にコピーし直すことになり、 極めて低速な動作になります。 また、移動するディレクトリの配下に、アクセス不能なディレクトリや ファイルがあった場合、それらについては、移動に失敗してしまいます。 さらに移動を行なったユーザー以外が所有するファイルについては、ファイルの所有者情報等も失われてしまいます。

ディレクトリを指定した移動ではなくファイルを指定した移動であれば、 メタデータの書き換えだけで済み、ファイル内容のコピーは発生せず高速ですので、 directory_quota_rename_error_exdev オプションを使うのではなく、 ソース側と同一のディレクトリ構造を宛先側でも作成し、 ディレクトリに含まれるファイルを指定して mv(1) で移動させる方法を推奨します。

SEE ALSO

gfdirquota(1), gfedquota(1), gfquota(1), gfarm2.conf(5)
Gfarm File System <gfarmfs at gmail.com>