JP6278602B2 - 高可用性システム - Google Patents

高可用性システム Download PDF

Info

Publication number
JP6278602B2
JP6278602B2 JP2013043108A JP2013043108A JP6278602B2 JP 6278602 B2 JP6278602 B2 JP 6278602B2 JP 2013043108 A JP2013043108 A JP 2013043108A JP 2013043108 A JP2013043108 A JP 2013043108A JP 6278602 B2 JP6278602 B2 JP 6278602B2
Authority
JP
Japan
Prior art keywords
standby
active
switching
abnormality
activation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013043108A
Other languages
English (en)
Other versions
JP2014170477A (ja
Inventor
龍一 佐藤
龍一 佐藤
明 平田
明 平田
尚之 対馬
尚之 対馬
雅浩 虻川
雅浩 虻川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2013043108A priority Critical patent/JP6278602B2/ja
Publication of JP2014170477A publication Critical patent/JP2014170477A/ja
Application granted granted Critical
Publication of JP6278602B2 publication Critical patent/JP6278602B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、マルチプロセッサを搭載した装置を用いて運用系と待機系の多重化システムを実現する高可用性システムに関する。
従来、高可用性を実現するため、ハードウェアを含めたシステム全体を多重化し、2重系システムの構築を行っていた。2重系システムのバックアップの系を電源停止させた状態で待機させるコールドスタンバイ、または起動させた状態で待機させるホットスタンバイで待機させ、障害発生時にバックアップの系へ処理をフェールオーバさせ、システムの運用を継続し、可用性を高める方法が提案されていた(例えば、特許文献1参照)。
また、可用性を高める方法として、システムを多重化してバックアップ機能を構成し、動作継続ができない障害が発生した場合は、バックアップに切換り、同等の動作、または機能や処理を縮退し動作し続けるといった方法が提案されていた(例えば、特許文献2参照)。
特開2006−172390号公報 特開2011−043892号公報
しかしながら、組込み機器においてはプロセッサの処理性能の向上に伴い多様な機能が要求され、ソフトウェア規模が増大すると共に構造が複雑になりソフトウェア不具合によるシステムダウンが発生している。また、サードパーティアプリをインストールして使用するケースも増加し、予期しないソフトウェア要因の障害により、システムが継続して動作できない状況に陥る状況がある。そういった状況ではシステムの再起動が必要になり、ユーザーは再起動中、サービスを受けられないという問題があった。
更に、システムの再起動は障害発生時に限らず、ソフトウェアのアップデート時や、長時間電源断しないシステムでメモリリーク防止として用いられる計画的なシステム再起動時なども該当し、可用性を向上させる必要がある。
従来の高可用性システムのようにハードウェアを含めたシステム全体を多重化する方法を、組込み機器に適用するとサイズが大きくなる、部品点数が増える、コストが高くなるといった問題があり、従来手法をそのまま適用することができない。
また、系の切換えを行いバックアップ用の系で動作継続を行う場合、バックアップの系で障害が発生した際のバックアップ機能が無いという問題があった。バックアップの系を3重、4重のシステムにするという手法は提案されているが、上述した通り、組込み機器においては3重、4重のシステム多重化方法は適していない。
この発明は上記のような課題を解決するためになされたもので、システム全体を多重化できない問題と、バックアップの系へ切換った場合バックアップ機能がないという問題を解決し、低コストで多重化システムを実現することができ、ソフトウェア要因によるシステム再起動のダウンタイムを小さくし、高可用性を実現することのできる高可用性システムを得ることを目的とする。
この発明に係る高可用性システムは、複数の演算CPUを有するマルチコアプロセッサと、複数の演算CPUが共通して用いる周辺ハードウェアとを搭載した装置を用いた高可用性システムであって、複数の演算CPUを運用系と待機系に分割して多重系システムを構築すると共に、周辺ハードウェアは、運用系と待機系のそれぞれの起動情報を格納するための起動情報格納部を有し、運用系と待機系のそれぞれは、起動情報に従って運用系と待機系とを運用可能状態とする起動手段と、運用系の稼働状態の監視を行い、運用系の異常を検出する異常検出手段と、運用系の異常が検出された場合は、待機系を運用系として系切換を行うと共に、起動情報を系切換に対応して更新する系切換手段と、運用系から待機系に切換った場合に、待機系としての再起動を行う再起動手段とを備え、待機系は運用可能状態の後にスリープ状態に移行し、かつ、スリープ状態移行後、周期的に異常検出手段が起動し監視を行い、運用系の異常検出手段は、系内監視を行うことで、運用系の稼働状態の監視を行い、待機系の異常検出手段は、演算CPU間の通信を利用した系間監視を行うことで、運用系の稼働状態の監視を行うものである。
この発明の高可用性システムは、運用系の異常が検出された場合は、待機系を運用系として系切換を行うと共に、運用系から待機系に切換った場合に、待機系としての再起動を行い、かつ、待機系は運用可能状態の後にスリープ状態に移行し、スリープ状態移行後、周期的に監視を行うようにしたので、低コストで多重化システムを実現でき、かつ、ソフトウェア要因によるシステム再起動のダウンタイムを小さくすることができる。
この発明の実施の形態1による高可用性システムを示す構成図である。 この発明の実施の形態1による高可用性システムの動作を示すフローチャート(その1)である。 この発明の実施の形態1による高可用性システムの動作を示すフローチャート(その2)である。 この発明の実施の形態1による高可用性システムの不揮発メモリの内部構成を示す説明図である。 この発明の実施の形態1による高可用性システムの系間監視のシーケンスを示す説明図である。 この発明の実施の形態1による高可用性システムの運用系で異常検出した場合のシーケンスを示す説明図である。 この発明の実施の形態1による高可用性システムの待機系で異常検出した場合のシーケンスを示す説明図である。 この発明の実施の形態1による高可用性システムの待機系で異常検出し、運用系から通知が無い場合のシーケンスを示す説明図である。 この発明の実施の形態1による高可用性システムのIOアクセススケジューリングを行うための優先度付きキューの一例を示す説明図である。 この発明の実施の形態1による高可用性システムのIOアクセス要求をキューに追加する方法を示すフローチャートである。 この発明の実施の形態1による高可用性システムのIOアクセス要求からスケジューリングを行う方法を示すフローチャートである。 この発明の実施の形態1による高可用性システムのIOデバイスへのアクセスを分割し実行する方法を示すフローチャートである。 この発明の実施の形態2による高可用性システムを示す構成図である。
実施の形態1.
図1は、この発明の実施の形態1による高可用性システムのハードウェア構成及びソフトウェア構成を含む構成図である。
図1に示す高可用性システムは、2個のCPU101,201を備えたマルチコアプロセッサに多重系システムを構築する例である。システム系A100は、CPU101、OS(オペレーティングシステム)102、CPU間通信部103、アプリケーションプログラム104、異常検出処理部105、IOアクセス制御部106から構成され、システム系B200は、CPU201、OS202、CPU間通信部203、アプリケーションプログラム204、異常検出処理部205、IOアクセス制御部206から構成されている。また、高可用性システムは、これらシステム系A100とシステム系B200とが共通して用いるIOデバイス1、不揮発メモリ2、メモリ3、通信路4を備えている。
図示のように、高可用性システムでは、マルチコアプロセッサを複数の系に分割し、システム系A100とシステム系B200を構成する。各系にはCPUを1個ずつ割り当てる。CPU101とCPU201は同一アーキテクチャを持ち、通信路4で接続され、CPU間、或いは同じく通信路4に接続される周辺ハードウェアであるIOデバイス1、メモリ3、不揮発メモリ2と互いに情報を伝達できるように構成されている。
システム系A100とシステム系B200に、同一または異なるOS102とOS202を搭載する。また、OS102,202上で動作するCPU間通信部103,203と、アプリケーションプログラム104,204と、異常検出処理部105,205と、IOアクセス制御部106,206をそれぞれ搭載し2重系システムを構築し、系を通常動作する運用系とバックアップとして動作する待機系に割り当てる。IOデバイス1へのアクセスはシステム系A100またはシステム系B200のどちらか一方がアクセスすることとし、通常動作を行う運用系が入出力を行う。メモリ3は、論理的にシステム系A100用の系A用メモリ31と、システム系B200用の系B用メモリ32と、システム系A100とシステム系B200とで共有する共有メモリ33に分割する。
不揮発メモリ2には、運用系と待機系のそれぞれの起動情報を格納するための起動情報格納部が構成されている(これについては図4を用いて後述する)。また、これらの起動情報と、CPU101,201、CPU間通信部103,203、IOアクセス制御部106,206によって、運用系と待機系とを運用可能状態とする起動手段が構成されている。さらに、CPU間通信部103,203と異常検出処理部105,205とによって、運用系の稼働状態の監視を行い、運用系の異常を検出する異常検出手段と、運用系の異常が検出された場合は、待機系を運用系として系切換を行うと共に、起動情報を系切換に対応して更新する系切換手段と、運用系から待機系に切換った場合に、待機系としての再起動を行う再起動手段とが構成されている。
次に、実施の形態1の高可用性システムの動作について説明する。図2及び図3は高可用性システムにおけるシステム起動から終了までの処理を表したフローチャートであり、システム系A100、システム系B200に共通のものである。
(1)2重系システムの起動
電源オンなど、システム起動トリガを検出すると、システム系A100のCPU101は不揮発メモリ2にアクセスし、系起動情報の取得を行う。図4は、不揮発メモリ2の構成例を示している。不揮発メモリ2内には系A起動情報21と系B起動情報22が格納されている。システム系A100は系A起動情報21を取得し、系起動情報判定(ステップST1)を行い、運用系起動か待機系起動かを判定する。システム系A100の系起動情報が運用系起動である場合、システム系A100は、OSロード(ステップST2)を行う。一方、システム系A100の系起動情報が待機系起動である場合、システム系A100は待機系として起動し、運用系として起動する系からの「待機系動作開始通知」受信待ち(ステップST18)に遷移する。
以下は、システム系A100が運用系で起動し、システム系B200が待機系で起動する例で説明する。
運用系で起動するシステム系A100は、OSロード処理(ステップST2)で、OS102を系A用メモリ31にロードする。次に、系A用メモリ31に展開したOS102のOS初期化(ステップST3)を行い、システムが動き出すまでに必要とされる初期化処理を行う。システム系A100はS/Wの初期化(ステップST4)でCPU間通信部103、アプリケーションプログラム104、異常検出処理部105、IOアクセス制御部106の初期化処理を行う。運用系で起動するシステム系A100はIOアクセス制御部106の制御情報をアクセス許可に更新する。
運用系起動するシステム系A100はIOデバイス1へアクセスし、IOデバイス初期化(ステップST5)を行い、通常動作(ステップST6)を開始し、アプリケーションプログラム104を実行する。通常動作中はシステム系A100の異常検出処理部105でシステム系A100内のアプリケーションプログラム104の状態を監視(ステップST12)する。また、CPU101は、システム系B200のOS202が系B用メモリ32へロード完了しているかを判定(ステップST7)し、展開されていない場合は、待機系のOSのロード処理(ステップST8)を行う。このとき、IOアクセス制御部106内のIOアクセススケジューリング部107は、運用系として動作しているシステム系A100のIOデバイス1へのアクセス状況を監視し、システム系B200のOS202をロードするために行うIOデバイス1へのアクセスが、通常動作を行っているシステム系A100への動作に影響が小さくなるようにスケジューリングを行う。すなわち、待機系の起動処理を行う際、運用系の通常動作を優先して行う。なお、スケジューリングの詳細については後述する。
システム系A100のCPU101は、システム系B200のOS202のロードが完了すると、システム系B200に制御信号を発生させ、「待機系動作開始通知」を通知(ステップST9)する。
なお、運用系であるシステム系A100が待機系であるシステム系B200のOS202を展開するタイミングはシステム系A100が通常動作(ステップST6)状態に限らず、システム系A100のOS102をロードするOSロード(ステップST2)において、システム系B200のOS202のロードを同時に行い「待機系動作開始通知」を行ってもよい。運用系であるシステム系A100の処理負荷が低いタイミングに行うことが望ましく、運用系の処理遅延やレイテンシの低下を小さくすることができる。
待機系で起動するシステム系B200は、システム系A100からの「待機系動作開始通知」を受信後、システム系A100と同様に、OS初期化(ステップST19)でメモリ3に展開したOSの初期化と、S/W初期化(ステップST20)を行い、CPU間通信部203、アプリケーションプログラム204、異常検出処理部205、IOアクセス制御部206の初期化処理を行う。待機系で起動するシステム系B200は、IOアクセス制御部206の制御情報をアクセス不可に更新する。
待機系で動作するシステム系B200は待機状態に入り、CPU201の状態をSLEEP状態(ステップST24)に遷移させ、低消費電力モードにすることで低消費電力化を行う。システム系B200は、システム系A100からの割り込みやCPU間通信によるイベント通知、または自身の周期タイマによってスリープ状態から復帰し系A200の稼働状態の監視を行う。すなわち、待機系は運用可能状態の後にスリープ状態となり、かつ、スリープ状態後、周期的に異常検出手段が起動し監視を行う。
(2)異常の検出方法
システム系A100の異常検出処理部105、システム系B200の異常検出処理部205は、それぞれ自身の系内の再起動が必要なソフトウェア要因による異常を検出する機能を有する。以下に具体的な検出方法を記載する。
・例外などCPU101,201のエラー検出情報を取得する。
・チェックサムを利用したメモリ内容の監視を行い、メモリ破壊、データの書き込み失敗の検出を行う。
・アプリケーションプログラム104,204で周期的に動作する処理が一定周期以内に動作しているか監視し、処理遅延の検出を行う。
・系A用メモリ31,系B用メモリ32の特定の領域に確認用データを格納し、その領域が期待しない値に書き換わらないか監視する。メモリ破壊、スタックオーバフローの検出を行う。
・OS102,202のスケジューリング情報を参照し、スケジューリングのキュー操作から一定時間以上同一キューがRUN状態になっていないか、周期動作する処理が周期的にRUN状態に遷移しているかを監視する。
システム系A100の異常検出処理部105、システム系B200の異常検出処理部205は他系の稼働状態を監視し、他系で再起動が必要なソフトウェア要因による異常を検出する機能を有する。以下に具体的な検出手段を記載する。
図5は運用系と待機系間で稼働状態の監視を行う例を示した図である。
通信路4を介したCPU101とCPU201間でCPU間通信部103,203と共有メモリ33を利用し、システム系A100は周期的に共有メモリ33の稼働情報を更新する(ステップST401)。CPU間通信部103,203でシステム系B200へ稼働情報更新通知を送出する(ステップST402)。システム系B200ではシステム系A100からのCPU間通信を受信し、共有メモリ33の稼働内容が期待する値に更新されているか確認する(ステップST405)ことでシステム系A100が正常動作を行っているかを監視する。また、システム系B200も同様に、周期的に共有メモリ33の稼働情報を更新(ステップST406)し、CPU間通信でシステム系A100に稼働情報更新通知(ステップST403)を送出する。システム系B200から稼働情報更新通知(ステップST403)を受信したシステム系A100では共有メモリ33の稼働内容が期待する値に更新されているか確認(ステップST404)することでシステム系B200が正常動作を行っているか監視する。共有メモリ33の内容が期待する値に更新されていない場合や周期的に稼働情報更新通知が通知されない場合、監視対象の系が異常な状態であると判断する。
(3)系の切換え
・異常検出による系の切換え
[システム系A100の異常検出処理部105による異常検出]
図6は運用系で異常検出した場合のシーケンスの例を示す図である。運用系であるシステム系A100の異常検出処理部105で動作継続不可能な異常を検出(ステップST12)した場合、通信路4を介したCPU101とCPU201間の通信にCPU間通信部103,203を使用し「系切換通知」をシステム系B200へ送出する(ステップST13)。システム系A100は、不揮発メモリ2に格納されているシステム系A100の系起動情報を「待機系起動」に更新(ステップST14)し、IOアクセス制御部106の制御情報をアクセス不可に更新し、再起動する。システム系A100は再起動後、システム系A100の系起動情報判定(ステップST1)を行い、待機系起動し、待機状態へ遷移する。
システム系B200は、待機中にCPU間通信で「系切換通知」(ステップST21)を受信し、不揮発メモリ2に格納されているシステム系B200の系起動情報を「運用系起動」に更新(ステップST17)し、IOアクセス制御部206の制御情報をアクセス許可に更新して運用系に切換り、IOデバイス初期化(ステップST5)を行い、通常動作(ステップST6)を開始し、アプリケーションプログラム204を実行する。
[システム系B200の異常検出処理部205による異常検出]
図7は待機系で異常検出した場合のシーケンスの例を示す図である。待機系であるシステム系B200の異常検出処理部205でシステム系A100の動作継続不可能な異常を検出(ステップST23)した場合、通信路4を介し、CPU間通信部103,203を使用し、システム系B200からシステム系A100へ「系切換要求」を通知(ステップST25)し、異常検出による系の切換えを要求する。
システム系A100では「系切換要求」を受信(ステップST11)すると、CPU間通信部103,203を使用して「系切換通知」をシステム系B200へ通知し、システム系A100の異常検出処理部105で異常検出した時と同様に、システム系A100の系起動情報更新(ステップST14)を行い、IOアクセス制御部106の制御情報をアクセス不可に更新し、再起動後、待機系として起動する。
システム系B200で「系切換通知」受信後は、システム系A100の異常検出処理部105で異常検出時した場合と同じ処理を行う。
図8は待機系で異常検出し、運用系から通知が無い場合のシーケンスの例を示す図である。
待機系であるシステム系B200の異常検出処理部205で、システム系A100の動作継続不可能な異常を検出(ステップST701)し、システム系A100へ「系切換要求」を送信(ステップST25)後、図示しないタイマを設定し、タイマカウントダウン(ステップST702)を行う。タイムアウト検出するまでにシステム系A100から系切換通知を受信すれば図7で示したように動作する。一方、システム系A100から系切換通知が無く、タイマのタイムアウトを検出(ステップST703)した場合、システム系A100は応答できる状態にないと判断し、システム系B200が自発的に系の切換えを行う。このときシステム系B200は、システム系B200の系起動情報を運用系起動に更新(ステップST17)すると共に、システム系A100の系起動情報を待機系起動に更新(ステップST704)し、また、IOアクセス制御部206の制御情報をアクセス許可に更新し、システム系A100を再起動させ、システム系B200を運用系に切換える。
・異常検出以外による系の切換え
システムのソフトウェアのアップデートによる、システムの再起動時やメモリリークなどを防止するために周期的にシステムを再起動する場合においても異常検出時と同様にCPU間通信部103,203を使用し「系切換通知」を待機系起動している系へ通知し、待機系へ切換えを行う。
(4)系の再起動
システム系B200が運用系へ切換った後、使用済のシステム系A100は再起動し、システム系A100の系起動情報判定(ステップST1)を行い、待機系として起動する。システム系B200は通常動作(ステップST6)を開始後、待機系であるシステム系A100のOS展開完了状態を判定(ステップST7)し、未完了である場合、システム系B200がシステム系A100のOS102を系A用メモリ31へロード(ステップST8)する。IOデバイス1へのアクセスは2重系システムの起動で記載した方法と同様に、運用系であるシステム系B200の動作に影響が小さくなるようにスケジューリングしアクセスを行う。展開完了後、待機系であるシステム系A100に待機系動作開始通知(ステップST9)を通知し、待機系としてのシステム系A100の動作を開始する。
なお、システム系A100が系A用メモリ31へOS102をロードする方法も可能である。また、図5で示したように、システム系B200が待機系で異常であった場合、待機系として再起動を行うようにしてもよい。
(5)IOアクセススケジューリング
システム起動時、または系切換り後、運用系が待機系のOSをロードする際、通常動作を行っている運用系動作への影響が小さくなるようにIOへのアクセスをスケジューリングする。例えば待機系で使用するために連続した時間IOへアクセスする必要がある場合、処理を分割し、周期的にIOアクセスを中断させ、IOアクセススケジューリングを実施することで運用系からのIOデバイス1へのアクセスを可能にし、運用系の動作が待機系の処理により長時間待ち状態になることを防止する。また、運用系が使用するIOデバイス1へのアクセスと待機系が使用するIOデバイス1へのアクセス処理が同時に発生した場合は、運用系のIOアクセスを優先するスケジューリングを行い、運用系の動作への影響を小さくする。
以下、IOアクセススケジューリング部107,207で行うスケジューリングの方法について説明する。
図9は運用系、待機系の各系からのIOアクセスの要求を管理しスケジューリングを行うために使用する優先度付きキューの例を示している。運用系リクエストキュー801と待機系リクエストキュー802を使用し、運用系で使用するIOアクセス要求は運用系リクエストキュー801へ、待機系で使用するIOアクセス要求は待機系リクエストキュー802へノードを追加する。従って、運用系が待機系のOSを展開するために行うIOアクセスの要求は待機系リクエストキュー802へ接続する。キューの優先順位は、運用系リクエストキュー801を待機系リクエストキュー802よりも高く設定する。図9では待機系リクエストキュー802にIOアクセス要求1(805)、運用系リクエストキュー801にIOアクセス要求2(803)、IOアクセス要求3(804)が接続されている例である。
図10は各系からのIOアクセス要求をリクエストキューへノードの追加する方法を示している。IOデバイス1へのアクセス要求が発生すると、運用系で使用するIOアクセスかどうかを判定(ステップST901)する。運用系で使用する場合、運用系リクエストキュー801終端にノードを追加(ステップST904)し、要求を管理する。運用系で使用するものでない場合、待機系で使用するIOアクセスかどうか判定(ステップST902)する。待機系で使用するIOアクセスである場合、待機系リクエストキュー802終端にノードを追加(ステップST903)し、IOアクセス要求を管理する。運用系、待機系どちらでも使用しない場合、要求はいずれのキューにも追加しない。
図11は、図9の優先度付キューに追加した各系からのIOアクセス要求からスケジューリングを行う方法を示した図である。先ず、運用系リクエストキュー801にノードが存在するか確認(ステップST1001)する。ノードが存在する場合、運用系リクエストキュー先頭ノードを取得(ステップST1005)する。運用系リクエストキュー801にノードが存在しない場合、待機系リクエストキュー802にノードが存在するか確認(ステップST1002)する。ノードが存在する場合、待機系リクエストキュー先頭ノードを取得(ステップST1003)する。取得したノードをスケジューリング情報に反映(ステップST1004)し、次にIOデバイス1へアクセスする要求とする。運用系リクエストキュー801、待機系リクエストキュー802共にノードが存在しない場合は、IOへのアクセス要求が無いため、スケジューリング情報への反映は行わない。
図12はIOデバイス1へのアクセス時間を分割し実行する方法を示した図である。待機系で使用するIOアクセスにおいて、一定時間以上アクセスするものを分割しIOアクセスを行う。図11で決定したスケジューリング情報から、先ず、待機系で使用するIOアクセスであるか判定(ステップST1101)する。待機系で使用するIOアクセスである場合、アクセスするデータ量が閾値を超えているか判定(ステップST1102)する。運用系で使用するIOアクセスである場合は処理を終了する。アクセスするデータ量の閾値はアクセスするIOデバイス1の特性、システムの負荷状態から決定する。閾値を超えている場合、閾値以内のデータを処理し、閾値を超えているデータへのアクセス要求を待機系リクエストキュー802の先頭ノードへ設定(ステップST1103)する。アクセスするデータ量が閾値以内である場合は分割処理を行わずアクセスを行う。
(6)2重系システムの終了
運用系として動作しているシステム系B200が通常動作中にシステムシャットダウンを検出(ステップST10)した場合、CPU間通信を使用し、待機系であるシステム系A100へシャットダウン通知を通知(ステップST15)する。その後、システム系B200はシステムシャットダウン(ステップST16)を行う。
システム系A100はシャットダウン通知を受信(ステップST22)すると、システム系B200と同様に、システムのシャットダウン(ステップST16)を行い、処理を終了する。
なお、上記例ではCPU数が2個のマルチプロセッサの例を説明したが、CPU数はこの値に限定されるものではなく、4個以上のCPUを備えたマルチプロセッサであってもよい。すなわち、実施の形態1の高可用性システムは、CPU数が2個以上のマルチコアプロセッサにおいてCPU数を均等に分割して2重系を構築するものである。また、上記の説明では、OS102,202が搭載されたシステムで実施例を説明したが、OS102,202を搭載しないシステムにおいても適用が可能である。
以上のように、実施の形態1では、マルチコアプロセッサを備えた計算機システム内に2重系システムを構築し、任意のタイミングで系を切換えて動作することで、以下の効果を有する。
[ダウンタイム時間の短縮]
系切換えが必要な要因が発生し、待機系に切換り通常動作が開始するまでに必要な時間は系切換え時間とIOデバイス初期化時間のみであり、システムのダウンタイムを大幅に短縮する効果が得られる。また、運用系と待機系が循環動作可能な構成であるため、切換えが必要になった系を再起動し待機系として再利用することで、常にバックアップの系が備わった状態を構築でき、前述のダウンタイム短縮の効果を繰り返し得ることができるため、システム全体として可用性を向上させる効果が得られる。
[サイズ、部品点数、コストを維持]
ハードウェアを多重化することなく、既存のマルチコア技術を使用し多重系システムを実現しているため、システムのサイズや、部品点数への影響は無く、コストへの影響もない。そのため、マルチコアプロセッサを搭載した既存システムへの導入や、また近年組込み機器において用いられることが多いSoC(System−on−a−chip)やSiP(System In Package)を使用したシステムにもハードウェアを変更することなく導入が可能であるという効果がある。
また、障害監視専用のハードウェアを追加することなく、異常検出処理部105,205を多重系システム内に構築し、系内監視と系間監視を行うことによりOS102,202の状態を含めたソフトウェアの稼働状態を監視することができ、既存のマルチコア技術を用いて、障害の早期検出と検出範囲を拡大ができる効果がある。
さらに、多重化しないIOデバイス1へのアクセスをスケジューリングし、運用系と待機系で優先度をつけてアクセスすることで、IOデバイスアクセス競合による待ち時間を短くでき、運用系の動作への影響を小さくできる効果がある。これにより組込み機器のように限られたスペック環境においても、多重系システムを適用できる。
以上説明したように、実施の形態1の高可用性システムによれば、複数の演算CPUを有するマルチコアプロセッサと、複数の演算CPUが共通して用いる周辺ハードウェアとを搭載した装置を用いた高可用性システムであって、複数の演算CPUを運用系と待機系に分割して多重系システムを構築すると共に、周辺ハードウェアは、運用系と待機系のそれぞれの起動情報を格納するための起動情報格納部を有し、運用系と待機系のそれぞれは、起動情報に従って運用系と待機系とを運用可能状態とする起動手段と、運用系の稼働状態の監視を行い、運用系の異常を検出する異常検出手段と、運用系の異常が検出された場合は、待機系を運用系として系切換を行うと共に、起動情報を系切換に対応して更新する系切換手段と、運用系から待機系に切換った場合に、待機系としての再起動を行う再起動手段とを備え、待機系は運用可能状態の後にスリープ状態に移行し、かつ、スリープ状態移行後、周期的に異常検出手段が起動し監視を行うようにしたので、低コストで多重化システムを実現でき、かつ、ソフトウェア要因によるシステム再起動のダウンタイムを小さくすることができる。
また、実施の形態1の高可用性システムによれば、系切換手段は、異常が検出された場合以外に、所定の系切換要求に基づいて系切換を行うようにしたので、例えば、システムのソフトウェアのアップデートによるシステムの再起動時や、メモリリークなどを防止するために周期的にシステムを再起動する場合においても異常検出時と同様に系切換を行うことができる。
また、実施の形態1の高可用性システムによれば、運用系の起動手段は、待機系の起動処理を行う際、運用系の通常動作を優先して行うようにしたので、待機系の起動処理による運用系の影響を小さくすることができる。
また、実施の形態1の高可用性システムによれば、待機系の起動手段は、待機系の起動処理を行う際、運用系の通常動作を優先して行うようにしたので、待機系の起動処理による運用系の影響を小さくすることができる。
実施の形態2.
図13はこの発明の実施の形態2における高可用性システムのハードウェア構成およびソフトウェア構成を含む構成図である。図13は、4個のCPU101a〜101c,201を搭載するシステムを例に、システム系A100aに3個のCPU101a〜101c、システム系B200aに1個のCPU201を割り当てた構成の例を表わしている。
すなわち、実施の形態2は、運用系と待機系とでCPU101a〜101c,201の分割比率を不均一として、CPUの分割比率が高い系を運用系とし、運用系の異常による系切換が発生した場合は再起動を行って、その再起動完了後、再度CPUの分割比率の高い系を運用系とする系切換を行うようにしたものである。
図13において、基本的な構成については、CPUの分割比率以外は実施の形態1と同様であるため、対応する部分には同一符号または添字(a)を付与する。CPUの分割比率が不均一であるため、アプリケーションプログラム104a,204aの比率が異なる以外は実施の形態1の構成と同様である。
次に、実施の形態2の高可用性システムの動作について説明する。
2重系システムの起動方法、障害の検出方法、系の切換方法、系の再起動、IOアクセススケジューリング方法、2重系システムの終了については実施の形態1と同様であるため、ここでの説明は省略する。
系の分割方法が不均等であり、システム系A100aとシステム系B200aはCPU個数が異なるため、処理能力が異なる。そのため、システム系A100aとシステム系B200aとで動作させるアプリケーションプログラム104a,204aに制限をかけて動作させる。例えば、CPUが3個のシステム系A100aでは、アプリケーションプログラム104aは全アプリケーションを動作させる。CPUが1個のシステム系B200aでは、アプリケーションプログラム204aはシステムを動作させるために必要最低限のアプリケーションのみ動作させる。システム系A100aで動作継続が不可能な障害発生時や系切換えが必要な状況において、システム系B200aでシステムに必要な最低限のアプリケーション204aを動作させつつ、システム系A100aを再起動させる。システム系A100aが再起動完了後、システム系A100aへ再度処理を切換え、全アプリケーションを動作させる。
なお、上記例ではCPU数を3:1としたが、この値に限定されるものではなく、CPU数が3個以上のマルチコアプロセッサにおいてCPU数を不均等に分割して2重系を構築するものであればどのような分割であってもよい。また、上記例では、OS102,202が搭載されたシステムで実施の形態を説明したが、OS102,202を搭載しないシステムにおいても適用が可能である。
以上説明したように、実施の形態2の高可用性システムによれば、運用系と待機系とで複数のCPUの分割比率を不均一として、CPUの分割比率が高い系を運用系とし、運用系の異常による系切換が発生した場合は再起動を行い、再起動完了後、再度CPUの分割比率の高い系を運用系とする系切換を行うようにしたので、待機系となる系ではOSと最低限のアプリケーションが動作可能なリソースを確保すればよく、完全2重化の構成に比べ、より小さなリソースで多重系システムを構築することができる。
実施の形態3.
実施の形態3における図面上の構成は図1と同様であるため、図1を用いて説明する。図1の構成において、運用系として動作しているシステム系A100で系切換えが必要な事象が発生した場合、待機系として動作しているシステム系B200へ切換え、IOデバイス1の初期化を行う。この時、システム系A100で発生した系切換えが必要になった要因をCPU間通信と共有メモリ33を使用してシステム系B200へ通知する。システム系B200では系切換えの要因に応じて初期化が必要なIOデバイス1の初期化(図2におけるステップST5)のみ行い、系切換えの要因と関連なく、正常に動作していたIOデバイス1は切換ったシステム系B200で引き継いで動作を行う。即ち、実施の形態3の系切換手段は、系の切換要因に従い、初期化を行う必要のない周辺ハードウェアは切換前の状態を継続して使用し、その周辺ハードウェアは初期化を行わない。
以上説明したように、実施の形態3の高可用性システムによれば、系切換手段は、系の切換要因に従い、初期化を行う必要のない周辺ハードウェアは切換前の状態を継続して使用し、その周辺ハードウェアを初期化の対象から除くようにしたので、系切換えの要因の影響を受けないIOデバイス情報は引き継いで使用することで、必要なIOデバイスの初期化のみ実施すればよく、初期化時間の短縮が可能になり、切換った系の起動時間を短縮することができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
1 IOデバイス、2 不揮発メモリ、3 メモリ、31 系A用メモリ、32 系B用メモリ、33 共有メモリ、4 通信路、100,100a システム系A、101,101a,101b,101c,201 CPU、102,202 OS、103,203 CPU間通信部、104,104a,204,204a アプリケーションプログラム、105,205 異常検出処理部、106,206 IOアクセス制御部、107,207 IOアクセススケジューリング部。

Claims (6)

  1. 複数の演算CPUを有するマルチコアプロセッサと、前記複数の演算CPUが共通して用いる周辺ハードウェアとを搭載した装置を用いた高可用性システムであって、
    前記複数の演算CPUを運用系と待機系に分割して多重系システムを構築すると共に、前記周辺ハードウェアは、前記運用系と前記待機系のそれぞれの起動情報を格納するための起動情報格納部を有し、
    前記運用系と前記待機系のそれぞれは、
    前記起動情報に従って前記運用系と前記待機系とを運用可能状態とする起動手段と、
    前記運用系の稼働状態の監視を行い、当該運用系の異常を検出する異常検出手段と、
    前記運用系の異常が検出された場合は、前記待機系を前記運用系として系切換を行うと共に、前記起動情報を当該系切換に対応して更新する系切換手段と、
    前記運用系から前記待機系に切換った場合に、前記待機系としての再起動を行う再起動手段とを備え、
    前記待機系は運用可能状態の後にスリープ状態に移行し、かつ、当該スリープ状態移行後、周期的に前記異常検出手段が起動し監視を行い、
    前記運用系の前記異常検出手段は、系内監視を行うことで、前記運用系の稼働状態の監視を行い、
    前記待機系の前記異常検出手段は、前記演算CPU間の通信を利用した系間監視を行うことで、前記運用系の稼働状態の監視を行う
    ことを特徴とする高可用性システム。
  2. 前記系切換手段は、前記異常が検出された場合以外に、所定の系切換要求に基づいて系切換を行うことを特徴とする請求項1記載の高可用性システム。
  3. 前記運用系の前記起動手段は、前記待機系の起動処理を行う際、前記運用系の通常動作を優先することを特徴とする請求項1または請求項2記載の高可用性システム。
  4. 前記待機系の前記起動手段は、当該待機系の起動処理を行う際、前記運用系の通常動作を優先することを特徴とする請求項1から請求項3のうちのいずれか1項記載の高可用性システム。
  5. 前記運用系と前記待機系とで前記複数のCPUの分割比率を不均一として、CPUの分割比率が高い系を前記運用系とし、当該運用系の異常による系切換が発生した場合は前記再起動を行い、当該再起動完了後、再度前記CPUの分割比率の高い系を運用系とする系切換を行うことを特徴とする請求項1から請求項4のうちのいずれか1項記載の高可用性システム。
  6. 前記系切換手段は、系の切換要因に従い、初期化を行う必要のない周辺ハードウェアは切換前の状態を継続して使用し、当該周辺ハードウェアを初期化の対象から除くことを特徴とする請求項1から請求項5のうちのいずれか1項記載の高可用性システム。
JP2013043108A 2013-03-05 2013-03-05 高可用性システム Expired - Fee Related JP6278602B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013043108A JP6278602B2 (ja) 2013-03-05 2013-03-05 高可用性システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013043108A JP6278602B2 (ja) 2013-03-05 2013-03-05 高可用性システム

Publications (2)

Publication Number Publication Date
JP2014170477A JP2014170477A (ja) 2014-09-18
JP6278602B2 true JP6278602B2 (ja) 2018-02-14

Family

ID=51692812

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013043108A Expired - Fee Related JP6278602B2 (ja) 2013-03-05 2013-03-05 高可用性システム

Country Status (1)

Country Link
JP (1) JP6278602B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6468079B2 (ja) 2015-06-01 2019-02-13 富士通株式会社 制御システム及び同システムの処理方法
WO2017170674A1 (ja) * 2016-03-31 2017-10-05 セイコーエプソン株式会社 原料供給装置、原料供給装置の原料供給方法、シート製造装置
JP6623191B2 (ja) * 2017-03-28 2019-12-18 日立オートモティブシステムズ株式会社 車載用制御装置
CN110399145A (zh) * 2018-04-24 2019-11-01 宏碁股份有限公司 电脑系统、其更新方法及电脑程序产品
JP6925570B1 (ja) * 2020-09-25 2021-08-25 三菱電機株式会社 冗長化システム、制御方法及びプログラムセット
WO2023281766A1 (ja) * 2021-07-09 2023-01-12 株式会社デンソー 自動車用コンピュータの制御方法、及び車両用電子制御装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2785992B2 (ja) * 1990-02-13 1998-08-13 富士通株式会社 サーバプログラムの管理処理方式
JPH04239831A (ja) * 1991-01-24 1992-08-27 Okayama Nippon Denki Software Kk 相互プロセッサバックアップ方式
JPH04268643A (ja) * 1991-02-22 1992-09-24 Nec Corp 情報処理システム
JPH07219799A (ja) * 1993-12-09 1995-08-18 Mitsubishi Electric Corp 待機冗長システムおよび状態遷移順序決定方法
JP2830857B2 (ja) * 1996-09-09 1998-12-02 三菱電機株式会社 データストレージシステム及びデータストレージ管理方法
JP2007257259A (ja) * 2006-03-23 2007-10-04 Nec Corp 情報処理装置、記憶領域クリーンアップ方法およびプログラム
JP2008077388A (ja) * 2006-09-21 2008-04-03 Nec Corp マルチプロセッサ制御システム、方法、およびプログラム

Also Published As

Publication number Publication date
JP2014170477A (ja) 2014-09-18

Similar Documents

Publication Publication Date Title
JP6278602B2 (ja) 高可用性システム
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
US8321693B2 (en) Parallel processing method and system, for instance for supporting embedded cluster platforms, computer program product therefor
JP4938080B2 (ja) マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路
JP6438353B2 (ja) 半導体装置及び診断テスト方法
TWI390410B (zh) 不須執行電力開啟自我測試之操作系統傳送及啟動
US7721148B2 (en) Method and apparatus for redirection of machine check interrupts in multithreaded systems
JP6089349B2 (ja) マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム
JP2007299404A (ja) 高速ブートウェークアップを実行するシステム
CN111095205A (zh) 用于片上系统的预启动环境的多核框架
JP2008293245A (ja) フェイルオーバ方法、計算機システム、管理サーバ及び予備サーバの設定方法
US20190332425A1 (en) Multithread framework for use in pre-boot environment of a system-on-chip
US9311142B2 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
CN101876926A (zh) 一种非对称结构的软件三机热备容错方法
WO2008101386A1 (fr) Procédé de récupération d'une exception à noyau unique dans un système à plusieurs noyaux
JP2007334403A (ja) 計算機システム障害対応方式及び計算機システム障害対応方法
US8108719B2 (en) Information processing device and failure concealing method therefor
JP5035227B2 (ja) 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム
US9880888B2 (en) Executing an operating system in a multiprocessor computer system
US8522060B2 (en) Computer system, method for controlling the same, and program
JP3690666B2 (ja) マルチコンピュータシステム
US20130305251A1 (en) Scheduling method and scheduling system
JP5970846B2 (ja) 計算機システム及び計算機システムの制御方法
JP6459298B2 (ja) 情報処理システムおよびその制御方法およびその制御プログラム
JP5502789B2 (ja) マルチプロセッサ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170620

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170810

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180116

R150 Certificate of patent or registration of utility model

Ref document number: 6278602

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees