3.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 ファイルシステムで 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 を乗算します。
たとえば、1 ブロックサイズが 4K の 16TB の GFS2 ファイルシステムで fsck.gfs2 コマンドを実行するのに必要なメモリー容量を概算する場合は、最初に 16TB を 4K で割ってファイルシステムに含まれるメモリーのブロック数を計算します。
 17592186044416 / 4096 = 4294967296
このファイルシステムに含まれているブロック数は 4294967296 なので、この値に 5/8 を乗算して、必要なメモリーのバイト数を求めます。
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