稼働率と冗長化の仕組みを図解で説明 〜直列・並列の計算とデュアル・デュプレックスの違い〜
「このシステムの稼働率は99.9%です」と言われて、どのくらい止まるのかイメージできますか?
システムは、どんなに丈夫な機器を使っても、いつかは故障します。
そこで、故障しても止まりにくくする工夫が「冗長化」です。
稼働率の考え方と計算方法、冗長化の代表的な構成について、図を使って説明していきます。

稼働率とは?
稼働率は、システムが正常に動いている時間の割合 です。
稼働率は、次の式で計算します。
稼働率 = MTBF ÷ (MTBF + MTTR)
- MTBF(平均故障間隔): 故障してから次に故障するまでの、正常に動いている時間の平均
- MTTR(平均修理時間): 故障してから直るまでの時間の平均
例えば、平均して990時間動いたあとに故障し、直すのに10時間かかるシステムの稼働率は、990 ÷ (990 + 10) = 0.99 です。
稼働率を上げるには、故障しにくくする(MTBFを長くする)か、早く直せるようにする(MTTRを短くする)かのどちらかです。
稼働率と止まる時間
稼働率の数字が少し違うだけで、止まる時間は大きく変わります。
1年間(365日 = 8,760時間)で見ると、次のようになります。
- 稼働率99%: 1年間に約87.6時間(約3.7日)止まる
- 稼働率99.9%: 1年間に約8.8時間止まる
- 稼働率99.99%: 1年間に約53分止まる
クラウドのサービスなどで、「稼働率99.9%」のように目標の数字が示されていることがあります。
直列と並列の稼働率の計算
システムは、いくつもの装置の組み合わせでできています。
装置のつなぎ方によって、システム全体の稼働率の計算方法が変わります。

直列の場合
装置を直列につないだ場合は、どれか1つでも故障するとシステム全体が止まります。
全体の稼働率は、それぞれの稼働率の掛け算です。
直列の稼働率 = A × B
稼働率0.9の装置を2台直列につなぐと、0.9 × 0.9 = 0.81 になります。
直列につなぐ装置が増えるほど、全体の稼働率は下がります。
並列の場合
装置を並列につないだ場合は、どれか1台でも動いていればシステム全体は動きます。
全体が止まるのは、全部の装置が同時に故障した時だけです。
そのため、「1 − 全部が故障している確率」で計算します。
並列の稼働率 = 1 − (1 − A) × (1 − B)
稼働率0.9の装置を2台並列につなぐと、1 − (0.1 × 0.1) = 0.99 になります。

3台並列にすると、1 − (0.1 × 0.1 × 0.1) = 0.999 です。
並列にする台数を増やすほど、全体の稼働率は上がります。
なお、この計算は、それぞれの装置が独立して故障する(同時に壊れる原因がない)ことを前提にしています。
冗長化とは?
冗長化は、予備の装置を用意しておき、1つが故障してもシステムを止めないようにすること です。
先ほどの並列の考え方を、実際のシステムに使ったものです。
身近な例では、ディスクを冗長化する「RAID」があります。
冗長化の代表的な構成として、「デュアルシステム」と「デュプレックスシステム」があります。

デュアルシステム
デュアルシステムは、2つの系統で同じ処理を同時に行い、結果を照らし合わせる構成 です。
片方が故障しても、もう片方だけで処理を続けられます。
結果を照らし合わせるので、処理の誤りにも気付けます。
ただし、2系統を常に動かすので、費用が高くなります。
デュプレックスシステム
デュプレックスシステムは、普段使う「主系」と、予備の「待機系」を用意しておく構成 です。
主系が故障したら、待機系に切り替えて処理を続けます。
待機系の待ち方には、2種類あります。
- ホットスタンバイ: 待機系をいつでも動ける状態にしておく。切り替えが速い
- コールドスタンバイ: 待機系を止めておくか、別の仕事に使っておく。切り替えに時間がかかるが、費用を抑えられる
なお、1つの系統だけで動かす構成は「シンプレックスシステム」と呼びます。
冗長化の注意点
冗長化をしても、次のような点に注意が必要です。
- 一か所でも冗長化していない装置があると、そこが故障した時に全体が止まる(単一障害点)
- 主系と待機系が同じ電源や同じ建物にあると、停電や災害で一緒に止まる
- 待機系へ実際に切り替えられるか、定期的に試しておく必要がある
一か所でも冗長化していない装置があると、直列の計算と同じように、その装置の稼働率が全体の足を引っ張ります。
まとめ
今回は稼働率と冗長化の仕組みについて説明しました。
稼働率は、システムが正常に動いている時間の割合で、MTBF ÷ (MTBF + MTTR) で計算します。
直列は掛け算で稼働率が下がり、並列は「1 − 全部が故障する確率」で稼働率が上がります。
冗長化には、2系統で同時に処理するデュアルシステムと、主系と待機系を切り替えるデュプレックスシステムがあります。
「直列は掛け算、並列は1から故障の確率を引く」と覚えておきましょう。
ディスクの冗長化については、RAIDの仕組みを図解で説明の記事で説明しています。
データベースを複数のサーバに持たせる方法については、レプリケーションとシャーディングの違いを図解で説明の記事で説明しています。
複数のサーバで処理を分け合い、1台が故障しても止まらないようにする装置については、ロードバランサーの仕組みを図解で説明の記事で説明しています。


