(57)【要約】【課題】ミラーディスク構成を有するディスクアレイ装置において異常なデータの復元を行うことができるディスクアレイ装置を提供すること。【解決手段】データを二重化して記憶するディスクアレイ部２０と、アクセスされたデータを書き込むキャッシュメモリと受け取ったコマンドに基づいて処理を行うコマンド処理実行部とを有する複数の中央処理部３２ａ〜３２ｄと、を備え、中央処理部３２ａは、エラーチェックによってプライマリディスク２１ａ上のデータが異常でセカンダリディスク２１ｅ上のデータが正常である場合にリカバリ処理が必要と判定し、ホストコンピュータ４０との入出力処理の終了後にキャッシュメモリ上のデータを他の中央処理部３２ｂのキャッシュメモリに二重化して、プライマリディスク２１ａとセカンダリディスク２１ｅに書き戻す処理を実行する。【選択図】        図１
2006134149.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する第１の磁気ディスク装置と、該第１の磁気ディスク装置に記憶されるデータを二重化する第２の磁気ディスク装置と、を有するディスクアレイ部と、
データ読み込み時に前記ディスクアレイ部の前記第１または前記第２の磁気ディスク装置から読み出したデータとデータ書き込み時に外部装置からのデータを書き込むローカルキャッシュ領域と、データ書き込み時に前記ローカルキャッシュ領域に書き込まれたデータを二重化するためのミラーキャッシュ領域とを有するキャッシュメモリと、前記外部装置からの最初のデータ読み込み命令の受け取り時に前記第１の磁気ディスク装置内の第１のデータを前記ローカルキャッシュ領域に展開し、再度のデータ読み込み命令の受け取り時に前記第２の磁気ディスク装置内の第２のデータを前記ローカルキャッシュ領域に展開するコマンド処理実行手段と、を有する複数の中央処理部と、
前記外部装置から書き込まれるデータに、エラーチェックを行うための検査情報を付加する検査情報付加手段と、
前記ローカルキャッシュ領域に展開されたデータのエラーチェックを前記検査情報を用いて行うエラーチェック手段と、
前記エラーチェック手段によって前記第１のデータが異常で前記第２のデータが正常であると判定された場合に、前記外部装置との入出力処理の終了後に前記第２のデータの書き戻し処理を行うように前記コマンド処理実行手段に指示するリカバリ処理実行判定手段と、
を備え、前記コマンド処理手段は、前記リカバリ処理実行判定手段からの指示により、前記ローカルキャッシュ領域の前記第２のデータを他の中央処理部のキャッシュメモリのミラーキャッシュ領域に二重化して、前記第１と前記第２の磁気ディスク装置に書き戻す処理を実行することを特徴とするディスクアレイ装置。
【請求項２】
データを二重化して記憶する第１と第２の磁気ディスク装置と、前記第１または前記第２の磁気ディスク装置へのアクセス時にデータを格納する第１のキャッシュ部と、前記第１のキャッシュ部に書き込まれた外部からのデータを二重化する第２のキャッシュ部と、を備えるディスクアレイ装置におけるデータのリカバリ方法であって、
ディスクアレイ装置に接続される外部装置からのデータ読込命令に基づいて前記第１の磁気ディスク装置から前記第１のキャッシュ部に書き込んだ第１のデータが異常である場合に、再度の前記外部装置からのデータ読み込み命令を受けて前記第２の磁気ディスク装置から前記第１のキャッシュ部に第２のデータを書き込む第１の工程と、
前記第２のデータのエラーチェックを行う第２の工程と、
エラーチェックによって正常なデータであると判定された場合に、前記第２のデータを前記外部装置に送信するとともに、前記第１のキャッシュ部に書き込まれた前記第１のデータを第２のキャッシュ部に二重化する第３の工程と、
前記第１と前記第２のキャッシュ部に書き込まれた前記第２のデータをそれぞれ前記第１と前記第２の磁気ディスク装置に書き戻す第４の工程と、
を含むことを特徴とするデータのリカバリ方法。
【請求項３】
データを二重化して記憶する第１と第２の磁気ディスク装置と、前記第１または前記第２の磁気ディスク装置へのアクセス時にデータを格納する第１のキャッシュ部と、前記第１のキャッシュ部に書き込まれた外部からのデータを二重化する第２のキャッシュ部と、データの読み出しまたは書き込みの処理を制御するディスクアレイ制御部と、を備えるディスクアレイ装置に用いられるデータリカバリプログラムであって、
前記ディスクアレイ制御部に、
ディスクアレイ装置に接続される外部装置からのデータの読込命令を受け取り、第１の磁気ディスク装置から第１のキャッシュ部に書き込んだ前記読み込み命令に対応するデータが異常である場合に、第２の磁気ディスク装置から前記第１のキャッシュ部に前記読み込み命令に対応するデータを書き込む第１の工程と、
前記第１のキャッシュ部に書き込まれたデータのエラーチェックを行う第２の工程と、
エラーチェックの結果、正常なデータであると判定された場合に、前記第１のキャッシュ部に書込まれたデータを前記外部装置に送信するとともに、前記第１のキャッシュ部に書き込まれたデータを第２のキャッシュ部に二重化する第３の工程と、
前記第１と前記第２のキャッシュ部に書き込まれたデータをそれぞれ前記第１と前記第２の磁気ディスク装置に書き戻す第４の工程と、
を実行させることを特徴とするデータリカバリプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の磁気ディスク装置と、該磁気ディスク装置を並列的に動作させてデータの読出し／書き込み制御を行うディスクアレイ制御装置を備えるディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラムに関するものである。
【背景技術】
【０００２】
従来、ホストコンピュータに接続された外部記憶装置において、高速に大量のデータへアクセスするとともに、データに冗長性を持たせて故障時における信頼性を向上させたディスクアレイ装置（ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置ともいう）が提案されている（たとえば、特許文献１参照）。ディスクアレイ装置は、一般的にＲＡＩＤ０〜ＲＡＩＤ５の６段階のレベルに分類される。このうち、ＲＡＩＤ１として規定される冗長構成の場合、２台の磁気ディスク装置にデータを重複して書込むようにしており、２台の内の一方の磁気ディスク装置が故障しても、もう一方の正常な磁気ディスク装置に同一のデータが記録されているので、データの読出しが可能であり、データの信頼性を向上させている。
【０００３】
このような２台の磁気ディスク装置を１組として同一のデータを書き込むミラーディスク構造を有するディスクアレイ装置として、信頼性を高めるために従来種々の構成のものが提案されている。図７は、従来のミラーディスク構造を有するディスクアレイ装置の構成を模式的に示す図である。このディスクアレイ装置１１０は、データを格納するとともに格納したデータをミラーリングすることができるように複数のハードディスク装置からなる磁気ディスク装置１２１ａ〜１２１ｈと、上位装置であるホストコンピュータ１４０に接続される複数のチャンネルアダプタ１３１と、ホストコンピュータ１４０からのコマンドを実行する複数の中央処理部１３２と、磁気ディスク装置１２１に接続される複数のデバイスアダプタ１３３と、を備えて構成される。なお、この図７の磁気ディスク装置１２１ｅ〜１２１ｈは、それぞれ磁気ディスク装置１２１ａ〜１２１ｄのデータを二重化するためのミラーリング用磁気ディスク装置として機能するものとする。
【０００４】
中央処理部１３２は、１つのディスクアレイ装置１１０に複数設けられており、個々の中央処理部１３２は制御する磁気ディスク装置１２１が予め定められている。また、中央処理部１３２は、コマンドの処理などを実行するコマンド処理実行部１５１と、データを格納するキャッシュメモリ１５２を有している。キャッシュメモリ１５２には、リード時に磁気ディスク装置１２１から読み出したデータや、ライト時に磁気ディスクに書き込むデータを格納するローカルキャッシュ領域１５３と、磁気ディスク装置１２１に書き込むデータを二重化するためのミラーキャッシュ領域１５４が設けられている。ここで、全ての中央処理部１３２のローカルキャッシュ領域１５３はミラーキャッシュ領域１５４とサイクリックに二重化されている。たとえば中央処理部１３２ａのローカルキャッシュ領域１５３ａと隣接する中央処理部１３２ｂのミラーキャッシュ領域１５４ｂとは二重化されている。
【０００５】
このような構成を有するディスクアレイ装置１１０におけるキャッシュメモリ１５２上のデータを磁気ディスク装置１２１ａ〜１２１ｈに書き込むライトバック処理について説明する。ここでは、たとえば、ホストコンピュータ１４０から磁気ディスク装置１２１ａにデータを書き込む場合を説明する。ホストコンピュータ１４０からのデータの書き込みを指示するライト命令を受信したチャンネルアダプタ１３１は、その命令に含まれるアクセス先の磁気ディスク装置１２１ａを管理する中央処理部１３２ａのキャッシュメモリ１５２ａのローカルキャッシュ領域１５３ａにそのデータの正当性を示す検査情報を付加したデータを書き込む。また同時に、このローカルキャッシュ領域１５３ａを二重化する別のキャッシュメモリ１５２ｂのミラーキャッシュ領域１５４ｂにもチャンネルアダプタ１３１によって同じデータが書き込まれる。そして、ローカルキャッシュ領域１５３ａとミラーキャッシュ領域１５４ｂのそれぞれからデバイスアダプタ１３３を介して磁気ディスク装置１２１ａとこの磁気ディスク装置１２１ａを二重化する磁気ディスク装置（以下、ミラーリング用磁気ディスク装置という）１２１ｅに書き込まれる。このようにして、ホストコンピュータ１４０からライト命令のあったデータを２つの磁気ディスク装置１２１ａ，１２１ｅに書き込み、格納することができる。
【０００６】
【特許文献１】特開２００４−１６４６７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上述したディスクアレイ装置１１０のライトバック処理時において、たとえばキャッシュメモリ１５２ａのローカルキャッシュ領域１５３ａに格納されたデータが化けていた場合に、該キャッシュメモリ１５２ａを保持する中央処理部１３２ａが管理する磁気ディスク装置１２１ａにも化けたデータすなわち異常なデータが書き込まれて格納されることになる。なお、ミラーキャッシュ領域１５４ｂには、正常なデータが格納されるものとする。
【０００８】
このような状態にあるディスクアレイ装置１１０において、上記で書き込まれたそのデータを読み込む処理であるリード命令がホストコンピュータ１４０によって実行されると、チャンネルアダプタ１３１はそのアクセス先であるデータを格納している磁気ディスク装置１２１ａを管理する中央処理部１３２ａに命令を渡してリード処理が実行される。この時、キャッシュメモリ１５２ａのローカルキャッシュ領域１５３ａ上に対象となるデータがあればキャッシュメモリ１５２ａから読み込み、キャッシュメモリ１５２ａのローカルキャッシュ領域１５３ａ上に対象となるデータがなければ磁気ディスク装置１２１ａからローカルキャッシュ領域１５３ａ上に該当するデータを展開する。チャンネルアダプタ１３１はそのデータのエラーチェックを行い、そのデータに付加されている検査情報と比較してデータの異常の有無を判定する。ここでは、これらのキャッシュメモリ１５２ａ上に格納される対象となるデータは化けているので、チャンネルアダプタ１３１で行われるエラーチェック処理で異常と判定される。そこで、再びホストコンピュータ１４０からリード命令のリトライによって、ミラーリング用磁気ディスク装置１２１ｅから同じデータの読み込み処理を行う。つまり、チャンネルアダプタ１３１は中央処理部１３２ａに命令を渡してローカルキャッシュ領域１５３に展開する。そして、チャンネルアダプタ１３１は、ローカルキャッシュ領域１５３ａに展開されたデータについてエラーチェックを行う。ここでは、ミラーリング用磁気ディスク装置１２１ｅ内のデータは正常であるので、チャンネルアダプタ１３１はキャッシュメモリ１５２ａのローカルキャッシュ領域１５３ａ上のデータをホストコンピュータ１４０に返す。その後、磁気ディスク装置１２１ａの異常なデータは、たとえばホストコンピュータ１４０の使用者やディスクアレイ装置１１０の管理者などによる指示によって正常なデータへ書き換えられる。
【０００９】
このように従来のディスクアレイ装置１１０では、ライトバック処理時になんらかの原因によってデータに異常が生じた場合に、そのまま磁気ディスク装置１２１に書き込まれ、ディスクアレイ装置１１０の使用者や管理者などによってエラー（異常）が認識されたときに、異常なデータが格納される磁気ディスク装置１２１の正常なデータへの書き換え処理が行われていた。そのため、使用者がデータの異常を気づかなければずっとそのままの状態となってしまうという問題点があった。
【００１０】
本発明は、上述した従来技術による問題点を解消するためになされたものであり、ミラーディスク構成を有するディスクアレイ装置へのアクセス時に異常なデータを認識し、その後に正常なデータを二重化された別の磁気ディスク装置から読み出した際に、異常なデータの復元を同時に行うことができるディスクアレイ装置を提供することを目的とする。また、このディスクアレイ装置における異常なデータのリカバリ方法とデータリカバリプログラムを提供することも目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかるディスクアレイ装置は、データを記憶する第１の磁気ディスク装置（図１に示すプライマリディスクとしての磁気ディスク装置２１ａ〜２１ｄに対応する）と、該第１の磁気ディスク装置に記憶されるデータを二重化する第２の磁気ディスク装置（図１に示すセカンダリディスクとしての磁気ディスク装置２１ｅ〜２１ｈに対応する）と、を有するディスクアレイ部と、データ読み込み時に前記ディスクアレイ部の前記第１または前記第２の磁気ディスク装置から読み出したデータとデータ書き込み時に外部装置（図１に示すホストコンピュータ４０に対応する）からのデータを書き込むローカルキャッシュ領域と、データ書き込み時に前記ローカルキャッシュ領域に書き込まれたデータを二重化するためのミラーキャッシュ領域とを有するキャッシュメモリと、前記外部装置からの最初のデータ読み込み命令の受け取り時に前記第１の磁気ディスク装置内の第１のデータを前記ローカルキャッシュ領域に展開し、再度のデータ読み込み命令の受け取り時に前記第２の磁気ディスク装置内の第２のデータを前記ローカルキャッシュ領域に展開するコマンド処理実行手段と、を有する複数の中央処理部と、前記外部装置から書き込まれるデータに、エラーチェックを行うための検査情報を付加する検査情報付加手段と、前記ローカルキャッシュ領域に展開されたデータのエラーチェックを前記検査情報を用いて行うエラーチェック手段と、前記エラーチェック手段によって前記第１のデータが異常で前記第２のデータが正常であると判定された場合に、前記外部装置との入出力処理の終了後に前記第２のデータの書き戻し処理を行うように前記コマンド処理実行手段に指示するリカバリ処理実行判定手段と、を備え、前記コマンド処理手段は、前記リカバリ処理実行判定手段からの指示により、前記ローカルキャッシュ領域の前記第２のデータを他の中央処理部のキャッシュメモリのミラーキャッシュ領域に二重化して、前記第１と前記第２の磁気ディスク装置に書き戻す処理を実行することを特徴とする。
【００１２】
また、請求項２の発明にかかるデータのリカバリ方法は、データを二重化して記憶する第１と第２の磁気ディスク装置（図１に示す磁気ディスク装置２１ａ〜２１ｈに対応する）と、前記第１または前記第２の磁気ディスク装置へのアクセス時にデータを格納する第１のキャッシュ部（図４に示すローカルキャッシュ領域３２４に対応する）と、前記第１のキャッシュ部に書き込まれた外部からのデータを二重化する第２のキャッシュ部（図４に示すミラーキャッシュ領域３２５に対応する）と、を備えるディスクアレイ装置におけるデータのリカバリ方法であって、ディスクアレイ装置に接続される外部装置（図１におけるホストコンピュータに対応する）からのデータ読込命令に基づいて前記第１の磁気ディスク装置（図１に示すプライマリディスクとしての磁気ディスク装置２１ａ〜２１ｄに対応する）から前記第１のキャッシュ部に書き込んだ第１のデータが異常である場合に、再度の前記外部装置からのデータ読み込み命令を受けて前記第２の磁気ディスク装置（図１におけるセカンダリディスクとしての磁気ディスク装置２１ｅ〜２１ｈに対応する）から前記第１のキャッシュ部に第２のデータを書き込む第１の工程と、前記第２のデータのエラーチェックを行う第２の工程と、エラーチェックによって正常なデータであると判定された場合に、前記第２のデータを前記外部装置に送信するとともに、前記第１のキャッシュ部に書き込まれた前記第１のデータを第２のキャッシュ部に二重化する第３の工程と、前記第１と前記第２のキャッシュ部に書き込まれた前記第２のデータをそれぞれ前記第１と前記第２の磁気ディスク装置に書き戻す第４の工程と、を含むことを特徴とする。
【００１３】
さらに、請求項３の発明にかかるデータリカバリプログラムは、データを二重化して記憶する第１と第２の磁気ディスク装置（図１に示す磁気ディスク装置２１ａ〜２１ｈに対応する）と、前記第１または前記第２の磁気ディスク装置へのアクセス時にデータを格納する第１のキャッシュ部（図４に示すローカルキャッシュ領域３２４に対応する）と、前記第１のキャッシュ部に書き込まれた外部からのデータを二重化する第２のキャッシュ部（図４に示すミラーキャッシュ領域３２５に対応する）と、データの読み出しまたは書き込みの処理を制御するディスクアレイ制御部と、を備えるディスクアレイ装置に用いられるデータリカバリプログラムであって、前記ディスクアレイ制御部に、ディスクアレイ装置に接続される外部装置（図１におけるホストコンピュータに対応する）からのデータの読込命令を受け取り、第１の磁気ディスク装置（図１に示すプライマリディスクとしての磁気ディスク装置２１ａ〜２１ｄに対応する）から第１のキャッシュ部に書き込んだ前記読み込み命令に対応するデータが異常である場合に、第２の磁気ディスク装置（図１におけるセカンダリディスクとしての磁気ディスク装置２１ｅ〜２１ｈに対応する）から前記第１のキャッシュ部に前記読み込み命令に対応するデータを書き込む第１の工程と、前記第１のキャッシュ部に書き込まれたデータのエラーチェックを行う第２の工程と、エラーチェックの結果、正常なデータであると判定された場合に、前記第１のキャッシュ部に書込まれたデータを前記外部装置に送信するとともに、前記第１のキャッシュ部に書き込まれたデータを第２のキャッシュ部に二重化する第３の工程と、前記第１と前記第２のキャッシュ部に書き込まれたデータをそれぞれ前記第１と前記第２の磁気ディスク装置に書き戻す第４の工程と、を実行させることを特徴とする。
【００１４】
これらの請求項１〜３の発明によれば、外部装置からのディスクアレイ装置内のデータへのアクセス時に行われるエラーチェックの結果を利用して、異常なデータがある場合にはそのアクセスの終了後に異常なデータを修復するための書き戻し処理が実行される。このとき、第２の磁気ディスク装置からローカルキャッシュ部に展開された正常なデータを用いて、第１と第２の磁気ディスク装置への書き戻し処理が行われる。
【発明の効果】
【００１５】
請求項１〜３の発明によれば、ディスクアレイ装置の使用者や管理者などが異常データの存在を認識して書き戻し処理を行うのではなく、外部装置からのディスクアレイ装置内のデータへのアクセスの際に異常なデータを検出した場合に、そのアクセスの終了を契機としてその異常なデータを正常なデータにリカバリするようにしているので、使用者や管理者などによる異常なデータの存在の確認とその後のリカバリ処理の実行の手間を低減することができるという効果を有する。また、データへのアクセス時に異常なデータの存在を発見するので、発見とほぼ同時にそのデータの修復を行うことができる。このとき、アクセス時にローカルキャッシュ領域に展開された正常なデータを使用するので、データの修復における資源を有効に利用することができる。たとえば、使用者や管理者によって後でリカバリ処理を行う場合には、再びそのデータをキャッシュメモリ上に展開する必要があるが、本発明によれば、アクセス時にキャッシュメモリ上に展開されたデータを利用するので、リカバリ処理を行う際の工程数を最小限にとどめることができるという。さらに、異常なデータを長期間そのままの状態としておくことを防ぐこともできる。
【発明を実施するための最良の形態】
【００１６】
以下に添付図面を参照して、本発明にかかるディスクアレイ装置およびそのデータのリカバリ方法の好適な実施の形態を詳細に説明する。
【実施例】
【００１７】
図１は、本発明にかかるディスクアレイ装置の本実施例における概略構成を模式的に示す図である。このディスクアレイ装置１０は、ホストコンピュータ４０の外部記憶装置として機能する装置であり、データを二重化して格納するディスクアレイ部２０と、ディスクアレイ部２０の制御を行うディスクアレイ制御部３０と、を備えて構成される。なお、この図にはディスクアレイ装置１０に接続されるホストコンピュータ４０は１台しか示されていないが、ネットワークを介して複数台のホストコンピュータ４０に接続される構成でもよい。
【００１８】
ディスクアレイ部２０は、複数の磁気ディスク装置（ハードディスク装置）２１ａ〜２１ｈからなり、ＲＡＩＤ１またはＲＡＩＤ０＋１の構成を有している。ＲＡＩＤ１の構成とは、たとえばｍ台（ｍは自然数）の磁気ディスク装置２１に格納されるデータに冗長性を持たせるために、ミラーリング用にさらにｍ台の磁気ディスク装置２１を備える構成を基本とするものである。また、ＲＡＩＤ０＋１の構成とは、ｎ台（ｎは２以上の自然数）の磁気ディスク装置２１にデータを分散させて格納するＲＡＩＤ０の構成に、冗長性を持たせるためにさらにミラーリング用の磁気ディスク装置２１をｎ台設ける構成を基本とするものである。いずれの構成にしても、データを格納する磁気ディスク装置と、この格納されるデータを二重化するための磁気ディスク装置とを少なくとも有する構成となっている。本実施例では、データを二重化して格納する磁気ディスク装置２１ａ〜２１ｈをプライマリディスク、セカンダリディスクと呼ぶ。ここで、中央処理部３２から最初にアクセスされる方をプライマリディスクといい、プライマリディスクのデータを二重化している方をセカンダリディスクというものとする。また、セカンダリディスクは、プライマリディスクを二重化しているという意味でミラーリング用磁気ディスク装置とも表記するものとする。この図１の説明においては、磁気ディスク装置２１ａ〜２１ｄがプライマリディスクであり、磁気ディスク装置２１ｅ〜２１ｈが磁気ディスク装置２１ａ〜２１ｄのそれぞれを二重化しているセカンダリディスクとなる。なお、この磁気ディスク装置２１ａ〜２１ｈに論理ユニットが構成され、ホストコンピュータ４０からは論理ユニットが識別されるようになっている。また、この図１に示される例では、８個の磁気ディスク装置２１ａ〜２１ｈが設けられる場合を示しているが、ディスクアレイ部２０がこのような構成に限られるものではない。
【００１９】
ディスクアレイ制御部３０は、ホストコンピュータ４０に対するインタフェース制御を行うチャンネルアダプタ３１と、ディスクアレイ部２０の制御を行う中央処理部３２と、ディスクアレイ部２０を構成する個々の磁気ディスク装置２１ａ〜２１ｈを制御するデバイスアダプタ３３と、を備えて構成される。なお、この図１に示される例では、２つのチャンネルアダプタ３１と、４つの中央処理部３２ａ〜３２ｄと、４つのデバイスアダプタ３３が設置される場合が示されているが、ディスクアレイ制御部３０がこのような構成に限られるものではない。
【００２０】
チャンネルアダプタ３１は、ホストコンピュータ４０などの外部装置とのインタフェースである。図２は、チャンネルアダプタの機能構成を示すブロック図である。この図に示されるように、チャンネルアダプタ３１は、ホストコンピュータ４０からのコマンドを処理するコマンド処理部３１１と、ホストコンピュータ４０からディスクアレイ装置１０に書き込まれるデータについてエラーチェックを行うための検査情報を生成してデータに付加する検査情報付加部３１２と、アクセスされたデータのエラーチェックを行うエラーチェック部３１３と、これらの各処理部を制御する制御部３１４と、を有して構成される。
【００２１】
コマンド処理部３１１は、ホストコンピュータ４０から送信されるコマンドを所定の中央処理部３２に渡したり、中央処理部３２からのコマンドの実行結果をホストコンピュータ４０に送信したり、中央処理部３２にコマンドの実行結果やエラーチェックの結果を通知したりする機能を有する。たとえば、図１に示されるように複数の中央処理部３２ａ〜３２ｄが設けられる場合には、それぞれの中央処理部３２ａ〜３２ｄの管理する磁気ディスク装置２１ａ〜２１ｈが定められているので、ホストコンピュータ４０からのコマンドのアクセス先（たとえば論理ユニットまたはこれと論理ブロックアドレスの組合せ）に応じてコマンドを渡す中央処理部３２ａ〜３２ｄを識別して、その中央処理部３２に受信したコマンドを渡す。また、本実施例において、コマンド処理部３１１が中央処理部３２に通知する主要な情報としては、異常通知情報と処理完了通知情報がある。異常通知情報は、エラーチェック部３１３によって異常なデータと判定された場合に中央処理部３２に通知する情報であり、処理完了通知情報は、コマンドを実行した結果をホストコンピュータ４０に返した直後にホストコンピュータに対する処理が終了したことを中央処理部３２に通知する情報である。
【００２２】
検査情報付加部３１２は、ホストコンピュータ４０から受信した磁気ディスク装置２１に書き込まれるデータについて、後で読み込まれた際にそのデータにエラーが存在するか否かを判定するエラーチェックに使用される検査情報を作成し、そのデータに付加する機能を有する。エラーチェックには、たとえばＣＲＣ（Cyclic Redundancy Check；巡回冗長検査）などを用いることができる。図３は、検査情報を付加したデータの一例を模式的に示す図である。検査情報７１は、ブロックＩＤ７２と検査用コード７３を含んで構成され、ディスクアレイ装置１０に書き込まれるデータ７０に付加される。ブロックＩＤ７２は、データの論理的な位置・属性情報であり、検査用コード７３は、データの正当性をチェックするための誤り検出符号である。たとえば、所定のデータサイズのブロックごとに検査用コード７３を生成し、検査情報７１としてデータ７０に付加される。なお、ＣＲＣを用いた場合の検査用コード７３は、データを１つの多項式とみなし、その多項式を生成多項式で割った剰余となる。
【００２３】
エラーチェック部３１３は、ディスクアレイ部２０またはキャッシュメモリ３２３に格納されるデータをホストコンピュータ４０に送信する際に、送信するデータ７０が正常か否かのエラーチェックを、該データ７０に付加された検査情報７１を用いて行う機能を有する。ここで行われるエラーチェックの方法は、検査情報付加部３１２での検査情報７１の作成と同じように対象となるデータ７０についてコードの作成を行い、実際に計算したコードと該データ７０に付加されている検査情報７１中の検査用コード７３とを比較することでデータの誤りを検出することができる。
【００２４】
図４は、中央処理部の機能構成を示すブロック図である。この図に示されるように、中央処理部３２は、リソースの管理を行うリソース制御部３２１と、各ＲＡＩＤレベルで磁気ディスク装置２１のＩ／Ｏ（入出力）を制御するＲＡＩＤ制御部３２２と、データを一時的に格納するキャッシュメモリ３２３と、受け取ったコマンドの処理とともにキャッシュメモリ３２３の制御を行うコマンド処理実行部３２６と、磁気ディスク装置２１に異常なデータが存在するためにリカバリ処理が必要か否かを判定するリカバリ処理実行判定部３２７と、これらの各処理部を制御する制御部３２８と、を備えて構成される。なお、図１に示されるように複数の中央処理部３２ａ〜３２ｄが設けられる場合には、それぞれの中央処理部３２ａ〜３２ｄが制御する磁気ディスク装置２１ａ〜２１ｈによって構成される論理ユニットの範囲が予め定められている。
【００２５】
リソース制御部３２１は、たとえば複数のホストコンピュータ４０に接続される場合に、別々のホストコンピュータ４０が同じデータにアクセスした際におけるデータの変更を行うことが可能なホストコンピュータ４０を制限する領域排他機能や、各処理部におけるＩ／Ｏ関連の処理を制御するリソース制御機能を有する。
【００２６】
ＲＡＩＤ制御部３２２は、物理的な磁気ディスク装置２１ａ〜２１ｈを論理ユニットのレベルに変換し、各ＲＡＩＤレベルでの磁気ディスク装置２１２１ａ〜２１ｈのＩ／Ｏの制御、たとえばＲＡＩＤレベルごとのミラーリングやストライプの制御や管理を行う機能を有する。
【００２７】
キャッシュメモリ３２３は、ホストコンピュータ４０からアクセスのあったデータを格納したり、磁気ディスク装置２１に書き込むデータを格納したりする一時記憶手段であり、ホストコンピュータ４０からのディスクアレイ部２０に書き込むデータや、ディスクアレイ部２０から読み出されたデータを一時的に格納するローカルキャッシュ領域３２４と、ディスクアレイ部２０にデータを書き込む場合に書き込むデータを二重化（ミラーリング）するためにデータを一時的に格納するミラーキャッシュ領域３２５とを有する。なお、ある中央処理部３２のミラーキャッシュ領域３２５は、同じキャッシュメモリ３２３上のローカルキャッシュ領域３２４に格納されるデータを二重化するのではなく、隣接する他の中央処理部３２のキャッシュメモリ３２３のローカルキャッシュ領域３２４と二重化されており、全ての中央処理部３２ａ〜３２ｄのローカルキャッシュ領域３２４とミラーキャッシュ領域３２５とはサイクリックに二重化されている。たとえば、図１の場合には、中央処理部３２ａのキャッシュメモリ３２３にホストコンピュータ４０から書き込まれたデータは、中央処理部３２ｂのキャッシュメモリ３２３のミラーキャッシュ領域３２５に二重化される。同様に、中央処理部３２ｂのローカルキャッシュ領域３２４は、中央処理部３２ｃのミラーキャッシュ領域３２５に二重化され、中央処理部３２ｃのローカルキャッシュ領域３２４は、中央処理部３２ｄのミラーキャッシュ領域３２５に二重化され、中央処理部３２ｄのローカルキャッシュ領域３２４は、中央処理部３２ａのミラーキャッシュ領域３２５に二重化される。
【００２８】
コマンド処理実行部３２６は、Ｉ／Ｏに使用するキャッシュメモリ３２３の管理や制御を行うとともに、受け取ったコマンドの処理を行う機能を有する。たとえば、チャンネルアダプタ３１のコマンド処理部３１１から読込み要求を受け取った場合には、Ｉ／Ｏに対するキャッシュメモリ３２３のキャッシュヒット／キャッシュミス判定を行い、ヒットした場合にはキャッシュメモリ３２３のローカルキャッシュ領域３２４内のデータを用意し、キャッシュミスした場合には磁気ディスク装置２１からキャッシュメモリ３２３のローカルキャッシュ領域３２４へと対象となるデータを展開するステージング（Staging）動作を行ってデータを用意する。また、同様に書き込み要求を受け取った場合には、キャッシュメモリ３２３のローカルキャッシュ領域３２４に書き込まれたデータをミラーキャッシュ領域３２５に二重化してそれぞれプライマリディスクとセカンダリディスクに書き込む処理を行う。さらに、キャッシュメモリ３２３が枯渇した場合には、キャッシュメモリ３２３のローカルキャッシュ領域３２４上のダーティ（Dirty）データを磁気ディスク装置２１に書き戻すライトバック（Write Back）処理やキャッシュメモリ３２３からデータを追い出す処理などのスケジュールを行う。
【００２９】
リカバリ処理実行判定部３２７は、ホストコンピュータ４０からアクセスのあったあるデータに対して、キャッシュメモリ３２３のローカルキャッシュ領域３２４上のデータとプライマリディスク上のデータとが不一致なダーティデータであるか否かを判定して、ダーティデータである場合に、コマンド処理実行部３２６に対してローカルキャッシュ領域３２４上のデータをディスクアレイ部２０に書き戻すライトバック処理を実行するように指示する機能を有する。より具体的には、ホストコンピュータ４０からアクセスのあったあるデータに対して、最初にプライマリディスクである磁気ディスク装置２１ａ〜２１ｄから読み込んだデータが異常で、かつセカンダリディスクであるミラーリング用磁気ディスク装置２１ｅ〜２１ｈから読み込んだデータが正常である場合に、リカバリ処理の実行が必要であると判定し、ホストコンピュータとのＩ／Ｏの終了後にその正常なデータをディスクアレイ部２０に書き戻す処理をコマンド処理実行部３２６に実行させる。
【００３０】
これは、最初にプライマリディスクから読み込んだデータが異常である場合のチャンネルアダプタ３１のコマンド処理部３１１からの異常通知情報と、その後のセカンダリディスクから読み込んだデータが正常である場合のチャンネルアダプタ３１のコマンド処理部３１１からの処理完了通知情報とを受け取ることを利用して判定するものである。つまり、あるデータについて異常通知情報を受け取った後でかつ処理完了通知情報を受け取った場合にのみ、リカバリ処理実行判定部３２７は、磁気ディスク装置２１ａ〜２１ｈのリカバリ処理の実行を指示する。このリカバリ処理によって、キャッシュメモリ３２３上のデータとそのデータと同じ位置に格納されるプライマリディスク上のデータとの不一致が解消され、ノンダーティな状態となる。
【００３１】
デバイスアダプタ３３は、中央処理部３２の指示により各磁気ディスク装置２１ａ〜２１ｈを制御するために、磁気ディスク装置２１ａ〜２１ｈとの間でコマンドやデータのやり取りを行う機能を有する。
【００３２】
ディスクアレイ装置１０はホストコンピュータ４０の外部記憶装置であり、ホストコンピュータ４０からのライトコマンドによって必要なデータが書き込まれる。なお、ディスクアレイ装置１０では、ホストコンピュータ４０からのライトコマンドによってデータをキャッシュメモリ３２３のローカルキャッシュ領域３２４とミラーキャッシュ領域３２５に書き込んだ後に、ディスクアレイ装置１０内部でキャッシュメモリ３２３上のデータをそれぞれ対応する磁気ディスク装置２１ａ〜２１ｈに書き戻し処理（ライトバック処理）を行う。その後、ホストコンピュータ４０からのリードコマンドなどの各種コマンドが実行される。そこで、このような構成のディスクアレイ装置１０における（１）データのライトバック処理、および（２）最初にアクセスしたプライマリディスクに格納されるデータが異常であり、セカンダリディスクに格納されるデータが正常であった場合のディスクアレイ装置１０のリカバリ処理について順に説明する。
【００３３】
まず、ディスクアレイ装置におけるデータのライトバック処理について図５のフローチャートを参照しながら説明する。なお、ここでは、データは図１の磁気ディスク装置２１ａ，２１ｅに書き戻されるものとし、中央処理部３２ａが磁気ディスク装置２１ａ，２１ｅを管理するものとする。また、上述したように、中央処理部３２ａのローカルキャッシュ領域３２４は、中央処理部３２ｂのミラーキャッシュ領域３２５と二重化されているものとする。最初に、チャンネルアダプタ３１が、ホストコンピュータ４０からデータを書き込むコマンドを受信すると（ステップＳ１１）、チャンネルアダプタ３１の検査情報付加部３１２は、受信したデータについて検査情報を作成するとともに作成した検査情報をデータに付加する（ステップＳ１２）。その後、チャンネルアダプタ３１のコマンド処理部３１１は、そのデータのアクセス先（たとえば、論理ユニット番号と論理アドレスブロック）を取得し（ステップＳ１３）、そのアクセス先の磁気ディスク装置２１ａを担当する中央処理部３２ａを選択する。
【００３４】
そして、チャンネルアダプタ３１のコマンド処理部３１１は、選択した中央処理部３２ａのキャッシュメモリ３２３のローカルキャッシュ領域３２４と、書き込むデータを二重化するための別の中央処理部３２のキャッシュメモリ３２３のミラーキャッシュ領域３２５に、検査情報を付加した書き込むデータを格納する（ステップＳ１４）。ついで、チャンネルアダプタ３１のコマンド処理部３１１は、データの書き込み完了をホストコンピュータ４０に通知した後（ステップＳ１５）、中央処理部３２ａのコマンド処理実行部３２６は、自処理部内のキャッシュメモリ３２３のローカルキャッシュ領域３２４に格納されたデータをプライマリディスク（磁気ディスク装置２１ａ）に書き戻し、別の中央処理部３２ｂのコマンド処理実行部３２６は、自処理部内のキャッシュメモリ３２３のミラーキャッシュ領域３２５に格納されたデータをセカンダリディスク（磁気ディスク装置２１ｅ）に書き戻す処理を行う（ステップＳ１６）。以上のようにして、データのライトバック処理が終了する。
【００３５】
つぎに、最初にアクセスしたプライマリディスクに格納されるデータが異常であり、セカンダリディスクに格納されるデータが正常であった場合のディスクアレイ装置のリカバリ処理について図６−１〜図６−２のフローチャートを参照しながら説明する。なお、ここでは、図５の手順によって磁気ディスク装置２１ａ，２１ｅに格納されたデータを読み出す処理を行うものとする。ただし、プライマリディスクである磁気ディスク装置２１ａのデータは異常であり、セカンダリディスクである磁気ディスク装置２１ｅのデータは正常であるものとする。最初に、チャンネルアダプタ３１が、ホストコンピュータ４０からたとえばリードコマンドを受信すると（ステップＳ３１）、そのアクセス先を判定する（ステップＳ３２）。つまり、コマンドに含まれる論理ユニットや論理アドレスブロックなどのアクセス先の位置を示すアクセス先情報に基づいて、そのアクセス先の磁気ディスク装置２１を管理する中央処理部３２ａを選択し、この中央処理部３２ａに受信したコマンドを通知する。
【００３６】
中央処理部３２ａのコマンド処理実行部３２６は、アクセス先のデータがキャッシュメモリ３２３のローカルキャッシュ領域３２４内にあるか否かを判定する（ステップＳ３３）。ローカルャッシュ領域内にない場合（ステップＳ３３でＮｏの場合）には、コマンド処理実行部３２６はプライマリディスク（磁気ディスク装置２１ａ）から対応するデータをキャッシュメモリ３２３のローカルキャッシュ領域３２４に展開するステージング処理を行うようにデバイスアダプタ３３に依頼する。これにより、デバイスアダプタ３３は、プライマリディスクから対象となるデータを読み出してキャッシュメモリ３２３のローカルキャッシュ領域３２４に展開する（ステップＳ３４）。その後またはステップＳ３３でアクセス先のデータがローカルキャッシュ領域３２４内にある場合（ステップＳ３３でＹｅｓの場合）、チャンネルアダプタ３１のコマンド処理部３１１は、ローカルキャッシュ領域３２４内のアクセス先に該当するデータを読み出す（ステップＳ３５）。
【００３７】
チャンネルアダプタ３１のエラーチェック部３１３は、読み出したデータについて所定の方法でエラーチェックを行う（ステップＳ３６）。エラーチェックの結果、エラーがない場合（ステップＳ３７でＮｏの場合）には、チャンネルアダプタ３１のコマンド処理部３１１は、ローカルキャッシュ領域３２４上のデータをホストコンピュータ４０に送信して（ステップＳ３８）、リードコマンドに対応する処理が終了する。一方、エラーチェックの結果、エラーがある場合（ステップＳ３７でＹｅｓの場合）には、チャンネルアダプタ３１のコマンド処理部３１１は、ホストコンピュータ４０に対してエラーを報告するとともに（ステップＳ３９）、中央処理部３２に対しても異常通知情報を通知する（ステップＳ４０）。ホストコンピュータ４０は、エラーの報告を受けると、リードコマンドをリトライする。また、中央処理部３２のリカバリ処理実行判定部３２７は受信した異常通知情報をその元となるコマンドに対応付けて保持する。
【００３８】
ディスクアレイ装置１０のチャンネルアダプタ３１はリトライされたリードコマンドを受信すると（ステップＳ４１）、ステップＳ３２と同様にアクセス先を判定する（ステップＳ４２）。つまり、コマンドに含まれる論理ユニットや論理アドレスブロックなどのアクセス先情報に基づいて、そのアクセス先の磁気ディスク装置２１ｅを管理する中央処理部３２ａを選択し、この中央処理部３２ａに受信したコマンドを渡す。このとき、中央処理部３２のコマンド処理実行部３２６は、前回と同じコマンドのリトライなので、セカンダリディスク（ミラーリング用磁気ディスク装置２１ｅ）から要求されたデータをキャッシュメモリ３２３のローカルキャッシュ領域３２４に展開する（ステップＳ４３）。
【００３９】
その後、チャンネルアダプタ３１のコマンド処理部３１１は、キャッシュメモリ３２３内のローカルキャッシュ領域３２４内のアクセス先に該当するデータを読み出し（ステップＳ４４）、エラーチェック部３１３は、読み出したデータについてエラーチェックを行う（ステップＳ４５）。エラーチェックの結果、エラーがある場合（ステップＳ４６でＹｅｓの場合）には、コマンド処理部３１１は、ホストコンピュータ４０に対してエラーを報告し（ステップＳ４７）、この場合にはリカバリ処理を行うことができないので、そのままリカバリ処理を終了する。一方、エラーチェックの結果、エラーがない場合（ステップＳ４６でＮｏの場合）には、ローカルキャッシュ領域３２４上のデータをホストコンピュータ４０に送信するとともに（ステップＳ４８）、コマンド処理部３１１はホストコンピュータ４０に対する処理が終了したことを示す処理完了通知情報を中央処理部３２に対して通知する（ステップＳ４９）。
【００４０】
処理完了通知情報を受信した中央処理部３２のリカバリ処理実行判定部３２７は、ステップＳ４０で異常通知情報を受け取り、かつステップＳ４９で処理完了通知情報を受け取ったので、キャッシュメモリ３２３のローカルキャッシュ領域３２４に格納されているデータと、このデータに対応するプライマリディスク（磁気ディスク装置２１ａ）に格納されているデータとの間で内容にずれがある、すなわちダーティデータであることを認識し、ライトバック処理の実行をコマンド処理実行部３２６に通知する。つまり、コマンド処理実行部３２６は、自中央処理部３２ａのキャッシュメモリ３２３のローカルキャッシュ領域３２４に格納されているデータを、二重化される中央処理部３２ｂのキャッシュメモリ３２３のミラーキャッシュ領域３２５に二重化し（ステップＳ５０）、ローカルキャッシュ領域３２４に格納されているデータを異常なデータを格納していたプライマリディスク（磁気ディスク装置２１ａ）に書き戻す処理を行い、また、中央処理部３２ｂのコマンド処理実行部３２６は、自処理部内のキャッシュメモリ３２３のミラーキャッシュ領域３２５に格納されているデータをセカンダリディスク（ミラーリング用磁気ディスク装置２１）に書き戻す処理を行う（ステップＳ５１）。以上により、異常なデータが格納されたキャッシュメモリ３２３またはこのキャッシュメモリ３２３に対応する磁気ディスク装置２１内に、正常なデータを書き戻す処理が終了する。
【００４１】
なお、本実施例では、キャッシュメモリと磁気ディスク装置を二重化する場合を例に挙げて説明したが、これに限定されるものではなく、キャッシュメモリと磁気ディスク装置を３個以上備えて多重化した場合について同様に適用することが可能である。
【００４２】
また、以上のデータのリカバリ方法は、その処理手順を格納したプログラムをコンピュータに読み取り可能な記憶媒体に記憶しておくことができ、ディスクアレイ装置内のプログラムの処理機能を有する演算処理部がそのプログラムを読み出して実行することによっても実現することができる。たとえば、このデータリカバリプログラムは、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk - Read Only Memory）、光磁気ディスク、ＤＶＤ（Digital Versatile Disk）、ＩＣ（Integrated Circuit）カードなどの可搬型記憶媒体の他に、コンピュータの内外に備えられるハードディスクドライブや、ＲＡＭ（Random Access Memory）、ＲＯＭなどの固定型記憶媒体、さらにモデムを介して接続される公衆回線や、ＬＡＮ（Local Area Network）／ＷＡＮ（Wide Area Network）などのように、プログラムの送信に際して短期にプログラムを保持する通信媒体などを含むものである。
【００４３】
上述してきたように、本実施例では、ホストコンピュータ４０から要求されたデータを返す前にチャンネルアダプタ３１でエラーチェックを行い、その結果、プライマリディスク上のデータがエラーである場合に中央処理部３２に異常通知情報を伝え、セカンダリディスク上の対応するデータが正常だった場合に中央処理部３２にホストコンピュータ４０からのコマンドに対する処理が終了した処理完了通知情報を中央処理部３２に伝えるようにしている。中央処理部３２では、異常通知情報と処理完了通知情報を用いて、ディスクアレイ部２０の異常なデータのリカバリ処理の必要の有無を判定し、異常通知情報の受信後に処理完了通知を受信した場合に、リトライ時にキャッシュメモリ３２３上に読み込まれたデータを用いてリカバリ処理を実行する。
【００４４】
これによって、ディスクアレイ装置１０へのＩ／Ｏの延長で、ディスクアレイ装置１０に異常なデータが存在する場合のそのデータのリカバリ処理を自動的に行うことができるという効果を有する。また、リカバリ処理にあたって、セカンダリディスクであるミラーリング用磁気ディスク装置２１ｅ〜２１ｈからキャッシュメモリ３２３上に読み出されたデータを用いるようにしているので、後でリカバリ処理を行う場合に比してリカバリ処理に要する工程や資源を有効に利用することが可能になるという効果も有する。さらに、異常なデータが存在するとディスクアレイ装置１０が認識した場合に、すぐにリカバリ処理が実行されるので、ディスクアレイ装置１０では常に正常なデータを格納している状態を保つことができるという効果も有する。また、異常なデータがディスクアレイ部２０に格納されていることをディスクアレイ装置１０の使用者や管理者などが気付かずにそのまま長時間放置されてしまうという状態を防ぐこともできる。
【産業上の利用可能性】
【００４５】
以上のように、本発明にかかるディスクアレイ装置は、複数のハードディスクにデータを二重化して格納する構成を有する外部記憶装置における異常データのリカバリ処理に有用である。
【図面の簡単な説明】
【００４６】
【図１】ディスクアレイ装置の概略構成を示すブロック図である。
【図２】チャンネルアダプタの機能構成を示すブロック図である。
【図３】検査情報を付加したデータの一例を模式的に示す図である。
【図４】中央処理部の機能構成を示すブロック図である。
【図５】データのライトバック処理を示すフローチャートである。
【図６−１】リカバリ処理を示すフローチャートである（その１）。
【図６−２】リカバリ処理を示すフローチャートである（その２）。
【図７】従来のディスクアレイ装置の構成を模式的に示す図である。
【符号の説明】
【００４７】
１０    ディスクアレイ装置
２０    ディスクアレイ部
２１ａ〜２１ｈ    磁気ディスク装置
３０    ディスクアレイ制御部
３１    チャンネルアダプタ
３２ａ〜３２ｃ    中央処理部
３３    デバイスアダプタ
４０    ホストコンピュータ
３１１    コマンド処理部
３１２    検査情報付加部
３１３    エラーチェック部
３１４，３２８  制御部
３２１    リソース制御部
３２２    ＲＡＩＤ制御部
３２３    キャッシュメモリ
３２４    ローカルキャッシュ領域
３２５    ミラーキャッシュ領域
３２６    コマンド処理実行部
３２７    リカバリ処理実行判定部
【図１】
2006134149.tif 000003
【図２】
2006134149.tif 000004
【図３】
2006134149.tif 000005
【図４】
2006134149.tif 000006
【図５】
2006134149.tif 000007
【図６−１】
2006134149.tif 000008
【図６−２】
2006134149.tif 000009
【図７】
2006134149.tif 000010