(57)【特許請求の範囲】
【請求項１】
複数のディスク・コントローラを有するコンピュータ・ディスク・ストレージ制御システムのための障害検出システムであって、
（ａ）それぞれのディスク・コントローラ上にあり、それぞれが他のディスク・コントローラに対してリアルタイムにミラーリングされるメモリと、
（ｂ）少なくとも、前記複数のディスク・コントローラのうちの第１のディスク・コントローラのメモリ・リフレッシュ・サイクルが起こった時に、該第１のディスク・コントローラによって、該第１のディスク・コントローラのミラーリングされたメモリのアクセス状態を識別する第１の状態遷移信号を、該複数のディスク・コントローラのうちの第２のディスク・コントローラに送出する手段と、
（ｃ）前記第１のディスク・コントローラから前記第２のディスク・コントローラへの前記第１の状態遷移信号の送出と同時に、予め決められた期間の計時を開始する手段と、
（ｄ）（ｉ）前記第１の状態遷移信号に応答して、前記第２のディスク・コントローラから前記第１のディスク・コントローラに送出される第２の状態遷移信号であって、該第２のディスク・コントローラのミラーリングされたメモリへのアクセスを該第１のディスク・コントローラに対して許可する状態または該第２のディスク・コントローラの障害を識別する第２の状態遷移信号、および（ii）前記第２のディスク・コントローラの障害を示す前記期間の終了、のうちの一方を検知する手段と、
を備える、障害検出システム。
【請求項２】
前記第１の状態遷移信号は、それぞれのディスク・コントローラの前記ミラーリングされたメモリへのアクセスの要求を示す信号である、請求項１に記載の障害検出システム。
【請求項３】
さらに、メモリ・アクセス・サイクルが起こった時に、前記第１の状態遷移信号を送出する手段を備える、請求項１に記載の障害検出システム。
【請求項４】
前記第２の状態遷移信号は、前記第１のディスク・コントローラに対する、前記第２のディスク・コントローラの前記ミラーリングされたメモリへのアクセスの許可を示す信号であり、これにより、前記第２のディスク・コントローラは、該ミラーリングされたメモリへのアクセスを拒絶される、請求項１に記載の障害検出システム。
【請求項５】
前記第２の状態遷移信号は、送出された前記第１の状態遷移信号の応答として前記第１のディスク・コントローラが期待していたものに対し不当な状態遷移信号であり、該不当な状態遷移信号によって、前記第２のディスク・コントローラの障害が、前記第１のディスク・コントローラによって検出される、請求項１に記載の障害検出システム。
【請求項６】
前記第２のディスク・コントローラが前記第１の状態遷移信号を検知した時に、前記第２の状態遷移信号は、前記第２のディスク・コントローラから前記第１のディスク・コントローラに送出される、請求項１に記載の障害検出システム。
【請求項７】
前記第１または第２の状態遷移信号を送出するディスク・コントローラをローカル・コントローラとし、該第１または第２の状態遷移信号を受信するディスク・コントローラを遠隔コントローラとすると、該ローカル・コントローラの前記ミラーリングされたメモリのアクセス状態は、
（１）前記遠隔コントローラのメモリへのアクセスが許可されないスレーブ状態、
（２）前記遠隔コントローラのメモリへのアクセスを要求する状態、
（３）前記遠隔コントローラのメモリへのアクセスが許可されるマスタ状態、
（４）前記遠隔コントローラに対し、前記ローカル・コントローラのメモリへのアクセスを許可する状態、
（５）前記遠隔コントローラによる前記ローカル・コントローラのメモリへのアクセスを、許可することができない障害状態、
（６）前記ローカル・コントローラの回路をリセットする状態、
（７）前記ローカル・コントローラの回路を、前記遠隔コントローラと再度同期させる状態、
（８）前記遠隔コントローラから、前記ローカル・コントローラの通信を分離する状態、
からなるグループのいずれかの状態をとり、
前記第１のディスク・コントローラが前記ローカル・コントローラである時、前記送出する手段において送出される前記第１の状態遷移信号は、前記（２）の状態を表し、前記第２のディスク・コントローラが前記ローカル・コントローラである時、前記検知する手段の前記第２の状態遷移信号は、前記（４）または（５）の状態を表す、
請求項１に記載の障害検出システム。
【請求項８】
さらに、前記ディスク・コントローラのそれぞれに制御手段を含み、該制御手段は、該制御手段が置かれたディスク・コントローラの前記ミラーリングされたメモリへのアクセスを制御し、該制御は、生成された前記状態遷移信号に基づく、請求項１に記載の障害検出システム。
【請求項９】
前記制御手段は、メモリアドレスおよびデータ信号の流れる向きををイネーブルし、ディスエーブルし、および選択するメモリコントローラ、バッファ、およびトランシーバを含む、請求項８に記載の障害検出システム。
【請求項１０】
第１および第２のディスク・コントローラを有し、該第１および第２のディスク・コントローラの間でリアルタイムのミラーリングされたメモリを実現するコンピュータ・ディスク・ストレージ制御システムにおいて、メモリ・システムの障害を検出する方法であって、
（ａ）少なくとも、前記第１のディスク・コントローラのメモリ・リフレッシュ・サイクルが起こった時に、該第１のディスク・コントローラが、前記第２のディスク・コントローラに、第１の状態遷移信号を送出するステップであって、該第１の状態遷移信号は、該第１のディスク・コントローラのミラーリングされたメモリのアクセス状態を識別する、ステップと、
（ｂ）前記第１のディスク・コントローラが、前記第１の状態遷移信号の送出と同時にタイマを起動し、予め決められた期間を計時するステップと、
（ｃ）前記第１のディスク・コントローラが、（ｉ）前記第１の状態遷移信号に応答して、前記第２のディスク・コントローラから該第１のディスク・コントローラに送出される第２の状態遷移信号であって、該第２のディスク・コントローラのミラーリングされたメモリへのアクセスを該第１のディスク・コントローラに対して許可する状態または該第２のディスク・コントローラの障害を識別する第２の状態遷移信号、および（ii）前記第２のディスク・コントローラのメモリ・システムの障害を示す前記期間の終了、のいずれか一方を検知するステップと、
を含む、メモリ・システムの障害を検出する方法。
【請求項１１】
前記第１の状態遷移信号は、前記ミラーリングされたメモリへのアクセスの要求を示す、請求項１０に記載の方法。
【請求項１２】
前記第１の状態遷移信号は、メモリ・アクセス・サイクルが起こった時に送出される、請求項１０に記載の方法。
【請求項１３】
前記第２の状態遷移信号は、前記第１のディスク・コントローラに対し、前記第２のディスク・コントローラの前記ミラーリングされたメモリへのアクセスを許可し、これにより、前記第２のディスク・コントローラは、該ミラーリングされたメモリへのアクセスを拒絶される、請求項１０に記載の方法。
【請求項１４】
前記第２の状態遷移信号は、前記送出された第１の状態遷移信号の応答として前記第１のディスク・コントローラが期待していたものに対して不当な状態遷移信号であり、該不当な状態遷移信号により、前記第２のディスク・コントローラのメモリ・システムの障害が該第１のディスク・コントローラによって検出される、請求項１０に記載の方法。
【請求項１５】
前記第２の状態遷移信号は、前記第２のディスク・コントローラが前記第１の状態遷移信号を検知した時に送出される、請求項１０に記載の方法。
【請求項１６】
前記第１または第２の状態遷移信号を送出するディスク・コントローラをローカル・コントローラとし、該第１または第２の状態遷移信号を受信するディスク・コントローラを遠隔コントローラとすると、該ローカル・コントローラの前記ミラーリングされたメモリのアクセス状態は、
（１）前記遠隔コントローラのメモリへのアクセスが許可されないスレーブ状態、
（２）前記遠隔コントローラのメモリへのアクセスを要求する状態、
（３）前記遠隔コントローラのメモリへのアクセスが許可されるマスタ状態、
（４）前記遠隔コントローラに対し、前記ローカル・コントローラのメモリへのアクセスを許可する状態、
（５）前記遠隔コントローラによる前記ローカル・コントローラのメモリへのアクセスを、許可することができない障害状態、
（６）前記ローカル・コントローラの回路をリセットする状態、
（７）前記ローカル・コントローラの回路を、前記遠隔コントローラと再度同期させる状態、
（８）前記遠隔コントローラから、前記ローカル・コントローラの通信を分離する状態、
からなるグループのいずれかの状態をとり、
前記第１のディスク・コントローラが前記ローカル・コントローラである時、前記ステップ（ａ）において送出される前記第１の状態遷移信号は、前記（２）の状態を表し、前記第２のディスク・コントローラが前記ローカル・コントローラである時、前記検知するステップ（ｃ）の前記第２の状態遷移信号は、前記（４）または（５）の状態を表す、
請求項１０に記載の方法。
【請求項１７】
前記ミラーリングされたメモリが置かれたディスク・コントローラによる該メモリへのアクセスを、生成された前記状態遷移信号に基づいて制御するステップをさらに含む、請求項１０に記載の方法。
【請求項１８】
アクセスを制御する前記ステップは、メモリアドレスおよびデータ信号の流れる向きをイネーブルし、ディスエーブルし、および選択するために、メモリコントローラ、バッファ、およびトランシーバに信号を送ることを含む、請求項１７に記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は広義にはコンピュータ・ディスク・ストレージ・コントローラに関し、より詳細にはミラーリングされたメモリを使用する複数のコントローラを有するディスク・ストレージ・システムにおけるコントローラの障害を検出するシステムと方法に関する。
【０００２】
【従来技術及びその問題点】
高信頼性コンピュータ・ディスク・ストレージ・システムの分野において、サブシステムを構成する物理的部品のすべてに冗長性を持たせて部品の障害の際のデータの損失やダウンタイムを低減することが望ましい。夫々がメモリを有するデュアル・ディスク・ストレージ・コントローラを用いると、いくつかの大きな利点がディスク・ストレージ・システムにもたらされる。例えば、（１）記憶情報の冗長性を維持することで、あるコントローラあるいはそのメモリの障害あるいは損失が起こった場合の復旧が可能である；（２）副コントローラの障害時代替(failover)機能によって、動作しなくなったコントローラからの回復が可能になる；（３）副コントローラが使用できることによって、システム稼動時間を長くすることができる。
【０００３】
このような冗長サブシステムの性能を向上させるために、キャッシングを行うこと及びメモリを一時記憶として使用することが一般的になっている。これらの二重になった物理的メモリを同期させることは困難な場合がある。ディスク・システムのなかには潜在化(latent)（延期されたあるいは大量の更新）処理を用いてこの複製を作成するものがあるが、この方法では性能が低下しがちであり、また複雑で管理が困難である。他の方法（本発明で用いるもの）はリアルタイムにミラーリング・メモリ処理を行なってこの複製データを作成し、正確に維持する方法である。二重化されたコントローラにリアルタイムで同期した冗長メモリ（ミラーリングされたメモリ）を用いると、あるコントローラから他方のコントローラへの障害時代替の際の速度と精度を向上させることができる。
【０００４】
しかし、冗長メモリを使用すると、複数のディスク・ストレージ・コントローラを使うという構成を提供するのが非常に困難になるという問題点がある。重大な問題としては、例えば、以下の事項をどのようにして効率的かつ高い信頼度で達成するかということがある：
（１）ミラーリングされたメモリ処理の過程でのコントローラの障害を早期に検出して、障害の発見が遅れた場合に発生する潜在的な問題を低減すること；
（２）甚だしいハードウエア及び／またはソフトウエア・オーバヘッドを必要としないで、コントローラの障害を検出すること；
（３）処理動作と処理能力を失うことなく、コントローラの障害を検出してコントローラを切り離し、それらのメモリのミラーリングを中止させること。
【０００５】
【目的】
複数のコントローラを持つディスク・ストレージ・システムにおけるコントローラ障害の検出にかかわる上に述べた問題点と、ここには挙げなかった他の問題点のために、従来技術においては、複数コントローラ・システムでのコントローラ間のミラーリングは通常は教示されてきてはいなかった。
従って、本発明の目的は二重化されたコントローラを持つディスク・ストレージ・システムのリアルタイム同期を行うミラーリングされたメモリ・コントローラのための有効で信頼性の高いコントローラ障害検出システムを提供することである。
【０００６】
【概要】
本発明の一実施例における本発明の原理によれば、二重化されたコントローラとミラーリングされたメモリを有するディスク・ストレージ・システムにおいて、夫々のコントローラに関係付けられたアービトレーション論理が状態遷移信号を生成して、その信号の発生しているコントローラのミラーリングされたメモリのアクセス状態の識別を行う。夫々のアービトレーション論理はまた他方のアービトレーション論理の状態遷移信号をモニタする。ミラーリングされたメモリ・システムにおける二重化されたコントローラ間の障害は、一方のコントローラが他方のコントローラから伝達された異常な状態遷移信号を検出することによって検出される。また、障害は一方のコントローラがある指定タイムアウト期間内に他方のコントローラからの状態遷移信号を検出しなかった場合にも検出される。
【０００７】
本発明の他の原理によれば、メモリ・リフレッシュ・サイクルを傍受してアービトレーション論理に状態遷移信号を反復出力させ、それによって各コントローラにミラーリングされたメモリ・アクセスを通常通りに行なわせ、メモリ・システムの障害を検出できるようにする。従って、マスタ／スレーブ動作をしているスレーブ・コントローラのようにコントローラのメモリ・アクセスが頻繁には行なわれない場合、リフレッシュ時にコントローラ間でのメモリ・アクセスのアービトレーションが一定して行なわれるため、メモリ・システムの障害を比較的早期に検出することができる。
【０００８】
本発明の障害検出システムとその方法によれば、コントローラとミラーリングされたメモリの信頼性を高めることができる。本発明の他の目的、利点、及び能力については以下の説明から明らかになるであろう。
【０００９】
【実施例】
図１は二重化されたコントローラを有するディスク・ストレージ・システム10におけるミラーリングされたメモリのシステム・コントローラ障害を検出するための本発明のシステムの概観を示すブロック図である。ディスク・ストレージ制御システム10は、ディスク・ストレージ装置12を有するディスク・ストレージ・サブシステム15と二重化されたディスク・ストレージ・コントローラ20、25を含んでいる。コントローラ20及び25は夫々のメモリ30、35を有する。
【００１０】
メモリ30、35としてはほとんど全てのタイプのランダム・アクセス・メモリ（RAM）を使用することができるが、本実施例では停電時のデータの保持を可能にするために不揮発性RAM（あるいは電源バックアップを用いて不揮発性にした揮発性RAM）を用いる。さらに、ここでは二重化されたコントローラ20、25のみを図示及び説明するが、ここに説明する原理は他の複数のコントローラ環境すなわち３つ以上のコントローラがある場合にも適用できることは明らかであろう。
【００１１】
メモリ30、35は夫々ミラーリングされたメモリである。当該技術分野にで周知の通り、ミラーリングされたメモリとは簡単にいえば１つのメモリのデータが他方のメモリ内に複製すなわち“反映”されることを意味する。本実施例では、ミラーリングされたメモリとは、一方のコントローラのメモリ内のデータが他方のコントローラのメモリ内に複製すなわち“反映”されることを意味する。
【００１２】
二重化されたコントローラが用いられ、またその夫々がミラーリングされたメモリを有することによって、ディスク・ストレージ・システム10に障害に強い環境を提供することができる。すなわち、一方のコントローラが障害を起こした場合、あるいはコントローラ・メモリ・システムの一方が障害を起こした場合、他方のコントローラとそのミラーリングされたメモリがあることによって、切れ目のない障害時代替による連続処理が可能になる。コントローラ20とコントローラ25の間の通信によって低コストなリアルタイム・リンクが提供され、夫々のコントローラは他方のコントローラの状態をモニタし、協調動作行うことができる。
【００１３】
本実施例では、ミラーリングされたメモリはリアルタイム・ミラーリングされたメモリである。すなわち、単一のマイクロプロセッサあるいはダイレクト・メモリ・アクセス機構によって、メモリ30及び35のデータの更新や読出しが実質的に同時に行なわれる。アービトレーション論理40及び45が、夫々のコントローラがデータの更新あるいは読出しを行うためのミラーリングされたメモリへのアクセスをいつ許可するかを制御する。アービトレーション論理40、45は互いに通信することによって、どのコントローラがメモリに対する現在のアクセスを行っているのかを各アービトレーション論理が知ることができる。夫々のアービトレーション論理は状態遷移信号を生成して、その信号を生成するコントローラのミラーリングされたメモリ・アクセス状態を識別する。また、夫々のアービトレーション論理は他方のアービトレーション論理の状態遷移信号をモニタする。従って、ミラーリングされたメモリ・システムにおける二重化されたコントローラ間の障害は、一方のコントローラが他方のコントローラからの異常な状態遷移信号を検出するか、あるいは一方のコントローラが指定されたタイムアウト期間内に他方のコントローラからの状態遷移信号を検出しなかった場合に検出される。
【００１４】
本実施例では、アービトレーション論理40、45はまた一度に１つのコントローラにのみメモリへのアクセスを許可する。例えば、コントローラ20がメモリ30へのアクセスを許可されたとき、コントローラ20は同様にメモリ35へのアクセスも許され、コントローラ25はいずれのメモリへのアクセスも許されない。アービトレーション論理40、45は互いに通信して夫々のコントローラ内の適当な信号線をイネーブル及び／またはディスエーブルすることによって同時アクセスを制御する。
【００１５】
二重化されたコントローラ構成の主要な目的の１つが、一方のコントローラが障害を起こした際に一方のコントローラから他方のコントローラにただちに障害時代替を行なえるようにすることであるとすれば、動作の中断が起こらないように、コントローラの障害時代替が発生する前の夫々のコントローラのメモリ内容が同一であってことが必須である。同様に、コントローラの障害が処理過程の早い段階で検出されて、システ無道さが継続できるようにするため、以降のメモリの複製を防止しまた少なくとも障害の起こっていないコントローラのメモリのデータの完全性が維持できるようにすることが不可欠である。従って、本発明はコントローラ20とコントローラ25の間で通信を行ないミラーリングされたメモリ・アクセス状態を制御するためにアービトレーション論理40、45を鍵となる構成要素として用いてことによって、複数コントローラ構成におけるコントローラの障害を早期に検出することに焦点を当てている。
【００１６】
図２は本発明の一実施例のシステムの、より詳細なブロック図である。各図面間で同一である構成要素は同一の参照符号を用いて示す。従って、図２では、コントローラ20、25は全体的なものとして参照され、ミラーリングされたメモリ30、35は夫々好適な実施例で使用される不揮発性DRAM（NVDRAM)として参照され、アービトレーション論理40、45は図１に示すものと同様に参照される。NVDRAMコントローラ50、55をここでは簡単にDRAMコントローラと呼ぶ。矢印はすべて通信及び／またはデータ転送の径路を指す。
【００１７】
DRAMコントローラ50、55は自分の持っている回路を制御するためであり、また例えばメモリ・リフレッシュ要求の開始といった目的のための内部クロック（図示せず）を有する。同様に、アービトレーション論理40、45は夫々自分自信の内部クロックを有し、これにより一方のアービトレーション論理から他方のアービトレーション論理に状態遷移信号が送られる際の応答タイムアウトを検出できるようになっている。図１を参照して前述したように、アービトレーション論理40、45はメモリ30及び35へのアクセスをどのコントローラに許すかを制御し、またどのコントローラに対してこのようなアクセスをできないようにするかを制御する。従って、アービトレーション論理40、45は状態遷移信号を介して相互に通信し、更には、各アービトレーション論理はDRAMコントローラ50、55、バッファ60、65、制御トランシーバ70、75及びデータ・トランシーバ80、85を含むあるローカル・メモリ・システム制御手段と通信する。
【００１８】
当該技術分野で通常行なわれるように、DRAMコントローラ50、55は、DRAM30、35内の適当なアドレスにアクセスするための行アドレス・ストローブ（RAS）、列アドレス・ストローブ（CAS）、書込みイネーブル（WE）、出力イネーブル（OE）その他のタイミング信号及び制御論理信号を管理・生成する。バッファ60、65は、夫々DRAM30、35へのアクセスに関してDRAMコントローラ50、55をイネーブル及び／またはディスエーブルするためのDRAMコントローラ・バッファである。
【００１９】
制御トランシーバ70、75はローカル・コントローラ（すなわちそのトランシーバが設けられたコントローラ）のための双方向トランシーバ・バッファである。その機能は：
（１）他方の（遠隔の）コントローラのメモリにアクセスするためにコンピュータ・システムのバックプレーン78にアドレス信号を送る；あるいは
（２）ローカル・コントローラのメモリにアクセスするためにバックプレーンを介してこの遠隔のコントローラからのアドレス信号を受信する；
ことである。
同様に、データ・トランシーバ80、85はローカル・コントローラのための双方向トランシーバであり、その機能は
（１）データ信号を遠隔のコントローラに送るためにバックプレーン78に送る；あるいは
（２）バックプレーンを介して遠隔のコントローラからのデータ信号を受信する；
ことである。
【００２０】
DRAMコントローラ50、55は夫々各DRAM自身の持つ独立して動作するクロック・タイマによって決められるリフレッシュ間隔でメモリ（DRAM30、35）をリフレッシュするように構成されている。このようなメモリ・リフレッシュ・サイクルは、夫々のアービトレーション論理に状態遷移信号を反復させて夫々のコントローラにミラーリングされたメモリ・アクセス、すなわちローカル・コントローラ及び遠隔コントローラ中にあるメモリへのアクセスを確実に一貫した態様で行わせ、これによりメモリ・システムの障害を検出できるようにする手段として用いられる。このシステムと方法によって、マスタ／マスタ（対等な関係）あるいはマスタ／スレーブといった、二重化されたコントローラ同士の関係がどのようなものであっても、高信頼度が得られる。特に、マスタ／スレーブ・コントローラ関係においてはこれは特に有益である。それは、スレーブ・コントローラはミラーリングされたメモリにアクセスする頻度が低く、従って損害の発生する可能性のある後の時点までスレーブ・コントローラが遠隔コントローラの障害を検出できないかもしれないからである。
【００２１】
DRAMコントローラ50あるいは55からメモリ・アクセス・サイクル（読出し、書込みあるいはリフレッシュ）発生の信号が出されると、この信号はそのローカルなアービトレーション論理40あるいは45に送られる。このローカル・コントローラが現在ミラーリングされたメモリ・アクセスを行っていない場合、ローカル・アービトレーション論理は他方の（遠隔の）コントローラにミラーリングされたメモリ・アクセスを要求する状態遷移信号を送る。この状態遷移信号はこの信号を送っている（ローカルな）コントローラのミラーリングされたメモリ・アクセス状態を識別する。例えば、この例でいえば、メモリ・アクセスを要求する状態遷移信号が遠隔のアービトレーション論理に送られる。これに応答して、現在ミラーリングされたメモリ・アクセスを行う遠隔コントローラは、それを要求する状態遷移信号を検出し、この要求を出したコントローラに対してミラーリングされたメモリへのアクセスを許可する応答状態遷移信号を返す。この応答状態遷移信号は、遠隔コントローラがその要求を受けたときそれ自体のミラーリングされたメモリ・アクセスを行なっていた場合には、このアクセスを完了した後に発生する。
【００２２】
ローカル・アービトレーション論理はメモリ要求を送った後、ただちにそのタイマを起動してタイムアウト期間を計時する。遠隔コントローラが予め定められた期間、すなわちタイムアウト期間、のうちに応答しない場合、ローカル・コントローラは遠隔コントローラのメモリ・システムに障害が発生したものと認識する。
【００２３】
遠隔コントローラメモリ・システムの障害はまた、ローカル・コントローラが遠隔コントローラから送られた状態遷移信号に異常を検出したときにも検出される。例えば、ローカル・コントローラがミラーリングされたメモリへのアクセスを許可する状態遷移信号を受け取るものと期待していたときに、遠隔コントローラから他のなんらかの状態遷移信号を受け取ると、ローカル・コントローラは遠隔コントローラのメモリ・システムに障害が発生したものと認識する。
【００２４】
これらの状態遷移信号とタイムアウト期間を用いて、夫々のコントローラは以下のことを行う：
（１）自己のミラーリングされたメモリ・アクセス状態の送出；
（２）他方のコントローラの状態の検出；及び／または
（３）適当な状態信号が送られてきたか否かの検出。
さらに、メモリ・リフレッシュ・サイクルを傍受して、状態遷移信号を任意に反復させてミラーリングされたメモリが周期的にアクセスされるようにし、それによってメモリ・システム内の障害検出のための一貫しておりかつ信頼度の高い手段が与えられる。
【００２５】
図２の動作は図３に示す例によって最もわかりやすく説明することができる。図３は図２と同じであるが、図２の双方向の矢印が図３ではコントローラ20によるミラーリングされたメモリのリフレッシュ中の実際の通信パスを示す一方向の矢印に置き換えられている点だけが違う。このような図面及び説明はメモリ・リフレッシュ・サイクル中にアービトレーション論理によって生成される状態遷移信号の例として挙げたのだが、このような状態遷移信号は読出しや書込みといった他のメモリ・アクセス・トランザクション中にも発生するということが理解できるだろう。
【００２６】
コントローラ20がメモリ・リフレッシュ要求を開始する際には、DRAMコントローラ50は自己のアービトレーション論理40に対して要求信号を発する。コントローラ20がすでにミラーリングされたメモリへのアクセスを行っていなければ、アービトレーション論理40は『要求』状態に入り、このような状態遷移信号をコントローラ25のアービトレーション論理45に送る。『要求』状態とは、（この例では）遠隔のアービトレーション論理45がコントローラ20に遠隔のDRAM35へのアクセスを許可するのをローカル・アービトレーション論理40が待っている状態を指す。
【００２７】
アービトレーション論理45がアービトレーション論理40から送られた『要求』状態遷移信号を検出した際にDRAMコントローラ55がミラーリングされたメモリにアクセス中であった場合、DRAMコントローラ55はそのメモリを使用する（読出し、書込みあるいはリフレッシュ）サイクルを完了し、アービトレーション論理45に対する自己の『要求』を解除する。すると、アービトレーション論理45はアービトレーション論理40に対するメモリ・アクセスを許可する状態遷移信号を送り、それに続いて『スレーブ』状態に入る。『スレーブ』状態に入ると、アービトレーション論理45は（バッファ65から出る矢印がないことでわかるように）DRAMコントローラ・バッファ65をディスエーブルする。アービトレーション論理45はまた、（矢印73、77で示すように）バックプレーン78からのアドレス信号をDRAM35に送るように制御トランシーバ75を設定する。
【００２８】
アービトレーション論理40は『マスタ』状態に入ることによってこれを認識する。この『マスタ』状態ではコントローラ20はメモリ30及び35の両方にアクセスすることができる。アービトレーション論理40は（矢印62で示すように）そのローカルDRAMコントローラ・バッファ60をイネーブルし、制御トランシーバ70を（矢印73に示すように）コントローラ20からバックプレーン78を駆動するように設定する。
【００２９】
次に、DRAMコントローラ50はCAS及びRASを発して（矢印64で示すように）自己のDRAM30にアクセスするとともに制御トランシーバ70、75を介してCAS及びRASを発して（矢印66、73及び77に示すように）コントローラ20のDRAM35にアクセスすることによって、DRAMリフレッシュ・サイクルを実行する。従って、DRAM30及び35は実質的に同時にリフレッシュされる。
【００３０】
図４にはマスタ／スレーブ関係にある夫々のコントローラのメモリ・アクセス状態を反映したアービトレーション論理状態遷移図を示す。前述したように、アービトレーション論理40及び45（図１ないし図３）は状態遷移信号の送出と検出によってメモリ30及び35のミラーリング動作を制御する。また、アービトレーション論理はメモリ・システムに接続されたすべてのバッファ及びトランシーバの出力のイネーブルと方向の選択を制御する。従って、一度に１つのコントローラだけが、DRAMのローカルバンクと遠隔バンクの両方にアクセスすることを許可される。アービトレーション論理がメモリ・リフレッシュ・サイクルあるいは他の何らかの読出し／書込み動作中等の際の適切な一連の遷移状態を一回りするまで、他方のコントローラはいずれのメモリにもアクセスすることができない。アービトレーション論理がそのさまざまな状態を経ていくに当たって、このアービトレーション論理は現在の状態を遠隔コントローラに送り、同様に遠隔のアービトレーション論理の状態遷移信号をモニタする。これによって何れのアービトレーション論理も他方の障害を検出することができる。
【００３１】
さまざまな遷移状態が存在でき、また図４中にその全てを示すものではない、ということがわかるだろう。しかし、本実施例に用いられ図４に示したさまざまな状態のいくつかを次に示す。
【００３２】
『リセット』：コントローラ基板上のリセット・ラインに信号が出ているとき、アービトレーション論理は『リセット』状態90にある。この状態では、ローカル・制御トランシーバ及びデータ・バックプレーン・トランシーバ（図２の70、75、80及び85）はローカルDRAMコントローラと同様にディスエーブルされる。リセットが解除されると、アービトレーション論理はスレーブ状態に入る。
【００３３】
『スレーブ』：『スレーブ』状態95では、ローカル制御バックプレーン・トランシーバはローカルDRAMを志向し、ローカルDRAMコントローラ・バッファ（60あるいは65）がディスエーブルされる。実行されている動作（読出しあるいは書込み）に応じてローカル・データ・バックプレーン・トランシーバが設定される。ローカルDRAMコントローラからのメモリ・アクセス要求はローカル・アービトレーション論理が受け取り、このローカル・アービトレーション論理は『要求』状態に入って、メモリへのアクセスができるようになる。
【００３４】
『要求』：ローカル・アービトレーション論理タイマは、『要求』状態100になったそのはじめに起動される。この状態では、『要求』状態遷移信号が遠隔アービトレーション論理に送られ、ローカル・アービトレーション論理は遠隔アービトレーション論理がローカル・コントローラに対して遠隔DRAMへのアクセスを許可するまで待つ。ローカル・バックプレーン・トランシーバ及びDRAMコントローラは『スレーブ』状態の場合と同じに設定される。遠隔アービトレーション論理によって遠隔DRAMへのアクセスが許可される前にタイマからタイムアウト期間を示す信号が発せられると、ローカル・アービトレーション論理は『障害』状態に入る。アクセスが認められると、ローカル・アービトレーション論理は『マスタ』状態に入る。
【００３５】
『マスタ』：『マスタ』状態105では、DRAM30、35の両方のバンクへのアクセスが許可される。ローカル制御バックプレーン・トランシーバは遠隔基板を志向し、ローカルDRAMコントローラ・バッファ（60あるいは65）がイネーブルされる。データ・バックプレーン・トランシーバは実行されている動作（読出しあるいは書込み）に応じて設定される。アービトレーション論理は、遠隔基板からの『要求』が検出され、かつローカルDRAMコントローラからの要求線上の信号が落とされるまでこの状態にとどまる。遠隔コントローラがスレーブ状態になった後にこの『マスタ』状態に入る。
【００３６】
『許可』：ローカル・アービトレーション論理は、遠隔コントローラがミラー・インターフェースを要求していることをこのローカル・アービトレーション論理が検出したとき『許可』状態110になる。ローカル・アービトレーション論理は、ローカルDRAMコントローラがその現在のメモリ・アクセスを完了してその要求線上の信号を落とすまで、この状態で待機する。
【００３７】
『障害』：以下に示す場合に障害状態115に入る：
（１）バスを使用することが、ローカル・アービトレーション論理のクロックによってモニタされるタイムアウト期間内に許可されないとき；あるいは
（２）遠隔コントローラ上で異常な遷移状態が検出されたとき。
アービトレーション論理は、ローカル・コントローラがリセットされるまでこの状態にとどまってその後『リセット』状態に入るか、あるいは遠隔アービトレーション論理が『リセット』状態に入りるまでこの状態に留まり、その後『再同期』状態に入る。この『障害』状態では、両方のバックプレーン・トランシーバがディスエーブルされ、DRAMコントローラ・バッファがイネーブルされる。
【００３８】
『再同期』：遠隔アービトレーション論理がリセット状態に入ったことをローカル・アービトレーション論理が検出したとき、『再同期』状態120に入る。この状態に入った際には必ずタイマが起動される。アービトレーション論理は、遠隔アービトレーション論理がリセット状態から脱するか、あるいはタイムアウト期間が終了するまで、この状態にとどまる。タイムアウト期間の終了の場合は、『障害』状態になる。タイムアウト期間が終了する前に遠隔コントローラがリセット状態を脱すると、『スレーブ』状態になる。この状態では、両方のバックプレーン・トランシーバがディスエーブルされ、DRAMコントローラ・バッファがイネーブルされる。
【００３９】
『単一』：第２のコントローラの存在が検出されない、あるいはコントローラが“分離モード”すなわち非メモリ・ミラーリング状態にあるとき、『単一』状態125になる。アービトレーション論理は、これら２つの条件の一方が成立するかあるいはコントローラ・リセットが検出されるまでこの状態にとどまる。いずれの場合にも、次の状態は『リセット』状態である。この状態では、両方のバックプレーン・トランシーバがディスエーブルされ、DRAMコントローラ・バッファがイネーブルされる。
【００４０】
その間でミラーリングされているメモリを有する二重化されたコントローラ・データ記憶システムにおけるコントローラ障害を検出するためのシステムと方法の実施例を説明した。本発明はコントローラ間の低コストのリアルタイム・リンクを提供する強力なツールを提示し、夫々のコントローラが他方のコントローラをモニタできるようにし、障害を検出すべく夫々のコントローラの動作を協調させることができるようにする、ということは明らかである。さらに、当業者には、本発明は本技術分野の既存のさまざまなハードウエア及びソフトウエア・ツールの任意のものを用いて簡単に実施することができることは明らかであろう。本発明を具体的な実施例を用いて説明したが、本発明の精神と範囲から逸脱することなく、別の実施態様や実施あるいは変形の手法を用いることができることは明らかであろう。
【００４１】
以下に本発明の実施の態様の例を列挙する。
【００４２】
［実施態様１］以下の(a)ないし(c)を設け、夫々が他の各々のコントローラについて実質的にミラーリングしたメモリを有する複数のコントローラを有するコンピュータ・ディスク・ストレージ制御システムのための障害検出システム：
（a）前記複数のコントローラのうちの第１のコントローラによる第１の状態遷移信号を、前記複数のコントローラのうちの第２のコントローラに送出する手段：前記第１の状態遷移信号は前記第１のコントローラのミラーリングされたメモリ・アクセス状態を識別する；
（b）前記第１の状態遷移信号の送出と実質的に同時に始まる予め定められた期間を計時する手段；
（c）以下の(i)と(ii)の何れかを検出する手段：
（i）前記第２のコントローラから送られる第２の状態遷移信号：前記第２の状態遷移信号は、前記第２のコントローラのミラーリングされたメモリのアクセス状態を識別する；
（ii）前記期間の終了：前記期間の終了は前記第２のコントローラの障害を表す。
【００４３】
［実施態様２］前記第１の状態遷移信号は、夫々のコントローラのミラーリングされたメモリへのアクセスの要求を表わす信号であることを特徴とする実施態様１記載の障害検出システム。
【００４４】
［実施態様３］メモリ・アクセス・サイクルが起こったときに前記第１の状態遷移信号を送出する手段を有することを特徴とする実施態様１記載の障害検出システム。
【００４５】
［実施態様４］前記第２の状態遷移信号はミラーリングされたメモリへのアクセスを前記第１のコントローラに許可することを表わす信号であり、これによって前記第２のコントローラは前記ミラーリングされたメモリへのアクセスを拒絶される
ことを特徴とする実施態様１記載の障害検出システム。
【００４６】
［実施態様５］前記第２の状態遷移信号は不当な状態遷移信号であり、
前記不当な状態遷移信号によって、前記第１のコントローラが前記第２のコントローラの障害を検出する
ことを特徴とする実施態様１記載の障害検出システム。
【００４７】
［実施態様６］以下の(a)ないし(c)のステップを設け、第１及び第２のディスク・コントローラ及び前記第１と第２のディスク・コントローラ間でミラーリングされたメモリを有するコンピュータ・ディスク・ストレージ制御システムにおけるメモリ・システム障害を検出する方法：
（a）前記第１のコントローラから前記第２のコントローラに第１の状態遷移信号を送るステップ：前記第１の状態遷移信号は、前記第１のコントローラのミラーリングされたメモリへのアクセス状態を識別する；
（b）前記第１のコントローラが前記第１の状態遷移信号の送出と実質的に同時にタイマを起動して予め定められた期間を計時するステップ；
（c）前記第１のコントローラが以下の(i)と(ii)の何れかを検出するステップ：
（i）前記第２のコントローラから送られる第２の状態遷移信号：前記第２の状態遷移信号は、前記第２のコントローラのミラーリングされたメモリへのアクセス状態を識別する；
（ii）前記期間の終了：前記期間の終了は前記第２のコントローラのメモリ・システムの障害を表わす。
【００４８】
［実施態様７］前記第１の状態遷移信号は前記ミラーリングされたメモリへのアクセスの要求を表わすことを特徴とする実施態様６記載の方法。
【００４９】
［実施態様８］前記第１の状態遷移信号はメモリ・アクセス・サイクルが起こった際に送出されることを特徴とする実施態様６記載の方法。
【００５０】
［実施態様９］前記第２の状態遷移信号は前記ミラーリングされたメモリへのアクセスを前記第１のコントローラに許可し、これによって前記第２のコントローラは前記ミラーリングされたメモリへのアクセスを拒絶される
ことを特徴とする実施態様６記載の方法。
【００５１】
［実施態様１０］前記第２の状態遷移信号は不当な状態遷移信号であり、
前記不当な状態遷移信号によって、前記第１のコントローラが前記第２のコントローラのメモリ・システムの障害を検出する
ことを特徴とする実施態様６記載の方法。
【００５２】
【効果】
以上詳細に説明したように、本発明によれば、複数のディスク・コントローラを有し、またキャッシング等に使用するメモリを各コントローラが持つとともに、これらのメモリの内容を互いに一致させておく（ミラーリング）ディスク・ストレージ・システムにおいて、コントローラ同士が監視し合うことによって、コントローラの障害をハードウエア／ソフトウエア上の負担をほとんど増大させることなく早期に検出できる。これにより、障害の発生時には不良コントローラの切離し、代替処理がすばやくできるので、データ破壊の防止やシステムの可用性の増大を図ることができる。
【図面の簡単な説明】
【図１】本発明の一実施例の概略ブロック図。
【図２】本発明の一実施例のより詳しいブロック図。
【図３】本発明の一実施例中のデータの流れを示すブロック図。
【図４】本発明の一実施例における状態遷移図。
【符号の説明】
10：ディスク・ストレージ・システム
12：ディスク・ストレージ装置
15：ディスク・ストレージ・サブシステム
20, 25：ディスク・ストレージ・コントローラ
30, 35：メモリ
40, 45：アービトレーション論理
50, 55：DRAMコントローラ
60, 65：バッファ
70, 75：制御トランシーバ
78：バックプレーン
80, 85：データ・トランシーバ
90：『リセット』状態
95：『スレーブ』状態
100：『要求』状態
105：『マスタ』状態
110：『許可』状態
115：『障害』状態
120：『再同期』状態
125：『単一』状態
【図１】
0003655683.tif 000002
【図２】
0003655683.tif 000003
【図３】
0003655683.tif 000004
【図４】
0003655683.tif 000005