Quotaの設定

提供: Astarisk Works Wiki


目次

Quotaとは

Quotaというのは、一般的には「分量、割当て」などという意味ですが、UNIXではユーザやグループ、ファイルシステムに対してディスクの使用量を制限するための仕組みのことを言います。

Quotaの動作環境確認

利用する環境でQuotaが利用可能かどうかの確認の方法を説明します。 ちなみに、RedHat Enterprise Linux 3では利用可能です。

カーネルの確認

Quotaはkernel-1.3.8x からカーネルに組み込まれている機能なので、現在のカーネルでは一般的にサポートされている機能になります。独自にカーネルをビルドした環境ではビルドした方に確認ください。

パッケージの確認

rpmコマンドで quota パッケージがインストールされていることを確認します。インストールされていない場合には、インストールCD-ROMなどからパッケージのインストールを行ないます。

# rpm -q quota
# quota-3.09-1

Quotaの設定

Quotaを有効にするための設定を説明します。

/etc/fstabの設定

/etc/fstabでQuotaを管理するパーティションを指定します。Quotaはパーティション単位で設定します。 次の例はRHEL 3の未設定のfstabです。

LABEL=/                 /                       ext3    defaults 1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/hda3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660  noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0

次はquotaを設定したfstabです。

LABEL=/                 /                       ext3    defaults,usrquota 1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/hda3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0

1行目に&color(red){usrquota}という単語を追加しています。これがユーザ単位のQuotaを設定するパーティションに指定しているという意味になります。 グループ単位でQuptaを指定するときには&color(red){grpquota}と指定します。両方指定することも可能です。

LABEL=/   /     ext3    defaults,usrquota,grpquota 1 1

パーティションの再マウントもしくはリブート

Quotaの設定はディスクをマウントするときに読み込まれるので、有効にするためには再マウントする必要があります。

# mount -o remount /home

ただし、システムで重要なディレクトリ(/etcなど)を格納しているパーティションの場合、システムごと再起動したほうがいいでしょう。

再マウント後、mountコマンドで有効になっていることを確認します。

# mount
/dev/hda2 on / type ext3 (rw,usrquota)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)

一行目にusrquotaという表示が追加されています。設定したパーティションがこのようになっていればQuotaが有効になっています。

ハードリミットとソフトリミット、猶予期間

quotaの設定に用いる用語を説明します。

ソフトリミット(Soft Limit)
ソフトリミットとは、quota でディスクの使用量を制限されたユーザがそのパーティション上で使用可能な最大のディスク容量をいいます。
ハードリミット(Hard Limit)
ハードリミットとは、ディスク使用量の絶対的な制限で、quota でディスクの使用量を制限されたユーザは、ハードリミットを越えることが出来ません。
猶予期間
猶予期間とは、ソフトリミットが強制的に実行されるまでの期間のことで、この期間にのみハードリミットまでディスクを使用することが可能になります。

ユーザへの容量制限の設定

ユーザ単位にディスクの容量制限を設定する方法を説明します。 ユーザ単位にディスクの容量制限を設定できるのはusrquotaを設定したパーティション内のみです。

Quota管理データベースの作成

ユーザ単位のQuotaではaquota.userというファイルを管理データベースとして用います。このファイルは次のコマンドをパーティションのルートディレクトリで実行すると作成されます。

# quotacheck -avmu

初めて実行するときにはディスクのスキャンを行うため、少し時間がかかります。

ユーザに割り当てるディスク容量を設定する。

edquotaコマンドでユーザに割り当てるディスク容量を指定します。

# edquota ユーザ名

コマンドを実行すると環境変数EDITORで指定されたエディタが起動します。通常はviだと思いますが、GUI環境で使うときには注意してください。次の様な内容が表示されます。

# edquota nec
Disk quotas for user nec (uid 500):
 Filesystem       blocks      soft      hard    inodes    soft    hard
 /dev/sda6         45320         0         0      5509       0       0

各カラムの意味は次の通りです。

FilesystemQuotaの対象となるパーティション
blocks ユーザが使用しているブロック数(単位はKByte)
soft ブロック数のソフトリミット
hard ブロック数のハードリミット
inodes ユーザが使用しているファイル数
soft inode数のソフトリミット
hard inode数のハードリミット

これらのうち、softとhardの値をそれぞれ編集して容量制限を行います。また、0(ゼロ)を指定すると容量を制限しないという意味になります。

ソフトリミットの猶予期間の設定

次のコマンドを実行すると容量制限の設定と同様にエディタが起動し、編集できます。

# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
 Filesystem             Block grace period     Inode grace period
 /dev/sda6                     7days                  7days

これが初期設定です。ブロックとINODE(ファイル数)のそれぞれに設定可能です。単位はdaysのほかにsec、min、hour、day、week、monthが指定可能です。


グループへの容量制限の設定

特定のグループに対する容量を設定できますが、グループ全体で使える容量を設定することに注意してください。そのグループのユーザがそれぞれ設定した容量を使えるのではありません。 例えば、c2yuserというグループがあり、fp1とfp2というユーザがいるとき、c2yuserにquotaで200MBの容量を割り当てると、fp1とfp2合わせて200MB使えることになります。 あんまり使い道がないように思われるので、説明は割愛します。気が向いたら書き足します。 ユーザのときとの違いはquotacheck、edquotaコマンドに-gというオプションを追加することぐらいです。 詳しくはhttp://www.express.nec.co.jp/linux/tech/knowledge/system/quota.htmlでも見てください。

QuotaのON/OFF

通常、OSの起動スクリプトでquotaはONにされるのですが、どうも制限が効いていないと思ったら、quotaonコマンドを使ってください。

# quotaon -auvg
/dev/hda2 [/]: group quotas turned on

OFFにしたいときは次のようにします。

# quotaoff -auvg
/dev/hda2 [/]: group quotas turned off

Quotaの確認

自分にかけられているquotaの制限を確認するにはquotaコマンドを使います。

> quota
Filesystem	blocks	quota	limit	grace	files	quota	limit	grace
/dev/hda6	541	10000	15000	none	12	3000	4000

自分のグループのQuotaを確認するときは次のコマンドを使います。

>quota -g
Disk quotas for group fp (gid 503):
    Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
     /dev/hda2    1024*   1024    1024              32       0       0
個人用ツール