(57)【要約】  データ修復量を減らすことができる。  第１のＲＡＩＤディスク（２）は、データの格納単位を構成するブロックを複数備える分散データを複数のディスク（２ａ）、（２ｂ）、（２ｃ）、（２ｄ）に分けて記憶する。障害検出手段（３）は、ブロックの読み出し障害を、読み出し障害が生じたブロックを含む所定領域毎に検出する。要求手段（４）は、読み出し障害が生じた際、第１のＲＡＩＤディスク（２）内で修復できないブロックの補完を、分散データと同じデータが格納されている第２のＲＡＩＤディスク（５）を備える他のコンピュータ（６）に要求する。上書き手段（７）は、コンピュータ（６）からのブロックを受け取ると、読み出し障害が生じたブロックに受け取ったブロックを上書きする。
2008041267.tif 000002
【特許請求の範囲】
【請求項１】
ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理プログラムにおいて、
コンピュータを、
データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスク、
前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出する障害検出手段、
前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求する要求手段、
前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする上書き手段、
として機能させることを特徴とするシステム管理プログラム。
【請求項２】
前記障害検出手段は、前記読み出し障害が生じた前記ブロック単位に検出することを特徴とする請求の範囲第１項記載のシステム管理プログラム。
【請求項３】
前記障害検出手段は、前記読み出し障害が生じた前記ブロックをストライプ単位に検出することを特徴とする請求の範囲第１項記載のシステム管理プログラム。
【請求項４】
前記障害検出手段は、前記読み出し障害を、前記第１のＲＡＩＤディスクの論理ボリュームの一部に対応づけられているセグメント単位に検出することを特徴とする請求の範囲第１項記載のシステム管理プログラム。
【請求項５】
前記コンピュータを、さらに前記第２のＲＡＩＤディスクで生じた前記ブロックの読み出し障害による前記他のコンピュータからの前記ブロックの補完要求を受信する受信手段、
前記受信手段が前記ブロックの前記補完要求を受信した場合、前記補完要求に対応する前記ブロックを前記第１のＲＡＩＤディスクから取り出すブロック取り出し手段、
前記ブロック取り出し手段が取り出した前記ブロックを、前記他のコンピュータに送信する送信手段、
として機能させることを特徴とする請求の範囲第１項記載のシステム管理プログラム。
【請求項６】
前記受信手段が前記ブロックの前記補完要求を受信した際に前記読み出し障害が存在する場合、前記送信手段が、前記ブロック取り出し手段が取り出した前記ブロックを送信し、かつ、前記要求手段が前記読み出し障害が生じた前記ブロックの補完を要求することを特徴とする請求の範囲第５項記載のシステム管理プログラム。
【請求項７】
前記障害検出手段は、前記受信手段が前記ブロックの前記補完要求を受信した際、前記ブロックの読み出し障害を検出することを特徴とする請求の範囲第６項記載のシステム管理プログラム。
【請求項８】
前記第１のＲＡＩＤディスクと前記第２のＲＡＩＤディスクとのうちの少なくとも一方は、複数のディスクが同一のデータを保持するミラーリングの一部を構成していることを特徴とする請求の範囲第１項記載のシステム管理プログラム。
【請求項９】
前記要求手段は、前記読み出し障害が生じた前記ブロックの補完を前記他のコンピュータに送信する際、前記ブロックが格納されているデータ領域を論理ボリュームの所定領域に変換し、前記他のコンピュータは、前記論理ボリュームに基づいて、前記第２のＲＡＩＤディスクに格納されている前記ブロックを特定することを特徴とする請求の範囲第１項記載のシステム管理プログラム。
【請求項１０】
前記第１のＲＡＩＤディスクと前記第２のＲＡＩＤディスクとには、それぞれサーバによりほぼ同時に同一のデータが書き込まれるよう構成されていることを特徴とする請求の範囲第１項記載のシステム管理プログラム。
【請求項１１】
ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理装置において、
データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスクと、
前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出する障害検出手段と、
前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求する要求手段と、
前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする上書き手段と、
を有することを特徴とするシステム管理装置。
【請求項１２】
ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理方法において、
データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスクにおける前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出し、
前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求し、
前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする、
ことを特徴とするシステム管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシステム管理プログラム、システム管理装置およびシステム管理方法に関し、特に、ディスクの読み出し障害に対する修復処理を行うシステム管理プログラム、システム管理装置およびシステム管理方法に関する。
【背景技術】
【０００２】
近年、電子文書や電子メール、観測データのログ等の大量に蓄積されるデータを参照するために、常時アクセス可能な媒体に格納することがビジネスプロセスの改善やセキュリティの観点から望まれている。【０００３】
このようなデータを格納するためには信頼性が高く、長期の保存が可能で、大容量なストレージ装置が必要となる。また、ストレージ装置は比較的安価なものが好ましい。このような要求を満たすために冗長構成を有する複数のディスクで構成されるＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置が一般的に知られている。なお、ここでいう冗長構成とは、非常時に備えて、主に使用しているディスクとは別にバックアップ用ディスクを用意したり、複数のディスクを用意し、これらを切り替えて用いたりするような構成をいう。【０００４】
また、このようなＲＡＩＤ装置を備えるモジュールをネットワークで複数接続し、仮想ストレージシステムとして利用することも一般的に行われている。
このようなＲＡＩＤ装置ではデータに冗長性を持たせて保持させることで、障害が起こってもデータを修復することを可能にしている。しかし、そのＲＡＩＤ装置の冗長度を超える障害が発生すると、データを修復することができずに失われてしまう。【０００５】
そこで、大規模なシステムでは信頼性をさらに向上させるために複数のＲＡＩＤ装置を互いに接続することによりデータの冗長構成をとるといった階層的な冗長構成がとられている（例えば、特許文献１参照）。
【特許文献１】特開２０００−７６２０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１で開示されている方法では、ＲＡＩＤ装置の読み出し障害に起因してノード（モジュール）内の冗長構成で修復不可能な障害が発生した場合には障害が発生したＲＡＩＤ装置全体分に相当する修復を必要とするという問題があった。【０００７】
また、ノード内で修復不可能な障害が複数のノードで同時に発生し、それがノード間冗長度を超えた場合には、修復が不可能な障害となってしまうという問題があった。
本発明はこのような点に鑑みてなされたものであり、データ修復量を減らすことができるシステム管理プログラム、システム管理装置およびシステム管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では上記問題を解決するために、図１に示すような処理をコンピュータに実行させるためのシステム管理プログラムが提供される。
本発明に係るシステム管理プログラムは、主としてストレージデバイスの読み出し障害に対する修復処理を行うシステム管理プログラムである。【０００９】
システム管理プログラムを実行するコンピュータ１は以下の機能を有する。
第１のＲＡＩＤディスク２は、データの格納単位を構成するブロックを複数備える分散データを複数のディスク２ａ、２ｂ、２ｃ、２ｄに分けて記憶する。【００１０】
障害検出手段３は、ブロックの読み出し障害を、読み出し障害が生じたブロックを含む所定領域毎に検出する。
要求手段４は、読み出し障害が生じた際、第１のＲＡＩＤディスク２内で修復できないブロックの補完を、分散データと同じデータが格納されている第２のＲＡＩＤディスク５を備える他のコンピュータ６に要求する。【００１１】
上書き手段７は、コンピュータ６からのブロックを受け取ると、読み出し障害が生じたブロックに受け取ったブロックを上書きする。
このようなシステム検出プログラムによれば、障害検出手段３により、第１のＲＡＩＤディスク２のブロックの読み出し障害が、読み出し障害が生じたブロックを含む所定領域毎に検出される。この際、要求手段４により、第１のＲＡＩＤディスク２内で修復できないブロックの補完が、コンピュータ６に要求される。そしてコンピュータ６からのブロックを受け取ると、上書き手段７により、読み出し障害が生じたブロックに受け取ったブロックが上書きされる。【００１２】
また、上記課題を解決するために、ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理装置において、データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスクと、前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出する障害検出手段と、前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求する要求手段と、前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする上書き手段と、を有することを特徴とするシステム管理装置が提供される。【００１３】
このようなシステム管理装置によれば、上記システム管理プログラムを実行するコンピュータと同様の処理が実行される。
また、上記課題を解決するために、ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理方法において、データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスクにおける前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出し、前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求し、前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする、ことを特徴とするシステム管理方法が提供される。【００１４】
このようなシステム管理方法によれば、ブロックの読み出し障害が、読み出し障害が生じたブロックを含む所定領域毎に検出され、この際、第１のＲＡＩＤディスク内で修復できないブロックの補完が、分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求され、このコンピュータからのブロックを受け取ると、読み出し障害が生じたブロックに受け取ったブロックが上書きされる。
【発明の効果】
【００１５】
本発明は、読み出し障害が生じたブロックをコンピュータ間の冗長構成を利用して受け取り、それを障害が発生したブロックに上書きするようにしたので、従来に比べデータ修復を行うために必要なデータ量を減らすことができる。これによりシステムの信頼性を向上させることができる。【００１６】
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１７】
【図１】実施の形態に適用される発明を示す概要図である。
【図２】実施の形態のシステム構成を示す図である。
【図３】モジュールのハードウェア構成例を示す図である。
【図４】ノードの構成を示す図である。
【図５】ストライプの構成を示す図である。
【図６】サーバのハードウェア構成例を示す図である。
【図７】一方のモジュールの機能を示すブロック図である。
【図８】他方のモジュールの機能を示すブロック図である。
【図９】ノード内変換テーブルを示す図である。
【図１０】ＲＡＩＤディスク内変換テーブルを示す図である。
【図１１】システムにおける修復処理を示すシーケンス図である。
【図１２】一方のモジュールの修復処理を示すフローチャートである。
【図１３】他方のモジュールの修復処理を示すフローチャートである。
【図１４】復旧処理を示すフローチャートである。
【図１５】データの復旧の概念を示す図である。
【図１６】第２の実施の形態のシステムの管理単位を示す図である。
【図１７】第２の実施の形態のノード内変換テーブルを示す図である。
【図１８】第３の実施の形態のシステムの一方のモジュールを示す図である。
【図１９】第３の実施の形態のシステムの他方のモジュールを示す図である。
【図２０】第３の実施の形態のシステムにおける修復処理を示すシーケンス図である。
【図２１】第３の実施の形態の一方のモジュールの修復処理を示すフローチャートである。
【図２２】第３の実施の形態の一方のモジュールの修復処理を示すフローチャートである。
【図２３】第３の実施の形態の他方のモジュールの修復処理を示すフローチャートである。
【図２４】データの復旧の概念を示す図である。
【図２５】データの復旧の概念を示す図である。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。【００１９】
図１は、実施の形態に適用される発明を示す概要図である。
コンピュータ１は、コンピュータ７に直接的または間接的に接続されている。
第１のＲＡＩＤディスク２は、データの格納単位を構成するブロックを複数備える分散データを複数のディスク２ａ、２ｂ、２ｃ、２ｄに分けて記憶する。分散データは、例えばサーバ（図示せず）が１つのデータを分散して書き込んだデータである。【００２０】
障害検出手段３は、ブロックの読み出し障害を、読み出し障害が生じたブロックを含む所定領域毎に検出する。図１では一例としてディスク２ａ内のブロックの読み出し障害が発生した場合を示している。【００２１】
要求手段４は、読み出し障害が生じた際、第１のＲＡＩＤディスク２内で修復できないブロック（図１ではディスク２ａ内のブロック）の補完を、分散データと同じデータが格納されている第２のＲＡＩＤディスク５を備える他のコンピュータ６に要求する。ここで、コンピュータ１およびコンピュータ６を含むシステムでは第１のＲＡＩＤディスク２と第２のＲＡＩＤディスク５とにデータに冗長性を持たせて保持させている。【００２２】
上書き手段７は、コンピュータ６からのブロックを受け取ると、読み出し障害が生じたブロックに受け取ったブロックを上書きする。
このようなシステム検出プログラムによれば、障害検出手段３により、第１のＲＡＩＤディスク２のブロックの読み出し障害が、読み出し障害が生じたブロックを含む所定領域毎に検出される。この際、要求手段４により、第１のＲＡＩＤディスク２内で修復できないブロックの補完が、コンピュータ６に要求される。そしてコンピュータ６からのブロックを受け取ると、上書き手段７により、読み出し障害が生じたブロックに受け取ったブロックが上書きされる。【００２３】
以下、本発明の実施の形態を具体的に説明する。
図２は、実施の形態のシステム構成を示す図である。
モジュール１００ａ、１００ｂ（複数のモジュール）は、それぞれ複数のストレージデバイスを有している。モジュール１００ａ、１００ｂには、共通のデータが略同時に書き込まれるよう構成されており、一方が予備としてプールされ、他方がサーバで使用される。すなわち、モジュール１００ａとモジュール１００ｂとがＲＡＩＤ（Redundant Array of Inexpensive Disks）レベル１（以下、ＲＡＩＤ＃１という）を構成している。【００２４】
また、各モジュールは、それぞれのストレージデバイスに自己のモジュール内では解決できない不具合が生じた場合、他のモジュールにアクセスを行い、不具合が生じた部分のデータを修復する。【００２５】
サーバ２００は、ネットワーク１０を介して、モジュール１００ａ、１００ｂに接続されており、各装置の運用状況を管理する。具体的には、サーバ２００はデータを１００ａ、１００ｂに略同時に書き込む。【００２６】
図３は、モジュールのハードウェア構成例を示す図である。なお、図３では一例としてモジュール１００ａのハードウェア構成を示している。
モジュール１００ａは、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０５を介してＲＡＭ（Random Access Memory）１０２、ノード１０３、および通信インタフェース１０４が接続されている。【００２７】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。【００２８】
ノード１０３は、それぞれ複数のハードディスクドライブ（ＨＤＤ:Hard Disk Drive）で構成されるＲＡＩＤディスク１０３１およびＲＡＩＤディスク１０３２を有している。ノード１０３では、ＲＡＩＤディスク単位に論理ボリュームの管理／割当がなされている。ＲＡＩＤディスク１０３１およびＲＡＩＤディスク１０３２には、それぞれＯＳやアプリケーションプログラム等各種データが格納される。【００２９】
通信インタフェース１０４は、ネットワーク１０に接続されている。通信インタフェース１０４は、ネットワーク１０を介して、サーバ２００やサーバ２００を介してモジュール１００ｂとの間でデータの送受信を行う。【００３０】
次に、ノード１０３の構造について説明する。
図４は、ノードの構造を示す図である。
ノード１０３のＲＡＩＤディスク１０３１は、例えば１ＴＢ程度の記憶容量を有している。ＲＡＩＤディスク１０３１は、ＲＡＩＤレベル５（以下、ＲＡＩＤ＃５という）を構成する複数のＨＤＤ１０３ａ、１０３ｂ、１０３ｃ、１０３ｄを有している。ＨＤＤ１０３ａ、１０３ｂ、１０３ｃ、１０３ｄのそれぞれ先頭から例えば１０ＭＢの領域には論理ボリュームＲＢ１が構成されている。【００３１】
１つのデータＤ１は、ストライピング処理によって分散データＤ１１、Ｄ１２、Ｄ１３に分散され、それぞれＨＤＤ１０３ａ、１０３ｂ、１０３ｃに書き込まれる。この処理の際、パリティデータ（誤り訂正符号データ）Ｐ１が生成されＨＤＤ１０３ｄに書き込まれる。また、例えば次のデータＤ２がストライピング処理によって分散データＤ２１、Ｄ２２、Ｄ２３に分散され書き込まれる際には、生成されたパリティデータＰ２は、ＨＤＤ１０３ｄとは異なるディスク（図５ではＨＤＤ１０３ｃ）に書き込まれる。このため、１つのＨＤＤにアクセスが集中することを回避することができ、書き込みの高速化を実現することができる。【００３２】
以下、分散データおよびパリティデータ（例えば分散データＤ１１やパリティデータＰ１等）が格納される単位を「ストライプ」という。各ストライプの容量は、例えば６４ＫＢ程度である。【００３３】
図５は、ストライプの構成を示す図である。
図５に示すストライプＳｔ１は、複数のブロックを有している。各ブロックの容量は、例えば５１２Ｂ程度である。データのリード／ライトは、ブロック単位で行われる。すなわち、各分散データの格納単位であるストライプの対応するブロック毎にリード／ライトが行われる。【００３４】
再び図４に戻って説明する。
ＲＡＩＤ＃５は、ＨＤＤの故障時にデータを再生成する機能を有している。
例えばＣＰＵからの命令により分散データＤ１１、Ｄ１２、Ｄ１３を取り出すときに、分散データＤ１２が壊れている場合は、パリティデータＰ１によって分散データＤ１２が復活する。このように、パリティデータを利用し、故障したＨＤＤの分散データを他のディスクのデータを使用して再生成することで、システムの停止を回避することができる。【００３５】
ＲＡＩＤディスク１０３２は、ＲＡＩＤ＃１を構成するＨＤＤ１０３ｅ、１０３ｆを有している。
図６は、サーバのハードウェア構成例を示す図である。【００３６】
サーバ２００は、ＣＰＵ（Central Processing Unit）２０１によって装置全体が制御されている。ＣＰＵ２０１には、バス２０７を介してＲＡＭ（Random Access Memory）２０２、ＨＤＤ２０３、グラフィック処理装置２０４、入力インタフェース２０５、および通信インタフェース２０６が接続されている。【００３７】
ＲＡＭ２０２には、ＣＰＵ２０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２０２には、ＣＰＵ２０１による処理に必要な各種データが格納される。ＨＤＤ２０３には、ＯＳやアプリケーションプログラムが格納される。また、ＨＤＤ２０３内には、プログラムファイルが格納される。【００３８】
グラフィック処理装置２０４には、モニタ４１が接続されている。グラフィック処理装置２０４は、ＣＰＵ２０１からの命令に従って、画像をモニタ４１の画面に表示させる。入力インタフェース２０５には、キーボード４２とマウス４３とが接続されている。入力インタフェース２０５は、キーボード４２やマウス４３から送られてくる信号を、バス２０７を介してＣＰＵ２０１に送信する。【００３９】
通信インタフェース２０６は、ネットワーク１０に接続されている。通信インタフェース２０６は、ネットワーク１０を介して、モジュール１００ａ、１００ｂや他のコンピュータとの間でデータの送受信を行う。【００４０】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
このようなハードウェア構成をそれぞれ有するシステムにおいてデータの修復処理を行うために、モジュール１００ａ、１００ｂ内には、以下のような機能が設けられる。【００４１】
図７は、一方のモジュールの機能を示すブロック図である。
モジュール１００ａは、ＲＡＩＤディスク１１０と、ＲＡＩＤディスク１２０と、障害検出部（障害検出手段）１５と、論理ボリューム特定部１６と、変換テーブル記憶部１７と、インタフェース部１８と応答データ処理部１９とを有している。【００４２】
ＲＡＩＤディスク１１０は、ＲＡＩＤ＃５を構成するディスク１１、１２、１３、１４を有している。ディスク１１、１２、１３、１４は、それぞれＨＤＤ１０３ａ、１０３ｂ、１０３ｃ、１０３ｄに対応している。【００４３】
図７では、ＨＤＤ１０３ａ、１０３ｂ、１０３ｃ、１０３ｄの各ストライプの一部を図示しており、ディスク１１のストライプＳｔ１１には分散データＤ１１が格納されている。ディスク１２のストライプＳｔ１２には、分散データＤ１２が格納されている。ディスク１３のストライプＳｔ１３には、分散データＤ１３が格納されている。ディスク１４のストライプＳｔ１４には、パリティデータＰ１が格納されている。【００４４】
ＲＡＩＤディスク１２０は、ＲＡＩＤ＃１を構成するディスク２１、２２を有している。ディスク２１、２２は、それぞれＨＤＤ１０３ｅ、１０３ｆに対応している。なお、ディスク２１、２２には分散データＤ１１、Ｄ１２、Ｄ１３以外のデータが格納されている。【００４５】
障害検出部１５は、ＲＡＩＤディスク１１０およびＲＡＩＤディスク１２０を定期的に監視し、各ＲＡＩＤディスクに読み出し障害が存在するか否かを検出する。読み出し障害の検出は、各ストライプのブロック単位で行う。読み出し障害が存在する場合には、読み出し障害が存在するＲＡＩＤディスクおよびＲＡＩＤディスクの先頭側から何番目のブロックに読み出し障害が起こったか（読み出し障害が起こったブロックの位置）を特定する。なお、読み出し障害とは、ディスクの一部のデータが読み出せなくなった場合でもその部分にデータを上書きすることで再びデータを読み書きすることができる障害をいう。【００４６】
障害検出部１５は、ＲＡＩＤディスク１１０で読み出し障害が存在した場合、ＲＡＩＤディスク１１０内で解決できる障害であるか否かを判断する。ＲＡＩＤディスク１１０内で解決できる障害である場合は、パリティデータＰ１を用いて障害が生じたディスクの分散データを再生成することで読み出し障害を解決する。一方、ＲＡＩＤディスク１１０内で解決できない障害の場合、障害が生じたブロックの位置情報を論理ボリューム特定部１６に渡す。【００４７】
論理ボリューム特定部１６は、障害が生じたブロックの位置情報に基づいて、同じブロックを他のモジュールから取得するための要求データを作成する。この要求データは、変換テーブル（後述）を用いて作成し、作成した要求データをインタフェース部１８に渡す（送る）。【００４８】
この論理ボリューム特定部１６により、要求手段の一機能が構成されている。
変換テーブル記憶部１７には、変換テーブルが格納されている。
インタフェース部１８は、要求データを受け取るとサーバ２００に送信する。【００４９】
また、インタフェース部１８は、サーバ２００から応答データ（後述）を受信すると、受信したデータを応答データ処理部１９に渡す。このように、インタフェース部１８は、内部からのデータを受け取ると、サーバ２００に送信し、サーバ２００等の外部からのデータを受信すると、モジュール１００ａ内の各部に渡す。【００５０】
応答データ処理部１９は、上書き手段の主要部を構成しており、応答データに基づいて、障害が生じたディスクの分散データの復旧処理（後述）を行う。
図８は、他方のモジュールの機能を示すブロック図である。【００５１】
モジュール１００ｂは、ＲＡＩＤ＃０を構成するディスク１１ｂ、１２ｂ、１３ｂを有するＲＡＩＤディスク１３０と、ＲＡＩＤ＃０を構成するディスク１４ｂ、１５ｂ、１６ｂを有するＲＡＩＤディスク１４０と、変換テーブル記憶部１７ｂと、インタフェース部１８ｂと、要求データ処理部２０ｂとを有している。【００５２】
このＲＡＩＤディスク１３０とＲＡＩＤディスク１４０とで二重化され、ＲＡＩＤ＃０＋１の構成となっている。
ディスク１１ｂ、１２ｂ、１３ｂ、１４ｂ、１５ｂ、１６ｂにはディスク１１、１２、１３に格納されているデータと同一のデータがそれぞれ二重化（ミラーリング）されて格納されている。詳しくは、ディスク１１ｂのストライプＳｔ２１およびディスク１４ｂのストライプＳｔ２４にはそれぞれ分散データＤ１１が格納されている。ディスク１２ｂのストライプＳｔ２２およびディスク１５ｂのストライプＳｔ２５にはそれぞれ分散データＤ１２が格納されている。ディスク１３ｂのストライプＳｔ２３およびディスク１６ｂのストライプＳｔ２６にはそれぞれ分散データＤ１３が格納されている。【００５３】
変換テーブル記憶部１７ｂと、インタフェース部１８ｂとについては、それぞれモジュール１００ａの変換テーブル記憶部１７と、インタフェース部１８と同様の機能を有しているため、詳細な説明を省略する。【００５４】
要求データ処理部２０ｂは、インタフェース部１８ｂから要求データを受け取ると、変換テーブル記憶部１７ｂの変換テーブルを参照して、対応するＲＡＩＤディスクを特定し、そのＲＡＩＤディスクからブロック（読み出し障害が発生したブロックに該当するブロック）を取り出す。そして、取り出したブロックを含む応答データを生成してインタフェース部１８ｂに送る。【００５５】
次に、変換テーブル記憶部１７、１７ｂに格納されている変換テーブルについて説明する。
変換テーブル記憶部１７、１７ｂには、ノード内の変換テーブルであるノード内変換テーブルとＲＡＩＤディスク内の変換テーブルであるＲＡＩＤディスク内変換テーブルとが設けられている。【００５６】
図９は、ノード内変換テーブルを示す図である。
ノード内変換テーブル１７１ａは、ＲＡＩＤディスク単位で論理ボリュームの管理（割当）がなされている。【００５７】
ノード内変換テーブル１７１ａには、論理ボリュームおよびＲＡＩＤディスクの欄が設けられており、各欄の横方向に並べられた情報同士が互いに関連づけられている。
論理ボリュームの欄には、ＲＡＩＤディスクの欄に格納されたＲＡＩＤディスク名に対応する論理ボリュームが設定される。図６の例では、論理ボリュームＡがＲＡＩＤディスク１２０に対応づけられており、論理ボリュームＢがＲＡＩＤディスク１１０に対応づけられている。【００５８】
ＲＡＩＤディスクの欄には、モジュール１００内のＲＡＩＤディスク名、すなわちＲＡＩＤディスクを一意に特定する情報が設定されている。
図１０は、ＲＡＩＤディスク内変換テーブルを示す図である。【００５９】
ＲＡＩＤディスク内変換テーブル１７２ａには、ＲＡＩＤディスクおよび詳細構成の欄が設けられており、各欄の横方向に並べられた情報同士が互いに関連づけられている。
ＲＡＩＤディスクの欄には、モジュール１００ａ内のＲＡＩＤディスク名が設定されている。【００６０】
詳細構成の欄には、ＲＡＩＤレベルに応じた項目が設定される。ＲＡＩＤディスク１１０はＲＡＩＤ＃５であるため、ＲＡＩＤディスク１１０のＲＡＩＤレベル（ＲＡＩＤ＃５）とディスク個数とストライプサイズとが設定されている。ＲＡＩＤディスク１２０はＲＡＩＤ＃１であるため、ＲＡＩＤディスク１１０のＲＡＩＤレベル（ＲＡＩＤ＃１）のみが設定されている。【００６１】
ノード内変換テーブル１７１ａおよび、ＲＡＩＤディスク内変換テーブル１７２ａの内容（対応付け）は、サーバ２００によって常時書き換えられる。
一方、モジュール１００ｂの変換テーブル記憶部１７ｂにも同様の構成を有するノード内変換テーブルおよびＲＡＩＤディスク内変換テーブルが設けられている。【００６２】
このように論理ボリュームを用いてデータをやりとりすることにより、互いの物理アドレスを知らなくても容易にデータの取得先を特定することができる。
次に、モジュール１００ａのＲＡＩＤディスク１１０に読み出し障害が発生した場合のシステムにおける修復処理の概要について説明する。【００６３】
図１１は、システムにおける修復処理を示すシーケンス図である。
ＲＡＩＤディスク１１０にて読み出し障害が発生した場合、モジュール１００ａが要求データを生成する（ステップＳ１１）。【００６４】
次に、モジュール１００ａが、生成した要求データをサーバ２００に送信する（ステップＳ１２）。
次に、サーバ２００が、受信した要求データをモジュール１００ｂに送信する（ステップＳ１３）。【００６５】
次に、モジュール１００ｂが、受信した要求データに基づいて応答データを生成する（ステップＳ１４）。
次に、モジュール１００ｂが、生成した応答データをサーバ２００に送信する（ステップＳ１５）。【００６６】
次に、サーバ２００が、受信した応答データをモジュール１００ａに送信する（ステップＳ１６）。
次に、モジュール１００ａが、受信した応答データを用いて復旧処理を行う（ステップＳ１７）。【００６７】
以上で、修復処理を終了する。
次に、修復処理におけるモジュール１００ａ側の処理について詳しく説明する。
図１２は、一方のモジュールの修復処理を示すフローチャートである。【００６８】
まず、障害検出部１５が、読み出し障害が発生したか否かを検出する（ステップＳ２１）。読み出し障害が発生していない場合（ステップＳ２１のＮｏ）、修復処理を終了する。【００６９】
一方、読み出し障害が発生している場合（ステップＳ２１のＹｅｓ）、論理ボリューム特定部１６が、障害が生じたブロックの位置情報およびＲＡＩＤディスク内変換テーブル１７２ａを参照することにより読み出し障害が発生したＲＡＩＤディスクを特定し（ステップＳ２２）、さらにノード内変換テーブル１７１ａを参照することにより読み出し障害が発生したブロックを含む論理ボリュームを特定する（ステップＳ２３）。【００７０】
次に、論理ボリューム特定部１６が、特定した論理ボリューム名を含む要求データを生成し（ステップＳ２４）、インタフェース部１８に渡す。
次に、インタフェース部１８が、要求データをサーバ２００に送信する（ステップＳ２５）。【００７１】
その後、インタフェース部１８が、応答データを受信したか否かを判断する（ステップＳ２６）。応答データを受信していない場合（ステップＳ２６のＮｏ）、応答データの受信を待機する。一方、応答データを受信した場合（ステップＳ２６のＹｅｓ）。応答データ処理部１９が、復旧処理を行う（ステップＳ２７）。【００７２】
以上で修復処理におけるモジュール１００ａ側の処理を終了する。
次に、修復処理におけるモジュール１００ｂ側の処理について詳しく説明する。
図１３は、他方のモジュールの修復処理を示すフローチャートである。【００７３】
まず、インタフェース部１８ｂが、要求データを受信したか否かを判断する（ステップＳ３１）。要求データを受信していない場合（ステップＳ３１のＮｏ）、要求データの受信を待機する。一方、要求データを受信した場合（ステップＳ３１のＹｅｓ）、要求データ処理部２０ｂが変換テーブル記憶部１７ｂ内のノード内変換テーブル、ＲＡＩＤディスク内変換テーブルを参照することにより障害が生じたブロックを特定する（ステップＳ３２）。次に、要求データ処理部２０ｂが、特定したブロックを含む応答データを生成する（ステップＳ３３）。【００７４】
次に、インタフェース部１８ｂが応答データをサーバ２００に送信する（ステップＳ３４）。
以上で修復処理におけるモジュール１００ｂ側の処理を終了する。【００７５】
次に、図１２に示すステップＳ２７の復旧処理について説明する。
図１４は、復旧処理を示すフローチャートである。
まず、ＲＡＩＤディスク１１０内の読み出し障害が発生したブロックのストライプと、パリティデータが格納されているストライプ以外の全てのディスクにおける読み出し障害が発生したブロックに対応するブロックが格納されているストライプを読み出す（ステップＳ２６１）。【００７６】
次に、読み出したストライプの互いに対応する部分の各ブロックと、応答データから取り出したブロックとから新たなパリティデータのブロックを作成する（ステップＳ２６２）。【００７７】
次に、作成したパリティデータのブロックを従来のパリティデータが格納されているブロックに上書き（更新）する。また、応答データから取り出したブロックを、読み出し障害が発生したブロックに上書きする（ステップＳ２６３）。【００７８】
以上で、復旧処理を終了する。
次に、システムにおける修復処理を、具体例を用いて説明する。
なお、以下では一例として分散データＤ１３のブロックＢ１３とブロックＢ１３を修復するためのパリティデータＰ１の該当ブロックとに読み出し障害が同時に発生し、ＲＡＩＤディスク１１０内での自己修復ができない場合の修復処理について説明する。【００７９】
まず、障害検出部１５が、障害が生じたブロックＢ１３の位置情報を論理ボリューム特定部１６に渡す。そして、論理ボリューム特定部１６が、ＲＡＩＤディスク内変換テーブル１７２ａおよびノード内変換テーブル１７１ａを参照することにより読み出し障害が発生したブロックＢ１３を含む論理ボリュームを特定する。そして、論理ボリューム特定部１６が、この論理ボリューム名を含む要求データを生成しインタフェース部１８に渡す。インタフェース部１８は、要求データをサーバ２００に送信する。その後インタフェース部１８は、応答データを待機する。【００８０】
一方、インタフェース部１８ｂが要求データを受信すると、要求データ処理部２０ｂが変換テーブル記憶部１７ｂに格納されているノード内変換テーブルおよびＲＡＩＤディスク内変換テーブルを参照することによりディスク１３ｂを特定する。そして、要求データ処理部２０ｂが算出した分散データＤ１３内のブロックＢ１３をディスク１３ｂから取り出し、応答データを生成する。その後、インタフェース部１８ｂが応答データをサーバ２００に送信する。【００８１】
図１５は、データの復旧の概念を示す図である。
インタフェース部１８が応答データを受信すると、応答データ処理部１９がディスク１１、１２に格納されている分散データＤ１１、Ｄ１２を読み出す。そして読み出した分散データＤ１１、Ｄ１２のブロックＢ１１、Ｂ１２と、応答データから取り出したブロックＢ１３とから新たなパリティデータＰ１を作成する。次に、作成したパリティデータＰ１をディスク１４に上書きして、パリティデータを更新する。また、分散データＤ１３を読み出し障害が発生したディスク１３の読み出し障害が生じた領域に上書きする。【００８２】
以上で修復処理を終了する。
以上述べたように、本実施の形態のシステムによれば、読み出し障害が発生した場合に、モジュール１００ａとモジュール１００ｂとの間の冗長構成を利用して修復すべきデータを構築し、それを障害が発生した箇所に上書きすることで容易にデータを修復することができる。これにより、大幅にデータ修復量を低減させることができる。また、データ修復中の記憶手段への他のアクセスの影響を抑制することができる。よってシステムの信頼性を向上させることができる。【００８３】
なお、本実施の形態では読み出し障害が存在する場合に修復処理を行うようにしたが、本発明ではこれに限らず、例えば読み出し障害が一定以上発生した場合やディスクのある特定の物理領域（例えば、連続する領域）で読み出し障害が発生した場合には修復処理を行わず、ディスクの物理的な障害であると判断するよう構成されていてもよい。読み出し障害以外の障害の場合は他の処理を行うことにより、処理の効率化を図ることができる。【００８４】
また、本実施の形態ではモジュール１００ａが要求データを生成し、サーバ２００に送信するようにしたが、本発明ではこれに限らず、例えばサーバ２００がモジュール１００ａの読み出し障害が発生したディスクに格納されているブロックの取得依頼を受けて要求データを生成してモジュール１００ｂに送信し、サーバ２００がモジュール１００ｂから応答データを取得し、モジュール１００ａに送信するようにしてもよい。【００８５】
また、本実施の形態では、サーバ２００を介して修復処理を行う場合について説明したが、本発明ではこれに限らず、起動時にモジュールを識別するテーブルを双方のモジュールに与え、モジュール１００ａおよび１００ｂは、与えられたテーブルを見てサーバ２００を介さずに直接データ送受信を行うようにしてもよい。【００８６】
また、本実施の形態では一例としてモジュール１００ａおよびモジュール１００ｂの２つのモジュール間での修復処理について説明したが、本発明ではこれに限らず、３つ以上のモジュール間での修復処理についても適用することができるのはいうまでもない。この場合も論理ボリュームを用いてデータをやりとりすることにより、互いの物理アドレスを知らなくても容易にデータの取得先を特定することができる。【００８７】
次に、第２の実施の形態のシステムについて説明する。
以下、第２の実施の形態のシステムについて、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。【００８８】
第２の実施の形態のシステムでは、セグメント単位で、論理ボリュームが分散されて管理（割当）がなされている点が異なり、それ以外は第１の実施の形態と同様である。
図１６は、第２の実施の形態のシステムの管理単位を示す図である。【００８９】
図１６では、ＲＡＩＤディスク１０３１の論理ボリュームＲＢ１がセグメントｓｇ１、ｓｇ２、ｓｇ３（３つのセグメント）で構成されている。このセグメントのサイズ（セグメントサイズ）は予め定められており、各セグメントには、複数のストライプが含まれている。【００９０】
また、ＲＡＩＤディスク１０３２も同様に複数のセグメントで構成されている。
次に、第２の実施の形態の変換テーブル記憶部１７に格納されているノード内変換テーブルについて説明する。【００９１】
図１７は、第２の実施の形態のノード内変換テーブルを示す図である。
ノード内変換テーブル１７３ａは、セグメント単位で論理ボリュームが分散されて管理（割当）がなされている。【００９２】
ノード内変換テーブル１７３ａには、論理ボリュームおよびＲＡＩＤディスクの欄が設けられており、各欄の横方向に並べられた情報同士が互いに関連づけられている。
論理ボリュームの欄には、論理ボリューム名およびこの論理ボリューム名のセグメント名が設定される。【００９３】
ＲＡＩＤディスクの欄には、論理ボリュームの欄に設定された論理ボリュームおよびセグメントに対応するＲＡＩＤディスク名およびセグメント名を一意に特定する情報が格納されている。【００９４】
一方、モジュール１００ｂの変換テーブル記憶部１７ｂにも同様の構成を有するノード内変換テーブルが格納されている。
次に、第２の実施の形態のシステムの修復処理について説明する。【００９５】
まず、モジュール１００ａの修復処理について説明する。
論理ボリューム特定部１６は、障害が生じたブロックの位置情報、ＲＡＩＤディスク内変換テーブル１７２ａおよびセグメントサイズを参照することにより読み出し障害が発生したＲＡＩＤディスクのセグメントを特定する。さらにノード内変換テーブル１７３ａを参照することにより読み出し障害が発生したブロックを含む論理ボリュームおよびセグメントを特定する。【００９６】
次に、論理ボリューム特定部１６が、特定した論理ボリュームとセグメントとを含む要求データを生成しインタフェース部１８に渡す。以降、第１の実施の形態のモジュール１００ａの修復処理と同様の処理を行う。【００９７】
次に、モジュール１００ｂの修復処理について説明する。
インタフェース部１８ｂが要求データを受信した場合、要求データ処理部２０ｂが変換テーブル記憶部１７ｂ内のノード内変換テーブルを参照することにより、読み出し障害が発生したブロックを含むＲＡＩＤディスクおよびセグメントを特定する。さらに、ＲＡＩＤディスク内変換テーブルを参照することにより障害が生じたブロックを特定する。次に、要求データ処理部２０ｂが、特定したブロックを含む応答データを生成する。次に、インタフェース部１８ｂが応答データをサーバ２００に送信する。【００９８】
以上でモジュール１００ｂの修復処理を終了する。
この第２の実施の形態のシステムによれば、前述した第１の実施の形態のシステムと同様の効果が得られる。【００９９】
そして、この第２の実施の形態では、セグメントの領域単位で読み出し障害を検出するため、さらに細かい領域指定を行うことができ、より柔軟な論理ボリュームの管理を行うことが可能となる。【０１００】
次に、第３の実施の形態のシステムについて説明する。
以下、第３の実施の形態のシステムについて、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。【０１０１】
第３の実施の形態のシステムは、複数のモジュールに読み出し障害が生じた場合においてもデータの修復を行うことができるシステムである。
第３の実施の形態のシステムは、モジュール１００ｃとモジュール１００ｄを有している。【０１０２】
図１８は、第３の実施の形態のシステムの一方のモジュールを示す図である。
図１８に示すように、モジュール１００ｃは、モジュール１００ａに比べさらに要求データ処理部２０ｂと同機能の要求データ処理部２０ｃを有している。【０１０３】
図１９は、第３の実施の形態のシステムの他方のモジュールを示す図である。
図１９に示すように、モジュール１００ｄは、モジュール１００ｂに比べさらに障害検出部１５ｄと、論理ボリューム特定部１６ｄと、応答データ処理部１９ｄと、要求データ処理部２０ｄとを有している。【０１０４】
障害検出部１５ｄは、障害検出部１５と同機能を有している。すなわち、ＲＡＩＤディスク１３０、１４０を定期的に監視し、各ディスクに読み出し障害が存在するか否かを検出する。さらに、障害検出部１５ｄは、要求データ処理部２０ｄからの検出依頼を受けると、読み出し障害の検出を行い、障害が生じたブロックの位置情報を検出依頼に対する結果として論理ボリューム特定部１６ｄに渡す。【０１０５】
論理ボリューム特定部１６ｄは、論理ボリューム特定部１６と同機能を有している。すなわち、要求データ処理部２０ｄが要求した検出依頼に因らない検出結果を受け取ると、検出結果に基づいた要求データを生成し、インタフェース部１８ｂに送る。また、検出依頼に対する検出結果を受け取ると、検出結果に基づいた要求データを生成し、この要求データをインタフェース部１８ｂに送らずに要求データ処理部２０ｄに送る。【０１０６】
応答データ処理部１９ｄは、応答データ処理部１９と同機能を有している。
要求データ処理部２０ｄは、要求データ処理部２０ｂと同機能を有している。すなわち、インタフェース部１８ｂから要求データを受け取ると、ノード内変換テーブルおよびＲＡＩＤディスク内変換テーブルを参照して、対応するディスクを特定し、そのディスクからブロックを取り出す。そして、取り出したブロックを含む応答データを生成するとともに、障害検出部１５ｄに検出依頼を送る。その後、論理ボリューム特定部１６ｄから要求データを受け取ると、応答データに要求データを付加した応答要求データを生成してインタフェース部１８ｂに送る。検出依頼を送って所定時間要求データの送信がなければ要求データはないものとして応答データをインタフェース部１８ｂに送る。【０１０７】
この要求データ処理部２０ｄにより、要求手段の一機能と受信手段の主要部と送信手段の主要部とが構成されている。
次に、読み出し障害が発生した場合の第３の実施の形態のシステムの修復処理について説明する。【０１０８】
図２０は、第３の実施の形態のシステムにおける修復処理を示すシーケンス図である。
ステップＳ４１〜Ｓ４４は、それぞれ第１の実施の形態のシステムのステップＳ１１〜Ｓ１４と同様の動作を行う。【０１０９】
次に、モジュール１００ｄが、モジュール１００ｄ側に要求データが存在するか否かを判断する（ステップＳ４５）。モジュール１００ｄ側に要求データが存在しない場合は、第１の実施の形態のステップＳ１５以降の処理を行う。【０１１０】
一方、モジュール１００ｄ側に要求データが存在する場合、モジュール１００ｄが、モジュール１００ｄ側に存在する要求データを応答データに付加した応答要求データを生成する（ステップＳ４６）。【０１１１】
次に、モジュール１００ｄが、生成した応答要求データをサーバ２００に送信する（ステップＳ４７）。
次に、サーバ２００が、受信した応答要求データをモジュール１００ｃに送信する（ステップＳ４８）。【０１１２】
次に、モジュール１００ｃが、受信した応答要求データに含まれる応答データに基づいて復旧処理を行う（ステップＳ４９）。
次に、モジュール１００ｃが、受信した応答要求データの要求データの部分に基づいて応答データを生成する（ステップＳ５０）。【０１１３】
次に、モジュール１００ｃが、生成した応答データをサーバ２００に送信する（ステップＳ５１）。
次に、サーバ２００が、受信した応答データをモジュール１００ｄに送信する（ステップＳ５２）。【０１１４】
次に、モジュール１００ｄが、受信した応答データに基づいて読み出し障害が生じたブロックに、得られたデータを格納する（ステップＳ５３）。
以上で修復処理を終了する。【０１１５】
次に、第３の実施の形態の修復処理におけるモジュール１００ｃ側の処理について詳しく説明する。
図２１および図２２は、第３の実施の形態の一方のモジュールの修復処理を示すフローチャートである。【０１１６】
ステップＳ６１〜Ｓ６５については、図１２のステップＳ２１〜Ｓ２５と同様の処理を行う。
次に、インタフェース部１８が、応答データを受信したか否かを判断する（ステップＳ６６）。応答データを受信した場合（ステップＳ６６のＹｅｓ）。応答データ処理部１９が、復旧処理を行う（ステップＳ６７）。そしてモジュール１００ｃの修復処理を終了する。一方、応答データを受信していない場合（ステップＳ６６のＮｏ）、インタフェース部１８が、応答要求データを受信したか否かを判断する（ステップＳ６８）。応答要求データを受信していない場合（ステップＳ６８のＮｏ）、ステップＳ６６に移行し、処理を継続する。一方、応答要求データを受信した場合（ステップＳ６８のＹｅｓ）、応答データ処理部１９が、復旧処理を行う（図２２のステップＳ６９）。その後、応答要求データを要求データ処理部２０ｃに渡す。【０１１７】
次に、要求データ処理部２０ｃが、ノード内変換テーブル１７１ａ、ＲＡＩＤディスク内変換テーブル１７２ａを参照することにより障害が生じたブロックを特定する（ステップＳ７０）。次に、要求データ処理部２０ｃが、特定したブロックを含む応答データを生成する（ステップＳ７１）。【０１１８】
次に、インタフェース部１８ｂが応答データをサーバ２００に送信する（ステップＳ７２）。
以上で、モジュール１００ｃの修復処理を終了する。【０１１９】
次に、第３の実施の形態の修復処理におけるモジュール１００ｄ側の処理について詳しく説明する。
図２３は、第３の実施の形態の他方のモジュールの修復処理を示すフローチャートである。【０１２０】
まず、インタフェース部１８ｂが、要求データを受信したか否かを判断する（ステップＳ８１）。要求データを受信していない場合（ステップＳ８１のＮｏ）、要求データの受信を待機する。一方、要求データを受信した場合（ステップＳ８１のＹｅｓ）、変換テーブル記憶部１７ｂ内のノード内変換テーブル、ＲＡＩＤディスク内変換テーブルを参照することにより障害が生じたブロックを特定する（ステップＳ８２）。次に、要求データ処理部２０ｄが、モジュール１００ｃに送信すべき要求データが存在するか否かを判断する（ステップＳ８３）。モジュール１００ｃに送信すべき要求データが存在しない場合（ステップＳ８３のＮｏ）、応答データを生成する（ステップＳ８４）。【０１２１】
そして、インタフェース部１８ｂが、応答データをサーバ２００に送信し、処理を終了する（ステップＳ８５）。
一方、モジュール１００ｃに送信すべき要求データが存在する場合（ステップＳ８３のＹｅｓ）、要求データ処理部２０ｄが、要求応答データを生成する（ステップＳ８６）。【０１２２】
そして、インタフェース部１８ｂが、要求応答データをサーバ２００に送信する（ステップＳ８７）。
次に、インタフェース部１８ｂが、ステップＳ８７で送信した応答要求データに対する応答データを受信したか否かを判断する（ステップＳ８８）。応答データを受信していない場合（ステップＳ８８のＮｏ）、応答データを待機する。一方、応答データを受信した場合（ステップＳ８８のＹｅｓ）、応答データ処理部１９が、復旧処理を行う（ステップＳ８９）。【０１２３】
以上でモジュール１００ｄの修復処理を終了する。
次に、第３の実施の形態のシステムの修復処理について具体例を用いて説明する。本実施の形態では、一例としてモジュール１００ｃのディスク１３の分散データＤ１３のブロックＢ１３とブロックＢ１３を修復するためのパリティデータＰの該当ブロックとモジュール１００ｄのディスク１１ｂの分散データＤ１１のブロックＢ１１とディスク１４ｂの分散データＤ１１のブロックＢ１１とに読み出し障害が発生した場合について説明する。【０１２４】
まず、モジュール１００ｃの障害検出部１５が、障害が生じたブロックＢ１３の位置情報を論理ボリューム特定部１６に渡す。そして、論理ボリューム特定部１６が、ＲＡＩＤディスク内変換テーブル１７２ａおよびノード内変換テーブル１７１ａを参照することにより読み出し障害が発生したブロックＢ１３を含む論理ボリュームを特定する。そして、論理ボリューム特定部１６が、特定した論理ボリュームを含む要求データを生成しインタフェース部１８に渡す。インタフェース部１８は、要求データをサーバ２００に送信する。その後インタフェース部１８は、応答データを待機する。【０１２５】
一方、モジュール１００ｄのインタフェース部１８ｂが要求データを受信すると、要求データ処理部２０ｄが変換テーブル記憶部１７ｂに格納されているノード内変換テーブルおよびＲＡＩＤディスク内変換テーブルを参照することによりディスク１３ｂを特定する。そして、要求データ処理部２０ｄが算出した分散データＤ１３内のブロックをディスク１３ｂから取り出し、応答データを生成する。また、このタイミングで要求データ処理部２０ｄが、障害検出部１５ｄに検出依頼を送る。そして障害検出部１５ｄが読み出し障害の検出を行いディスク１１ｂ、１４ｂの各ブロックＢ１１に読み出し障害が発生したことを検出し、障害が生じたブロックＢ１１の位置情報を論理ボリューム特定部１６ｄに渡す。そして、論理ボリューム特定部１６ｄが、変換テーブル記憶部１７ｂに格納されているＲＡＩＤディスク内変換テーブルおよびノード内変換テーブルを参照することにより読み出し障害が発生したブロックＢ１１を含む論理ボリュームを特定する。そして、論理ボリューム特定部１６ｄが、特定した論理ボリュームを含む要求データを生成し、要求データ処理部２０ｄに送る。【０１２６】
要求データ処理部２０ｄは、ブロックＢ１１を要求する要求データとブロックＢ１３を含む応答データとを受け取り要求応答データを生成する。そして、インタフェース部１８ｂが要求応答データをサーバ２００に送信する。【０１２７】
図２４は、データの復旧の概念を示す図である。
モジュール１００ｃのインタフェース部１８が応答要求データを受信すると、応答データ処理部１９がディスク１１、１２に格納されている分散データＤ１１、Ｄ１２を読み出す。そして読み出した分散データＤ１１、Ｄ１２のブロックＢ１１、Ｂ１２と、応答要求データから取り出したブロックＢ１３とから新たなパリティデータＰ１を作成する。次に、作成したパリティデータＰ１をディスク１４に上書きして、パリティデータを更新する。また、ディスク１３の読み出し障害が生じた領域に分散データＤ１３を上書きする。その後、応答要求データを要求データ処理部２０に渡す。そして、要求データ処理部２０が、ノード内変換テーブル１７１ａおよびＲＡＩＤディスク内変換テーブル１７２ａを参照することによりディスク１１ｂを特定する。そして、要求データ処理部２０が算出した分散データＤ１１内のブロックＢ１１をディスク１１ｂから取り出し、応答データを生成する。そして、インタフェース部１８ｂが応答データをサーバ２００に送信する。【０１２８】
図２５は、データの復旧の概念を示す図である。
インタフェース部１８ｂが応答データを受信すると、応答データ処理部１９ｄがディスク１１ｂ、１４ｂの各ブロックＢ１１を上書きする。以上で修復処理が終了する。【０１２９】
この第３の実施形態のシステムによれば、第１の実施の形態のシステムと同様の効果が得られる。
そして、第３の実施形態のシステムによれば、モジュール１００ｃとモジュール１００ｄの双方に読み出し障害が発生した場合においても、ノード間での冗長構成と、ノード内での冗長構成とを協調させて動作させることにより、容易かつ確実に所望のデータを修復させることができる。【０１３０】
なお、本実施の形態の修復処理では、まずモジュール１００ｃのデータを修復し、その後モジュール１００ｄのデータを修復したが、これに限らず、まずモジュール１００ｄのデータを修復し、その後モジュール１００ｃのデータを修復するようにしてもよい。【０１３１】
以上、本発明のシステム管理プログラム、システム管理装置およびシステム管理方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。【０１３２】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、前述した各実施の形態では、ブロック単位でデータのやり取りを行ったが、本発明ではこれに限らず、例えばストライプ単位でデータのやり取りを行ってもよい。この場合例えば障害検出部１５は、読み出し障害の検出は、ストライプ単位で行うようにしてもよい。【０１３３】
また、上記の処理機能は、コンピュータによって（コンピュータに所定のシステム管理プログラムを実行させることにより）実現することができる。その場合、前述したモジュールが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。【０１３４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。【０１３５】
システム管理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。【０１３６】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１３７】
１、６  コンピュータ
２  第１のＲＡＩＤディスク
２ａ、２ａ、２ｂ、２ｃ、１１、１１ｂ、１２、１２ｂ、１３、１３ｂ、１４、１４ｂ、１５ｂ、１６ｂ、２１、２２  ディスク
３  障害検出手段
４  要求手段
５  第２のＲＡＩＤディスク
７  上書き手段
１５、１５ｄ  障害検出部
１６、１６ｄ  論理ボリューム特定部
１７、１７ｂ  変換テーブル記憶部
１８、１８ｂ  インタフェース部
１９、１９ｄ  応答データ処理部
２０、２０ｂ、２０ｃ、２０ｄ  要求データ処理部
１００ａ、１００ｂ、１００ｃ、１００ｄ  モジュール
１０３ａ、１０３ｂ、１０３ｃ、１０３ｄ  ＨＤＤ
１１０、１２０、１０３１、１０３２  ＲＡＩＤディスク
１７１ａ、１７２ａ、１７３ａ  変換テーブル
２００  サーバ
Ｓｔ１、Ｓｔ１１〜Ｓｔ１４、Ｓｔ２１〜Ｓｔ２６  ストライプ
【図１】
2008041267.tif 000003
【図２】
2008041267.tif 000004
【図３】
2008041267.tif 000005
【図４】
2008041267.tif 000006
【図５】
2008041267.tif 000007
【図６】
2008041267.tif 000008
【図７】
2008041267.tif 000009
【図８】
2008041267.tif 000010
【図９】
2008041267.tif 000011
【図１０】
2008041267.tif 000012
【図１１】
2008041267.tif 000013
【図１２】
2008041267.tif 000014
【図１３】
2008041267.tif 000015
【図１４】
2008041267.tif 000016
【図１５】
2008041267.tif 000017
【図１６】
2008041267.tif 000018
【図１７】
2008041267.tif 000019
【図１８】
2008041267.tif 000020
【図１９】
2008041267.tif 000021
【図２０】
2008041267.tif 000022
【図２１】
2008041267.tif 000023
【図２２】
2008041267.tif 000024
【図２３】
2008041267.tif 000025
【図２４】
2008041267.tif 000026
【図２５】
2008041267.tif 000027
【手続補正書】
【提出日】平成20年11月18日(2008.11.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理プログラムにおいて、
コンピュータを、
データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスク、
前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出する障害検出手段、
前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求する要求手段、
前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする上書き手段、
として機能させることを特徴とするシステム管理プログラム。
【請求項２】
前記障害検出手段は、前記読み出し障害が生じた前記ブロック単位に検出することを特徴とする請求項１記載のシステム管理プログラム。
【請求項３】
前記障害検出手段は、前記読み出し障害が生じた前記ブロックをストライプ単位に検出することを特徴とする請求項１記載のシステム管理プログラム。
【請求項４】
前記障害検出手段は、前記読み出し障害を、前記第１のＲＡＩＤディスクの論理ボリュームの一部に対応づけられているセグメント単位に検出することを特徴とする請求項１記載のシステム管理プログラム。
【請求項５】
前記コンピュータを、さらに前記第２のＲＡＩＤディスクで生じた前記ブロックの読み出し障害による前記他のコンピュータからの前記ブロックの補完要求を受信する受信手段、
前記受信手段が前記ブロックの前記補完要求を受信した場合、前記補完要求に対応する前記ブロックを前記第１のＲＡＩＤディスクから取り出すブロック取り出し手段、
前記ブロック取り出し手段が取り出した前記ブロックを、前記他のコンピュータに送信する送信手段、
として機能させることを特徴とする請求項１記載のシステム管理プログラム。
【請求項６】
ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理装置において、
データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスクと、
前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出する障害検出手段と、
前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求する要求手段と、
前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする上書き手段と、
を有することを特徴とするシステム管理装置。
【請求項７】
ストレージデバイスの読み出し障害に対する修復処理を行うシステム管理方法において、
データの格納単位を構成するブロックを複数備える分散データを複数のディスクに分けて記憶する第１のＲＡＩＤディスクにおける前記ブロックの読み出し障害を、前記読み出し障害が生じた前記ブロックを含む所定領域毎に検出し、
前記読み出し障害が生じた際、前記第１のＲＡＩＤディスク内で修復できない前記ブロックの補完を、前記分散データと同じデータが格納されている第２のＲＡＩＤディスクを備える他のコンピュータに要求し、
前記他のコンピュータからの前記ブロックを受け取ると、前記読み出し障害が生じた前記ブロックに受け取った前記ブロックを上書きする、
ことを特徴とするシステム管理方法。
【国際調査報告】
2008041267.tif 000028
2008041267.tif 000029