(57)【要約】【課題】ディスクアレイ装置において書き込み障害が発生した磁気記憶ディスク装置を特定する方法を提供する。【解決手段】ディスクアレイ制御装置は、複数の記憶装置に分散して書き込んだデータの不整合が検出された場合、複数の記憶装置のそれぞれについて復旧データを演算し、多数決理論で正しいと判断される復旧データが書き込まれた記憶装置を、記憶装置から異常の報告が無く書き込んだデータに不整合が生じる書き込み未了障害が発生した記憶装置であると特定する。【選択図】図６
2020098489.tif 000002
【特許請求の範囲】
【請求項１】
ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータについて、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置のそれぞれについて復旧データを演算し、多数決理論で正しいと判断された前記復旧データに係る前記記憶装置を、データの書き込み障害が発生した前記記憶装置として特定する記憶装置特定部、
を備えるディスクアレイ制御装置。
【請求項２】
前記記憶装置特定部は、１つの前記記憶装置について、他の前記記憶装置に書き込まれた前記データおよび複数の冗長化符号を用いて、複数の方法で前記復旧データを演算し、複数の方法による演算結果のうち値が一致する数が最も多い前記復旧データを正しいと判定する、
請求項１に記載のディスクアレイ制御装置。
【請求項３】
前記記憶装置特定部は、１つの前記記憶装置に障害が発生したときに実行される当該記憶装置に対する再構築演算の全パターンを実行し、全パターンの演算結果に基づいて、書き込み障害が発生した前記記憶装置を特定する、
請求項１または請求項２に記載のディスクアレイ制御装置。
【請求項４】
特定された前記記憶装置に対して、正しいと判断された前記復旧データを書き込んで書き込み障害が発生した前記記憶装置のデータを訂正する訂正部、
をさらに備える請求項１から請求項３の何れか１項に記載のディスクアレイ制御装置。
【請求項５】
ＲＡＩＤで構成された複数の記憶装置と、
請求項１から請求項４の何れか１項に記載のディスクアレイ制御装置と、
を備えるディスクアレイ装置。
【請求項６】
ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータについて、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置のそれぞれについて復旧データを演算し、多数決理論で正しいと判断された前記復旧データに係る前記記憶装置を、データの書き込み障害が発生した前記記憶装置として特定する、
ディスクアレイ装置の制御方法。
【請求項７】
コンピュータを、
ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータについて、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置のそれぞれについて復旧データを演算し、多数決理論で正しいと判断された前記復旧データに係る前記記憶装置を、データの書き込み障害が発生した前記記憶装置として特定する手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ制御装置、ディスクアレイ装置、ディスクアレイ装置の制御方法及びプログラムに関する。
【背景技術】
【０００２】
情報処理装置の外部記憶装置として、磁気記憶ディスクを複数台搭載したディスクアレイ装置が用いられる。また、より高速にアクセス可能なＳＳＤ(Solid State Disk)を用いた記憶装置も、磁気記憶ディスクの代替として用いられている。ディスクアレイ装置では、データ喪失防止のため、ＲＡＩＤ(Redundant Arrays of Inexpensive DisksまたはRedundant Arrays of Independent Disks)と呼ばれる冗長化技術が用いられる。ＲＡＩＤは、冗長性と符号化方式により、ＲＡＩＤ０からＲＡＩＤ５までの６種類に分類される。さらに、非特許文献１に記載された符号化技術を用いるＲＡＩＤ６あるいはダブル・パリティと呼ばれる多冗長符号化方式も知られている。
【０００３】
関連する技術として、特許文献１には、磁気記憶ディスクの「書き込み未了障害」の検出を課題として、磁気記憶ディスク上にデータ更新を管理する記憶領域を付加して書き込み未了障害を検出する方法が開示されている。
特許文献２には、ＲＡＩＤを構成するハードディスク（Hard Disk Drive）の他に予備のハードディスクを設け、書き込んだデータの整合性確認にて不一致が生じた場合、多数決論理で有効なデータを決定することが開示されている。さらに特許文献２には、有効なデータの決定後、少数派となったハードディスクに対してディスクチェックを行い、復旧不可能と判定すると、予備のハードディスクと切り替えることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４８４８５３３号公報
【特許文献２】特開２００４−５１６２号公報
【非特許文献】
【０００５】
【非特許文献１】James S. Plank,“A Tutorial on Reed−Solomon Coding for Fault-Tolerance in RAID−like Systems”,Software-Practice and Experience，Volume 27，Number 9，page 995-1012，September 1997.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般に正常な書き込み完了が報告されているにもかかわらず、磁気記憶ディスクへの書き込みが行われていない「書き込み未了障害」が発生しても、書き込み障害が生じた磁気記憶ディスクを特定することは困難である。より具体的には、（１）ＲＡＩＤ技術はデータの冗長化により、破損した磁気記憶ディスクのデータを他の磁気記憶ディスクのデータを用いて復元することは可能だが、磁気記憶ディスクの障害そのものの検出を行うことができない。つまり、ＲＡＩＤ技術によって、冗長符号の整合性の確認は行えるが、何れの磁気記憶ディスクで障害が発生したかについては、冗長符号からは判定することができない。例えば、磁気記憶ディスクに書き込み処理を行った際、書き込みデータが磁気記憶ディスク上の記憶媒体に書き込まれる前に、何らかの原因で磁気記憶ディスクが書き込み完了を報告した場合、ディスクアレイ装置は、完了報告を受けてディスクキャッシュ上のデータを破棄する。その後、記憶媒体にデータが書き込まれる前に磁気記憶ディスクの電源が切断されると記憶媒体のデータが更新されず、書き込みデータが喪失する。つまり、上述した「書き込み未了障害」が発生する。また、書き込み途中の電源切断などで記憶媒体に不正なデータが書き込まれれば、データの不正が検出され、その磁気記憶ディスクは障害ディスクとして切り離される。この場合は、ＲＡＩＤの冗長構成を利用したデータの復旧が可能である。しかし、「書き込み未了障害」の場合には、一世代前のデータが残っているため不正データにはならず、障害が検出できない。「書き込み未了障害」が発生すると、一般的なＲＡＩＤ技術および非特許文献１の多重冗長技術を用いても、データを復旧することはできない。
【０００７】
（２）また、「書き込み未了障害」が発生した場合、冗長構成の整合性確認に失敗するため、他の磁気記憶ディスクのデータについても正当性を保証できない。つまり、冗長符号によるＲＡＩＤの整合性確認（コヒーレンシ・チェック）の際に、どの磁気記憶ディスクのデータが不正であるかが検出できる場合は良いがが、「書き込み未了障害」の場合は、不正である磁気記憶ディスクの特定が困難であるため、正常な磁気記憶ディスクのデータの保証も困難である。
【０００８】
なお、特許文献１に記載の方法は、第１の課題に対する解決手段を提供するが、管理用の制御領域を特別に付加する必要があり、磁気記憶ディスクの使用可能領域が削減されることや、更新処理などで磁気記憶ディスクのアクセス頻度が増加する等の課題がある。
また特許文献２に記載の方法は、第２の課題に関連し、多数決論理で有効データとされたデータが書き込まれたディスクを正当とするという解決方法を提示するが、同方式は冗長度に応じた数のハードディスクに加え、予備ハードディスクを必要とするため容量効率が悪化するという課題がある。
【０００９】
そこでこの発明は、上述の課題を解決するディスクアレイ制御装置、ディスクアレイ装置、ディスクアレイ装置の制御方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータについて、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置のそれぞれについて復旧データを演算し、多数決理論で正しいと判断された前記復旧データに係る前記記憶装置を、データの書き込み障害が発生した前記記憶装置として特定する記憶装置特定部、を備えるディスクアレイ制御装置である。
【００１１】
また、本発明の一態様によれば、ＲＡＩＤで構成された複数の記憶装置と、上記のディスクアレイ制御装置と、を備えるディスクアレイ装置である。
【００１２】
また、本発明の他の一態様によれば、ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータについて、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置のそれぞれについて復旧データを演算し、多数決理論で正しいと判断された前記復旧データに係る前記記憶装置を、データの書き込み障害が発生した前記記憶装置として特定する、ディスクアレイ装置の制御方法である。
【００１３】
また、本発明の他の一態様によれば、コンピュータを、ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータについて、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置のそれぞれについて復旧データを演算し、多数決理論で正しいと判断された前記復旧データに係る前記記憶装置を、データの書き込み障害が発生した前記記憶装置として特定する手段、として機能させるためのプログラムである。
【発明の効果】
【００１４】
本発明によれば、ディスクアレイ装置において、書き込み未了障害が発生した場合に、どの記憶装置で書き込み未了障害が発生したかを特定できるという効果が得られる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係るディスクアレイ装置の一例を示す図である。
【図２】本発明の一実施形態によるＲＡＩＤ演算器の一例を示す図である。
【図３】本発明の一実施形態のＲＡＩＤ演算器による演算例を示す第１の図である。
【図４】本発明の一実施形態のＲＡＩＤ演算器による演算例を示す第２の図である。
【図５】本発明の一実施形態のＲＡＩＤ演算器による演算例を示す第３の図である。
【図６】本発明の一実施形態のＲＡＩＤ演算器による不整合発生時の再構築演算結果の一例を示す図である。
【図７】本発明の一実施形態のＲＡＩＤ演算器による再構築演算結果の一例を示す第１の図である。
【図８】本発明の一実施形態のＲＡＩＤ演算器による再構築演算結果の一例を示す第２の図である。
【図９】本発明の一実施形態のＲＡＩＤ演算器による再構築演算結果の一例を示す第３の図である。
【図１０】本発明の一実施形態のＲＡＩＤ演算器による書き込み未了障害が発生した記憶装置を特定する処理の一例を示す図である。
【図１１】本発明の一実施形態の書き込み未了障害に関する処理の一例を示すフローチャートである。
【図１２】本発明の一実施形態における制御装置の機能ブロック図である。
【図１３】本発明の一実施形態における制御装置の最小構成を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態に係るディスクアレイ装置について図面を参照して説明する。図１は、本発明の一実施形態に係るディスクアレイシステムの一例を示す図である。
図示するようにディスクアレイ装置１は、ディスクアレイコントローラ１１と、複数の磁気記憶ディスクからなるディスクアレイ１５と、を備える。
【００１７】
ディスクアレイコントローラ１１は、上位ホスト接続ポート１２と、ＲＡＩＤ演算器１３と、ディスクキャッシュ１４と、を備える。ＲＡＩＤ演算器１３およびディスクキャッシュ１４はそれぞれ、内部インターフェース１３１、内部インターフェース１４１を介してディスクアレイコントローラ１１の他の回路や内部インターフェース１１１と接続されている。ディスクキャッシュ１４は、読み出し処理、書き込み処理の高速化に用いる。
【００１８】
ディスクアレイ１５は、磁気記憶ディスク１５１〜１５６を備えている。ディスクアレイ装置１は、内部インターフェース１１１に接続された接続インターフェース１５１１を介して磁気記憶ディスク１５１と接続されている。同様に内部インターフェース１１１は、接続インターフェース１５１２〜１５１６と接続されている。つまり、ディスクアレイ装置１は、接続インターフェース１５１１〜１５１６を介して磁気記憶ディスク１５１〜１５６と接続されている。磁気記憶ディスク１５１〜１５６は、ＲＡＩＤ６による冗長化構成とされている。
【００１９】
ディスクアレイ装置１は、上位ホスト接続ポート１２を介して、上位接続インターフェース１２１で上位装置と接続されている。上位装置は、ディスクアレイ装置１にデータの書き込み命令、データの読み出し命令を発行する。上位装置からの読み書きの命令は、内部インターフェース１１１を経由して、ＲＡＩＤ演算器１３、ディスクキャッシュ１４、各磁気記憶ディスク１５１〜１５６に送付される。ディスクアレイコントローラ１１は、ＲＡＩＤ演算器１３、ディスクキャッシュ１４を制御して、磁気記憶ディスク１５１〜１５６へのデータの書き込み、磁気記憶ディスク１５１〜１５６からのデータの読み出しを行う。
【００２０】
図２は、本発明の一実施形態によるＲＡＩＤ演算器の一例を示す図である。
ＲＡＩＤ演算器１３は、複数の乗算器１３ａ０〜１３ｆｎ、複数の加算器１３Ａ０〜１３Ｆｎを備えている。乗算器１３ａ０〜１３ｆｎには、各々係数αａ０〜αａｎが与えられている。乗算器１３ａ０〜１３ｆｎは、ＲＡＩＤ演算器１３に入力されたデータと各係数αａ０〜αａｎとのガロア体上またはガロア拡大体上での乗算を行う。図の×は、ガロア体またはガロア拡大体における積演算を示している。また、加算器１３Ａ０〜１３Ｆｎは、乗算結果をガロア体上またはガロア拡大体上での加減算を行う。図の＋は、ガロア体またはガロア拡大体におけるＸＯＲ演算を示している。これにより、ＲＡＩＤ演算器１３は、データＤａ〜Ｄｆを入力し、演算結果Ｃ０〜Ｃｎを出力する。なお、ガロア体およびガロア拡大体については、非特許文献１に記載があるように、必要な冗長度によって要件が異なる。図２に例示するものは、一例であってこれに限定されない。また、本実施形態では、使用するガロア体およびガロア拡大体については特に限定しない。ＲＡＩＤ演算器１３は、図２の演算器を用いて、複数の冗長符号を演算したり、整合性確認を行ったり、再構築演算を行ったりする。例えば、ディスクアレイコントローラ１１は、上位装置から書き込みを命令されたＤａ〜Ｄｆとともに、ＲＡＩＤ演算器１３が演算した複数の冗長符号を磁気記憶ディスク１５１〜１５６に分散して書き込む。
【００２１】
図３、図４、図５は、それぞれ、本発明の一実施形態のＲＡＩＤ演算器による演算例を示す第１、第２、第３の図である。
図３〜図５を用いて、磁気記憶ディスクが６台の場合のＲＡＩＤ６を例に、ＲＡＩＤ演算器１３による演算例を説明する。なお、図３のガロア体あるいはガロア拡大体係数α０〜α３は、例えば、非特許文献１の方式によりガロア体の原子根より決定することができるが、冗長性が保証されるならば、他の方法で係数を決定してもよい。
図３の上の２行は、通常の冗長符号ＰおよびＱを演算するＲＡＩＤ演算器１３の構成例を示している。例えば、１行目は、書き込みデータＤ０〜Ｄ３の各々について係数１を乗じ、それらを加算して冗長符号Ｐを演算することを示している。同様に２行目は、書き込みデータＤ０にα０を乗じた値と、Ｄ１にα１を乗じた値と、Ｄ２にα２を乗じた値と、Ｄ３にα３を乗じた値とを加算して、冗長符号Ｑを演算することを示している。
【００２２】
図３の次の２行は整合性確認(Coherency Check)を行うための構成である。例えば、３行目は、書き込み後のＤ０〜Ｄ３、Ｐをディスクアレイ１５から読み出して、読み出したＤ０〜Ｄ３を用いて１行目で説明したようにしてＰを演算し、演算したＰとディスクアレイ１５から読み出したＰとの差を演算することを示している。同様に４行目は、書き込み後のＤ０〜Ｄ３、Ｑをディスクアレイ１５から読み出して、読み出したＤ０〜Ｄ３を用いて２行目で説明したようにＱを演算し、演算したＱとディスクアレイ１５から読み出したＱとの差を演算することを示している。３行目と４行目の値がともに０であれば、Ｄ０〜Ｄ３が、正常にディスクアレイ１５に書き込まれたことを示している。
整合性確認の処理は、所定の周期、または、データの読み出し時に行う。
【００２３】
図３の５行目以降は、ディスクアレイ１５に異常が発生したときに異常が生じた磁気記憶ディスクに書き込まれたデータを復元する演算（再構成演算）を示している。例えば、図３の５行目は、Ｄ０、Ｄ１を書き込む磁気記憶ディスクに障害があった場合に、Ｄ２、Ｄ３、冗長符号ＰおよびＱと、それぞれに与えられた係数α０１２等を用いてＤ０を演算することを示している。６行目は、同様な場合に、Ｄ２、Ｄ３、冗長符号ＰおよびＱ、係数α１０２、α１０３、α１０P、α１０Qを用いてＤ１を演算することを示している。図３の７行目以降、図４、図５についても同様である。なお、α０１２以降の係数は、係数α０〜α３およびＲＡＩＤ構成により一意に決定される。
【００２４】
通常動作時は、ＲＡＩＤ演算器１３は、図３の上から４行の演算（冗長符号の付加および整合性の確認）を行う。磁気記憶ディスクの障害発生時、あるいは「書き込み未了障害」等で整合性の不一致が検出された場合は、ＲＡＩＤ演算器１３は、図３の５行目以降の再構築(Rebuild)演算を行う必要がある。磁気記憶ディスクの障害発生時は、図３の５行目以降に記載した再構築演算のパターンの中から、再構築に必要な行を選択する。以下に説明するように、整合性の不一致が検出されたにもかかわらず、磁気記憶ディスクの障害が報告されない場合、つまり、「書込み未了障害」が生じた場合、ＲＡＩＤ演算器１３は、再構築演算の全パターンを実行して「書込み未了障害」が生じた障害磁気記憶ディスクの特定を行う。
【００２５】
図６は、本発明の一実施形態のＲＡＩＤ演算器による不整合発生時の再構築演算結果の一例を示す図である。
図６にデータＤ１を書き込んだ磁気記憶ディスクに「書き込み未了障害」が発生した場合の再構築演算に及ぼす影響を示す。
まず、図６の１行目にてＤ１の正しいデータ（書き込まれるべきだったデータ）と誤ったデータＤ１’（一世代前のデータ）との差分をＤｘとおく。２行目以降は、Ｄ０〜Ｄ３、Ｐ，Ｑに対する再構築演算の結果を示している。図３〜図５に例示するようにＤ０〜Ｄ３、Ｐ，Ｑの再構築演算には複数の方法がある。例えば、Ｄ１については、図３の上から６行目、図４の上から１，３，５，７行目の各々に再構築演算の方法が例示されている。図６に示すのは、これらのうちの何れかの方法でＤ０〜Ｄ３、Ｐ，Ｑの再構築演算を行った場合のＤ１に関係する部分である。図６に示すように再構築演算結果は、各係数に差分Ｄｘを掛けた分だけ変動する。ただし、係数が「０」の場合は、Ｄｘの影響を受けないので正常な値が演算される。係数が「０」の場合とは、例えば、Ｄ１について再構築演算する場合である。本実施形態では、この性質を利用して「書き込み未了障害」が発生した磁気記憶ディスクを特定する。
【００２６】
図７、図８、図９は、それぞれ、本発明の一実施形態のＲＡＩＤ演算器による再構築演算結果の一例を示す第１、第２、第３の図である。
図７〜図９は、図３〜図５に示した再構築演算について、再構築するデータ別に並べ替え整理したものである。また、図７〜図９においては、「書き込み未了障害」が生じた磁気記憶ディスクを特定するための構成「Ｃｏｕｎｔ Ｄ０」〜「Ｃｏｕｎｔ Ｄ４」等が追加されている。
再構築結果Ｄ００〜Ｄ０４は、それぞれ異なる方法で再構築演算されたＤ０の値を示している。「Ｃｏｕｎｔ Ｄ０」の値は、再構築結果Ｄ００〜Ｄ０４のうち、同じ値を示すものが何個あるかを示している。例えば、Ｄ００〜Ｄ０４の全てが同じであれば、「Ｃｏｕｎｔ Ｄ０」の値は、「５」である。同様に「Ｃｏｕｎｔ Ｄ１」の値は、Ｄ１について再構築演算を行った結果であるＤ１０〜Ｄ１４のうち、同じ値を示すものの個数を示している。「Ｃｏｕｎｔ Ｄ２」、「Ｃｏｕｎｔ Ｄ３」についても同様である。また、「Ｃｏｕｎｔ Ｐ」の値は、Ｐについて再構築演算を行った結果であるＰ０〜Ｐ４のうち、同じ値を示すものの何個を示している。「Ｃｏｕｎｔ Ｑ」についても同様である。
【００２７】
次に図１０を用いて、「Ｃｏｕｎｔ Ｄ０」の算出方法を示す。
図１０は、本発明の一実施形態のＲＡＩＤ演算器による処理方法の一例を示す図である。
ＲＡＩＤ演算器１３は、図１０に例示する演算器１３０を備えている。
まず、ＲＡＩＤ演算器１３は、冗長符号の整合性不一致が検出されたか否かをＤｘ、Ｄｙにより判定し、不一致と判定された場合は、再構築演算および「Ｃｏｕｎｔ Ｄ０」〜「Ｃｏｕｎｔ Ｑ」の算出を行う。図１０に示す演算器１３０は、複数の比較器１３０ａ，１３０ｂ等と複数の加算器を備えている。演算器１３０は、再構築結果Ｄ００〜Ｄ０４を、互いに比較するマトリクス演算を行い、比較器の出力が「一致」を示す場合、当該行の比較結果を加算する。Ｄ００の行について具体的に説明すると、比較器１３０ａは、Ｄ００とＤ０１を比較する。両者が同じ値の場合は１を出力し、両者が異なる値の場合は０を出力する。比較器１３０ｂは、Ｄ００とＤ０２を比較する。比較器１３０ｃは、Ｄ００とＤ０３を比較する。比較器１３０ｄは、Ｄ００とＤ０４を比較する。Ｄ００〜Ｄ０３の値が全て同じ値の場合、比較器１３０ａ〜比較器１３０ｄの出力を加算すると４となる。また、比較元（１行目の場合、比較元はＤ００）同士の比較結果も一致数に含めるため、最後に１を加算する。このようにして、演算器１３０は、「Ｃｏｕｎｔ Ｄ００」を演算する。同様にして演算器１３０は「Ｃｏｕｎｔ Ｄ０１」〜「Ｃｏｕｎｔ Ｄ０４」を演算する。演算器１３０は、「Ｃｏｕｎｔ Ｄ００」〜「Ｃｏｕｎｔ Ｄ０４」を比較し、最も大きな値を「Ｃｏｕｎｔ Ｄ０」として決定する。
同様にして演算器１３０は、「Ｃｏｕｎｔ Ｄ１」〜「Ｃｏｕｎｔ Ｄ３」、「Ｃｏｕｎｔ Ｐ」、「Ｃｏｕｎｔ Ｑ」を決定する。
【００２８】
例えば、Ｄ１について「書き込み未了障害」が生じた場合、図７の３行目に示すようにＤ１に与えられた係数が「０」のため、Ｄ００は、Ｄ１について生じた「書き込み未了障害」の影響を受けない。一方、Ｄ０１〜Ｄ０４は、図７の４〜７行目に示すように、Ｄ１に与えられた係数が「０」では無い為、Ｄ１の影響を受ける。従って、上記の互いに値を比較するマトリクス演算の結果は、「Ｃｏｕｎｔ Ｄ００」の値が「１」、「Ｃｏｕｎｔ Ｄ０１」〜「Ｃｏｕｎｔ Ｄ０４」の値が「４」となる。すると、「Ｃｏｕｎｔ Ｄ０」は「４」である。同様に「Ｃｏｕｎｔ Ｄ２」、「Ｃｏｕｎｔ Ｄ３」、「Ｃｏｕｎｔ Ｐ」、「Ｃｏｕｎｔ Ｑ」の値は「４」である。一方、Ｄ１について全パターンでの再構築演算を行った結果であるＤ１０〜Ｄ１４は、図７の８〜１２行目により、Ｄ１の影響を受けない。従って、「Ｃｏｕｎｔ Ｄ１０」〜「Ｃｏｕｎｔ Ｄ１４」の値は全て「５」となり、「Ｃｏｕｎｔ Ｄ１」は「５」である。
【００２９】
このように、Ｄ１について「書き込み未了障害」が生じた場合、Ｄ００〜Ｄ０４、Ｄ１０〜Ｄ１４、Ｄ２０〜Ｄ２４、Ｄ３０〜Ｄ３４、Ｐ０〜Ｐ４、Ｑ０〜Ｑ４のうちＤ１に関する係数が「０」のパターンでの再構築演算では正常な値が演算される。図７〜図９を参照すると、上記したようにＤ１について再構築演算を行う５つの演算方法では、係数が全て「０」となる。従って、Ｄ１０〜Ｄ１４の比較においては、全てが同じ値となる。他方、他のＤ０、Ｄ２、Ｄ３、Ｐ，Ｑについて再構築演算を行う演算方法では、５つのうち４つの方法で、書き込み障害があったＤ１の影響を受ける。従って、５つの再構築演算方法による演算結果の比較においては、全てが同じ値となることは無い。従って、図１０の演算器１３０によれば、書き込み未了障害が生じたＤ１に係る「Ｃｏｕｎｔ Ｄ１」が選択される。つまり、本実施形態のＲＡＩＤ演算器１３によれば、「書き込み未了障害」が生じた磁気記憶ディスク（Ｄ１を書き込んだ磁気記憶ディスク）を検出することができる。
【００３０】
また、「書き込み未了障害」が生じたＤ１については、上記の処理において再構築演算済みであるため、Ｄ１の正しい値は既に得られている。ディスクアレイコントローラ１１が、再構築演算済みの値で、Ｄ１を更新することにより、磁気記憶ディスク上のデータが正常となり、ディスクアレイ１５の冗長性が回復する。
【００３１】
次に図１１を用いて、書き込み未了障害が生じた磁気記憶ディスクを特定する処理の流れについて説明する。
図１１は、本発明の一実施形態の書き込み未了障害に関する処理の一例を示すフローチャートである。
６本の磁気記憶ディスク１５１〜１５６には、ＲＡＩＤ６の方式で、データＤ０〜Ｄ４、冗長化符号Ｐ，Ｑが分散して書き込まれている。
まず、所定のタイミングで、ディスクアレイコントローラ１１が、整合性確認処理を行う（ステップＳ１１）。ＲＡＩＤ演算器１３は、磁気記憶ディスク１５１等から読み出したデータＤ０〜Ｄ４を用いてＰ，Ｑを演算し、その演算結果を磁気記憶ディスク１５１等から読み出したＰ，Ｑと比較する。ＲＡＩＤ演算器１３は、Ｐ，Ｑが共に一致すれば整合性ありと判定し、Ｐ，Ｑの何れかが一致しない場合、整合性なしと判定する（ステップＳ１２）。整合性ありと判定した場合（ステップＳ１２；Ｙｅｓ）、書き込み未了障害は発生していないので、処理を終了する。
【００３２】
整合性がないと判定した場合（ステップＳ１２；Ｎｏ）、ＲＡＩＤ演算器１３は、Ｄ０〜Ｄ４、Ｐ、Ｑのそれぞれについて、複数の方法で再構築演算を実行する（ステップＳ１３）。例えば、ＲＡＩＤ演算器１３は、図７〜図９に列挙された全障害復旧パターンに対する再構築演算を実行する。
次にＲＡＩＤ演算器１３は、再構築演算の結果に基づいて多数決で障害が生じた磁気記憶ディスクを特定する（ステップＳ１４）。例えば、ＲＡＩＤ演算器１３は、図１０で説明したように、１つの磁気記憶ディスクに書き込まれたデータについて実行された全障害復旧パターンに対する再構築演算結果のそれぞれを互いに比較し、値が一致するものの個数を算出する。ＲＡＩＤ演算器１３は、算出した個数の値が最も大きい磁気記憶ディスクを「書き込み未了障害」が生じた磁気記憶ディスクとして特定する（ステップＳ１４）。
ディスクアレイコントローラ１１は、ＲＡＩＤ演算器１３が特定した磁気記憶ディスクに対して、当該磁気記憶ディスクについて行った再構築演算結果を書き込んで、データを復旧する（ステップＳ１５）。図１０を用いて説明したように、「書き込み未了障害」が生じた磁気記憶ディスクに書き込まれたデータ（上記例では、Ｄ１）の全障害復旧パターンについて、再構築演算を実行した演算結果は一致する。
【００３３】
ＲＡＩＤ６などの多重冗長符号を用いてデータを冗長化するディスクアレイ装置では、複数の演算方式で、各磁気記憶ディスクのデータについての再構築演算を行うことが可能である。多重冗長符号によるＲＡＩＤが有するこの性質と一致が多いデータを正常データと判定する多数決論理を適用し、本実施形態では、書き込みデータの整合性確認を行って不整合を検出した場合、冗長構成された磁気記憶ディスクを対象に、あらゆる障害復旧パターンに対応する復旧データを演算する（再構築演算）。そして、値が一致する復旧データが最も多い復旧データを記憶する磁気記憶ディスクを、「書き込み未了障害」が発生した磁気記憶ディスクとして特定する。また、「書き込み未了障害」が発生した磁気記憶ディスク特定のために演算した復旧データを用いて、「書き込み未了障害」が発生した磁気記憶ディスクに書き込まれたデータを訂正する。このように、本実施形態によれば、「書き込み未了障害」が発生した磁気記憶ディスクの特定と、当該磁気記憶ディスクが記憶するデータの復旧が可能である。また、「書き込み未了障害」が発生した磁気記憶ディスクの特定により、他の磁気記憶ディスクのデータについて正当性を保証することができる。
【００３４】
また、本実施形態のディスクアレイ装置の制御方法であれば、「書き込み未了障害」が発生した磁気記憶ディスクを特定するための回路や処理の追加は必要であるが、磁気記憶ディスク上に追加の記憶領域を必要としないため、容量効率の低下が起きることが無い。また、データが正常に書き込まれている間は、特別な処理を追加で行う必要がなく、通常通りディスクアレイ装置を運用する事が可能である。
【００３５】
上記説明では、図１の構成を例に説明を行ったが、本実施形態のディスクアレイ装置の制御方法は、以下のような機能を有するディスクアレイ制御装置によって実現が可能である。
図１２は、本発明の一実施形態におけるディスクアレイ制御装置の機能ブロック図である。
図示するようにディスクアレイ制御装置１００は、制御部１０１と記憶装置特定部１０３と、訂正部１０４とを備える。
制御部１０１は、多重冗長符号を用いてデータの冗長化を行うディスクアレイ装置に対するデータの書き込み、読み込み処理、それに必要な各種処理を行う。制御部１０１は、例えば、一般的なＲＡＩＤ６対応のＲＡＩＤコントローラや、ＲＡＩＤ６対応のソフトウェアＲＡＩＤのプログラムが備える機能である。制御部１０１は、整合性確認部１０２を備えている。整合性確認部１０２は、複数の磁気記憶ディスク装置に分散して書き込んだデータの不整合を、前記データから算出される複数の符号に基づいて検出する。整合性確認部１０２は、例えば、図１１のフローチャートのステップＳ１１の処理を行う。
記憶装置特定部１０３は、各磁気記憶ディスクから障害の報告が無く、整合性確認部１０２が整合性の不一致を検出した場合、複数の磁気記憶ディスクのそれぞれについて復旧データを演算し、多数決理論で正しいと判断された復旧データに係る磁気記憶ディスクを、データの書き込み障害が発生した磁気記憶ディスクとして特定する機能を備える。記憶装置特定部１０３は、例えば、図１１のフローチャートのステップＳ１２〜ステップＳ１４の処理を行う。
訂正部１０４は、書き込み障害が発生したと特定された磁気記憶ディスクに対して、正しいと判断された復旧データを書き込んでデータを訂正する機能を備える。訂正部１０４は、例えば、図１１のフローチャートのステップＳ１５の処理を行う。
【００３６】
なお、ディスクアレイ制御装置１００の各機能は、実施形態で例示したＲＡＩＤ演算器１３のようにハードウェアとして実装してもよいし（ハードウェアＲＡＩＤ）、ソフトウェアとして実装してもよい（ソフトウェアＲＡＩＤ）。例えば、ハードウェアの場合、一般的なＲＡＩＤ６の演算を行う回路の他に、図１０で例示した回路を備えたＲＡＩＤコントローラとして提供することができる。また、ソフトウェアの場合、制御部１０１、整合性確認部１０２、記憶装置特定部１０３、訂正部１０４による各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムを、ＲＡＩＤを制御するディスクコントローラが備えるプロセッサや上位装置が備えるプロセッサが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００３７】
図１３は、本発明の一実施形態における制御装置の最小構成を示す図である。
図１３に示すようにディスクアレイ制御装置１００は、少なくとも記憶装置特定部１０３を備える。一つの実施形態では、例えば、ディスクアレイ制御装置１００は、一般的なＲＡＩＤコントローラやソフトウェアＲＡＩＤ用プログラムと独立した装置またはプログラムとして実装され、一般的なＲＡＩＤコントローラがデータ不整合を検出した場合に、記憶装置特定部１０３によって「書き込み未了障害」が発生した磁気記憶ディスクを特定する。また、ディスクアレイ制御装置１００は、特定した磁気記憶ディスクの識別情報と、その磁気記憶ディスクについて演算した復旧データと、その書き込み指示を一般的なＲＡＩＤコントローラ等へ出力するように構成されていてもよい。
【００３８】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
例えば、実施形態における磁気記憶ディスクは記憶装置の一例であるが、記憶装置はＳＳＤであってもよい。
【符号の説明】
【００３９】
１００・・・ディスクアレイ制御装置
１０１・・・制御部
１０２・・・整合性確認部
１０３・・・記憶装置特定部
１０４・・・訂正部
１・・・ディスクアレイ装置
１１・・・ディスクアレイコントローラ
１５・・・ディスクアレイ
１２・・・上位ホスト接続ポート
１３・・・ＲＡＩＤ演算器
１４・・・ディスクキャッシュ
１１１、１３１、１４１・・・内部インターフェース
１５１〜１５６・・・磁気記憶ディスク
１５１１〜１５６１・・・接続インターフェース
【図１】
2020098489.tif 000003
【図２】
2020098489.tif 000004
【図３】
2020098489.tif 000005
【図４】
2020098489.tif 000006
【図５】
2020098489.tif 000007
【図６】
2020098489.tif 000008
【図７】
2020098489.tif 000009
【図８】
2020098489.tif 000010
【図９】
2020098489.tif 000011
【図１０】
2020098489.tif 000012
【図１１】
2020098489.tif 000013
【図１２】
2020098489.tif 000014
【図１３】
2020098489.tif 000015
【手続補正書】
【提出日】令和2年3月6日(2020.3.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータおよび冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置の中から２つを除外した残りの前記記憶装置に書き込まれた前記データまたは前記冗長化符号を用いて、除外した前記記憶装置のそれぞれについて、前記データまたは前記冗長化符号の書き込み障害が発生したと仮定した場合の復旧データの値を演算する処理を、複数の前記記憶装置の中から除外する２つの前記記憶装置を選択する組み合せの通りだけ実行し、それぞれの前記記憶装置について演算された前記復旧データの値について、その値が一致する数が最も多い前記記憶装置を、前記書き込み障害が発生した前記記憶装置として特定する記憶装置特定部、
を備えるディスクアレイ制御装置。
【請求項２】
前記記憶装置特定部は、前記復旧データの値が全て一致する前記記憶装置を、前記書き込み障害が発生した前記記憶装置として特定する、
請求項１に記載のディスクアレイ制御装置。
【請求項３】
前記記憶装置特定部は、複数の前記記憶装置のそれぞれについて、１つの前記記憶装置に障害が発生したときに実行される当該記憶装置に対する再構築演算の全パターンを実行し、全パターンの演算結果に基づいて、書き込み障害が発生した前記記憶装置を特定する、
請求項１または請求項２に記載のディスクアレイ制御装置。
【請求項４】
特定された前記記憶装置に対して、前記値が一致する数が最も多い前記復旧データを書き込んで書き込み障害が発生した前記記憶装置のデータを訂正する訂正部、
をさらに備える請求項１から請求項３の何れか１項に記載のディスクアレイ制御装置。
【請求項５】
ＲＡＩＤで構成された複数の記憶装置と、
請求項１から請求項４の何れか１項に記載のディスクアレイ制御装置と、
を備えるディスクアレイ装置。
【請求項６】
ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータおよび冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置の中から２つを除外した残りの前記記憶装置に書き込まれた前記データまたは前記冗長化符号を用いて、除外した前記記憶装置のそれぞれについて、前記データまたは前記冗長化符号の書き込み障害が発生したと仮定した場合の復旧データの値を演算する処理を、複数の前記記憶装置の中から除外する２つの前記記憶装置を選択する組み合せの通りだけ実行し、それぞれの前記記憶装置について演算された前記復旧データの値について、その値が一致する数が最も多い前記記憶装置を、前記書き込み障害が発生した前記記憶装置として特定する、
ディスクアレイ装置の制御方法。
【請求項７】
コンピュータを、
ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータおよび冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置の中から２つを除外した残りの前記記憶装置に書き込まれた前記データまたは前記冗長化符号を用いて、除外した前記記憶装置のそれぞれについて、前記データまたは前記冗長化符号の書き込み障害が発生したと仮定した場合の復旧データの値を演算する処理を、複数の前記記憶装置の中から除外する２つの前記記憶装置を選択する組み合せの通りだけ実行し、それぞれの前記記憶装置について演算された前記復旧データの値について、その値が一致する数が最も多い前記記憶装置を、前記書き込み障害が発生した前記記憶装置として特定する手段、
として機能させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明の一態様によれば、ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータおよび冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置および冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置の中から２つを除外した残りの前記記憶装置に書き込まれた前記データまたは前記冗長化符号を用いて、除外した前記記憶装置のそれぞれについて、前記データまたは前記冗長化符号の書き込み障害が発生したと仮定した場合の復旧データの値を演算する処理を、複数の前記記憶装置の中から除外する２つの前記記憶装置を選択する組み合せの通りだけ実行し、それぞれの前記記憶装置について演算された前記復旧データの値について、その値が一致する数が最も多い前記記憶装置を、前記書き込み障害が発生した前記記憶装置として特定する記憶装置特定部、を備えるディスクアレイ制御装置である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
また、本発明の他の一態様によれば、ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータおよび冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置および冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置の中から２つを除外した残りの前記記憶装置に書き込まれた前記データまたは前記冗長化符号を用いて、除外した前記記憶装置のそれぞれについて、前記データまたは前記冗長化符号の書き込み障害が発生したと仮定した場合の復旧データの値を演算する処理を、複数の前記記憶装置の中から除外する２つの前記記憶装置を選択する組み合せの通りだけ実行し、それぞれの前記記憶装置について演算された前記復旧データの値について、その値が一致する数が最も多い前記記憶装置を、前記書き込み障害が発生した前記記憶装置として特定する、ディスクアレイ装置の制御方法である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
また、本発明の他の一態様によれば、コンピュータを、ＲＡＩＤで構成された複数の記憶装置に分散して書き込んだデータおよび冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置および冗長化符号について、前記記憶装置から異常の報告が無く不整合が検出された場合、複数の前記記憶装置の中から２つを除外した残りの前記記憶装置に書き込まれた前記データまたは前記冗長化符号を用いて、除外した前記記憶装置のそれぞれについて、前記データまたは前記冗長化符号の書き込み障害が発生したと仮定した場合の復旧データの値を演算する処理を、複数の前記記憶装置の中から除外する２つの前記記憶装置を選択する組み合せの通りだけ実行し、それぞれの前記記憶装置について演算された前記復旧データの値について、その値が一致する数が最も多い前記記憶装置を、前記書き込み障害が発生した前記記憶装置として特定する手段、として機能させるためのプログラムである。