quota の割り当てには、edquota コマンドを使います (詳細は、edquota コマンドのマニュアルページをご覧下さい)。
著者は、普段、quota の編集をする前に、quotacheck を -avug フラグを付けて実行し、ファイルシステムの最新の 利用状況を見るようにしています。ただ、これは個人的な習慣にすぎないので、 必須ではありません。
以下に例題を示します。ここでは、システム上に 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" というのは、そのユーザがそのパーティション上に保持する ファイルの総数を示しています。
次は、システム上に 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) |
例えばシステム上の 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) とは、quota のユーザがそのパーティション上で 占めることができる最大ディスク容量を示すものです。猶予期間 (grace period) と 組み合わせることで、ソフトリミットは、ユーザに対するボーダーラインとして機能 します。すなわち、そのボーダーを越えた時点で、ユーザに対して、現在 quota 制限 違反となっている旨の警告が発せられます。
ハードリミット (Hard Limit) は、猶予期間 (grace period) の経過中にのみ機能 します。これは、ディスク使用量の絶対的な制限であり、quota のユーザはこの ハードリミットを決して越えることはできません。
猶予期間 (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) を選ぶようにしています。