2008/09/17

Quota・その1・ファイルシステム毎の設定

今までquota・ディスク容量制限というものをやったことが無かったのだが、必要に迫られ、やってみた。

CentOS機dc1上で、ユーザuser0[123]を作成し、これらにそれぞれ、45MBのソフトリミット、50MBのハードリミットを設定する。RHELでも同様に作業できる。大まかな流れは以下の通り。
  1. ファイルシステム毎の設定
  2. ユーザ毎の設定
  3. 運用

まず、容量制限を設定するファイルシステムに対して、quotaが動くよう設定する。インストール時に特に指定しなければ、LVMを使って以下の様に設定されている。
[root@dc1 ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
[root@dc1 ~]#
ユーザが自由に書込みできるのは、ユーザのホームディレクトリ/home/user[123]以下で、これはルート(/)に含まれている。
# 検索してみると、ルートにquotaを設定することはできない、と書いてあるページもあるが、これは誤りだ。

ルートのエントリを以下の通り編集する。
[root@dc1 ~]# cp -p /etc/fstab /etc/fstab.orig
[root@dc1 ~]# awk '{if ($2=="/" ) gsub(/defaults/,"defaults,usrquota,grpquota"); print $0 }' < /etc/fstab.orig > /etc/fstab
[root@dc1 ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults,usrquota,grpquota        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
[root@dc1 ~]#
ユーザ単位の制限のみ必要で、グループ単位の制限が不要の場合は、「,grpquota」は無くてもよい。

編集し終わったら、対象となるファイルシステムを再マウントする(unmount→mount)すればよい。しかし、ルートの場合は再起動するしかない。
[root@dc1 ~]# shutdown -r now


再起動後、シングルユーザモードに移行し、quotacheckコマンドを実行する。
シングルユーザモードで実行するのは、以下の理由による。デフォルトでは、quotacheckは、対象ファイルシステムをread-onlyモードで再マウントしようとするが、ルートの場合はこれが失敗する。オプション「-m」を指定すれば、この動作を行わないが、quotacheckコマンド実行中に対象ファイルシステムで書込みが発生すると、使用量に誤差がでてしまう。シングルユーザモードにすれば、書込みは最低限となる。
シングルユーザモードに移行する。
[root@dc1 ~]# telinit 1
INIT: Switching to runlevel: 1
INIT: Sending processes the TERM signal
Shutting down Cluster Module - cluster monitor: [  OK  ]
Shutting down ricci: [  OK  ]
<<略>>

Telling INIT to go to single user mode.
INIT: Going single user
INIT: Sending processes the TERM signal
INIT: Sending processes the KILL signal
sh-3.2#
この時点では、quotaファイルaquota.{user,group}は存在していない。
sh-3.2# ls -l /
total 146
drwxr-xr-x  2 root root  4096 Aug 20 01:54 bin
drwxr-xr-x  4 root root  1024 Aug 19 19:55 boot
drwxr-xr-x 10 root root  2840 Sep 17 00:28 dev
drwxr-xr-x 86 root root 12288 Sep 17 00:28 etc
drwxr-xr-x  2 root root  4096 Mar 30  2007 home
drwxr-xr-x 14 root root  4096 Aug 20 01:54 lib
drwx------  2 root root 16384 Aug 19 19:49 lost+found
<<略>>
drwxrwxrwt  3 root root  4096 Sep 17 00:27 tmp
drwxr-xr-x 14 root root  4096 Aug 19 19:52 usr
drwxr-xr-x 23 root root  4096 Aug 19 20:01 var
sh-3.2#
コマンドquotacheckを実行する。
sh-3.2# quotacheck -cugfma
グループ単位の制限が不要の場合は、「-g」オプションは不要。実行完了までしばらく時間がかかる。
実行後は、quotaファイルが作成されている。
sh-3.2# ls -l /
total 170
-rw-------  1 root root  7168 Sep 17 00:28 aquota.group
-rw-------  1 root root  6144 Sep 17 00:28 aquota.user
drwxr-xr-x  2 root root  4096 Aug 20 01:54 bin
drwxr-xr-x  4 root root  1024 Aug 19 19:55 boot
drwxr-xr-x 10 root root  2840 Sep 17 00:28 dev
drwxr-xr-x 86 root root 12288 Sep 17 00:28 etc
drwxr-xr-x  2 root root  4096 Mar 30  2007 home
drwxr-xr-x 14 root root  4096 Aug 20 01:54 lib
drwx------  2 root root 16384 Aug 19 19:49 lost+found
<<略>>
drwxrwxrwt  3 root root  4096 Sep 17 00:27 tmp
drwxr-xr-x 14 root root  4096 Aug 19 19:52 usr
drwxr-xr-x 23 root root  4096 Aug 19 20:01 var
sh-3.2#
次に、対象ファイルシステムを再マウントするが、ルートの場合は再起動するしかない。
sh-3.2# shutdown -r now


再起動後、対象ファイルシステムに対してquotaが実行されているかどうかを確認する。
[root@dc1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw,usrquota,grpquota)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
[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      -- 1570628       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


[root@dc1 ~]#
この段階では、どのユーザに対しても制限が設定されていない。


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

0 件のコメント: