ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

quotaの設定

 quotaは、ユーザに対してハードディスクの使用制限をするツールです。 ユーザごとに、使用容量やファイル数などを制限することができます。

quotaのインストール

 quotaが動作するために必要な環境を整え、quotaをインストールします。

 quotaを使用するには、システムパーテション以外のパーテションが必要です。
 システム用のパーテションにはquotaを使用できませんので、 あらかじめ、ユーザ領域などのquotaを使いたい領域は別パーテションにしておく必要があります。

カーネルの設定

 quotaを実行するにはカーネルがquotaをサポートしている必要があります。 サポートしていない場合はカーネルの再構築の必要があります。 カーネル再構築を参考にして下さい。
 もちろん、すでにquota supportが組み込まれている場合は再構築は不要です。

quotaのコンパイル

 quotaのソースをコンパイルしてインストールします。

Linux# cd /usr/local/src
Linux# zcat ../pub/quota-1_70_tar.gz |tar -xvf -
Linux# make
Linux# make install

quotaの動作設定

 quotaの設定方法です。インストールされたquotaを動作させる方法について解説します。

自動起動設定

 quotaが起動時に動作するように設定します。
 今回は、/etc/rc.d/rc.quotaを作り、/etc/rc.d/rc.localの最後に、それを動作させる設定を追加することにします。

Linux# cd /etc/rc.d
Linux# vi rc.quota
Linux# chmod 755 rc.quota
Linux# vi rc.local
rc.quotaの内容
#!/bin/sh
#
# Check quota and then turn quota on.
if [ -x /sbin/quotacheck ]
then
        echo "Checking quotas. This may take some time."
        /sbin/quotacheck -avug
        echo " Done."
fi

if [ -x /sbin/quotaon ]
then
        echo "Turning on quota."
        /sbin/quotaon -avug
fi
rc.localへの追加内容
if [ -x /etc/rc.d/rc.quota ]; then
  echo -n "Starting quota "
  /etc/rc.d/rc.quota start
  echo "."
fi

パーテションの準備

 quotaを使用したいパーテションの準備をします。
 /etc/fstabを修正します。

/etc/fstabの内容(修正前)
/dev/hda4       swap        swap        defaults   1   1
/dev/hda1       /        ext2        defaults   1   1
/dev/hda2       /var        ext2        defaults   1   1
/dev/hda3       /home        ext2        defaults   1   1
/dev/cdrom       /cdrom   iso9660   user,ro,noauto,exec 1   1
none             /proc    proc        defaults   1   1

 現在、fstabはこのようになっていて、ここでは、/home(/dev/hda3)でquotaを使用するとします。  この場合、/dev/hda3の行のdefaultの後ろに、usrquotaを追記します。

/etc/fstabの内容(修正後)
/dev/hda4       swap        swap        defaults   1   1
/dev/hda1       /        ext2        defaults   1   1
/dev/hda2       /var        ext2        defaults   1   1
/dev/hda3       /home        ext2        defaults,usrquota   1   1
/dev/cdrom       /cdrom   iso9660   user,ro,noauto,exec 1   1
none             /proc    proc        defaults   1   1

 ここで、システムパーテション(上記の例では/dev/hda1)にquotaを設定しようとすると、 システムが立ち上がらなくなるので注意しましょう。

記録ファイルの作成

 quotaが情報を記録するファイル、quota.userを作成します。
 quotaを使用するパーテションがマウントされている場所、今回は/homeに作ります。

Linux# touch /home/quota.user
Linux# chmod 600 /home/quota.user

 これらの設定が終了した段階でマシンを再起動します。

quotaの使用

ユーザに対するquotaの設定

 ここでは、hasimotoというユーザに対して制限をかけてみます。

Linux# edquota hasimoto

 edquotaコマンドを使うと、ユーザに対してquotaを設定できます。
 エディタが起動しますので、設定を書き直してください。

quota設定例
Quotas for user hasimoto:
/dev/hda3: blocks in use: 1, limits (soft = 10, hard = 15)
        inodes in use: 1, limits (soft = 3, hard = 4)

 blocksが容量の制限(単位はキロバイト)、inodesがファイル数の制限になります。 上記の例では動作実験のため、わざと設定値を小さくしてあります。
 制限にはsoft limitとhard limitの2種類があり、hard limitは絶対的な限界で、それ以上はディスクを使うことができません。 soft limitを超えてディスクを使うと警告され、Glace period(後述)の設定時間をこえるまでは、使用することができます。

Glace periodの設定

 soft limitの使用可能時間を設定します。

Linux# edquota -t

 edquotaコマンドに-tオプションをつけて実行することで、glace priodを設定することができます。 エディタが起動するので、設定を書き直します。

Glace period設定例
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda3: block grace period: 7 days, file grace period: 7 days

なお、時間の単位としては、sec(秒)、min(分)、hour(時間)、day(日)、week(週)、month(月)が使用できます。

quotaの状態確認

 現在のquotaの状態を確認します。

Linux# quotacheck -a
Linux# repquota -a
                        Block limits               File limits
User            used    soft    hard  grace    used  soft  hard  grace
root      --     302       0       0             25     0     0
joe       --      71       0       0             72     0     0
hasimoto  --       2      10      15              2     3     4

 また、各ユーザレベルで、quotaコマンドを実行することで、自分のディスク使用状態を知ることができます。

Linux# quota
Disk quotas for user hasimoto (uid 21002):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/hda3       2      10      15               2       3       4


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp