4.11. ファイルシステムの修復
ファイルシステムをマウントした状態でノードに障害が発生した場合はファイルシステムのジャーナリングで迅速な復旧が可能です。しかし、ストレージデバイスへの電力供給が断たれたり物理的に電源が切断されるとファイルシステムの破損が発生する可能性があります (ストレージサブシステムの障害からの復旧にジャーナリングは使用できません)。この種の破損が発生した場合は、
fsck.gfs2
コマンドを使用して GFS2 ファイルシステムの復旧を行います。
重要
fsck.gfs2
コマンドの実行は、必ずすべてのノードからファイルシステムをアンマウントした上で行ってください。
重要
fsck.gfs2
コマンドは、起動時の GFS2 ファイルシステムのチェックには使用しないでください。fsck.gfs2
コマンドでは、起動時、ファイルシステムがクラスター内の別のノードでマウントされているかどうかを判断することができません 。fsck.gfs2
コマンドはシステムの起動後、手動で行うようにしてください。
起動時、GFS2 ファイルシステムで
fsck.gfs2
コマンドが実行されないようにするため、/etc/fstab
ファイルを変更します。以下の例のように、GFS2 ファイルシステムのマウントポイントの最後の 2 つのコラムが "1 1" (またはそれ以外の数字) ではなく "0 0" となるよう編集します。
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
注記
以前に GFS ファイルシステムで gfs_fsck コマンドを使用した経験がある場合には、
fsck.gfs2
コマンドが以下の点で gfs_fsck
の旧リリースとは異なる点に注意してください。
fsck.gfs2
の実行中に Ctrl+C を押すと処理が中断され、コマンドを中止して現在残っているパスを省略するのか、処理を続行するのかを尋ねるプロンプトが表示されます。-v
フラグを使用すると詳細を表示させることができます。-v
フラグを 2 つ付けると更に表示する詳細度が高くなります。-q
フラグを使用すると詳細を表示しなくなります。-q
フラグを 2 つ付けると更に表示する詳細度が低くなります。-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
フラグを指定した場合は変更に対する答えを入力するプロンプトが表示されません。BlockDevice
- GFS2 ファイルシステムが存在しているブロックデバイス
例
この例では、ブロックデバイス
/dev/testvol/testlv
に存在している GFS2 ファイルシステムが修復されます。修復に関する質問はすべて自動的に yes
で回答されます。
[root@dash-01 ~]# 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