フォールトトレラントシステム
出典: フリー百科事典『ウィキペディア(Wikipedia)』
- 本項目はフォールトトレラントシステムの特定の実装方法に関する。一般的な理論についてはフォールトトレラント設計を参照されたい。
フォールトトレラントシステム(Fault tolerant system)は、その構成部品の一部が故障しても正常に処理を続行するシステムである。障害が発生した場合、単純な設計のシステムでは少しの障害でも全体が停止するが、フォールトトレラントシステムでは完全に機能を保ったまま処理を続行するか、障害の重大性に応じて機能を低下させながらも処理を続行する。フォールトトレラント性は連続稼働が求められるシステムや人命に関わるシステムで特に求められる。
フォールトトレラント性は個々のマシンの特性というだけではなく、マシン間の連携についての規則の特性でもある。例えば、TCP はパケット通信ネットワーク内に不完全なリンクや高負荷のリンクがあっても信頼性の高い双方向通信ができるように設計されている。これは受信側でパケット喪失、パケット二重化、順序変更などがあるものとしてプロトコルが設計されているためであり、結果として通信性能が低下してもデータの正確性が損なわれないようになっているのである。
データ形式も同様な考え方を当てはめることが出来る。例えばHTMLは上位互換を維持するよう設計されているため、新たな機能を使ったHTMLを古いブラウザが読み込んだとき、それを処理できないものとして捨てるのではなく理解できる範囲で表示することができる。
フォールトトレラントシステムにおける障害復旧はロールフォワード(roll-forward)とロールバック(roll-back)に分けられる。システムに障害が発生しエラーとなったとき、ロールフォワード復旧ではその時点のシステム状態で復旧を行い、処理をさらに先に進める。ロールバック復旧ではシステム状態を少しだけ前に戻して(例えばCheckpointingを使って)そこから処理を再開する。ロールバック復旧では、チェックポイント(戻す地点)と障害発生地点との間の処理は冪等(何度実行しても一回実行したのと同じ)でなければならない。いくつかのシステムはエラーの種類やエラー発生箇所によってロールフォワードとロールバックを使い分けている。
個々のシステム内では、フォールトトレランス性は例外的な状態を想定してそれに対処できるようにシステムを構築することで実現される。また、一般に自己安定性を持たせることによってシステムがエラーのない状態に収斂させることでフォールトトレランス性を実現する。しかし、システム障害が重大でそれに対処するのに非常にコストがかかる場合、よりよい方法は何らかの二重化をすることである。
[編集] 二重化によるフォールトトレラントシステム
二重化によるフォールトトレラント性は三つに分類される。
- レプリケーション:同じシステムの複製を複数用意し、それら全部に同じ処理を並列に実行させ、定足数を満足した結果を正しい結果として採用する。
- 冗長性:同じシステムの複製を複数用意し、障害が発生したら予備のシステムに切り替える。
- 多様性:同じ仕様の異なる実装のシステムを複数用意し、レプリケーションのようにそれを運用する。この場合、各システムが同じ障害を発生することがないと考えられる。
RAIDは冗長性を活用したフォールトトレラントな記憶装置の例である。
ロックステップ方式のフォールトトレラントマシンは各部分を多重化して並列して動作させる。多重化された各部分はどの時点で見ても全く同じ状態でなければならない。同じ入力を与えた場合に同じ出力が得られることが期待される。多重化部分の出力は多数決回路に集められ比較される。各部品を二重化したマシンはdual modular redundant(DMR)と呼ばれる。この場合、多数決回路は結果が異なっているということしか分からないので、復旧は別の方法で行う必要がある。各部品を三重化したマシンはtriple modular redundant(TMR)と呼ばれる。この場合の多数決回路は比較結果が2対1になったときにエラーを判定するので、正しい(と思われる)結果を出力することができ、エラーと判定された結果を捨てることが出来る。その後、エラーを発生させた複製部品は故障したものとみなし、多数決回路はDMR状態に移行する。このモデルはもっと多くの複製についても当てはめることが出来る。
ロックステップ方式のフォールトトレラントマシンは簡単に完全同期させることができ、各複製部品は同じクロックで同期して動作する。もちろん、各複製をクロック同期させないロックステップシステムも構築可能である(多数決回路で待ち合わせる)。(訳注:ただし、クロック同期しない場合、故障によって出力を多数決回路に送れなくなった部品をどう扱うかが問題となる。)
複製を同期させるには個々の内部状態が一致していなければならない。リセット状態などの同じ内部状態からいっせいに動作を開始するのである。一方で、複製間で状態をコピーするという方法もある。
DMRの一種にpair-and-spareがある。ふたつの複製部品がロックステップで同じ処理を行い、多数決回路が相異を検出したらエラー信号を出力する。もうひとつの二重化システムが全く同じ処理をしていて、ふたつの二重化システムの出力を比較してエラーとなっていない方を採用する。pair-and-spare では云わば四重化であって TMR よりも冗長だが、商用システムで採用された例もある。
[編集] 関連項目
[編集] 外部リンク
- フォルト トレラント サーバーとは - マイクロソフト社のWeb
- Dependable Computing - 電子情報通信学会の研究会(フォールトトレラントシステム研究会から改称)