/homeのユーザーディレクトリをQuotaで容量制限をかける

別にユーザーディレクトリに制限をかけたくない場合は、飛ばしてください。

quotaとはディスクスペースをユーザごとに制限するソフトです。
利用できる容量を制限したり、作成できるファイル数を制限したりすることができます。

※ Quotaで容量制限する場合、インストールの際、手動でパーテンションを作成しておく必要があります。


※ Quotaのバージョンについて…
Vine2*系ではバージョン1のQuota(quota.user)を使用しており、簡単に設定する事ができました。
Vine3*系から新しいフォーマットのバージョン2のQuota(aquota.user)を使用する事になったのですが、
Vine3*系のKernelはバージョン2のQuota(aquota.user)を認識できずQuota起動時にエラーが出ます。

解決方法として、バージョン1のQuota(quota.user)まで落とす方法も考えたのですが、ON、OFF状態が表示さず、
Webminでの操作ができなかったので、却下しました。

どうしてもバージョン2のQuota(aquota.user)でやりたかった(諦めが悪い…)ので、色々と苦労しましたが、
調べた結果バージョン2のQuota(aquota.user)に対応した設定方法が分かりましたので紹介したいと思います。

※ Vine Linux4系ではこのエラーは解決しています。

Quotaの設定

まず、Quotaがインストールされているか調べる

# rpm -q quota
quota-3.06-7vl1 ← これが表示されればインストールされています。

インストールされていない場合は

# apt-get install quota


設定ファイル編集

# vi /etc/fstab
 i キー(入力モード)

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

上記のように赤字の部分,usrquotaを追加します。


編集したら Esc キー(コマンドモード) :wq で保存


# mount -o remount /home ← /home をリマウント


# mount ← usrquotaが追加されているのを確認
/dev/hda6 on / type ext3 (rw)
none on /proc type proc (rw)
none on /proc/bus/usb type usbfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda7 on /home type ext3 (rw,usrquota) ← 確認
none on /dev/shm type tmpfs (rw)
/dev/hda3 on /usr type ext3 (rw)
/dev/hda2 on /var type ext3 (rw)


# quotacheck -c -ug -v /home ← Quotaデータベースファイルを作成
作成できない場合は下記コマンドでquotaを停止
# quotaoff /home

/home/にaquota.userという 名前のQuotaファイルが作成されているか確認

# ls -l /home/aquota.user
-rw------- 1 root root 7168 Jan 10 21:00 /home/aquota.user



※ Vine Linux3系ではQuotaの起動でエラーが出ますので次項目の対処法を施してください。

# quotaon -u /home ← Quota起動

# quotaon -p -a ← Quotaが有効になっているかチェック
group quota on / (/dev/hda6) is off
user quota on / (/dev/hda6) is off
group quota on /boot (/dev/hda1) is off
user quota on /boot (/dev/hda1) is off
group quota on /home (/dev/hda7) is off
user quota on /home (/dev/hda7) is on ← ユーザーの/homeが「on」になってっればOK
group quota on /usr (/dev/hda3) is off
user quota on /usr (/dev/hda3) is off
group quota on /var (/dev/hda2) is off
user quota on /var (/dev/hda2) is off

VineLinux3系でQuota起動時のエラー対処法


下記のエラーでquota が起動できず、皆さん悩んでいらっしゃる事と思います。
管理人Yosiもこのエラーでかなりハマりました。

# quotaon -u /home
quotaon: using /home/aquota.user on /dev/sda3 [/home]: そのようなプロセスはありません
quotaon: Quota format not supported in kernel.


# insmod quota_v2 ← まずquota_v2モジュールを読み込みます。

# quotacheck -avum ← Quotaデータベースファイル更新

# quotaon -u /home ← Quota起動

# quotaon -p -a ← Quotaが有効になっているかチェック
group quota on / (/dev/hda6) is off
user quota on / (/dev/hda6) is off
group quota on /boot (/dev/hda1) is off
user quota on /boot (/dev/hda1) is off
group quota on /home (/dev/hda7) is off
user quota on /home (/dev/hda7) is on ← ユーザーの/homeが「on」になってっればOK
group quota on /usr (/dev/hda3) is off
user quota on /usr (/dev/hda3) is off
group quota on /var (/dev/hda2) is off
user quota on /var (/dev/hda2) is off


起動時にquota_v2モジュールを読み込むように設定

# vi /etc/modprobe.conf

 iキー(入力モード)

alias quota quota_v2 
← 追記

記載したら Esc キー(コマンドモード):wqで保存


# vi /etc/modules.conf

 iキー(入力モード)

alias quota quota_v2 
← 追記

記載したら Esc キー(コマンドモード):wqで保存


# vi /etc/rc.d/rc.sysinit

(725行目付近)
 iキー(入力モード)

if [ -x /sbin/quotaon ]; then
    /sbin/modprobe quota_v2 ← ここに追記
    action $"Enabling local filesystem quotas: " /sbin/quotaon -aug fi

記載したら Esc キー(コマンドモード):wqで保存


ソフトリミット、ハードリミット、猶予期間とは

ユーザとグループへの quota の割当て方法について説明する前に、quota の設定を行なうために重要な3つの用語について説明します。

ソフトリミット(Soft Limit)
ソフトリミットとは、quota でディスクの使用量を制限されたユーザがそのパーティション上で使用可能な最大のディスク容量をいいます。

ハードリミット(Hard Limit)
ハードリミットとは、ディスク使用量の絶対的な制限で、quota でディスクの使用量を制限されたユーザは、ハードリミットを越えることが出来ません。

猶予期間
猶予期間とは、ソフトリミットが強制的に実行されるまでの期間のことで、この期間にのみハードリミットまでディスクを使用することが可能になります。

ユーザーに容量制限をかける


# edquota test ← testユーザーに制限をかける場合

例)
testユーザーのホームディレクトリ容量ソフトを20480KB(20MB)、ハードを25600KB(25MB)に制限する場合

Disk quotas for user test (uid 503):
 Filesystem     blocks     soft     hard    inodes   soft   hard
 /dev/hda7     10240     20480    25600    736     0     0



# repquota -a ← 設定チェック
*** Report for user quotas on device /dev/hda7
Block grace time: 7days; Inode grace time: 7days
                Block limits           File limits
User       used   soft   hard grace   used  soft  hard grace
------------------------------------------------------------------
test   --  10240   20480  25600        736   0   0 ← testユーザーの設定


testユーザのクォータ設定をtest2ユーザにコピーする場合

# edquota -p test test2

これでtest2ユーザもブロック数がソフトリミット20MB、ハードリミット25MBに制限されます。

猶予期間の設定


# 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/hda7             7days            7days

Filesystem
クォータ設定を行う対象ファイルシステム

Block grace period
ブロック数に対する猶予期間

Inode grace period
inode数に対する猶予期間

デフォルトでは7days(1週間)に設定されています。
時間の単位は seconds(秒)、minutes(分)、hours(時)、days(日) 、weeks(週)、months(月) です。


Quotaのテスト

1)テストユーザーにソフトリミット、ハードリミットを小さめに設定します。

2)FTPでテストユーザーのホームディレクトリに画像等大き目のファイルをアップロードします。

3)ハードリミットに足した時点でエラーが出てアップロードが不可能になれば、設定は上手くいっています。
  FFFTPの場合「552 Transfer aborted. Disk quota exceeded




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.