38.2. クォータの設定と関連コマンド

38.2.1. /etc/fstab の修正

クォータを有効にするファイルシステムに対し、マウントオプションを追加します。ここでは、/dev/sdb1 にマウントされている /home パーティションにクォータの設定をするものとして解説します。

ユーザーに対してクォータを適用する場合は usrquota、グループに対してクォータを適用する場合は grpquota を /etc/fstab へ追記します。

例えば /home に、ユーザークォータ、グループクォータの両方を適用する場合は以下のように指定します。

/dev/sdb1       /home   ext3    defaults,usrquota,grpquota     1 2

ユーザークォータのみ適用するには usrquota を、グループクォータのみ適用するには grpquota だけを指定します。

/etc/fstab の修正を終えたら、コンピュータを再起動するか、以下のコマンドを実行しファイルシステムをリマウントします。

# mount -o remount /dev/sdb1

次に、mount コマンドを実行して usrquota や usrquota の文字列が表示されることを確認してください。

# mount
/dev/sda3 on / type ext3 (rw)
none on /proc type proc (rw)
usbfs on /proc/bus/usb type usbfs (rw)
sysfs on /sys type sysfs (rw)
/dev/sda1 on /boot type ext2 (rw)
/dev/sdb1 on /home type ext3 (rw,usrquota,grpquota)
none on /dev/pts type devpts (rw,gid=5,mode=620)

38.2.2. aquota.user、aquota.groupファイルの作成

クォータを設定するには、ユーザークォータの設定ファイルである aquota.user とグループクォータの設定ファイルである aqouta.group を事前に作成する必要があります。

aquota.user ファイルを作成するには以下のコマンドを実行します。

# quotacheck -u /home

aquota.group ファイルを作成するには以下のコマンドを実行します。

# quotacheck -g /home

クォータ関連のコマンドはオプション -u をつけるとユーザークォータを意味し、オプション -g をつけるとグループクォータを意味します。どちらもつけない場合はユーザークォータとみなします。

コマンドを実行すると、クォータを有効にするファイルシステムのルート(この例では、/home)にこれらのファイルが作成されます。

# ls -l /home
total 52
-rw-------  1 root  root   7168 Aug 27 14:45 aquota.group
-rw-------  1 root  root   7168 Aug 27 14:45 aquota.user
drwx------  4 koba  koba   4096 Aug 27 14:36 koba/
drwx------  2 root  root  16384 Aug 27 14:23 lost+found/
drwx------  4 rika  rika   4096 Aug 27 14:37 rika/
drwx------  4 syuki syuki  4096 Aug 27 14:38 syuki/
drwx------  4 taro  taro   4096 Aug 27 14:36 taro/
drwx------  4 toshi toshi  4096 Aug 27 14:37 toshi/

38.2.3. edquota での編集

クォータの設定ファイルは、vi などのエディタで直接編集するのではなく、edquota コマンドを使用して編集します。操作方法は vi と同じです。

例えば、ユーザー taro のクォータ設定を行うには以下のコマンドを実行します。

# edquota -u taro

グループ doc のクォータ設定を行うには次のコマンドを実行します。

# edquota -g doc

ここでは、ユーザー taro のユーザークォータ設定を行います。

エディタが起動し、以下のように表示されます。

Disk quotas for user taro (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                        84          0          0         22        0        0

blocks は、ユーザーがそのパーティション上で既に消費しているブロック数を示しています。inodes は現在使用している i ノード数です。それに続く soft と hard にはブロック数と i ノード数に対する制限値を指定します。また、それらの制限には hard と soft の 2種類があります。

soft 制限

ユーザーが soft 制限値を越えてディスクを消費すると警告を発し、猶予期間に入ります。猶予期間中は hard 制限値を越えるまでディスクに書き込めますが、猶予期間を過ぎると hard 制限値を越えていなくても書き込むことができなくなります。猶予期間を設定しない場合は、この値がディスクの使用制限値になります。

hard 制限

いかなる場合もユーザーは、hard 制限値を越えてディスクを消費することはできません。猶予期間が 0 でないときのみ指定します。

以下の例では、ユーザー taro はブロック数 9000 、i ノード数 9000 を越えてディスクを消費すると猶予期間に入り、猶予期間内であればブロック数 10000、i ノード数 10000 までは書き込むことができます。

Disk quotas for user taro (uid501):
  Filesustem                 blocks          soft          hard          inodes          soft          hard
  /dev/hda2                       0          9000         10000               0          5000          6000

ユーザークォータの猶予期間を設定するには以下のコマンドを実行します。

# edquota -u -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
                                7 days                       7 days

Block grace period はブロック数に対する猶予期間、Inode grace period は i ノードに対する猶予期間を表し、単位は、日(days)、時間(hours)、分(minutes)、秒(seconds)が使用できます。

上記の例では、ユーザー taro はブロック数 9000、i ノード数 5000 を越えてディスクを消費すると、7 日後にはディスクにアクセスできなくなります。ブロック数 10000、iノード数 6000 を越えてディスクを消費すると直ちにディスクにアクセスできなくなります。

また、クォータをかけるユーザーが 100 人いる場合、1 ユーザーごとに edquota -u で設定するのは手間がかかります。同じ設定であれば既に設定したユーザーの内容をコピーすることができます。ユーザー jiro 、ichiro にもユーザー taro と同じ制限を適用させるには以下のようにコマンドを実行します。

# edquota -p taro jiro ichiro

38.2.4. クォータを有効にする

コンピュータを再起動すれば、クォータはシステム起動時に /etc/rc.sysinit スクリプトにより、自動的に有効になりますが、手動で有効にする場合は quotaon、無効にする場合は quotaoff コマンドを使用します。書式は以下の通りです。

quotaon [ -vug ] filesystem...
quotaon [ -avug ]
quotaoff [ -vug ] filesystem...
quotaoff [ -avug ]

オプションの意味は以下の通りです。

表 38-1. Quota - quotaon、quotaoff

a/etc/fstab でクォータの指定がされているファイルシステムのクォータを有効にします。
vクォータの有効時にメッセージを表示します。
uユーザークォータを有効にする場合に指定します。
gユーザークォータを有効にする場合に指定します。

したがって、ユーザークォータを有効にするのであれば、以下のように実行します。

# quotaon -avu
/dev/sdb1 [/home]: user quotas turned on

無効にする場合は、以下のように実行します。

# quotaoff -avu
/dev/sdb1 [/home]: user quotas turned off

38.2.5. クォータ関連コマンド

その他の代表的なクォータ関連コマンドとしては以下のものがあげられます。詳細については、man ページを参照してください。

quota

ユーザーやグループのディスク使用状況を確認することができます。

# quota taro koba
Disk quotas for user taro (uid 500):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1      88    9000   10000              23    5000    6000
Disk quotas for user koba (uid 501): none

一般ユーザーが実行した場合は、自分の情報のみ出力されます。

$ quota
Disk quotas for user taro (uid 500):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1      84    9000   10000              23    5000    6000

$ quota -g
Disk quotas for group taro (gid 500): none
quotacheck

ユーザーやグループのディスク使用量を調査するためにファイルシステムをスキャンし設定ファイルを最新の状態に更新します。システムの起動時に /etc/rc.sysinit により自動的に実行されます。

repquota

指定されたファイルシステムのクォータ状況を集計しレポートとして表示します。ユーパーユーザーは、一般ユーザーのディスク使用状況を簡単に把握することができます。

# repquota -agu
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   32828       0       0              3     0     0
taro      --      84    9000   10000             23  5000  6000
koba      --      88       0       0             23     0     0
rika      --      84       0       0             22     0     0
toshi     --      84       0       0             22     0     0
syuki     --      84       0       0             22     0     0
jiro      --      84    9000   10000             22  5000  6000
ichiro    --      84    9000   10000             22  5000  6000


*** Report for group quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   32828       0       0              3     0     0
taro      --      84       0       0             23     0     0
koba      --      88       0       0             23     0     0
rika      --      84       0       0             22     0     0
toshi     --      84       0       0             22     0     0
syuki     --      84       0       0             22     0     0
jiro      --      84       0       0             22     0     0
ichiro    --      84       0       0             22     0     0