How to build Internet Server with Linux

last update: 29 Sep 2004

home |index |previous |next |contents

quotaのインストールと運用



"quota"は各ユーザのハードディスク使用量を制限するためのツールです。 たとえばメールサーバなどで各ユーザ毎のディスク使用量やファイル数を制限することができます。

なお、ルートディレクトリ:/のあるパーティションにはquotaを使用できません。 ですから、システムをインストールする時に将来的な使用条件を十分に考慮して パーティション分けしておかなければなりません。
例えばmailサーバの場合、ディレクトリ/var以下にユーザのメールを保存する事が多いので、 あらかじめ/varをシステムとは別のパーティションにしておくと良いでしょう。
httpサーバ、ftpサーバなども同様です。

8.1 ソフトの入手
一元配布先は不明ですが、 各種ディストリビューションのソースとして配布されています。 例えば:

http://metalab.unc.edu/pub/Linux/distributions/slackware/source/ap/quota/

8.2 インストールと設定

    8.2.1 カーネルの再構築

    quotaを使うにはカーネルパラメータCONFIG_QUOTAを有効にしてカーネルを 再構築する必要があります。
    CONFIG_QUOTA=y
         

    8.2.2 インストール

    ファイルを展開するディレクトリ$Workに移動して、バイナリパッケージを展開します。 今回は作業ディレクトリ$Workを/usr/local/srcとします。

    展開が終ったらディレクトリ./quotaに移動し、 "make"と"make install"を行ないます。

      % cd /usr/local/src
      % gzip -cd quota-1_70_tar.gz |tar xvf -
      % cd quota
      % make
      % make install

    8.2.3 起動スクリプト

    マシンの起動時にquotaを起動するようにquotaの起動スクリプトを書きます。 ここではquotaの起動コマンドを/etc/rc.d/rc.localへ追加することにします。
    if [ -x /sbin/quotacheck ]
    then
            /sbin/quotacheck -avug
    fi
    
    if [ -x /sbin/quotaon ]
    then
            /sbin/quotaon -avug
    fi
    

    /etc/rc.d/rc.localへの追加部分


    8.2.4 /etc/fstabの変更

    次に、quotaを使用するパーティションを指定するために、 /etc/fstabに変更を加えます。
    今回は2つのパーティション: >
  1. /dev/hda2 = /var
  2. /dev/hda6 = /home
にquotaを設定します。 この場合には御覧のように、/dev/hda2と/dev/hda6の設定項目に"usrquota"と付け加えます。
/dev/hda1       swap        swap        defaults   0   0
/dev/hda3       /           ext2        defaults   1   1
/dev/hda2       /var        ext2        defaults,usrquota   1   1
/dev/hda5       /pub        ext2        defaults   1   1
/dev/hda6       /home       ext2        defaults,usrquota   1   1
/dev/hda7       /works      ext2        defaults   1   1
/dev/hda8       /backup     ext2        defaults   1   1
none             /proc      proc        defaults   0   0

/etc/fstabの変更箇所


8.2.5 記録ファイルの生成

次にquotaがディスクの使用状態を記録するために使用する記録ファイルquota.userを 作成します。
このファイルはquotaを設定するディレクトリ(=パーティション)毎に作成します。
今回はパーティション:/dev/hda2 (=/var)と/dev/hda6 (=/home) にquotaを設定しますので、 ディレクトリ/varと/home以下に記録ファイルquota.userを作成します。
% cd /var
% touch quota.user
% chmod 600 quota.user
% cd /home
% touch quota.user
% chmod 600 quota.user
     

ここで一度マシンをリブートします。
8.3 運用

    8.3.1 quotaの設定

      8.3.1.1 各ユーザ毎のquotaの設定

      各ユーザ毎のquotaの設定するには"edquota"コマンドを使います。 ここでは"foo"というユーザに対してquotaの設定を行ないます。

        % edquota foo

      ここでエディタが起動されますので、編集します。
      :注 ここで起動するエディタは環境変数EDITERに設定されているもの、例えばvi、です。

      ここでblock(s)とinode(s)、limitsのsoftとhardについて説明します。

      雑ないい方をすれば、block(s)とはディスクの記憶容量の単位で、ディスクのフォーマット時に定めます。 私のシステムでは1 blockが1024[byte] = 1 [Kbyte]です。
      inodeはもともとUnix系OSでのファイルシステム管理用構造体の名称で、 1ファイルに1 inodeが対応します。つまりinodeの制限はファイル数の制限です。

      soft limitsは一時的にはその制限を越えることが許され、 hard limitsはその制限を越えることができません。 ここで「一時的」というのは後に示す"Grace period"で設定される時間内のことです。

      以下の例では、ユーザfooは/dev/hda2において、 1000 [blocks] = 1 [Mbyte]のソフト制限と1500 [blocks] = 1.5 [Mbyte]のハード制限があり、 且つ300 ファイルまでのソフト制限と400ファイルまでのハード制限が課せられています。
      /dev/hda6も同様です。

      Quotas for user foo:
      /dev/hda2: blocks in use: 0, limits (soft = 1000, hard = 1500)
              inodes in use: 1, limits (soft = 300, hard = 400)
      /dev/hda6: blocks in use: 541, limits (soft = 10000, hard = 15000)
              inodes in use: 1, limits (soft = 3000, hard = 4000)
      

      quotaの設定例


      8.3.1.2 Grace Periodの設定

      Grace Periodを設定するには"edquota -t"コマンドを使います。

        % edquota -t

      Time units may be: days, hours, minutes, or seconds
      Grace period before enforcing soft limits for users:
      /dev/hda2: block grace period: 7 days, file grace period: 7 days
      /dev/hda6: block grace period: 7 days, file grace period: 7 days
      

      Grace Periodの設定例


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

    8.3.2 quotaの状態確認

      8.3.2.1 rootがシステムのquotaの状態を確認

      システムのquotaの状態を確認するには、まず"quotacheck"コマンドでディスクの使用状況を検査し、 "repquota"コマンドで結果を出力します。 以下に例を示します。
      ここでは上段に/dev/hda2、下段に/dev/hda6の状態が示されています。

      % quotacheck -a
      % repquota -a
                              Block limits               File limits
      User            used    soft    hard  grace    used  soft  hard  grace
      root      --    9776       0       0           1157     0     0       
      daemon    --       2       0       0              3     0     0       
      nobody    --     589       0       0              2     0     0       
      
                              Block limits               File limits
      User            used    soft    hard  grace    used  soft  hard  grace
      root      --   82765       0       0           5443     0     0       
      hironobu  --   12582       0       0           1507     0     0       
      foo       +-     541   10000   15000   none      12  3000  4000       
           

      8.3.2.2 一般ユーザが自身のquotaの状態を確認

      各ユーザも自身のターミナルからコマンド"quota"を使って、 自身のディスクの使用状態や制限状態をみることができます。

      % quota
      Filesystem	blocks	quota	limit	grace	files	quota	limit	grace
      /dev/hda6	541	10000	15000	none	12	3000	4000	
           


home |index |previous |next |contents


since 04/Oct/2004