2008/09/17

Quota・その3・運用

実際にユーザuser01で、制限がどう働くか見てみよう。
まず、quotaの状況を確認する。
[user01@dc1 ~]$ quota
Disk quotas for user user01 (uid 500):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup00-LogVol00
76   46080   51200              10       0       0
[user01@dc1 ~]$
この時点では、どの制限にも達していない。
ファイルサイズ45MBのファイルを作成する。
[user01@dc1 ~]$ head --bytes=`expr 45 \* 1024 \* 1024` /dev/zero > 45M.dat
dm-0: warning, user block quota exceeded.
[user01@dc1 ~]$
ファイルは作成されたが、ソフトリミットに達した旨警告された。状況を確認する。
[user01@dc1 ~]$ quota
Disk quotas for user user01 (uid 500):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup00-LogVol00
46212*  46080   51200   7days      11       0       0
[user01@dc1 ~]$
制限に達したため、使用ブロック容量の後に「*」が表示されている。猶予時間(grace time)は、7日間になっている。
この状態では、ファイルを作成できるが、ハードリミットに達するとそれ以上書込めなくなる。ファイルサイズ1MBのファイルを一つづつ作ってみる。
[user01@dc1 ~]$ for (( i=1; $i <= 6; i=`expr $i + 1` )) do command="head --bytes=`expr 1024 \* 1024` /dev/zero > 1M-$i.dat"; echo $command; eval $command; done
head --bytes=1048576 /dev/zero > 1M-1.dat
head --bytes=1048576 /dev/zero > 1M-2.dat
head --bytes=1048576 /dev/zero > 1M-3.dat
head --bytes=1048576 /dev/zero > 1M-4.dat
head --bytes=1048576 /dev/zero > 1M-5.dat
dm-0: write failed, user block limit reached.
head: write error: Disk quota exceeded
head: write error
head --bytes=1048576 /dev/zero > 1M-6.dat
-bash: 1M-6.dat: Disk quota exceeded
[user01@dc1 ~]$
五番目のファイルでハードリミットに達し、途中で書込めなくなった。六番目のファイルは、作成する前に失敗している。確認してみよう。
[user01@dc1 ~]$ ls -l
total 51124
-rw-r--r-- 1 user01 users  1048576 Sep 17 00:32 1M-1.dat
-rw-r--r-- 1 user01 users  1048576 Sep 17 00:32 1M-2.dat
-rw-r--r-- 1 user01 users  1048576 Sep 17 00:32 1M-3.dat
-rw-r--r-- 1 user01 users  1048576 Sep 17 00:32 1M-4.dat
-rw-r--r-- 1 user01 users   872448 Sep 17 00:32 1M-5.dat
-rw-r--r-- 1 user01 users 47185920 Sep 17 00:32 45M.dat
[user01@dc1 ~]$ quota
Disk quotas for user user01 (uid 500):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup00-LogVol00
51200*  46080   51200              16       0       0
[user01@dc1 ~]$
ハードリミットに達したため、猶予時間が表示されなくなった事に注意。この状態では、空ファイルすら作れない。
[user01@dc1 ~]$ touch a
touch: cannot touch `a': Disk quota exceeded
[user01@dc1 ~]$
ファイルを削除し、ハードリミットを下回れば、再びファイルを作成可能になる。
[user01@dc1 ~]$ rm 1M-5.dat
[user01@dc1 ~]$ touch a
[user01@dc1 ~]$


この状態を、管理者側で確認してみよう。
[root@dc1 ~]# repquota -a
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol00
Block grace time: 7days; Inode grace time: 7days
Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 1571120       0       0          59255     0     0
daemon    --      20       0       0              3     0     0
lp        --      16       0       0              2     0     0
smmsp     --      16       0       0              2     0     0
avahi     --       8       0       0              1     0     0
apache    --      24       0       0              3     0     0
ntp       --      16       0       0              2     0     0
rpc       --       4       0       0              1     0     0
rpcuser   --       8       0       0              1     0     0
luci      --  263348       0       0          20552     0     0
dovecot   --       8       0       0              1     0     0
webalizer --      32       0       0              4     0     0
piranha   --      16       0       0              3     0     0
rpm       --   24324       0       0             75     0     0
ricci     --      60       0       0              8     0     0
user01    +-   50352   46080   51200  6days      17     0     0
user02    --      76   46080   51200             10     0     0
user03    --      76   46080   51200             10     0     0


[root@dc1 ~]#
ユーザuser01の猶予時間が6日間と表示されている。
管理者は各ユーザの猶予時間を変更することができる。5分(300秒)に変更してみよう。
[root@dc1 ~]# setquota -T user01 300 unset -a
[root@dc1 ~]# repquota -a
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol00
Block grace time: 7days; Inode grace time: 7days
Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 1571120       0       0          59255     0     0
daemon    --      20       0       0              3     0     0
lp        --      16       0       0              2     0     0
smmsp     --      16       0       0              2     0     0
avahi     --       8       0       0              1     0     0
apache    --      24       0       0              3     0     0
ntp       --      16       0       0              2     0     0
rpc       --       4       0       0              1     0     0
rpcuser   --       8       0       0              1     0     0
luci      --  263348       0       0          20552     0     0
dovecot   --       8       0       0              1     0     0
webalizer --      32       0       0              4     0     0
piranha   --      16       0       0              3     0     0
rpm       --   24324       0       0             75     0     0
ricci     --      60       0       0              8     0     0
user01    +-   50352   46080   51200  00:05      17     0     0
user02    --      76   46080   51200             10     0     0
user03    --      76   46080   51200             10     0     0


[root@dc1 ~]#


ユーザuser01で、動作を確認してみる。設定直後。
[user01@dc1 ~]$ quota
Disk quotas for user user01 (uid 500):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup00-LogVol00
50352*  46080   51200   00:05      17       0       0
[user01@dc1 ~]$
ソフトリミットに達しているが、猶予時間がある。この状態では、まだファイルを作成することができる。
五分後。
[user01@dc1 ~]$ quota
Disk quotas for user user01 (uid 500):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup00-LogVol00
50352*  46080   51200    none      17       0       0
[user01@dc1 ~]$
猶予時間がnoneになっている。この状態では、空ファイルも作成できない。
[user01@dc1 ~]$ touch b
dm-0: write failed, user block quota exceeded too long.
touch: cannot touch `b': Disk quota exceeded
[user01@dc1 ~]$
この制限は、ソフトリミットを下回るまで解除されない。
[user01@dc1 ~]$ rm 1M-*
[user01@dc1 ~]$ quota
Disk quotas for user user01 (uid 500):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup00-LogVol00
46224*  46080   51200    none      13       0       0
[user01@dc1 ~]$ touch b
dm-0: write failed, user block quota exceeded too long.
touch: cannot touch `b': Disk quota exceeded
[user01@dc1 ~]$ rm 45M.dat
[user01@dc1 ~]$ touch b
[user01@dc1 ~]$ quota
Disk quotas for user user01 (uid 500):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/VolGroup00-LogVol00
92   46080   51200              13       0       0
[user01@dc1 ~]$

その1・ファイルシステム毎の設定』『その2・ユーザ毎の設定』『その3・運用

0 件のコメント: