<!--<!DOCTYPE Article PUBLIC "-//Davenport//DTD DocBook V3.0//EN">-->
<!doctype article public "-//OASIS//DTD DocBook V3.1//EN">
<article>

<artheader>

<title>Quota mini-HOWTO</title>
<author>
<firstname>Albert</firstname>
<othername>M.C.</othername>
<surname>Tam</surname>
<affiliation>
 <address>bertie@scn.org</address>
</affiliation>
</author>
<othercredit role="translator" lang="ja">
<firstname>JF Project</firstname>
<surname></surname>
<contrib>日本語訳</contrib>
</othercredit>
<pubdate>v0.0, 8 August 1997</pubdate>

<abstract>

<para>
<!--
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.
-->
まえがき：この文書は、Albert M.C. Tam (bertie@scn.org) が「コピーレフト」
しています。非商用目的に限り、利用・複製・頒布を許可しますが、その際は、著者
および編集者の氏名とこの利用許諾条項がすべての複製および付属文書に表示される
こと、文書に改変を加えないことが条件となります。この文書は、読者の役に立つ
ことを願って配布されていますが、明示的・黙示的な如何なる保証も伴いません。
正確な情報を記載するよう出来る限りの努力をしていますが、著者・編集者・文書
管理者は、この文書の誤謬や文書内の情報によって生じた損害について、如何なる
責任も負いません。
</para><para>
<!--
This document describes how to enable file system quota on a Linux host,
assigning quota for users and groups, as well as the usage of miscellaneous
quota commands. It is intended for users running kernel 2.x (recently tested
on RedHat 4.1 running kernel 2.0.27). Users running older kernels may need
to upgrade to a newer kernel version in order to take advantage of quota.  
Feel free to send feedbacks or comments to bertie@scn.org if you find an
error, or if any information is missing. I appreciate it.
-->
この文書は、Linux ホスト上でファイルシステムの容量制限(quota)を有効にする
方法、ユーザやグループに容量制限をかける方法、および種々の quota コマンド
の使い方について解説するものです。kernel 2.x を使っているユーザを対象とし
ています (RedHat 4.1 で kernel 2.0.27 を走らせているマシン上で最新の
テストを行いました)。それよりも古い kernel を使っているユーザは、kernel の
バージョンを上げなければ、quota の新しい機能が使えないかもしれません。
間違いや情報の欠落があれば、遠慮なく bertie@scn.org までフィードバックや
コメントを送ってください。よろしくお願いします。
</para>

</abstract>

</artheader>

<sect1 id="what">
<title><!--What is Quota?-->quota とは？</title>

<para>
<!--
Quota allows you to specify limits on two aspects of disk storage: the
number of inodes a user or a group of users may possess; and the number of
disk blocks that may be allocated to a user or a group of users.
-->
quota とは、ふたつの側面からディスクストレージの利用に一定の制限を課すもの
です。すなわち、quota を使うと、個々のユーザやユーザグループに対して、消費
できる inode 数を限定し、利用可能なディスクブロック数を制限することが
できます。
</para>

<para>
<!--
The idea behind quota is that users are forced to stay under their disk
comsumption limit, taking away their ability to comsume unlimited disk space
on a system. Quota is handled on a per user, per file system basis. If there
is more than one file system which a user is expected to create files, then
quota must be set for each file system seperately.
-->
言い換えると、ユーザがシステム上のディスクスペースを際限なく使うことが
出来ないようにして、ユーザのディスク消費量を一定限度以下に保つというのが、
quota の背後にある考え方です。quota の設定は、ユーザごと、ファイルシステム
ごとに行われます。それゆえ、複数のファイルシステムにまたがってユーザが
ファイルを作成できるようになっている場合、個々のファイルシステムに対して個別に
quota を設定する必要があります。
</para>

</sect1>

<sect1 id="status">
<title><!--Current Status of Quota on Linux-->
Linux における quota の現状</title>

<para>
<!--
Quota support has been integrated into kernel since version 1.3.8x I heard.
Now it is part of the 2.0 release of the Linux kernel. If your system doesn't
support quota, I really recommend an upgrade.
-->
quota のサポートは、kernel v1.3.8x のときから kernel に組み込まれている
そうです。今日では、Linux kernel のリリース 2.0 の一部となっています。
読者のシステムの kernel が quota をサポートしていないなら、kernel のアップ
グレードをおすすめします。
</para>

<para>
<!--
Currently, quota works for ext2 type file system only. 
-->
現在、quota は、ext2 ファイルシステムでしか動作しません。
</para>

</sect1>

<sect1 id="requirements">
<title><!--Requirements for Using Quota on Linux-->
Linux 上で quota を使うための動作環境</title>

<sect2>
<title>Kernel</title>

<para>
<!--
The 2.x kernel source is available from
-->
2.x kernel ソースは、次のサイトで入手できます。
</para>
<para>
<ulink url="http://sunsite.unc.edu/pub/Linux/kernel/v2.0/">
http://sunsite.unc.edu/pub/Linux/kernel/v2.0/</ulink>
</para>

</sect2>

<sect2>
<title><!--Quota software-->quota ソフトウェア</title>

<para>
<!--
Depending on the Linux distribution you have, you may, or may not have
the quota softwares installed on your system. If you don't, then download the
quota software source from 
-->
Linux ディストリビューションによって、quota ソフトウェアは読者のシステムに
インストールされたり、されなかったりします。インストールされていない場合は、
次の場所から quota ソフトウェアをダウンロードしてください。
</para>
<para>
<ulink 
url="ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz">
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz</ulink>
</para>

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

</sect2>

</sect1>

<sect1 id="setup1">
<title><!--Quota Setup on Linux - Part I: The Configuration-->
quota の設定 - パート1：基本設定</title>

<sect2>
<title><!--Reconfigure your kernel-->カーネルの再構築</title>

<para>
<!--
Reconfigure your kernel and add quota support by typing y to:
-->
カーネル再構築の際に quota support で y とタイプして、quota を
有効にします。
</para>

<para>
<programlisting>
  Quota support (CONFIG_QUOTA) [n] y
</programlisting>
</para>

</sect2>

<sect2>
<title><!--Compile and install the quota softwares-->
quota ソフトウェアのコンパイルとインストール</title>

<para>
<!--
The quota software source is available from
-->
quota ソフトウェアは、以下で入手できます。
</para>

<para>
<ulink 
url="ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz">
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz</ulink>
</para>

</sect2>

<sect2>
<title>
<!--Modify your system init script to check quota and turn quota on at boot
 time-->
システムの init スクリプトを編集し、起動時に quota をチェックし、quota をオン
にする
</title>

<para>
<!--
Here's an example:
-->
以下が、その設定例です。

<programlisting>
  &num; 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
</programlisting>

</para>

<para>
<!--
The golden rule is that always turn quota on after your file systems in
/etc/fstab have been mounted, otherwise quota will fail to work. I recommend
turning quota on at the end of your system init script, or, if you like, right
after the part where file systems are mounted in your system init script.
-->
編集の際には、重要なルールがあります。quota は、<filename>/etc/fstab
</filename> に記載されたファイルシステムがすべてマウントされてから、起動
すべし、ということです。でないと、quota は有効になりません。システムの init 
スクリプトの最後の部分で quota を起動するか、もしくは、ファイルシステムが
マウントされる箇所の直後で quota を起動することをおすすめします。
</para>

</sect2>

<sect2>
<title><!--Modify /etc/fstab-->
<filename>/etc/fstab</filename> の編集</title>

<para>
<!--
Partitions that you have not yet enabled quota normally look something
like:
-->
パーティション上で quota の設定をまだ有効にしていない場合、<filename>
/etc/fstab</filename> は次のようになっていると思います。

<programlisting>
  /dev/hda1       /       ext2    defaults        1       1
  /dev/hda2       /usr    ext2    defaults        1       1
</programlisting>

</para>

<para>
<!--
To enable user quota support on a file system, add "usrquota" to the fourth
field containing the word "defaults" (man fstab for details).
-->
ファイルシステム上でユーザ quota を有効にするには、"defaults" という
単語が書かれている 4 つめのフィールドに "userquota" と付け加えます
(詳細は、<command>fstab</command> のマニュアルページをご覧ください)。

<programlisting>
  /dev/hda1       /       ext2    defaults        1       1
  /dev/hda2       /usr    ext2    defaults,usrquota       1       1
</programlisting>

</para>

<para>
<!--
Replace "usrquota" with "grpquota", should you need group quota support
on a file system.
-->
グループ quota を有効にする場合には、"userquota" を "grpquota" に置き換えて
ください。

<programlisting>
  /dev/hda1       /       ext2    defaults        1       1
  /dev/hda2       /usr    ext2    defaults,grpquota       1       1
</programlisting>

</para>

<para>
<!--
Need both user quota and group quota support on a file system?
-->
ユーザ quota とグループ quota の両方を有効にする場合は、次のように
なります。

<programlisting>
  /dev/hda1       /       ext2    defaults        1       1
  /dev/hda2       /usr    ext2    defaults,usrquota,grpquota       1   1
</programlisting>

</para>

</sect2>

<sect2>
<title><!--Create quota record "quota.user" and "quota.group"-->
quota 記録ファイル "quota.user" と "quota.group" を作成する</title>

<para>
<!--
Both quota record files, quota.user and quota.group, should be owned by
root, and read-write permission for root and none for anybody else.
-->
<filename>quota.user</filename> と <filename>quota.group</filename> という 
quota 記録ファイル (quota record file) は、両方とも root をファイル所有者
とし、root だけに read-write パーミッションを設定した上で、それ以外のユーザは
いっさい読み書き実行できないようにします。
</para>

<para>
<!--
Login as root. Go to the root of the partition you wish to enable quota,
then create quota.user and quota.group by doing:
-->
まず、root でログインします。そして、quota を有効にしたいパーティションの
ルートディレクトリに移動し、<filename>quota.user</filename> と <filename>
quota.group</filename> を次のように作成します。

<programlisting>
  touch /partition/quota.user 
  touch /partition/quota.group 
  chmod 600 /partition/quota.user 
  chmod 600 /partition/quota.group
</programlisting>

</para>

</sect2>

<sect2>
<title><!--Reboot-->リブート</title>

<para>
<!--
Now reboot system for the changes you have made to take effect.
-->
以上でリブートして、これまで行った設定を有効にします。
</para>

<para>
<!--
Also note that subsequent partitions you wish to enable quota in the future
only require step 4, 5, and 6.
-->
これ以降、quota を有効にしたいパーティションが出てきた場合、必要な設定は
上記手順の 4, 5, 6 だけとなります。
</para>

</sect2>

</sect1>

<sect1 id="setup2">
<title>
<!--Quota Setup on Linux - Part II: Assigning Quota for Users and Groups-->
quota の設定 - パート2：ユーザとグループに quota を割り当てる</title>

<para>
<!--
This operation is performed with the edquota command (man edquota for details).
-->
quota の割り当てには、<command>edquota</command> コマンドを使います 
(詳細は、<command>edquota</command> コマンドのマニュアルページをご覧下さい)。
</para>

<para>
<!--
I would normally run quotacheck with the flags -avug to obtain the most
updated filesystems usage prior to editing quota. This is just a personal 
habit, and not a required step however.
-->
著者は、普段、quota の編集をする前に、<command>quotacheck</command> を 
<option>-avug</option> フラグを付けて実行し、ファイルシステムの最新の
利用状況を見るようにしています。ただ、これは個人的な習慣にすぎないので、
必須ではありません。
</para>

<sect2>
<title><!--Assigning quota for a particular user-->
特定のユーザに quota を割り当てる</title>

<para>
<!--
Here's an example. I have a user with the login id bob on my system.  The
command "edquota -u bob" takes me into vi (or editor specified in my &dollar;
EDITOR
environment variable) to edit quota for user bob on each partition that has
quota enabled:
-->
以下に例題を示します。ここでは、システム上に bob というログイン id を持った
ユーザがいるとします。"<command>edquota</command> <option>-u bob</option>" と
いうコマンドを実行すると vi (もしくは、環境変数 &dollar;EDITOR で指定された
エディタ) が開きます。そこに、quota 設定が可能な個々のパーティションそれぞれ
についての、ユーザ bob の quota を記述します。

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

</para>

<para>
<!--
"blocks in use" is the total number of blocks (in kilobytes) a user has
comsumed on a partition.
-->
上記の "blocks in use" というのは、そのユーザがそのパーティション上で
既に消費しているブロックの総数を示しています。
</para>

<para>
<!--
"inodes in use" is the total number of files a user has on a partition.
-->
"inodes in use" というのは、そのユーザがそのパーティション上に保持する 
ファイルの総数を示しています。
</para>

</sect2>

<sect2>
<title><!--Assigning quota for a particular group-->
特定のグループに quota を割り当てる</title>

<para>
<!--
Now I have a group games on my system. "edquota -g games" takes me into
the vi editor again to edit quota for the group games:
-->
次は、システム上に games というグループがいたとします。"<command>
edquota</command> <option>-u games</option>" というコマンドを実行すると、
再度 vi エディタが開くので、そこにグループ games の quota を記述します。

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

</para>

</sect2>

<sect2>
<title>
<!--Assigning quota for a bunch of users with the same value-->
同じ値を一連のユーザに割り当てる</title>

<para>
<!--
To rapidly set quotas for, say 100 users, on my system to the same value
as my user bob, I would first edit bob's quota information by hand, then 
execute:
-->
例えばシステム上の 100 人のユーザに対して、ユーザ bob と同じ値の quota を
すばやく割り当てるようとする場合、著者なら、まず bob の quota 情報を手動で
入力してから、次のコマンドを実行します。

<programlisting>
  edquota -p bob `awk -F: '&dollar;3 &gt; 499 {print &dollar;1}' /etc/passwd`
</programlisting>

</para>

<para>
<!--
assuming that you are using csh, and that you assign your user UID's starting
with 500.
-->
上記コマンドは、csh を使っていること、および一連のユーザのユーザ ID が 500 
番から始まっていることが前提になっています。
</para>

<para>
<!--
In addition to edquota, there are 3 terms which you should familiarize
yourself with: Soft Limit, Hard Limit, and Grace Period.
-->
<command>edquota</command> コマンド以外にも、知っていなければならない用語が 
3 つあります。ソフトリミット (Soft Limit)、ハードリミット (Hard Limit)、
猶予期間 (Grace Period) です。
</para>

</sect2>

<sect2>
<title><!--Soft Limit-->ソフトリミット</title>

<para>
<!--
&lowbar;Soft limit&lowbar; indicates the maximum amount of disk usage a quota 
user has
on a partition. When combined with grace period, it acts as the border line,
which a quota user is issued warnings about his impending quota violation when
passed.
-->
ソフトリミット (Soft Limit) とは、quota のユーザがそのパーティション上で
占めることができる最大ディスク容量を示すものです。猶予期間 (grace period) と
組み合わせることで、ソフトリミットは、ユーザに対するボーダーラインとして機能
します。すなわち、そのボーダーを越えた時点で、ユーザに対して、現在 quota 制限
違反となっている旨の警告が発せられます。
</para>

</sect2>

<sect2>
<title><!--Hard Limit-->ハードリミット</title>

<para>
<!--
Hard limit works only when grace period is set. It specifies the absolute
limit on the disk usage, which a quota user can't go beyond his hard limit.
-->
ハードリミット (Hard Limit) は、猶予期間 (grace period) の経過中にのみ機能
します。これは、ディスク使用量の絶対的な制限であり、quota のユーザはこの
ハードリミットを決して越えることはできません。
</para>

</sect2>

<sect2>
<title><!--Grace Period-->猶予期間</title>

<para>
<!--
Executed with the command "edquota -t", grace period is a time limit  before
the soft limit is enforced for a file system with quota enabled. Time units
of sec(onds), min(utes), hour(s), day(s), week(s), and month(s) can be used.
This is what you'll see with the command "edquota -t":
-->
猶予期間 (grace period) とは、制限時間のことであり、これを越えると、quota を
有効にしたファイルシステム上で、ソフトリミットが強制的に実行されます。これは、
コマンド "<command>edquota -t</command>" を使って設定するようになっていて、
時間間隔としては、秒(sec)、分(min)、時(hour)、日(day)、週(week)、月(month) が
使えます。以下に、コマンド "<command>edquota -t</command>" を使った際に表示
される画面を示します。

<programlisting>
  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 
</programlisting>

</para>

<para>
<!--
Change the 0 days part to any length of time you feel reasonable. I personally
would choose 7 days (or 1 week).
-->
上記の 0 days の部分を適当な間隔に置き換えてください。著者は、個人的に 
7 days (もしくは 1 week) を選ぶようにしています。
</para>

</sect2>

</sect1>

<sect1 id="commands">
<title><!--Miscellaneous Quota Commands-->種々の quota コマンド</title>

<sect2>
<title><!--Quotacheck-->quotacheck</title>

<para>
<!--
Quotacheck is used to scan a file system for disk usages, and updates the
quota record file "quota.user" to the most recent state. I recommend running
quotacheck at system bootup, or via cronjob periodically (say, every week?).
-->
<command>quotacheck</command> は、あるファイルシステムのディスク利用状況を
スキャンし、quota 記録ファイルである <filename>quota.user</filename> を最新の
状態に更新する際に使用します。システム起動時に <command>quotacheck</command> 
を走らせるか、cron ジョブとして定期的に実行する (例えば、毎週とか) ことを
おすすめします。
</para>

</sect2>

<sect2>
<title><!--Repquota-->repquota</title>

<para>
<!--
Repquota produces a summarized quota information for a file system. Here
is a sample output repquota gives:
-->
<command>repquota</command> は、あるファイルシステムに関する quota 情報を
集計表示するものです。以下は、<command>repquota</command> のサンプル出力です。

<programlisting>
  &num; 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
</programlisting>

</para>

</sect2>

<sect2>
<title><!--Quotaon and Quotaoff-->quotaon と quotaoff</title>

<para>
<!--
Quotaon is used to turn on quota accouting; quotaoff to turn it off. Actually
both files are similar. They are executed at system startup and shutdown.
-->
<command>quotaon</command> は、quota 機能をオンにするもので、<command>quotaoff
</command> はそれをオフにするものです。実際には、両方のコマンドファイルは非常
に似通っています。これらは、システムの起動時と終了時に実行されます。
</para>

</sect2>

</sect1>

<sect1 id="jptrans">
<title>日本語訳について</title>
<para>
日本語訳についてのお問い合わせは、
        morioka@i.h.kyoto-u.ac.jp
に送っていただきたい。  
</para><para>
日本語訳の作成にあたり Linux-JF プロジェクトの以下の方々から多くの助言をいた
だきました。ありがとうございました。
</para><para>
<simplelist columns="2" type="horiz">
<member>荒木さん</member>
<member>yasu@mizuno.riec.tohoku.ac.jp</member>
<member>伊藤さん</member>
<member>nozomi@biol.tsukuba.ac.jp</member>
<member>小野さん</member>
<member>ono@jf.gee.kyoto-u.ac.jp</member>
<member>小島さん</member>
<member>isle@st.rim.or.jp/kojima@criepi.denken.or.jp</member>
<member>小林さん</member>
<member>daihei@hucom.co.jp</member>
<member>sugawaraさん</member>
<member>hiro@lynx.com</member>
<member>dezawaさん</member>
<member>dezawa@miya.fujifilm.co.jp</member>
<member>中谷さん</member>
<member>jeanne@mbox.kyoto-inet.or.jp</member>
<member>中野さん</member>
<member>nakano@apm.seikei.ac.jp/pfg03175@niftyserve.or.jp</member>
<member>吉山さん</member>
<member>yosshy@jedi.seg.kobe-u.ac.jp</member>
</simplelist>

<simplelist columns="3" type="horiz">
<member>訳：</member>
<member>守岡太郎</member>
<member> morioka@i.h.kyoto-u.ac.jp/t-morioka@nri.co.jp</member>
<member></member>
<member>1997.01.13(月) 18:14:43 JST</member>
<member></member>
</simplelist>

<simplelist columns="4" type="horiz">
<member>更新：</member>
<member>千旦裕司</member>
<member>ysendda@pop01.odn.ne.jp</member>
<member>(2001/09/15)</member>
<member>校正：</member>
<member>幸田あきひこ</member>
<member>coda@post.kek.jp</member>
<member></member>
</simplelist>
</para>
</sect1>

</article>
