第17章 ディスククォータ
ディスク領域はディスククォータによって制限できます。ディスククォータは、ユーザーが過度のディスク領域を消費するか、パーティションが満杯になる前にシステム管理者に警告をします。
ディスククォータは、ユーザーグループにも個別のユーザーにも設定できます。これにより、ユーザーが参加しているプロジェクトに割り振られた領域 (プロジェクトごとに所有グループが存在すると想定) とは別に、ユーザー固有のファイル (電子メールなど) に割り振った領域を管理することが可能になります。
さらにクォータは、消費されるディスクブロックの数の制御だけでなく、inode (UNIX ファイルシステム内のファイルに関する情報を含むデータ構造) の数も制御するように設定できます。inode はファイル関連の情報を組み込むように使用されるため、これが作成されるファイルの数を制御することも可能にします。
ディスククォータを実装するには、quota RPM をインストールする必要があります。
注記
本章はすべてのファイルシステムを対象としていますが、一部のファイルシステムには独自のクォータ管理ツールがあります。該当するファイルシステムについては、対応する説明を参照してください。
XFS ファイルシステムの場合は、「XFS クォータ管理」 を参照してください。
Btrfs にはディスククォータがないため、使用できません。
17.1. ディスククォータの設定
ディスククォータを実装するには、以下の手順を行います。
/etc/fstab
ファイルを変更して、ファイルシステムごとのクォータを有効にします。- ファイルシステムを再マウントします。
- クォータデータベースファイルを作成して、ディスク使用状況テーブルを生成します。
- クォータポリシーを割り当てます。
この各手順は、以下のセクションで詳しく説明します。
17.1.1. クォータの有効化
手順17.1 クォータの有効化
- root でログインします。
/etc/fstab
ファイルを編集します。- クォータを必要とするファイルシステムに 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 コマンドを実行してファイルシステムを再 マウント します。さまざまなファイルシステムタイプのマウントとアンマウントを行う具体的な構文は、umount と mount の man ページを参照してください。
- mount -o remount file-systemコマンド( file-system はファイルシステムの名前)を実行して、ファイルシステムを再マウントします。たとえば、
/home
ファイルシステムを再マウントするには、mount -o remount /home コマンドを実行します。
ファイルシステムが現在使用中の場合、そのファイルシステムを再マウントする最も簡単な方法は、システムを再起動することです。
17.1.3. クォータデータベースファイルの作成
クォータが有効にされたそれぞれのファイルシステムを再マウントした後は、quotacheck コマンドを実行します。
quotacheck コマンドは、クォータが有効なファイルシステムを検証し、現在のディスク使用状況のテーブルをファイルシステムごとに構築します。このテーブルは、ディスク使用状況のオペレーティングシステム用コピーを更新するのに使用されます。また、ファイルシステムのディスククォータが更新されます。
注記
ディスク使用量のテーブルはマウント時に自動的に作成されるため、quotacheck コマンドは XFS には影響しません。詳細は、man ページの xfs_quota (8) を参照してください。
手順17.2 クォータデータベースファイルの作成
- 次のコマンドを使用して、ファイルシステムにクォータファイルを作成します。
#
quotacheck -cug /file system - 次のコマンドを使用して、ファイルシステムごとの現在のディスク使用量の表を生成します。
#
quotacheck -avug
クォータファイルの作成に使用するオプションを以下に示します。
- c
- クォータファイルを、クォータを有効にしたファイルシステムごとに作成するように指定します。
- u
- ユーザークォータを確認します。
- g
- グループクォータを確認します。
-g
のみを指定すると、グループクォータファイルのみが作成されます。
-u
オプションまたは -g
オプションのいずれも指定しない場合は、ユーザークォータファイルのみが作成されます。
以下のオプションは、現在のディスク使用率の表を生成するために使用されます。
- a
- クォータが有効にされた、ローカルマウントのファイルシステムをすべてチェック
- v
- クォータチェックの進行状態について詳細情報を表示
- u
- ユーザーディスククォータの情報をチェック
- g
- グループディスククォータの情報をチェック
quotacheck の実行が終了すると、有効なクォータ (ユーザーまたはグループのいずれか、または両方) に対応するクォータファイルに、
/home
などの、クォータが有効になっているローカルにマウントされた各ファイルシステムのデータが取り込まれます。
17.1.4. ユーザーごとのクォータ割り当て
最後の手順は、edquota コマンドを使用したディスククォータの割り当てです。
前提条件
- ユーザーは、ユーザークォータを設定する前に存在する必要があります。
手順17.3 ユーザーごとのクォータ割り当て
- ユーザーにクォータを割り当てるには、次のコマンドを使用します。
#
edquota usernameusername を、クォータを割り当てるユーザーに置き換えます。 - ユーザーのクォータが設定されていることを確認するには、次のコマンドを使用します。
#
quota username
例17.3 ユーザーへのクォータの割り当て
たとえば、
/home
パーティションの /etc/fstab
でクォータが有効になっている場合(以下の例では/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 の数が表示されます。最後の 2 列は、ファイルシステムのユーザーに対するソフトおよびハードの inode 制限を設定するのに使用されます。
ハードブロック制限は、ユーザーまたはグループが使用できる最大ディスク容量 (絶対値) です。この制限に達すると、それ以上のディスク領域は使用できなくなります。
ソフトブロック制限は、使用可能な最大ディスク容量を定義します。ただし、ハード制限とは異なり、ソフト制限は一定時間超過する可能性があります。この時間は 猶予期間 として知られています。猶予期間の単位は、秒、分、時間、日、週、または月で表されます。
いずれかの値が 0 に設定されていると、その制限は設定されません。テキストエディターで必要な制限に変更します。
例17.4 必要な制限の変更
以下に例を示します。
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000 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 グループごとのクォータ割り当て
- グループクォータを設定するには、次のコマンドを使用します。
#
edquota -g groupname - グループクォータが設定されていることを確認するには、次のコマンドを使用します。
#
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 オプションは、クォータが有効になっているすべてのファイルシステムで動作します。