>> HOME >> FC5 MENU >> ユーザーやグループに対して使用できるディスク容量を制限する (quota)
quota というツールを使用してユーザーやグループに対して使用できるディスク容量を制限します。
※ quota はパーティション単位に容量制限をかけるため、特定のディレクトリに対して制限を掛ける場合は、そのディレクトリを別パーティションとして作成しておく必要があります。

通常はデータ領域として使うパーティションに制限を掛けますが、今回はホームディレクトリに容量制限を設定します。
※ 当サイトと同様に Fedora をインストールされた場合は、quota は既にインストールされています。

1. quota の有効化
1 ) ファイルシステム設定ファイル /etc/fstab の編集
2 ) ファイルシステム設定ファイル /etc/fstab の変更を反映
3 ) quota の設定ファイル作成
4 ) quota のチェックと起動
5 ) システムの再起動
6 ) quota の状態確認
2. ユーザーが使用できるディスク容量を制限する
1 ) 容量制限設定
2 ) 別ユーザーへの同設定の容量制限設定
3 ) ユーザーのディスク使用状況の確認
3. グループが使用できるディスク容量を制限する
1 ) 容量制限設定
4. 猶予期間の設定
1. quota の有効化
1 ) ファイルシステム設定ファイル /etc/fstab の編集
制限を掛けたいディレクトリのパーティションの行に、"usrquota" と "grpquota" を追加します。
"usrquota" が各ユーザーに対する quota の設定、"grpquota" が各グループに対する quota の設定です。
どちらか一方しか使用しないのであれば、使用する方だけを追加します。
[root@linux ~]# vi /etc/fstab 

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
# "usrquota" と "grpquota" を追加
/dev/VolGroup00/LogVol02 /home                   ext3    defaults,usrquota,grpquota        1 2
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
2 ) ファイルシステム設定ファイル /etc/fstab の変更を反映
ファイルシステム設定ファイル /etc/fstab の変更を反映させる為に、ファイルシステムを、アンマウントし、その後、再度マウントします。
サーバーの再起動でも構いません。
# ファイルシステムをアンマウント
[root@linux ~]# umount /home 

# ファイルシステムを再マウント
[root@linux ~]# mount /home 
3 ) quota の設定ファイル作成
同様に、どちらか一方しか使用しないのであれば、使用する方だけを作成します。
quota の設定を行っているそれぞれのマウントポイントのルート(/)に対して設定が必要です。/usr ディレクトリ配下にもユーザ制限を適用させたい場合は /usr/aquota.user という設定が必要になります。
# ユーザー用の設定ファイル作成
[root@linux ~]# touch /home/quota.user 
[root@linux ~]# chmod 600 /home/quota.user 

# グループ用の設定ファイル作成
[root@linux ~]# touch /home/quota.group 
[root@linux ~]# chmod 600 /home/quota.group 

# 作成確認
[root@linux ~]# la -l /home/quota.* 
-rw------- 1 root root 0  7月 29 01:03 /home/quota.group
-rw------- 1 root root 0  7月 29 01:03 /home/quota.user
4 ) quota のチェックと起動
quotacheck は、現在のディスク利用状況をチェックし "quota.user" "quota.group" を最新の状態に更新します。なお、ユーザーの容量制限しかしないのであれば、オプションは "-avu"、グループの容量制限しかしないのであれば、"-avg" となります。
[root@linux ~]# quotacheck -avugMf -F vfsv0 -a 
quotacheck: Scanning /dev/mapper/VolGroup00-LogVol02 [/home] done
quotacheck: Checked 3 directories and 6 files

[root@linux ~]# quotaon -avug -F vfsv0 
/dev/mapper/VolGroup00-LogVol02 [/home]: group quotas turned on
/dev/mapper/VolGroup00-LogVol02 [/home]: user quotas turned on
-a は quota が /etc/fstab で設定されている全領域に適用。
-v は処理の経過を表示、-u はユーザに対して適用。
-g はグループに対して適用。
-F はファイルシステム、ここでは vfsv0 を指定します。
5 ) システムの再起動
[root@linux ~]# shutdown -r now 

Broadcast message from root (pts/0) (Fri Jul 28 20:58:15 2006):

The system is going down for reboot NOW!
6 ) quota の状態確認
再起動後に quotaon コマンドに -p オプションをつけ、quota の状態 (つまり quota が有効か無効か) を表示し、以下のようになっていれば OK です。
[root@linux ~]# quotaon -avugp -F vfsv0 
group quota on /home (/dev/mapper/VolGroup00-LogVol02) is on
user quota on /home (/dev/mapper/VolGroup00-LogVol02) is on
2. ユーザーが使用できるディスク容量を制限する
1 ) 容量制限設定
例として、ユーザー user1 の使用できる容量を 100MByteに制限します。
[root@linux ~]# edquota -u user1 

Disk quotas for user user1 (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/VolGroup00/LogVol02         16     102400     102400         4         0        0

上記の 「soft」 と 「hard」 が、使用制限量となります。
「soft」 は、設定された大きさを超えると警告を発します
「hard」 は、設定された大きさを超えると書き込みができなくなります。
値の単位はキロバイトで指定します。
2 ) 別ユーザーへの同設定の容量制限設定
例として、ユーザー user2 の容量制限を ユーザー user1 と同じに設定します。
同じ制限値の場合は、ユーザー user1 の設定を ユーザー user2 へコピーすることができます。
[root@linux ~]# edquota -p user1 -u user2 
3 ) ユーザーのディスク使用状況の確認
[root@linux ~]# repquota -a 
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   35836       0       0              6     0     0
user1     --      16  102400  102400              4     0     0
user2     --      16  102400  102400              4     0     0
3. グループが使用できるディスク容量を制限する
グループの容量制限とは、各ユーザーが同じグループに所属し、ファイルの所有権はそのグループにあり、その総容量に対して制限を掛けるという方法です。

この方法では、容量を多く取るのは、そのグループ内での早い者勝ちとなります。つまり、100MByte の制限を掛けた場合、単純に考えると、2 人でアクセスする場合は、50MByte ずつと思われがちですが、ひとりが 80MByte を使用すると、もう一方の人は 20MByte しか使えないことになります。
これを避けるために、グループで制限を掛ける場合は、ユーザーでも制限を掛けることをお勧めします。

また、ユーザーの制限よりも、グループの制限の方が優先度が高いので、ユーザーよりもグループの制限値を少なく設定すると、グループの制限の方が優先されますので、注意が必要です。
1 ) 容量制限設定
ここでは、例としてグループ group1 の使用できる容量を 1GByteに制限します。
[root@linux ~]# edquota -g group1 
Disk quotas for group group1 (gid 501):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/VolGroup00/LogVol00         16    1048576    1048576          4        0        0

上記の 「soft」 と 「hard」 が、使用制限量となります。
「soft」 は、設定された大きさを超えると警告を発します
「hard」 は、設定された大きさを超えると書き込みができなくなります。
値の単位はキロバイトで指定します。
4. 猶予期間の設定
猶予期間を変更する事も可能です。この猶予期間は、設定された値を過ぎると [soft][hard]になります。
オーバーした容量は、ファイルを操作(Openなど)する度に削除されます。
デフォルトでは7日間(1週間)の猶予期間となっています。
設定できる単位は [days, hours, minutes, seconds] です。
[root@linux ~]# 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/VolGroup00/LogVol02      7days                  7days