フォールトトレランス
システムの一部に故障が発生しても、冗長化などによって、システム全体としては正常な機能を維持し続けられるようにする設計の考え方。
イマシルちゃんの解説
フォールトトレランスは、一部が故障してもシステム全体は正しく動き続けられるようにする設計の考え方だよ。
例えば同じデータを複数の装置に持たせ、一つが壊れても残りで処理を続けられるようにするんだ。
このように装置やデータを余分に用意することを冗長化というよ。
ただ台数を増やすだけでなく、故障を検知して壊れた装置を切り離すなどの対処も必要になるの。
データに付けた情報を使って誤りを直す誤り訂正も、そのための技術の一つだよ。
故障を完全になくすのは難しいから、起きてもサービスを止めないための備えが大切なんだ。
この解説はわかりやすかったですか?
より深い解説
定義
フォールトトレランス(fault tolerance:耐故障性)は、構成要素の一部が故障しても、システムとしての機能を損なわずに動作を続ける性質、またはそのための設計の考え方である。主に、ハードウェアやソフトウェアの多重化(冗長化)によって実現する。
信頼性を高める2つのアプローチ
| アプローチ | 考え方 | 主な手段 |
|---|---|---|
| フォールトアボイダンス(故障回避) | 故障そのものが起きないようにする | 高品質な部品、十分なテスト、予防保守 |
| フォールトトレランス(耐故障) | 故障が起きることを前提に、故障しても動き続けるようにする | 多重化、誤り訂正、自動切り替え |
どれほど品質を高めても、故障を完全になくすことはできない。そのため、重要なシステムでは、フォールトアボイダンスとフォールトトレランスを組み合わせる。
実現する技術
| 技術 | 内容 |
|---|---|
| デュアルシステム | 2系統で同じ処理を行い、結果を照合する。一方が故障したら、もう一方で処理を続ける |
| デュプレックスシステム | 現用系と待機系を用意し、現用系が故障したら待機系に切り替える |
| RAID 1、RAID 5など | ディスクを冗長化し、1台が故障してもデータを失わない |
| 誤り訂正符号(ECC) | メモリのビットの誤りを、自動で訂正する(フォールトマスキング) |
| 冗長電源 | 電源ユニットを2つ以上持ち、1つが故障しても給電を続ける |
| ネットワークの冗長化 | 機器や回線を二重化し、VRRPやリンクアグリゲーションなどで切り替える |
関連する考え方の比較
| 考え方 | 故障や誤りが起きたときの動作 |
|---|---|
| フォールトトレランス | 正常な機能を維持する |
| フェールソフト | 機能を縮小して運転を続ける |
| フェールセーフ | 安全な状態に移す |
| フールプルーフ | 人が誤った操作をしても、誤動作を防ぐ |
誤った入力を見つけて利用者に知らせ、入力し直してもらう仕組みは、故障ではなく人の誤りへの対策なので、フォールトトレランスではなくフールプルーフに当たる。
可用性との関係
フォールトトレランスは、システムの稼働率(可用性)を高めるための手段である。たとえば、稼働率0.9の装置を2台並列にすると、両方が同時に故障しない限り動き続けるため、全体の稼働率は 1 − (1 − 0.9)² = 0.99 に上がる。