各ユーザの使えるディスク容量を制限するにはクォータ(quota)という仕組みを使う。
ユーザのホームディレクトリが/homeにある場合、/homeディレクトリのファイル
システムであるルート(/)に対して設定を行う。
当然、rootでログインして設定を行う。
/etc/fstabファイルをviで開く。
| # vi /etc/fstab |
/etc/fstabの内容が表示される。
| /dev/hda2 | / | ext2 | defaults | 1 1 |
| /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に対して クォータを設定したいので、/(ルート)に対してusrquotaオプションを指定する
| /dev/hda2 | / | ext2 | defaults,usrquota | 1 1 |
| /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 |
修正後、ファイルを保存する。次に、ファイルシステムのルートディレクトリ(/)に quota.userというファイルを作成する。
| # touch /quota.user |
作成後、rootユーザ以外からはファイルが見えないように設定する。
| # chmod 600 /quota.user |
クォータを有効にする。
| # quotaon / |
以上で、クォータを使う準備が整った。
edquotaコマンドを使い、ユーザ毎のクォータを設定する。
| # edquota ログイン名 |
実行すると、viエディタが起動し、現在のそのユーザの設定が表示される。
| Quotas for user ログイン名: | |
| /dev/hda2: blocks in use: 4, limits (soft = 0, hard = 0) | ←ブロックに対するクォータ |
| inodes in use: 0, limits (soft = 0, hard = 0) | ←iノードに対するクォータ |
ブロック数、iノード数に対してそれぞれソフトリミット、ハードリミットが表示される。
その部分の数値を変更し、保存する。
最後に、quotacheckコマンドでディスクの内容をクォータデータベースに反映
させる。
| # quotacheck / |
上記の設定により、ユーザ別の容量制限が可能になる。
容量を超えるファイルをコピーするなどして確認しよう。
なお、容量制限はあとで行うが、クォータの準備だけしたい場合でも、必ず一度はedquota コマンドを実行しなければならない。これをやらなかった場合、クォータデータベースが作成 されないため、サーバを再起動するとエラーメッセージが表示される。edquotaコマンドを 任意のユーザで実行し、ソフトリミットなどの数値を変えないまま保存しよう。
edquotaコマンドのオプションには、グループに関するものがある。もしかしたら
ユーザ毎ではなく、グループにクォータを設定すれば、グループに所属するユーザ全てに
クォータの設定が有効になるのでは?
と思うのだが、どうだろう・・・