クォータを有効にするファイルシステムに対し、マウントオプションを追加します。ここでは、/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) |
クォータを設定するには、ユーザークォータの設定ファイルである 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/ |
クォータの設定ファイルは、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 制限値を越えてディスクを消費すると警告を発し、猶予期間に入ります。猶予期間中は 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 |
コンピュータを再起動すれば、クォータはシステム起動時に /etc/rc.sysinit スクリプトにより、自動的に有効になりますが、手動で有効にする場合は quotaon、無効にする場合は quotaoff コマンドを使用します。書式は以下の通りです。
quotaon [ -vug ] filesystem... quotaon [ -avug ] quotaoff [ -vug ] filesystem... quotaoff [ -avug ] |
オプションの意味は以下の通りです。
表 41-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 |
その他の代表的なクォータ関連コマンドとしては以下のものがあげられます。詳細については、man ページを参照してください。
ユーザーやグループのディスク使用状況を確認することができます。
# 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 |
ユーザーやグループのディスク使用量を調査するためにファイルシステムをスキャンし設定ファイルを最新の状態に更新します。システムの起動時に /etc/rc.sysinit により自動的に実行されますが、cron ジョブとして定期的に実行されるように設定しておくとよいでしょう。
指定されたファイルシステムのクォータ状況を集計しレポートとして表示します。ユーパーユーザーは、一般ユーザーのディスク使用状況を簡単に把握することができます。
# 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 |