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 までフィードバックや コメントを送ってください。よろしくお願いします。
<!--What is Quota?-->quota とは? quota とは、ふたつの側面からディスクストレージの利用に一定の制限を課すもの です。すなわち、quota を使うと、個々のユーザやユーザグループに対して、消費 できる inode 数を限定し、利用可能なディスクブロック数を制限することが できます。 言い換えると、ユーザがシステム上のディスクスペースを際限なく使うことが 出来ないようにして、ユーザのディスク消費量を一定限度以下に保つというのが、 quota の背後にある考え方です。quota の設定は、ユーザごと、ファイルシステム ごとに行われます。それゆえ、複数のファイルシステムにまたがってユーザが ファイルを作成できるようになっている場合、個々のファイルシステムに対して個別に quota を設定する必要があります。 <!--Current Status of Quota on Linux--> Linux における quota の現状 quota のサポートは、kernel v1.3.8x のときから kernel に組み込まれている そうです。今日では、Linux kernel のリリース 2.0 の一部となっています。 読者のシステムの kernel が quota をサポートしていないなら、kernel のアップ グレードをおすすめします。 現在、quota は、ext2 ファイルシステムでしか動作しません。 <!--Requirements for Using Quota on Linux--> Linux 上で quota を使うための動作環境 Kernel 2.x kernel ソースは、次のサイトで入手できます。 http://sunsite.unc.edu/pub/Linux/kernel/v2.0/ <!--Quota software-->quota ソフトウェア Linux ディストリビューションによって、quota ソフトウェアは読者のシステムに インストールされたり、されなかったりします。インストールされていない場合は、 次の場所から quota ソフトウェアをダウンロードしてください。 ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz (訳注:最近のディストリビューションをお使いの場合、quota 関係のソフトウェア は既にインストールされている場合が多いと思われます。なにぶん古い文書 (1997年8月) の翻訳なので、このあたりはご容赦ください。次章の一章から三章 についても、不要な場合があるかもしれません。) <!--Quota Setup on Linux - Part I: The Configuration--> quota の設定 - パート1:基本設定 <!--Reconfigure your kernel-->カーネルの再構築 カーネル再構築の際に quota support で y とタイプして、quota を 有効にします。 Quota support (CONFIG_QUOTA) [n] y <!--Compile and install the quota softwares--> quota ソフトウェアのコンパイルとインストール quota ソフトウェアは、以下で入手できます。 ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz <!--Modify your system init script to check quota and turn quota on at boot time--> システムの 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 を起動することをおすすめします。 <!--Modify /etc/fstab--> <filename>/etc/fstab</filename> の編集 パーティション上で 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 <!--Create quota record "quota.user" and "quota.group"--> quota 記録ファイル "quota.user" と "quota.group" を作成する quota.userquota.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 <!--Reboot-->リブート 以上でリブートして、これまで行った設定を有効にします。 これ以降、quota を有効にしたいパーティションが出てきた場合、必要な設定は 上記手順の 4, 5, 6 だけとなります。 <!--Quota Setup on Linux - Part II: Assigning Quota for Users and Groups--> quota の設定 - パート2:ユーザとグループに quota を割り当てる quota の割り当てには、edquota コマンドを使います (詳細は、edquota コマンドのマニュアルページをご覧下さい)。 著者は、普段、quota の編集をする前に、quotacheck フラグを付けて実行し、ファイルシステムの最新の 利用状況を見るようにしています。ただ、これは個人的な習慣にすぎないので、 必須ではありません。 <!--Assigning quota for a particular user--> 特定のユーザに quota を割り当てる 以下に例題を示します。ここでは、システム上に bob というログイン id を持った ユーザがいるとします。"edquota " と いうコマンドを実行すると 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" というのは、そのユーザがそのパーティション上に保持する ファイルの総数を示しています。 <!--Assigning quota for a particular group--> 特定のグループに quota を割り当てる 次は、システム上に games というグループがいたとします。" edquota " というコマンドを実行すると、 再度 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) <!--Assigning quota for a bunch of users with the same value--> 同じ値を一連のユーザに割り当てる 例えばシステム上の 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) です。 <!--Soft Limit-->ソフトリミット ソフトリミット (Soft Limit) とは、quota のユーザがそのパーティション上で 占めることができる最大ディスク容量を示すものです。猶予期間 (grace period) と 組み合わせることで、ソフトリミットは、ユーザに対するボーダーラインとして機能 します。すなわち、そのボーダーを越えた時点で、ユーザに対して、現在 quota 制限 違反となっている旨の警告が発せられます。 <!--Hard Limit-->ハードリミット ハードリミット (Hard Limit) は、猶予期間 (grace period) の経過中にのみ機能 します。これは、ディスク使用量の絶対的な制限であり、quota のユーザはこの ハードリミットを決して越えることはできません。 <!--Grace Period-->猶予期間 猶予期間 (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) を選ぶようにしています。 <!--Miscellaneous Quota Commands-->種々の quota コマンド <!--Quotacheck-->quotacheck quotacheck は、あるファイルシステムのディスク利用状況を スキャンし、quota 記録ファイルである quota.user を最新の 状態に更新する際に使用します。システム起動時に quotacheck を走らせるか、cron ジョブとして定期的に実行する (例えば、毎週とか) ことを おすすめします。 <!--Repquota-->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 <!--Quotaon and Quotaoff-->quotaon と quotaoff quotaon は、quota 機能をオンにするもので、quotaoff はそれをオフにするものです。実際には、両方のコマンドファイルは非常 に似通っています。これらは、システムの起動時と終了時に実行されます。 日本語訳について 日本語訳についてのお問い合わせは、 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