Fedora資料一覧

quotaの設定

2008/11/18更新

対応バージョン: 9

quotaを使うには以下の手順で行う。

quotaオプション付でファイルシステムをマウント

/etc/fstabにてquotaを使いたいファイルシステムにquotaオプションを付ける。

制限をかけたい方法によって以下のオプションを指定する。

ユーザで制限をかける(ユーザquota)

usrquota

グループで制限をかける(グループquota)

grpquota

ユーザ/グループ両方で制限をかける

usrquota,grpquota

ここではユーザquotaを設定するものとして説明する。

例)

/dev/sdb2 /test     ext3    defaults,usrquota 1 2

quotaオプション有効化

該当のファイルシステムがアンマウント可能ならいったんアンマウントしてマウントし直す。

例)

% sudo umount /test
% sudo mount /test

アンマウント不可能ならマシンをリブートする。

以降、quota関連コマンドにて各種設定を行うが、グループquotaの場合はコマンドオプションのuのところがgに変わるだけでパラメータなどは基本的に同じである。

quota情報記録ファイル作成

% sudo quotacheck -au
% ls -l /test/aquota.user
-rw------- 1 root root     7168 2008-11-18 00:05 aquota.user

グループquotaの場合はaquota.groupが作成される。

quota関連コマンドのオプションは主に以下のものを使用する。

-a

設定対象が全て

-u

ユーザquotaの設定

-g

グループquotaの設定

-p

状態を表示する

-v

詳細表示モード

ユーザquota設定

% sudo edquota -u foo
Disk quotas for user foo (uid 900):
  Filesystem  blocks   soft   hard  inodes  soft  hard
  /dev/sdb2        0      0      0       0     0     0

soft(ソフトリミット)とhard(ハードリミット)に使用制限を指定する。

blocksの右のsoft/hardはファイルサイズに対する設定(単位はKB)、inodesの右のsoft/hardはファイル数に対する設定である。0を指定すると無制限になる。

またblocksとinodesはそれぞれ現在使用しているファイルサイズとi-nodeの合計である。

softで設定したサイズを使いきると一定の猶予期間(後述)の間はhardで設定したサイズまで書き込める。猶予期間が過ぎるか、猶予期間内でもhardで設定したサイズに達するとそれ以上書き込みができなくなる。

例) soft=10MB、hard=40MBの場合

  Filesystem  blocks   soft   hard  inodes  soft  hard
  /dev/sdb2        0  10240  40960       0     0     0

既存のquotaの設定をコピーするにはedquotaの-pオプションを使用するとよい。

例) fooのquota設定をbarにコピーする

% sudo edquota -p foo bar

quota有効

% sudo quotaon -auv
/dev/sdb2 [/test]: user quotas turned on

状態を確認するとユーザquotaだけが有効になっているのが分かる。

% sudo quotaon -p /test
group quota on /test (/dev/sdb2) is off
user quota on /test (/dev/sdb2) is on

また、repquotaで現在の設定状況が確認できる。

% sudo repquota -a
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
                   Block limits                File limits
User        used   soft    hard  grace   used  soft  hard  grace
----------------------------------------------------------------
root  --  192000      0       0             4     0     0       

現状ではrootだけが当該ファイルシステムを使っているのが分かる。

ここでfooユーザで20MBのファイルを作ってみる。

% dd if=/dev/zero of=a bs=1M count=20

するとrepquotaで以下のようになり、fooユーザのソフトリミットを越えたために2カラム目が「+-」になっているのが分かる。

% sudo repquota -a
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
                   Block limits                File limits
User        used   soft    hard  grace   used  soft  hard  grace
----------------------------------------------------------------
root  --  192000      0       0             4     0     0
foo   +-   20504  10240   40960  7days      1     0     0       

さらに20MBのファイルを作ろうとするとハードリミットに達して途中までしかファイルが作成されない。

% dd if=/dev/zero of=b bs=1M count=20
dd: writing `b': ディスク使用量制限を超過しました
20+0 records in
19+0 records out
20922368 bytes (21 MB) copied, 0.160903 s, 130 MB/s

またrepquotaの結果は以下のようになる。

% sudo repquota -a
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
                   Block limits                File limits
User        used   soft    hard  grace   used  soft  hard  grace
----------------------------------------------------------------
root  --  192000      0       0             4     0     0
foo   +-   40960  10240   40960  6days      2     0     0       

猶予期間の設定

猶予期間とはソフトリミットが強制的に実行されるまでの期間であり、この期間を過ぎるとソフトリミットを越えたファイル作成ができなくなる。

この期間はデフォルトで7日間に設定されており、変更するにはedquotaの-tオプションを使用する。

単位にはseconds(秒)、minutes(分)、hours(時)、days(日)が使用できる。

% sudo edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem   Block grace period   Inode grace period
  /dev/sdb2                 7days                7days