[Memo2009][ITPASS] tako 構築作業ログ(quota)(村上(健), 古家, 井谷)

[ITPASSサーバ構築ドキュメント へ戻る]

目的

各ユーザのディスク使用量を

  • ソフトリミット 10 GB
  • ハードリミット 12 GB

に制限するため, quota を導入する.

kernel が quota に対応しているか確認

以下のコマンドを入力する.

$ grep CONFIG_QUOTA /boot/config-2.6.26-2-amd64

CONFIG_QUOTA=y と表示されており, 対応している.

quota コマンドが入っているか確認

  • 方法1: $ which quota

    /usr/bin/quota のように quota コマンドのパスが表示されれば入っている.

    メッセージが返ってこなければ入っていない.

  • 方法2: $ dpkg -l | grep quota

    dpkg -l でパッケージの一覧を表示し, "quota" を含む行を表示する.

    表示されなければ入っていない.

quota が入っていないことが確認された.

quota のインストール

root 権限を得る (epaadmin グループに入っているユーザのみ可能).

$ sudo -s

quota パッケージをインストールする.

# apt-get install quota

/etc/fstab の編集

で, 以下のように home を含むファイルシステム (/dev/sda6) の <options> 項目に usrquota を追加する.

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda6       /home           ext3    defaults,usrquota  0      2    
/dev/sda5       none            swap    sw              0       0
/dev/sdb5       none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/hda        /media/cdrom1   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
/dev/sdb1       /bk             ext3    defaults,errors=remount-ro 0       2
/dev/sdb6       /home.bk        ext3    defaults,usrquota       0        2

/home の移動

  • /home が sda1 内に存在していた.
  • sda1 内の /home/* を sda6 にコピー.

    # cp -pr /home/* /mnt/sda6/
  • sda6 を /home としてマウントするように設定した.

quota の記録ファイル (aquota.user) の作成

/home ディレクトリに移動して aquota.user ファイルを作成する.

aquota.user ファイルのパーミッションを以下のように設定する.

システムの再起動

/etc/fstab の情報を反映させるためにシステムを再起動する.

gate ユーザの quota 設定

gate-toroku-system は, 新規ユーザのホームディレクトリを 作成した際に gate ユーザに設定された quota を新規ユーザに 適用してくれるので, gate ユーザに quota を設定する.

gate ユーザにソフトリミット 10 GB, ハードリミット 12 GB の quota をかける.

# edquota gate

vi が立ち上がるので, 以下のように編集する. 容量のリミットは, soft 項目 10000000 (単位は KB), hard 項目 12000000 (単位は KB). ファイル数のリミットは, soft 項目も hard 項目も 0 (単位はファイル数).

Disk quotas for user gate (uid 500):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sda1                     96208   10000000   12000000       7316        0        0

既存ユーザの quota 設定

gate ユーザの quota をすでに /home に存在するすべてのユーザに適用する.

# cd /home
# edquota -p gate `gate-user-list stable`

cps はソフトリミット 100 GB, ハードリミット 100 GB に変更しておく.

mosir,pschool はソフトリミット,ハードリミットともに無制限に変更しておく.

ちなみに,

# repquota -v /home

とすると, 各ユーザの quota 情報が表示される.

ディスクの使用状態を見る

各ユーザがディスクの使用状態を見るには, 以下のコマンドを打つ.

$ quota

ちなみに, root 権限を持つユーザが

# quota [ユーザ名]

と打つと, [ユーザ名] のディスクの使用状態が見れる.

ソフトリミット超過の猶予期間

デフォルトでは 7 日間である. 変更する場合は edquota コマンドの -t, -T オプションを使って変更できる. 詳しくは man を参照.

動作確認

試験のために一時的に適当なユーザの quota の設定を ソフトリミット 200 MB, ハードリミット 250 MB にする.

以下のように dd コマンドを用いて 200 MB のソフトリミットを越えるサイズの ファイルを作成し, 警告されるかどうか確認する.

$ dd if=/dev/zero of=tmp bs=1000k count=200

/dev/zero を入力ファイルとして, tmp を出力ファイルとして読み書きする. bs は一度に行う読み出し書き込みのサイズ, count は読み出し書き込みの回 数である. (このようにすると, 1000 kbytes × 200 のサイズのファイル tmp が作成される.)

警告されると以下のように表示される.

sda6: warning, user block quota exceeded.
200+0 records in
200+0 records out
204800000 bytes (205 MB) copied, 0.452723 seconds, 452 MB/s

tmp を削除し, 同様にハードリミットを越えるサイズのファイルを作成し, 警告されるかどうか確認する.

$ dd if=/dev/zero of=tmp bs=1000k count=300

警告されると以下のように表示される.

sda6: warning, user block quota exceeded.
sda6: write failed, user block limit reached.
dd: writing `tmp': ディスク使用量制限を超過しました
250+0 records in
249+0 records out
255713280 bytes (256 MB) copied, 0.634665 seconds, 403 MB/s

試験が終われば忘れずにファイルを削除し, quota の設定も 元に戻しておくこと!!

[ITPASSサーバ構築ドキュメント へ戻る]

Last modified:2009/10/22 22:11:08
Keyword(s):
References:[[ITPASS2009]2009年度サーバ構築ログ]