レンタルサーバ + Webシステム開発 = E-business

■レンタルサーバご利用参考資料
サーバご利用の参考にJF Project によるJF (Japanese FAQ)を掲載しています。

Linux JF(Japanese FAQ)Project.
JF は, Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです.

グリーンネット・トップページへ戻る


一覧に戻る
Quota mini-HOWTO

Albert M.C. Tam

bertie@scn.org

JF Project - 日本語訳

v0.0, 8 August 1997

まえがき:この文書は、Albert M.C. Tam (bertie@scn.org) が「コピーレフト
」しています。非商用目的に限り、利用・複製・頒布を許可しますが、その際
は、著者および編集者の氏名とこの利用許諾条項がすべての複製および付属文
書に表示されること、文書に改変を加えないことが条件となります。この文書
は、読者の役に立つことを願って配布されていますが、明示的・黙示的な如何
なる保証も伴いません。正確な情報を記載するよう出来る限りの努力をしてい
ますが、著者・編集者・文書管理者は、この文書の誤謬や文書内の情報によっ
て生じた損害について、如何なる責任も負いません。

この文書は、Linux ホスト上でファイルシステムの容量制限(quota)を有効にす
る方法、ユーザやグループに容量制限をかける方法、および種々の quota コマ
ンドの使い方について解説するものです。kernel 2.x を使っているユーザを対
象としています (RedHat 4.1 で kernel 2.0.27 を走らせているマシン上で最
新のテストを行いました)。それよりも古い kernel を使っているユーザは、
kernel のバージョンを上げなければ、quota の新しい機能が使えないかもしれ
ません。間違いや情報の欠落があれば、遠慮なく bertie@scn.org までフィー
ドバックやコメントを送ってください。よろしくお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table of Contents
1. quota とは?
2. Linux における quota の現状
3. Linux 上で quota を使うための動作環境
   
    3.1. Kernel
    3.2. quota ソフトウェア
   
4. quota の設定 - パート1:基本設定
   
    4.1. カーネルの再構築
    4.2. quota ソフトウェアのコンパイルとインストール
    4.3. システムの init スクリプトを編集し、起動時に quota をチェック
        し、quota をオンにする
    4.4. /etc/fstab の編集
    4.5. quota 記録ファイル "quota.user" と "quota.group" を作成する
    4.6. リブート
   
5. quota の設定 - パート2:ユーザとグループに quota を割り当てる
   
    5.1. 特定のユーザに quota を割り当てる
    5.2. 特定のグループに quota を割り当てる
    5.3. 同じ値を一連のユーザに割り当てる
    5.4. ソフトリミット
    5.5. ハードリミット
    5.6. 猶予期間
   
6. 種々の quota コマンド
   
    6.1. quotacheck
    6.2. repquota
    6.3. quotaon と quotaoff
   
7. 日本語訳について

1. quota とは?

quota とは、ふたつの側面からディスクストレージの利用に一定の制限を課す
ものです。すなわち、quota を使うと、個々のユーザやユーザグループに対し
て、消費できる inode 数を限定し、利用可能なディスクブロック数を制限する
ことができます。

言い換えると、ユーザがシステム上のディスクスペースを際限なく使うことが
出来ないようにして、ユーザのディスク消費量を一定限度以下に保つというの
が、 quota の背後にある考え方です。quota の設定は、ユーザごと、ファイル
システムごとに行われます。それゆえ、複数のファイルシステムにまたがって
ユーザがファイルを作成できるようになっている場合、個々のファイルシステ
ムに対して個別に quota を設定する必要があります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. Linux における quota の現状

quota のサポートは、kernel v1.3.8x のときから kernel に組み込まれている
そうです。今日では、Linux kernel のリリース 2.0 の一部となっています。
読者のシステムの kernel が quota をサポートしていないなら、kernel のア
ップグレードをおすすめします。

現在、quota は、ext2 ファイルシステムでしか動作しません。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3. Linux 上で quota を使うための動作環境

3.1. Kernel

2.x kernel ソースは、次のサイトで入手できます。

http://sunsite.unc.edu/pub/Linux/kernel/v2.0/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3.2. quota ソフトウェア

Linux ディストリビューションによって、quota ソフトウェアは読者のシステ
ムにインストールされたり、されなかったりします。インストールされていな
い場合は、次の場所から quota ソフトウェアをダウンロードしてください。

ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

(訳注:最近のディストリビューションをお使いの場合、quota 関係のソフトウ
ェアは既にインストールされている場合が多いと思われます。なにぶん古い文
書 (1997年8月) の翻訳なので、このあたりはご容赦ください。次章の一章から
三章についても、不要な場合があるかもしれません。)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4. quota の設定 - パート1:基本設定

4.1. カーネルの再構築

カーネル再構築の際に quota support で y とタイプして、quota を有効にし
ます。

  Quota support (CONFIG_QUOTA) [n] y                                   

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.2. quota ソフトウェアのコンパイルとインストール

quota ソフトウェアは、以下で入手できます。

ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.3. システムの init スクリプトを編集し、起動時に quota をチェックし、
quota をオンにする

以下が、その設定例です。

  # Check quota and then turn quota on.                                
  if [ -x /usr/sbin/quotacheck ]                                       
          then                                                         
                 echo "Checking quotas. This may take some time."      
                 /usr/sbin/quotacheck -avug                            
                 echo " Done."                                         
          fi                                                           
           if [ -x /usr/sbin/quotaon ]                                 
          then                                                         
                  echo "Turning on quota."                             
                  /usr/sbin/quotaon -avug                              
          fi                                                           

 

編集の際には、重要なルールがあります。quota は、/etc/fstab に記載された
ファイルシステムがすべてマウントされてから、起動すべし、ということです
。でないと、quota は有効になりません。システムの init スクリプトの最後
の部分で quota を起動するか、もしくは、ファイルシステムがマウントされる
箇所の直後で quota を起動することをおすすめします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.4. /etc/fstab の編集

パーティション上で quota の設定をまだ有効にしていない場合、/etc/fstab
は次のようになっていると思います。

  /dev/hda1       /       ext2    defaults        1       1            
  /dev/hda2       /usr    ext2    defaults        1       1            

 

ファイルシステム上でユーザ quota を有効にするには、"defaults" という単
語が書かれている 4 つめのフィールドに "userquota" と付け加えます (詳細
は、fstab のマニュアルページをご覧ください)。

  /dev/hda1       /       ext2    defaults        1       1            
  /dev/hda2       /usr    ext2    defaults,usrquota       1       1    

 

グループ quota を有効にする場合には、"userquota" を "grpquota" に置き換
えてください。

  /dev/hda1       /       ext2    defaults        1       1            
  /dev/hda2       /usr    ext2    defaults,grpquota       1       1    

 

ユーザ quota とグループ quota の両方を有効にする場合は、次のようになり
ます。

  /dev/hda1       /       ext2    defaults        1       1             
  /dev/hda2       /usr    ext2    defaults,usrquota,grpquota       1   1

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.5. quota 記録ファイル "quota.user" と "quota.group" を作成する

quota.user と quota.group という quota 記録ファイル (quota record file)
は、両方とも root をファイル所有者とし、root だけに read-write パーミッ
ションを設定した上で、それ以外のユーザはいっさい読み書き実行できないよ
うにします。

まず、root でログインします。そして、quota を有効にしたいパーティション
のルートディレクトリに移動し、quota.user と quota.group を次のように作
成します。

  touch /partition/quota.user                                          
  touch /partition/quota.group                                         
  chmod 600 /partition/quota.user                                      
  chmod 600 /partition/quota.group                                     

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.6. リブート

以上でリブートして、これまで行った設定を有効にします。

これ以降、quota を有効にしたいパーティションが出てきた場合、必要な設定
は上記手順の 4, 5, 6 だけとなります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5. quota の設定 - パート2:ユーザとグループに quota を割り当てる

quota の割り当てには、edquota コマンドを使います (詳細は、edquota コマ
ンドのマニュアルページをご覧下さい)。

著者は、普段、quota の編集をする前に、quotacheck を -avug フラグを付け
て実行し、ファイルシステムの最新の利用状況を見るようにしています。ただ
、これは個人的な習慣にすぎないので、必須ではありません。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.1. 特定のユーザに quota を割り当てる

以下に例題を示します。ここでは、システム上に bob というログイン id を持
ったユーザがいるとします。"edquota -u bob" というコマンドを実行すると
vi (もしくは、環境変数 $EDITOR で指定されたエディタ) が開きます。そこに
、quota 設定が可能な個々のパーティションそれぞれについての、ユーザ bob
の quota を記述します。

  Quotas for user bob:                                                 
  /dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500)    
             inodes in use: 356, limits (soft = 1000, hard = 1500)     

 

上記の "blocks in use" というのは、そのユーザがそのパーティション上で既
に消費しているブロックの総数を示しています。

"inodes in use" というのは、そのユーザがそのパーティション上に保持する
ファイルの総数を示しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.2. 特定のグループに quota を割り当てる

次は、システム上に games というグループがいたとします。"edquota -u
games" というコマンドを実行すると、再度 vi エディタが開くので、そこにグ
ループ games の quota を記述します。

  Quotas for group games:                                              
  /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)   
             inodes in use: 1454, limits (soft = 3000, hard = 4000)    

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.3. 同じ値を一連のユーザに割り当てる

例えばシステム上の 100 人のユーザに対して、ユーザ bob と同じ値の quota
をすばやく割り当てるようとする場合、著者なら、まず bob の quota 情報を
手動で入力してから、次のコマンドを実行します。

  edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`           

 

上記コマンドは、csh を使っていること、および一連のユーザのユーザ ID が
500 番から始まっていることが前提になっています。

edquota コマンド以外にも、知っていなければならない用語が 3 つあります。
ソフトリミット (Soft Limit)、ハードリミット (Hard Limit)、猶予期間
(Grace Period) です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.4. ソフトリミット

ソフトリミット (Soft Limit) とは、quota のユーザがそのパーティション上
で占めることができる最大ディスク容量を示すものです。猶予期間 (grace
period) と組み合わせることで、ソフトリミットは、ユーザに対するボーダー
ラインとして機能します。すなわち、そのボーダーを越えた時点で、ユーザに
対して、現在 quota 制限違反となっている旨の警告が発せられます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.5. ハードリミット

ハードリミット (Hard Limit) は、猶予期間 (grace period) の経過中にのみ
機能します。これは、ディスク使用量の絶対的な制限であり、quota のユーザ
はこのハードリミットを決して越えることはできません。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.6. 猶予期間

猶予期間 (grace period) とは、制限時間のことであり、これを越えると、
quota を有効にしたファイルシステム上で、ソフトリミットが強制的に実行さ
れます。これは、コマンド "edquota -t" を使って設定するようになっていて
、時間間隔としては、秒(sec)、分(min)、時(hour)、日(day)、週(week)、月
(month) が使えます。以下に、コマンド "edquota -t" を使った際に表示され
る画面を示します。

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

 

上記の 0 days の部分を適当な間隔に置き換えてください。著者は、個人的に
7 days (もしくは 1 week) を選ぶようにしています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6. 種々の quota コマンド

6.1. quotacheck

quotacheck は、あるファイルシステムのディスク利用状況をスキャンし、
quota 記録ファイルである quota.user を最新の状態に更新する際に使用しま
す。システム起動時に quotacheck を走らせるか、cron ジョブとして定期的に
実行する (例えば、毎週とか) ことをおすすめします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.2. repquota

repquota は、あるファイルシステムに関する quota 情報を集計表示するもの
です。以下は、repquota のサンプル出力です。

  # repquota -a                                                                 
                                Block limits               File limits          
        User            used    soft    hard  grace    used  soft  hard  grace  
        root      --  175419       0       0          14679     0     0         
        bin       --   18000       0       0            735     0     0         
        uucp      --     729       0       0             23     0     0         
        man       --      57       0       0             10     0     0         
        user1     --   13046   15360   19200            806  1500  2250         
        user2     --    2838    5120    6400            377  1000  1500         

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.3. quotaon と quotaoff

quotaon は、quota 機能をオンにするもので、quotaoff はそれをオフにするも
のです。実際には、両方のコマンドファイルは非常に似通っています。これら
は、システムの起動時と終了時に実行されます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

7. 日本語訳について

日本語訳についてのお問い合わせは、 morioka@i.h.kyoto-u.ac.jp に送ってい
ただきたい。

日本語訳の作成にあたり Linux-JF プロジェクトの以下の方々から多くの助言
をいただきました。ありがとうございました。

荒木さん     yasu@mizuno.riec.tohoku.ac.jp                    
伊藤さん     nozomi@biol.tsukuba.ac.jp                        
小野さん     ono@jf.gee.kyoto-u.ac.jp                         
小島さん     isle@st.rim.or.jp/kojima@criepi.denken.or.jp     
小林さん     daihei@hucom.co.jp                               
sugawaraさん hiro@lynx.com                                    
dezawaさん   dezawa@miya.fujifilm.co.jp                       
中谷さん     jeanne@mbox.kyoto-inet.or.jp                     
中野さん     nakano@apm.seikei.ac.jp/pfg03175@niftyserve.or.jp
吉山さん     yosshy@jedi.seg.kobe-u.ac.jp                     

訳: 守岡太郎                 morioka@i.h.kyoto-u.ac.jp/               
                              t-morioka@nri.co.jp                      
     1997.01.13(月) 18:14:43                                           
     JST                                                               

更新: 千旦裕司     ysendda@pop01.odn.ne.jp (2001/09/15)
校正: 幸田あきひこ coda@post.kek.jp                    

一覧に戻る
グリーンネット・トップページへ戻る

http://www.green.ne.jp/