トップ 一覧 置換 検索 ヘルプ RSS ログイン

Linux でクォータを使ってディスク制限をするの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
http://www.itmedia.co.jp/help/tips/linux/l0066.html
http://linux.kororo.jp/cont/intro/quata.php

!!!準備
!!確認とインストール
 # rpm -q quota  ←RPMパッケージでインストールされているか確認
なければ
 # yum install quota

!!設定
/etc/fstab の編集
以下の記述を追加する
,,
,ユーザごとに制限する場合,usrquota
,グループごとに制限する場合,grpquota
,両方で制限する場合,quota

例として /home 以下をユーザごとに容量制限する場合
 # vi /etc/fstab
 LABEL=/home /home ext3 defaults,usrquota 1 2

!!対象ファイルシステムをマウント
既に /home がマウント済みと表示された場合は、/etc/mtab を更新するために再マウント。
再マウント後、/etc/mtab に usrquota の文字が更新されていればOK。
 # mount /home
 mount: /dev/hda7 は マウント済か /home が使用中です
 mount: mtab によると、/dev/hda7 は /home にマウント済です

 # mount -o rw,remount /home //再マウント
 # cat /etc/mtab
 /dev/hda7 /home ext3 rw,usrquota 0 0 

!!ディスク使用量のチェック
現時点でのディスク使用量をチェックし、クォータファイル(ユーザーごとのファイルを管理するファイル)を作成します。
以下のファイルがスキャンをかけたファイルシステムの直下に作成される。
:ユーザーについてスキャンしたファイル:aquota.user
:グループごとについてスキャンしたファイル: aquota.group

/etc/fstab に記述されている全てのファイルシステムについてスキャンをかけるには、-a オプションを付け加えます。
ユーザーのクォーターファイルを作成する、-u オプションはデフォルトでOn になっています。
グループごとのクォータファイルを作成するには、-g オプションを付け加えます。

 # quotacheck -cv /home
 quotacheck: Scanning /dev/hda6 [/home] done
 quotacheck: Checked 3 directories and 6 files
 quotacheck: Old file not found. 

!!クォータを有効/無効にする 
クォータを有効にするには、quotaon コマンドを使用します。無効にする場合は、quotaoff コマンドを使用します。なお、quotaon コマンドを使用せずとも、システムを再起動すれば自動的にクォータが有効になります。

 # quotaon -uv /home
 /dev/hda7 [/home]: user quotas turned on

!!クォータの設定
それでは、実際にユーザーごとにディスク使用量の制限をかけていきます。使用するコマンドは、edquota です。以下コマンドを実行すると、ユーザーkororo の現在のディスククォータ設定が表示されます。

 # edquota -u kororo
 
 Disk quotas for user kororo (uid 504):
   Filesystem      blocks     soft       hard     inodes     soft     hard
   /dev/hda7       39692      20000      22000     1886        0        0

各パラメータの意味は以下の表の通りです。実際に編集するのは、各ソフト制限の値とハード制限の値になります。ディスク容量の単位はKB単位で記述し、0 は無制限を表します。ここでは、ソフト制限(以下後述)を20MBとし、ハード制限を22MBとしています。設定の編集後、即座に反映されます。

,ディスク使用量(KB),ディスク使用量(KB),ディスク使用量(KB),ファイル数, 	ファイル数,ファイル数
,現在の使用量,ソフト制限,ハード制限,現在の使用量,ソフト制限,ハード制限

!!!使い方
!!ソフト制限・ハード制限・タイムリミットについて
ディスククォータには、ソフト制限・ハード制限という2つの制限があります。ソフト制限は、容量が指定サイズ、あるいは指定ファイル数を超えた段階でユーザーに対して警告が発せられます。けれども、警告が発せられても作業自体には問題は発生しません。それに対して、ハード制限は、指定限度以上の容量を越えた場合には、それ以上、ファイルを書き込みすることができなくなります。

なお、ソフト制限にはタイムリミットというものがあり、警告が発せられてから指定期間以上(デフォルトでは7日間)、ファイルを削除せずにそのままにしておくと、その期間以降はファイルを書き込みする事ができなくなります。これは、クォータ設定を確認する repquota コマンドの grace 値がこれに該当します。また、ソフト制限・ハード制限はユーザーごとに設定を行う事ができますが、タイムリミットはファイルシステムごとに設定します。タイムリミットの設定は、edquota -t コマンドを使用します。使用できる時間の単位は、days(日)、hours(時間)、minutes(分)、seconds(秒)です。

 # 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

!!クォータ設定を確認する
現在のクォータ設定を確認するには、repquota コマンドを使用します。

 # repquota -u -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
 ----------------------------------------------------------------------
 root      --    6328       0       0             71     0     0
 kororo    --   39692   20000   20000           1886     0     0

!!一般ユーザがクォータの設定を確認する
一般のユーザーが自分のディスク使用状況を確認するには、quota コマンドを使用します。

 $ quota
 
 Disk quotas for user tizu (uid 501):
   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
    /dev/hda7      44     200     200              10       0       0

!!クォータ設定のコピー
クォータの設定は、基本的にユーザーに対して同じ設定を施す事がほとんどでしょう。その場合は、いちいちユーザーごとに編集していたのでは面倒くさいので、クォータ設定をコピーして再利用しましょう。以下の例では、ユーザーkororo のクォータ設定を、foo ユーザにコピーして適用しています。適用後は、repquata コマンドで確認してください。

 # setquota -u -p kororo foo -a

 ◎setquota オプション
 -r 	対象がNFSファイルシステムの場合に使用する
 -u 	ユーザー単位でのクォータを設定する(省略した場合のデフォルト)
 -g 	グループ単位でのクォータを設定する
 -p 	-p <コピー元ユーザ><コピー先ユーザ> でクォータ設定をコピーする

!!クォータの運用
クォータを運用していくには、定期的にディスクの使用状況を調べておく必要があります。ディスク使用量を調べるコマンドは冒頭で述べた、quotacheck コマンドを使用します。このコマンドをcronで1日1回程度実行して、aquota.user と aquota.group を定期的に更新しておく必要があります。

 # vi /etc/crontab
 20 0 * * * root /sbin/quotacheck -a 

{{category2 OS,Linux}}