Global File System 2
Red Hat Global File System 2
概要
第1章 GFS2 の概要
注記
注記
fsck.gfs2 コマンドの実行に時間がかかり、大容量のメモリーを消費する可能性があります。また、ディスクやディスクサブシステムの障害発生時には、使用するバックアップメディアの速度によって復旧時間が制限されます。fsck.gfs2 コマンドに必要なメモリー容量については、「ファイルシステムの修復」 を参照してください。
clvmd で有効になります。このデーモンにより、LVM2 を使用してクラスター全体で論理ボリュームの管理が可能となり、クラスター内のすべてのノードで論理ボリュームを共有できるようになります。LVM ボリュームマネージャーについては、『Logical Volume Manager Administration』 を参照してください。
gfs2.ko カーネルモジュールは GFS2 ファイルシステムを実装しており、GFS2 クラスターノードにロードされます。
注記
1.1. 新機能および変更された機能
1.1.1. Red Hat Enterprise Linux 7.0 の新機能と変更された機能
- Red Hat Enterprise Linux 7 では、GFS2 ファイルシステムを含むクラスターの場合に、5章クラスターでの GFS2 ファイルシステムの設定に記載された手順に従って Pacemaker でクラスターを設定する必要があります。
gfs2_toolコマンドは Red Hat Enterprise Linux 7 ではサポートされません。gfs2_toolの代替機能の概要については、「Red Hat Enterprise Linux 7 での gfs2_tool の代替機能」を参照してください。
1.1.2. Red Hat Enterprise Linux 7.1 の新機能および変更された機能
1.1.3. Red Hat Enterprise Linux 7.2 の新機能および変更された機能
1.2. GFS2 を設定する前に
- GFS2 ノード
- クラスター内のどのノードで GFS2 ファイルシステムをマウントするかを決定します。
- ファイルシステムの数
- 初めに作成する GFS2 ファイルシステムの数を決定します (ファイルシステムは後で追加することができます)。
- ファイルシステム名
- 各ファイルシステムの一意の名前を決定します。この名前は、クラスター上の全
lock_dlmファイルシステムで一意でなければなりません。各ファイルシステム名は、パラメーター変数の形式にする必要があります。たとえば、本ガイドで例示した手順の中では、mydata1およびmydata2というファイルシステム名を使用しています。 - ジャーナル
- GFS2 ファイルシステム用のジャーナルの数を決定します。GFS2 ファイルシステムをマウントするノード毎に1つのジャーナルが必要になります。GFS2 では、後日、追加のサーバーがファイルシステムをマウントする時に、ジャーナルを動的に追加することができます。GFS2 ファイルシステムへのジャーナルの追加については、「ファイルシステムへジャーナルの追加」 を参照してください。
- ストレージデバイスとパーティション
- ファイルシステム内に論理ボリュームを作成する際に使用するストレージデバイスとパーティションを決めます (CLVM を使用)。
- 時間プロトコル
- GFS2 ノードのクロックが同期されていることを確認します。Red Hat Enterprise Linux ディストリビューションで提供されている Precision Time Protocol (PTP) または Network Time Protocol (NTP) ソフトウェア (設定に必要な場合) を使用することを推奨します。
注記
不要な inode 時間スタンプの更新を防ぐには、GFS2 ノード内のシステムクロックの時間差が数分以内になるように設定する必要があります。不要な inode 時間スタンプの更新はクラスターのパフォーマンスに深刻な影響を与えます。
注記
1.3. GFS2 のインストール
gfs2-utils パッケージと CLVM (Clustered Logical Volume Manager) 向けの lvm2-cluster パッケージをインストールする必要があります。lvm2-cluster と gfs2-utils のパッケージは ResilientStorage チャンネルに含まれるため、パッケージをインストールする前にこのチャンネルを有効にする必要があります。
yum install コマンドを使用して、Red Hat High Availability アドオンソフトウェアのパッケージをインストールします。
# yum install lvm2-cluster gfs2-utils1.4. Red Hat Enterprise Linux 7 での gfs2_tool の代替機能
gfs2_tool コマンドは、Red Hat Enterprise Linux 7 ではサポートされません。表1.1「Red Hat Enterprise Linux 7 での gfs2_tool の同等な機能」では、Red Hat Enterprise Linux 7 の gfs2_tool コマンドオプションの同等の機能について簡単に説明しています。
表1.1 Red Hat Enterprise Linux 7 での gfs2_tool の同等な機能
| gfs2_tool オプション | 代替機能 |
|---|---|
clearflag Flag File1 File2 ...
ファイルの属性フラグを消去する
| Linux の標準的な chattr コマンド |
freeze MountPoint
GFS2 ファイルシステムをフリーズ (休止) する
| Linux の標準的な fsfreeze -f mountpoint コマンド |
gettune MountPoint
チューニングパラメーターの現在の値を出力する
| 多くの場合、mount (get mount options) によって置き換えられます。他のチューニングパラメーターは、各 sysfs ファイルから取得できます (/sys/fs/gfs2/dm-3/tune/*)。 |
journals MountPoint
GFS2 ファイルシステムのジャーナルに関する情報を出力する
|
ジャーナルの数は、
gfs2_edit -p jindex で取得できます。ファイルシステムがマウントされているときは、このコマンドを実行しないでください。
#
|
lockdump MountPoint
該当するファイルシステムに対してこのマシンが保持するロックに関する情報を出力する
|
GFS2 ロックの情報は、
debugfs をマウントし、以下のようなコマンドを実行して取得できます。
#
|
sb device proto [newvalue]
ロッキングプロトコルを表示 (場合によっては、さらに置換) する
|
ロッキングプロトコルの現在の値を取得するには、次のコマンドを使用します。
#
ロッキングプロトコルの現在の値を置換するには、次のコマンドを使用します。
#
|
sb device table [newvalue]
ロッキングテーブルの名前を表示 (場合によっては、さらに置換) する
|
ロッキングテーブル名の現在の値を取得するには、次のコマンドを使用します。
#
ロッキングテーブル名の現在の値を置換するには、次のコマンドを使用します。
#
|
sb device ondisk [newvalue]
ondisk フォーマット番号を表示 (場合によっては、さらに置換) する
| このタスクは実行しないでください。 |
sb device multihost [newvalue]
multihost フォーマット番号を表示 (場合によっては、さらに置換) する
| このタスクは実行しないでください。 |
sb device uuid [newvalue]
uuid 値を表示 (場合によっては、さらに置換) する
| uuid の現在の値を取得するには、次のコマンドを使用します。
#
uuid の現在の値を置換するには、次のコマンドを使用します。
#
|
sb device all
GFS2 スーパーブロックを出力する
|
#
|
setflag Flag File1 File2 ...
ファイルの属性フラグを設定する
| Linux の標準的な chattr コマンド |
settune MountPoint parameter newvalue
チューニングパラメーターの値を設定する
|
多くの場合、
mount (-o remount とオプション) によって置き換えられます。他のチューニングパラメーターは、各 sysfs ファイルで設定できます (/sys/fs/gfs2/cluster_name:file_system_name/tune/*)。
|
unfreeze Mountpoint
GFS2 ファイルシステムをフリーズ解除する
| Linux の標準的な fsfreeze -unfreeze mountpoint コマンド |
version
gfs2_tool コマンドのバージョンを表示する
| 該当なし |
withdraw MountPoint
GFS2 により該当するファイルシステムを強制シャットダウンする
|
#
|
第2章 GFS2 の設定および操作における考慮事項
重要
2.1. フォーマットに関する考慮事項
2.1.1. ファイルシステムサイズ: 小さい方が好ましい
- 各ファイルシステムのバックアップ所要時間が短縮されます。
fsck.gfs2コマンドでファイルシステムをチェックする必要がある場合の所要時間が短縮されます。fsck.gfs2コマンドでファイルシステムをチェックする必要がある場合は、必要なメモリーが少なくなります。
2.1.2. ブロックサイズ: デフォルト (4K) ブロックを推奨
mkfs.gfs2 コマンドは、デバイストポロジーに基づいて最適なブロックサイズの算出を試みます。一般的には、4K ブロックが推奨ブロックサイズです。これは、Linux のデフォルトのページサイズ (メモリー) が 4K であるためです。GFS2 は他のファイルシステムとは異なり、4K カーネルバッファーを使用して大半の操作を実行します。ブロックサイズが 4K の場合は、カーネルで行う必要のあるバッファー操作の作業が軽減されます。
2.1.3. ジャーナル数: マウントするノードにつき 1 つ
gfs2_jadd コマンドでジャーナルを追加することができます。GFS2 では、オンザフライでジャーナルを追加することが可能です。
2.1.4. ジャーナルサイズ: 通常はデフォルト (128 MB) が最適
mkfs.gfs2 コマンドを実行して GFS2 ファイルシステムを作成する際には、ジャーナルのサイズを指定することができます。サイズを指定しなかった場合には、デフォルトで 128 MB に設定されます。これは大半のアプリケーションで最適な値です。
2.1.5. リソースグループのサイズと数
mkfs.gfs2 コマンドで作成されると、ストレージが均一のサイズに分割されます。この分割された部分はリソースグループとして知られています。最適のリソースグループのサイズ (32MB から 2GB) を推測しようと試行します。mkfs.gfs2 コマンドに-r オプションをつけることで、デフォルトより優先させることができます。
- 第 1 の方法は、リソースグループが完全に満杯になった場合に、GFS2 はその情報を記憶し、以降の割り当てでは、(ブロックが解放されるまで) そのリソースグループをチェックしないようにします。ファイルは決して削除せず、競合度が低くなります。ただし、ご使用のアプリケーションが、ほぼ満杯のファイルシステムで絶えずブロックを削除して新規ブロックを割り当てている場合にはいる場合には、競合度が極めて高くなり、パフォーマンスに深刻な悪影響を及ぼします。
- 第 2 の方法は、新しいブロックが既存ファイルに追加されると (例:添付)、GFS2 は同じリソースグループ内で、ファイルとして新しいブロックを結合しようとします。こうすることで、パフォーマンスの向上を図ります。つまりディスクが回転している場合は、物理的に距離が短いほうが検索にかかる時間が短縮されます。
2.2. ファイルシステムの断片化
filefrag ツールでファイルを識別して一時ファイルにコピーし、この一時ファイルの名前を変更することでオリジナルファイルを置き換えることにより、個別ファイルをデフラグすることができます。
2.3. ブロック割り当てにおける問題
2.3.1. ファイルシステムに空き領域を確保する
2.3.2. 可能な場合は各ノードで独自のファイルを割り当てる
2.3.3. 可能な場合には事前に割り当てる
fallocate(1) システムコールを実装しています。
2.4. クラスターに関する考慮事項
2.5. 使用に関する考慮事項
2.5.1. マウントオプション: noatime と nodiratime
noatime および nodiratime の引数を使用してマウントすることを推奨します。これにより、アクセスする度に GFS2 がディスク inode を更新する時間を短縮することができます。
2.5.2. VFS チューニングオプション: リサーチと実験
sysctl(8) コマンドを使用して VFS 層をチューニングすることにより、配下の GFS2 パフォーマンスを向上させることができます。たとえば、状況に応じて dirty_background_ratio および vfs_cache_pressure の値を調整することができます。現在の値を取得するには、以下のコマンドを使用します。
#sysctl -n vm.dirty_background_ratio#sysctl -n vm.vfs_cache_pressure
#sysctl -w vm.dirty_background_ratio=20#sysctl -w vm.vfs_cache_pressure=500
/etc/sysctl.conf ファイルを編集すると、これらのパラメーターを永久的に変更することができます。
2.5.3. SELinux: GFS2 では SELinux の使用を回避する
mount(8) man ページで説明されたように context オプションのいずれかを使用して SELinux が各ファイルシステムオブジェクトの seclabel 要素の読み取りを試行しないようにする必要があります。SELinux では、ファイルシステムのすべてのコンテンツが、context マウントオプションで提供された seclabel 要素でラベル付けされると見なされます。また、これにより、seclabel 要素を含む拡張属性ブロックの別のディスク読み取りが回避され、処理が高速化されます。
mount コマンドを使用して GFS2 ファイルシステムをマウントできます。このラベルはファイルシステム全体に適用されます。メモリーに残り、ディスクには書き込まれません。
# mount -t gfs2 -o context=system_u:object_r:httpd_sys_content_t:s0 /dev/mapper/xyz/mnt/gfs2public_content_rw_t または public_content_t を使用するか、新しいラベルを定義し、それに関するポリシーを定義できます。
2.5.4. GFS2 上における NFS セットアップ
警告
localflocks オプションを使用してファイルシステムをマウントする必要があります。この目的は、各サーバーからの POSIX ロックをローカル (つまり、クラスター化されず、相互に独立した状態) として強制的に設定することです (GFS2 が NFS からクラスターのノード全体で POSIX ロックを実装しようとすると、複数の問題が発生します)。NFS クライアント上で実行されているアプリケーションでは、2 台のクライアントが異なるサーバーからマウントしている場合、ローカルの POSIX ロックにより、それら 2 台のクライアントが同じロックを同時に保持することがあります。すべてのクライアントが単一のサーバーから NFS をマウントする場合は、異なるサーバーが同じロックを別々に許可するという問題が解消されます。localflocks オプションでファイルシステムをマウントするべきかどうかがわからない場合は、このオプションを使用しないでください (ロックはクラスターベースで使用する方が安全です)。
- Red Hat は、以下のような特性を持つアクティブ/パッシブ構成のロックを備えた NFSv3 を使用する Red Hat High Availability アドオン設定のみをサポートしています。
- バックエンドファイルシステムは、2〜16 のノードクラスターで稼働している GFS2 ファイルシステムです。
- NFSv3 サーバーは、単一クラスターノードから GFS2 ファイルシステム全体を一度にエクスポートするサービスとして定義されます。
- NFS サーバーは、一つのクラスターノードから他のクラスターノードへのフェイルオーバーが可能です (アクティブ/パッシブ構成)。
- NFS サーバー経由 以外の GFS2 ファイルシステムへのアクセスは許可されません。これには、ローカルの GFS2 ファイルシステムアクセスと、Samba または クラスター化された Samba を介したアクセスの両方が含まれます。
- システム上で NFS クォータはサポートされていません。
この構成では、ノードで障害が発生しても、NFS サーバーをあるノードから別のノードへフェイルオーバーするときにfsckコマンドを実行する必要がないため、ファイルシステムに高可用性 (HA) が提供され、システムダウンタイムが削減されます。 fsid=NFS オプションは、GFS2 の NFS エクスポートには必須です。- クラスターに問題が生じた場合 (例: クラスタが定足数に達せず、フェンシングが失敗した場合) には、クラスター化された論理ボリュームと GFS2 ファイルシステムはフリーズされ、クラスターが定足数を満たすようになるまではアクセスできません。この手順で説明したような、単純なフェイルオーバー解決方法がご使用のシステムに最も適切かどうかを判断する際には、この可能性を考慮する必要があります。
2.5.5. GFS2 上の Samba (SMB または Windows) ファイルサービス
2.5.6. GFS2 用仮想マシンの設定
cache と io に対するこれらの設定を libvirt ドメインに含めると、GFS2 が期待どおりに動作します。
<driver name='qemu' type='raw' cache='none' io='native'/>
shareable 属性を設定することができます。これは、デバイスがドメイン間で共有されることを意味します (ハイパーバイザーと OS でサポートされる場合)。shareable が使用される場合は、そのデバイスに対して cache='no' を使用する必要があります。
2.6. ファイルシステムのバックアップ
echo -n 3 > /proc/sys/vm/drop_caches
rsync コマンドを使用するスクリプトにより実行することができます。
-o lockproto=lock_nolock でスナップショットをマウントする必要があります。
2.7. ハードウェアに関する考慮事項
- より高品質なストレージオプションを使用するGFS2 は、iSCSI や Fibre Channel over Ethernet (FCoE) などの低コストの共有ストレージオプションで稼働可能ですが、キャッシュ容量が大きな高品質のストレージを購入するとパフォーマンスが向上します。Red Hat は、ファイバーチャネル相互接続の SAN ストレージ上で品質、サニティー、パフォーマンスに関するほとんどのテストを実行します。原則として、まずテストを実施してからデプロイすることが推奨されます。
- デプロイ前にネットワーク機器をテストする高品質の高速ネットワーク機器を使用することにより、クラスターの通信および GFS2 が高速化され、信頼性が向上しますが、最も高額なハードウェアを購入する必要はありません。最も高価なネットワークスイッチの一部で
fcntlロック (flock) の受け渡しに使用されるマルチキャストパケットの受け渡しの問題が発生する一方で、安価なコモディティーネットワークスイッチの方が高速かつ信頼度が高い場合があります。完全な実稼働環境にデプロイする前に機器をテストすることが推奨されます。
2.8. パフォーマンス上の問題: Red Hat カスタマーポータルで確認する
2.9. GFS2 のノードロック機能
write システムコールなど)。
注記
- inode が全ノードにわたって読み取り専用で使用される
- inode が単一ノードからのみ書き込みまたは修正される
mmap() しても、読み取りしか行わない場合は、読み取りのみと見なされますが、GFS 上では書き込みとして見なされるため、mmap() I/O では、GFS2 の方が拡張性がはるかに高くなります。
noatime mount パラメーターを指定していない場合は、読み取りによって、ファイルのタイムスタンプを更新するための書き込みも発生します。GFS2 を使用する場合、atime を特に必要としない限りは、noatime を指定してマウントすることを推奨します。
2.9.1. POSIX ロックの問題
- フロックを使用すると、POSIX ロックを使用するより処理が早い
- クラスター環境では指定のプロセス ID が別のノード用である場合もあるため、GFS2 で POSIX ロックを使用するプログラムは、
GETLK関数の使用を避けるべきです。
2.9.2. GFS2 によるパフォーマンスチューニング
mbox)、または各メッセージ用のファイルを格納する各ユーザー用のディレクトリー (maildir) などで構成されているのが一般的です。IMAP 経由で要求が到着した場合、特定のノードに対するアフィニティーを各ユーザーに提供するのが理想的な設定となります。 これにより、Email メッセージの表示と削除の要求は、その単一ノードのキャッシュから提供される傾向になります。そのノードに障害が発生した場合は、当然、別のノードでセッションを再起動させることができます。
imap または smtp にかかわらず、アプリケーションに対して障害の発生を透過的にすることができます。
echo -n 3 >/proc/sys/vm/drop_caches
2.9.3. GFS2 ロックダンプを使用した GFS2 パフォーマンスのトラブルシューティング
debugfs ファイルから収集することができます。このファイルのパス名は以下のとおりです (debugfs が /sys/kernel/debug/ にマウントされていることが前提です)。
/sys/kernel/debug/gfs2/fsname/glocks
debugfs ファイルの最適な使用方法は、アプリケーションに問題の発生中に cat コマンドを使ってファイルの全内容のコピーをとり (RAM が大容量で、かつキャッシュされた inode が多数ある場合には長時間がかかる可能性があります)、後日に結果データを確認する方法です。
注記
debugfs ファイルのコピーを 2 つ作成すると、役に立つことがあります (2 つ目のコピーを最初のコピーの数秒後または数分後に作成します)。同じ glock 番号に関連する 2 つのトレースでホルダー情報を比較すると、ワークロードが処理されているか (単に処理速度が遅い)、または処理が停止しているか (この場合は必ずバグであり、Red Hat サポートに直ちに報告してください) がわかります。
debugfs ファイルの H: (ホルダー) で始まる行は、承認済みまたは承認待機中のロック要求を表します。ホルダー行のフラグフィールド f: には、待機中の要求を示す「W」フラグ、または承認済み要求を示す「H」フラグが表示されます。待機中の要求が多数ある glocks は特定の競合が発生している可能性が高くなります。
表2.1 glock フラグ
| フラグ | 名前 | 意味 |
|---|---|---|
| b | Blocking | ロックされたフラグが設定されている場合に有効であり、DLM から要求された操作がブロックされる可能性があることを示します。このフラグは、降格の操作と「try」ロックに対して消去されます。このフラグの目的は、ロックを降格するために他のノードでかかる時間とは別の DLM 応答時間に関する統計情報の収集を許可することです。 |
| d | Pending demote | 遅延された (リモートの) 降格要求 |
| D | Demote | 降格要求 (ローカルまたはリモート) |
| f | Log flush | この glock を解放する前にログをコミットする必要があります |
| F | Frozen | リモートノードからの返信が無視されます (復元は進行中)。このフラグは、異なるメカニズムを使用するファイルシステムのフリーズとは関係がなく、復元中にしか使用されません。 |
| i | Invalidate in progress | この glock のページの無効化が進行中です |
| I | Initial | DLM がこの glock と関連付けられる場合に指定します |
| l | Locked | glock は状態の変更中です |
| L | LRU | glock が LRU リストにあるときに設定されます |
| o | オブジェクト | glock がオブジェクト (タイプ 2 glock の場合は inode、タイプ 3 glock の場合はリソースグループ) に関連付けられた場合に設定されます。 |
| p | Demote in progress | glock は降格要求に応答中です |
| q | キュー待ち | glock に対してホルダーがキューに格納された場合に設定され、glock が保持された場合に消去されます (ただし、残りのホルダーはありません)。glock の最小保持時間を計算するアルゴリズムの一部として使用されます。 |
| r | Reply pending | リモートノードから受信した返信の処理の待機中です |
| y | Dirty | この glock を解放する前にデータをディスクにフラッシュする必要があります |
表2.2 Glock ホルダーフラグ
| フラグ | 名前 | 意味 |
|---|---|---|
| a | Async | glock の結果を待ちません (結果を後でポールします) |
| A | Any | 互換性のあるロックモードはすべて受け入れ可能です |
| c | No cache | ロック解除時に DLM ロックを即時に降格します |
| e | No expire | 後続のロック取り消し要求を無視します |
| E | exact | 完全一致するロックモードでなければなりません |
| F | First | ホルダーがこのロックに最初に許可される場合に指定します |
| H | Holder | 要求したロックが許可されたことを示します |
| p | Priority | キューの先頭にある待機ホルダー |
| t | Try | 「try」ロックです |
| T | Try 1CB | コールバックを送信する「try」ロックです |
| W | Wait | 要求完了の待機中にセットされます |
find -inum number のコマンドを実行すると、inode をトラッキングすることができます。glocks ファイルにある 16 進形式から 10 進形式に変換した inode 番号が number になります。
警告
find を実行すると、事態が悪化する可能性が高くなります。競合している inode を探している場合は、まずアプリケーションを停止してから find を実行することが推奨されます。
表2.3 glock のタイプ
| タイプ番号 | ロックタイプ | 用途 |
|---|---|---|
| 1 | Trans | トランザクションのロック |
| 2 | Inode | Inode のメタデータとデータ |
| 3 | Rgrp | リソースグループのメタデータ |
| 4 | Meta | スーパーブロック |
| 5 | Iopen | 最後に inode をクローズしたプロセスの検出 |
| 6 | Flock | flock(2) syscall |
| 8 | Quota | クォータ操作 |
| 9 | Journal | ジャーナルミューテックス |
gfs2_grow コマンドを使用してファイルシステムを拡張することで改善することができます。
第3章 GFS2 の管理
3.1. ファイルシステムの作成
mkfs.gfs2 コマンドを使用して GFS2 ファイルシステムを作成します。 また mkfs コマンドに -t gfs2 オプションを指定して使用することもできます。 ファイルシステムは起動中の LVM ボリューム上で作成されます。 mkfs.gfs2 コマンドを実行するには 以下の情報が必要になります。
- プロトコル/モジュールのロック名(クラスター用の lock protocol は
lock_dlm) - クラスター名(クラスター設定の一部として実行している場合)
- ジャーナルの数(ファイルシステムをマウントするノード 1 つにつき、ジャーナルが1つ必要)
mkfs.gfs2 コマンドを使用できます。または、mkfs コマンドに -t パラメーターを付けてタイプ gfs2 のファイルシステムを指定し、その後に GFS2 ファイルシステムのオプションを指定できます。
注記
mkfs.gfs2 コマンドで GFS2 ファイルシステムを作成した後には、そのファイルシステムのサイズは縮小できません。 ただし、 「ファイルシステムの拡張」 に記載されている通り、gfs2_grow コマンドを使って既存のファイルシステムのサイズを拡大することは可能です。
使用法
mkfs.gfs2 -pLockProtoName-tLockTableName-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName-tLockTableName-jNumberJournals BlockDevice
注記
mkfs.gfs2 -pLockProtoName-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName-jNumberJournals BlockDevice
警告
LockProtoName と LockTableName のパラメーターの使用に精通していることを確認してください。LockProtoName と LockTableName のパラメーターを不適切に使用をすると、ファイルシステムまたはロックスペースが破損する可能性があります。
LockProtoName- 使用するロックプロトコルの名前を指定します。クラスター用のロックプロトコルは
lock_dlmです。 LockTableName- このパラメーターはクラスター設定の GFS2 ファイルシステム用に指定されます。これは、次にあげるように、コロンで区切られた2つの部分(空白なし)で構成されます:
ClusterName:FSNameClusterName: クラスター名。このクラスターに GFS2 ファイルシステムが作成されます。FSName: ファイルシステムの名前。1 文字から 16 文字までの長さに指定することができます。この名前は、クラスター上のすべてのlock_dlmファイルシステムと各ローカルノード上のすべてのファイルシステム(lock_dlmおよびlock_nolock)にわたって一意である必要があります。
Numbermkfs.gfs2コマンドで作成するジャーナルの数を指定します。ファイルシステムをマウントするノード毎に1つのジャーナルが必要です。「ファイルシステムへジャーナルの追加」 で説明しているように、GFS2 ファイルシステムではファイルシステムを拡張することなくジャーナルを後で追加することができます。BlockDevice- 論理ボリュームまたは物理ボリュームを指定します。
例
lock_dlm は ファイルシステムが使用するロッキングプロトコルです (ファイルシステムはクラスター化ファイルシステム)。クラスター名は alpha であり、ファイルシステム名は mydata1 です。このファイルシステムは 8 つのジャーナルを含み、/dev/vg01/lvol0 上に作成されます。
# mkfs.gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
# mkfs -t gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0lock_dlm ファイルシステムが作成されて、それがクラスター alpha 内で使用できます。ファイルシステム名は mydata2 です。このファイルシステムには 8つのジャーナルが 含まれており、/dev/vg01/lvol1 上に作成されます。
mkfs.gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
mkfs -t gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
全オプション
mkfs.gfs2」 では mkfs.gfs2 コマンドのオプションを説明しています (フラグとパラメーター)。
表3.1 コマンドオプション: mkfs.gfs2
| フラグ | パラメーター | 説明 | ||||
|---|---|---|---|---|---|---|
-c | Megabytes | 各ジャーナルのクォータ変更ファイルの初期サイズを Megabytes に設定します。 | ||||
-D | デバッグの出力を有効にします。 | |||||
-h | ヘルプ。使用可能なオプションを表示します。 | |||||
-J | Megabytes | ジャーナルのサイズをメガバイトで指定します。デフォルトのジャーナルサイズは 128 メガバイトです。最低サイズは 8 メガバイトです。ジャーナルを大きくするとパフォーマンスが向上しますが、小さいジャーナルよりもメモリーを多く消費します。 | ||||
-j | Number | mkfs.gfs2 コマンドで作成されるジャーナルの数を指定します。ファイルシステムをマウントするノード毎に1つのジャーナルが必要になります。このオプションが指定されていない場合、作成されるジャーナルは1つとなります。GFS2 ファイルシステムでは ファイルシステムを拡張することなく、ジャーナルを後で追加することができます。 | ||||
-O | mkfs.gfs2 コマンドでファイルシステムへの書き込み前に確認プロンプトを表示しないようにします。 | |||||
-p | LockProtoName |
| ||||
-q | Quiet モード。何も表示しません。 | |||||
-r | Megabytes | リソースグループのサイズをメガバイト単位で指定します。リソースグループの最低サイズは 32 メガバイトです。リソースグループの最大サイズは 2048 メガバイトです。リソースグループのサイズが大きいと、非常に大規模なファイルシステムのパフォーマンスが向上することがあります。リソースグループのサイズを指定しない場合は、mkfs.gfs2 がファイルシステムのサイズに基いてリソースグループのサイズを選択します。平均的なサイズのファイルシステムでは 256 メガバイトのリソースグループとなり、大きなファイルシステムではパフォーマンスを向上させるためにさらに大きなリソースグループサイズとなります。 | ||||
-t | LockTableName |
| ||||
-u | Megabytes | 各ジャーナルのリンクのないタグファイルの初期サイズを指定します。 | ||||
-V | コマンドのバージョン情報を表示します。 |
3.2. ファイルシステムのマウント
-o acl マウントオプションを指定して、ファイルシステムをマウントする必要があります。-o acl マウントオプションを指定せずにファイルシステムをマウントすると、ユーザーは (getfacl で) ACL を表示できますが、(setfaclで) それらを設定することができません。
使用法
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint-o acl- ファイル ACL の操作を可能にする GFS2 固有のオプション 。
BlockDevice- GFS2 ファイルシステムが常駐するブロックデバイスを指定します。
MountPoint- GFS2 ファイルシステムがマウントされるディレクトリーを指定します。
例
/dev/vg01/lvol0 の GFS2 ファイルシステムは /mygfs2 ディレクトリーにマウントされます。
# mount /dev/vg01/lvol0 /mygfs2完全な使用法
mountBlockDevice MountPoint-ooption
-o option 引数は GFS2 固有のオプション (表3.2「GFS2 固有のマウントオプション」 を参照)、使用可能な標準の Linux mount -o オプション、あるいはその両方の組み合わせで構成されます。複数の option パラメーターは、空白を 入れずにコンマで区切ります。
注記
mount コマンドは Linux のシステムコマンドです。このセクションに 説明してある GFS2 固有のオプションの他にも、標準の mount コマンドの オプション(たとえば、-r)を使用することができます。Linux mount コマンドのオプションに関する情報は、Linux mount man ページでご覧ください。
-o option 値を説明します。
注記
表3.2 GFS2 固有のマウントオプション
| オプション | 説明 | ||
|---|---|---|---|
acl | ファイル ACL の操作を可能にします。 acl マウントオプションを指定せずにファイルシステムをマウントした場合、ユーザーは ACL の表示 (getfacl) はできますが、設定 (setfacl) はできません。 | ||
data=[ordered|writeback] | data=ordered を設定すると、トランザクションによって変更されたユーザーデータは、トランザクションがディスクにコミットされる前にディスクにフラッシュされます。これは、クラッシュの後にファイル内で初期化されていないブロックがユーザーに表示されるのを防ぎます。data=writeback モードが設定されている場合は、ユーザーデータはダーティとなった後でも、随時ディスクに書き込まれます。これは、ordered モードと同じ一貫性保証は提供しませんが、一部のワークロードでは若干速くなるはずです。デフォルト値は ordered モードです。 | ||
| GFS2 がファイルシステムをマルチホストファイルシステムとして扱うように強制します。デフォルトでは、lock_nolock を使用すると localflocks のフラグが自動的に有効になります。 | ||
| VFS (virtual file system) レイヤーですべての flock と fcntl を実行するよう、GFS2 に指示します。localflocks フラグは lock_nolock によって自動的に有効になります。 | ||
lockproto=LockModuleName | ユーザーが、ファイルシステムで使用するロックプロトコルを指定できるようにします。LockModuleName が指定されていない場合は、ファイルシステムのスーパーブロックからロックプロトコル名が読み込まれます。 | ||
locktable=LockTableName | ユーザーがファイルシステムで使用するロックテーブルを指定できるようにします。 | ||
quota=[off/account/on] | ファイルシステムのクォータのオン/オフを切り替えます。account の状態となるようにクォータを設定すると、UID/GID 毎の使用状況の統計はファイルシステムによって正しく維持され、上限と警告の値は無視されます。デフォルト値は off です。 | ||
errors=panic|withdraw | errors=panic を指定すると、ファイルシステムのエラーによりカーネルパニックが起こります。errors=withdraw を指定すると (これはデフォルトの動作)、ファイルシステムのエラーにより、システムがファイルシステムから切り離され、次回の再起動までシステムにアクセスできなくなります。場合によっては、システムが稼働し続けることがあります。 | ||
discard/nodiscard | これにより、GFS2 は、解放されたブロックに対する「破棄」 I/O 要求を生成します。これらのブロックは、適切なハードウェアがシンプロビジョニングおよび同様のスキームを実装するのに使用可能です。 | ||
barrier/nobarrier | これにより、GFS2 は、ジャーナルをフラッシュする際に、I/O バリアを送信します。デフォルト値は on です。このオプションは配下のデバイスが I/O バリアに対応していない場合は自動的に off になります。書き込みキャッシュの内容の消失が不可能となるようにブロックデバイスが設計されていない限り (UPS 上にある場合や書き込みキャッシュがない場合)、GFS2 では I/O バリアを常に使用することを強く推奨します。 | ||
quota_quantum=secs | クォータ情報に関する変更がクォータファイルに書き込まれるまでに一つのノードに留めることができる秒数を設定します。パラメーターの設定には、この方法が推奨されます。値はゼロより大きい整数になります。デフォルトは 60 秒です。これより短く設定すると遅延クォータ情報の更新速度が速くなるため、そのクォータを越えてしまう可能性が少なくなります。長く設定すると、クォータに伴うファイルシステムの動作速度が高速化され、効率性が向上します。 | ||
statfs_quantum=secs | statfs の遅いバージョンを設定する場合は statfs_quantum を 0 に設定するのが推奨の方法です。デフォルト値は 30 秒で、statfs の変更が statfs のマスターファイルに同期されるまでの最大時間を設定します。速度を高くして statfs の正確性を低くしたり、速度を低くして正確性を高めたりするなどの調整が可能です。このオプションを 0 に設定すると statfs は常に true の値を報告するようになります。 | ||
statfs_percent=value | 有効期間が切れていない場合でも、 statfs のマスターファイルに戻って同期するまでにローカルベースで statfs 情報の最大変更率の上限を提供します。 statfs_quantum の設定が 0 の場合はこの設定は無視されます。 |
3.3. ファイルシステムのアンマウント
umount コマンドを使用します。
注記
umount コマンドは Linux のシステムコマンドです。 このコマンドに関する情報は、Linux umount コマンドの man ページをご覧ください。
使用法
umount MountPointMountPoint- GFS2 ファイルシステムが現在マウントされているディレクトリーを指定します。
3.4. GFS2 ファイルシステムをマウントする際の注意事項
- GFS2 ファイルシステムを管理するには、必ず Pacemaker を使用してください。Pacemaker クラスターでの GFS2 の設定については、5章クラスターでの GFS2 ファイルシステムの設定を参照してください。
- GFS2 ファイルシステムを
mountコマンドを使って手作業でマウントした場合はシャットダウンまたは再起動を行う前に必ずumountコマンドを使って手作業でファイルシステムをアンマウントします。
3.5. GFS2 のクォータ管理
quota=on または quota=account のオプションで GFS2 ファイルシステムがマウントされると、制限が設定されていない場合でも、GFS2 は各ユーザーおよびグループが使用する領域を追跡します。GFS2 は、システムがクラッシュしてもクォータの使用状況を再構築する必要がないように、トランザクション形式でクォータ情報を更新します。
注記
3.5.1. ディスククォータの設定
- 強制またはアカウンティングモードでクォータを設定します。
- 現在のブロック使用状況の情報の入ったクォータデータベースファイルを初期化します。
- クォータポリシーを割り当てます (アカウンティングモードでは、これらのポリシーは適用されません)。
3.5.1.1. 強制またはアカウンティングモードでのクォータの設定
quota=on オプションを指定してファイルシステムをマウントします。
quota=account オプションを指定してファイルシステムをマウントします。
options 引数として quota=on を指定します。たとえば、以下のコマンドは、作成される GFS2 Filesystem リソースがクォータが有効な状態でマウントされることを示しています。
# pcs resource create gfs2mount Filesystem options="quota=on" device=BLOCKDEVICE directory=MOUNTPOINT fstype=gfs2 cloneoptions 引数として quota=account を指定します。
options 引数として quota=off を指定します。
3.5.1.2. クォータデータベースファイルの作成
quotacheck コマンドを実行します。
quotacheck コマンドは、クォータが有効なファイルシステムを検証し、現在のディスク使用状況のテーブルをファイルシステムごとに構築します。このテーブルは、ディスク使用状況のオペレーティングシステム用コピーを更新するのに使用されます。また、ファイルシステムのディスククォータが更新されます。
quotacheck コマンドで -u および -g のオプションを使用してください。ユーザーおよびグループのクォータを初期化するには、これらの両オプションを指定する必要があります。たとえば、/home ファイルシステムにクォータが有効化されている場合、/home ディレクトリーにファイルを作成します。
quotacheck -ug /home
3.5.1.3. ユーザーごとのクォータ割り当て
edquota コマンドを使用したディスククォータ割り当てです。ファイルシステムをアカウンティングモードでマウントしている場合には (quota=account オプションを指定)、クォータは適用されない点に注意してください。
# 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
注記
edquota は、EDITOR 環境変数で定義されているテキストエディターを使用します。このエディターを変更するには、~/.bash_profile ファイルの EDITOR 環境変数を任意のエディターのフルパスに設定してください。
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000
quota testuser
3.5.1.4. グループごとのクォータ割り当て
quota=account オプションを指定)、クォータは適用されない点に注意してください。
devel グループにグループクォータを設定するには (グループクォータを設定する前にグループが存在している必要があります)、以下のコマンドを使用します。
edquota -g devel
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0
$ quota -g devel3.5.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 の列は空欄のままになります。
repquota コマンドはサポートされていない点に注意してください。
3.5.3. クォータの精度維持
quotacheck コマンドを実行してクォータファイルを作成、確認、および修復する必要があります。また、クォータファイルが正確でないと思われる場合 (この問題は、システムのクラッシュ後にファイルシステムが正常にアンマントされていない場合に発生することがあります) は、quotacheck を実行することができます。
quotacheck コマンドについての詳しい情報は、quotacheck の man ページを参照してください。
注記
quotacheck は全ノード上でファイルシステムが比較的アイドル状態の時に実行してください。
3.5.4. quotasync コマンドを使用したクォータの同期
quota_quantum です。表3.2「GFS2 固有のマウントオプション」 で説明しているように、このパラメーターは quota_quantum= マウントオプションを使用してデフォルト値の 60 秒から変更することができます。quota_quantum パラメーターは、各ノードで、ファイルシステムがマウントされるたびに設定する必要があります。quota_quantum への変更は、アンマウント後には永続されません。quota_quantum 値は mount -o remount を使用して更新することができます。
gfs2_quota sync コマンドを使用すると、GFS2 によって実行される自動的な更新と更新の間にクォータ情報をノードからオンディスククォータファイルに同期することができます。
使用法
quotasync [-ug] -a|mntpnt...u- ユーザーのクォータファイルを同期します。
g- グループのクォータファイルを同期します。
a- 現在クォータが有効化された、同期に対応する全ファイルシステムを同期します。-a を使用していない場合には、ファイルシステムのマウントポイントを指定する必要があります。
mntpnt- 設定が適用される GFS2 ファイルシステムを指定します。
mount -o quota_quantum=secs,remount BlockDevice MountPointMountPoint- 設定が適用される 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/mygfs23.6. ファイルシステムの拡張
gfs2_grow コマンドを使用すると、ファイルシステムが 存在するデバイスが拡張された後に、GFS2 ファイルシステムを拡張することができます。既存の GFS2 ファイルシステム上で gfs2_grow コマンドを実行すると、ファイルシステムの現在の最後とデバイスの最後との間の空の領域に、新しく初期化された GFS2 ファイルシステム拡張が書き込まれます。この書き込み操作が 終了すると、ファイルシステムのリソースインデックスが更新されます。この結果、クラスター内のすべてのノードは、追加されたストレージ領域を使用できます。
gfs2_grow コマンドはマウント済みのファイルシステムで実行する必要がありますが、この作業を行う必要があるのはクラスター内の 1 つのノードのみです。他のノードはすべて、ファイルシステムが拡張されたことを自動的に認識して新規領域を使い始めます。
注記
mkfs.gfs2 コマンドで GFS2 ファイルシステムを作成した後はそのファイルシステムのサイズを縮小することはできません。
使用法
gfs2_grow MountPointMountPoint- 設定が適用される GFS2 ファイルシステムを指定します。
コメント
gfs2_grow コマンドを実行する前に:
- ファイルシステム上の重要なデータをバックアップします。
dfコマンドを実行して、拡張されるファイルシステムで使用するボリュームを決定します。MountPoint- LVM で配下のクラスターボリュームを拡張します。LVM ボリュームの管理についての情報は 『論理ボリュームマネージャの管理』 を参照してください。
gfs2_grow コマンドを実行した後に、df コマンドを使用して、新しい領域がファイルシステムで現在利用できることをチェックします。
例
/mygfs2fs ディレクトリー上のファイルシステムを拡張します。
# gfs2_grow /mygfs2fs
FS: Mount Point: /mygfs2fs
FS: Device: /dev/mapper/gfs2testvg-gfs2testlv
FS: Size: 524288 (0x80000)
FS: RG size: 65533 (0xfffd)
DEV: Size: 655360 (0xa0000)
The file system grew by 512MB.
gfs2_grow complete.完全な使用法
gfs2_grow [Options] {MountPoint|Device} [MountPoint|Device]
MountPoint- GFS2 ファイルシステムがマウントされているディレクトリーを指定します。
Device- ファイルシステムのデバイスノードを指定します。
表3.3 ファイルシステムを拡張している間に利用できる GFS2 固有のオプション
| オプション | 説明 |
|---|---|
-h | ヘルプ。使用法について短いメッセージを表示します。 |
-q | Quiet。詳細レベルを下げます。 |
-r Megabytes | 新規のリソースグループのサイズを指定します。デフォルトサイズは 256 メガバイトです。 |
-T | テスト。すべての計算をしますが、ディスクへの書き込みとファイルシステムの拡張は行いません。 |
-V | コマンドのバージョン情報を表示します。 |
3.7. ファイルシステムへジャーナルの追加
gfs2_jadd コマンドを使用してジャーナルを GFS2 ファイルシステムに追加します。配下の論理ボリュームを拡張せずに随時、動的に GFS2 ファイルシステムにジャーナルを追加することができます。gfs2_jadd コマンドは、マウント済みのファイルシステム上で実行する必要がありますが、この作業を行う必要があるのはクラスター内の1つのノードのみです。他のノードはすべて、ファイルシステムが拡張されたことを認識します。
注記
gfs2_jadd コマンドが失敗します。これは、GFS2 ファイルシステムでジャーナルが組み込みメタデータではなくプレーンなファイルとなるためです。これにより、基礎となる論理ボリュームを単に拡張してもジャーナルには領域が提供されません。
gfs2_edit -p jindex コマンドを使用して現在 GFS2 ファイルシステムに含まれるジャーナルの数を確認できます。
# gfs2_edit -p jindex /dev/sasdrives/scratch|grep journal
3/3 [fc7745eb] 4/25 (0x4/0x19): File journal0
4/4 [8b70757d] 5/32859 (0x5/0x805b): File journal1
5/5 [127924c7] 6/65701 (0x6/0x100a5): File journal2使用法
gfs2_jadd -j Number MountPointNumber- 新規に追加されるジャーナルの数を指定します。
MountPoint- GFS2 ファイルシステムがマウントされているディレクトリーを指定します。
例
/mygfs2 ディレクトリーのファイルシステムに追加されます。
gfs2_jadd -j1 /mygfs2
/mygfs2 ディレクトリーのファイルシステムに追加されます。
gfs2_jadd -j2 /mygfs2
完全な使用法
gfs2_jadd [Options] {MountPoint|Device} [MountPoint|Device]
MountPoint- GFS2 ファイルシステムがマウントされているディレクトリーを指定します。
Device- ファイルシステムのデバイスノードを指定します。
表3.4 ジャーナル追加時に利用できる GFS2 固有のオプション
| フラグ | パラメーター | 説明 |
|---|---|---|
-h | ヘルプ。使用法について短いメッセージ表示 | |
-J | Megabytes | 新規ジャーナルのサイズをメガバイトで指定します。デフォルトのジャーナルサイズは、128 メガバイトです。最小サイズは 32 メガバイトです。異なるサイズのジャーナルをファイルシステムに追加するには、各サイズのジャーナル毎に gfs2_jadd コマンドを実行する必要があります。指定するサイズは端数を切り捨て、ファイルシステムが 作成された時に指定してあるジャーナルセグメントサイズの倍数になるようにします。 |
-j | Number | gfs2_jadd コマンドにより追加される新規ジャーナルの数を 指定します。デフォルト値は 1です。 |
-q | Quiet。詳細レベルを下げます。 | |
-V | コマンドのバージョン情報を表示します。 |
3.8. データジャーナリング
fsync() を呼び出すと、そのファイルのデータはディスクに即時に書き込まれます。このコールは、ディスクがすべてのデータが安全に書き込まれたことを報告した時に戻ります。
fsync() にかかる時間を縮小することができます。ファイルサイズが大きくなると、この利点は急激に少くなります。データジャーナリング機能をオンにすると、中型および大型のファイルへの書き込み速度は大幅に低減します。
fsync() に依存してファイルデータを同期するアプリケーションは、データジャーナリングを使用することでパフォーマンスが向上する可能性があります。データジャーナリングは、フラグ付きディレクトリー(および、その全サブディレクトリー)内に作成された GFS2 ファイル用に、自動的に有効にされます。長さゼロの既存のファイルもデータジャーナリングをオン/オフに切り替えることができます。
chattr コマンドで有効にしたり無効にしたりすることができます。
/mnt/gfs2/gfs2_dir/newfile ファイルに対するデータジャーナリングを有効にしてからフラグが正しくセットされているかどうかをチェックします。
#chattr +j /mnt/gfs2/gfs2_dir/newfile#lsattr /mnt/gfs2/gfs2_dir---------j--- /mnt/gfs2/gfs2_dir/newfile
/mnt/gfs2/gfs2_dir/newfile ファイルに対するのデータジャーナリングを無効にして、次にフラグが正しくセットされていることをチェックします。
#chattr -j /mnt/gfs2/gfs2_dir/newfile#lsattr /mnt/gfs2/gfs2_dir------------- /mnt/gfs2/gfs2_dir/newfile
chattr コマンドを使用してディレクトリーに j フラグを設定することもできます。このフラグをディレクトリーに設定すると、そのディレクトリーで以降に作成されるファイルやディレクトリーはすべてジャーナリングされます。以下のコマンドのセットは gfs2_dir ディレクトリーに j フラグを設定し、そのフラグが正しくセットされているかどうかを確認します。この後、コマンドにより /mnt/gfs2/gfs2_dir ディレクトリーに newfile と言う新しいファイルが作成され、そのファイルに j フラグが正しく設定されていることをチェックします。j フラグはディレクトリーが設定してあるので、newfile もジャーナリングが有効になっているはずです。
#chattr -j /mnt/gfs2/gfs2_dir#lsattr /mnt/gfs2---------j--- /mnt/gfs2/gfs2_dir #touch /mnt/gfs2/gfs2_dir/newfile#lsattr /mnt/gfs2/gfs2_dir---------j--- /mnt/gfs2/gfs2_dir/newfile
3.9. atime 更新の設定
ctime— inode のステータスが最後に変更された時刻mtime— ファイル(またはディレクトリー)データが最後に修正された時刻atime— ファイル(またはディレクトリー)データが最後にアクセスされた時刻
atime 更新が有効となっている場合には、ファイルが読み込まれる度に inode が更新される必要があります。
atime によって提供される情報を使用するアプリケーションはほとんどないため、これらの更新は、相当な量の不要な書き込みトラフィックとファイルロッキングトラフィックを伴う場合があります。そのようなトラフィックはパフォーマンスを低下させるため、 atime 更新はオフにするか、頻度を低くしたほうが良いでしょう。
atime 更新の影響を低減するには、2 つの方法があります。
relatime(relative atime) でマウントすると、以前のatime更新がmtimeまたはctimeの更新より古い場合に、atimeが更新されます。noatimeでのマウントは、ファイルシステム上のatime更新を無効にします。
3.9.1. relatime を使用したマウント
relatime (relative atime) Linux マウントオプションは、ファイルシステムのマウント時に指定することができます。これは以前の atime 更新が mtime または ctime の更新よりも古い場合に atime が更新されるように指定します。
使用法
mount BlockDevice MountPoint -o relatimeBlockDevice- GFS2 ファイルシステムが常駐するブロックデバイスを指定します。
MountPoint- GFS2 ファイルシステムがマウントされるディレクトリーを指定します。
例
/dev/vg01/lvol0 に存在し、ディレクトリー /mygfs2 にマウントされます。atime 更新は、以前の atime 更新が mtime または ctime 更新よりも古い場合にのみ実行されます。
# mount /dev/vg01/lvol0 /mygfs2 -o relatime3.9.2. noatime を使用したマウント
noatime は、ファイルシステムのマウント時に指定できます。これはファイルシステムでの atime 更新を無効にします。
使用法
mount BlockDevice MountPoint -o noatimeBlockDevice- GFS2 ファイルシステムが常駐するブロックデバイスを指定します。
MountPoint- GFS2 ファイルシステムがマウントされるディレクトリーを指定します。
例
/dev/vg01/lvol0 に存在し、atime 更新が無効な状態でディレクトリー /mygfs2 にマウントされます。
# mount /dev/vg01/lvol0 /mygfs2 -o noatime3.10. ファイルシステム上の動作の一時停止
dmsetup suspend コマンドを使用すると、ファイルシステムへの書き込み動作を一時停止することができます。書き込み動作を一時停止することにより、ハードウェアベースデバイスのスナップショットを使用して ファイルシステムを一貫した状態でキャプチャーすることができます。一時停止を終了するには、dmsetup resume コマンドを実行します。
使用法
dmsetup suspend MountPoint
dmsetup resume MountPointMountPoint- ファイルシステムを指定します。
例
/mygfs2 への書き込みを一時停止します。
# dmsetup suspend /mygfs2/mygfs2 への書き込みの一時停止を終了します。
# dmsetup resume /mygfs23.11. ファイルシステムの修復
fsck.gfs2 コマンドを使用して GFS2 ファイルシステムのリカバリを行うことができます。
重要
fsck.gfs2 コマンドは、すべてのノードからアンマウントされた ファイルシステム上でのみ実行する必要があります。ファイルシステムが Pacemaker クラスターリソースとして管理される場合は、ファイルシステムリソースを無効にすることができます (これによりファイルシステムはアンマウントされます)。ファイルシステムリソースは、fsck.gfs2 コマンドの実行後に再び有効にします。pcs resource disable の --wait オプションで timeout 値を指定すると、値が秒単位で示されます。
# pcs resource disable --wait=timeoutvalue resource_id [fsck.gfs2] # pcs resource enable resource_id
fsck.gfs2 コマンドが GFS2 ファイルシステム上でブート時に実行されないようにするには、クラスターで GFS2 ファイルシステムリソースを作成するときに options 引数の run_fsck パラメーターを設定します。"run_fsck=no" と指定すると、fsck コマンドが実行されません。
注記
gfs_fsck コマンドを使用した経験がある場合は、fsck.gfs2 コマンドが以下の点で gfs_fsck の以前の一部のリリースと異なることに注意してください。
fsck.gfs2コマンドの実行中に Ctrl+C を押すと処理が中断され、コマンドを中止するかどうか、現在の残りのパスを省略するかどうか、または処理を続行するかどうかを尋ねるプロンプトが表示されます。-vフラグを使用すると、詳細度を高くすることが出来ます。第 2 の-vフラグを追加すると、レベルが更に高くなります。-qフラグを使用すると、詳細度を低くすることができます。第 2 の-qフラグを追加すると、レベルがさらに低くなります。-nオプションを使用すると、ファイルシステムが読み取り専用として開き、すべての質問に対して自動的にnoと回答します。このオプションでは、fsck.gfs2コマンドを実際に有効にせずに使用してエラーを見つけることができます。
gfs2.fsck の man ページを参照してください。
fsck.gfs2 コマンドの実行には、オペレーティングシステムとカーネルに使用するメモリー以上のシステムメモリーが必要です。GFS2 ファイルシステム自体の各メモリーブロックには約 5 ビットまたは 5/8 バイトの追加メモリーが必要になります。 このため、ファイルシステムで fsck.gfs2 を実行するために必要なメモリーのバイト数を判断するには、ファイルシステムに含まれているブロック数に 5/8 を乗算します。
fsck.gfs2 コマンドを実行するのに必要なメモリー容量を概算する場合は、最初に 16TB を 4K で割ってファイルシステムに含まれるメモリーのブロック数を計算します。
17592186044416 / 4096 = 4294967296
4294967296 * 5/8 = 2684354560
fsck.gfs2 コマンドを実行するには、 このファイルシステムに約 2.6 GB の空きメモリーが必要になります。ブロックサイズが 1K の場合は fsck.gfs2 コマンドの実行に 4 倍のメモリーまたは 11 GB の空きメモリーが必要になります。
使用法
fsck.gfs2 -y BlockDevice-y-yフラグを設定すると、すべての質問に対してyesと返します。-yフラグが指定した場合には、その設定を変更するまでfsck.gfs2コマンドは答えを要求するプロンプトは表示しません。BlockDevice- GFS2 ファイルシステムが常駐するブロックデバイスを指定します。
例
/dev/testvol/testlv に存在する GFS2 ファイルシステムが修復されます。修復に関するすべての質問には自動的に yes と回答されます。
# fsck.gfs2 -y /dev/testvg/testlv
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Clearing journals (this may take a while)...
Journals cleared.
Starting pass1
Pass1 complete
Starting pass1b
Pass1b complete
Starting pass1c
Pass1c complete
Starting pass2
Pass2 complete
Starting pass3
Pass3 complete
Starting pass4
Pass4 complete
Starting pass5
Pass5 complete
Writing changes to disk
fsck.gfs2 complete
第4章 GFS2 ファイルシステムに伴う問題の診断と修正
4.1. GFS2 ファイルシステムのパフォーマンス低下
4.2. GFS2 ファイルシステムがハングし、単一ノードのリブートが必要
- 各ノード上のファイルシステム用の GFS2 ロックダンプ:
cat /sys/kernel/debug/gfs2/fsname/glocks >glocks.fsname.nodename
- 各ノード上のファイルシステム用の DLM ロックダンプ: この情報は、
dlm_toolを使用して確認することができます。dlm_tool lockdebug -sv lsname.
このコマンドでは、lsname は、対象のファイルシステム用に DLM が使用するロックスペース名です。この値は、group_toolコマンドの出力で確認することができます。 sysrq -tコマンドの出力/var/log/messagesファイルの内容
4.3. GFS2 ファイルシステムがハングし、全ノードのリブートが必要
- フェンスに障害が発生している可能性があります。GFS2 ファイルシステムがフリーズし、障害が発生したフェンスのイベントのデータ整合性が確保されます。メッセージログを確認し、ハング時にフェンスに障害が発生していたかどうかを調べます。フェンスが正しく設定されているかどうかも確認します。
- GFS2 ファイルシステムが無効な状態 (withdraw エラー) である可能性があります。メッセージログで
withdrawという単語があるか調べ、ファイルシステムが無効な状態 (withdraw エラー) であることを示す GFS2 からのメッセージおよびコールトレースの有無を確認します。この状態は、ファイルシステムの破損、ストレージの障害、またはバグがあることを示しています。ファイルシステムを再び稼動させるために、ファイルシステムをアンマウントして、gfs2-utilsパッケージを更新し、fsckコマンドをファイルシステム上で実行します。Red Hat サポートでサポートチケットを開き、GFS2 が無効な状態 (withdraw エラー) であることを伝え、ログと、sosreportsコマンドで生成されたデバッグ情報を提供します。 - ロック関連の問題が発生したかバグの可能性があります。問題の発生中にデータを収集し、「GFS2 ファイルシステムがハングし、単一ノードのリブートが必要」 で説明されたように Red Hat サポートのチケットを作成してください。
4.4. 新たに追加されたクラスターノードに GFS2 ファイルシステムをマウントできない
spectator マウントオプションが設定された状態でマウントされた GFS2 ファイルシステムはジャーナルが必要ないため、例外となります)。GFS2 ファイルシステムにジャーナルを追加するには、「ファイルシステムへジャーナルの追加」で説明されているように、gfs2_jadd コマンドを使用します。
4.5. 空のファイルシステムで使用中と表示される領域
df コマンドを使用すると、使用領域が表示されます。これは、GFS2 ファイルシステムジャーナルが、ディスクの領域 (ジャーナル数 x ジャーナルサイズ) を消費するためです。多数のジャーナルとともに GFS2 ファイルシステムを作成した場合、または大きなジャーナルサイズを指定した場合は、df を実行した際に、(ジャーナル数 x ジャーナルサイズ) が既に使用中であることが示されます。大量のジャーナルまたは大きいジャーナルを指定しなかった場合でも、小さい GFS2 ファイルシステム (1 GB 以下の範囲) では、デフォルトの GFS2 ジャーナルサイズで大きな領域が使用中であることが示されます。
第5章 クラスターでの GFS2 ファイルシステムの設定
- グローバル Pacemaker パラメーター
no_quorum_policyをfreezeに設定します。注記
no-quorum-policyの値は、デフォルトではstopに設定され、定足数を失うと、残りのパーティション上の全リソースが直ちに停止されます。一般的には、このデフォルト値が最も安全で最適なオプションですが、ほとんどのリソースとは異なり、GFS2 が正しく機能するには定足数が必要です。定足数を失うと、GFS2 マウントを使用しているアプリケーションと GFS2 マウント自体の両方が正しく停止できなくなります。定足数がないままこうしたリソースを停止しようとすると、停止に失敗し、最終的に定足数を失う度にクラスター全体がフェンシングされます。このような状況に対処するために、GFS2 を使用している場合はno-quorum-policy=freezeを設定できます。この場合は、定足数が失われると、定足数を取り戻すまで残りのパーティションで何の処理も行われなくなります。#
pcs property set no-quorum-policy=freeze dlmリソースをセットアップします。これは、clvmdおよび GFS2 に必要な依存関係です。#
pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true- クラスター化ロックを有効にするために、クラスターの各ノードで以下のコマンドを実行します。このコマンドを実行すると、
/etc/lvm/lvm.confファイルのlocking_typeパラメーターが 3 に設定されます。#
/sbin/lvmconf --enable-cluster clvmdをクラスターリソースとしてセットアップします。#
pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=trueclvmdおよびdlmの依存関係をセットアップし、順番に起動します。clvmdはdlmの後に起動し、dlmと同じノードで実行する必要があります。#
pcs constraint order start dlm-clone then clvmd-clone#pcs constraint colocation add clvmd-clone with dlm-clone- クラスター化論理ボリュームを作成し、そのボリュームを GFS2 ファイルシステムでフォーマットします。クラスター内の各ノードには必ず十分なジャーナルを作成してください。
#
pvcreate /dev/vdb#vgcreate -Ay -cy cluster_vg /dev/vdb#lvcreate -L5G -n cluster_lv cluster_vg#mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv clusterfsリソースを設定します。このファイルシステムは Pacemaker のクラスターリソースとして管理されるため、/etc/fstabファイルには追加しないでください。マウントオプションは、options=optionsを使用してリソース設定の一部として指定できます。すべての設定オプションを確認する場合は、pcs resource describe Filesystemコマンドを実行します。以下のクラスターリソース作成コマンドでは、noatimeマウントオプションが指定されています。#
pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" "options=noatime" op monitor interval=10s on-fail=fence clone interleave=true- 予想どおり GFS2 がマウントされていることを確認します。
#
mount |grep /mnt/gfs2-demo/dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel) - GFS2 と
clvmdの依存関係をセットアップし、順番に起動します。GFS2 はclvmdの後に起動し、clvmdと同じノードで実行する必要があります。#
pcs constraint order start clvmd-clone then clusterfs-clone#pcs constraint colocation add clusterfs-clone with clvmd-clone
付録A Performance Co-Pilot による GFS2 パフォーマンスの分析
A.1. Performance Co-Pilot の概要
PCPIntro(1) man ページとその他の PCP man ページを参照してください。
表A.1 PCP ツール
| ツール | 用途 |
|---|---|
pmcd | Performance Metric Collector Service: PMDA からメトリックデータを収集し、PCP の他のコンポーネントでメトリックデータを利用できるようにする |
pmlogger | 他の PCP ツールでプレイバックできるパフォーマンスメトリック値のアーカイブログを作成できる |
pmproxy | PCP 監視クライアントが pmproxy により pmcd の 1 つまたは複数のインスタンスに接続することを可能にする pmcd のプロトコルプロキシー |
pminfo | コマンドラインでパフォーマンスメトリックに関する情報を表示する |
pmstore | パフォーマンスメトリック値を変更できる (カウンターの再初期化または新しい値の割り当て) |
pmdumptext | パフォーマンスメトリックデータをライブで、またはパフォーマンスアーカイブから ASCII テーブルにエクスポートする |
pmchart | パフォーマンスメトリック値を表にプロットするグラフィカルユーティリティー (pcp-gui パッケージ) |
A.2. PCP デプロイメント
pcp-gui パッケージをインストールして、pmchart ツールでトレースデータを視覚的に表示することもできます。
/usr/share/doc/pcp-doc にインストールされる pcp-doc パッケージを参照してください。PCP は、各ツールの man ページも提供します。
A.3. PCP インストール
debugfs ファイルシステムをマウントする必要があります。debugfs ファイルシステムがマウントされていない場合は、GFS2 PMDA をインストールする前に以下のコマンドを実行します。
#mkdir /sys/kernel/debug#mount -t debugfs none /sys/kernel/debug
#yum install pcp pcp-gui#cd /var/lib/pcp/pmdas/gfs2#./Install
collectorと指定すると、現在のシステムのパフォーマンスメトリックの収集が許可されます。monitorと指定すると、システムでローカルシステムまたはリモートシステム、あるいはローカルおよびリモートシステムの両方を監視できます。bothと指定すると、collector設定とmonitor設定の両方が有効になります。
#./InstallYou will need to choose an appropriate configuration for installation of the "gfs2" Performance Metrics Domain Agent (PMDA). collector collect performance statistics on this system monitor allow this system to monitor local and/or remote systems both collector and monitor configuration for this system Please enter c(ollector) or m(onitor) or b(oth) [b] Updating the Performance Metrics Name Space (PMNS) ... Terminate PMDA if already installed ... Updating the PMCD control file, and notifying PMCD ... Waiting for pmcd to terminate ... Starting pmcd ... Starting pmlogger ... Check gfs2 metrics have appeared ... 316 metrics and 205 values
debugfs がマウントされていることを確認してください (システムに GFS2 ファイルシステムが 1 つもロードされていない場合は、警告が発生することがあります)。
注記
A.4. GFS2 パフォーマンスデータのトレース
pminfo ツールを使用することです。pminfo コマンドラインツールは、利用可能なパフォーマンスメトリックスに関する情報を表示します。通常、pminfo はローカルメトリックネームスペースを使用して機能しますが、-h フラグを使用してリモートホストでメトリックスを表示するよう変更できます。pminfo ツールの詳細については、pminfo(1) man ページを参照してください。
# pminfo gfs2-T フラグを指定したり、各メトリックに対応するパフォーマンス値の現在の値を取得するために -f フラグを指定したりできます。これは、メトリックのグループまたは個別メトリックに対して行えます。ほとんどのメトリックデータは、プローブ時に、システムにマウントされた各 GFS2 ファイルシステムに対して提供されます。
#pminfo -t gfs2.glocksgfs2.glocks.total [Count of total observed incore GFS2 global locks] gfs2.glocks.shared [GFS2 global locks in shared state] gfs2.glocks.unlocked [GFS2 global locks in unlocked state] gfs2.glocks.deferred [GFS2 global locks in deferred state] gfs2.glocks.exclusive [GFS2 global locks in exclusive state] #pminfo -T gfs2.glocks.totalgfs2.glocks.total Help: Count of total incore GFS2 glock data structures based on parsing the contents of the /sys/kernel/debug/gfs2/bdev/glocks files. #pminfo -f gfs2.glocks.totalgfs2.glocks.total inst [0 or "testcluster:clvmd_gfs2"] value 74
pminfo ツールで -T フラグを使用して追加情報を見つけることができます。
表A.2 GFS2 向け PCP メトリックグループ
| メトリックグループ | 提供されるメトリック |
|---|---|
gfs2.sbstats.* | システムで現在マウントされている各 GFS2 ファイルシステムのスーパーブロック統計ファイル (sbstats) から収集された情報に関するタイミングメトリック。 |
gfs2.glocks.* | システムで現在マウントされている各 GFS2 ファイルシステムの glock の数をカウントする glock 統計ファイル (glocks) から収集された情報に関するメトリック。 |
gfs2.glstats.* | システムで現在マウントされている各 GFS2 ファイルシステムの各タイプの glock の数をカウントする glock 統計ファイル (glstats) から収集された情報に関するメトリック。 |
gfs2.tracepoints.* | システムで現在マウントされている各ファイルシステムの GFS2 debugfs トレースポイントからの出力に関するメトリック。これらのメトリックの各サブタイプ (いずれかの GFS2 トレースポイント) は、制御メトリックを使用してオンまたはオフに関係なく個別に制御できます。 |
gfs2.worst_glock.* | マウントされた各ファイルシステムの「現在最も悪い glock」を計算するために gfs2_glock_lock_time トレースポイントからデータを使用する計算済みメトリック。このメトリックはロックの競合を検出するのに役立ちます。ファイルシステムは、同じロックが複数回提示される場合は低速になります。 |
gfs2.latency.grant.* | マウントされた各ファイルシステムに対して glock 許可要求が完了するまでの平均レイテンシーをマイクロ秒単位で計算するために gfs2_glock_queue と gfs2_glock_state_change の両方のトレースポイントからデータを使用する計算済みメトリック。このメトリックは、許可レイテンシーが増加するときにファイルシステムの低速化を検出するのに役に立ちます。 |
gfs2.latency.demote.* | マウントされた各ファイルシステムに対して glock 降格要求が完了するまでの平均レイテンシーをマイクロ秒単位で計算するために gfs2_glock_state_change と gfs2_demote_rq の両方のトレースポイントからデータを使用する計算済みメトリック。このメトリックは、降格レイテンシーが増加するときにファイルシステムの低速化を検出するのに役に立ちます。 |
gfs2.latency.queue.* | マウントされた各ファイルシステムに対して glock キュー要求が完了するまでの平均レイテンシーをマイクロ秒単位で計算するために gfs2_glock_queue トレースポイントからデータを使用する計算済みメトリック。 |
gfs2.control.* | pmstore ツールにより有効または無効にしたり、切り替えたりするトレースポイントメトリックを制御するために使用する設定メトリック。これらの設定メトリックは、「メトリック設定 (pmstore の使用)」で説明されています。 |
A.5. メトリック設定 (pmstore の使用)
gsf2.control.* メトリックを使用する場合に該当します。これは、pmstore コマンドラインツールを使用して実現されます。ほとんどの他の PCP ツールの場合と同様に、pmstore ツールは通常、ローカルシステムの指定されたメトリックに対する現在値を変更しますが、-h スイッチを使用して、指定されたリモートシステムでメトリック値を変更できます。詳細については、pmstore(3) man ページを参照してください。
debugfs ファイルシステムのすべての GFS2 トレースポイントがオンになります。
# pmstore gfs2.control.tracepoints.all 1
gfs2.control.tracepoints.all old value=0 new value=1
pminfo ツールで help スイッチを指定して確認できます。
表A.3 制御トレースポイント
| 制御メトリック | 用途と利用可能なオプション |
|---|---|
gfs2.contol.tracepoints.all | GFS2 トレースポイント統計は、0 [オフ] または 1 [オン] を使用して手動で制御できます。メトリックの値を設定すると、トレースポイントメトリックからの収集が試行されるかどうかに関係なく、PMDA の動作が制御されます。 |
gfs2.control.tracepoints.* | GFS2 トレースポイント統計は、0 [オフ] または 1 [オン] を使用して手動で制御できます。メトリックの値を設定すると、指定された各トレースポイントメトリックからの収集が試行されるかどうかに関係なく、PMDA の動作が制御されます。 |
gfs2.control.global_tracing | グローバルトレースは、0 [オフ] または 1 [オン] を使用して制御できます。ほとんどの GFS2 メトリックが機能するために、これはオンである必要があります。 |
gfs2.control.worst_glock | オンまたはオフであるかに関係なく、コントロール metrics.0 [オフ] または 1 [オン] を使用して個別に制御できます。メトリックの値を設定すると、lock_time メトリックの収集が試行されるかどうかに関係なく、PMDA の動作が制御されます。glock_lock_time ベースのメトリックが機能するには、マシンで GFS2 トレースポイントが利用可能である必要があります。 |
gfs2.control.latency | gfs2.latency 統計は、pmstore gfs2.control.latency 0 [オフ] または 1 [オン] を使用して手動で制御できます。メトリックの値を設定すると、latency メトリックの収集が試行されるかどうかに関係なく、PMDA の動作が制御されます。latency メトリックが機能するには、マシンで gfs2 トレースポイントが利用可能である必要があります。 |
gfs2.control.glock_threshold | すべての ftrace 統計で処理され、受け入れられる glock の数。この数は、処理する glock の数を調整するために pmstore ツールを使用して手動で変更できます。この値は正である必要があります。 |
A.6. パフォーマンスデータのロギング (pmlogger の使用)
pmlogger ツールでシステムの選択されたメトリックのアーカイブログを作成して、後でリプレイできるパフォーマンスメトリック値をログに記録できます。これらのメトリックアーカイブは、過去のパフォーマンス分析を行うために後でプレイバックできます。
pmlogger ツールを使用すると、システムで記録されるメトリックと頻度を指定して、ログに記録されたメトリックを柔軟に制御できます。デフォルトでは、pmlogger の設定ファイルは /etc/pcp/pmlogger/config.default に格納されます。この設定ファイルには、プライマリーロギングインスタンスによりログに記録されるメトリックの概要が記載されています。
pmlogger がローカルマシンでメトリック値をログに記録するには、プライマリーロギングインスタンスを起動する必要があります。systemctl を使用すると、マシンの起動時に pmlogger をサービスとして起動するようにできます。
pmlogger 設定ファイルの一部を示しています。この部分は pmlogger が 10 秒ごとに PCP GFS2 レイテンシーメトリックのパフォーマンスメトリック値、30 秒ごとに最も悪い上位 10 の glock メトリック、1 分ごとにトレースポイントデータをログに記録し、10 分ごとに glock、glstats、および sbstats メトリックからデータをログに記録することを示しています。
# It is safe to make additions from here on ...
#
log mandatory on every 5 seconds {
gfs2.latency.grant
gfs2.latency.queue
gfs2.latency.demote
gfs2.glocks
}
log mandatory on every 10 seconds {
gfs2.worst_glock
}
log mandatory on every 30 seconds {
gfs2.tracepoints
}
log mandatory on every 5 minutes {
gfs2.glstats
gfs2.sbstats
}
[access]
disallow * : all;
allow localhost : enquire;注記
pmlogger が有効な場合にホストのログに記録されるデフォルトのメトリックセットが提供されます。ただし、このデフォルトの設定では、GFS2 メトリックのロギングは実行されません。
pmdumptext です。このツールを使用すると、ユーザーは選択された PCP ログアーカイブを解析し、値を ASCII テーブルにエクスポートできます。pmdumptext では、アーカイブログ全体をダンプしたり、コマンドラインで個別のメトリックを指定してログからメトリック値のみを選択したりできます。pmdumptext の使用の詳細については、pmdumptext(1) man ページを参照してください。
A.7. 視覚的なトレース (PCP-GUI および pmchart を使用)
pmchart グラフィカルユーティリティーを使用してパフォーマンスメトリック値をグラフにプロットできます。pmchart では、複数の表を同時に表示できます。メトリックは 1 つまたは複数のライブホストから取得され、履歴データのソースとして PCP ログアーカイブからメトリックデータを使用する別のオプションが提供されます。
pmchart を開くと、PCP チャート GUI が表示されます。その GUI の最下部には pmtime の VCR に似たコントロールが表示されます。開始/一時停止ボタンを使用すると、メトリックデータをポーリングする間隔と、履歴データを使用している場合は、メトリックの日付と時刻を制御できます。
File -> New Chart オプションから、ホスト名またはアドレスを指定し、リモートホストからパフォーマンスメトリックを選択することにより、ローカルマシンとリモートマシンの両方からメトリックを選択できます。高度な設定オプションには、表の軸の値を手動で設定したり、プロットの色を手動で選択したりする機能が含まれます。
pmchart で作成されたイメージを取得したり、ビューを記録したりする複数のオプションがあります。現在のビューのイメージを保存するには、ツールバーの File -> Export オプションを選択します。記録を開始するにはツールバーの Record -> Start オプションを選択し、記録を終了するには Record -> Stop を選択します。記録が終了すると、記録されたメトリックはアーカイブされ、後で参照できるようになります。
pmchart インターフェースをカスタマイズして、パフォーマンスメトリックのデータを折れ線グラフ、棒グラフ、使用量グラフなどの複数の方法で表示することができます。pmchart では、「ビュー」と呼ばれる主要な設定ファイルにより、1 つまたは複数のグラフに関連付けられたメタデータを保存できるようになります。このメタデータは、使用されるメトリックとグラフ列を含むグラフのすべての側面を定義します。カスタム「ビュー」設定は File -> Save View を選択して保存し、後で再びロードできます。ビュー設定ファイルとその構文の詳細については、pmchart(1) man ページを参照してください。
pmchart ビュー設定の例では、gfs2.glocks メトリックを使用してマウント済みの GFS2 ファイルシステム loop1 の glock の合計数を示す積み重ねグラフを定義しています。また、以下の例の下部では、同じファイルシステムインスタンス「loop1」に対する glock の許可、降格、およびキューへの格納の要求の平均レイテンシーをプロットするプロットグラフも定義しています。
#kmchart
version 1
chart title "Total number of Glocks /loop1" style stacking antialiasing off
plot legend "Shared" metric gfs2.glocks.shared instance "loop1"
plot legend "Unlocked" metric gfs2.glocks.unlocked instance "loop1"
plot legend "Deferred" metric gfs2.glocks.deferred instance "loop1"
plot legend "Exclusive"metric gfs2.glocks.exclusive instance "loop1"
chart title "Average Glock Latency (usecs) /loop1" style plot antialiasing off
plot legend "Demote" metric gfs2.latency.demote.all instance "loop1"
plot legend "Grant" metric gfs2.latency.grant.all instance "loop1"
plot legend "Queue" metric gfs2.latency.queue.all instance "loop1"付録B GFS2 トレースポイントおよび debugfs glocks ファイル
debugfs インターフェースおよび GFS2 トレースポイントについて記載しています。内容は、ファイルシステムの内部について精通しており、GFS2 の設計および GFS2 固有の問題のデバッグ方法についての知識を更に深めたいとお考えの上級ユーザー向けとなっています。
B.1. GFS2 トレースポイントのタイプ
blktrace インフラストラクチャーの実装に使用されます。また、blktrace トレースポイントを GFS2 のトレースポイントと併用してシステムパフォーマンスの詳細を把握することができます。トレースポイントが機能するレベルにより、非常に短時間で大量のデータを作成することができます。トレースポイントは、有効化された時のシステムへの負荷が最小限となるように設計されていますが、ある程度の影響は避けられません。さまざまな方法でイベントをフィルタリングすることにより、データ量を削減し、特定の状況を理解するにあたって有用な情報のみを取得できます。
B.2. トレースポイント
/sys/kernel/debug/tracing/ ディレクトリーにあります (debugfs が標準の場所である /sys/kernel/debug ディレクトリーにマウントされていることを前提)。events サブディレクトリーには、指定可能なすべてのトレーシングイベントが格納されます。また、gfs2 モジュールがロードされている場合は、gfs2 サブディレクトリーに、下位サブディレクトリーが GFS2 イベントごとに 1 つずつ格納されます。多くの場合、/sys/kernel/debug/tracing/events/gfs2 の内容は以下のようになります。
[root@chywoon gfs2]# ls
enable gfs2_bmap gfs2_glock_queue gfs2_log_flush
filter gfs2_demote_rq gfs2_glock_state_change gfs2_pin
gfs2_block_alloc gfs2_glock_put gfs2_log_blocks gfs2_promote
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enableenable ファイルがあります。また、各イベントまたはイベントセットを対象にイベントフィルターを設定するのに使用できる filter ファイルの場合も同じです。各イベントの意味については、下記に詳しく説明しています。
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace/sys/kernel/debug/tracing/trace_pipe であり、すべての出力が必要な場合に使用することができます。イベントは、発生するときにこのファイルから読み取られます。このインターフェースでは履歴情報は提供されません。出力の形式は両インターフェースとも同じであり、 本付録の後半で GFS2 イベント別に説明しています。
trace-cmd と呼ばれるユーティリティを利用することができます。このユーティリティについての更なる詳しい情報は、「参考情報」 に記載のリンクを参照してください。trace-cmd ユーティリティは strace ユーティリティと同様に使用することができ、様々なソースからトレースデータを収集している間にコマンドを実行することが可能です。
B.3. glocks
表B.1 glock モードおよび DLM ロックモード
| glock モード | DLM ロックモード | 注記 |
|---|---|---|
| UN | IV/NL | ロック解除されています (I フラグに依存する glock または NL ロックに関連付けされた DLM ロックはなし) |
| SH | PR | 共有 (読み取り保護) ロック |
| EX | EX | 排他ロック |
| DF | CW | ダイレクト I/O およびファイルシステムフリーズで使用される遅延 (同時書き込み) |
注記
表B.2 glock のモードとデータタイプ
| glock モード | キャッシュデータ | キャッシュメタデータ | ダーティーデータ | ダーティーメタデータ |
|---|---|---|---|---|
| UN | No | No | No | No |
| SH | Yes | Yes | No | No |
| DF | No | Yes | No | No |
| EX | Yes | Yes | Yes | Yes |
B.4. glock debugfs インターフェース
debugfs インターフェースは glock とホルダーの内部の状態を視覚化することができます。また、場合によっては、ロックされているオブジェクトのサマリー情報が含まれます。このファイルの各行は、インデントなしで G: (glock 自体のことを示す) から始まるか、1 文字分字下げされて他の文字で始まり、ファイル内の直前の行の glock に関連付けられた構造を示します (H: ホルダー、I: inode、R: リソースグループ)。以下は、このファイルの内容の一例です。
G: s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2] R: n:258028 f:05 b:22256/22256 i:16800 G: s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522 G: s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2 G: s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock のコマンドによって生成された (約 18 MB のファイルからの) 抜粋です。ここに示した glocks は、glock ダンプの興味深い特徴を示すために選択したものです。
iopen glock を示します。inode と iopen glock の場合、glock 番号は常に inode のディスクブロック番号と同じです。
注記
blktrace) および stat(1) からの出力と数値を容易に比較できるようにするために 10 進法 が選択されました。
debugfs インターフェースから取得できません。
表B.3 Glock のタイプ
| タイプ番号 | ロックタイプ | 用途 |
|---|---|---|
| 1 | trans | トランザクションのロック |
| 2 | inode | Inode のメタデータとデータ |
| 3 | rgrp | リソースグループのメタデータ |
| 4 | meta | スーパーブロック |
| 5 | iopen | 最後にinode をクローズしたプロセスの検出 |
| 6 | flock | flock(2) syscall |
| 8 | quota | クォータの操作 |
| 9 | journal | ジャーナルミューテックス |
表B.4 glock のフラグ
| フラグ | 名前 | 意味 |
|---|---|---|
| d | Pending demote | 遅延された (リモートの) 降格要求 |
| D | Demote | 降格要求 (ローカルまたはリモート) |
| f | Log flush | この glock を解放する前にログをコミットする必要があります |
| F | Frozen | リモートのノードからの返信が無視されました - リカバリが進行中です |
| i | Invalidate in progress | この glock のページの無効化が進行中です |
| I | Initial | DLM がこの glock と関連付けられる場合に指定します |
| l | Locked | glock は状態の変更中です |
| L | LRU | glock が LRU リストにあるときに設定されます |
| o | オブジェクト | glock がオブジェクト (type 2 glock の場合は inode、type 3 glock の場合はリソースグループ) に関連付けられたときに設定されます |
| p | Demote in progress | glock は降格要求に応答中です |
| q | キュー待ち | ホルダーが glock キューに格納されたときに設定され、glock が保持され、残りのホルダーがないときに消去されます 。glock 最小保持時間を計算するアルゴリズムの一部として使用されます |
| r | Reply pending | リモートノードから受信した返信の処理の待機中です |
| y | Dirty | この glock を解放する前にデータをディスクにフラッシュする必要があります |
B.5. glock ホルダー
表B.5 Glock holder flags
| フラグ | 名前 | 意味 |
|---|---|---|
| a | Async | glock の結果を待機しません (結果を後でポールします) |
| A | Any | 互換性のあるロックモードはすべて受け入れ可能です |
| c | No cache | ロック解除時に DLM ロックを即時に降格します |
| e | No expire | 後続のロック取り消し要求を無視します |
| E | Exact | 完全一致するロックモードでなければなりません |
| F | First | ホルダーがこのロックに最初に許可される場合に指定します |
| H | Holder | 要求したロックが許可されたことを示します |
| p | Priority | キューの先頭にある待機ホルダー |
| t | Try | "try" ロックです |
| T | Try 1CB | コールバックを送信する "try" ロックです |
| W | Wait | 要求完了の待機中にセットされます |
try 1CB) ロックは、DLM が単一のコールバックを互換性のないロックホルダーに送信する以外は t ロックと同じです。T (try 1CB) ロックの使用例の 1 つに、iopen ロックとの併用があります。このロックは、inode の i_nlink 数がゼロのときにノードを判別して、どのノードが inode の割り当て解除を行っているかを判断するために使用されます。iopen glock は通常共有の状態で保持されますが、i_nlink 数がゼロになり、->delete_inode() が呼び出されると、T (try 1CB) が設定された状態で排他的ロックを要求します。ロックが許可された場合は、inode の割り当て解除を継続します。ロックが許可されない場合は、ロックの許可を阻止していたノードにより glock に D (降格) フラグが設定されます。このフラグは、割り当て解除が忘れられないように ->drop_inode() が呼び出されたときにチェックされます。
close() が発生するノードによって割り当て解除されることを意味します。また、inode のリンクカウントがゼロに減少するのと同時に、その inode は、リンクカウントがゼロでありながらもリソースグループビットマップで依然として使用中であるという特別の状態としてマークされます。この関数は、ext3 ファイルシステムの孤立アイテム一覧と同様に、後に続くビットマップのリーダーに、再使用可能な潜在的領域があることを知らせて、再利用を試みます。
B.6. glock のトレースポイント
blktrace の出力およびオンディスクレイアウトの知識と組み合わせることにより、キャッシュ制御の正確性を確認することができるようにも設計されています。これにより、任意の I/O が正しいロックで発行および完了され、競合が発生していないことをチェックできるようになります。
gfs2_glock_state_change トレースポイントは、最も重要な理解すべきトレースポイントです。このトレースポイントは初期作成から、gfs2_glock_put で終わる最終降格、最終の NL からロック解除に至るまでの遷移の全状態をトラッキングします。l (locked) glock フラグは、状態の変更が発生する前に必ず設定され、完了するまではクリアされません。状態の変更中には、許可されるホルダーはありません (H glock ホルダーのフラグ)。キューに配置されたホルダーがある場合には、常に W (waiting) 状態となります。状態の変更が完了すると、ホルダーが許可されることが可能となります。これは、l glock フラグがクリアされる前の最後の操作です。
gfs2_demote_rq トレースポイントは、ローカルおよびリモートの両方の降格要求を追跡します。ノードに十分なメモリーがある場合、ローカルの降格要求はほとんど発生しません。降格要求は多くの場合 umount を使用したり、メモリーをときどき再利用したりすることによって作成されます。リモートの降格要求数はノード間における特定の inode またはリソースグループに対する競合を示す尺度です。
gfs2_glock_lock_time トレースポイントは、DLM に対する要求の処理にかかった時間に関する情報を提供します。このトレースポイントと組み合わせて使用するために、ブロック (b) フラグが特別に glock に導入されました。
gfs2_promote が呼び出されます。これは、状態変更の最終段階もしくは glock 状態が適切なモードのロックをすでにキャッシュしているため、即時に許可できるロックが要求された場合に発生します。ホルダーがこの glock を最初に許可される場合、そのホルダーには f (first) フラグが設定されます。これは、現在リソースグループのみのよって使用されています。
B.7. bmap トレースポイント
gfs2_bmap トレースポイントは、1 回の bmap 操作につき 2 回 (bmap 要求を表示するために起動時に 1 回と、結果を表示するために終了時に 1 回) 呼び出されます。これにより、要求と結果を容易に照合して、ファイルシステムの異なる部分や、異なるファイルオフセット、あるいは異なるファイルのブロックをマップするのに要した時間を簡単に測定することができます。また、返されたエクステントサイズの平均値と要求されたサイズを比較することもできます。
gfs2_rs トレースポイントは、ブロックアロケーターで作成、使用、および破棄されたブロック予約を追跡します。
gfs2_block_alloc が呼び出されます。割り当てはすべて、ブロックの対象の inode に応じて参照されるため、これを利用して、どの物理ブロックがライブファイルシステム内のどのファイルに属しているかを追跡できます。これは特に blktrace と併用した場合に有用です。これにより、問題のある I/O パターンが表示され、このトレースポイントによって取得したマッピングを使用して適切な inode を再び参照することができます。
B.8. log トレースポイント
gfs2_pin) に追加された、もしくは削除されたブロックと、ログ (gfs2_log_flush) へのトランザクションのコミット所要時間をトラッキングします。このトレースポイントは、ジャーナリングパフォーマンスに関する問題をデバッグする際に非常に役立ちます。
gfs2_log_blocks トレースポイントは、ログ内で確保済みブロックを追跡します。これは、たとえばワークロードに対してログが小さすぎるかどうかを確認するのに役立ちます。
gfs2_ail_flush トレースポイントは、AIL リストのフラッシュの開始と終了を追跡するため、gfs2_log_flush トレースポイントと似ています。AIL リストには、ログに書き込まれ、まだ書き戻されていないバッファーが含まれます。このリストは、ファイルシステムが使用するログ領域をさらに解放するために定期的にフラッシュされます。また、プロセスが sync または fsync を要求した際にもフラッシュされます。
B.9. Glock の統計
dcount。要求された DLM 操作の回数をカウントします。平均/分散の計算に使用されたデータの量を示します。qcount。要求されたsyscallレベル操作の回数をカウントします。一般的に、qcountの数はdcount以上になります。
- srtt/srttvar: ブロック以外の動作の平滑化往復時間
- srttb/srttvarb: ブロック動作の平滑化往復時間
- irtt/irttvar: 内部要求時間 (例: DLM 要求間の時間)
sysfs ファイルに格納されます。
glstatsファイル。1 行に 1 つの glock の統計値が格納される点以外はglocksファイルと同じです。作成される glock の glock タイプの「per cpu」データでデータの初期化が行われます (ゼロとなるカウンターとは別)。このファイルは非常に大きくなる場合があります。lkstatsファイル。各 glock タイプの「1 cpu あたり」の統計値が含まれます。1 行あたり 1 つの統計が示され、各列は 1 cpu コアを示します。1 つの glock タイプは 8 行で示されます。
B.10. 参考情報
glocks ファイルに関する詳細情報は、以下の参考情報を参照してください。
trace-cmdユーティリティに関する情報は、 http://lwn.net/Articles/341902/ を参照してください。
付録C 改訂履歴
| 改訂履歴 | |||
|---|---|---|---|
| 改訂 1.2-4.1 | Wed Mar 1 2017 | ||
| |||
| 改訂 1.2-4 | Mon Oct 17 2016 | ||
| |||
| 改訂 1.2-3 | Wed Aug 17 2016 | ||
| |||
| 改訂 0.3-5 | Mon Nov 9 2015 | ||
| |||
| 改訂 0.3-2 | Wed Aug 19 2015 | ||
| |||
| 改訂 0.2-13 | Wed Feb 18 2015 | ||
| |||
| 改訂 0.2-8 | Thu Dec 11 2014 | ||
| |||
| 改訂 0.1-29 | Wed Jun 11 2014 | ||
| |||
| 改訂 0.1-11 | Mon Dec 9 2013 | ||
| |||
| 改訂 0.1-1 | Wed Jan 16 2013 | ||
| |||
索引
シンボル
- アンマウント、 システムのハング, GFS2 ファイルシステムをマウントする際の注意事項
- アンマウントコマンド, ファイルシステムのアンマウント
- アンマウント時のシステムハング, GFS2 ファイルシステムをマウントする際の注意事項
- クォータの管理, GFS2 のクォータ管理, 強制またはアカウンティングモードでのクォータの設定
- クォータの同期, quotasync コマンドを使用したクォータの同期
- ジャーナル追加用の GFS2 固有のオプション表, 完全な使用法
- ディスククォータ
- その他のリソース, 参考情報
- グループごとの割り当て, グループごとのクォータ割り当て
- ソフトリミット, ユーザーごとのクォータ割り当て
- ハードリミット, ユーザーごとのクォータ割り当て
- ユーザーごとの割り当て, ユーザーごとのクォータ割り当て
- 有効化, ディスククォータの設定
- quotacheck、実行, クォータデータベースファイルの作成
- クォータファイルの作成, クォータデータベースファイルの作成
- 管理, ディスククォータの管理
- quotacheck コマンド、確認に使用, クォータの精度維持
- レポーティング, ディスククォータの管理
- データジャーナリング, データジャーナリング
- トレースポイント, GFS2 トレースポイントおよび debugfs glocks ファイル
- ノードロック機能, GFS2 のノードロック機能
- パフォーマンス調整, GFS2 によるパフォーマンスチューニング
- ファイルシステム
- atime, 更新の設定, atime 更新の設定
- noatime を使用したマウント, noatime を使用したマウント
- relatime を使用したマウント, relatime を使用したマウント
- アンマウント, ファイルシステムのアンマウント, GFS2 ファイルシステムをマウントする際の注意事項
- クォータの管理, GFS2 のクォータ管理, 強制またはアカウンティングモードでのクォータの設定
- クォータの同期, quotasync コマンドを使用したクォータの同期
- ジャーナルを追加, ファイルシステムへジャーナルの追加
- データのジャーナリング, データジャーナリング
- マウント, ファイルシステムのマウント, GFS2 ファイルシステムをマウントする際の注意事項
- 作成, ファイルシステムの作成
- 修復, ファイルシステムの修復
- 動作の一時停止, ファイルシステム上の動作の一時停止
- 拡張, ファイルシステムの拡張
- ファイルシステムにジャーナルを追加, ファイルシステムへジャーナルの追加
- ファイルシステムのアンマウント, ファイルシステムのアンマウント, GFS2 ファイルシステムをマウントする際の注意事項
- ファイルシステムのマウント, ファイルシステムのマウント, GFS2 ファイルシステムをマウントする際の注意事項
- ファイルシステムの作成, ファイルシステムの作成
- ファイルシステムの修復, ファイルシステムの修復
- ファイルシステムの拡張, ファイルシステムの拡張
- ファイルシステム上の動作の一時停止, ファイルシステム上の動作の一時停止
- ファイルシステム拡張用の GFS2 固有のオプション表, 完全な使用法
- マウントコマンド, ファイルシステムのマウント
- マウント表, 完全な使用法
- 最大サイズ, GFS2 ファイルシステム, GFS2 の概要
- 概要, GFS2 の概要
- 機能, 新規追加および変更, 新機能および変更された機能
- 設定, 事前, GFS2 を設定する前に
- 機能, 新規追加および変更, 新機能および変更された機能
- 表
- 設定, 事前, GFS2 を設定する前に
- 設定における考慮事項, GFS2 の設定および操作における考慮事項
- 調整, パフォーマンス, GFS2 によるパフォーマンスチューニング
A
- acl マウントオプション, ファイルシステムのマウント
- atime, 更新の設定, atime 更新の設定
- noatime を使用したマウント, noatime を使用したマウント
- relatime を使用したマウント, relatime を使用したマウント
D
- debugfs, GFS2 トレースポイントおよび debugfs glocks ファイル
- debugfs ファイル, GFS2 ロックダンプを使用した GFS2 パフォーマンスのトラブルシューティング
F
- fsck.gfs2 コマンド, ファイルシステムの修復
G
- GFS2
- atime, 更新の設定, atime 更新の設定
- noatime を使用したマウント, noatime を使用したマウント
- relatime を使用したマウント, relatime を使用したマウント
- クォータの管理, GFS2 のクォータ管理, 強制またはアカウンティングモードでのクォータの設定
- クォータの同期, quotasync コマンドを使用したクォータの同期
- 操作, GFS2 の設定および操作における考慮事項
- 管理, GFS2 の管理
- 設定における考慮事項, GFS2 の設定および操作における考慮事項
- GFS2 の管理, GFS2 の管理
- GFS2 ファイルシステムの最大サイズ, GFS2 の概要
- gfs2_grow コマンド, ファイルシステムの拡張
- gfs2_jadd コマンド, ファイルシステムへジャーナルの追加
- glock, GFS2 トレースポイントおよび debugfs glocks ファイル
- glock のタイプ, GFS2 ロックダンプを使用した GFS2 パフォーマンスのトラブルシューティング, glock debugfs インターフェース
- glock のフラグ, glock debugfs インターフェース
- glock フラグ, GFS2 ロックダンプを使用した GFS2 パフォーマンスのトラブルシューティング
- glock ホルダーのフラグ, glock ホルダー
- glock ホルダーフラグ, GFS2 ロックダンプを使用した GFS2 パフォーマンスのトラブルシューティング
M
- mkfs コマンド, ファイルシステムの作成
- mkfs.gfs2 コマンドオプション表, 全オプション
P
- Posix ロック, POSIX ロックの問題
Q
- quotacheck , クォータデータベースファイルの作成
- quotacheck コマンド
- クォータの精度確認, クォータの精度維持
- quota_quantum 調整可能なパラメーター, quotasync コマンドを使用したクォータの同期
