第17章 ディスク割り当て

ディスク領域はディスククォータ (quota) によって制限できます。ディスククォータは、ユーザーが過度のディスク領域を消費するか、パーティションが満杯になる前にシステム管理者に警告をします。
ディスククォータは、ユーザーグループ用にも個別のユーザー用にも設定できます。これにより、ユーザーが参加しているプロジェクトに割り振られた領域 (プロジェクトごとに所有グループが存在すると想定) とは別に、ユーザー固有のファイル (電子メールなど) に割り振った領域を管理することが可能になります。
さらにクォータは、消費されるディスクブロックの数の制御だけでなく、inode (UNIX ファイルシステム内のファイルに関する情報を含むデータ構造) の数も制御するように設定できます。inode はファイル関連の情報を組み込むように使用されるため、これが作成されるファイルの数を制御することも可能にします。
ディスククォータを実装するには、quota RPM をインストールしておく必要があります。

注記

本章はすべてのファイルシステムを対象としていますが、一部のファイルシステムには独自のクォータ管理ツールが含まれています。詳細については、これらのファイルシステムの説明の該当する部分を参照してください。
XFS ファイルシステムは、「XFS クォータの管理」 を参照してください。
Btrfs にはディスククォータがないため、ここでは扱われません。

17.1. ディスククォータの設定

ディスククォータを実装するには、以下の手順を用います。
  1. /etc/fstab を修正することで、ファイルシステムごとのクォータを有効にします。
  2. ファイルシステムを再マウントします。
  3. クォータデータベースファイルを作成して、ディスク使用状況テーブルを生成します。
  4. クォータポリシーを割り当てます。
これらの各ステップは、以下のセクションで詳しく解説しています。

17.1.1. クォータの有効化

手順17.1 クォータの有効化

  1. root でログインします。
  2. /etc/fstab ファイルを編集します。
  3. usrquota または grpquota のどちらかのオプション、またはそれら両方をクォータが必要となるファイルシステムに追加します。

例17.1 /etc/fstab の編集

たとえば、テキストエディター vim を使用するには、以下を入力します。
# vim /etc/fstab

例17.2 クォータの追加

/dev/VolGroup00/LogVol00 /         ext3    defaults        1 1
LABEL=/boot              /boot     ext3    defaults        1 2
none                     /dev/pts  devpts  gid=5,mode=620  0 0
none                     /dev/shm  tmpfs   defaults        0 0
none                     /proc     proc    defaults        0 0
none                     /sys      sysfs   defaults        0 0
/dev/VolGroup00/LogVol02 /home     ext3    defaults,usrquota,grpquota  1 2
/dev/VolGroup00/LogVol01 swap      swap    defaults        0 0 . . .
この例では、/home ファイルシステムがユーザーとグループの両方のクォータを有効にしています。

注記

以下の例では、Red Hat Enterprise Linux のインストール時に個別の /home パーティションが作成されていると想定しています。root (/) パーティションは /etc/fstab ファイル内でクォータポリシーを設定するために使用できます。

17.1.2. ファイルシステムの再マウント

usrquota または grpquota オプションのどちらか、またはそれら両方を追加した後には、fstab エントリーが修正されたそれぞれのファイルシステムを再マウントします。ファイルシステムがどのプロセスでも使用されていない場合は、以下のメソッドのいずれかを使用します。
  • umount コマンドを実行して、その後に mount コマンドを発行してファイルシステムを再マウントします。各種ファイルシステムのマウントとアンマウント用の特定の構文に関しては、umountmount の両方の man ページを参照してください。
  • mount -o remount file-system コマンド (ここで file-system はファイルシステムの名前) を実行してファイルシステムを再マウントします。たとえば、/home ファイルシステムを再マウントするには、mount -o remount /home コマンドを実行します。
ファイルシステムが現在使用中の場合、そのファイルシステムを再マウントする最も簡単な方法は、システムを再起動することです。

17.1.3. クォータデータベースファイルの作成

クォータが有効にされたそれぞれのファイルシステムを再マウントした後は、quotacheck コマンドを実行します。
quotacheck コマンドは、クォータが有効にされているファイルシステムを検証し、現在のディスク使用状況テーブルをファイルシステムごとに作成します。このテーブルは、ディスク使用状況についてのオペレーティングシステム用コピーを更新するのに使用されます。また、ファイルシステムのディスククォータファイルが更新されます。

注記

quotacheck コマンドは、ディスク使用状況テーブルがマウント時に自動的に完成するため、XFS には全く影響を与えません。詳細情報については、xfs_quota(8) の man ページを参照してください。

手順17.2 クォータデータベースファイルの作成

  1. 以下のコマンドを使用してファイルシステムでクォータファイルを作成します。
    # quotacheck -cug /file system
  2. 以下のコマンドを使用して、ファイルシステムごとに現在のディスクの使用率の表を生成します。
    # quotacheck -avug
クォータファイルを作成するのに使用するオプションを以下に示します。
c
クォータファイルが、クォータを有効化して各ファイルシステムに作成される必要があることを指定します。
u
ユーザークォータを確認します。
g
グループクォータをチェックします。-g のみを指定すると、グループクォータファイルが作成されます。
-u または -g オプションのいずれかを指定している場合は、ユーザークォータファイルのみが作成されます。
以下のオプションは、現在のディスク使用率の表を生成するのに使用されます。
a
クォータが有効にされた、ローカルマウントのファイルシステムをすべてチェック
v
クォータチェックの進行状態について詳細情報を表示
u
ユーザーディスククォータの情報をチェック
g
グループディスククォータの情報をチェック
quotacheck の実行が終了すると、有効なクォータ (ユーザーまたはグループ、あるいは両方) に対応するクォータファイルには、/home などのクォータが有効なローカルマウントの各ファイルシステム用のデータが追加されます。

17.1.4. ユーザーごとのクォータ割り当て

最終ステップは、edquota コマンドを使用したディスククォータの割り当てです。
前提条件
  • ユーザーは、ユーザークォータを設定する前に存在する必要があります。

手順17.3 ユーザーごとのクォータ割り当て

  1. ユーザークォータを割り当てるには、以下のコマンドを使用します。
    # edquota username
    クォータを割り当てるユーザーで username を置き換えます。
  2. ユーザーのクォータが設定されていることを確認するには、以下のコマンドを使用します。
    # quota username

例17.3 ユーザーへのクォータの割り当て

たとえば、クォータが /etc/fstab 内で /home パーティション (以下の例では /dev/VolGroup00/LogVol02) 用に有効になっていて、コマンド edquota testuser が実行されると、システムのデフォルトとして設定されているエディターに以下が表示されます。
Disk quotas for user testuser (uid 501):
		Filesystem                blocks     soft     hard    inodes   soft   hard
		/dev/VolGroup00/LogVol02  440436        0        0     37418      0      0

注記

EDITOR 環境変数で定義されているテキストエディターが edquota によって使用されます。このエディターを変更するには、使用している ~/.bash_profile ファイル内で EDITOR 環境変数を選択するエディターへの完全パスに設定します。
最初の列はクォータが有効になっているファイルシステムの名前です。2 つ目の列はユーザーが現在使用しているブロック数を示します。その次の 2 つの列はこのファイルシステムでのユーザーに対するソフトおよびハードブロックリミットを設定するために使用されます。inodes の列は、現在ユーザーが使用している inode の数を示します。最後の列は、ファイルシステム上のユーザーに対するソフトおよびハードの inode 制限を設定するために使用されます。
ハードブロックリミットは、ユーザーまたはグループが使用可能な絶対最大ディスク容量です。この上限に達すると、それ以上のディスク容量を使用できなくなります。
ブロックのソフトリミットは、使用可能なディスク容量の最大値を定義します。しかし、ハードリミットとは異なり、ソフトリミットは一定の期間だけ超過できるようになっています。この期間は猶予期間 として知られています。猶予期間は秒、分、時間、日、週、または月で表されます。
いずれかの値がゼロに設定してある場合は、そのリミットは設定されていないことになります。テキストエディターで必要な制限に変更します。

例17.4 必要な制限の変更

以下に例を示します。
Disk quotas for user testuser (uid 501):
		Filesystem                blocks     soft     hard    inodes   soft   hard
		/dev/VolGroup00/LogVol02  440436        0        0     37418      0      0
ユーザーのクォータが設定されていることを確認するには、以下のコマンドを使用します。
# quota testuser
Disk quotas for user username (uid 501):
   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
     /dev/sdb    1000*   1000    1000               0       0       0

17.1.5. グループごとのクォータ割り当て

クォータは、グループごとに割り当てることも可能です。
前提条件
  • グループは、グループクォータを設定する前に存在する必要があります。

手順17.4 グループごとのクォータ割り当て

  1. グループクォータを設定するには、以下のコマンドを使用します。
    # edquota -g groupname
  2. グループクォータが設定されていることを確認するには、以下のコマンドを使用します。
    # quota -g groupname

例17.5 グループへのクォータの割り当て

たとえば、devel グループのグループクォータを設定するには、以下のコマンドを使用します。
# edquota -g devel
このコマンドにより、グループの既存クォータがテキストエディターに表示されます。
Disk quotas for group devel (gid 505):
Filesystem                blocks    soft     hard    inodes    soft    hard
/dev/VolGroup00/LogVol02  440400       0        0     37418       0       0
このリミットを変更し、ファイルを保存します。
グループクォータが設定されたことを確認するには、次のコマンドを使用します。
# quota -g devel

17.1.6. ソフトリミットの猶予期間の設定

所定のクォータがソフトリミットを持つ場合、その猶予期間 (ソフトリミットを超過してもよい期間の値) は以下のコマンドで編集できます。
# edquota -t
このコマンドはユーザーまたはグループのいずれかの inode またはブロックのクォータに対して機能します。

重要

他の edquota コマンドは特定のユーザーまたはグループのクォータで機能しますが、-t オプションはクォータが有効になっているすべてのファイルシステムで機能します。