IT pass HikiWiki - [Memo2011][ITPASS] ika 構築作業ログ 15 (quota) Diff

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

== 目的


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

* ソフトリミット 40 GB

* ハードリミット 48 GB

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


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


以下のコマンドを入力した.


$ grep CONFIG_QUOTA /boot/config-2.6.32-5-amd64


CONFIG_QUOTA=y と表示された.

対応している.


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


$ which quota

/usr/bin/quota


のように 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 ) の作成

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

# cd /home
# touch aquota.user

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

# chmod 600 aquota.user

== システムの再起動

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

== gate ユーザの quota 設定

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

gate ユーザにソフトリミット 40 GB, ハードリミット 48 GB の
quota をかけるために,

# edquota gate

を実行するが,

/home/quota.user:そのようなファイルやディレクトリは見つかりません

と表示される.

確かにファイルが存在していなかったので試しに,

# cd /home
# touch quota.user

を実行した.

さらに, 改善の試みとして以下のコマンドを実行した.


((<"クォータの設定"|URL:http://www.hero-island.ne.jp/linux_pro/quota.html>))
を見たところ, 手順に以下のものが含まれていたため実行した.

# umount /home
# mount /home
((<"quota の設定"|URL:http://www.ep.sci.hokudai.ac.jp/~epwww/dvlop/quota.html>))
を見て, quota.user に情報が反映されていなかったことが原因かもしれないと思い
以下のコマンドを実行した.
# /etc/init.d/quota restart

((<"Debian Administration"|URL:http://www.debian-administration.org/articles/47>))
で手順を参考にしたところ, 以下の手順が含まれており, もしかしたらモジュールが
インストールされていないのかもしれないと思い実行した.

# modprobe quota_v2
# echo 'quota_v2' >> /etc/modules
(古いバージョン用の処置であるが, 念のためやってみた.)

その後, 再起動したら

quota.user

に quota の情報が書き込まれていたので

# edquota gate

を実行することができた.
aquota.user の方がバージョンが新しいが, aquota.user は中身が空であったため, 旧バージョンの quota.user を読みにいった結果であると考えられる.
なぜ quota.user に情報が書き込まれたのか原因はわからない.
(aquota.user が存在しなければエラーが出るため残しておく必要がある.)

edquota によって編集画面が立ち上がったので, 以下のように編集した.
容量のリミットは,
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                      2500   40000000   48000000        507        0        0

== 既存ユーザの quota 設定

gate ユーザの quota を, 既に /home に存在する全てのユーザに適用した.

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

cps はソフトリミット 400 GB, ハードリミット 400 GB に変更した.

# edquota -u cps

以下のコマンドで各ユーザの quota の情報を確認してみた.

# repquota -v /home

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

山中先生 はソフトリミット 80 GB, ハードリミット 96 GB に変更した.

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

各ユーザのディスクの使用状態を見るために, 以下のコマンドを打ってみた.

$ quota

すると
以下の様に 許可がありません と表示がでた.
各ユーザーのディスクの使用状況は確認出来なかった.

chikuwa2@tako-itpass:~$ quota
quota: Cannot open quotafile /home/aquota.user: 許可がありません
quota: Cannot open quotafile /home/aquota.user: 許可がありません
quota: Cannot open quotafile /home/quota.user: 許可がありません
quota: Cannot find any quota file to work on.

今後原因を追求する.

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

# quota [ユーザ名]

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


== 動作確認

quota コマンドは実行できなかったが, edquota により, 容量の設定はできたため実際にファイルが制限されているかどうかを確かめることにした.
試験のために, 一時的に適当なユーザ(ここでは仮に test とする)の quota の設定を ソフトリミット 200 MB,
ハードリミット 250 MB にした.

dd コマンドを用いて, 200 MB のソフトリミットを越えるサイズの
ファイルを作成し, 警告されるかどうかを確認しようとしてみた.
次のコマンドは, test のホームで行った.

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

しかし
以下のように警告が表示されない.

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

しかし、以下のように警告が表示されなかった.

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

かわりに
下記のようにリミットを超えるファイルを作れてしまった.
リミットの設定が反映されていないと思われる.
後日原因を解明するようにする.

ryukih@tako-itpass:~$ dd if=/dev/zero of=tmp bs=1000k count=2000
2000+0 records in
2000+0 records out
2048000000 bytes (2.0 GB) copied, 2.02003 s, 1.0 GB/s