稼働率と冗長化の仕組みを図解で説明 〜直列・並列の計算とデュアル・デュプレックスの違い〜

「このシステムの稼働率は99.9%です」と言われて、どのくらい止まるのかイメージできますか?

システムは、どんなに丈夫な機器を使っても、いつかは故障します。

そこで、故障しても止まりにくくする工夫が「冗長化」です。

稼働率の考え方と計算方法、冗長化の代表的な構成について、図を使って説明していきます。

稼働率の図。正常に動いている時間(MTBF)と修理の時間(MTTR)が交互に並び、稼働率はMTBF÷(MTBF+MTTR)で計算する

稼働率とは?

稼働率は、システムが正常に動いている時間の割合 です。

稼働率は、次の式で計算します。

稼働率 = 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%」のように目標の数字が示されていることがあります。

直列と並列の稼働率の計算

システムは、いくつもの装置の組み合わせでできています。

装置のつなぎ方によって、システム全体の稼働率の計算方法が変わります。

直列と並列の稼働率の比較図。稼働率0.9の装置2台を直列にすると0.81、並列にすると0.99になる

直列の場合

装置を直列につないだ場合は、どれか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 になります。

稼働率0.9の装置を1台、2台、3台並列にした時の稼働率の図。90%、99%、99.9%と上がっていく

3台並列にすると、1 − (0.1 × 0.1 × 0.1) = 0.999 です。

並列にする台数を増やすほど、全体の稼働率は上がります。

なお、この計算は、それぞれの装置が独立して故障する(同時に壊れる原因がない)ことを前提にしています。

冗長化とは?

冗長化は、予備の装置を用意しておき、1つが故障してもシステムを止めないようにすること です。

先ほどの並列の考え方を、実際のシステムに使ったものです。

身近な例では、ディスクを冗長化する「RAID」があります。

冗長化の代表的な構成として、「デュアルシステム」と「デュプレックスシステム」があります。

デュアルシステムとデュプレックスシステムの比較図。デュアルは2系統で同時に処理して結果を照合し、デュプレックスは主系の故障時に待機系へ切り替える

デュアルシステム

デュアルシステムは、2つの系統で同じ処理を同時に行い、結果を照らし合わせる構成 です。

片方が故障しても、もう片方だけで処理を続けられます。

結果を照らし合わせるので、処理の誤りにも気付けます。

ただし、2系統を常に動かすので、費用が高くなります。

デュプレックスシステム

デュプレックスシステムは、普段使う「主系」と、予備の「待機系」を用意しておく構成 です。

主系が故障したら、待機系に切り替えて処理を続けます。

待機系の待ち方には、2種類あります。

  • ホットスタンバイ: 待機系をいつでも動ける状態にしておく。切り替えが速い
  • コールドスタンバイ: 待機系を止めておくか、別の仕事に使っておく。切り替えに時間がかかるが、費用を抑えられる

なお、1つの系統だけで動かす構成は「シンプレックスシステム」と呼びます。

冗長化の注意点

冗長化をしても、次のような点に注意が必要です。

  • 一か所でも冗長化していない装置があると、そこが故障した時に全体が止まる(単一障害点)
  • 主系と待機系が同じ電源や同じ建物にあると、停電や災害で一緒に止まる
  • 待機系へ実際に切り替えられるか、定期的に試しておく必要がある

一か所でも冗長化していない装置があると、直列の計算と同じように、その装置の稼働率が全体の足を引っ張ります。

まとめ

今回は稼働率と冗長化の仕組みについて説明しました。

稼働率は、システムが正常に動いている時間の割合で、MTBF ÷ (MTBF + MTTR) で計算します。

直列は掛け算で稼働率が下がり、並列は「1 − 全部が故障する確率」で稼働率が上がります。

冗長化には、2系統で同時に処理するデュアルシステムと、主系と待機系を切り替えるデュプレックスシステムがあります。

「直列は掛け算、並列は1から故障の確率を引く」と覚えておきましょう。

ディスクの冗長化については、RAIDの仕組みを図解で説明の記事で説明しています。

データベースを複数のサーバに持たせる方法については、レプリケーションとシャーディングの違いを図解で説明の記事で説明しています。

複数のサーバで処理を分け合い、1台が故障しても止まらないようにする装置については、ロードバランサーの仕組みを図解で説明の記事で説明しています。