(57)【特許請求の範囲】
【請求項１】
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよびガロア拡大体の演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有するディスクアレイ装置であって、
前記第１ディスク装置と前記第２ディスク装置とをそれぞれ所定数有し、
前記演算部で生成する冗長符号を生成する際に用いられる前記演算子の種類の数が前記第２ディスク装置の装置数より１つ以上少ないものであり、
前記演算部は、前記第１ディスク装置および前記第２ディスク装置のうち、任意の前記所定数以下のディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を生成することを特徴とするディスクアレイ装置。
【請求項２】
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよびガロア拡大体の演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有するディスクアレイ装置であって、
前記第１ディスク装置と前記第２ディスク装置とをそれぞれ所定数有するディスクアレイ装置に、
前記第１ディスク装置および前記第２ディスク装置のうち、任意の前記所定数以下のディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を前記第２ディスク装置の装置数より１つ以上少ない種類の数の前記演算子を用いて生成する機能を実現させるディスクアレイ制御用プログラム。
【請求項３】
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよびガロア拡大体の演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有し、
前記データと前記冗長符号とを２×ｎ（任意の自然数）台のディスク装置にそれぞれ書き込むディスクアレイ装置であって、
前記演算部で生成する冗長符号を生成する際に用いられる前記演算子の種類の数が前記ｎより１つ以上少ないものであり、
前記データを書き込んだ第１ディスク装置及び前記第２ディスク装置のうち、任意のｎ台以下の第１ディスク装置及び第２ディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を生成することを特徴とするディスクアレイ装置。
【請求項４】
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよびガロア拡大体の演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有し、
前記データと前記冗長符号とを２×ｎ（任意の自然数）台のディスク装置にそれぞれ書き込むディスクアレイ装置に、
前記データを書き込んだ第１ディスク装置及び前記第２ディスク装置のうち、任意のｎ台以下の第１ディスク装置及び第２ディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を、前記ｎより１つ以上少ない種類の数の前記演算子を用いて生成する機能を実現させるディスクアレイ制御用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の外部装置として用いられるディスクアレイ装置およびディスクアレイ制御用プログラムに関する。
【背景技術】
【０００２】
ディスクアレイ装置では、データの喪失を防ぐために、データに冗長符号を付加して記録するものが開発されている。このようなディスクアレイ装置は通常、冗長性と制御方式により、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks、又はRedundant Arrays of Independent Disks）０からＲＡＩＤ５まで、６種類に分類される。
【０００３】
更に今日では、下記非特許文献１の論文に基づく技術をディスクアレイ装置に実装することにより、ＲＡＩＤ６やダブル・パリティ（Double Parity）などと呼ばれる、多冗長性をもつディスクアレイ装置も実現されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】James S.Plank，「A Tutorial on Reed−Solomon Coding for Fault-Tolerance in RAID−like Systems」（Software-Practice and Experience，Volume 27，Number ９，September 1997，page 995-1012）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ディスクアレイ装置では、冗長性を高めることにより装置としての信頼性を高めることが可能であり、このように信頼性を高めることにより、記録された情報が失われるデータ喪失の発生確率を下げることが可能になる。ただし、冗長性は装置の記録容量とトレードオフの関係にあり、冗長性を高めると、実際の情報を記録するのに使用できる容量が削減される。また、冗長性を高めると、冗長符号の演算に必要な演算回路の大規模化および当該演算回路のコストの上昇を招き、結果として、ディスクアレイ装置の単価も上昇する。
【０００６】
例えば、ＲＡＩＤ１の構成は、冗長性が高く冗長演算がほぼ不要のため、高信頼性用途に用いられる。このＲＡＩＤ１は、同じデータを２台のディスク装置に記録する方式であり、これはミラーリングとも呼ばれる。
【０００７】
ただしＲＡＩＤ１では、ミラーリングされた２台のディスク装置が共に故障するような事態が生じた場合、データ喪失が発生する可能性がある。例えば、１２台のディスク装置でＲＡＩＤを構築する場合、ＲＡＩＤ１構成では、ディスク装置が故障する確率をｐとすると、６×ｐ×ｐの確率でデータ喪失が発生する。これは、任意の２台のディスクの組み合わせ数７２の内、ミラーリングされたディスクの組み合わせの６通りで故障が発生した場合のみ、データ喪失が発生することを意味している。
【０００８】
以上のような複数のディスク装置の故障に対応するためには、非特許文献１の論文に基づく多冗長構成のディスクアレイを構築する必要がある。例えば、ＲＡＩＤ６と呼ばれる方式では任意の２台のディスク装置に故障が発生しても、データを復旧することが可能である。
【０００９】
ただし、ＲＡＩＤ６の方式でも、３台以上のディスクで障害が発生した場合、データ喪失が発生する可能性がある。
【００１０】
非特許文献１には、任意のｍ台のディスク装置に故障が発生しても、データの復元が可能なディスクアレイ装置の構成方法が示されている。より詳細には、非特許文献１では、ガロア拡大体を用いたリード・ソロモン（Reed-Solomon）符号に類似した方法で、冗長符号を付与する方法が示されている。
【００１１】
図９は、非特許文献１に記載されている方法を、ｎ台のデータを記録するディスク装置（データディスク装置）と、同じくｎ台の冗長符号を記録するディスク装置（冗長ディスク装置）を有するディスクアレイ装置に実装する方式を説明するための図である。図９において、ガロア拡大体の演算子Ｔは、ガロア拡大体の原子根に対応し、Ｔの添え字は他の根に対応する。また、非特許文献１およびリード・ソロモン符号では、ガロア拡大体の根に対応する演算子を、変換行列ＴおよびＴのべき乗の形で表現する。
【００１２】
図１０は、非特許文献１に記載されている方法を６台のデータディスク装置に対して、６台の冗長ディスク装置を有するディスクアレイ装置に実装した場合の具体例である。図１０に示すように、ガロア拡大体として、ｇｆ（２＾４）を使用している。
【００１３】
図１１は、図１０に示すように非特許文献１に記載されている方法をディスクアレイ装置に実装した場合の問題点を説明するための図である。図１１においては、データディスク装置ｄ１およびｄ６、および冗長ディスク装置ｃ２、ｃ３、ｃ５、ｃ６に障害が発生した場合のデータ復旧方法を示している。
【００１４】
図１１に示すように、冗長ディスク装置が故障している行については、元データの復元に当該冗長ディスク装置に記録されている冗長符号を利用できないため、冗長ディスク装置のある行を用いて、データの復旧を行っている。データの復旧を行うためには、冗長ディスク装置のある行と、故障したデータディスク装置のある行との交点にある演算子を抽出し、部分行列を求める。この求めた部分行列から逆行列を求めることで、故障したデータディスク装置のデータを求めることができる。
【００１５】
しかし、図１１に示すように、抽出した部分行列の各要素がすべてＩとなっており、行列が非正則であるため、逆行列が求められない。即ち、データの復旧が行えなくなっている。このため非特許文献１に記載の方法に基づき、データの復旧が行えないという問題を回避するためには、符号化に用いるガロア拡大体を、より周期の長い体に変更する必要がある。例えば、ｇｆ（２＾８）を用いれば、前述の問題は解決するがｇｆ（２＾８）は、ｇｆ（２＾４）に比べ演算が複雑になり、装置の回路実装コストが高くなる、および演算負荷が高くなるという問題が発生する。
【００１６】
本発明は、上記事情に鑑みてなされたものであり、その目的は、冗長符号の演算を行なう演算装置を低コストにすると共に、当該演算装置の演算負荷を小さくすることができるディスクアレイ装置およびディスクアレイ制御用プログラムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明は、上位装置から送信されるデータを書き込む第１ディスク装置と、前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有するディスクアレイ装置であって、前記第１ディスク装置と前記第２ディスク装置とをそれぞれ所定数有し、前記演算部で生成する冗長符号を生成する際に用いられる演算子の種類の数が前記第２ディスク装置の装置数より１つ以上少ないものであり、前記演算部は、前記第１ディスク装置および前記第２ディスク装置のうち、任意の前記所定数以下のディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を生成することを特徴とする。
【００１８】
他の本発明は、上位装置から送信されるデータを書き込む第１ディスク装置と、前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有するディスクアレイ装置であって、前記第１ディスク装置と前記第２ディスク装置とをそれぞれ所定数有するディスクアレイ装置に、前記第１ディスク装置および前記第２ディスク装置のうち、任意の前記所定数以下のディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を前記第２ディスク装置の装置数より１つ以上少ない種類の数の演算子を用いて生成する機能を実現させるディスクアレイ制御用プログラムである。
【００１９】
他の本発明は、上位装置から送信されるデータを書き込む第１ディスク装置と、前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有し、前記データと前記冗長符号とを２×ｎ（任意の自然数）台のディスク装置にそれぞれ書き込むディスクアレイ装置であって、前記演算部で生成する冗長符号を生成する際に用いられる演算子の種類の数が前記ｎより１つ以上少ないものであり、前記データを書き込んだ第１ディスク装置及び前記第２ディスク装置のうち、任意のｎ台以下の第１ディスク装置及び第２ディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を生成することを特徴とする。
【００２０】
他の本発明は、上位装置から送信されるデータを書き込む第１ディスク装置と、前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有し、前記データと前記冗長符号とを２×ｎ（任意の自然数）台のディスク装置にそれぞれ書き込むディスクアレイ装置に、前記データを書き込んだ第１ディスク装置及び前記第２ディスク装置のうち、任意のｎ台以下の第１ディスク装置及び第２ディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を、前記ｎより１つ以上少ない種類の数の演算子を用いて生成する機能を実現させるディスクアレイ制御用プログラムである。
【発明の効果】
【００２１】
本発明によると、冗長符号の演算を行なう演算装置を低コストにすると共に、当該演算装置の演算負荷を小さくすることができるディスクアレイ装置およびディスクアレイ制御用プログラムを提供できる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態に係るディスクアレイ装置の構成を示す図である。
【図２】同実施の形態に係る冗長符号の演算行列を示す図である。
【図３】同実施の形態に係るＲＡＩＤ演算の変換行列の一例を示す図である。
【図４】同実施の形態に係るＲＡＩＤの構成を示す図である。
【図５】同実施の形態に係るＲＡＩＤ演算子の構成を示す図である。
【図６】同実施の形態に係るＲＲＡＩＤエンジンの処理の例を説明するための図である。
【図７】同実施の形態に係るＲＡＩＤエンジンの処理と従来術との対比を説明するための図である。
【図８】本発明の他の実施の形態に係るディスクアレイ装置の構成を示す図である。
【図９】従来技術を説明するための図である。
【図１０】従来技術を説明するための図である。
【図１１】従来技術の問題点を説明するための図である。
【発明を実施するための形態】
【００２３】
図１は、本発明を適用したディスクアレイ装置の構成を示す図である。同図に示すように、ディスクアレイ装置１は、ＲＡＩＤコントローラ１１、インタフェース１１１、演算部であるＲＡＩＤエンジン１３、および複数のディスク装置１２１１〜１２４３を有している。
【００２４】
ＲＡＩＤコントローラ１１は内部エンジン経路１３１を介してＲＡＩＤエンジン１３と通信可能に構成されている。また、ＲＡＩＤコントローラ１１はインタフェース１１１を介して上位装置（例えば、サーバ：図示を省略する。）と、内部ディスク経路１２１〜１２４を介してディスク装置１２１１〜１２４３とそれぞれ通信可能に接続されている。複数のディスク装置１２１１〜１２１３，１２２１〜１２２３，１２３１〜１２３３及び１２４１〜１２４３は、内部経路１２１，１２２，１２３及び１２４を介してそれぞれＲＡＩコントローラ１１に接続されている。
【００２５】
ＲＡＩＤコントローラ１１は、ディスクアレイ装置１内の各装置を制御する。また、ＲＡＩＤコントローラ１１はインタフェース１１１を介して上位装置からコマンドを受信し、当該コマンドに応じた処理を実行する。例えば、上位装置からインタフェース１１１を介してライトコマンドを受信した場合、複数のディスク装置１２１１〜１２４３のうちの所定のディスク装置（データディスク装置又は第１ディスク装置ともいう）へデータをライトすると共に所定のディスク装置へ当該データから演算した冗長符号を所定のディスク装置（冗長ディスク装置又は第２ディスク装置ともいう）へ書き込む。本実施の形態においては、データを書き込むディスク装置と、当該データから演算された冗長符号を書き込むディスク装置とは同数となるように構成されている。言い換えれば、データと冗長符号とを２×ｎ（任意の自然数）台のディスク装置にそれぞれ書き込むように構成されている。更に、ＲＡＩＤコントローラ１１は、冗長符号の演算および、ディスク故障時にデータ復旧処理を行なうためＲＡＩＤエンジン１３を制御する。
【００２６】
ＲＡＩＤエンジン１３は、例えば、ＬＳＩ（Large Scale Integration）であり、内部エンジン経路１３１を介してＲＡＩＤコントローラ１１からデータ、冗長符号データ、又は演算指示を受け取り、内部でＲＡＩＤ演算（ガロア拡大体演算）を実施する。ＲＡＩＤエンジン１３は、ＲＡＩＤ演算を実施した後、当該演算結果を再び内部エンジン経路１３１を介してＲＡＩＤコントローラ１１に送り返す。
【００２７】
図２は、本発明で用いるＲＡＩＤ演算を実施するための冗長符号の演算行列を示している。なお、同図においては、演算子として、Ｔのべき乗を用いており、Ｔのべき乗がＩと等しくならない限り拡張が可能である。
【００２８】
例えば、ｇｆ（２＾４）では、Ｔの１５乗未満であれば独立であるため、Ｔの１４乗までの実装、即ち、１６台のデータディスクに対して、１６台の冗長ディスクを付与する構成が可能である。
【００２９】
図３は本実施の形態におけるディスクアレイ装置１が実行する、ＲＡＩＤ演算の変換行列（演算行列）を示している。
【００３０】
図３に示すように、変換行列は、演算子として単位演算子Ｉと、ガロア拡大体の根に対応する演算子ＴおよびＴの２乗から４乗までの、５つの演算子のみで構成されている。これは、図１０を参照して説明した従来技術の変換行列の演算子が１１種類必要であったことに比べ、大幅に演算子の数が減少している。なお、この実施の形態では、上述のように大幅に演算子の数が減少しているが、演算子は、１つ以上少なくなるように構成すれば演算の負荷を減少する効果を得ることができる。
【００３１】
また、図３においては、入力データｄ１〜ｄ６にベクトル変換を施し、冗長符号ｃ１〜ｃ６を演算している。
【００３２】
図４は、ＲＡＩＤエンジン１３の構成を示す図である。同図に示すように、ＲＡＩＤエンジン１３は、入出力インタフェース１３２、ＲＡＩＤエンジン出力バス１３２１、ＲＡＩＤバッファ１３３、ＲＡＩＤエンジン内部バス１３３１〜１３３６、演算行列１３４、ＲＡＩＤ演算子１３４１１〜１３４６６、ＲＡＩＤ加算機１３４１〜１３４６、演算格納バッファ１３４１７〜１３４６７、ＲＡＩＤ演算出力バス１３５１〜１３５６、ＲＡＩＤ演算出力バッファ１３５、および、ＲＡＩＤエンジン出力バス１３２２を有している。
【００３３】
なお、入出力インタフェース１３２は、内部エンジン経路１３１を介してＲＡＩＤコントローラ１１と通信可能に接続されている。
【００３４】
次に、ＲＡＩＤエンジン１３のＲＡＩＤ演算処理を説明する。
【００３５】
ＲＡＩＤエンジン１３は、入出力インタフェース１３２を介してＲＡＩＤコントローラ１１から受け取ったデータおよびコマンドをＲＡＩＤエンジン出力バス１３２１を介してＲＡＩＤバッファ１３３へ送付する。
【００３６】
ＲＡＩＤバッファ１３３は、受け取ったデータおよびコマンドを、ＲＡＩＤエンジン内部バス１３３１〜１３３６を介して演算行列１３４内部の、各ＲＡＩＤ演算子１３４１１〜１３４６６に送付する。
【００３７】
ＲＡＩＤ演算子１３４１１〜１３４６６は、行列状に配置されており、ＲＡＩＤエンジン内部バス１３３１〜１３３６を用いて、同一列の演算子にデータをブロードキャストすることが可能である。
【００３８】
ＲＡＩＤ演算子１３４１１〜１３４６６は、個々にガロア拡大体の演算子として機能する。ＲＡＩＤエンジン内部バス１３３１〜１３３６より入力されたデータに対して、各々固有の演算子を作用させ、その演算結果をＲＡＩＤエンジン加算機１３４１〜１３４６に出力する。
【００３９】
ＲＡＩＤエンジン加算機１３４１〜１３４６は、ＲＡＩＤ演算子１３４１１〜１３４６６から入力されたガロア拡大体の値を加算し、演算格納バッファ１３４１７〜１３４６７に出力する。
【００４０】
演算格納バッファ１３４１７〜１３４６７は、ＲＡＩＤエンジン加算機１３４１〜１３４６から入力された演算結果をＲＡＩＤ演算出力バス１３５１〜１３５６を介して、ＲＡＩＤエンジン出力バッファ１３５に出力する。
【００４１】
ＲＡＩＤエンジン出力バッファ１３５は、ＲＡＩＤエンジン出力バス１３２２を介して、入出力インタフェース１３２へ演算結果を出力する。
【００４２】
入出力インタフェース１３２は、ＲＡＩＤエンジン出力バッファ１３５から入力された演算結果をＲＡＩＤエンジン経路１３１経由でＲＡＩＤコントローラ１１へ送付する。以上のように、ＲＡＩＤ演算処理が実施される。
【００４３】
なお、図４を参照して説明した変換行列は、６行６列の行列式の場合を示しているが、当該変換行列はあくまで一実施の形態であり、６行６列の行列式に固定されるものではない。
【００４４】
また、図４においては、各ＲＡＩＤ演算子１３４１１〜１３４６６を、変換行列Ｔのべき乗の形で記述している。本実施の形態ではｇｆ（２＾４）のガロア拡大体を演算するロジックを想定しているが、これは、ｇｆ（２＾４）のガロア拡大体のベクトル変換が、ガロア拡大体ｇｆ（２＾４）の原始多項式ｘ＾４＋ｘ＋１＝０に基づく同伴行列Ｔとそのべき乗行列によって演算可能なことが、非特許文献１に示されているからである。
【００４５】
また、本実施の形態では、ガロア拡大体（２＾４）を用いているが、他のガロア拡大体を用いることも可能である。
【００４６】
図５は、図４の各ＲＡＩＤ演算子１３４１１〜１３４６６の構成を示す図である。図５においては、一例として、ＲＡＩＤ演算子１３４１１の構成を示している。なお、他のＲＡＩＤ演算子１３４１２〜１３４６６の構成は、ＲＡＩＤ演算子１３４１１の構成と同様であるため詳細な説明を省略する。
【００４７】
図５に示すように、ＲＡＩＤ演算子ＲＯ（１３４１１）はガロア拡大体ｇｆ（２＾４）上の演算子として、４行４列の変換行列ＲＯ２として表現される。ＲＡＩＤ演算子ＲＯは、入力バッファＲＯ１、演算入力バスＲＯ１１〜ＲＯ１４、加算機ＲＯ２１〜ＲＯ２４、出力バッファＲＯ１３、出力バスＲ１３１を有している。
【００４８】
次に、ＲＡＩＤ演算子ＲＯ（１３４１１）の動作について説明する。
【００４９】
図５に示すように、データは入力バスＲＯ１１５を介して入力バッファＲＯ１に入力される。ガロア拡大体ｇｆ（２＾４）上では、データは４ｂｉｔベクトルで表される。入力バッファＲＯ１に入力されたデータは、演算子入力バスＲＯ１１〜ＲＯ１４を介して変換行列ＲＯ２に入力される。
【００５０】
変換行列ＲＯ２は入力値を加算機ＲＯ２１〜ＲＯ２４によりベクトル変換し、当該ベクトル変換した演算結果を出力バッファＲＯ３に出力する。
【００５１】
このように出力バッファＲＯ３に加算機ＲＯ２１〜ＲＯ２４から入力された演算結果は、出力バスＲＯ１３１により、既述のＲＡＩＤエンジン加算機１３４１に出力される。以上のようにＲＡＩＤ演算子ＲＯ（１３４１１）が動作する。
【００５２】
なお、本実施の形態では、変換行列ＲＯ２としてガロア拡大体（２＾４）の原始多項式ｘ＾４＋ｘ＋１＝０に基づく同伴行列Ｔを用いるが、この構成に限定されるものではない。
【００５３】
次に、図６を参照して、本実施の形態におけるＲＡＩＤエンジン１３が実行する冗長符号の演算方法の一例を説明する。同図においては、ＲＡＩＤエンジン１３は、データｄ１〜ｄ６の入力に対して、演算行列１３４で変換を行い、冗長符号ｃ１〜ｃ６を演算し、この演算結果をＲＡＩＤコントローラ１１へ出力するように構成されている。
【００５４】
次に、図７を参照して、既述の図１１を参照して説明した従来技術との対比を説明する。この対比を明確にするため、図１１と同様に、データｄ１，ｄ６と冗長符号ｃ２，ｃ３，ｃ５，ｃ６が障害で失われた場合に、当該データｄ１，ｄ６と冗長符号ｃ２，ｃ３，ｃ５，ｃ６を復旧する方法で説明する。
【００５５】
図７に示すように、ＲＡＩＤエンジン１３において、データｄ２，ｄ３，ｄ４，ｄ５と冗長符号ｃ１，ｃ４が入力された場合、行列変換を行なって、データｄ１，ｄ６を復旧することができ、この処理と同時に、冗長符号ｃ２，ｃ３，ｃ５，ｃ６を再計算する処理も実施することができる。
【００５６】
以上のように構成されたディスクアレイ装置１によると、ディスクアレイ装置１によると、冗長符号を記録するディスク装置の装置数（以下、ｎ台ともいう。）以下のディスク装置（データディスク装置及び冗長ディスク装置）のデータが喪失しても、当該データを復旧することが可能になる。
【００５７】
他方、ディスクアレイ装置１は、いかなるｎ台の組み合わせ故障に対してもデータが保証できるため、ＲＡＩＤ１構成よりも高い信頼性を保証することが可能である。
【００５８】
また、ディスクアレイ装置１は、非特許文献１に記載されている方式より、冗長符号の演算が容易である。特に非特許文献１に記載されている方法では、ディスク装置の冗長度が大きくなると同時に、演算に採用するガロア拡大体も多値対応のものを使用する必要がある。これによりは、同方法では、実演算に対しては演算ビット数の増大となり、演算リソースを浪費する。これに対して、ディスクアレイ装置１は、必要なガロア拡大体を少ないビット数で表示可能であり、演算リソースを削減することが可能である。
【００５９】
たとえば、データディスク装置６台、冗長符号ディスク装置６台で構成するディスクアレイ装置の場合、非特許文献１の論文の構成では、図１１で示したように、ガロア拡大体としてｇｆ（２＾５）以上の符号を使用しなくてはならない。なぜならば図１０の行列式から、周期１６以上のガロア拡大体が必要であるからである。ｇｆ（２＾４）のガロア拡大体の周期は１５＝２＾４−１であるため、図１０の実装には不十分である。また、この技術を実装した場合、ガロア拡大体の値がデータのビット幅に依存するため、ｇｆ（２＾８）やｇｆ（２＾１６）が用いられる。これらは、ｇｆ（２＾４）に比べて、演算が複雑であり、計算リソースを浪費する。
【００６０】
これに対して、ディスクアレイ装置１は、ｇｆ（２＾４）を使用する場合でも、１６台のデータディスク装置と１６台の冗長符号ディスク装置まで実装可能であり、演算コストを大幅に削減することが可能である。
【００６１】
（他の実施の形態）
図８、本発明の他の実施の形態におけるディスクアレイ装置の構成を示す図である。なお、上述した実施の形態とは、ＲＡＩＤコントローラ１１の内部の構成が異なるのみであるため、他の構成については同一の符号を付し、詳細な説明は省略する。
【００６２】
同図に示すように、ＲＡＩＤコントローラ１１は、ＲＡＩＤプロセッサ１１２とＲＡＩＤエンジンプログラム１１２１を有している。ＲＡＩＤエンジンプログラム１１２１は、既述のＲＡＩＤエンジン１３が実施するＲＡＩＤ演算処理と同様な処理を行なうためのプログラムである。
【００６３】
したがって、ディスクアレイ装置１は、ＲＡＩＤプロセッサ１１２がＲＡＩＤエンジンプログラム１１２１を実行することにより、既述のＲＡＩＤエンジン１３が実行するＲＡＩＤ演算処理を行なうようになっている。
【００６４】
このように、ＲＡＩＤプロセッサ１１２が、ＲＡＩＤエンジンプログラム１１２１に従い、ＲＡＩＤ演算処理を実施するように構成しても、ディスクアレイ装置１は、上述の実施の形態と同様な効果を奏することができる。
【００６５】
なお、本発明は上述の実施の形態に限定されるものではなく、その実施に際して様々な変形が可能である。
【００６６】
上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６７】
（付記１）
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有するディスクアレイ装置であって、
前記第１ディスク装置と前記第２ディスク装置とをそれぞれ所定数有し、
前記演算部で生成する冗長符号を生成する際に用いられる演算子の種類の数が前記第２ディスク装置の装置数より１つ以上少ないものであり、
前記演算部は、前記第１ディスク装置および前記第２ディスク装置のうち、任意の前記所定数以下のディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を生成することを特徴とするディスクアレイ装置。
【００６８】
（付記２）
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有するディスクアレイ装置であって、
前記第１ディスク装置と前記第２ディスク装置とをそれぞれ所定数有するディスクアレイ装置に、
前記第１ディスク装置および前記第２ディスク装置のうち、任意の前記所定数以下のディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を前記第２ディスク装置の装置数より１つ以上少ない種類の数の演算子を用いて生成する機能を実現させるディスクアレイ制御用プログラム。
【００６９】
（付記３）
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有し、
前記データと前記冗長符号とを２×ｎ（任意の自然数）台のディスク装置にそれぞれ書き込むディスクアレイ装置であって、
前記演算部で生成する冗長符号を生成する際に用いられる演算子の種類の数が前記ｎより１つ以上少ないものであり、
前記データを書き込んだ第１ディスク装置及び前記第２ディスク装置のうち、任意のｎ台以下の第１ディスク装置及び第２ディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を生成することを特徴とするディスクアレイ装置。
【００７０】
（付記４）
上位装置から送信されるデータを書き込む第１ディスク装置と、
前記第１ディスク装置に書き込むデータおよび演算子に基づいて冗長符号を生成する演算部と、
前記演算部で生成した冗長符号を書き込む第２ディスク装置と、を有し、
前記データと前記冗長符号とを２×ｎ（任意の自然数）台のディスク装置にそれぞれ書き込むディスクアレイ装置に、
前記データを書き込んだ第１ディスク装置及び前記第２ディスク装置のうち、任意のｎ台以下の第１ディスク装置及び第２ディスク装置のデータが消失した場合に当該消失したデータの復旧が可能である冗長符号を、前記ｎより１つ以上少ない種類の数の演算子を用いて生成する機能を実現させるディスクアレイ制御用プログラム。
【産業上の利用可能性】
【００７１】
冗長的にデータを記憶するディスクアレイ装置およびディスクアレイ制御用プログラムに広く適用可能である。
【符号の説明】
【００７２】
１                ・・・ディスクアレイ装置
１１              ・・・ＲＡＩＤコントローラ
１１１            ・・・上位インタフェース
１１２            ・・・ＲＡＩＤプロセッサ
１１２１          ・・・ＲＡＩＤエンジン（プログラム）
１２              ・・・ディスクプール
１２１〜１２４    ・・・内部ディスク経路
１２１１〜１２４３・・・ディスク
１３              ・・・ＲＡＩＤエンジン（ハードウェア）
１３１            ・・・ＲＡＩＤエンジン経路
１３２            ・・・入出力インタフェース
１３２１          ・・・ＲＡＩＤエンジン入力バス
１３２２          ・・・ＲＡＩＤエンジン出力バス
１３３            ・・・ＲＡＩＤバッファ
１３４            ・・・演算行列
１３４１〜１３４６・・・ＲＡＩＤエンジン内部バス
１３４１１〜１３４６６・・・ＲＡＩＤ演算子
１３４１７        ・・・演算格納バッファ
１３４２７        ・・・演算格納バッファ
１３４３７        ・・・演算格納バッファ
１３４４７        ・・・演算格納バッファ
１３４５７        ・・・演算格納バッファ
１３４６７        ・・・演算格納バッファ
１３５            ・・・ＲＡＩＤエンジン出力バッファ
１３５１〜１３５６・・・ＲＡＩＤ演算出力バス
ＲＯ（１３４１１１）・・・入力バッファ
ＲＯ１１〜ＲＯ１４・・・演算子入力バス
ＲＯ１５          ・・・入力バス
ＲＯ２            ・・・変換行列
ＲＯ２１〜ＲＯ２４・・・加算機
ＲＯ３            ・・・出力バッファ
ＲＯ３１          ・・・出力バス
【図１】
0005440884.tif 000002
【図２】
0005440884.tif 000003
【図３】
0005440884.tif 000004
【図４】
0005440884.tif 000005
【図５】
0005440884.tif 000006
【図６】
0005440884.tif 000007
【図７】
0005440884.tif 000008
【図８】
0005440884.tif 000009
【図９】
0005440884.tif 000010
【図１０】
0005440884.tif 000011
【図１１】
0005440884.tif 000012