高信頼化システム
はじめに
高信頼化システムとは何でしょう。普通に暮らしている方には、別世界の言葉に聞こえるかも知れません。
しかし、最近、銀行システムがダウンした。携帯通話が出来なくなった。
そういった不便な話が多くなったとは思いませんか。
最近の事件では、二重化されていた新幹線の制御システムが故障して新幹線が4時間も止まったという事故がありました。
二重化していても止まる、これが高信頼性というものでしょうか。
オーナーは、富士通に入社して特に信頼性を求められるシステムのハードウェアを開発する部門に勤めました。
あの富士通が、「システムが原因で顧客の運用が止まったら、損害の全額を補償する。」と誓約したシステムが担当でした。
そうして蓄積した信頼性設計のノウハウは、膨大なものだと思います。
そういう経験を持ちながら、最近の信頼性に絡む事件を見るにつけ、社会全体の流れが心配と感じています。
オーナーが富士通を辞めることとなった理由の一つにこういった信頼性設計の問題があります。
それは、最近の不況に先駆けて日本を襲ったバブル崩壊にありました。
日本の企業は、死活を賭けて会社の体力維持に奔走しました。
そうやって生れたのが、信頼性に対する寛容でした。
必要以上の信頼性は不要、そういう考え方が世の中の常識となってきたのでした。
そうやって、高信頼性設計の必要性がなくなったのです。
それはそれで良いのかも知れません。
しかし、やり方を間違えば、冒頭に書いた様な事故につながっていきます。
ではどうすれが良いか。皆さん、一緒に考えようではありませんか。
このページは、オーナーの都合で作成しながらの公開となります。
どういう落としどころかはまだ決めていませんが、役に立つ情報を目指して突き進みます。
続きを楽しみながら、活用下さい。
0.なぜ高信頼化システムなのか
まずは、信頼性設計の基本として、学校で教える信頼度計算の基礎を考えてみよう。
信頼性を測る数値にMTBF(Mean Time Between Failure)というものがある。
平均故障間隔と呼んでいる。2万時間に1回故障する信頼度をMTBF2万時間といった具合です。
信頼度を数値で表すときに、MTBFを使用して測る方法があります。
まず、単位時間の故障確率を単位時間とMTBFの比率で求めます。
その故障率の逆数が信頼度という数値になります。
MTBF2万時間の1時間当りの信頼度は、20000、つまり2×104ということになります。
この論理を二重化システムに応用してみましょう。
或る装置を2台持ってきて、どちらかが動作していれば目的を果たすとしましょう。
例えば、パソコンの電源ユニットを2台並列に接続する場合などがあります。
この装置の信頼度をrとすると信頼度はどうなるか。
簡単に言うとr2となります。
先ほどの例では、2×104の信頼度が4×108になるという具合です。
この例を見て分かるように二重化は飛躍的に信頼度を上げる手段です。
しかし、落とし穴があります。
パソコンの電源ユニットの例で気付いた人もいると思いますが、2台を並列とする場合の接続方法に左右されます。
1台が故障してもう1台を引張ったら二重化の意味がなくなります。
しかし、ここでは、その様な作りはうまくできていると想定しましょう。ここで記載する問題点は、運用です。
1台が故障してどうしますか。もう1台が動いている間に、故障した1台を交換して二重化に戻します。
こういう仕組みが二重化には必要なのですが、ここに落とし穴が生れやすい。
故障した事を検出する仕組みが必要なのです。
しかも、その検出は、もう一台が壊れる前でなければなりません。
この例だったら気付く人も多いでしょう。
以外と気付かないのがパソコンに接続する無停電電源装置です。
この装置は、通常のコンセントから供給される商用交流電源と平行して、バッテリの電源を用意し、商用とバッテリの二重化を構成するものです。
特に無人で動作するサーバー類が問題となります。
単に繋いだだけだったら、停電時が長く続いて、バッテリが無くなったら効かなくなるからです。
バッテリが働いている間にデータが壊れないようにシャットダウンすることが必要になります。
確かに、家庭での停電は、2〜3分の短い停電が多いので、困る可能性は少ないですが、万が一にデータが無くなってはとても困るものです。
流石に無停電電源装置のメーカは、そういうことを考慮して設計しています。
しかし、そういうことが必要と分かり易くは説明していません。
使う側に任せているという訳です。
だって、そういうことは、高いお金を頂いてするコンサルティングの範囲だからですね。
これは、素人でも分かりやすい例だと思います。
高信頼性を考えるときには、素材、接続、構成、動作といろいろなことを考える必要があります。
さらに、テスト方法なども大いに影響します。
冒頭に出した新幹線の制御システムなどの、このテスト方法に問題があったことが分かります。
バブルが弾ける前の高信頼化システムは、一部の技術者が分かっていればよかったのだと思います。
しかし、以上の状況から、これからはみなさんで仕組みの知識を共有し、主張すべきところでは主張すべきだと思います。
そうしなければ、お金が下せない、バスや電車は止まる、ガスや電気が止まる。
そういうことが、企業の勝手で簡単に起きるようになってしまいます。
是非、そういう企業にものを言える消費者になりましょう。
これが、高信頼化システムをテーマとして理由です。
私個人ではどうにもなりません。みなさんと一緒にいろいろと考えていきたいと思います。
長い前書きとなりましたが、これから本題に入りたいと思います。
1.高信頼化システムの基礎
トップに戻る
高信頼性を実現する手法は、幾通りもあります。
いろんな視点から、その分類を整理してみましょう。
(1)信頼性評価の基準
まずは、用語の定義を含めて信頼性の評価の基準ついて説明します。
信頼度の関しては、RASという言葉が有名です。
ここでは、RASの3つの項目について説明します。
・信頼度(Reliability)
正しく表現すれば、故障せずに動き続ける度合いなります。
一般的には、平均故障間隔で表します。上記のMTBFです。
この故障間隔が長いほど信頼度が高いということになります。
対する用語として故障率があります。信頼度率をR、故障率をFとすると、R=1-Fです。
故障率の方が直接計算できるので、信頼度を計算するときによく利用する式です。
・可用性Avalability
これは、壊れないという信頼度に対して、使える度合いを表しています。
例えば、1日8時間の稼動でその時間の外で壊れても良いという考え方です。
解説書を見るともっと狭い意味で説明しているかも知れません。
平均故障間隔と平均修理時間(Mean Time To Repair、MTTR)の合計に対する平均故障間隔の比率と。
平均故障間隔は、運用のみで使用している時間ではなく、装置が稼動している時間で測っています。
例えば、保守で動作した時間などです。これも定義としては間違っていません
システムの運用者から見ると保守時間に壊れても、手間がかかります。
対して、エンドユーザから見ると、サービス時間が損なわれなければ障害無しとなります。
用語も目的により使い分ける必要があります。
・保守性(Serviceability)
解説書では、平均修理時間で説明していることが多いと思います。
故障となったときにどの位の時間で修理可能かという指標です。
実際は、故障箇所の特定方法、部品交換の容易さ、特殊技術の要否といったことがその内容となります。
故障率と所要時間を掛け合わせて平均修理時間を求めますが、条件設定により大きく変わります。
こういったところに、ノウハウの有無が大きく影響します。
(2)構成方式(ハードウェア)
二重化構成というのは、あまりにも有名だと思います。
こういうのを構成に基づく信頼性向上方式といいます。
主にコンビュータ本体の冗長化を目的に実施されます。
しかし、ソフトの二重化、運用の二重化などにも考え方は応用できると思います。
そういう意味で視点はいろいろありますが、ここではコンビュータシステムの代表的なものを列挙します。
・デュプレックス方式(コールドスタンバイ)
同じ動作をするハードを2台用意します。両方とも同じ動作が可能な様にソフトウェアも同じものを搭載します。
動作している方(現用系と呼ぶ)が故障すると、もう一台が立ち上がり、処理中のデータを引継ぎ処理を続行する方式。
待機している方(待機系と呼ぶ)が動作していない、つまりコールド状態なのでコールドスタート方式ともいいます。
次のデュアル方式に比べて、切り替りに時間がかかる欠点がある。
しかし、二重化の方式がシンプルなので、二重化機構の障害が免れる特徴を持つ。
切替え時間が掛かってもよいシステムや、上位システムが自動で切換えを行う場合に有効な方式です。
・デュアル方式(ホットスタンバイ)
デュプレックス方式と同様に同じ動作をするハードを2台用意します。
両方とも同じ動作が可能な様にソフトウェアも同じものを搭載するところまでは同じです。
待機系は、常に動作していて、更新されるデータも同様に受け取っています。
現用系に故障が起きると、外部との接続を待機系に切替えて処理を続行します。
コンピュータの世界では、その切換え時間はミリ秒の単位です。
待機系がホットな状態で待つので、ホットスタンバイ方式ともいいます。
この方式の欠点は、構造が複雑になる点です。
ハードのみの二重化では済まず、ソフトウェアにも二重化構造が大きく求められます。
一番大きいのが、データの同期化です。常時データを一致させる必要があります。
簡単にデュアル化するには、現用系のデータを待機系に送り続けることです。
しかし、送ったデータが確実に届いたかどうか。そういったいろんな問題がでます。
そして、一番問題なのが、待機系が確実に引継ぎできるかです。
分かりやすい例は、待機系が現用系からのデータを待ち続ける様な作りだったとします。
現用系が故障となってデータを送らなければ、待機系もデータを待ち続けて処理を続行しません。
問題はこんなに簡単では有りませんが、両系ダウンを生む可能性は作り次第ということになります。
切換え時間が最小にする必要性が高いシステムで費用を掛けて構築するといった用途で有効な方式です。
・マルチプレックス方式
上記のデュプレックス方式やデュアル方式が二重化に対して、これは3重以上の多重化方式を言います。
この中にもコールドスタンバイ、ホットスタンバイの類似する方式もあります。
しかし、マルチプレックスは、データの信頼性向上することに大きな特徴を持ちます。
アメリカの航空宇宙局が宇宙に進出する時に5重化系で多数決の論理を用いたケースは有名かもしれない。
勿論、ハードの冗長性にも役立つ。1台壊れても4重化が生き残る。
4重化となったときの多数決は難しくなる。同数が出得るからです。
上記の例でも分かるように、実験的で高い信頼性に対して費用を掛けることができるときに実現する方式です。
将来的に例えば、手術を執刀するコンビュータが実現するときには、同様な手法になると思われる。
・単純二重化方式
正式名称は私も知らない。単純に2台を準備する方式などである。
壊れた場合は、ソフトのインストールから実施するといった具合で、時間がたっぷりとあるシステムで許された方式です。
拡張形として、予備部品保有もあります。
部品で予備を持ち、壊れた部分を予備に交換する方式です。
効果は、修復時間の短縮にあります。
私が担当したシステムでは、二重化システムの部品の予備保有という構成がありました。
例えば、一日8時間稼動するシステムで故障した日の次の日には、正常で動作させたいときに有効な方式でした。
勿論、交換要員の確保とかいろいろと付随します。
しかし、高価なマルチプレックスよりは安価に高い信頼性を実現します。
>>(この項目、まだ)続く