容量制限の掛け方

各ユーザの使えるディスク容量を制限するにはクォータ(quota)という仕組みを使う。

●クォータ(quota)
ファイルシステム毎にユーザが使用できるファイル容量、iノードの数を制限するための仕組み。クォータを使うと、ユーザ毎にディクス容量、iノードの数それぞれについてハードリミットとソフトリミットを設定できる。
●ソフトリミット
警告付きで一時的に超えることのできる目安の容量。ユーザは、ソフトリミットを越えてもそのファイルシステムを利用できる。
ただし、この場合ログインするときにソフトリミットを越えたことを警告され、さらに一定期間以上その状態が続くとログインできなくなる。
ログインできなくなったユーザをログインできるようにするには、システム管理者がファイルを消すなどの処置を取るしかない。
●ハードリミット
それ以上はディスクを使わせないという限界容量。ハードリミット以上のディスク容量、iノードを利用することはできない。使おうとするとエラーメッセージが出る。

1.クォータを使えるように設定する

1-1 /etc/fstabの編集

/etc/fstabファイルをviで開く。

$ vi /etc/fstab

私の場合、次のようになっている。

/dev/hda2/ext3defaults1 1
/dev/hdb1/ext3defaults1 2
/dev/cdrom/mnt/cdromiso9660noauto,owner,ro0 0
/dev/hda1swapswapdefaults0 0
/dev/fd0/mnt/floppyext2noauto,owner0 0
none/procprocdefaults0 0
none/dev/ptsdevptsgid=5,mode=6200 0

どのファイルシステムに対してクォータを使うのかを指定する。今回は/homeに対してクォータを設定する。

1.ユーザ個々に対してquotaを有効にするには?

/dev/hda2/ext2defaults,usrquota1 1

2.グループに対してquotaを有効にするには?

/dev/hda2/ext2defaults,grpquota1 1

3.ユーザとグループ両方に対してquotaを有効にするには?

/dev/hda2/ext2defaults,usrquota,grpquota1 1

修正後、ファイルを保存する。

1-2 quota記録ファイルの作成

quotaを有効にするファイルシステムのルート・ディレクトリにquota記録ファイルを作成する。今回、/homeに対して設定を行うので、/home上にファイルを作成する。

# touch /home/aquota.user
# touch /home/aquota.group
# chmod 600 /home/aquota.user
# chmod 600 /home/aquota.group

なお、ユーザ及びグループのどちらかしか宣言を掛けないよう/etc/fstabを編集した場合、記録ファイルも該当するファイルのみでよい。(両方作成する必要はない)

1-3 記録ファイルを現在の状態に更新する

制限を掛けるファイルシステムのディスク利用状況を記録ファイルにセットする。quotaを有効にする前にはかならず行わなければならない

$ quotacheck -avug

1-4 再起動

以上の設定ができたら、マシンを再起動する。サービスの起動メッセージでquotaが有効(OK)になったかどうかを確認しよう。

2.特定のユーザにquotaを割り当てる

quotaが有効になったところで、特定のユーザに対して容量制限を行う。例えば「ranceというユーザが/homeで使える容量は最大10Mに設定する」場合、次のように行う。

2-1 edquotaを実行

ユーザ「rance」に対し、edquotaを実行する。

$ edquota -u rance

viエディタが開き、ユーザ「rance」の使用ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットが表示される。

Disk quotas for user rance (gid 500):
  Filesystem                   blocks       soft       hard     inodes     soft    hard
  /dev/hdb1                      9924          0          0        673        0       0

2-2 容量制限を行う

ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットを設定する。今回、最大10Mまでしか使えないように設定して、保存する。

Disk quotas for user rance (gid 500):
  Filesystem                   blocks       soft       hard     inodes     soft    hard
  /dev/hdb1                      9924       8000      10000        673     3000    4000

※ 1block = 1K

3.特定のグループにquotaを割り当てる

ユーザではなく、グループに対してもquotaを掛けられる。例えば「wwwuserというグループに所属するユーザが/homeで使える容量は最大10Mに設定する」場合、次のように行う。

3-1 edquotaを実行

グループ「wwwuser」に対し、edquotaを実行する。

$ edquota -g wwwuser

viエディタが開き、グループ「wwwuser」の使用ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットが表示される。

Disk quotas for group wwwusers (gid 500):
  Filesystem                   blocks       soft       hard     inodes     soft    hard
  /dev/hdb1                      9924          0          0        673        0       0

3-2 容量制限を行う

ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットを設定する。今回、最大10Mまでしか使えないように設定して、保存する。

Disk quotas for group wwwusers (gid 500):
  Filesystem                   blocks       soft       hard     inodes     soft    hard
  /dev/hdb1                      9924       8000      10000        673     3000    4000

4.動作確認

以上の設定により、指定したユーザ・グループに対して容量制限が有効になる。制限を越えるデータを転送するなどして、確認してみよう。

5.運用について

容量制限は掛けられるようになった。では今後、どのように運用していけばいいのかを考える。

5-1 quotacheckの定期的な実行

quotacheckは、ファイルシステムのディスク利用状況をスキャンし、quota記録ファイルに最新の情報を書き込む。よって、サーバ起動中にユーザが頻繁に書き込みを行う場合、quotacheckを定期的に行い、常に最新の情報にしておく必要がある。
具体的には、cronジョブとして定期的(1日1回、週1回など)に実行すればよい。

5-2 ファイルシステムの利用状況を確認する

repquotaは、あるファイルシステムに関するquota情報を集計表示する。

$ repquota -avug

制限を越えてるかどうかなどがチェックできる。一度実行してみよう。


[ TOP ]