サーバー構築 Quota 設定編

この記事は約8分で読めます。
本記事は最終更新日より 1 年以上経過しております。
スポンサーリンク

ほんとこれ細かいシステム設定になる。
Quota というのは、HDD にあるパーティション内でユーザーが使用できるディスク領域を「制限する」物。
現行稼働ホストでは /home (ユーザー領域) の容量が小さいからこれを使っていた。


新規ホストの /home 121GB でこれが必要になるかは疑問だが、何れ必要になるだろうということで設定。

先ずは設定ファイルの書き換え。fstab という OS 起動時にオートマウントするパーティションが書かれたファイル。
内容を表示させるとこんな感じになっている。

$ cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/home /home ext3 defaults 1 2
LABEL=/tmp /tmp ext3 defaults 1 2
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
LABEL=/boot1 /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
LABEL=SWAP-sda6 swap swap defaults 0 0

今回は「/home」に対して制限をかけるので、上記内容で表示されているうち

LABEL=/home /home ext3 defaults 1 2

これを次の赤文字で示す物を追記する。

LABEL=/home /home ext3 defaults,usrquota 1 2

そして次の様に一連のコマンドを打ち込む。

# mount -o remount /home
# quotacheck -augc
# ls -al /home/aquota.user
-rw——- 1 root root 7168 Oct 30 05:16 /home/aquota.user
# quotaon -u /home

とこんな感じ。
最初に fstab を書き換えたので /home のパーティションを再マウントする。
次に Quota 領域のチェックを行う。容量に寄っては時間がかかるので待つ。
完了すると /home 以下に「aquota.user」というファイルが出来ているので、これを確認する。
そして quotaon コマンドでディスク領域の使用制限をかける。
今回はユーザーに対する制限のみなので、グループを対象にした制限は行わない。
よって、quota が正常に設定されたかを確認すると以下の様になる。

# quotaon -p /home/
group quota on /home (/dev/sda8) is off
user quota on /home (/dev/sda8) is on

user quota が on になっていれば ok。

次に容量制限をした時、あるユーザーに設定した容量がオーバーした時に即刻エラーを返し、
これ以上のディスク領域使用を禁止するようにしてみた。

# edquota -t

とすると

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sda8                      7days                     7days

なんて出てくると思う。初期設定では容量オーバーしても「執行猶予」として一週間は
オーバーしていられる状態である。
これをいくつものユーザーに対して有効にしてたら制限をかけた意味が薄れると思う。

そこで次の様に書き換えた。

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sda8                      0seconds                 7days

問答無用で設定された制限値オーバーは一瞬たりとも許さない。
FTP でファイル転送していれば FTP クライアントがエラーを受けとるのでユーザーに対しても問題はない。

肝心なディスク領域の制限は「edquota」コマンドを用いる。

# edquota -u USERNAME

自動で vi による編集モードに入る。

Disk quotas for user USERNAME (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda8                        68          0          0         11        0        0

こんな感じに出る。
容量制限を行うので、弄るところは「blocks」と書かれた右隣 2 つ「soft, hard」になる。
SoftLimit, HardLimit という意味になるのだが、これは両項目とも同じ数値を入れてやる。
この時入れる容量の数値は「KB 単位」であることに注意を。
inodes は簡単に言えば作成されているファイル数。これも制限出来るが、必要性を感じないので今回はパス。

設定例。500MB で制限 (1MB = 1024KB)。

Disk quotas for user USERNAME (uid 1000):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda8                       68     512000     512000         11        0        0

こうすると設定されたユーザーはホームディレクトリに使えるディスク領域が 500MB になる。
いぢわるして 1MB で設定する事も可能である。はっきり言って嫌がらせなのでやらないが (笑

あとは補足になるけど、同じ制限値を要するユーザーを多数追加した場合にいちいちこれをやるのは面倒。
なので、ベースとなる制限値を設けたユーザーをテンプレとして使うことが出来る。
「UserA さんの制限値を UserB さんにもかける」
なんて場合

# edquota -p UserA UserB

これだけで ok。

quota のレポートを見るコマンドは「repquota」というやつ。

# repquota -as
*** Report for user quotas on device /dev/sda8
Block grace time: 00:00; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 188M 0 0 4 0 0
USERAME — 68 0 0 11 0 0

こんな感じで見ることができるので、設定した箇所が反映されてるかーとか
途中で使用率からみた制限値がだめだなーで設定し直す時なんかは便利かも。

というお話しでした。

スポンサーリンク

コメント

タイトルとURLをコピーしました