Linux Quota mini-HOWTO 著者: Albert M.C. Tam (bertie@scn.org) 1996.07.27(土) 21:04:38 PDT 訳者: 守岡 太郎 morioka@i.h.kyoto-u.ac.jp/t-morioka@nri.co.jp 1997.01.13(月) 18:14:43 JST ---------------------------------------------------------------------------- Linux で quota を有効にする方法 最終更新: 1996.07.27(土) 21:04:38 PDT 序文: この文書に対する著作権は Albert M.C. Tam (bertie@scn.org) が保有してい る (訳者注 1)。非営利目的に限り、この文書の使用、コピーおよび配布が許可されて いる。ただし、著者または編者の氏名およびこの告知を、すべてのコピーおよび関連 文書に明記しなければならない。また、この文書を改変してはならない。この文書が 広く配布され、有効に利用されることを期待する。しかし、明示されていることであ れ、暗示されることであれ、「一切の保証を行わない」。これ以下の文章化された情 報が正確であることを保証するためにあらゆる努力が払われてきた。しかし、間違い や、この文章に書かれた情報によって被った被害に対し、著者、編者もしくは管理者 は「責任を負わない」。 (原文) Preamble: This document is copylefted by Albert M.C. Tam (bertie@scn.org). Permission to use, copy, distribute this document for non-commerical purposes is hereby granted, provided that the author's / editor's name and this notice appear in all copies and/or supporting documents; that this document is not modified. This document is distributed in hope that it will be useful, but WITHOUT ANY WARRANTY, either expressed or implied. While every effort has been taken to ensure the accuracy of the information documented herein, the author / editor / maintainer assumes NO RESPONSIBILITY for errors, or for damages results for the use of the information documented herein. この文書では、Linux ホスト上のファイル・システムへ quota をいかに導入するのか について記述する。ユーザ毎に制限を割り当てる方法だけでなく、quota コマンド群 の様々な使用方法についても記述する。ユーザは、カーネル 2.x を使用しているもの とする (テストは 2.0.7 で行った)。これよりも古いカーネルを使用しているユーザ にはアップグレードをすすめる。 あなたが誤りを見つけたり、情報が足りなかったときには、フィードバックやコメン トを bertie@scn.org まで気軽に送ってほしい。 ---------------------------------------------------------------------------- quota とは? quota を用いることで、ディスク装置の 2 つの面 --- あるユーザが保持できる inode の数とディスク・ブロックの数 --- の制限を設定することができる。 ユーザがディスク・スペースを無制限に使用することを禁止し、 (ほとんどの時間) 各自のディスク使用量の制限以下にあるように強制する。これが、quota の背後にあ る考えである。 Linux での quota の現況 quota のサポートはカーネル 1.3.8x において統合されたと聞いている。リリース 2.0 のカーネルにおいてもサポートされている。もしも、あなたのシステムが quota をサポートしていないのならば、アップグレードをすすめる。 現在、quota は ext2 ファイル・システムにおいてのみ動作する。 Linux で quota を使用するために必要なもの カーネル 2.x のカーネル・ソースは ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0/ より入手できる。 quota ソフトウェア システムに quota ソフトウェアがあるか否かは、あなたの持っている Linux distribution 次第である。quota ソフトウェアのソースは ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz (訳者注 2) より入手できる。 ---------------------------------------------------------------------------- Linux での quota のセットアップ - Part I: 設定 1. カーネル再構築 カーネルの再構築を行う。 Quota support (CONFIG_QUOTA) [n] y に y とタイプし、quota のサポートを加える。 2. quota ソフトウェアのコンパイルとインストール quota ソフトウェアのソースは ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz (訳者注 2) より入手できる。 先に私があげた quota ソフトウェア・パッケージは既に Linux に移植されており、 2.x カーネルが走っているすべての Linux システムでコンパイルできる。コンパイル 時に、C コンパイラが定数 MNTOPT が未定義であるとエラーを出すかもしれない。そ の場合には、quota パッケージの mntent.h を /usr/include/mntent.h にコピーする 必要がある。(訳者注 3) 3. システム起動時に quota をチェックし、quota を on にするために init スクリ プトを修正する。 以下に例を示す: # 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 教訓としては「いかなる時も」 /etc/fstab 内のファイル・システムがマウントされ てしまった「後に」quota を on にすることである。さもないと、quota は動作しな い。システムの init スクリプトの最後で quota を on にするのがよい。好みによっ ては、システムの init スクリプト内で、ファイル・システムがマウントされた直後 でもよい。 4. /etc/fstab の修正 まだ quota を有効にしていないパーティションは通常以下のように見える。 /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults 1 1 ファイル・システムに quota 機能を加えるために、"defaults" という語を含んでい る 4 番目のフィールドに "usrquota" を加える。 /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota 1 1 5. quota 記録 "quota.user" の作成 この quota の記録ファイル、quota.user の所有者は root にする。 root には、読 み書き許可を与え、他のいかなる許可も与えないようにしておかなければならない。 root として login する。quota を有効にしたいパーティションのマウントの根本に 行き、以下のようにして quota.user を作成する。 touch /partition/quota.user chmod 600 /partition/quota.user 6. 再起動 システムを再起動し、いままでに行った変更を反映させる。 将来、ほかのパーティションの quota を有効にしたいときには、step 4、5、6 だけ を行なえばよい。 Linux での quota のセットアップ - Part II: 各ユーザへの quota の割り当て この操作は edquota コマンドによって行われる。たとえば、コマンド "edquota bob" を実行すると、vi (もしくは、環境変数 $EDITOR によって示されたエディタ)が起動 する。 quota が有効になっているそれぞれのパーティション上でのユーザ "bob" の 制限を設定する。 Quotas for user bob: /dev/hda2: blocks in use: 2594, limits (soft = 5120, hard = 6400) inodes in use: 356, limits (soft = 1000, hard = 1500) "blocks in use" はパーティション内でユーザが消費しているブロック(キロバイト単 位)の総数である。 "inodes in use" はパーティション内でユーザが消費しているファイルの総数である。 eduota に加え、習熟しておかなければならない用語が 3 つある: Soft Limit、 Hard Limit、Grace Period である。 Soft Limit 通常、 soft limit は quota されるユーザが、パーティション内で使用できるディス クの最大量を示している。しかし、grace period が設定されているときには、この最 大量は境界線とみなされる。ディスク使用量がこの線を越えるとユーザは quota 制限 を越えている旨の警告を受ける。 Hard Limit hard limit は grace period が設定されているときにのみ、意味がある。ディスク使 用の絶対的な制限を示しており、ユーザはこの hard limit を越えることはできない。 Grace Period コマンド "edquota -t" を実行すると、greace period は soft limit の制限がユー ザに科されるまで時間となる。時間の単位は 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) にしている。 ---------------------------------------------------------------------------- 様々な quota コマンド群 quotacheck quotacheck はファイル・システムのディスク使用量を調べ、quota の記録ファイル "quota.user" を最新の状況に更新するために使われる。システム起動の度に quotacheck を走らせるか、 cronjob (訳者注 4) を用いて一定期間 (たとえば、1 週 間 ?) に 1 度走らせると良いだろう。 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 と quotaoff quotaon は quota 機能を on にするために使われ、quotaoff は off にするために使 われる。実際には 2 つのファイルは同じものである。これらは、システムが起動する ときと、システムが終了するときに実行される。 ---------------------------------------------------------------------------- (訳者注 1) 併記のように原文は、 "Preamble: This document is copylefted by Albert M.C. Tam (bertie@scn.org)." である。copyleft という単語は GNU プロジェクトの造語である。正確な意味、背景 について知りたい人は、 http://www.gnu.ai.mit.edu/copyleft/copyleft.html を読むとよいだろう。 また GNU ライセンスについては、 http://pia.plaza.hitachi-sk.co.jp/%7Emasa-k/doc/think-gnu/ の下に情報がある。 (訳者注 2) 1996.12.27 現在、最新版は quota-1.55 であり、 ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/ subsystems/quota/utils/quota-1.55.tar.gz より入手できる。 (訳者注 3) quota-1.55 の Makefile にバグがあり、# make install を実行するとエラーになる。 これは quotaon と quotaoff にリンクを張る所のエラーである (本文末にあるよう、 これらは、同一のファイルである) 。そのため、手動でリンクを張るなり、Makefile の修正をするなりを各自で行なう必要がある。 (訳者注 4) crontab のこと。 ---------------------------------------------------------------------------- 日本語訳についてのお問い合わせは、 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