uquota / ユーザquota
gquota / グループquota
pquota / プロジェクトquota
linuxの通常のquotaではディレクトリ単位の制限ができないけど、xfsのpquotaを使えば可能
設定ファイル
- /etc/fstab
設定したいquota方法をoptionに書いて(re)mount
/dev/sdb1 /data xfs pquota 0 0
- /etc/projects
id(数字):/path/to/project_name
- /etc/projid
project_name:id(数字)
わかりやすくするならproject_nameとディレクトリ名はあわせたほうが良いかも。
コマンド
多くのコマンドに共通のオプション
- -u user quota
- -g group quota
- -p project quota
- -i inode
- -b block
確認
- xfs_quota -x -c state
- xfs_quota -x -c 'df -h'
- xfs_quota -x -c 'report -h'
設定
xfs_quota -x でexpert modeになってhelpみたらだいたいわかる。
- limit
- isoft / ihard inode (isoft, ihardには10g 100k などのsuffixは使えない)
- bsoft / bhard 容量
redhatのdocument読むと現時点ではリアルタイム rtbsoft/rtbhard はサブボリュームには設定不可能とのこと。
ddしながら見てるとbsoft/bhardは確かに数秒ほどタイムラグがあった。
(diskにflushしたら使用容量に計算される?)
- ex: project user1にsoftlimit 100G、hard limit 110G設定する
redhatのpageがproject -s とやっているのでその通りにやったが、
help project みても-sの説明が載っていない。。。
## 追記: helpに書いてた
project [-c|-s|-C] project ... -- check, setup or clear project quota trees
## 追記終わり
mkdir /path/to/user1 xfs_quota -x -c 'project -s user1' xfs_quota -x -c 'limit -p bsoft=100g bhard=110g user1'
- timer (soft limit超過後の猶予期間)
xfs_quota -x -c 'timer -p -b 1hours'
時間の指定: minutes (m), hours (h), days (d), or weeks (w)
追記 1プロジェクトで複数ディレクトリの管理
冒頭ではわかりやすさのために"わかりやすくするならproject_nameとディレクトリ名はあわせたほうが良いかも"と書いたけど、本来xfs のproject quotaはディレクトリを跨った管理を行うことも可能。
ディレクトリー単位またはプロジェクト単位で管理を行う場合、XFS は特定のプロジェクトに関連付けられたディレクトリー階層のディスク使用量を管理します。これにより、XFS は複数のプロジェクト間にある組織をまたがった「グループ」の境界を認識します。
- /etc/projid
test:10
- /etc/projects
10:/path/to/test1 10:/path/to/test2
また特定のプロジェクトの下に別のプロジェクトのディレクトリを作成することも可能
/etc/projid
test:10 hoge:11
/etc/projects
10:/path/to/test 11:/path/to/test/hoge
この場合、testの下のhoge 以外のファイル、ディレクトリ
/path/to/test/1
/path/to/test/2
/path/to/test/foo/
などはtestプロジェクトとしてquota管理
/path/to/test/hoge
はhogeプロジェクトとしてquota管理される