Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.4. GFS2 のクォータ管理

ファイルシステムのクォータは、ユーザーまたはグループが使用可能なファイルシステム領域のサイズを制限するために使用されます。ユーザーまたはグループには、クォータ制限が設定されないと、クォータ制限がありません。GFS2 ファイルシステムが quota=on オプションまたは quota=account オプションでマウントされていると、GFS2 は、制限がない場合でも、各ユーザーおよび各グループが使用している領域を追跡します。GFS2 は、システムがクラッシュしてもクォータの使用量を再構築しなくてもいいように、トランザクション形式でクォータ情報を更新します。
パフォーマンス低下を防ぐためにも、GFS2 ノードは定期的にクォータファイルに更新を同期します。ファジークォータアカウンティングでは、ユーザーまたはグループは、設定された制限を若干超えることができます。これを最小限に抑えるために、GFS2 はハードクォータの制限に近づくと同期期間を動的に短縮します。
注記
GFS2 は、標準の Linux クォータ機能に対応しています。この機能を使用するには、quota RPM をインストールする必要があります。これは、GFS2 でクォータを管理するのに推奨される方法であるため、クォータを使用した GFS2 の新規デプロイメントには必ず使用してください。本セクションでは、この機能を使用した GFS2 クォータ管理を説明します。

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

ディスククォータを実装するには、以下の手順を行います。
  1. 強制またはアカウンティングモードでクォータを設定します。
  2. 現在のブロック使用情報の入ったクォータデータベースファイルを初期化します。
  3. クォータポリシーを割り当てます。(アカウンティングモードでは、このポリシーは強制されません。)
この各ステップは、以下のセクションで詳しく説明します。

3.4.1.1. 強制またはアカウンティングモードでのクォータの設定

GFS2 ファイルシステムでは、クォータはデフォルトで無効になっています。ファイルシステムのクォータを有効にするには、quota=on オプションを指定して、ファイルシステムを次のようにマウントします。
limit と warn の値を適用せずに、ディスクの使用状況を追跡し、各ユーザーおよび各グループのクォータアカウントを維持することができます。これを行うには、quota=account オプションを指定して、ファイルシステムをマウントします。
クォータが有効なファイルシステムをマウントするには、クラスターで GFS2 ファイルシステムリソースを作成するときに options 引数に quota=off を指定します。たとえば、次のコマンドは、作成している GFS2 の Filesystem リソースが、クォータが有効になっている状態でマウントされることを指定します。
# pcs resource create gfs2mount Filesystem options="quota=on" device=BLOCKDEVICE directory=MOUNTPOINT fstype=gfs2 clone
Pacemaker クラスターでの GFS2 ファイルシステムの設定については、5章クラスターでの GFS2 ファイルシステムの設定 を参照してください。
クォータの制限が適用されない場合でもクォータアカウントが維持された状態でファイルシステムをマウントするには、クラスターで GFS2 ファイルシステムリソースを作成するときに options 引数として quota=account を指定します。
クォータが無効なファイルシステムをマウントするには、クラスターで GFS2 ファイルシステムリソースを作成するときに options 引数に quota=off を指定します。

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

クォータが有効なファイルシステムがマウントされると、システムがディスククォータを操作できるようになります。ただし、ファイルシステム自体がクォータに対応するようにするには、追加の設定が必要です。次のステップとして、quotacheck コマンドを実行します。
quotacheck コマンドは、クォータが有効なファイルシステムを検証し、現在のディスク使用状況のテーブルをファイルシステムごとに構築します。このテーブルは、ディスク使用状況のオペレーティングシステム用コピーを更新するのに使用されます。また、ファイルシステムのディスククォータが更新されます。
ファイルシステムにクォータファイルを作成するには、quotacheck コマンドに -u オプションおよび -g オプションを指定します。ユーザーおよびグループのクォータを初期化するには、両方のオプションを指定する必要があります。たとえば、/home ファイルシステムにクォータが有効化されている場合、/home ディレクトリーにファイルを作成します。
quotacheck -ug /home

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

最後のステップは、edquota コマンドを使用したディスククォータ割り当てです。(quota=account オプションを指定して) ファイルシステムをアカウンティングモードでマウントした場合は、クォータが適用されないことに注意してください。
ユーザーにクォータを設定するには、シェルプロンプトで、root で次のコマンドを実行します。
# edquota username
クォータが必要な各ユーザーに対して、この手順を実行します。たとえば、クォータが /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
注記
EDITOR 環境変数により定義されたテキストエディターは、edquota により使用されます。エディターを変更するには、~/.bash_profile ファイルの EDITOR 環境変数を、使用するエディターのフルパスに設定します。
最初の列は、クォータが有効になっているファイルシステムの名前です。2 列目には、ユーザーが現在使用しているブロック数が示されます。その次の 2 列は、ファイルシステム上のユーザーのソフトブロック制限およびハードブロック制限を設定するのに使用されます。
ソフトブロック制限は、使用可能な最大ディスク容量を定義します。
ハードブロック制限は、ユーザーまたはグループが使用できる最大ディスク容量 (絶対値) です。この制限に達すると、それ以上のディスク領域は使用できなくなります。
GFS2 ファイルシステムは inode のクォータを維持しないため、この列は GFS2 ファイルシステムには適用されず、空白になります。
いずれかの値が 0 に設定されていると、その制限は設定されません。テキストエディターで制限を変更します。以下に例を示します。
Disk quotas for user testuser (uid 501):   
Filesystem                blocks     soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440436   500000   550000
ユーザーのクォータが設定されていることを確認するには、以下のコマンドを使用します。
quota testuser

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

クォータは、グループごとに割り当てることもできます。(account=on オプションを指定して) ファイルシステムをアカウンティングモードでマウントした場合は、クォータが適用されません。
devel グループのグループクォータを設定するには (グループはグループクォータを設定する前に存在している必要があります)、次のコマンドを使用します。
edquota -g devel
このコマンドにより、グループの既存クォータがテキストエディターに表示されます。
Disk quotas for group devel (gid 505):   
Filesystem                blocks    soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440400       0        0
GFS2 ファイルシステムは inode のクォータを維持しないため、この列は GFS2 ファイルシステムには適用されず、空白になります。この制限を変更して、ファイルを保存します。
グループクォータが設定されていることを確認するには、次のコマンドを使用します。
$ quota -g devel

3.4.2. ディスククォータの管理

クォータが実装されている場合には、若干の保守が必要となります — 大半は、クォータの超過監視および精度確認という形となります。
当然ながら、ユーザーが繰り返しクォータを超過したり、常にソフトリミットに達している場合には、ユーザーのタイプや、ユーザーの作業にディスク容量が及ぼす影響の度合に応じて、システム管理者には 2 つの選択肢があります。管理者は、ユーザーが使用するディスク領域を節約する方法をわかるようにするか、ユーザーのディスククォータを拡大するかのいずれかを行うことができます。
ディスク使用状況のレポートを作成するには、repquota ユーティリティーを使用します。たとえば、コマンド repquota /home により、以下のような出力が表示されます。
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 
Block grace time: 7days; Inode grace time: 7days
			Block limits			File limits		
User		used	soft	hard	grace	used	soft	hard	grace 
---------------------------------------------------------------------- 
root      --      36       0       0              4     0     0 
kristin   --     540       0       0            125     0     0 
testuser  --  440400  500000  550000          37418     0     0
クォータが有効なすべてのファイルシステム (オプション -a) のディスク使用状況レポートを表示するには、次のコマンドを使用します。
# repquota -a
レポートは読みやすいですが、いくつか説明しておくべき点があります。各ユーザーに続いて表示される -- で、ブロック制限を超えたかどうかを簡単に判断できます。ブロックのソフト制限を超えると、出力の最初が - ではなく、+ となります。2 番目の - は inode の制限を示していますが、GFS2 ファイルシステムは inode の制限に対応していないため、その文字はそのまま - となります。GFS2 ファイルシステムは猶予期間に対応していないため、grace (猶予) 列は空白になります。
NFS では、配下のファイルシステムにかかわらず、repquota コマンドはサポートされていない点に注意してください。

3.4.3. クォータの精度維持

しばらくクォータが無効な状態で稼働した後にファイルシステムでクォータを有効にする場合は、quotacheck コマンドを実行してクォータファイルを作成、確認、および修復する必要があります。また、クォータファイルが正確でないと思われる場合 (この問題は、システムのクラッシュ後にファイルシステムが正常にアンマントされていない場合に発生することがあります) は、quotacheck を実行することができます。
quotacheck コマンドについての詳しい情報は、quotacheck の man ページを参照してください。
注記
計算されるクォータ値は、ディスクアクティビティーによって影響を受ける可能性があるため、quotacheck は全ノード上でファイルシステムが比較的アイドル状態の時に実行してください。

3.4.4. quotasync コマンドを使用したクォータの同期

GFS2 は、すべてのクォータ情報をディスク上にある独自の内部ファイルに保存します。GFS2 ノードは、ファイルシステムの書き込みごとにこのクォータファイルを更新するのではなく、デフォルトで 60 秒ごとにクォータファイルを更新します。これは、クォータファイルへの書き込みをノード間で行うことを避けるために必要です。このような場合は、パフォーマンスが低下します。
ユーザーまたはグループがクォータ制限に近づくと、GFS2 はクォータファイルの更新の間隔を動的に短縮し、制限を超えないようにします。クォータ同期の間の通常の期間は、調整可能なパラメーターである quota_quantum です。表3.2「GFS2 固有のマウントオプション」 で説明しているように、このパラメーターは quota_quantum= マウントオプションを使用してデフォルト値の 60 秒から変更することができます。quota_quantum パラメーターは、各ノードごとと、ファイルシステムをマウントするたびに設定する必要があります。quota_quantum への変更は、アンマウント後には永続されません。quota_quantum 値は mount -o remount を使用して更新することができます。
gfs2_quota sync コマンドを使用すると、GFS2 によって実行される自動的な更新と更新の間にクォータ情報をノードからオンディスククォータファイルに同期することができます。

Usage

クォータ情報の同期
quotasync [-ug] -a|mntpnt...
u
ユーザーのクォータファイルを同期します。
g
グループのクォータファイルを同期します。
a
現在クォータが有効で、同期に対応するすべてのファイルシステムを同期します。-a を指定しない場合は、ファイルシステムのマウントポイントを指定する必要があります。
mntpnt
設定が適用される GFS2 ファイルシステムを指定します。
同期間隔の調整
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
設定が適用される GFS2 ファイルシステムを指定します。
secs
GFS2 による通常のクォータファイル同期の新しい間隔を指定します。値を小さくすると競合が増え、パフォーマンスが低下する可能性があります。

以下の例では、コマンドが実行されるノードのキャッシュ済みダーティクォータすべてをファイルシステム /mnt/mygfs2 のクォータファイルに同期します。
# quotasync -ug /mnt/mygfs2
以下の例では、ファイルシステム /mnt/mygfs2 を論理ボリューム /dev/volgroup/logical_volume に再マウントする時に、そのファイルシステムのクォータファイル定期更新間隔をデフォルト値から 1 時間 (3600 秒) に変更します。
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2

3.4.5. リファレンス

ディスククォータに関する更なる情報は、以下にあげるコマンドの man ページを参照してください。
  • quotacheck
  • edquota
  • repquota
  • quota

このページには機械翻訳が使用されている場合があります (詳細はこちら)。