各ユーザの使えるディスク容量を制限するにはクォータ(quota)
という仕組みを使う。
/etc/fstabファイルをviで開く。
$ vi /etc/fstab 私の場合、次のようになっている。
/dev/hda2 / ext3 defaults 1 1 /dev/hdb1 / ext3 defaults 1 2 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 /dev/hda1 swap swap defaults 0 0 /dev/fd0 /mnt/floppy ext2 noauto,owner 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 どのファイルシステムに対してクォータを使うのかを指定する。今回は
/homeに対してクォータを設定する。1.ユーザ個々に対してquotaを有効にするには?
/dev/hda2 / ext2 defaults ,usrquota1 1 2.グループに対してquotaを有効にするには?
/dev/hda2 / ext2 defaults ,grpquota1 1 3.ユーザとグループ両方に対してquotaを有効にするには?
/dev/hda2 / ext2 defaults ,usrquota,grpquota1 1 修正後、ファイルを保存する。
quotaを有効にするファイルシステムのルート・ディレクトリに
quota記録ファイルを作成する。今回、/homeに対して設定を行うので、/home上にファイルを作成する。
# touch /home/aquota.user
# touch /home/aquota.group
# chmod 600 /home/aquota.user
# chmod 600 /home/aquota.groupなお、ユーザ及びグループのどちらかしか宣言を掛けないよう/etc/fstabを編集した場合、記録ファイルも該当するファイルのみでよい。(両方作成する必要はない)
制限を掛けるファイルシステムのディスク利用状況を記録ファイルにセットする。
quotaを有効にする前にはかならず行わなければならない。
$ quotacheck -avug
以上の設定ができたら、マシンを再起動する。サービスの起動メッセージで
quotaが有効(OK)になったかどうかを確認しよう。
quotaが有効になったところで、特定のユーザに対して容量制限を行う。例えば「ranceというユーザが/homeで使える容量は最大10Mに設定する」場合、次のように行う。
ユーザ「rance」に対し、
edquotaを実行する。
$ edquota -uranceviエディタが開き、ユーザ「rance」の使用ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットが表示される。
Disk quotas for user rance (gid 500): Filesystem blocks soft hard inodes soft hard /dev/hdb1 9924 0 0 673 0 0
ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットを設定する。今回、最大10Mまでしか使えないように設定して、保存する。
Disk quotas for user rance (gid 500): Filesystem blocks soft hard inodes soft hard /dev/hdb1 992480001000067330004000※ 1block = 1K
ユーザではなく、グループに対してもquotaを掛けられる。例えば「wwwuserというグループに所属するユーザが/homeで使える容量は最大10Mに設定する」場合、次のように行う。
グループ「wwwuser」に対し、
edquotaを実行する。
$ edquota -gwwwuserviエディタが開き、グループ「wwwuser」の使用ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットが表示される。
Disk quotas for group wwwusers (gid 500): Filesystem blocks soft hard inodes soft hard /dev/hdb1 9924 0 0 673 0 0
ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットを設定する。今回、最大10Mまでしか使えないように設定して、保存する。
Disk quotas for group wwwusers (gid 500): Filesystem blocks soft hard inodes soft hard /dev/hdb1 992480001000067330004000
以上の設定により、指定したユーザ・グループに対して容量制限が有効になる。制限を越えるデータを転送するなどして、確認してみよう。
容量制限は掛けられるようになった。では今後、どのように運用していけばいいのかを考える。
quotacheckは、ファイルシステムのディスク利用状況をスキャンし、quota記録ファイルに最新の情報を書き込む。よって、サーバ起動中にユーザが頻繁に書き込みを行う場合、quotacheckを定期的に行い、常に最新の情報にしておく必要がある。
具体的には、cronジョブとして定期的(1日1回、週1回など)に実行すればよい。
repquotaは、あるファイルシステムに関するquota情報を集計表示する。
$ repquota -avug 制限を越えてるかどうかなどがチェックできる。一度実行してみよう。