Quota の設定
blue@www-ep.sci.hokudai.ac.jp
作業:杉山耕一朗
この文章は 4 月 16 日に行った quota のインストール記録である.
○目的
専攻サーバを立ち上げるに際し,ユーザがディスクスペースを
無制限に使用することを禁止したい.
○準備
kernel-source-2.2.1
quota-1.6.2
カーネルの再構築に必要なものは全てインストールする必要がある.
○作業
作業は以下の順で行う
1, カーネルを再構築し,quota のサポートを加える.
2, /etc/fstab の編集
3, quota の起動
4, ユーザの使用可能なディスク容量の制限
1, カーネルの再構築 (詳細は別紙参照)
# make menuconfig
"file system" の項目中の "Quota support" を y にする.
# make dep; make clean; make
# make bzImage
# make modules
# make modules_install
2, /etc/fstab の編集
ファイルシステムに quota 機能を加える為には,
ディスクの使用制限を加えるファイルシステムに
オプションとして "usrquota(ユーザに制限を加える)" と
"grpquota(グループに制限を加える)" を加える必要がある.
今回はオプションとして "usrquota" と "grpquota" の両方を加えたが
これは目的に応じて付ければいい.
ユーザにディスクの使用制限を加えるだけならば
"usrquota" を加えるだけで十分.
quota を加えるファイルシステムは,
タイプが "ext2" でオプションに "defaults" が付いている必要がある.
/home 以下について使用制限を与えたいので
ファイルシステム /dev/sda に対して quota をかけた.
編集する前
# /etc/fstab: static file system information.
#
#
/dev/hda1 / ext2 defaults,errors=remount-ro 0 1
proc /proc proc defaults 0 0
/dev/sda /home ext2 defaults 0 0
/dev/sdb /home.bk ext2 defaults 0 0
編集後
# /etc/fstab: static file system information.
#
#
/dev/hda1 / ext2 defaults,errors=remount-ro 0 1
proc /proc proc defaults 0 0
/dev/sda /home ext2 defaults,usrquota,grpquota 0 0
/dev/sdb /home.bk ext2 defaults 0 0
3, quota の記録ファイルの作成
quota はディスク制限に関してユーザ情報を "quota.user" に,
グループの情報を "quota.group" に蓄える.
quota を有効にしたいディレクトリ(今回は /home) に "quota.user" と
"quota.group" を作成する
# touch /home/quota.user
# touch /home/quota.group
# chmod 600 /home/quota.user
# chmod 600 /home/quota.group
再起動する
# reboot (もしくは # /etc/init.d/quota restart)
また
# ls -l /home/quota.user
# ls -l /home/quota.group
をすると空ファイルであった "quota.user" と "quota.group" に
書き込みがなされたことが分かる.
ただしこの 2 つのファイルはバイナリーファイルなので
何が書いてあるか分からない.
4, ユーザに対してディスクを割り当てる
ユーザに対するディスクの割り当ては "edquota" コマンドを使って行われる.
ユーザ sugiyama のディスク使用量を 100 Mb に制限する場合は
以下のように行う.
# edquota sugiyama(username)
環境変数 EDITER で指定されたエディター(指定されていなければ vi )が
起動される.
ユーザ (この場合 sugiyama) に対するディスクの使用状態や
quota の情報が表示されるので,それを適当に編集する.
・初期状態
Quotas for user sugiyama:
/dev/sda: blocks in use: 1436, limits (soft = 0, hard = 0)
inodes in use: 57, limits (soft = 0, hard = 0)
・編集後
Quotas for user sugiyama:
/dev/sda: blocks in use: 1436, limits (soft = 100, hard = 200)
inodes in use: 57, limits (soft = 0, hard = 0)
●情報の見方
・blocks in use:
パーティション内でユーザが消費しているブロックの総数
単位は キロバイト.
・inodes in use:
パーティション内でユーザが消費しているファイルの総数
・soft limits:
quota されるユーザがパーティション内で使用できる
ディスクの最大値を示す.
しかし grace period が設定されている場合
soft limit は境界値と見倣され,
この制限をこえてディスクを使用すると警告を受ける
( hard limit を越えない限り更にディスクを使うことができる).
しかし soft limit を越えて更にディスクを使用し,しかも
grace period で設定された値を越えるとディスクを
更に使うことができなくなる.
・hard limits:
quota されるユーザがパーティション内で使用できる
ディスクの最大値.ユーザはこの制限を越えてディスクを
使用することは絶対にできない.
・grace period:
soft limit の制限がユーザに科されるまでの時間.
5, grace period の設定
grace period はsoft limit の制限がユーザに科されるまでの時間である.
これは以下のように設定する.
# edquota -t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda: block grace period: 7 days, file grace period: 7 days
3 行目を目的に応じて変更する.
デフォルトは 7 日.
● grace period の適用例
初期状態は以下の通りである
$ quota
Disk quotas for user sugiyama (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda 1438* 1400 2000 7 days 54 0 0
このまま 7 日間(grace period の値)置いておくと次のログイン時に
Last login: Fri Apr 23 17:26:29 1999 from gachapin.sci.hokudai.ac.jp
Linux blue 2.0.34 #2 Thu Jul 9 10:57:48 EST 1998 i686 unknown
Copyright (C) 1993-1998 Software in the Public Interest, and others
Most of the programs included with the Debian GNU/Linux system are
freely redistributable; the exact distribution terms for each program
are described in the individual files in /usr/doc/*/copyright
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
/home: write failed, user disk quota exceeded too long.
No mail.
以上のようなメッセージ(下から 2 行目に注目)が出て,
これ以上の書き込みができなくなる.
hard limit を越えていなくともディスクに更なる書き込みができなくなる.
6, 雑記
・ディスクの使用状態を見るコマンド
$ quota
# quota -v (ユーザ名)
# quota -g (グループ名)
引数を付けないと自分自身のディスク使用状態が表示される.
・quota されるファイル
quota はファイルの所有者(またはグループ)に対して制限を加える.
例えばユーザ hogehoge さんに quota をかける場合,
/home/hogehoge というディレクトリのディスク使用量を制限するのではなく
/home/ 以下において所有者が hogehoge なファイルのディスク使用量の合計に
対して制限をかける.
○ユーザに制限をかける(管理者向け)
大勢のユーザに対して制限をかける場合,いちいち
# edquota -u を行なうのは面倒である.
# edquota -p という便利なコマンドがあるのでこれを用いる.
# edquota -p (proto-user) (username)
を行なうと proto-user の内容がユーザにコピーされる.
登録システムの中にこのコマンドを加えとけばいいと考える.