[ITPASS2011]quota の設定
[ITPASSサーバ構築ドキュメント へ戻る]
目的
各ユーザのディスク使用量を
- ソフトリミット 40 GB
- ハードリミット 48 GB
に制限するため, quota を導入する.
kernel が quota に対応しているか確認
以下のコマンドを入力する. (2.6.32-5-amd64 等は kernel のバージョンに合わせる)
$ grep CONFIG_QUOTA /boot/config-2.6.32-5-amd64
CONFIG_QUOTA=y と表示されれば対応している.
quota コマンドが入っているか確認
- 方法 1:
$ which quota /usr/bin/quota
のように quota コマンドのパスが表示されれば入っている.
メッセージが返ってこなければ入っていない.
- 方法 2:
$ dpkg -l | grep quota
dpkg -l でパッケージの一覧を表示し, "quota" を含む行を表示する.
表示されなければ入っていない.
quota が入っていなければ, quota のインストールを行う.
quota のインストール
root 権限を得る ( itpadmin グループに入っているユーザ、または chikuwa XX のユーザーのみ可能 ).
$ sudo -s
quota パッケージをインストールする.
# apt-get install quota
/etc/fstab の編集
# vim /etc/fstab
で, 以下のように home を含むファイルシステム ( /dev/sda3 ) の <options> 項目に usrquota を追加する.
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # / was on /dev/sda1 during installation UUID=f3dd32e8-c628-4abd-a6fb-07950b19eaab / ext3 errors=remount-ro 0 1 # /home was on /dev/sda3 during installation UUID=374db796-98f7-458e-acc4-5dee7234f046 /home ext3 defaults,usrquota 0 2 ^^^^^^^^ # swap was on /dev/sda2 during installation UUID=05758d20-7a3f-4a88-95d3-1f73bcc2c8e5 none swap sw 0 0 # swap was on /dev/sdb2 during installation UUID=8996c268-e8ca-4aae-98b0-26915ca5468e none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
quota の記録ファイル ( aquota.user ) の作成
quota を停止させる
# /etc/init.d/quota stop
aquota.user ファイルを作成するために以下のコマンドを実行する. ファイルシステムは /home 領域をマウントしたものを指定.
# quotacheck -cu /dev/sda3
aquota.user ファイルのパーミッションが以下の様になっていることを確認する.
root@ika-itpass:/home# ls -l aquota.user -rw------- 1 root root 21504 2011-11-14 19:36 aquota.user
quota の再起動
/etc/fstab の情報を反映させるために, quotaを再起動させる.
# /etc/init.d/quota start
gate ユーザの quota 設定
gate-toroku-system は新規ユーザのホームディレクトリを 作成した際に, gate ユーザに設定された quota を新規ユーザに 適用する. そのため gate ユーザに quota を設定する.
gate ユーザにソフトリミット 40 GB, ハードリミット 48 GB の quota をかける.
# export EDITOR=vim # edquota gate
デフォルトで立ち上がるエディターが使いにくい場合は上記のようにエディターを変更する. この場合 vim が立ち上がるので, 以下のように編集する. 容量のリミットは, soft 項目 40 000 000 ( 単位は KB ), hard 項目 48 000 000 ( 単位は KB ). ファイル数のリミットは, soft 項目も hard 項目も 0 ( 単位はファイル数 ).
Disk quotas for user gate (uid 500): Filesystem blocks soft hard inodes soft hard /dev/sda3 5060 40000000 48000000 987 0 0
既存ユーザの quota 設定
gate ユーザの quota を, 既に /home に存在する全てのユーザに適用する.
# cd /home # edquota -p gate `gate-user-list stable`
cps はソフトリミット 100 GB, ハードリミット 100 GB に変更しておく.
# edquota -u cps
山中先生(mdy)のアカウントはソフトリミット 80GB, ハードリミット 96GB に変更する.
# edquota mdy
以下のコマンドで各ユーザの quota の情報を確認する.
# repquota -v /home
とすると, 各ユーザの quota 情報が表示される.
ディスクの使用状態を見る
各ユーザがディスクの使用状態を見るには, 以下のコマンドを打つ.
$ quota
ちなみに, root 権限を持つユーザが
# quota [ユーザ名]
と打つと, [ユーザ名] のディスクの使用状態が見ることが出来る.
ソフトリミット超過の猶予期間
デフォルトでは 7 日間である. 変更する場合は edquota コマンドの -t, -T オプションを使って変更できる. 詳しくは man を参照.
動作確認
試験のために, 一時的に適当なユーザ(ここでは仮に test とする)の quota の設定を ソフトリミット 200 MB, ハードリミット 250 MB にする.
dd コマンドを用いて, 200 MB のソフトリミットを越えるサイズの ファイルを作成し, 警告されるかどうかを確認する. 次のコマンドは, test のホームで行うこと.
$ dd if=/dev/zero of=tmp bs=1000k count=200
/dev/zero を入力ファイルとして, tmp を出力ファイルとして読み書きする. bs は一度に行う読み出し書き込みのサイズ, count は読み出し書き込みの回数である. ( このようにすると, 1000 kbytes × 200 のサイズのファイル tmpが作成される. )
正常に quota が設定されていれば以下のように警告が表示される.
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.639584 s, 400 MB/s
tmp を削除し, 同様にハードリミットを越えるサイズのファイルを作成し, 警告されるかどうか確認する.
$ dd if=/dev/zero of=tmp bs=1000k count=300
正常に quota が設定されていれば以下のように警告が表示される.
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.594481 s, 430 MB/s
動作確認が終われば忘れずにファイルを削除し, quota の設定も 元に戻しておくこと.
/home.bk の quota 設定の解除
(注意) この作業はサーバ交換作業後に行われる. quota の設定が終わった後にローカルバックアップを取るために /home.bk をマウントしたが, ローカルバックアップを取らないことに なったためにマウントする必要がなくなった場合の作業である. ゆえに, ローカルバックアップを取り続けるのであればこの作業は必要ない.
ika のローカルバックアップのために行った /home.bk 領域への quota の設定の影響で, edquota コマンドや quota コマンドを実行すると, /home.bk 領域のファイルも読み込もうとして「ファイルが存在しない」という旨のエラーが表示される. それを解消するために fstab 内にある記述を
/dev/sdb3 /home.bk ext3 defaults,usrquota 0 2
から
/dev/sdb3 /home.bk ext3 defaults 0 2
に変更する. その後, /bk と /home.bk を一度アンマウントし, マウントしなおす.
# umount -a # mount -a
マウントが正しくされているかどうかを以下のコマンドで確認する.
root@ika-itpass:/home/chikuwa2# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda1 57674192 8491012 46253496 16% / udev 8229824 224 8229600 1% /dev /dev/sda3 1834427936 271876792 1469367608 16% /home /dev/sdb1 57674192 8735396 46009112 16% /bk /dev/sdb3 1834427936 271933828 1469310572 16% /home.bk
edquota や quota を実行してもエラーが出ないことが確認できたら完了.
[ITPASSサーバ構築ドキュメント へ戻る]
Keyword(s):
References:[[ITPASS2011]2011年度サーバ構築ログ] [ITPASSサーバ構築ドキュメント]