検索

4.14. GFS2 の withdraw 関数

download PDF
GF2S の withdraw 関数は、クラスター内における GFS2 ファイルシステムのデータ整合性機能です。GFS2 カーネルモジュールが、I/O 操作の後に GFS2 ファイルシステムで不整合を検出すると、クラスターはそのファイルシステムを使用できなくなります。その I/O 操作は停止して、システムはさらなる I/O 操作がエラーで停止するのを待ち、それ以上の被害を防ぎます。このような事態が発生した場合は、その他のサービスやアプリケーションをすべて手動で停止した後に、GFS2 ファイルシステムの再起動と再マウントを行い、ジャーナルを再生することができます。問題が解決しない場合は、クラスター内のすべてのノードからファイルシステムをアンマウントして、fsck.gfs2 コマンドでファイルシステムのリカバリを行います。GFS の withdraw 関数は、カーネルパニックほど深刻ではありません。カーネルパニックが発生した場合には、問題のあるノードは別のノードによってフェンシングされます。
gfs2 起動スクリプトを有効にして GFS2 ファイルシステムを /etc/fstab ファイルに含ませているようなシステム構成の場合、再起動を行うと GFS2 ファイルシステムも再マウントされます。GFS2 ファイルシステムに破損が検出され withdraw が作動してそのファイルシステムが使用できなくなった場合には、ファイルシステムの再マウントを行う前に fsck.gfs2 コマンドを実行することを推奨します。この場合、以下の手順で起動時にファイルシステムが再マウントされないようにします。
  1. 次のコマンドを使用して影響を受けたノードで起動スクリプトを一時的に無効にします。
    # chkconfig gfs2 off
  2. 影響を受けたノードを再起動してクラスターソフトウェアを開始します。GFS2 ファイルシステムはマウントされません。
  3. クラスター内のすべてのノードからファイルシステムをアンマウントします。
  4. 壊れたファイルシステムがないことを確認するため、ひとつのノードのファイルシステムのみから fsck.gfs2 を実行します。
  5. 次のコマンドを実行して、影響を受けたノードで起動スクリプトを再度有効にします。
    # chkconfig gfs2 on
  6. クラスター内の全ノードから GFS2 ファイルシステムを再度マウントします。
withdraw の作動で GFS2 が使用できなくなるような不整合の例のひとつとしてブロック数の不一致があります。GFS カーネルがファイルシステムからファイルを削除する場合、そのファイルに関連する全データおよびメタデータのブロックが体系的に削除されます。この動作が終了すると、ブロック数のチェックが行われます。カウントされたブロック数が 1 (残されたのはディスクの inode 自体のみ) にならない場合、ブロック数が検出されたブロック一覧と一致しないためファイルシステムが不整合であるということになります。
-o errors=panic オプションを指定してファイルシステムをマウントすると、GFS2 の withdraw 関数を上書きすることができます。このオプションを指定すると、通常 withdraw が作動するエラーでパニックが発生することになります。パニックでノードのクラスター通信が停止するためそのノードの排他処理が行われます。
内部では、カーネルが gfs_controld デーモンにメッセージを送信して withdraw を要求することにより GFS2 の withdraw 関数が作動します。gfs_controld デーモンは dmsetup プログラムを実行してデバイスマッパーエラーのターゲットをファイルシステム下に配置し、これ以上ブロックデバイスがアクセスされないようにします。次にこの動作が終了したことをカーネルに伝えます。CLVM デバイスを常に GFS2 下で使用することが GFS2 のサポート要件になっているのはこのためです。GFS2 下で CLVM デバイスを使用していない場合デバイスマッパーターゲットを挿入できなくなります。
デバイスマッパーエラーターゲットの目的はそれ以降の I/O 操作がすべて I/O エラーになることでファイルシステムを順番通りにアンマウントさせることです。このため、withdraw が作動するとデバイスマッパーデバイスからの多数の I/O エラーがシステムログにレポートされるのが見られますがこれが通常です。
dmsetup プログラムが要求通りにエラーターゲットを挿入できない場合、withdraw の作動に失敗する場合があります。withdraw 作動の時点でメモリー不足が発生している場合や、最初の段階で withdraw を作動させた問題が原因でメモリーを再利用できないなどの場合に withdraw の作動に失敗する可能性があります。
withdraw が作動したからといって必ずしも GFS2 にエラーがあるということではありません。ベースとなっているブロックデバイス関連のデバイス I/O エラーにより withdraw 関数が作動することもあります。withdraw が作動した場合には、GFS2 のエラーなのかそれ以外のエラーなのかを判断するためログを確認することを強く推奨します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.