容量制限(クォータ)

個人で使用しているときには別に設定する必要がありませんが、ユーザーが複数になった場合にはユーザーごとに容量を割り振っておくとトラブルも少なくてすみます。WindowsXPではプロパティで設定するだけで使用できますが、FreeBSDなどでは標準では使えるようになっていないことが多いためちょっと面倒です。以下にクォータを有効にする具体例を書きます。
クォータが使えるか確認する
最初に設定クォータが有効か確認を行います。ソースをインストールしていない場合には、ソースコードをインストールして「GENERIC」の設定を調べます。
# cd /usr/src/sys/i386/conf/
# vi GENERIC
以下の設定があるか確認します。
# vi GENERIC
options  QUOTA  #enable disk quotas
記述がない場合にはカーネルの再構築が必要なのでカーネルの再構築を行います。
カーネルの再構築
コンフィグファイルのバックアップを取ります。
# cd /usr/src/sys/i386/conf/
# cp GENERIC BALIUS
コンフィグファイルにクォータ・オプションを追加します。
# vi BALIUS
options  QUOTA  #enable disk quotas

ビルド環境を生成します。
# config BALIUS
Kernel build directory is ../../compile/BALIUS

再構築を行います。
# cd ../../compile/BALIUS
# make depend
# make

カーネルのインストールを行います。
# make install
クォータを有効にする
設定ファイルにクォータオプションを設定します。
# cd /etc
# vi rc.conf
enable_Quotas="YES"追加
check_quotas="YES"変更

クォータを設定したいボリュームにクォータオプションを追加します。
# vi fstab
# DeviceMountpointFStypeOptionsDumpPass#
/dev/wd0s2bnoneswapsw00
/dev/wd0s2a/ufsrw11
/dev/wd0s2f/usrufsrw22
/dev/wd0s2e/varufsrw22
proc/procprocfsrw00
/dev/wcd0c/cdromcd9660ro,noauto0 0
# DeviceMountpointFStypeOptionsDumpPass#
/dev/wd0s2bnoneswapsw00
/dev/wd0s2a/ufsrw11
/dev/wd0s2f/usrufsrw,userquota22
/dev/wd0s2e/varufsrw22
proc/procprocfsrw00
/dev/wcd0c/cdromcd9660ro,noauto0 0
ユーザーごとの設定を行います。
edquotaコマンドを叩くと以下のような設定ファイルがエディタで開かれます。
# edquota -u user1
uotas for user user1:
/usr: blocks in use: 4, limits (soft = 0, hard = 0)
   inodes in use: 5, limits (soft = 0, hard = 0)
意味としては以下の通りです。
blocks in use・・・パーティション内でユーザーが消費しているブロック数です。(Kバイト)
inodes in use・・・ユーザーが使用しているファイル及びディレクトリ数です。
上記の例では「blocks in use」と「inodes in use」のlimitssoft/hardともに0になっています。この状態では制限はかかりません。

以下に容量制限が約5M、ファイル数が1000個に制限する例を書きます。
uotas for user user1:
/usr: blocks in use: 4, limits (soft = 5000, hard = 0)
   inodes in use: 5, limits (soft = 1000, hard = 0)
limitsの設定項目内にある「soft」と「hard」には次のような意味があります。

Grace Period未設定Grace Period済み
soft指定された値で制限する指定された値になったら警告する
hard指定された値で制限する

Grace Periodの設定方法はedquota - tで設定を行います。
# edquota - t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/usr: block grace period: 1 days, file grace period: 1 days
上記の設定例では制限値をオーバーした場合、1日後に指定された制限を有効にします。
猶予の単位は「日(days)」、「時(hours)」、「分(minutes)」、「秒(seconds)」が指定できます。
※参考資料
ディスクの使用状況と使用限度を表示する
quota [-g] [-u] [-v | -q]
quota [-u] [-v | -q] user
quota [-g] [-v | -q] group
-g:ユーザーが所属するグループのクォータを表示。
-u:デフォルトと等しい。
-v:割り当てられていないファイルシステムのクォータを表示。
-q:制限オーバーしているファイルシステムを表示。
ファイルシステムのクォータを起動する
quotaon [-g] [-u] [-v] filesystem ...
quotaon [-g] [-u] [-v] -a
-g:グループのクォータ操作を行う。
-u:ユーザーのクォータ操作を行う。
-v:クォータが起動されるファイルシステム毎にメッセージを表示。
-a:クォータが指定がされている全てのファイルシステムに対してクォータを起動。
ファイルシステムのクォータを停止する
quotaoff [-g] [-u] [-v] filesystem ...
quotaoff [-g] [-u] [-v] -a
-g:グループのクォータ操作を行う。
-u:ユーザーのクォータ操作を行う。
-v:クォータが停止されるファイルシステム毎にメッセージを表示。
-a:全ファイルシステムのクォータを停止する。
ユーザーのクォータを編集する
edquota [-u] [-p proto-username] username ...
edquota -g [-p proto-groupname] groupname ...
edquota -t [-u]
edquota -t -g
-u:ユーザーのクォータを編集する。
-p:雛形として指定されたユーザーのクォータ設定し指定したユーザーのクォータに複製する。
-g:グループのクォータを編集する。
-t:ファイルシステムのソフトタイムリミットを編集する。
ファイルシステムをスキャンしディスク使用量を調べる
quotacheck [-g] [-u] [-v] filesystem ...
quotacheck [-g] [-u] [-v] -a
-g:グループIDごとに使用しているファイル数とディレクトリ数をカウントする。
-u:ユーザーIDごとに使用しているファイル数とディレクトリ数をカウントする。
-v:現在の実行状態を表示する。
-a:全ファイルシステムについてクォータをチェックする。