IT pass HikiWiki - [ITPASS2011]quota の設定 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

[((<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サーバ構築ドキュメント>)) へ戻る]