(各実施の形態に共通の説明)
前記ディスクアレイ装置において、リードパリティチェック時に不整合が生じるのは、RAIDを構成しているディスク装置内の1台が何らかの原因で正しいデータを返せない場合が殆どである。特に、ライトコマンドがディスク装置に送られた時に、ライトデータが実際にディスク装置の記憶媒体に書かれずにディスク装置が正常終了を返す場合がある。このような場合、ディスク装置側はリードコマンドに対して前回ライトコマンドで書き損じたデータを何も問題なく転送してくるようになってしまう。このようなデータをディスクアレイコントローラに転送し、パリティチェックを行うと整合性がとれない。
ここで、RAID本来の特徴である「故障した1台のディスク装置の場所が分かればデータを復元できる」ということを用いることによりデータを復元(以下「再構築」とも記す)すれば良いのであるが、どれが誤ったデータが書かれているディスク装置なのかは、ディスクアレイコントローラ4は理解できない。
従って、後述する実施の形態1〜5の処理を用いることにより、どのディスク装置に誤ったデータが書かれていたかを特定し、その特定されたディスク装置のデータを不良(誤ったデータ)としてRAIDのデータ再構築機能を利用して他のデータからホストデータを再構築する。
以下、各例について詳細に説明する。なお、以下に説明する「CRC」(Cyclic Redundancy Check )は、巡回冗長検査のことであり、前記巡回冗長検査のために付加する検査情報を単に「CRC」と記す。また、ホストからディスクアレイ装置側へ転送されるデータ(書き込みデータ)を「ホストデータ」、ディスク装置側に記憶されたデータ(分割データ)を「ディスクデータ」、ディスク装置から読み出したデータから再構築され、ホストへ転送されるデータを「再構築されたホストデータ」、或いは単に「ホストデータ」とも記す。
(実施の形態1の説明)
§1:実施の形態1の装置の説明・・・図2参照
図2は実施の形態1の装置構成図である。図示のように、ディスクアレイ装置は、ホスト1に接続されたディスクアレイ制御装置2と、前記ディスクアレイ制御装置2に接続された複数のディスク装置(磁気ディスク装置、或いはハードディスク装置)6−1〜6−n(n:ディスク装置の台数)によって構成されている。
また、ディスクアレイ制御装置2には、ホストアダプタ3とディスクアレイコントローラ4と、複数のデバイスアダプタ5−1〜5−nが設けてある。そして、ホストアダプタ3には、メモリ10とCRC付加処理部11が設けてあり、ディスクアレイコントローラ4にはパリティ処理部19とCRCチェック部20が設けてあり、デバイスアダプタ5−1から5−nにはそれぞれメモリ12−1から12−nが設けてある。前記各部の機能等は次の通りである。
(1) :ディスクアレイ制御装置2は、ディスクアレイ装置の各種制御を行うものである。
(2) :ディスク装置6−1〜6−nは、内部にそれぞれ記憶媒体(磁気ディスク)を備え、デバイスアダプタ5−1〜5−nを介して送られたコマンドによりデータのリード/ライト等を行うものである。
(3) :ホストアダプタ3は、ホスト1に対するインターフェース制御を行うものである。例えば、コマンドの受信、ホストデータの送受信等を行うものである。
(4) :ディスクアレイコントローラ4は、データのリード/ライト時の各種制御や処理を行うものである。
(5) :デバイスアダプタ5−1〜5−nは、ディスクアレイコントローラ4の指示により各ディスク装置6−1〜6−nを制御するものである。
(6) :メモリ10は、ホストアダプタ3がアクセスし、ワーク用として使用するメモリである。
(7) :CRC付加処理部11は、ホストデータにCRCを付加する処理を行うものである。
(8) :パリティ処理部19は、パリティデータの作成、パリティチェック処理等を行うものである。
(9) :CRCチェック部20は、リードデータから再構築したホストデータに対するCRCチェックを行うものである。
(10):メモリ12−1〜12−nは、各デバイスアダプタ5−1〜5−nがそれぞれアクセスし、ワーク用として使用するメモリである。
§2:処理概要の説明
実施の形態1はRAID3のレベルでの処理において特に効果のある処理である。従って、この例では、図2に示した構成のRAID3のディスクアレイ装置により処理を行う。データの書き込み時には、ホスト1から受信したホストデータにCRCを付加し、このCRC付きホストデータを複数のデータに分割し、これら分割データからパリティデータを作成する。
そして、前記分割データとパリティデータをディスクアレイコントローラ4、デバイスアダプタ5−1〜5−nを介してディスク装置6−1〜6−nへ送り、前記ディスク装置の記録媒体に書き込む。この場合、分割データはディスク装置6−1〜6−mに書き込み、前記パリティデータはディスク装置6−nに書き込む。
また、ディスク装置6−1〜6−nからのデータのリード時には、RAID3でのリードパリティチェックを行い、その結果整合性がとれなかった場合、ホストCRCを用いてホストデータのRAID3での再構築(復元)を行う。すなわち、ディスクアレイコントローラ4では、リードパリティの不整合時に、端のディスク装置から格納されているデータが誤っているのではないかと仮定を立てて、ホストデータを再構築してみる。そして、正しいホストCRCが計算されたものを本来の正しいホストデータとしてホスト1へ転送する。
§3:処理の説明・・・図3参照
図3は実施の形態1の処理説明図である。以下、図3に基づいて実施の形態1の処理を説明する。
(1) :RAID3でのライト時の処理
RAID3でのデータライト(書き込み)時の処理は次の通りである。この場合ディスク装置6−1〜6−mを分割データ格納用とし、ディスク装置6−nをパリティデータ格納用として、データのリード/ライト時の処理を次のようにして行う。
先ず、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する(a参照)。そして、CRC付加処理部11は前記メモリ10に格納されたホストデータからホストCRC(CRC検査情報)を作成し、前記ホストデータに付加する(b参照)。
次に、ホストアダプタ3は、前記CRC付きのホストデータをディスクアレイコントローラ4へ転送する。ディスクアレイコントローラ4は前記CRC付きホストデータを受け取ると、RAID3に基づき、前記CRC付きホストデータをm個のデータに分割して(CRCも含めたホストデータを分割する)、各ディスク装置6−1〜6−mに割り振るデータを作成する。また、パリティ処理部19は、前記m個の分割された各データの排他的論理和を計算してパリティデータを作成する。
すなわち、前記CRC付きホストデータを分割した分割データをd1 、d2 、d3 ・・・dm 、パリティデータをPとすると、前記パリティデータPは、前記分割データd1 、d2 、d3 ・・・dm の各排他的論理和となる(d参照)。
次にディスクアレイコントローラ4は、ディスク装置6−1〜6−nに対してライトコマンドを発行すると共に、前記作成した各ディスク装置毎の分割データをデバイスアダプタ5−1〜5−mへ転送する。これと同時に、デバイスアダプタ5−nには、前記パリティデータを転送する。これらのデータはデバイスアダプタ内でそれぞれメモリ12−1〜12−nに一時格納される。
その後、デバイスアダプタ5−1〜5−mは、各々接続されているディスク装置6−1〜6−mに前記ライトコマンドを送ると共に、前記分割データを転送する。そして、ディスク装置6−1〜6−mは記憶媒体に前記分割データを書き込む(ディスクデータの書き込み)。また、デバイスアダプタ5−nは、接続されているディスク装置6−nにライトコマンドを送ると共に、前記パリティデータを転送し、ディスク装置6−nは記憶媒体にパリティデータを書き込む(c参照)。
(2) :RAID3でのリード処理において、パリティの整合性に矛盾が無かった場合の処理説明
RAID3でのリード処理時に、パリティの整合性に矛盾がなかった場合の処理は次の通りである。先ず、ホスト1の発行したリードコマンドをホストアダプタ3が受信すると、ホストアダプタ3は、そのコマンドをディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1〜6−nに対してリードコマンドを発行する。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードしたデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される。
この状態で、メモリ12−1〜12−mにはリードされた分割データが格納され、メモリ12−nにはリードされたパリティデータが格納される。その後、ディスクアレイコントローラ4は、前記メモリ12−1〜12−mに格納されている分割データを用いて、ホストデータを再構築(復元)する。
この時、ディスクアレイコントローラ4のパリティ処理部19は、前記メモリ12−1〜12−mに格納されている各分割データの排他的論理和を計算してリードパリティとし、このリードパリティを前記メモリ12−nに格納されているパリティと比較することでリードパリティチェックを行う。この場合、前記メモリ12−1〜12−mに格納されている分割データをd1 、d2 、d3 ・・・dm 、メモリ12−nに格納されているパリティデータをP、前記分割データd1 、d2 、d3 ・・・dm から計算したリードパリティデータをRPとすると、前記リードパリティデータRPは、前記各分割データd1 、d2 、d3 ・・・dm の排他的論理和となる。
そして前記リードパリティチェックでRP=Pとなれば、整合性に矛盾無しと判断する(e参照)。すなわち、前記リードパリティチェックの結果、両者が一致すれば(RP=P)、リードパリティチェックが正常であり、リードデータの整合性に矛盾が無かったとして、前記再構築したデータをホストアダプタ3へ転送する。その後、ホストアダプタ3は前記データをホスト1へ転送する。
(3) :RAID3でのリード処理において、パリティの整合性に矛盾が有った場合の処理説明
前記のように、ディスク装置からのデータリード時に、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている各分割データの排他的論理和から計算したリードパリティRPと、デバイスアダプタ5−nのメモリ12−nに格納されているパリティデータPとの比較において不一致であった場合、従来の装置ではホストデータの再構築ができないため、パリティ不一致ということをホスト1へ通知するに止まっていた。
しかし、本実施の形態1では、ホストデータに付加されていたホストCRCデータを用いてデータの再構築を行う。この場合、原則として、パリティ不一致が起きた場合、どれか1つのデバイスアダプタのメモリに誤ったデータが格納されている可能性が多く、2つ以上のデバイスアダプタのメモリに誤ったデータが格納されている場合は、確率的にも少なく、また、こうなってしまった場合、本実施の形態1でも救済することはできない。
そこで、実施の形態1では、前記のようにパリティが不一致と分かった時点で以下のようなデータリカバリ処理を実施する。先ず、ディスクアレイコントローラ4は、端のデバイスアダプタ5−1のメモリ12−1に誤ったデータが入ってしまったと仮定する。この仮定の元でRAID3のリカバリ方法によりホストデータを再構築(復元)してみる(故障した1台のディスク装置の場所が分かればホストデータを復元できる)。
この場合、メモリ12−1に格納された分割データd1 が誤ったデータであると仮定するので、この分割データd1 を除いて他の全てのデータd2 、d3 ・・・dm 、及びパリティデータPの各排他的論理和を計算すれば、前記データd1 が復元できる。従って、前記復元したデータd1 を含めた全ての分割データd1 、d2 、d3 ・・・dm からホストデータが再構築できる。
その後、前記再構築されたホストデータが正しいものか否かを、CRCチェック部20が再構築されたホストCRCデータをチェックすることで決定する。前記CRCチェック部20によるホストCRCチェックで整合性がとれた場合、ディスクアレイコントローラ4は、前記再構築したホストデータを正しいホストデータとし、デバイスアダプタ5−1のメモリ12−1に誤ったデータが入っていたものと断定する。
もし、前記ホストCRCチェックで整合性がとれない場合は、このデバイスアダプタ5−1以外の他のデバイスアダプタ5−2〜5−nのメモリ12−2〜12−nに誤ったデータが入っているに違いないとする。このため、ディスクアレイコントローラ4は、誤ったデータが入っていると仮定するデバイスアダプタのメモリを隣のデバイスアダプタ5−2のメモリ12−2とし、かつデバイスアダプタ5−1のメモリ12−1を正確なデータが入っているものと仮定して、この仮定の元で、再度、ホストデータを再構築し、CRCチェック部20が前記のホストCRCチェックを行う。
これを全てのデバイスアダプタのメモリに格納されているデータについて、ホストCRCの整合性がとれるまで繰り返して行う。前記のようにして、CRCチェック部20によるホストCRCチェックで整合性がとれた場合、そのホストデータは正しいとする。そして、ディスクアレイコントローラ4は、その再構築したホストデータをホストアダプタ3へ転送する。ホストアダプタ3は前記データを受け取ると、そのホストデータをホスト1へ転送する。
§4:フローチャートによる処理の説明・・・図4参照
図4は実施の形態1の処理フローチャートである。以下、図4に基づいて実施の形態1の処理を説明する。なお、S1〜S13は各処理ステップを示す。
処理が開始され、ホストアダプタ3がホスト1の発行したコマンドを受信すると(S1)、ホストアダプタ3は前記コマンドをメモリ10に一時格納すると共に、そのコマンドを解析し内容を判断する(S2)。その結果、前記コマンドがライトコマンドであれば、RAID3でのデータライト(書き込み)時の処理を次のようにして行う。
ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。そして、CRC付加処理部11は前記メモリ10に格納されたホストデータからホストCRCを作成し、ホストデータに付加してCRC付きホストデータとする。その後ホストアダプタ3は、前記CRC付きのホストデータをディスクアレイコントローラ4へ転送する(S3)。
ディスクアレイコントローラ4は前記CRC付きのホストデータを受け取ると、RAID3により、前記CRC付きのホストデータをm個のデータに分割して、各ディスク装置6−1〜6−mに割り振るデータを作成する。また、パリティ処理部19は前記m個のデータの排他的論理和を計算してパリティデータを作成する。
次にディスクアレイコントローラ4は、ディスク装置6−1〜6−nに対してライト命令を発行すると共に、前記作成した各ディスク装置毎のデータ(分割データ)をデバイスアダプタ5−1〜5−mへ転送する。これと同時に、デバイスアダプタ5−nには、前記作成したパリティデータを転送する(S4)。
その後、デバイスアダプタ5−1〜5−mは、各々接続されているディスク装置6−1〜6−mに前記ライトコマンドを送ると共に分割データを転送する。そして、ディスク装置6−1〜6−mは記憶媒体に前記分割データを書き込む(ディスクデータの書き込み)。また、デバイスアダプタ5−nは、接続されているディスク装置6−nにライトコマンドを送ると共に、前記パリティデータを転送し、ディスク装置6−nは記憶媒体にパリティデータを書き込み(S5)、前記ライト処理を終了する。
また、前記S2の処理で、受信したコマンドがリードコマンドであった場合、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1〜6−nに対してリードコマンドを発行する(S6)。
ディスク装置6−1〜6−nは、デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信すると、前記コマンドで指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nは、リードしたデータを、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nへ転送する。各デバイスアダプタ5−1〜5−nは、前記データをそれぞれ内部のメモリ12−1〜12−nに格納する(S7)。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている分割データからホストデータを再構築(復元)する。この場合、ディスクアレイコントローラ4のパリティ処理部19は、前記メモリ12−1〜12−mに格納されている各データの排他的論理和を計算してリードパリティデータとし、このリードパリティデータを前記メモリ12−nに格納されているパリティデータと比較することでリードパリティチェックを行う(S8)。
その結果、両者が一致すれば、リードパリティチェックが正常であり、整合性に矛盾が無かったとして、前記再構築(復元)したホストデータをホストアダプタ3へ転送する(S13)。その後、ホストアダプタ3は前記ホストデータをホスト1へ転送する(S12)。しかし、前記S8のリードパリティチェックで不一致の場合、パリティの整合性に矛盾が有ったとする。
すなわち、ディスクアレイコントローラ4は前記のようにパリティが不一致と分かった時点で以下のようなデータリカバリ処理を実施する。先ず、ディスクアレイコントローラ4は、端のデバイスアダプタ5−1のメモリ12−1に誤ったデータが入ってしまったと仮定する。この仮定の元で、前記RAID3のリカバリ方法によりホストデータを再構築してみる(S9)。
そしてこの再構築されたホストデータが正しいものか否かを、CRCチェック部20がホストCRCデータをチェックすることにより決定する(S10)。前記CRCチェック部20によるホストCRCチェックで整合性がとれた場合、そのホストデータは正しいとする。そして、ディスクアレイコントローラ4は、デバイスアダプタ5−1のメモリ12−1に誤ったデータが入っていたものと断定する。
もし、前記ホストCRCチェックで整合性がとれない場合は、このデバイスアダプタ5−1以外の他のデバイスアダプタ5−2〜5−nのメモリ12−2〜12−nに誤ったデータが入っているに違いないとする。このため、ディスクアレイコントローラ4は、誤ったデータが入っていると仮定するデバイスアダプタのメモリを隣のデバイスアダプタ5−2のメモリ12−2とし、かつデバイスアダプタ5−1のメモリ12−1を正確なデータが入っているものと仮定し、この仮定の元で、再度、ホストデータを再構築し、そのホストデータについてCRCチェック部20が前記ホストCRCチェックを行う。
これを全てのデバイスアダプタに対してホストCRCの整合性がとれるまで前記S9の処理から繰り返して行う。前記のようにして、ホストCRCチェックで整合性がとれた場合、このホストデータは正しいとする。そして、ディスクアレイコントローラ4は、その再構築したホストデータをホストアダプタ3へ転送する(S11)。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する(S12)。
(実施の形態2の説明)
§1:実施の形態2の装置の説明・・・図5参照
図5は実施の形態2の装置構成図である。以下、図5に基づいて実施の形態2の装置の構成を説明する。図示のように、ディスクアレイ装置は、ホスト1に接続されたディスクアレイ制御装置2と、前記ディスクアレイ制御装置2に接続された複数のディスク装置6−1〜6−n(n:ディスク装置の台数)によって構成されている。
また、ディスクアレイ制御装置2には、ホストアダプタ3と、ディスクアレイコントローラ4と、複数のデバイスアダプタ5−1〜5−nが設けてある。そして、ホストアダプタ3には、メモリ10が設けてあり、ディスクアレイコントローラ4にはパリティ処理部19と時刻データ処理部13と時計14が設けてあり、デバイスアダプタ5−1から5−nにはそれぞれメモリ12−1から12−nが設けてある。
前記パリティ処理部19はパリティデータの作成処理、チェック処理等を行うものである。時計14は時刻を計時するものであり、時刻データ処理部13は時計14の時刻を検出してその時刻データの処理を行うものである。なお、他の構成は前記実施の形態1と同じである。
§2:実施の形態2の処理概要の説明
実施の形態2は、RAID3のディスクアレイ装置の例である。この例では、図5に示したRAID3のディスクアレイ装置により、次のような処理を行う。データの書き込み時には、ホスト1から受信したホストデータを複数のデータに分割し、これら分割データからパリティデータを計算する。そして前記分割データとパリティデータに対し、現在時刻の時刻データを付加する。
その後、時刻データ付き分割データとパリティデータをディスク装置6−1〜6−nへ送り、前記ディスク装置の記録媒体に書き込む。この場合、時刻データ付き分割データはディスク装置6−1〜6−mに書き込み、前記時刻データ付きパリティデータはディスク装置6−nに書き込む。
また、ディスク装置からのデータリード時には、RAID3でのパリティチェックで整合性がとれなかった場合、各ディスク装置に書かれている時刻を比較し、一番古いものを誤ったデータとして、RAID3でのホストデータの再構築を行う。
すなわち、ディスク装置からのデータのリード時に、パリティチェックを行い、そのパリティチェックで不整合となった場合は、各ディスク装置に書かれている時刻データを参照し、古いものがあればそれを誤ったデータの入ったディスク装置であるとして、RAID3のリカバリ方法により正しいホストデータを再構築する。
§3:処理の説明・・・図6参照
図6は実施の形態2の処理説明図である。以下、図6に基づいて実施の形態2の処理を説明する。
(1) :RAID3でのライト時の処理
RAID3でのデータライト(書き込み)時の処理は次の通りである。この場合ディスク装置6−1〜6−mを分割データの格納用(データ用ディスク装置)とし、ディスク装置6−nをパリティデータの格納用(パリティ用ディスク装置)として、データのリード/ライト時の処理を次のようにして行う。
先ず、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する(a参照)。次に、ホストアダプタ3は、前記ホストデータをディスクアレイコントローラ4へ転送する(b参照)。
ディスクアレイコントローラ4はホストデータを受け取ると、RAID3に基づき、ホストデータをm個のデータに分割して、各ディスク装置6−1〜6−mに割り振るデータ(分割データ)を作成する。また、パリティ処理部19は、前記m個の分割データの排他的論理和を計算してパリティデータを作成する。
すなわち、前記ホストデータを分割した分割データをd1 、d2 、d3 ・・・dm 、パリティデータをPとすると、前記パリティデータPは、前記分割データd1 、d2 、d3 ・・・dm の各排他的論理和となる(d参照)。そして、時刻データ処理部13は時計14から現在時刻を読み取り、その時刻データを前記各分割データ、及びパリティデータに付加する。
次にディスクアレイコントローラ4は、ディスク装置6−1〜6−nに対してライトコマンドを発行すると共に、前記各時刻データ付き分割データをデバイスアダプタ5−1〜5−mへ転送する。これと同時に、デバイスアダプタ5−nには、前記時刻データ付きパリティデータを転送する。
その後、デバイスアダプタ5−1〜5−mは、各々接続されているディスク装置6−1〜6−mに前記ライトコマンドを送ると共に、前記時刻データ付き分割データを転送する。そして、ディスク装置6−1〜6−mは記憶媒体に前記時刻付き分割データを書き込む(ディスクデータの書き込み)。また、デバイスアダプタ5−nは、接続されているディスク装置6−nにライトコマンドを送ると共に、前記時刻データ付きパリティデータを転送し、ディスク装置6−nは記憶媒体に時刻付きパリティデータを書き込む(c参照)。
(2) :RAID3でのリード処理において、パリティの整合性に矛盾が無かった場合の処理説明
RAID3でのリード処理時に、パリティの整合性に矛盾がなかった場合の処理は次の通りである。先ず、ホスト1の発行したリードコマンドをホストアダプタ3が受信すると、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1〜6−nに対してリードコマンドを発行する。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードしたデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている分割データからRAID3に基づきホストデータを再構築(復元)する。この時、パリティ処理部19は、前記メモリ12−1〜12−mに格納されている各分割データの排他的論理和を計算してリードパリティとし、このリードパリティを前記メモリ12−nに格納されているパリティと比較することでリードパリティチェックを行う。
この場合、前記メモリ12−1〜12−mに格納されている分割データをd1 、d2 、d3 ・・・dm 、メモリ12−nに格納されているパリティデータをP、前記分割データd1 、d2 、d3 ・・・dm から計算したリードパリティデータをRPとすると、前記リードパリティデータRPは、前記各分割データd1 、d2 、d3 ・・・dm の排他的論理和となる。
そして前記リードパリティチェックでRP=Pとなれば、整合性に矛盾無しと判断する(e参照)。すなわち、前記リードパリティチェックの結果、両者が一致すれば(RP=P)、リードパリティチェックが正常であり、リードデータの整合性に矛盾が無かったとして、前記再構築したデータをホストアダプタ3へ転送する。その後、ホストアダプタ3は前記データをホスト1へ転送する。
(3) :RAID3でのリード処理において、パリティの整合性に矛盾が有った場合の処理説明
前記のように、ディスク装置からのデータリード時に、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている各分割データの排他的論理和を計算して求めたリードパリティデータRPと、デバイスアダプタ5−nのメモリ12−nに格納されているパリティデータPとの値が不一致(RP≠P)であった場合、整合性に矛盾が有るとして次の処理を行う。
この場合、時刻データ処理部13は、各デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されているデータの時刻を調べ、ディスクアレイコントローラ4はこの時刻が一番古いものを誤ったデータとして決定する。そして、ディスクアレイコントローラ4は、最古の時刻データを持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータからRAID3のデータリカバリ方法に基づき、ホストデータを再構築する。前記再構築されたホストデータは、正しいデータとしてホストアダプタ3へ転送される。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する。
§4:フローチャートによる処理の説明・・・図7参照
図7は実施の形態2の処理フローチャートである。以下、図7に基づいて実施の形態2の処理を説明する。なお、S21〜S32は各処理ステップを示す。
処理が開始され、ホストアダプタ3がホスト1の発行したコマンドを受信すると(S21)、ホストアダプタ3は前記コマンドをメモリ10に一時格納し、そのコマンドを解析して内容を判断する(S22)。その結果、前記コマンドがライトコマンドであれば、RAID3でのデータライト(書き込み)時の処理を次のようにして行う。
前記のように、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。そして、ホストアダプタ3は前記ホストデータをディスクアレイコントローラ4へ転送する(S23)。
ディスクアレイコントローラ4はホストデータを受け取ると、RAID3に基づき、ホストデータをm個のデータに分割して各ディスク装置6−1〜6−mに割り振る分割データを作成する。また、パリティ処理部19は前記m個の分割データの排他的論理和を計算してパリティデータを作成する。そして、時刻データ処理部13は時計14から現在時刻を読み取り、その時刻データを前記各分割データ及びパリティデータに付加する(S24)。
次にディスクアレイコントローラ4はディスク装置6−1〜6−nに対してライトコマンドを発行すると共に、前記時刻データ付き分割データをデバイスアダプタ5−1〜5−mへ転送する。これと同時に、デバイスアダプタ5−nには、前記時刻データ付きパリティデータを転送する。
その後、デバイスアダプタ5−1〜5−mは、各々接続されているディスク装置6−1〜6−mに前記ライトコマンドを送ると共に、前記時刻データ付き分割データを転送する。そして、ディスク装置6−1〜6−mは記憶媒体に前記時刻付き分割データを書き込む(ディスクデータの書き込み)。また、デバイスアダプタ5−nは、接続されているディスク装置6−nにライトコマンドを送ると共に、前記時刻データ付きパリティデータを転送し、ディスク装置6−nは記憶媒体に時刻付きパリティデータを書き込み(S25)ライト処理を終了する。
また、前記S22の処理で、受信したコマンドがリードコマンドであった場合、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1〜6−nに対してリードコマンドを発行する(S26)。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードした時刻付きデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される(S27)。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている分割データを用いてホストデータを再構築する。また、この時、パリティ処理部19は、デバイスアダプタ5−1〜5−mに格納されている分割データの排他的論理和を計算してリードパリティを作成し、前記リードパリティをデバイスアダプタ5−nのメモリ12−nに格納されているパリティデータと比較することでリードパリティチェックを行う(S28)。
その結果、両者が一致すれば、リードパリティチェックが正常であり、整合性に矛盾が無かったとして、前記再構築(復元)したホストデータをホストアダプタ3へ転送する(S32)。その後、ホストアダプタ3は前記ホストデータをホスト1へ転送する(S31)。
しかし、前記S28のリードパリティチェックで、不一致の場合、整合性に矛盾が有ったとする。すなわち、前記のようにパリティが不一致と分かった時点で以下のようなデータリカバリ処理を実施する。この場合、ディスクアレイコントローラ4は、各デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nに格納されているデータの時刻を調べ、この時刻が一番古いもの(最古の時刻を持ったデータ)を誤ったデータと決定する。そして、最古の時刻データを持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータから前記RAID3のデータリカバリ処理に基づき、ホストデータを再構築する(S29)。前記再構築されたホストデータは、正しいデータとしてホストアダプタ3へ転送される(S30)。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する(S31)。
(実施の形態3の説明)
§1:実施の形態3の装置の説明・・・図8参照
図8は実施の形態3の装置構成図である。以下、図8に基づいて実施の形態3の装置を説明する。図示のように、ディスクアレイ装置は、ホスト1に接続されたディスクアレイ制御装置2と、前記ディスクアレイ制御装置2に接続された複数のディスク装置6−1〜6−n(n:ディスク装置の台数)によって構成されている。
また、ディスクアレイ制御装置2には、ホストアダプタ3と、ディスクアレイコントローラ4と、複数のデバイスアダプタ5−1〜5−nが設けてある。そして、ホストアダプタ3には、メモリ10が設けてあり、ディスクアレイコントローラ4にはパリティ処理部19と時刻データ処理部13と時計14が設けてあり、デバイスアダプタ5−1から5−nにはそれぞれメモリ12−1から12−nが設けてある。
この場合、RAID5での処理を行うため、ディスク装置6−1〜6−nの全てに巡回的にパリティデータを分散して格納するものである。すなわち、パリティデータを特定のディスク装置ではなく、各ディスク装置に巡回的に分散して格納する。なお、他の構成は前記実施の形態2と同じである。
§2:実施の形態3の処理概要の説明
実施の形態3は、RAID5のディスクアレイ装置の例であり、次のように処理を行う。前記RAID5のディスクアレイ装置によるデータリード処理において、大量のデータを転送する場合、前記RAID3のように、全ディスク装置へのアクセスが行われればデータのパリティチェックを行うことは可能である。
そこで、前記実施の形態2と同様な処理により各ディスク装置に時刻付きデータを格納しておき、リード時には、各ディスク装置に書かれている時刻を比較し、一番古いものを誤ったディスクデータとして、ホストデータのRAID5のデータリカバリ方法によりホストデータの再構築を行う。
すなわち、RAID5では、リード時に大量のデータを転送する場合、RAID3のように、全ディスク装置へのアクセスが行われると、パリティチェックを行うことが可能である。この場合、実施の形態2と同じ処理によりホストデータを再構築する。
§3:処理の説明・・・図8参照
以下、図8に基づいて実施の形態3の処理を説明する。なお、以下に説明する処理は、全ディスク装置へのアクセスが行われる場合の例である。
(1) :RAID5でのライト時の処理
RAID5でのデータライト(書き込み)時の処理は次の通りである。この場合、ディスク装置6−1〜6−nの全てを分割データ及びパリティデータの格納用として、データのリード/ライト時の処理を次のようにして行う。
先ず、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。次に、ホストアダプタ3は、前記ホストデータをディスクアレイコントローラ4へ転送する。
ディスクアレイコントローラ4はホストデータを受け取ると、RAID5に基づき、ホストデータをセクタ単位でm(m=n−1)個のデータに分割して、パリティデータ格納用の1つのディスク装置を除く他の各ディスク装置に割り振る分割データを作成する。また、パリティ処理部19は、前記m個の分割データの排他的論理和を計算してパリティデータを作成する。そして、時刻データ処理部13は時計14から現在時刻を読み取り、その時刻データを前記各分割データ、及びパリティデータに付加する。
次にディスクアレイコントローラ4は、ディスク装置6−1〜6−nに対してライトコマンドを発行すると共に、前記時刻データ付き分割データをデバイスアダプタ5−1〜5−nの内の該当するm個のデバイスアダプタへ転送する。これと同時に、残りの1つのデバイスアダプタには、前記時刻データ付きパリティデータを転送する。
その後、前記時刻付き分割データを格納しているデバイスアダプタは、各々接続されているディスク装置に前記ライトコマンドを送ると共に、前記時刻データ付き分割データを転送する。そして、前記時刻付き分割データを受信したディスク装置は記憶媒体に前記時刻付き分割データを書き込む。また、時刻付きパリティデータを格納しているデバイスアダプタは、接続されているディスク装置にライトコマンドを送ると共に、前記時刻データ付きパリティデータを転送し、そのディスク装置は記憶媒体に時刻付きパリティデータを書き込む。
(2) :RAID5でのリード処理において、パリティの整合性に矛盾が無かった場合の処理説明
RAID5でのリード処理時に、パリティの整合性に矛盾がなかった場合の処理は次の通りである。先ず、ホスト1の発行したリードコマンドをホストアダプタ3が受信すると、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1〜6−nに対してリードコマンドを発行する。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードしたデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される。
その後、ディスクアレイコントローラ4は、デバイスアダプタのメモリに格納されている分割データからRAID5に基づきホストデータを再構築(復元)する。この時、パリティ処理部19は、前記メモリに格納されている各分割データの排他的論理和を計算してリードパリティとし、このリードパリティを前記いずれか1つのメモリに格納されているパリティデータと比較する。
その結果、両者が一致すれば、リードパリティチェックが正常であり、整合性に矛盾が無かったとして、前記再構築した(復元)データをホストアダプタ3へ転送する。その後、ホストアダプタ3は前記データをホスト1へ転送する。
(3) :RAID5でのリード処理において、パリティの整合性に矛盾が有った場合の処理説明
前記のように、ディスク装置からのデータリード時に、デバイスアダプタのメモリに格納されている各分割データの排他的論理和を計算して求めたリードパリティデータと、いずれか1つのデバイスアダプタのメモリに格納されているパリティデータとの値が不一致であった場合、整合性に矛盾が有るとして次の処理を行う。
この場合、時刻データ処理部13は、各デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nに格納されているデータの時刻を調べ、この時刻が一番古いものを誤ったデータとして決定する。そして、ディスクアレイコントローラ4は、最古の時刻データを持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータからRAID5のデータリカバリ方法に基づき、ホストデータを再構築する。前記再構築されたホストデータは、正しいデータとしてホストアダプタ3へ転送される。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する。
§4:フローチャートによる処理の説明・・・図9参照
図9は実施の形態3の処理フローチャートである。以下、図9に基づいて実施の形態3の処理を説明する。なお、S41〜S52は各処理ステップを示す。
処理が開始され、ホストアダプタ3がホスト1の発行したコマンドを受信すると(S41)、ホストアダプタ3は前記コマンドをメモリ10に一時格納し、そのコマンドを解析して内容を判断する(S42)。その結果、前記コマンドがライトコマンドであれば、RAID5でのデータライト(書き込み)時の処理を次のようにして行う。
前記のように、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。そして、ホストアダプタ3は前記ホストデータをディスクアレイコントローラ4へ転送する(S43)。
ディスクアレイコントローラ4は前記ホストデータを受け取ると、RAID5に基づき、ホストデータをセクタ単位でm個のデータに分割して各ディスク装置に割り振る分割データを作成する。また、パリティ処理部19は前記m個の分割データの排他的論理和を計算してパリティデータを作成する。そして、時刻データ処理部13は時計14から現在時刻を読み取り、その時刻データを前記分割データ及びパリティデータに付加する。
そして、ディスクアレイコントローラ4は、ディスク装置6−1〜6−nに対してライトコマンドを発行すると共に、前記時刻データ付き分割データと1個の時刻データ付きパリティデータをデバイスアダプタ5−1〜5−nへ転送する(S44)。
その後、デバイスアダプタ5−1〜5−nは、各々接続されているディスク装置6−1〜6−nに前記ライトコマンドを送ると共に、前記時刻データ付き分割データ、及び時刻付きパリティデータを転送する。そして、ディスク装置6−1〜6−nは記憶媒体に前記時刻付きデータを書き込む(S45)。この場合、いずれか1つのディスク装置に時刻付きパリティデータを格納し、他の複数のディスク装置に時刻付き分割データを格納する。前記処理が完了すると、ライト処理を終了する。
また、前記S42の処理で、受信したコマンドがリードコマンドであった場合、ホストアダプタ3は、そのリードコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで、各ディスク装置6−1〜6−nに対してリードコマンドを発行する(S46)。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードした時刻付きデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される(S47)。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nに格納されている分割データを用いてホストデータを再構築する。また、パリティ処理部19は、前記データの再構築と同時に、デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nのデータ内、パリティデータを除く、他のm個の分割データの排他的論理和を計算してリードパリティを作成し、このリードパリティを、前記メモリ12−1〜12−nのいずれか1つのメモリに格納されているパリティデータ(書き込み時に作成したパリティデータ)と比較することでリードパリティチェックを行う(S48)。
その結果、両者が一致すれば、リードパリティチェックが正常であり、整合性に矛盾が無かったとして、前記再構築(復元)したホストデータをホストアダプタ3へ転送する(S52)。その後、ホストアダプタ3は前記ホストデータをホスト1へ転送する(S51)。
しかし、前記S48のリードパリティチェック処理で不一致の場合、整合性に矛盾が有ったとする。すなわち、前記のようにパリティが不一致と分かった時点で以下のようなデータリカバリ処理を実施する。この場合、ディスクアレイコントローラ4は、各デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nに格納されているデータの時刻を調べ、この時刻が一番古いもの(最古の時刻を持ったデータ)を誤ったデータと決定する。
そして、最古の時刻データを持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータから前記RAID5のデータリカバリ方法に基づき、ホストデータを再構築する(S49)。前記再構築されたホストデータは、正しいデータとしてホストアダプタ3へ転送される(S50)。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する(S51)。
(実施の形態4の説明)
§1:実施の形態4の装置の説明・・・図10参照
図10は実施の形態4の装置構成図である。以下、図10に基づいて実施の形態4の装置の構成を説明する。図示のように、ディスクアレイ装置は、ホスト1に接続されたディスクアレイ制御装置2と、前記ディスクアレイ制御装置2に接続された2つのディスク装置6−1、6−2によって構成されている(ミラードディスク構成)。
また、ディスクアレイ制御装置2には、ホストアダプタ3と、ディスクアレイコントローラ4と、2つのデバイスアダプタ(DA)5−1、5−2が設けてある。そして、ホストアダプタ3には、メモリ10が設けてあり、ディスクアレイコントローラ4には時刻データ処理部13と時計14が設けてあり、デバイスアダプタ(DA)5−1、5−2にはそれぞれメモリ12−1、12−2が設けてある。
§2:実施の形態4の処理概要の説明
実施の形態4は、RAID1のディスクアレイ装置の例である。この例では、前記ディスクアレイ装置により次のようにして処理を行う。すなわち、前記ディスクアレイ装置により、ディスク装置6−1、6−2に格納されたミラーデータ相互の比較で結果が等しくなかった場合(データ不一致の場合)、各ディスク装置6−1、6−2に書かれている時刻を比較し、最新の時刻が書かれていた方のデータを正しいホストデータとして用いるものである。
§3:処理の説明・・・図10参照
以下、図10に基づいて実施の形態4の処理を説明する。
(1) :RAID1でのライト時の処理
RAID1でのデータのリード/ライト時の処理を次のようにして行う。先ず、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。次に、ホストアダプタ3は、前記ホストデータをディスクアレイコントローラ4へ転送する。
ディスクアレイコントローラ4が前記ホストデータを受け取ると、時刻データ処理部13は時計14から現在時刻を読み取り、その時刻データを前記ホストデータに付加する。次にディスクアレイコントローラ4は、ディスク装置6−1、6−2に対してライトコマンドを発行すると共に、前記時刻データ付きデータをデバイスアダプタ5−1、5−2へ転送する。
その後、デバイスアダプタ5−1、5−2は、各々接続されているディスク装置6−1、6−2に前記ライトコマンドを送ると共に、前記時刻データ付きデータを転送する。そして、ディスク装置6−1、6−2は記憶媒体に前記時刻付きホストデータを書き込む。このようにしてディスク装置6−1と6−2には同一の時刻データ付きホストデータ(ミラーデータ)が書き込まれる。
(2) :RAID1でのリード処理において、ミラーデータ相互の比較処理で結果が等しかった場合の処理説明
RAID1でのリード処理時に、ミラーデータ相互の比較処理で結果が等しかった場合の処理は次の通りである。先ず、ホスト1の発行したリードコマンドをホストアダプタ3が受信すると、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1、6−2に対してリードコマンドを発行する。
デバイスアダプタ5−1、5−2を介して前記リードコマンドを受信したディスク装置6−1、6−2は、指定されたアドレスのデータをリードする。そして、ディスク装置6−1、6−2からリードしたデータは、ディスク装置6−1、6−2に接続されている各デバイスアダプタ5−1、5−2に転送され、それぞれメモリ12−1、12−2に格納される。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1のメモリ12−1に格納されているデータと、デバイスアダプタ5−2のメモリ12−2に格納されているデータとの比較を行う(ミラーデータの比較)。その結果、両者が一致すれば、いずれか一方のデータ(例えば、メモリ12−1に格納されているデータ)を正しいホストデータであるとしてホストアダプタ3へ転送する。その後、ホストアダプタ3は前記データをホスト1へ転送する。
(3) :RAID1でのリード処理において、ミラーデータ相互の比較処理で結果が等しくなかった場合の処理説明
前記のように、ディスク装置からのデータのリード時に、デバイスアダプタ5−1、5−2のメモリ12−1、12−2に格納されているデータの比較で、両者が不一致であった場合、時刻データ処理部13は、各デバイスアダプタ5−1、5−2のメモリ12−1、12−2に格納されているデータの時刻を調べ、この時刻が古いものを誤ったデータとして決定する。
そして、ディスクアレイコントローラ4は、最新の時刻が書かれていた方のデータを正しいホストデータとして用いる。すなわち、古い時刻データを持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータを正しいホストデータとしてホストアダプタ3へ転送する。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する。
§4:フローチャートによる処理の説明・・・図11参照
図11は実施の形態4の処理フローチャートである。以下、図11に基づいて実施の形態4の処理を説明する。なお、S61〜S72は各処理ステップを示す。
処理が開始され、ホストアダプタ3がホスト1の発行したコマンドを受信すると(S61)、ホストアダプタ3は前記コマンドをメモリ10に一時格納し、そのコマンドを解析して内容を判断する(S62)。その結果、前記コマンドがライトコマンドであれば、RAID1でのデータライト(書き込み)時の処理を次のようにして行う。
前記のように、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。そして、ホストアダプタ3は前記ホストデータをディスクアレイコントローラ4へ転送する(S63)。
ディスクアレイコントローラ4はホストデータを受け取ると、RAID1に基づき処理を行う。この場合、時刻データ処理部13は時計14から現在時刻を読み取り、その時刻データを前記ホストデータに付加する。次にディスクアレイコントローラ4はディスク装置6−1、6−2に対してライトコマンドを発行すると共に、前記時刻データ付きデータをデバイスアダプタ5−1、5−2へ転送する(S64)。
その後、デバイスアダプタ5−1、5−2は、各々接続されているディスク装置6−1、6−2に前記ライトコマンドを送ると共に、前記時刻データ付きデータを転送する。そして、ディスク装置6−1、6−2は記憶媒体に前記時刻付きデータを書き込み(S65)ライト処理を終了する。
また、前記S62の処理で、受信したコマンドがリードコマンドであった場合、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで、各ディスク装置6−1、6−2に対してリードコマンドを発行する(S66)。
デバイスアダプタ5−1、5−2を介して前記リードコマンドを受信したディスク装置6−1、6−2は、指定されたアドレスのデータをリードする。そして、ディスク装置6−1、6−2からリードした時刻付きデータは、ディスク装置6−1、6−2に接続されている各デバイスアダプタ5−1、5−2に転送され、それぞれメモリ12−1、12−2に格納される(S67)。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1のメモリ12−1に格納されているデータと、デバイスアダプタ5−2のメモリ12−2に格納されているデータとの比較を行う。すなわちミラーデータを比較する(S68)。その結果、両者が一致すれば、前記メモリ12−1、または12−2のいずれかのデータ(両者は同じデータなのでどちらのデータでも良い)を正しいホストデータとしてホストアダプタ3へ転送する(S72)。その後、ホストアダプタ3は前記ホストデータをホスト1へ転送する(S71)。
しかし、前記S68の処理で、両者が不一致の場合、すなわち、ミラーデータが一致しなかった場合、その時点で以下のようなデータリカバリ処理を実施する。この場合、ディスクアレイコントローラ4は、各デバイスアダプタ5−1、5−2のメモリ12−1、12−2に格納されているデータの時刻を調べ、この時刻が古いものを誤ったデータとし、最新の時刻を持つデータを正しいデータとして決定する(S69)。
そして、前記決定した正しいデータ(ホストデータ)をホストアダプタ3へ転送する(S70)。その後、ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する(S71)。
(実施の形態5の説明)
§1:実施の形態5の装置の説明・・・図12参照
図12は実施の形態5の装置構成図である。以下、図12に基づいて実施の形態5の装置の構成を説明する。図示のように、ディスクアレイ装置は、ホスト1に接続されたディスクアレイ制御装置2と、前記ディスクアレイ制御装置2に接続された複数のディスク装置6−1〜6−n(n:ディスク装置の台数)によって構成されている。
また、前記ディスクアレイ制御装置2には、ホストアダプタ3とディスクアレイコントローラ4と、複数のデバイスアダプタ5−1〜5−nが設けてある。そして、ホストアダプタ3には、メモリ10が設けてあり、ディスクアレイコントローラ4には、パリティ処理部19と更新カウンタ22とカウンタデータ処理部21が設けてあり、デバイスアダプタ5−1から5−nにはそれぞれメモリ12−1から12−nが設けてある。
前記更新カウンタ16は、ディスクアレイコントローラ4により逐次カウンタ値が更新制御されるカウンタである。例えば、データのライト(書き込み)が行われる度にカウンタ値をインクリメントされるカウンタを使用する。また、カウンタデータ処理部21は、更新カウンタ22のカウンタ値を読み取り、書き込みデータに付加したり、或いはディスク装置からリードしたデータに付加されている更新カウンタのカウンタ値のチェックを行うものである。なお、他の構成は前記図2の装置と同じである。
§2:実施の形態5の処理の説明
実施の形態5は、前記実施の形態2の処理における時刻データの代わりとして前記更新カウンタのカウンタ値を用いた例である。この例ではRAID3により次のようにして処理を行う。
(1) :RAID3でのライト時の処理
RAID3でのデータライト(書き込み)時の処理は次の通りである。この場合ディスク装置6−1〜6−mを分割したデータの格納用とし、ディスク装置6−nをパリティデータの格納用として、データのリード/ライト時の処理を次のようにして行う。
先ず、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。次に、ホストアダプタ3は、前記ホストデータをディスクアレイコントローラ4へ転送する。
ディスクアレイコントローラ4はホストデータを受け取ると、RAID3に基づき、ホストデータをm個のデータに分割して、各ディスク装置6−1〜6−mに割り振る分割データを作成する。また、パリティ処理部19は、前記m個の分割データの排他的論理和を計算してパリティデータを作成する。そして、カウンタデータ処理部21は更新カウンタ22から現在のカウンタ値を読み取り、そのカウンタ値を前記各分割データ、及びパリティデータに付加する。
次にディスクアレイコントローラ4は、ディスク装置6−1〜6−nに対してライト命令を発行すると共に、前記カウンタ値付き分割データをデバイスアダプタ5−1〜5−mへ転送する。これと同時に、デバイスアダプタ5−nには、前記カウンタ値付きパリティデータを転送する。
その後、デバイスアダプタ5−1〜5−mは、各々接続されているディスク装置6−1〜6−mに前記ライトコマンドを送ると共に、前記カウンタ値付き分割データを転送する。そして、ディスク装置6−1〜6−mは記憶媒体に前記カウンタ値付き分割データを書き込む。また、デバイスアダプタ5−nは、接続されているディスク装置6−nにライトコマンドを送ると共に、前記カウンタ値付きパリティデータを転送し、ディスク装置6−nは記憶媒体にカウンタ値付きパリティデータを書き込む。
(2) :RAID3でのリード処理において、パリティの整合性に矛盾が無かった場合の処理説明
RAID3でのリード処理時に、パリティの整合性に矛盾がなかった場合の処理は次の通りである。先ず、ホスト1の発行したリードコマンドをホストアダプタ3が受信すると、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで、各ディスク装置6−1〜6−nに対してリードコマンドを発行する。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードしたデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている分割データからRAID3に基づきホストデータを再構築(復元)する。この時、パリティ処理部19は、前記メモリ12−1〜12−mに格納されている各分割データの排他的論理和を計算してリードパリティとし、このリードパリティを前記メモリ12−nに格納されているパリティデータと比較する。その結果、両者が一致すれば、リードパリティチェックが正常であり、整合性に矛盾が無かったとして、前記再構築(復元)したホストデータをホストアダプタ3へ転送する。その後、ホストアダプタ3は前記データをホスト1へ転送する。
(3) :RAID3でのリード処理において、パリティの整合性に矛盾が有った場合の処理説明
前記のように、ディスク装置からのデータのリード時に、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている各データの排他的論理和を計算して求めたリードパリティデータと、デバイスアダプタ5−nのメモリ12−nに格納されているパリティデータとの値が不一致であった場合、整合性に矛盾が有るとして次の処理を行う。
この場合、カウンタデータ処理部21は、各デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nに格納されているデータのカウンタ値を調べる。そして、ディスクアレイコントローラ4は最も古いカウンタ値を持つデータを誤ったデータとして決定する。
そして、ディスクアレイコントローラ4は、最古のカウンタ値を持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータからRAID3のデータリカバリ方法に基づき、ホストデータを再構築する。前記再構築されたホストデータは、正しいデータとしてホストアダプタ3へ転送される。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する。
§3:フローチャートによる処理の説明・・・図13参照
図13は実施の形態5の処理フローチャートである。以下、図13に基づいて実施の形態5の処理を説明する。なお、S81〜S92は各処理ステップを示す。
処理が開始され、ホストアダプタ3がホスト1の発行したコマンドを受信すると(S81)、ホストアダプタ3は前記コマンドをメモリ10に一時格納し、そのコマンドを解析して内容を判断する(S82)。その結果、前記コマンドがライトコマンドであれば、RAID3でのデータライト(書き込み)時の処理を次のようにして行う。
前記のように、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。そして、ホストアダプタ3は前記ホストデータをディスクアレイコントローラ4へ転送する(S83)。
ディスクアレイコントローラ4はホストデータを受け取ると、RAID3に基づき、ホストデータをm個のデータに分割して各ディスク装置6−1〜6−mに割り振る分割データを作成する。また、パリティ処理部19は前記m個の分割データの排他的論理和を計算してパリティデータを作成する。そして、カウンタデータ処理部21は更新カウンタ22から現在のカウンタ値を読み取り、そのカウンタ値を前記各分割データ及びパリティデータに付加する。
次にディスクアレイコントローラ4はディスク装置6−1〜6−nに対してライトコマンドを発行すると共に、前記作成した各ディスク装置毎のカウンタ値付き分割データをデバイスアダプタ5−1〜5−mへ転送する。これと同時に、デバイスアダプタ5−nには、前記カウンタ値付きパリティデータを転送する(S84)。
その後、デバイスアダプタ5−1〜5−mは、各々接続されているディスク装置6−1〜6−mに前記ライトコマンドを送ると共に、前記カウンタ値付き分割データを転送する。そして、ディスク装置6−1〜6−mは記憶媒体に前記カウンタ値付き分割データを書き込む。また、デバイスアダプタ5−nは、接続されているディスク装置6−nにライトコマンドを送ると共に、前記カウンタ値付きパリティデータを転送し、ディスク装置6−nは記憶媒体にカウンタ値付きパリティデータを書き込み(S85)ライト処理を終了する。
また、前記S82の処理で、受信したコマンドがリードコマンドであった場合、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1〜6−nに対してリードコマンドを発行する(S86)。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードしたカウンタ値付きデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される(S87)。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1〜5−mのメモリ12−1〜12−mに格納されている分割データからホストデータを再構築する。また、パリティ処理部19は、前記ホストデータの再構築と同時にデバイスアダプタ5−1〜5−mに格納されているデータの排他的論理和を計算してリードパリティを作成し、前記リードパリティをデバイスアダプタ5−nのメモリ12−nに格納されているパリティと比較することでリードパリティチェックを行う(S28)。
その結果、両者が一致すれば、リードパリティチェックが正常であり、整合性に矛盾が無かったとして、前記再構築したホストデータをホストアダプタ3へ転送する(S92)。その後、ホストアダプタ3は前記ホストデータをホスト1へ転送する(S91)。
しかし、前記S28のリードパリティチェック処理で、不一致の場合、整合性に矛盾が有ったとする。すなわち、前記のようにパリティが不一致と分かった時点で以下のようなデータリカバリ処理を実施する。この場合、ディスクアレイコントローラ4は、各デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nに格納されているデータのカウンタ値を調べ、このカウンタ値が一番古いもの(最古のカウンタ値を持ったデータ)を誤ったデータと決定する。
そして、最古のカウンタ値を持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータからRAID3のデータリカバリ処理に基づき、ホストデータを再構築する(S89)。前記再構築されたホストデータは、正しいデータとしてホストアダプタ3へ転送される(S90)。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する(S91)。
(実施の形態6の説明)
§1:実施の形態6の処理の説明・・・図12参照
実施の形態6は、実施の形態3の処理における時刻データの代わりとして前記更新カウンタのカウンタ値を用いた例である。なお、実施の形態6のディスクアレイ装置は前記実施の形態5の装置をRAID5の装置としたものなので、図12を援用して説明する。この例ではRAID5により次のようにして処理を行う。この場合、以下に説明する処理は、全ディスク装置へのアクセスが行われる場合の例である。
(1) :RAID5でのライト時の処理
RAID5でのデータライト時の処理は次の通りである。この場合、ディスク装置6−1〜6−nの全てを分割データ及びパリティデータの格納用として、データのリード/ライト時の処理を次のようにして行う。
先ず、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。次に、ホストアダプタ3は、前記ホストデータをディスクアレイコントローラ4へ転送する。
ディスクアレイコントローラ4はホストデータを受け取ると、RAID5に基づき、ホストデータをセクタ単位でm個のデータに分割して、パリティデータ格納用の1つのディスク装置を除く他の各ディスク装置に割り振る分割データを作成する。また、パリティ処理部19は、前記m個の分割データの排他的論理和を計算してパリティデータを作成する。そして、カウンタデータ処理部21は更新カウンタ22から現在のカウンタ値を読み取り、そのカウンタ値を前記各分割データ、及びパリティデータに付加する。
次にディスクアレイコントローラ4は、ディスク装置6−1〜6−nに対してライトコマンドを発行すると共に、前記カウンタ値付き分割データをデバイスアダプタ5−1〜5−nの内の該当するm個のデバイスアダプタへ転送する。これと同時に、残りの1つのデバイスアダプタには、前記カウンタ値付きパリティデータを転送する。
その後、前記カウンタ値付き分割データを格納しているデバイスアダプタは、各々接続されているディスク装置に前記ライトコマンドを送ると共に、前記カウンタ値付き分割データを転送する。そして、前記カウンタ値付き分割データを受信したディスク装置は記憶媒体に前記カウンタ値付き分割データを書き込む。また、カウンタ値付きパリティデータを格納しているデバイスアダプタは、接続されているディスク装置にライトコマンドを送ると共に、前記カウンタ値付きパリティデータを転送し、そのディスク装置は記憶媒体にカウンタ値付きパリティデータを書き込む。
(2) :RAID5でのリード処理において、パリティの整合性に矛盾が無かった場合の処理説明
RAID5でのリード処理時に、パリティの整合性に矛盾がなかった場合の処理は次の通りである。先ず、ホスト1の発行したリードコマンドをホストアダプタ3が受信すると、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1〜6−nに対してリードコマンドを発行する。
デバイスアダプタ5−1〜5−nを介して前記リードコマンドを受信したディスク装置6−1〜6−nは、指定されたアドレスのデータをリードする。そして、ディスク装置6−1〜6−nからリードしたデータは、ディスク装置6−1〜6−nに接続されている各デバイスアダプタ5−1〜5−nに転送され、それぞれメモリ12−1〜12−nに格納される。
その後、ディスクアレイコントローラ4は、デバイスアダプタのメモリに格納されている分割データからRAID5に基づきホストデータを再構築(復元)する。この時、パリティ処理部19は、前記メモリに格納されている各分割データの排他的論理和を計算してリードパリティとし、このリードパリティを前記いずれか1つのメモリに格納されているパリティデータと比較する。
その結果、両者が一致すれば、リードパリティチェックが正常であり、整合性に矛盾が無かったとして、前記再構築した(復元)データをホストアダプタ3へ転送する。その後、ホストアダプタ3は前記データをホスト1へ転送する。
(3) :RAID5でのリード処理において、パリティの整合性に矛盾が有った場合の処理説明
前記のように、ディスク装置からのデータリード時に、デバイスアダプタのメモリに格納されている各分割データの排他的論理和を計算して求めたリードパリティデータと、いずれか1つのデバイスアダプタのメモリに格納されているパリティデータとの値が不一致であった場合、整合性に矛盾が有るとして次の処理を行う。
この場合、時刻データ処理部13は、各デバイスアダプタ5−1〜5−nのメモリ12−1〜12−nに格納されているデータのカウンタ値を調べ、このカウンタ値が一番古いものを誤ったデータとして決定する。そして、ディスクアレイコントローラ4は、最古のカウンタ値を持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータからRAID5のデータリカバリ方法に基づき、ホストデータを再構築する。前記再構築されたホストデータは、正しいデータとしてホストアダプタ3へ転送される。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する。
(実施の形態7の説明)
§1:実施の形態7の処理の説明・・・図12参照
実施の形態7は、実施の形態4の処理における時刻データの代わりとして前記更新カウンタのカウンタ値を用いた例である。なお、実施の形態7のディスクアレイ装置は前記実施の形態5の装置をRAID4の装置としたものなので、図12を援用して説明する。この例ではRAID4により次のようにして処理を行う。
(1) :RAID1でのライト時の処理
RAID1でのデータのリード/ライト時の処理を次のようにして行う。先ず、ホストアダプタ3は、ホスト1よりライトコマンドと共に書き込み要求のあったホストデータを受信すると、そのホストデータをメモリ10に一時格納する。次に、ホストアダプタ3は、前記ホストデータをディスクアレイコントローラ4へ転送する。
ディスクアレイコントローラ4が前記ホストデータを受け取ると、カウンタデータ処理部21は更新カウンタ22から現在のカウンタ値を読み取り、そのカウンタ値を前記ホストデータに付加する。次にディスクアレイコントローラ4は、ディスク装置6−1、6−2に対してライトコマンドを発行すると共に、前記カウンタ値付きデータをデバイスアダプタ5−1、5−2へ転送する。
その後、デバイスアダプタ5−1、5−2は、各々接続されているディスク装置6−1、6−2に前記ライトコマンドを送ると共に、前記カウンタ値付きデータを転送する。そして、ディスク装置6−1、6−2は記憶媒体に前記カウンタ値付きホストデータを書き込む。このようにしてディスク装置6−1と6−2には同一のカウンタ値付きホストデータ(ミラーデータ)が書き込まれる。
(2) :RAID1でのリード処理において、ミラーデータ相互の比較処理で結果が等しかった場合の処理説明
RAID1でのリード処理時に、ミラーデータ相互の比較処理で結果が等しかった場合の処理は次の通りである。先ず、ホスト1の発行したリードコマンドをホストアダプタ3が受信すると、ホストアダプタ3は、そのコマンドの内容をディスクアレイコントローラ4へ通知する。この通知を受け取ったディスクアレイコントローラ4は、ホスト1より要求のあったアドレスで各ディスク装置6−1、6−2に対してリードコマンドを発行する。
デバイスアダプタ5−1、5−2を介して前記リードコマンドを受信したディスク装置6−1、6−2は、指定されたアドレスのデータをリードする。そして、ディスク装置6−1、6−2からリードしたデータは、ディスク装置6−1、6−2に接続されている各デバイスアダプタ5−1、5−2に転送され、それぞれメモリ12−1、12−2に格納される。
その後、ディスクアレイコントローラ4は、デバイスアダプタ5−1のメモリ12−1に格納されているデータと、デバイスアダプタ5−2のメモリ12−2に格納されているデータとの比較を行う(ミラーデータの比較)。その結果、両者が一致すれば、いずれか一方のデータ(例えば、メモリ12−1に格納されているデータ)を正しいホストデータであるとしてホストアダプタ3へ転送する。その後、ホストアダプタ3は前記データをホスト1へ転送する。
(3) :RAID1でのリード処理において、ミラーデータ相互の比較処理で結果が等しくなかった場合の処理説明
前記のように、ディスク装置からのデータのリード時に、デバイスアダプタ5−1、5−2のメモリ12−1、12−2に格納されているデータの比較で、両者が不一致であった場合、カウンタデータ処理部21は、各デバイスアダプタ5−1、5−2のメモリ12−1、12−2に格納されているデータのカウンタ値を調べ、このカウンタ値が古いものを誤ったデータとして決定する。
そして、ディスクアレイコントローラ4は、最新のカウンタ値が書かれていた方のデータを正しいホストデータとして用いる。すなわち、古いカウンタ値を持つ誤ったデータを除いて、他のデバイスアダプタのメモリに格納されているデータを正しいホストデータとしてホストアダプタ3へ転送する。ホストアダプタ3は前記データを受け取ると、そのデータをホスト1へ転送する。
(他の実施の形態)
以上実施の形態について説明したが、本発明は次のようにしても実施可能である。
(1) :前記時計の代わりにタイマを使用しても実現可能である。この場合、前記分割データ及びパリティデータに現在のタイマ値を付加してディスク装置に書き込み、データの読み出し時のパリティチェックで整合性に矛盾が有った場合は、前記タイマ値の比較により最古のタイマ値を持つデータを誤ったデータであるとして、ホストデータの再構築を行う。
(2) :前記更新カウンタは、データの書き込みが行われる度にカウンタ値が更新されるものでも良いが、このような例に限らず、例えば、一定時間毎にカウンタ値が更新されるものでも実現可能である。