容量制限の掛け方

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

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

設定方法

ユーザのホームディレクトリが/homeにある場合、/homeディレクトリのファイル システムであるルート(/)に対して設定を行う。
当然、rootでログインして設定を行う。

  1. クォータの準備

    /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 /

    以上で、クォータを使う準備が整った。

  2. クォータの設定

    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コマンドのオプションには、グループに関するものがある。もしかしたら ユーザ毎ではなく、グループにクォータを設定すれば、グループに所属するユーザ全てに クォータの設定が有効になるのでは?
と思うのだが、どうだろう・・・