quota の設定

ユーザが使用できるハードディスク容量を以下のように制限する.

softhard
mail10 GB12 GB
www10 GB12 GB

1. 準備

以下の事を確認しておく. まだ行っていない場合はここで行う.

1.1 quota のインストール

quota をインストールする

# apt-get install quota 

1.2 HDD にラベル付けする

HDD のラベル付けを行う. まずシステムの確認を行う.

# df -h
	ファイルシス   サイズ  使用  残り 使用% マウント位置
	/dev/sda1        902G  3.9G  852G    1% /
	udev              10M     0   10M    0% /dev
	tmpfs            1.6G   17M  1.6G    2% /run
	tmpfs            4.0G     0  4.0G    0% /dev/shm
	tmpfs            5.0M     0  5.0M    0% /run/lock
	tmpfs            4.0G     0  4.0G    0% /sys/fs/cgroup
	/dev/sdb1        917G   72M  871G    1% /bk
	tmpfs            801M     0  801M    0% /run/user/40004

/dev/sda1 (ルートシステム) に"root" というラベル名をつける

# tune2fs -L root /dev/sda1

/dev/sdb1 (システムバックアップ) に"sys-bk" というラベル名をつける

# tune2fs -L sys-bk /dev/sdb1

ラベル名の確認

  # tune2fs -l /dev/sda1 | grep "Filesystem volume name"
  # tune2fs -l /dev/sdb1 | grep "Filesystem volume name"

スワップ領域 にもラベルをつける. まずスワップ領域の確認

# blkid /dev/sda5 (sda5 とは限らないことに注意)
	/dev/sda5: UUID="94200373-4c4b-4d74-87ae-da510c844cf3" TYPE="swap"
	PARTUUID="d2fa2ae7-05"

一度スワップの削除後, ラベル名"swap" を付与して再作成

  # swapoff /dev/sda5 
  # mkswap -L swap /dev/sda5
  # swapon LABEL=swap

1.3 /etc/fstab の編集

ファイルシステムに quota 機能を加える為には, ディスクの使用制限を加えるファイルシステムに オプションとして "usrquota (ユーザに制限を加える)" を加える必要がある. また, デバイス名(/dev/sd??)ではなく,LABEL 名で 記述する.入れ替え時に外付けHDD のhome とhome.bk を認識するための行も追加しておく(コメントアウトしておいて 入れ替え時にコメントアウトを外す).

ラベル名"home" のオプションとして usrquota を付ける. /etc/fstab を以下のように編集する.

# emacs /etc/fstab 
	# /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).
	#
	# \               
	# / was on /dev/sda1 during installation
	#UUID=2c902ef2-8c8a-49d1-b736-0a8aafd0e8d7 /               ext4    errors=remount-ro 0       1 (コメントアウト)
	# /bk was on /dev/sdb1 during installation
	#UUID=f6d0bc9b-48d0-43dc-a4b8-d411f257f0b3 /bk             ext4    defaults        0       2 (コメントアウト)
	# swap was on /dev/sda5 during installation
	#UUID=94200373-4c4b-4d74-87ae-da510c844cf3 none            swap    sw              0       0 (コメントアウト)
	/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto        0       0
	LABEL=root      /               ext4        errors=remount-ro  0       1
	LABEL=sys-bk    /bk             ext4        defaults           0       2
	LABEL=swap      none            swap        sw                 0       0
	#LABEL=/home    /home           ext3        defaults,usrquota  0       2 (記述してコメントアウト)
	#LABEL=/home.bk /home.bk        ext4        defaults           0       2 (記述してコメントアウト)

/etc/fstab を編集後, quota を再起動すればシステムに反映されるが, 一度クオータの設定 を付け足した領域をアンマウントして # mount -a を実行することで即座に反映 させられる(以下は再構築作業時に行う).

# unmount /home
# mount -a

2. 作業

以下は, 基本的に入れ替え作業時に行うが, 一部, quota の制限を 変える際に参考となると思われる.

2.1 quota の記録ファイルの作成

quota はディスク制限に関するユーザ情報を quota,user もしくは aquota.user ファイルに蓄える. quota を有効にしたいディレクトリ(今回は /home) に aquota.user を作成する.

# rm /home/quota.user
# quotacheck -a

quota をインストールしたときにデフォルトでは起動している. 上記の記録ファイルに情報を反映させるために quota を再起動する.

# /etc/init.d/quota restart 

2.2 ユーザにディスク使用制限をかける

ソフトリミット10 G, ハードリミット12 G (WWW と同じ) にユーザ gate を設定する. それぞれの制限の意味を下に記述した.

ハードリミット:
ディスクの割当を直ちに停止.
ソフトリミット:
一定時間内にユーザに対処するように警告を出す. タイムリミットを過ぎてもソフトリミットを越えたままだと, ディスクの割当を停止.

gate にquota 制限をかければ, gate システムに よって他のユーザにも適用されることになる. gate ユーザの作成は ここを参照すること.

# edquota gate

nano が起動され, 以下のようなファイルが表示される. 2 行目の (soft=0, hard=0) (soft=10000000, hard=12000000)(単位は kbytes) に変更する. block か inode かどちらかに制限を加えておけばいい.

	Disk quotas for user gate (uid 500):
	Filesystem                   blocks       soft       hard     inodes     soft     hard
	/dev/sdb1                     23396   10000000   12000000       4914        0        0
block:
使用可能なディスクの容量を制限することができる
inode:
ファイルシステム上に作成可能なファイル数を制限することができる

gate システムによって EP サーバに登録されたユーザはディスク制限をかけられる. もし gate システムが無い場合, 各ユーザの quota を一つずつ編集するのは かなり手間のかかる作業になってしまう. そこで複数のユーザに同じ制限をか ける場合は次のコマンドを実行する.

# edquota -p user1 user2...

user1 のディスク制限が user2 以降のユーザにも反映される.

また、少々強引な方法だが一回で全てのユーザに制限をかけることも出来る.

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

2.3 ディスクの使用状態を見るコマンド

各ユーザのディスクの使用状態を見るには, 以下のようにする.

# repquota -u -a | lv
■オプション
	-a     /etc/fstabに含まれる全てのファイルシステム(ユーザも含む)
	       について表示.
	-v     全てのquota(未使用のものも含めて)を表示.
	-g     groupユーザのquotaを表示
        -u     userのquotaを表示.(デフォルト)

最終更新日: 2016/01/30(三上峻) Copyright © 2000-2016 epcore