パソコン実習室
ユーザ管理 - スケルトンとクオータ
≪ previous next ≫

U.quota による容量制限

 Linux のユーザは自ディレクトリ内であれば、自由にファイルの登録・編集・削除を行える。 またその容量には制限がない。  唯一制限があるのは、全ユーザの合計使用量がファイル システム (当該パーティション) の割当量を超えられないことだけである。
 こうした現状は、一部ヘビー ユーザが多数の一般的ユーザを圧迫することになると共に、ディスク管理の面からも好ましくない。

 quota は、ユーザがシステム上のディスク スペースを際限なく使うことが出来ないようにして、ユーザのディスク消費量を一定限度以下に保つことを目的とする。

U.1.導入済みの確認

 quota はカーネルのサポートを必要とするが、ディストリビューション提供の CD-ROM 等でインストールした Linux なら、殆どの場合標準でサポート済みであり、インストールも行われる。
一応、quota のインストールを確認する。
# rpm -q quota
quota-3.09-1

※ Linux カーネルをソース ファイルから make した場合などは注意が必要。
   quota サポートが未対応なら、カーネルの再構築が必要となる。


U.2.quota を設定する

 /home パーティションでユーザ単位の容量制限を行うため、/etc/fstab ファイルに記述されている /home の第4フィールドに usrquota オプションを追加する。
 グループ単位での容量制限も grpquota オプションで可能だが、ここではユーザ単位の容量制限を行う。 両方適用することも可能。

※ quota の適用はパーティション単位で行うが、ルート (/) パーティションには設定できないという話を訊く。
   ルートや Linux のシステムファイルがあるパーティションには適用しない方が無難だろう。


U.2.1./etc/fstab の編集

 エディタで /etc/fstab ファイルを開き、/home の第4フィールドに usrquota (赤字部分) を追加 (defaults の後ろにカンマ "," と usrquota を続ける) して保存する。

※ /etc/fstab の一例。 Linux インストール状況、システム環境によりその内容は変わる。
LABEL=//ext3defaults1 1
LABEL=/boot/bootext3defaults1 2
none/dev/ptsdevptsgid=5,mode=6200 0
LABEL=/home/homeext3defaults,usrquota1 2
none/procprocdefaults0 0
none/dev/shmtmpfsdefaults0 0
/dev/hda7swapswapdefaults0 0
/dev/cdrom/mnt/cdromudf,iso9660noauto,owner,kudzu,ro0 0


U.2.2./home の再マウント

 usrquota を追加後、/home パーティションを再マウントする。
 再マウントすることで追加した usrquota オプションが該当パーティションに適用される。

 mount コマンドで確認と再マウントを行う。
※ 表示はレスポンスの一例。 Linux インストール状況、システム環境によりその内容は変わる。
  1. 現状を確認する。
    # mount
    /dev/hda8 on / type ext3 (rw)
    none on /proc type proc (rw)
    usbdevfs on /proc/bus/usb type usbdevfs (rw)
    /dev/hda5 on /boot type ext3 (rw)
    none on /dev/pts type devpts (rw,gid=5,mode=620)
    /dev/hda6 on /home type ext3 (rw)
    none on /dev/shm type tmpfs (rw)

  2. 再マウント実行。
    # mount -o remount /home
    ※ umount /home 実行後、mount /home でも可能。

  3. 再度マウント状況を確認する。
    /home がマウントされ、usrquota が適用されている事。
    # mount
    /dev/hda8 on / type ext3 (rw)
    none on /proc type proc (rw)
    usbdevfs on /proc/bus/usb type usbdevfs (rw)
    /dev/hda5 on /boot type ext3 (rw)
    none on /dev/pts type devpts (rw,gid=5,mode=620)
    /dev/hda6 on /home type ext3 (rw,usrquota)
    none on /dev/shm type tmpfs (rw)


U.3.quota ファイルを作成する

 /etc/fstab を編集し、再マウントを終了した段階で quota による容量制限を行う準備は整ったが、 quota を on (有効) にするためには該当パーティションのルート (ここでは /home) 上に quota ファイル (aquota.user, aquota.group) が必要となる。

 quota ファイルはユーザ (aquota.user) 、グループ (aquota.group) ごとのディスク使用量を記録しているデータベースで、quotacheck が実行するディスク スキャン結果で更新される。
quota ファイルは quotacheck コマンドを使って生成する。

  1. aquota.user ファイルの新規作成。
    # quotacheck -cuv /home
    quotacheck: Scanning /dev/hda6 [/home] done
    quotacheck: Checked 67 directories and 318 files
    quotacheck: Old file not found.
    ※ 既存の quota ファイルがない場合は、quotacheck -uv /home でも quota ファイルは作成される。
    ※ スキャン対象のデバイスやディレクトリ数、ファイル数は使用状況で異なる。

  2. 作成ファイルの確認。
    # ls -l /home/aquota.user
    -rw-------1rootroot716812月 13 16:11/home/aquota.user

▼ quota が有効のまま quotacheck を実行すると quota ファイルのデータが破損する恐れがある。
   (RedHat ES3 の場合、quota が有効の状態で quotacheck を実行すると、メッセージが出て起動できない)
   その場合は、quota を無効にしてから quotacheck を実行する。

quotaの有効・無効は次のコマンドで行う。
  • quota を有効にする。
    # quotaon -uv /home
  • quota を無効にする。
    # quotaoff -uv /home
quotaon (quotaoff) の -p オプションで quota の状態 (有効/無効) を表示できる。
  • quota の状態表示。
    # quotaon -p /home
    group quota on /home (/dev/hda6) is off
    user quota on /home (/dev/hda6) is on
    ※ /home の group quota は off, user quota が on


◎ quotacheck の主なオプション
-a/etc/fstab に quota を設定済みの全てのパーティションをチェックする。
-cquota ファイルを新規作成する。 既設の quota ファイルがあった場合は新規作成したファイルに置き換える。 edquota で設定したユーザ (グループ) 毎の制限値はクリアされる。
-mチェック対象パーティションを、リード オンリーで再マウントしない。
(quotacheck は実行前にパーティションをリード オンリーで再マウントし、チェック終了後元に戻す)
-v実行状況を表示する。
-gグループの quota チェックを実行する。
-uユーザの quota チェックを実行する。
-g あるいは -u のどちらの指定もしない場合は -u が選択される。

◎ quotaon / quotaoff の主なオプション
-a/etc/fstab に quota を設定済みの全パーティションの quota を 有効/無効 にする。
-v実行状況を表示する。
-gグループの quota を 有効/無効 にする。
-uユーザの quota を 有効/無効 にする。
-g あるいは -u のどちらの指定もしない場合は -u が選択される。
-pquota の状態 (有効/無効) を表示する。



≪ previous [[ ユーザ管理 ]] next ≫