(57)【要約】【課題】ディスクアレイに記録されたデータを有効に活用する。【解決手段】本発明は、ライトデータをストライプサイズに分割する手段（２２）と、分割された複数のストライプサイズのデータからパリティデータを生成する手段（２４）と、分割された複数のストライプサイズのデータの誤りをそれぞれ検出するための複数の誤り検出用コードをそれぞれ生成する手段（２３）と、分割された複数のストライプサイズのデータ及び誤り検出用コードの組を、対応するディスクアレイ装置に書き込む手段（２５）とを具備するＲＡＩＤコントローラ、である。【選択図】　図２
2004094547.tif 000002
【特許請求の範囲】
【請求項１】
ライトデータをストライプサイズに分割する手段と、
前記分割された複数のストライプサイズのデータからパリティデータを生成する手段と、
前記分割された複数のストライプサイズのデータの誤りをそれぞれ検出するための複数の誤り検出用コードをそれぞれ生成する手段と、
前記分割された複数のストライプサイズのデータ及び誤り検出用コードの組を、対応するディスクアレイ装置に書き込む手段と
を具備することを特徴とするＲＡＩＤコントローラ。
【請求項２】
ディスクアレイ装置からストライプサイズに分割された複数のデータ及びパリティデータ、これら複数のデータ及びパリティデータの誤りをそれぞれ検出するための複数の誤り検出用コードを読み出す手段と、
前記読み出されたパリティデータを使用して、前記読み出された複数のデータに誤りがあるか否かを判断する手段と、
誤りがあると判断された場合に、前記複数のデータ及びパリティデータのうち、いずれのデータに誤りがあるかを、前記複数のデータ及びパリティデータに対応する前記複数の誤り検出用コードを使用して、決定する手段と、
前記複数のデータ及びパリティデータのち、前記誤りがあると決定されたデータ以外のデータを使用して、前記誤りがあると決定されたデータを復元する手段と
を具備することを特徴とするＲＡＩＤコントローラ。
【請求項３】
前記誤り検出用コードは、ＣＲＣ（Ｃｙｃｌｉｃ　Ｒｅｄｕｎｄａｎｃｙ　Ｃｈｅｃｋ）コードであることを特徴とする請求項１又は請求項２記載のＲＡＩＤコントローラ。
【請求項４】
前記分割されたストライプサイズのデータ及びこの分割されたストライプサイズのデータに対応する誤り検出用コードの組は、１つのストライピングデータであることを特徴とする請求項１又は請求項２記載のＲＡＩＤコントローラ。
【請求項５】
前記パリティデータは、前記分割された複数のストライプサイズのデータの排他的論理和の値であることを特徴とする請求項１記載のＲＡＩＤコントローラ。
【請求項６】
前記誤りがあるか否かの判断は、前記読み出された複数のデータの排他的論理和の値が前記読み出されたパリティデータに一致するか否かにより判断することを特徴とする請求項２記載のＲＡＩＤコントローラ。
【請求項７】
ライトデータをストライプサイズに分割し、
前記分割された複数のストライプサイズのデータからパリティデータを生成し、
前記分割された複数のストライプサイズのデータの誤りをそれぞれ検出するための複数の誤り検出用コードをそれぞれ生成し、
前記分割された複数のストライプサイズのデータ及び誤り検出用コードを、対応するディスクアレイ装置に書き込むことを特徴とするＲＡＩＤコントローラにおけるディスクアレイ制御方法。
【請求項８】
ディスクアレイ装置からストライプサイズに分割された複数のデータ及びパリティデータ、これら複数のデータ及びパリティデータの誤りをそれぞれ検出するための複数の誤り検出用コードを読み出し、
前記読み出されたパリティデータを使用して、前記読み出された複数のデータに誤りがあるか否かを判断し、
誤りがあると判断された場合に、前記複数のデータ及びパリティデータのうち、いずれのデータに誤りがあるかを、前記複数のデータ及びパリティデータに対応する前記複数の誤り検出用コードを使用して、決定し、
前記複数のデータ及びパリティデータのち、前記誤りがあると決定されたデータ以外のデータを使用して、前記誤りがあると決定されたデータを復元することを特徴とするＲＡＩＤコントローラにおけるディスクアレイ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスクアレイを制御するＲＡＩＤコントローラ及びＲＡＩＤコントローラにおけるディスクアレイ制御方法に関する。
【０００２】
【従来の技術】
従来より、ディスクアレイを制御する方法としてＲＡＩＤによる手法が広く知られている。このＲＡＩＤにおいては、書き込みの対象となるデータをストライプサイズの複数のデータに分割し、この分割されたデータの排他的論理和の値をパリティデータとする。
【０００３】
そして、これらストライプサイズの複数のデータ及びパリティデータを、それぞれディスクアレイにストライピングすることにより書き込む。そして、読み出し時には、ディスクアレイにそれぞれ書き込まれた複数のデータ及びパリティデータを読み出し、この読み出された複数のデータの排他的論理和の値が読み出されたパリティデータの値に一致するか否かを判断することにより、データに誤りがあるか否かを判断することができる。
【０００４】
上述のＲＡＩＤ機能においては、例えば、ディスクアレイを構成するディスクのうち、１つのディスクが故障してアクセス不能になった場合に、残りのディスクアレイのデータ及びパリティデータからアクセス不能になったディスクのデータを復元することができるため、ディスクアレイを構成するディスクのうちの１台が縮退しても、正常にデータのリード／ライトを行なうことができるという冗長機能を有する。
【０００５】
【発明が解決しようとする課題】
上述のように、従来のＲＡＩＤ機能においては、特定のディスク或いは特定のストライプ内における障害により一部のデータが正しく書きこめなかった場合、上述のパリティデータを使用した整合性チェックにより、データに誤りがあることは検出することができる。
【０００６】
しかしながら、どのストライプのデータに誤りがあるのかを特定することができないため、他のディスクに書き込まれたデータを有効に活用することができないという問題があった。
【０００７】
本発明は、上記実情に鑑みてなされたものであり、ディスクアレイに記録されたデータを有効に活用することができるＲＡＩＤコントローラ及びＲＡＩＤコントローラにおけるディスクアレイ制御方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
したがって、上記目的を達成するために、本発明によれば、ライトデータをストライプサイズに分割する手段と、前記分割された複数のストライプサイズのデータからパリティデータを生成する手段と、前記分割された複数のストライプサイズのデータの誤りをそれぞれ検出するための複数の誤り検出用コードをそれぞれ生成する手段と、前記分割された複数のストライプサイズのデータ及び誤り検出用コードを、対応するディスクアレイ装置に書き込む手段とを具備することを特徴とするＲＡＩＤコントローラ、である。
【０００９】
また、本発明は、ディスクアレイ装置からストライプサイズに分割された複数のデータ及びパリティデータ、これら複数のデータ及びパリティデータの誤りをそれぞれ検出するための複数の誤り検出用コードを読み出す手段と、前記読み出されたパリティデータを使用して、前記読み出された複数のデータに誤りがあるか否かを判断する手段と、誤りがあると判断された場合に、前記複数のデータ及びパリティデータのうち、いずれのデータに誤りがあるかを、前記複数のデータ及びパリティデータに対応する前記複数の誤り検出用コードを使用して、決定する手段と、前記複数のデータ及びパリティデータのち、前記誤りがあると決定されたデータ以外のデータを使用して、前記誤りがあると決定されたデータを復元する手段とを具備することを特徴とするＲＡＩＤコントローラ、である。
【００１０】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態に係るディスクアレイ制御装置におけるＲＡＩＤコントローラについて説明する。
【００１１】
図１は、本発明の一実施の形態に係るＲＡＩＤコントローラを使用したディスクアレイ制御装置を示す図である。
【００１２】
同図に示すように、ホストが接続されるシステムバス１には、ディスクアレイ９ａ〜９ｃを制御するためのＲＡＩＤコントローラ２が接続されている。
【００１３】
ＲＡＩＤコントローラ２は、Ｉ／Ｆコントローラ３、ＣＰＵ４、ＲＯＭ５、ＲＡＭ６、ＨＤＤコントローラ８を具備し、これらはローカルバス７に接続されている。
【００１４】
Ｉ／Ｆコントローラ３は、システムバス（ＰＣＩバス）１とローカルバス７との間を接続するためのブリッジである。
【００１５】
．ＣＰＵ４は、ディスクアレイ９ａ〜９ｂの制御全般を司るものであり、システムバス１及びＳＣＳＩバス１０の制御などを行なう。
【００１６】
ＲＯＭ５は、ＣＰＵ４の制御を行なうプログラムを格納する。
【００１７】
ＲＡＭ６は、ＣＰＵ４が実行するプログラムのワークエリアと、システムバス１からのデータの格納及び処理、ＨＤＤコントローラ８のデータバッファとして使用するメモリである。
【００１８】
ＨＤＤコントローラ８は、ディスクアレイ９ａ〜９ｃを制御するためのコントローラである。
【００１９】
同図に示すように、本発明の実施の形態においては、ホストからのライトデータは、２つのデータ（ＤＡＴＡｎ−０，ＤＡＴＡｎ−１）に分割され、これら２つのデータ（ＤＡＴＡｎ−０，ＤＡＴＡｎ−１）及びこれら２つのデータ（ＤＡＴＡｎ−０，ＤＡＴＡｎ−１）に対応する２つのＣＲＣ（Ｃｙｃｌｉｃ　Ｒｅｄｕｎｄａｎｃｙ　Ｃｈｅｃｋ）コード（ＣＲＣｎ−０，ＣＲＣｎ−１）は、（ＤＡＴＡｎ−０，　ＣＲＣｎ−０）を１つのストライプ単位としてディスク９ａに書き込まれ、（ＤＡＴＡｎ−１，ＣＲＣｎ−１）を１つのストライプ単位としてディスク９ｂに書き込まれる。
【００２０】
また、２つのデータ（ＤＡＴＡｎ−０，ＤＡＴＡｎ−１）の排他的論理和の値であるパリティデータ（ＤＡＴＡｎ−Ｐ）及びこのパリティデータ（ＤＡＴＡｎ−Ｐ）のＣＲＣコード（ＣＲＣｎ−Ｐ）が１つのストライプ単位としてディスク９ｃに書き込まれる。
【００２１】
図２は、本発明の実施の形態に係るＲＡＩＤコントローラの機能ブロック図を示す図である。
【００２２】
同図に示すように、本発明の実施の形態に係るＲＡＩＤコントローラ２は、データ送受信部２１、データ分割部２２、ＣＲＣコード生成部２３、パリティデータ生成部２４、データリード／ライト部２５、誤りデータ判断部２６、誤りデータ決定部２７及び誤りデータ復元部２８を有する。
【００２３】
データ送受信部２１は、ホストからのライトデータを受信するとともに、誤りデータ復元部２８において復元されたリードデータをホストに送信する。
【００２４】
データ分割部２２は、データ送受信部２１において受信されたデータをディスクアレイ９ａ〜９ｃのストライプサイズの２つのデータに分割する。
【００２５】
パリティデータ生成部２４は、データ分割部２２において分割された２つのデータについてのパリティデータを生成する。具体的には、２つのデータについて排他的論理和を算出し、この算出された値をパリティデータとする。
【００２６】
ＣＲＣコード生成部２３は、データ分割部２２において分割された２つのデータ及びパリティデータ生成部２４において生成されたパリティデータそれぞれについて、誤り検出用のＣＲＣコードを生成する。
【００２７】
データリード／ライト部２５は、ＣＲＣコード生成部２３によって生成された２つのＣＲＣコード、パリティデータ生成部２４によって生成されたパリティデータ及びデータ分割部２２によって分割された２つのデータをストライピングすることにより書き込む。また、ディスクアレイ９ａ〜９ｃか２つのデータ、パリティデータ及びこれらに対応するＣＲＣコードを読み出す。
【００２８】
誤りデータ判断部２６は、読み出されたパリティデータを使用して、読み出された２つのデータに誤りがあるか否かの判断を行なう。具体的には、２つのデータの排他的論理和の値が、パリティデータと一致しない場合には、誤りであると判断する。
【００２９】
誤りデータ決定部２７は、誤りデータ判断部２６において、誤りがあると判断された場合に、２つのデータ及びパリティデータのうち、いずれのデータに誤りがあるかを、２つのデータ及びパリティデータに対応する２つのＣＲＣコードを使用して、決定する
誤りデータ復元部２８は、２つのデータ及びパリティデータのうち、誤りがあると決定されたデータ以外のデータを使用して、誤りがあると決定されたデータを復元する。
【００３０】
次に、本発明の実施の形態に係るＲＡＩＤコントローラのデータの書き込み動作を図３のフロチャート、図４のライト時におけるデータの流れを説明するための図を参照して説明する。
【００３１】
ホストからのライトデータ３１を受信すると、この受信されたライトデータ３１は、ディスクアレイ９ａ〜９ｃのストライプサイズの２つのデータ３１−１，３１−２に分割される（Ｓ１）。
【００３２】
次に、この２つのデータ３１−１、３１−２からパリティデータを生成する（Ｓ２）。具体的には、２つのデータ３１−１，３１−２について排他的論理和を算出し、この算出された値をパリティデータ３２とする。
【００３３】
その後、２つのデータ３１−１，３１−２及びパリティデータ３２のそれぞれについてＣＲＣ３３−１、３３−２、３３−３を生成する（Ｓ３）。そして、分割されたデータ（３１−１、３１−２）及びパリティデータ３２及びこれらに対応するＣＲＣコード（３３−１〜３３−３）を１つのストライピングで書き込む（Ｓ４）。
【００３４】
ストライピングの単位は、図４に示すように、（データ３１−１、ＣＲＣコード３３−１）、（データ３１−１、ＣＲＣコード３１−２）、（パリティデータ３２、ＣＲＣコード３３−３）の３組である。
【００３５】
次に、本発明の実施の形態に係るＲＡＩＤコントローラのデータの読み出し動作を図５のフロチャート、図６のリード時におけるデータの流れを説明するための図を参照して説明する。
【００３６】
ホストからの読み出し要求を受信すると、ＲＡＩＤコントローラは、読み出し要求において要求されたデータ及びこれに対応するパリティデータＣＲＣコードを読み出す（Ｓ２１）。ここでは、データ３１−１、３１−２。パリティデータ３２及びこれらに対応するＣＲＣコード３３−１〜３３−３が読み出されるものとする。
【００３７】
次に、読み出されたデータ３１−１、３１−２の排他的論理和の結果値がパリティデータ３２の値に等しいか否かの判断が行なわれる（Ｓ２２）。Ｓ２２におえる判断の結果、一致していると判断された場合には読み出されたデータは正しいデータであると判断される（Ｓ２３）。
【００３８】
一方、Ｓ２２において、一致していないと判断された場合には、次に、ＣＲＣコード３３−１〜３３−３を使用して、どのデータ３１−１〜３１−３に誤りがあるか否かを決定する（Ｓ２４）。
【００３９】
すなわち、データ３１−１はＣＲＣコード３３−１、データ３１−２はＣＲＣコード３３−２、データ３３−３はＣＲＣコード３３−３を使用して、誤りがチェックされる。ここでは、データ３１−２に誤りがあると決定されたものとする。
【００４０】
次に、誤りあると決定されたデータ３１−２以外のデータ３１−１及びパリティデータ３２を使用して、誤りがあると決定されたデータ３１−２を復元する（Ｓ２５）。
【００４１】
したがって、本発明の実施の形態に係るＲＡＩＤコントローラによれば、一部のデータに誤りがあっても、誤りのあるデータを特定し、データを復元することができるので、ディスクアレイに記録されたデータを有効に利用することができるとともに、ディスクアレイの信頼性を高めることができる。
【００４２】
なお。上述の実施の形態においては、３つのディスク９ａ〜９ｃを有するディスクアレイについて説明したが、これに限られるものではないことはいうまでもない。
【００４３】
また、誤り検出用コードとして、ＣＲＣコードを例にとり説明したが、パリティデータ、ハミング符号などを用いてもよい。
【００４４】
さらに、本願発明は、上記各実施形態に限定されるものでなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば実施形態に示される全構成要件から幾つかの構成要件が省略されることで発明が抽出された場合には、その抽出された発明を実施する場合には省略部分が周知慣用技術で適宜補われるものである。
【００４５】
【発明の効果】
以上詳記したように、本発明によれば、ディスクアレイに記録されたデータを有効に活用することができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態に係るＲＡＩＤコントローラを使用したディスクアレイ制御装置を示す図である。
【図２】本発明の実施の形態に係るＲＡＩＤコントローラの機能ブロック図を示す図である。
【図３】本発明の実施の形態に係るＲＡＩＤコントローラのデータの書き込み動作を説明するためのフロチャートである。
【図４】ライト時におけるデータの流れを説明するための図である。
【図５】本発明の実施の形態に係るＲＡＩＤコントローラのデータの読み出し動作を説明するためのフロチャートである。
【図６】リード時におけるデータの流れを説明するための図である。
【符号の説明】
１…システムバス、
２…ＲＡＩＤコントローラ、
３…Ｉ／Ｆコントローラ、
４…ＣＰＵ、
５…ＲＯＭ、
６…ＲＡＭ、
７…ローカルバス、
８…ＨＤＤコントローラ、
９ａ〜９ｃ…ディスク、
１０…ＳＣＳＩバス、
２１…データ送受信部、
２２…データ分割部、
２３…ＣＲＣコード生成部、
２４…パリティデータ生成部、
２５…データリード／ライト部、
２６…誤りデータ判断部、
２７…誤りデータ決定部、
２８…誤りデータ復元部。
【図１】
2004094547.tif 000003
【図２】
2004094547.tif 000004
【図３】
2004094547.tif 000005
【図４】
2004094547.tif 000006
【図５】
2004094547.tif 000007
【図６】
2004094547.tif 000008