(57)【要約】【課題】多重化されたストレージ制御装置の一部に障害が発生してもさらなる障害に対する信頼性および可用性を維持するストレージ制御装置を提供すること。【解決手段】１つ以上の記憶装置２に対するデータの入出力を制御する複数のコントローラ４ａおよび４ｂを備え、コントローラ４は、揮発性メモリ４１と、不揮発性メモリ４２と、他のコントローラ４に発生する障害を検出する障害検出部４３と、外部に接続されたホスト装置５からデータの入出力要求を受信してデータを揮発性メモリ４１に格納し、障害検出部４３によって障害が検出されないとき、コントローラ４ａの揮発性メモリ４１およびコントローラ４ｂの揮発性メモリ４１を冗長化し、障害検出部４３によって障害が検出されたとき、障害が発生していないコントローラ４の揮発性メモリ４１および不揮発性メモリ４２を冗長化する入出力処理部４４と、を有する。【選択図】      図１
2011170589.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の記憶装置に対するデータの入出力を制御する複数のコントローラを備え、
前記コントローラは、
揮発性メモリと、
不揮発性メモリと、
他の前記コントローラに発生する障害を検出する障害検出部と、
外部に接続されたホスト装置から前記データの入出力要求を受信して前記データを前記揮発性メモリに格納し、前記障害検出部によって前記障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する他の揮発性メモリを冗長化し、前記障害検出部によって前記障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する入出力処理部と、
を有するストレージ制御装置。
【請求項２】
前記入出力処理部は、前記揮発性メモリを前記他の揮発性メモリおよび前記不揮発性メモリのいずれかと冗長化した後、前記入出力処理の完了を表す情報を前記ホスト装置に送信することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記入出力処理部は、前記障害検出部によって前記障害が検出されないとき、前記揮発性メモリの容量が不足した場合は、前記データを前記不揮発性メモリに格納することを特徴とする請求項１または請求項２に記載のストレージ制御装置。
【請求項４】
前記入出力処理部は、前記障害検出部によって前記障害が検出されたとき、前記不揮発性メモリの一部を用いて前記揮発性メモリを冗長化し、他の一部を前記揮発性メモリの容量を超えたデータを格納する領域として用いることを特徴とする請求項３に記載のストレージ制御装置。
【請求項５】
前記入出力処理部は、前記障害検出部によって前記障害が検出されたとき、前記不揮発性メモリの空き領域が、前記揮発性メモリの冗長化に必要な容量に不足していれば、前記不揮発性メモリに格納されたデータの一部を前記記憶装置に書き込んで前記不揮発性メモリから消去して前記必要な容量を確保した後、前記揮発性メモリを前記不揮発性メモリ内の空き領域を用いて冗長化することを特徴とする請求項３または請求項４に記載のストレージ制御装置。
【請求項６】
前記障害検出部は、前記障害の復旧を検出し、
前記入出力処理部は、前記障害の復旧を検出すると、前記不揮発性メモリ内で冗長化に使用された領域を初期化することを特徴とする請求項３から請求項５のいずれかに記載のストレージ制御装置。
【請求項７】
データを記憶する１つ以上の記憶装置と、
前記記憶装置に対する前記データの入出力を制御する複数のコントローラを有するストレージ制御装置と、を備え、
前記コントローラは、
揮発性メモリと、
不揮発性メモリと、
他の前記コントローラに発生する障害を検出する障害検出部と、
外部に接続されたホスト装置から前記データの入出力要求を受信して前記データを前記揮発性メモリに格納し、前記障害検出部によって前記障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する他の揮発性メモリを冗長化し、前記障害検出部によって前記障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する入出力処理部と、
を有するストレージ装置。
【請求項８】
前記入出力処理部は、前記揮発性メモリを前記他の揮発性メモリおよび前記不揮発性メモリのいずれかと冗長化した後、前記入出力処理の完了を表す情報を前記ホスト装置に送信することを特徴とする請求項７に記載のストレージ装置。
【請求項９】
１つ以上の記憶装置に対するデータの入出力を制御するストレージ制御装置に備えられた複数のコントローラの一方が、
外部に接続されたホスト装置から前記データの入出力要求を受信する入出力要求受信ステップと、
前記データを前記揮発性メモリに格納する揮発性メモリ格納ステップと、
他の前記コントローラに発生する障害を検出する障害検出ステップと、
前記障害検出ステップで前記他のコントローラに障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する他の揮発性メモリを冗長化する揮発性メモリ冗長化ステップと、
前記障害検出ステップで前記他のコントローラに障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する不揮発性メモリ冗長化ステップと、
を実行するストレージ制御方法。
【請求項１０】
前記一方のコントローラが、
前記揮発性メモリ冗長化ステップおよび前記不揮発性メモリ冗長化ステップのいずれかを実行後に入出力処理の完了を表す情報を前記ホスト装置に送信する完了送信ステップを、さらに実行することを特徴とする請求項９に記載のストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重化されたストレージ制御装置、これを備えたストレージ装置およびストレージ制御方法に関する。
【背景技術】
【０００２】
一般に、ストレージ装置は、複数の記憶装置と、これらの記憶装置を論理的に１つまたは複数のボリュームとして論理ボリュームに対するデータの入出力を制御するストレージ制御装置とを備え、ホスト装置に接続されている。
【０００３】
このようなストレージ制御装置は、キャッシュメモリを有し、ホスト装置から受信した入出力要求に従って対象データを一時的にキャッシュメモリに格納する。このとき、キャッシュメモリが揮発性メモリで構成される場合、ストレージ制御装置に障害が発生すると、キャッシュメモリに格納され記憶装置に格納されていないデータが消失する可能性がある。このため、ストレージ制御装置を多重化したものが知られている。
【０００４】
例えば、特許文献１に記載されたストレージ制御装置は、複数の揮発性メモリおよび複数の不揮発性メモリを備え、入出力対象データを複数の揮発性メモリに格納し、さらに複数の不揮発性メモリに格納した後、一部の揮発性メモリに格納した入出力対象データを消去する。このストレージ制御装置は、一部の揮発性メモリに障害が発生した場合には、入出力対象データを、障害が起きていない揮発性メモリおよび複数の不揮発性メモリに格納する。
【０００５】
また、例えば、特許文献２に記載されたストレージ制御装置は、揮発性メモリおよび不揮発性メモリを有するキャッシュ機構を二重化し、揮発性メモリには、ホスト装置から受信する入出力対象データおよび記憶装置から読み出したデータを格納し、不揮発性メモリには記憶装置から読み出したデータのみを格納する。このストレージ制御装置は、電源遮断障害が起きると、揮発性メモリに格納されたデータのうち記憶装置に格納されたデータと整合性がないデータを不揮発性メモリにバックアップする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２１７５２７号公報
【特許文献２】特開２００８−２７６６４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載されたストレージ制御装置は、一部の揮発性メモリに障害が発生した場合に、入出力対象データをバックアップするが、揮発性メモリに既に格納されているデータをバックアップしていない。このため、特許文献１に記載されたストレージ制御装置は、一部の揮発性メモリに障害が発生している状態では、さらなる障害に対して、揮発性メモリを障害発生前の状態に復旧させるのに処理時間を要してしまう。
【０００８】
また、特許文献２に記載されたストレージ制御装置は、揮発性メモリに格納されたデータを不揮発性メモリに転送するのは、電源遮断障害が起きてからである。このため、特許文献２に記載されたストレージ制御装置は、一部のキャッシュ機構に障害が発生し障害が発生していないキャッシュ機構によって動作を継続している状態では、揮発性メモリ内のデータがバックアップされておらず、さらなる障害に対して揮発性メモリ内のデータの信頼性が低下してしまう。
【０００９】
このように、特許文献１および特許文献２に記載されたものは、多重化されたストレージ制御装置の一部に障害が発生した際にさらなる障害に対する信頼性および可用性が低下してしまうという課題があった。
【００１０】
本発明は、上述の課題を解決するためになされたもので、多重化されたストレージ制御装置の一部に障害が発生してもさらなる障害に対する信頼性および可用性を維持することができるストレージ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のストレージ制御装置は、１つ以上の記憶装置に対するデータの入出力を制御する複数のコントローラを備え、前記コントローラは、揮発性メモリと、不揮発性メモリと、他の前記コントローラに発生する障害を検出する障害検出部と、外部に接続されたホスト装置から前記データの入出力要求を受信して前記データを前記揮発性メモリに格納し、前記障害検出部によって前記障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する他の揮発性メモリを冗長化し、前記障害検出部によって前記障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する入出力処理部と、を有する。
【００１２】
また、本発明のストレージ装置は、データを記憶する１つ以上の記憶装置と、前記記憶装置に対する前記データの入出力を制御する複数のコントローラを有するストレージ制御装置と、を備え、前記コントローラは、揮発性メモリと、不揮発性メモリと、他の前記コントローラに発生する障害を検出する障害検出部と、外部に接続されたホスト装置から前記データの入出力要求を受信して前記データを前記揮発性メモリに格納し、前記障害検出部によって前記障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する他の揮発性メモリを冗長化し、前記障害検出部によって前記障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する入出力処理部と、を有する。
【００１３】
また、本発明のストレージ制御方法は、１つ以上の記憶装置に対するデータの入出力を制御するストレージ制御装置に備えられた複数のコントローラの一方が、外部に接続されたホスト装置から前記データの入出力要求を受信する入出力要求受信ステップと、前記データを前記揮発性メモリに格納する揮発性メモリ格納ステップと、他の前記コントローラに発生する障害を検出する障害検出ステップと、前記障害検出ステップで前記他のコントローラに障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する他の揮発性メモリを冗長化する揮発性メモリ冗長化ステップと、前記障害検出ステップで前記他のコントローラに障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する不揮発性メモリ冗長化ステップと、を実行する。
【００１４】
また、本発明のストレージ制御プログラムは、１つ以上の記憶装置に対するデータの入出力を制御するストレージ制御装置に備えられた複数のコントローラの一方に、外部に接続されたホスト装置から前記データの入出力要求を受信する入出力要求受信ステップと、前記データを前記揮発性メモリに格納する揮発性メモリ格納ステップと、他の前記コントローラに発生する障害を検出する障害検出ステップと、前記障害検出ステップで前記他のコントローラに障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する他の揮発性メモリを冗長化する揮発性メモリ冗長化ステップと、前記障害検出ステップで前記他のコントローラに障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する不揮発性メモリ冗長化ステップと、を実行させる。
【発明の効果】
【００１５】
多重化されたストレージ制御装置の一部に障害が発生してもさらなる障害に対する信頼性および可用性を維持するストレージ制御装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態としてのストレージ装置のブロック図である。
【図２】本発明の第１の実施の形態としてのストレージ装置の動作を説明するフローチャートである。
【図３】本発明の第２の実施の形態としてのストレージ装置のブロック図である。
【図４】本発明の第２の実施の形態としてのストレージ装置の障害監視動作を説明するフローチャートである。
【図５】本発明の第２の実施の形態としてのストレージ装置の入出力処理動作を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１８】
まず、本発明の第１の実施の形態としてのストレージ装置１の構成を、図１を用いて説明する。
【００１９】
図１において、ストレージ装置１は、１つ以上の記憶装置２と、ストレージ制御装置３とを備え、ホスト装置５に接続されている。
【００２０】
記憶装置２は、複数の記憶装置２によって１つ以上の論理的なボリュームをホスト装置５に提供し、ホスト装置５によって入出力されるデータを格納する。例えば、記憶装置２は、ハードディスクドライブ、ＤＶＤ（Digital Versatile Disc）ドライブ、磁気テープドライブ、または、フラッシュメモリデバイス等、ホスト装置５によって処理されるデータを格納可能な装置、または、これらの組合せによって構成される。
【００２１】
なお、図１には、３つの記憶装置２を示しているが、本発明のストレージ装置が備える記憶装置の数を限定するものではない。
【００２２】
ホスト装置５は、記憶装置２から読み出したデータを処理し、処理したデータを記憶装置２に格納する。例えば、ホスト装置５は、コンピュータ装置であってもよく、他のストレージ装置であってもよい。
【００２３】
ホスト装置５およびストレージ装置１は通信可能に接続されている。例えば、ホスト装置５およびストレージ装置１は、ＬＡＮ（Local Area Network）、インターネット、専用回線、ＳＡＮ（Storage Area Network）等のネットワーク、または、これらの組合せによって接続される。
【００２４】
ストレージ制御装置３は、記憶装置２に対するデータの入出力を制御するコントローラ４ａおよび４ｂ（以下、総称してコントローラ４ともいう）を有している。これらのコントローラ４ａおよび４ｂは、バスを介して互いに接続されている。また、コントローラ４は、記憶装置２に接続インタフェースを介して接続されている。
【００２５】
なお、図１において、２つのコントローラ４を示しているが、本発明のストレージ制御装置が備えるコントローラの数を限定するものではない。
【００２６】
コントローラ４は、揮発性メモリ４１と、不揮発性メモリ４２と、障害検出部４３と、入出力処理部４４とを備えている。
【００２７】
ここで、揮発性メモリ４１は例えばＤＲＡＭ（Dynamic Random Access Memory）によって構成される。また、不揮発性メモリ４２は例えばフラッシュメモリによって構成される。また、障害検出部４３および入出力処理部４４は、例えばマイクロプロセッサおよびローカルメモリによって構成され、ローカルメモリに記憶されたプログラムをマイクロプロセッサが読み込み、ローカルメモリの一部を作業領域として実行することにより機能する。また、障害検出部４３および入出力処理部４４は、その機能の一部または全体をハードウェア回路によって構成してもよい。
【００２８】
障害検出部４３は、他のコントローラ４の各部と通信することにより他のコントローラ４に障害が発生したことを検出する。
【００２９】
入出力処理部４４は、記憶装置２に対するデータの入出力要求をホスト装置５から受信し、入出力対象のデータを揮発性メモリ４１に格納する。
【００３０】
具体的には、入出力処理部４４は、記憶装置２に対するデータのライト要求をホスト装置５から受信すると、ライト対象データを揮発性メモリ４１に格納する。また、入出力処理部４４は、ライト対象データを揮発性メモリ４１に格納する動作とは非同期に、揮発性メモリ４１に格納したライト対象データを記憶装置２に転送する。
【００３１】
また、入出力処理部４４は、記憶装置２に格納されたデータのリード要求をホスト装置５から受信すると、リード対象データが揮発性メモリ４１に格納されていれば、揮発性メモリ４１からホスト装置５にリード対象データを転送する。また、入出力処理部４４は、リード対象データが揮発性メモリ４１に格納されていなければ、記憶装置２から読み込んで揮発性メモリ４１に格納し、ホスト装置５に転送する。
【００３２】
なお、入出力処理部４４は、リード対象データが揮発性メモリ４１に格納されていなければ、揮発性メモリ４１を介さずにリード対象データを記憶装置２から読み込んでホスト装置５に転送してもよい。
【００３３】
また、入出力処理部４４は、他のコントローラ４に障害が発生していなければ、揮発性メモリ４１および他のコントローラ４の揮発性メモリ４１を冗長化する。また、入出力処理部４４は、他のコントローラ４に障害が発生していれば、揮発性メモリ４１および不揮発性メモリ４２を冗長化する。
【００３４】
以上のように構成されたストレージ装置１の動作について、図２を用いて説明する。
【００３５】
まず、コントローラ４ａの入出力処理部４４によって、ホスト装置５からデータの入出力要求が受信される（ステップＳ１：入出力要求受信ステップ）。
【００３６】
次に、コントローラ４ａの入出力処理部４４によって、入出力対象のデータがコントローラ４ａの揮発性メモリ４１に格納される（ステップＳ２：揮発性メモリ格納ステップ）。
【００３７】
次に、コントローラ４ａの障害検出部４３によってコントローラ４ｂに障害が検出されたか否かが、コントローラ４ａの入出力処理部４４によって判断される（ステップＳ３：障害検出ステップ）。
【００３８】
ここで、コントローラ４ｂに障害が検出されていない場合、コントローラ４ａの入出力処理部４４によって、コントローラ４ａの揮発性メモリ４１およびコントローラ４ｂの揮発性メモリ４１が冗長化される（ステップＳ４：揮発性メモリ冗長化ステップ）。
【００３９】
一方、コントローラ４ｂに障害が検出されている場合、コントローラ４ａの入出力処理部４４によって、コントローラ４ａの揮発性メモリ４１および不揮発性メモリ４２が冗長化される（ステップＳ５：不揮発性メモリ冗長化ステップ）。
【００４０】
以上で、ストレージ装置１は動作を終了する。
【００４１】
なお、コントローラ４ｂがホスト装置５からデータの入出力要求を受信する場合の動作も、上述の説明において、コントローラ４ａを４ｂに、コントローラ４ｂを４ａに読み替えることにより同様に説明される。
【００４２】
次に、本発明の第１の実施の形態の効果について述べる。
【００４３】
本発明の第１の実施の形態としてのストレージ制御装置、これを備えたストレージ装置およびストレージ制御方法は、多重化されたストレージ制御装置の一部に障害が発生してもさらなる障害に対する信頼性および可用性を維持することができる。
【００４４】
その理由は、入出力処理部が、通常時は複数のコントローラがそれぞれ有する揮発性メモリを冗長化し、一部のコントローラに障害が発生した場合は障害が発生していないコントローラの揮発性メモリおよび不揮発性メモリを冗長化するので、一部のコントローラに障害が発生した場合にも通常時と同様に揮発性メモリ内のデータが冗長化されているからである。
【００４５】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００４６】
本発明の第２の実施の形態では、本発明のストレージ装置をディスクアレイ装置に適用した例について説明する。
【００４７】
まず、本発明の第２の実施の形態としてのディスクアレイ装置６の構成を、図３を用いて説明する。なお、図３において、本発明の第１の実施の形態としてのストレージ装置１と同一の構成については同一の符号を付して詳細な説明を省略する。
【００４８】
ディスクアレイ装置６は、複数のハードディスク７と、ストレージ制御装置８とを備え、本発明の第１の実施の形態としてのストレージ装置１と同様にホスト装置５に通信可能に接続されている。
【００４９】
複数のハードディスク７は、１つ以上のＲＡＩＤ（Redundant Arrays of Independent Disks）グループを構成し、ＲＡＩＤグループの記憶領域を論理ボリュームとしてホスト装置５に提供している。なお、図３には３つのハードディスク７を示しているが、本発明のストレージ装置が備える記憶装置の数を限定するものではない。
【００５０】
ストレージ制御装置８は、複数のハードディスク７をＲＡＩＤ構成で管理し、データの入出力を制御するコントローラ９ａおよび９ｂ（以下、総称してコントローラ９ともいう）を有している。
【００５１】
コントローラ９は、接続インタフェースを介してハードディスク７に接続されている。また、コントローラ９ａおよび９ｂは、バスを介して互いに接続されている。
【００５２】
なお、図３において、２つのコントローラ９を示しているが、本発明のストレージ装置が備えるコントローラの数を限定するものではない。
【００５３】
コントローラ９は、揮発性メモリ部９１と、不揮発性メモリ部９２と、障害検出部９３と、ＲＡＩＤ情報管理部９４と、メモリ管理部９５と、ディスク制御部９６とを備えている。また、揮発性メモリ部９１は、揮発性メモリ４１と、揮発性メモリ制御部９７とを有している。また、不揮発性メモリ部９２は、不揮発性メモリ４２と、不揮発性メモリ制御部９８とを有している。
【００５４】
ここで、ＲＡＩＤ情報管理部９４、メモリ管理部９５、ディスク制御部９６、揮発性メモリ制御部９７および不揮発性メモリ制御部９８は、本発明の入出力処理部の一実施形態を構成している。
【００５５】
また、障害検出部９３、ＲＡＩＤ情報管理部９４、メモリ管理部９５、ディスク制御部９６、揮発性メモリ制御部９７および不揮発性メモリ制御部９８は、それぞれマイクロプロセッサおよびローカルメモリを有し、ローカルメモリに記憶されたプログラムをマイクロプロセッサが読み込み、ローカルメモリの一部を作業領域として実行することにより機能する。また、これらの各部は、その機能の一部または全体をハードウェア回路によって構成してもよい。
【００５６】
揮発性メモリ制御部９７は、ＲＡＩＤ情報管理部９４の制御の基で、揮発性メモリ４１に対して、データの読み書き、消去、データ有無の判断、および、冗長化等の処理を行う。
【００５７】
不揮発性メモリ制御部９８は、ＲＡＩＤ情報管理部９４の制御の基で、不揮発性メモリ４２に対して、データの読み書き、消去、データ有無の判断、および、冗長化等の処理を行う。
【００５８】
また、不揮発性メモリ制御部９８は、不揮発性メモリ４２を、二次キャッシュモードおよび冗長化モードのいずかで制御する。二次キャッシュモードの場合、不揮発性メモリ制御部９８は、揮発性メモリ４１の容量を超えたライト対象データを不揮発性メモリ４２に格納する。冗長化モードの場合、不揮発性メモリ制御部９８は、揮発性メモリ４１内のライト対象データおよび管理データ等を不揮発性メモリ４２に書き込んで冗長化を行う。
【００５９】
障害検出部９３は、他のコントローラ９の各部と通信することにより他のコントローラ９に発生する障害を検出する。ここで、障害検出部９３が検出する障害には、図３に示す各部に発生する障害の他、各部に電源を供給する給電部（図示せず）の障害等も含まれる。
【００６０】
また、障害検出部９３は、他のコントローラ９に発生した障害の復旧を検出する。障害検出部９３は、他のコントローラ９における障害の発生および復旧を、ＲＡＩＤ情報管理部９４に通知する。
【００６１】
ＲＡＩＤ情報管理部９４は、ホスト装置５からハードディスク７に対するライト要求およびリード要求を受信し、要求を処理し、処理の完了をホスト装置５に送信する。
【００６２】
具体的には、ＲＡＩＤ情報管理部９４は、ホスト装置５からライト要求を受信した場合には、揮発性メモリ制御部９７にライト指示を発行し、揮発性メモリ４１にライト対象データを格納する。
【００６３】
また、ＲＡＩＤ情報管理部９４は、他のコントローラ９に障害が発生しているか否かに応じて、揮発性メモリ４１を、他のコントローラ９の揮発性メモリ４１または同一のコントローラ９内の不揮発性メモリ４２のいずれかと冗長化する。
【００６４】
また、ＲＡＩＤ情報管理部９４は、ライト対象データの一時格納および揮発性メモリ４１の冗長化を完了すると、ホスト装置５へライト処理の完了を送信する。
【００６５】
また、ＲＡＩＤ情報管理部９４は、ディスク制御部９６にライト指示を発行し、ライト処理とは非同期に、揮発性メモリ４１に格納したライト対象データをハードディスク７へ転送する。
【００６６】
また、ＲＡＩＤ情報管理部９４は、ライト対象データを格納する揮発性メモリ４１の空き領域が不足する場合、他のコントローラ９に障害が発生していなければ、不揮発性メモリ制御部９８にライト指示を発行し、不揮発性メモリ４２にライト対象データを格納する。
【００６７】
また、ＲＡＩＤ情報管理部９４は、ライト対象データを格納する揮発性メモリ４１の空き領域が不足する場合、他のコントローラ９に障害が発生していれば、ディスク制御部９６にライト指示を発行し、ライト対象データをハードディスク７に格納する。
【００６８】
また、ＲＡＩＤ情報管理部９４は、ホスト装置５からリード要求を受信した場合には、揮発性メモリ４１内にリード対象データが有るか否かを、揮発性メモリ制御部９７に問い合わせる。揮発性メモリ４１内にリード対象データが有れば、ＲＡＩＤ情報管理部９４は、揮発性メモリ４１からホスト装置５へリード対象データを転送する。そして、ＲＡＩＤ情報管理部９４は、ホスト装置５へリード処理の完了を送信する。
【００６９】
また、ＲＡＩＤ情報管理部９４は、揮発性メモリ４１内にリード対象データが無ければ、ディスク制御部９６にリード指示を発行し、ハードディスク７からホスト装置５へリード対象データを転送する。そして、ＲＡＩＤ情報管理部９４は、ホスト装置５へリード処理の完了を送信する。
【００７０】
メモリ管理部９５は、不揮発性メモリ４２を二次キャッシュモードおよび冗長化モードのいずれかのモードに変更する。
【００７１】
具体的には、メモリ管理部９５は、ＲＡＩＤ情報管理部９４を介して他のコントローラ９に発生する障害を検知すると、不揮発性メモリ４２を冗長化モードに変更する。また、メモリ管理部９５は、ＲＡＩＤ情報管理部９４を介して他のコントローラ９に発生した障害の復旧を検知すると、不揮発性メモリ４２を二次キャッシュモードに変更する。
【００７２】
ここで、メモリ管理部９５は、不揮発性メモリ４２が二次キャッシュモードであるか冗長化モードであるかを表すフラグをローカルメモリに格納するようにしてもよい。
【００７３】
また、メモリ管理部９５は、不揮発性メモリ４２を冗長化モードに変更する際、不揮発性メモリ４２内の未書き込みのデータをハードディスク７に書き込む。具体的には、メモリ管理部９５は、不揮発性メモリ４２に二次キャッシュモードで格納されたライト対象データのうちハードディスク７に未書き込みのデータがあれば、ディスク制御部９６に高速なライト指示を発行し、未書き込みのデータを不揮発性メモリ４２からハードディスク７へ転送する。その後、メモリ管理部９５は、不揮発性メモリ４２を冗長化モードに変更する。
【００７４】
なお、メモリ管理部９５は、不揮発性メモリ４２の容量が揮発性メモリ４１の容量より大きければ、不揮発性メモリ４２のうち、二次キャッシュモードに利用されていない空き領域を冗長化モードに変更し、残りの領域を引き続き二次キャッシュモードで管理してもよい。
【００７５】
この場合、メモリ管理部９５は、不揮発性メモリ４２の空き領域が揮発性メモリ４１の冗長化に必要な容量に足りなければ、必要な容量の空き領域が確保できるまで不揮発性メモリ４２内の未書き込みデータをハードディスク７に格納して不揮発性メモリ４２から消去してもよい。
【００７６】
ディスク制御部９６は、接続インタフェースを介してハードディスク７に接続され、ハードディスク７から、リード対象データの読み込みを実行する。また、ディスク制御部９６は、構成されているＲＡＩＤのレベルに応じて、必要であればライト対象データの冗長コードを生成し、ライト対象データおよび冗長コードを複数のハードディスク７に分散させて格納する。
【００７７】
以上のように構成されたディスクアレイ装置６におけるストレージ制御装置８の動作について、図４および図５を用いて説明する。
【００７８】
まず、ストレージ制御装置８のコントローラ９ａが、コントローラ９ｂに発生する障害を監視する動作を図４に示す。なお、コントローラ９ａは、図４に示す障害監視動作を定期的に実行する。
【００７９】
ここでは、まず、コントローラ９ａの障害検出部９３によってコントローラ９ｂに発生した障害が検出されると（ステップＳ１１でＹｅｓ）、コントローラ９ａのメモリ管理部９５によって、不揮発性メモリ４２の空き領域が揮発性メモリ４１の冗長化に必要な容量に不足しているか否かが判断される（ステップＳ１２）。
【００８０】
ここで、空き領域が不足していると判断されると、コントローラ９ａのメモリ管理部９５によって、ディスク制御部９６に高速なライト指示が発行される。
【００８１】
そして、コントローラ９ａのディスク制御部９６によって、不揮発性メモリ４２に格納されている未書き込みデータのハードディスク７へのライト処理が加速される（ステップＳ１３）。未書き込みデータのハードディスク７へのライト処理は、不揮発性メモリ４２の空き領域が揮発性メモリ４１の冗長化に必要な容量に足りるまで実行される。
【００８２】
一方、不揮発性メモリ４２の空き領域が足りていると判断されると、コントローラ９ａのメモリ管理部９５によって、不揮発性メモリ４２の空き領域が冗長化モードに変更される（ステップＳ１４）。
【００８３】
次に、コントローラ９ａの障害検出部９３によってコントローラ９ｂに発生した障害の復旧が検出されると（ステップＳ１５でＹｅｓ）、コントローラ９ａの不揮発性メモリ制御部９８によって、不揮発性メモリ４２の冗長化モードに使用された領域が初期化される（ステップＳ１６）。
【００８４】
次に、コントローラ９ａのメモリ管理部９５によって、不揮発性メモリ４２が二次キャッシュモードに変更される（ステップＳ１７）。
【００８５】
以上で、ストレージ制御装置８のコントローラ９ａは、コントローラ９ｂに発生する障害監視動作を終了する。
【００８６】
なお、コントローラ９ｂがコントローラ９ａに発生する障害を監視する動作についても、上述の説明においてコントローラ９ａを９ｂに、コントローラ９ｂを９ａに読み替えることにより同様に説明される。
【００８７】
次に、ストレージ制御装置８のコントローラ９ａがホスト装置５から受信する入出力要求を処理する動作について、図５を用いて説明する。
【００８８】
ここでは、まず、コントローラ９ａのＲＡＩＤ情報管理部９４によって、ホスト装置５から受信した入出力要求がライト要求であるかリード要求であるかが判断される（ステップＳ２１）。
【００８９】
ここで、リード要求を受信した場合、揮発性メモリ４１にリード対象データがあれば、ＲＡＩＤ情報管理部９４によって、このリード対象データがホスト装置５に送信される。また、揮発性メモリ４１にリード対象データがなければ、ＲＡＩＤ情報管理部９４によって、ディスク制御部９６を介してハードディスク７から読み込まれたリード対象データがホスト装置５に送信される（ステップＳ２２）。
【００９０】
一方、ライト要求を受信した場合、ＲＡＩＤ情報管理部９４によって、揮発性メモリ４１にライト対象データを格納する空き領域があるか否かが判断される（ステップＳ２３）。
【００９１】
ここで、揮発性メモリ４１に空き領域が不足していると判断された場合、ＲＡＩＤ情報管理部９４によって、不揮発性メモリ４２が二次キャッシュモードであるか冗長化モードであるかがメモリ管理部９５に問い合わせられる（ステップＳ２４）。
【００９２】
ここで、不揮発性メモリ４２が二次キャッシュモードである場合、ＲＡＩＤ情報管理部９４によって不揮発性メモリ制御部９８にライト指示が発行され、ライト対象データが不揮発性メモリ４２に格納される（ステップＳ２５）。
【００９３】
一方、不揮発性メモリ４２が冗長化モードである場合、ＲＡＩＤ情報管理部９４によってディスク制御部９６にライト指示が発行され、ライト対象データがハードディスク７に書き込まれる（ステップＳ２６）。
【００９４】
また、ステップＳ２３で、揮発性メモリ４１に空き領域があると判断された場合、ＲＡＩＤ情報管理部９４によって揮発性メモリ制御部９７にライト指示が発行され、ライト対象データが揮発性メモリ４１に格納される（ステップＳ２７）。
【００９５】
次に、ＲＡＩＤ情報管理部９４によって、不揮発性メモリ４２が冗長化モードであるか二次キャッシュモードであるかがメモリ管理部９５に問い合わせられる（ステップＳ２８）。
【００９６】
ここで、不揮発性メモリ４２が二次キャッシュモードである場合、コントローラ９ｂに障害が発生していないことになる。そこで、ＲＡＩＤ情報管理部９４を介して、コントローラ９ａおよび９ｂの各揮発性メモリ制御部９７間で通信が行われ、コントローラ９ａおよび９ｂの揮発性メモリ４１が冗長化される（ステップＳ２９）。
【００９７】
一方、不揮発性メモリ４２が冗長化モードである場合、コントローラ９ｂに障害が発生していることになる。そこで、ＲＡＩＤ情報管理部９４を介して、コントローラ９ａの揮発性メモリ制御部９７および不揮発性メモリ制御部９８間で通信が行われ、揮発性メモリ４１および不揮発性メモリ４２が冗長化される（ステップＳ３０）。
【００９８】
次に、ＲＡＩＤ情報管理部９４によって、ホスト装置５に入出力処理の完了を表す情報を送信する（ステップＳ３１）。
【００９９】
以上で、ストレージ制御装置８のコントローラ９ａは、入出力処理動作を終了する。
【０１００】
なお、コントローラ９ｂの入出力処理動作についても、上述の説明においてコントローラ９ａを９ｂに、コントローラ９ｂを９ａに読み替えることにより同様に説明される。
【０１０１】
次に、本発明の第２の実施の形態の効果について述べる。
【０１０２】
本発明の第２の実施の形態としてのストレージ制御装置、これを備えたストレージ装置およびストレージ制御方法は、多重化されたストレージ制御装置の一部に障害が発生した場合に、Ｉ／Ｏ処理性能の低下を防止することができる。
【０１０３】
その理由は、障害が発生していないコントローラが有する揮発性メモリおよび不揮発性メモリを冗長化した時点でホスト装置へ入出力情報の完了を通知するからである。すなわち、一部のコントローラに障害が発生している状況でも揮発性メモリの冗長化を行うことにより、さらなる障害の発生に対する信頼性および可用性が確保できるので、ハードディスクへの書き込み完了を待つことなくライトバック制御を実行できるからである。
【０１０４】
また、本発明の第２の実施の形態としてのストレージ制御装置、これを備えたストレージ装置およびストレージ制御方法は、障害が発生していないときの不揮発性メモリを有効に活用し、揮発性メモリへの負荷が高い場合にもＩ／Ｏ処理性能を維持することができる。
【０１０５】
その理由は、一部のコントローラに障害が発生していない場合には、不揮発性メモリを、揮発性メモリの容量を超えるデータを格納する二次キャッシュとして使用することにより、ホスト装置に対するライトバック制御を実行できるからである。
【０１０６】
また、本発明の第２の実施の形態としてのストレージ制御装置、これを備えたストレージ装置およびストレージ制御方法は、一部のコントローラに障害が発生し、障害が発生していないコントローラの揮発性メモリの負荷が高い場合にも、Ｉ／Ｏ処理性能を維持することができる。
【０１０７】
その理由は、不揮発性メモリの一部の領域を揮発性メモリの冗長化に用い、残りの領域を二次キャッシュとして用いることにより、一部のコントローラに障害が発生し障害が発生していないコントローラの揮発性メモリの負荷が高い場合にもライトバック制御を実行するからである。
【０１０８】
なお、上述の各実施の形態において、不揮発性メモリは、例えばＰＣＩ（Peripheral Components Interconnect）−Ｅｘｐｒｅｓｓインタフェース接続型のフラッシュメモリ等として取り外し可能に構成されてもよい。
【０１０９】
このように構成した本発明の各実施の形態としてのストレージ制御装置、これを備えたストレージ装置およびストレージ制御方法は、一部のコントローラに障害が発生した後、さらなる障害が発生して複数のコントローラを交換する場合に、障害復旧までの運用停止時間を短縮することができる。
【０１１０】
その理由は、取り外し可能な不揮発性メモリに揮発性メモリのデータを保持しているので、交換後のコントローラに交換前の不揮発性メモリを取り付けることにより、交換後のコントローラを障害発生前の状態に容易に復旧することができるからである。
【０１１１】
なお、上述した本発明の各実施の形態において、ストレージ制御装置の動作は、本発明のストレージ制御プログラムを構成するプログラムモジュールとして各コントローラのローカルメモリに格納されマイクロプロセッサによって実行されるようにしてもよい。
【０１１２】
また、上述した本発明の各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１１３】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
（付記１）
１つ以上の記憶装置に対するデータの入出力を制御するストレージ制御装置に備えられた複数のコントローラの一方に、
外部に接続されたホスト装置から前記データの入出力要求を受信する入出力要求受信ステップと、
前記データを前記揮発性メモリに格納する揮発性メモリ格納ステップと、
他の前記コントローラに発生する障害を検出する障害検出ステップと、
前記障害検出ステップで前記他のコントローラに障害が検出されないとき、前記揮発性メモリおよび前記他のコントローラが有する揮発性メモリを冗長化する揮発性メモリ冗長化ステップと、
前記障害検出ステップで前記他のコントローラに障害が検出されたとき、前記揮発性メモリおよび前記不揮発性メモリを冗長化する不揮発性メモリ冗長化ステップと、
を実行させるストレージ制御プログラム。
（付記２）
前記一方のコントローラに、
前記揮発性メモリ冗長化ステップおよび前記不揮発性メモリ冗長化ステップのいずれかを実行後に入出力処理の完了を表す情報を前記ホスト装置に送信する完了送信ステップを、さらに実行させることを特徴とする付記１に記載のストレージ制御プログラム。
【産業上の利用可能性】
【０１１４】
本発明は、多重化されたストレージ制御装置の一部に障害が発生してもさらなる障害に対する信頼性および可用性を維持することができるストレージ制御装置を提供することができ、障害が発生しても運用の継続が要求され、運用停止する場合でも停止時間をできるだけ短縮することが要求されるメインフレーム等に接続されるストレージ装置およびそのストレージ制御装置として好適である。
【符号の説明】
【０１１５】
１    ストレージ装置
２    記憶装置
３、８    ストレージ制御装置
４、９    コントローラ
５    ホスト装置
６    ディスクアレイ装置
７    ハードディスク
４１    揮発性メモリ
４２    不揮発性メモリ
４３    障害検出部
４４    入出力処理部
９１    揮発性メモリ部
９２    不揮発性メモリ部
９３    障害検出部
９４    ＲＡＩＤ情報管理部
９５    メモリ管理部
９６    ディスク制御部
９７    揮発性メモリ制御部
９８    不揮発性メモリ制御部
【図１】
2011170589.tif 000003
【図２】
2011170589.tif 000004
【図３】
2011170589.tif 000005
【図４】
2011170589.tif 000006
【図５】
2011170589.tif 000007