フォールトトレラント設計
フォールトトレラント設計(フォールトトレラントせっけい、Fault tolerant design)は、システム設計の手法であり、システムの一部に問題が生じても全体が機能停止するということなく(たとえ機能を縮小しても)動作し続けるようなシステムを設計するものである。
この用語はハードウェアあるいはソフトウェアの障害があってもほとんど途切れることなく動作し続けるコンピュータシステムの設計を指して使われることが多い。
他の領域の例としては、自動車の設計でタイヤが一本パンクしても走行できるような設計を指す。
目次 |
手法 [編集]
- フォールトトレラントな部品
- 部品それぞれが内部に異常を発生しても部品として機能し続けることができれば、システム全体としても機能し続ける。自動車の例で言うと、自動車にはランフラットタイヤを装備しているものがある。これは、内部に硬いゴムの層を持っているもので、表面がパンクしても走行が可能となっている。走行できる時間は限られているしスピードも落とす必要があるが、従来のタイヤから見れば大きな進歩と言えよう。
- 冗長性
- これはバックアップの部品があって、障害が発生したときに自動的に代替して動作するものである。例えば、大型トレーラーではタイヤをひとつ失っても大きな問題とはならない。多くのタイヤを持っているため、タイヤひとつでは危険ではない(操縦の役割がある前輪はそうではない)[1]。
欠点 [編集]
フォールトトレラント設計では以下のような欠点がある。
- 障害検出の阻害
- 上記、自動車の例で説明すると、タイヤ1個がパンクしたことは運転手には分からないかもしれない。これはフォールトトレラントシステムでも同様である。この問題は分離された「自動障害検出システム」が処理することが一般的である。タイヤの例では、空気圧モニターが空気圧が減っていることを検出し、運転手に知らせる。代替案として「手動障害検出システム」があり、自動車が停車するたびにタイヤをチェックするようなものである。
- 障害修正の優先順位の低下
- 操作者が障害に気づいても、フォールトトレラントシステムではそれを直すことがおろそかになる危険がある。障害が修正されない場合、フォールトトレラントな部品全体が動かなくなったり冗長部品が全部障害となったりすると、システム全体の障害を引き起こすことが考えられる。
- 試験の難しさ
- 原子炉のような故障の際の影響が大きいフォールトトレラントシステムでは、バックアップが機能するかどうかを事前にチェックする簡単な方法はない。最も有名な例はチェルノブイリ原子力発電所の大爆発を伴うメルトダウンである。彼らは緊急用のバックアップの冷却機能をチェックするために第一と第二の冷却機構を停止させてテストしていた。そのときにバックアップが動作せず、結果としてメルトダウンを通り越して、原子炉が爆発し、放射能汚染が起きてしまった[2]。
- コスト
- フォールトトレラント部品も冗長部品もコストを増大させる。これは単に経済的なコストだけではなく、例えば全体重量を増大させるなどの問題も含む。例えば、有人宇宙船は何重にも冗長なフォールトトレラント部品を搭載しているため、安全性をそこまで求められない無人宇宙船よりもずっと重量が大きくなる。このため打ち上げロケットもより推進力があるものを作成する必要がある。
- 障害発生件数の増大
- 部品の故障率が変わらないなら部品点数の増大は障害発生件数の増大を意味する。このため、冗長設計を行なった場合には、システム全体が停止する確率は下がるが、障害発生件数自体は増大してしまう。この障害発生件数の増大は、前述の「障害修正の優先順位の低下」を招く一因ともなる。
どのようなときフォールトトレラント設計をするのか [編集]
すべての部品に対してフォールトトレラント設計を施すのは得策ではない。 どの部品をフォールトトレラントにすべきかを決定するには以下のような判断基準が考えられる。
- その部品はどれだけ重要か?
- 自動車では、ラジオは重要ではない。したがって、ラジオをフォールトトレラント設計する必要性は低い。
- その部品はどのくらい障害を起こすか?
- 自動車のドライブシャフトのように、いくつかの部品は故障することはほとんど考えられないので、フォールトトレラント設計の必要性は低い。
- その部品をフォールトトレラントにするのにかかるコストは?
- 例えば、自動車のエンジンに冗長性を持たせるとすると、経済的にも重量やサイズもコストが高くなることが予想される。
全ての条件に適合した部品の例として自動車の搭乗者拘束システム(シートベルトやエアバッグ)がある。我々が意識しない第一の搭乗者拘束システムは重力である。自動車が転覆などした場合、重力による拘束はなくなってしまう。このような事故の際に搭乗者を拘束するのは安全上非常に重要なので、第一の条件に合っている。シートベルトがない時代には事故によって搭乗者が外に放り出されることがよくあった。したがって第二の条件にも合っている。シートベルトなどは価格的にも重量的にもコストは高くない。したがって第三の条件にも合っている。以上のことから、シートベルトを全ての自動車に装備するのはよい考えと言える。その他のエアバッグなどの補助部品はやや高価なので、第三の条件に適合しないかもしれない。このため、安価な自動車にエアバッグを搭載していないものが(高価な自動車よりも)多いのである。
実例 [編集]
コンピュータ [編集]
ミッションクリティカルなシステムにおいて、コンピュータのフォールトトレラント性は重要である。そういった用途に用いるため、製品自体に広範なフォールトトレラント設計を盛り込んだコンピュータも作られており、タンデムコンピューターズやストラタステクノロジー、NECなどの製品がある。これらはCPUを含む全てのハードウェアを2重化し、ハードウェア障害(部品障害)に対してはフォールトトレラント性を確保している(ただしオペレーティングシステムの障害やユーザー操作上の問題に対応できるとは限らない)。
タンデムコンピューターズは、同社のビジネスをフォールトトレラントなシステムを開発/製造/販売するものとしていた。同社のNonStopシステムは「シングルポイント・トレラント」なシステムであり、十年間の動作時間の計測をして公表していた[3]。
ハードウェアのフォールトトレラント性は、故障した部品をシステム動作中に交換することを要求する場合がある。 このようなバックアップがひとつだけ存在するシステムを「シングルポイント・トレラント」と言う。フォールトトレラントシステムと呼ばれているものはほとんどこのタイプである。このようなシステムでは故障発生間隔の平均時間(MTBF)が十分に長くないと、部品交換中に使用中のバックアップも故障してしまうことがある。MTBFが長ければ長いほど良いが、フォールトトレラントシステムに特にそれが求められているわけではない。
自動車 [編集]
エンジン [編集]
自動車エンジンを二重化した例としてトヨタ・センチュリーはよく知られている。コスト高よりも信頼性を高めることを優先した実装例でもある。また日本国内での唯一の実装であることが、官公庁の選択時において他社(他車)と差別化する大変大きな訴求ポイントともなっている。搭載されているV型12気筒エンジン制御システムが二重化されており、いずれか片方の6気筒が故障しても走行できる。また燃料ポンプも二重化されている。
電装品 [編集]
例えば近年では、一般的な乗用車においてもサブマイコンの採用やフェールオペレーションの実装によりフォールトトレラントな設計がされていることが多い。例えば、純正もしくはディーラーオプションのようなカーナビの場合、実際に不具合が発生すると最寄の整備工場を案内しつつ最低限のエンジン制御を行うなど最低限のサービスを提供可能とするような仕組が実装されつつある。
また、リモコンキー搭載車でリモコンの故障やバッテリー切れなど不具合に備えメカニカルキーを使用可能にし、またキーそのものも用意されることがある。これは「リモコンの不具合は珍しいこととは言えず、特に水没は日常のあらゆるシーンで発生しうる(故障率)」「キーが使えなければ乗車もエンジン始動も出来ず(重要度)」「コストも高くない」の3つの条件に合致するフォールトトレラントの一つと言える。
備考 [編集]
フォールトトレラントシステム(故障しても動作するシステム)と滅多に故障しないシステムは違う。例えば、ウェスタン・エレクトリック社のクロスバー交換機システムは40年間に2時間という故障発生確率であり、非常に故障しにくい(フォールト・レジスタント)と言える。しかし、ひとたび故障するとシステムは完全に停止するので、フォールトトレラントとは言えない。
脚注 [編集]
- ^ あくまでも自動車の走行という話であって、外れたタイヤがころがっていくと危ないという話は別問題。
- ^ 原子炉のようなミッションクリティカルなシステムでは、特に異常系について本番環境でテストすべきでない。実施するテストが適切に設定されているか事前にテスト項目レビューを行い、妥当性を検証すべきである。本件の場合は「緊急用のバックアップの冷却機能のチェック」であるから、冷却対象としては本物の炉心を使うのではなく擬似の放射能汚染の心配がない熱源を使うべきだ。
- ^ 障害などの発生確率から、動作不能となる時間の割合を算出。例えば10年間で1日だけ動作できないなどといった形である。