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