(57)【要約】【課題】ネットワークの通信負荷を低減する。【解決手段】ストレージシステム１は、ネットワーク２を介して複数の記憶制御装置３を接続する。記憶制御装置３は、制御部５を備え、制御対象となる記憶装置４を接続する。制御部５は、制御対象の記憶装置４（第１記憶装置）で発生した障害の復旧に用いるデータ６を他の記憶制御装置３から取得し、他の記憶制御装置３が制御する記憶装置４（第２記憶装置）で障害が発生している場合に、第１記憶装置の復旧に用いるデータ６から第２記憶装置の復旧に用いる復旧用データ７を生成し、障害が発生している第２記憶装置を制御する他の記憶制御装置３に復旧用データ７を通知する。【選択図】図１
2015210658.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して複数の記憶制御装置を接続するストレージシステムにおける記憶制御装置であって、
制御対象の第１記憶装置で発生した障害の復旧に用いるデータを他の記憶制御装置から取得し、
他の記憶制御装置が制御する第２記憶装置で障害が発生している場合に、前記第１記憶装置の復旧に用いるデータから前記第２記憶装置の復旧に用いる復旧用データを生成し、
前記第２記憶装置を制御する前記他の記憶制御装置に前記復旧用データを通知する、
制御部を備える記憶制御装置。
【請求項２】
前記制御部は、前記他の記憶制御装置から取得したデータのうち、前記第２記憶装置の復旧に用いることができるデータから前記復旧用データを生成する請求項１記載の記憶制御装置。
【請求項３】
前記制御部は、前記復旧用データを通知した後に、前記他の記憶制御装置から取得したデータを用いて前記第１記憶装置で発生した障害の復旧をおこなう請求項１記載の記憶制御装置。
【請求項４】
前記障害の復旧に用いるデータは、パリティデータを含み、前記パリティデータは、パリティ計算が線形である請求項１記載の記憶制御装置。
【請求項５】
前記制御部は、前記第２記憶装置を制御する前記他の記憶制御装置として前記復旧用データを通知された場合に、前記復旧用データと、他の記憶制御装置から取得した障害の復旧に用いるデータとから前記第１記憶装置で発生した障害の復旧をおこなう請求項１記載の記憶制御装置。
【請求項６】
ネットワークを介して複数の記憶制御装置を接続するストレージシステムにおける記憶制御装置に実行させるデータ復旧プログラムであって、
前記記憶制御装置に、
制御対象の第１記憶装置で発生した障害の復旧に用いるデータを他の記憶制御装置から取得し、
他の記憶制御装置が制御する第２記憶装置で障害が発生している場合に、前記第１記憶装置の復旧に用いるデータから前記第２記憶装置の復旧に用いる復旧用データを生成し、
前記第２記憶装置を制御する前記他の記憶制御装置に前記復旧用データを通知する、
処理を実行させるデータ復旧プログラム。
【請求項７】
ネットワークを介して複数の記憶制御装置を接続するストレージシステムにおける記憶制御装置のデータ復旧方法であって、
前記記憶制御装置が、
制御対象の第１記憶装置で発生した障害の復旧に用いるデータを他の記憶制御装置から取得し、
他の記憶制御装置が制御する第２記憶装置で障害が発生している場合に、前記第１記憶装置の復旧に用いるデータから前記第２記憶装置の復旧に用いる復旧用データを生成し、
前記第２記憶装置を制御する前記他の記憶制御装置に前記復旧用データを通知する、
処理を実行するデータ復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置、データ復旧プログラム、およびデータ復旧方法に関する。
【背景技術】
【０００２】
分散ストレージシステムなどのストレージシステムは、レプリケーションや、ＲＡＩＤ（Redundant Arrays of Independent Disks）により、データの可用性および信頼性を確保している。
【０００３】
このような分散ストレージシステムは、ディスク（記憶装置）が故障した場合に、ユーザ業務のバックグラウンドで故障ディスクの復旧動作をおこなう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２５９８９４号公報
【特許文献２】特開２００８−１８６４００号公報
【特許文献３】特表２０１３−５０６１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、故障ディスクのリカバリは、正常なディスクからのデータ転送を伴うことから故障ディスクのリカバリのためのネットワーク帯域を必要とし、ユーザ業務に影響を与える場合がある。また、複数のディスクが故障した場合に、各故障ディスクの故障ディスクのリカバリが独立して動作するため、より大きなネットワーク帯域がリカバリに用いられたり、より長時間の間、ネットワーク帯域がリカバリに用いられたりすることがある。
【０００６】
１つの側面では、本発明は、ネットワークへの負荷を軽減して記憶装置を復旧可能な記憶制御装置、データ復旧プログラム、およびデータ復旧方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、以下に示すような、記憶制御装置が提供される。記憶制御装置は、ネットワークを介して複数の記憶制御装置を接続するストレージシステムにおける記憶制御装置であって、制御部を備える。制御部は、制御対象の第１記憶装置で発生した障害の復旧に用いるデータを他の記憶制御装置から取得し、他の記憶制御装置が制御する第２記憶装置で障害が発生している場合に、第１記憶装置の復旧に用いるデータから第２記憶装置の復旧に用いる復旧用データを生成し、第２記憶装置を制御する他の記憶制御装置に復旧用データを通知する。
【発明の効果】
【０００８】
１態様によれば、記憶制御装置、データ復旧プログラム、およびデータ復旧方法において、ネットワークへの負荷を軽減して記憶装置を復旧できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態のストレージシステムの構成の一例を示す図である。
【図２】第２の実施形態のストレージシステムの構成の一例を示す図である。
【図３】第２の実施形態のストレージシステムのノード構成の一例を示す図である。
【図４】第２の実施形態のストレージシステムのＲＡＩＤ構成の一例を示す図である。
【図５】第２の実施形態の先行してリカバリ動作をおこなうディスク装置の復旧に要するディスク集合の一例を示す図である。
【図６】第２の実施形態の先行してリカバリ動作をおこなったディスク装置の後続としてリカバリ動作をおこなうディスク装置の復旧に要するディスク集合の一例を示す図である。
【図７】第２の実施形態のディスク装置の同時故障の検出の一例を示す図である。
【図８】第２の実施形態のサーバのハードウェア構成の一例を示す図である。
【図９】第２の実施形態の復旧制御処理のフローチャートを示す図である。
【図１０】第２の実施形態の同時故障復旧制御処理のフローチャートを示す図である。
【図１１】第２の実施形態の先行復旧制御処理のフローチャートを示す図である。
【図１２】第２の実施形態の後続復旧制御処理のフローチャートを示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施の形態を詳細に説明する。
［第１の実施形態］
まず、第１の実施形態のストレージシステムについて図１を用いて説明する。図１は、第１の実施形態のストレージシステムの構成の一例を示す図である。
【００１１】
ストレージシステム１は、ネットワーク２を介して複数の記憶制御装置３を接続する分散ストレージシステムである。ストレージシステム１は、たとえば、ユーザに対してクラウドストレージを提供する。
【００１２】
記憶制御装置３は、制御対象となる記憶装置４を接続する。記憶制御装置３ａ，３ｂ，３ｃ，３ｄ，３ｅは、それぞれ記憶装置４ａ，４ｂ，４ｃ，４ｄ，４ｅを制御対象として接続する。記憶装置４は、たとえば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive:フラッシュメモリドライブ）などのディスク装置であって、データを保持する。なお、図示する記憶制御装置３は、１つの記憶装置４を接続するが、これに限らず２以上の記憶装置４を接続するものであってもよい。
【００１３】
記憶制御装置３は、制御部５を備える。制御部５は、制御対象の記憶装置４で発生した障害の復旧に用いるデータ６を他の記憶制御装置３から取得する。たとえば、記憶制御装置３ａが制御対象とする記憶装置４ａ（第１記憶装置）で障害が発生した場合、記憶制御装置３ｂ，３ｃ，３ｄ，３ｅは、記憶制御装置３ａにとって他の記憶制御装置３である。制御部５は、記憶制御装置３ｂ，３ｃ，３ｄ，３ｅのうち記憶制御装置３ｃ，３ｄ，３ｅからそれぞれデータ６ａ，６ｂ，６ｃを取得する。データ６ａ，６ｂ，６ｃは、記憶制御装置３ａが記憶装置４ａで発生した障害の復旧に用いるデータである。
【００１４】
制御部５は、他の記憶制御装置３が制御する記憶装置４（第２記憶装置）で障害が発生している場合に、第１記憶装置の復旧に用いるデータ６から第２記憶装置の復旧に用いる復旧用データ７を生成する。たとえば、制御部５は、記憶制御装置３ａにとって他の記憶制御装置３ｂの制御対象である記憶装置４ｂで障害が発生している場合に、データ６ａ，６ｂ，６ｃを用いて記憶装置４ｂの復旧に用いる復旧用データ７を生成する。なお、復旧用データ７の生成に用いるデータ６は、制御部５が取得したデータ６のうち記憶制御装置３ｂが記憶装置４ｂの復旧に要するデータ６であり、制御部５が取得したデータ６のうちの一部または全部である。
【００１５】
制御部５は、障害が発生している記憶装置４を制御する他の記憶制御装置３に復旧用データ７を通知する。たとえば、制御部５は、記憶制御装置３ｂに復旧用データ７を通知する。
【００１６】
これにより、第２記憶装置の復旧をおこなう記憶制御装置３は、制御部５が取得したデータ６のうちの一部または全部について、他の記憶制御装置３からデータ６を取得することを要しない。したがって、記憶制御装置３は、ストレージシステム１においてネットワーク２の通信負荷を低減できる。また、第１記憶装置の復旧をおこなう記憶制御装置３は、取得したデータ６から復旧用データ７を生成することから、データ量が縮減されている場合にネットワーク２の通信負荷を低減できる。また、ストレージシステム１は、第２記憶装置の復旧をおこなう記憶制御装置３が復旧に用いるデータ６を取得する際の通信にかかるオーバヘッドを低減できる。
【００１７】
［第２の実施形態］
次に、第２の実施形態のストレージシステムの構成について図２を用いて説明する。図２は、第２の実施形態のストレージシステムの構成の一例を示す図である。
【００１８】
ストレージシステム１０は、ネットワーク１３を介して複数（たとえば、数百台規模）のサーバ１１を接続する分散ストレージシステムである。ストレージシステム１０は、たとえば、ユーザに対してクラウドストレージを提供する。
【００１９】
ストレージシステム１０は、Ｅｒａｓｕｒｅ Ｃｏｄｅの代表的な技術として挙げられるＲＡＩＤにより、信頼性と可用性を確保する。ストレージシステム１０は、十分な数のサーバ１１がある場合に、１つのＲＡＩＤグループに属する２以上のディスク装置１２が１つのサーバ１１の制御対象とならないようにしている。したがって、１つのＲＡＩＤグループに注目したときに、サーバ１１は、たかだか１つのディスク装置１２を管理する。
【００２０】
サーバ１１は、１または２以上のディスク装置１２を接続する。ディスク装置１２は、たとえば、ＨＤＤやＳＳＤなどである。ディスク装置１２は、第１の実施形態の記憶装置４に相当し、サーバ１１は、第１の実施形態の記憶制御装置３に相当する。
【００２１】
ストレージシステム１０は、１つのデータセンタ内に構築されるものであってもよいし、遠隔地にある２以上のデータセンタをまたいで構築されるものであってもよい。ストレージシステム１０が遠隔地にある２以上のデータセンタをまたいで構築される場合、ネットワーク１３は、データセンタ間を接続するネットワークを含む。
【００２２】
次に、第２の実施形態のストレージシステムのノード構成について図３を用いて説明する。図３は、第２の実施形態のストレージシステムのノード構成の一例を示す図である。
サーバ１１は、ストレージシステム１０においてディスク装置１２を管理する管理ノード１５として機能する。また、１つのサーバ１１は、ストレージシステム１０において制御ノード１４として機能する。制御ノード１４は、管理ノード１５における障害発生時に復旧手順を制御する。なお、制御ノード１４は、管理ノード１５でもある。管理ノード１５における障害発生は、管理ノード１５が管理するディスク装置１２の障害を含む。なお、制御ノード１４は、ストレージシステム１０において１つを設定してもよいし、ＲＡＩＤグループごとに１つを設定してもよい。
【００２３】
次に、第２の実施形態のストレージシステムのＲＡＩＤ構成について図４を用いて説明する。図４は、第２の実施形態のストレージシステムのＲＡＩＤ構成の一例を示す図である。
【００２４】
図４に示すＲＡＩＤグループは、ディスク装置Ｄ０からディスク装置Ｄ９までの１０個のデータディスクと、ディスク装置Ｌ０からディスク装置Ｌ５までの６個のパリティディスクを含む。各データディスクと各パリティディスクとは、それぞれ異なる管理ノード１５によって管理される。また、これらの管理ノード１５のうちの１つは、制御ノード１４として機能する。制御ノード１４は、あらかじめ設定されていて、たとえば、ディスク装置Ｄ０を管理する管理ノード１５である。
【００２５】
ディスク装置Ｌ０は、パリティ計算に用いるデータディスクの範囲ｒＬ０がディスク装置Ｄ０，Ｄ１，Ｄ２，Ｄ３，Ｄ４である。ディスク装置Ｌ１は、パリティ計算に用いるデータディスクの範囲ｒＬ１がディスク装置Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６である。ディスク装置Ｌ２は、パリティ計算に用いるデータディスクの範囲ｒＬ２がディスク装置Ｄ４，Ｄ５，Ｄ６，Ｄ７，Ｄ８である。ディスク装置Ｌ３は、パリティ計算に用いるデータディスクの範囲ｒＬ３がディスク装置Ｄ５，Ｄ６，Ｄ７，Ｄ８，Ｄ９である。ディスク装置Ｌ４は、パリティ計算に用いるデータディスクの範囲ｒＬ４がディスク装置Ｄ０，Ｄ１，Ｄ７，Ｄ８，Ｄ９である。ディスク装置Ｌ５は、パリティ計算に用いるデータディスクの範囲ｒＬ５がディスク装置Ｄ０，Ｄ１，Ｄ２，Ｄ３，Ｄ９である。
【００２６】
なお、このような一部のデータディスクから計算されるパリティをローカルパリティと称する。図４に示すＲＡＩＤグループは、各パリティディスクがローカルパリティを保持するが、パリティディスクは、全部のデータディスクから計算されるパリティを保持するものであってもよい。
【００２７】
ここで、２つのディスク装置Ｄ２，Ｄ６が同時故障したとする。従来、２つのディスク装置Ｄ２，Ｄ６は、独立してリカバリ動作をおこなっていたが、これに代えて、ストレージシステム１０は、制御ノード１４がディスク装置Ｄ２，Ｄ６のリカバリ動作を制御する。制御ノード１４は、たとえば、ディスク装置Ｄ２，Ｄ６のうちディスク装置Ｄ２を先行してリカバリ動作をおこなうことを決定する。
【００２８】
これにより、ディスク装置Ｄ２を管理する管理ノード１５は、ディスク装置Ｄ６に先行してディスク装置Ｄ２のリカバリ動作をおこなう。
ここで、先行してリカバリ動作をおこなうディスク装置Ｄ２の復旧に要するディスク集合について図５を用いて説明する。図５は、第２の実施形態の先行してリカバリ動作をおこなうディスク装置の復旧に要するディスク集合の一例を示す図である。
【００２９】
データｄＤ２は、ディスク装置Ｄ２が復旧対象とするデータである。データｄＤ０，ｄＤ１，ｄＤ３，ｄＤ４，ｄＬ０は、データｄＤ２を復旧するために、それぞれディスク装置Ｄ０，Ｄ１，Ｄ３，Ｄ４，Ｌ０から取得を要するデータである。
【００３０】
ここで、データｄＤ２を復旧するためのディスク集合をディスク集合ｇｒ０とすると、ディスク集合ｇｒ０の集合要素は、｛ディスク装置Ｄ０，Ｄ１，Ｄ３，Ｄ４，Ｌ０｝となる。
【００３１】
次に、先行してリカバリ動作をおこなったディスク装置Ｄ２に続いてリカバリ動作をおこなうディスク装置Ｄ６の復旧に要するディスク集合について図６を用いて説明する。図６は、第２の実施形態の先行してリカバリ動作をおこなったディスク装置の後続としてリカバリ動作をおこなうディスク装置の復旧に要するディスク集合の一例を示す図である。
【００３２】
データｄＤ６は、ディスク装置Ｄ６が復旧対象とするデータである。データｄＤ０，ｄＤ１，ｄＤ３，ｄＤ４，ｄＤ５，ｄＬ０，ｄＬ１は、データｄＤ６を復旧するために、それぞれディスク装置Ｄ０，Ｄ１，Ｄ３，Ｄ４，Ｄ５，Ｌ０，Ｌ１から取得を要するデータである。
【００３３】
ここで、データｄＤ６を復旧するためのディスク集合をディスク集合ｇｒ１とすると、ディスク集合ｇｒ１の集合要素は、｛ディスク装置Ｄ０，Ｄ１，Ｄ３，Ｄ４，Ｄ５，Ｌ０，Ｌ１｝となる。
【００３４】
仮に１つのディスク装置からのデータ復旧に要するデータ転送量を１単位とすると、データｄＤ２の復旧に要するデータ転送量は、ディスク集合ｇｒ０の集合要素数である５単位となる。同様に、データｄＤ６の復旧に要するデータ転送量は、ディスク集合ｇｒ１の集合要素数である７単位となる。すなわち、データｄＤ２，ｄＤ６の復旧に要するデータ転送量は、合計で１２単位となり、ストレージシステム１０においてネットワーク１３に大きな通信負荷をかける場合がある。
【００３５】
そこで、ディスク集合ｇｒ０とディスク集合ｇｒ１の共通集合をディスク集合ｇｒ２とすると、ディスク集合ｇｒ２の集合要素は、｛ディスク装置Ｄ０，Ｄ１，Ｄ３，Ｄ４，Ｌ０｝となる。
【００３６】
ディスク集合ｇｒ２の集合要素は、先に、データｄＤ２を復旧するためにディスク装置Ｄ２を管理する管理ノード１５によって取得される。ディスク装置Ｄ２を管理する管理ノード１５は、データｄＤ６を復旧するための計算をおこない計算結果をディスク装置Ｄ６を管理する管理ノード１５に通知する。ディスク装置Ｄ６を管理する管理ノード１５は、ディスク装置Ｄ２を管理する管理ノード１５から計算結果を取得することで、ディスク集合ｇｒ２の要素となるディスク装置からデータ転送を受けることを要しなくなる。
【００３７】
これにより、データｄＤ６の復旧に要するデータ転送量は、ディスク集合ｇｒ１の集合要素数とディスク集合ｇｒ２の集合要素数との差分に、計算結果分の１を加えた３単位となる。すなわち、データｄＤ２，ｄＤ６の復旧に要するデータ転送量は、合計で８単位となる。したがって、先にリカバリ動作をおこなう管理ノード１５が続いてリカバリ動作をおこなう管理ノード１５の一部計算を負担することで、ストレージシステム１０においてネットワーク１３にかかる通信負荷を約１／３（＝（１２−８）／１２）軽減できる。
【００３８】
なお、先にリカバリ動作をおこなう管理ノード１５による他の管理ノード１５の一部計算の負担は、次のようにしておこなうことができる。
パリティディスクＬ０，Ｌ１のデータをＬ0，Ｌ1、データディスクＤ０，Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６のデータをＤ0，Ｄ1，Ｄ2，Ｄ3，Ｄ4，Ｄ5，Ｄ6とする。このとき、線形のパリティ計算では、Ｌ0，Ｌ1は、それぞれ、一般にガロア体上の演算として、（１）式、（２）式のように表わすことができる。なお、ａijは、パリティディスク（ｉ）とデータディスク（ｊ）の組み合わせに対応する所要の係数である。ａijは、たとえば、「１」である。
【００３９】
Ｌ0＝ａ00Ｄ0＋ａ01Ｄ1＋ａ02Ｄ2＋ａ03Ｄ3＋ａ04Ｄ4  ・・・（１）
Ｌ1＝ａ12Ｄ2＋ａ13Ｄ3＋ａ14Ｄ4＋ａ15Ｄ5＋ａ16Ｄ6  ・・・（２）
（１）式、（２）式を変形して、（３）式、（４）式を得る。
【００４０】
このとき、先にリカバリ動作をおこなう管理ノード１５が負担する計算をＦ、各要素の係数をｂkとすると、（４）式から（５）式を得る。
Ｄ2＝｛Ｌ0−ａ00Ｄ0−ａ01Ｄ1−ａ03Ｄ3−ａ04Ｄ4｝／ａ02  ・・・（３）
Ｄ6＝｛Ｌ1−ａ12Ｄ2−ａ13Ｄ3−ａ14Ｄ4−ａ15Ｄ5｝／ａ16  ・・・（４）
Ｄ6＝ｂ0Ｆ（Ｄ0，Ｄ1，Ｄ3，Ｄ4，Ｌ0）＋ｂ1Ｄ5＋ｂ2Ｌ1  ・・・（５）
すなわち、先にリカバリ動作をおこなう管理ノード１５が続いてリカバリ動作をおこなう管理ノード１５に「Ｆ（Ｄ0，Ｄ1，Ｄ3，Ｄ4，Ｌ0）」を転送することで、リカバリ動作にかかるデータ転送量の最適化（あるいは縮減）をはかることができる。
【００４１】
次に、ディスク装置の同時故障について図７を用いて説明する。図７は、第２の実施形態のディスク装置の同時故障の検出の一例を示す図である。
２つのディスク装置１２のうち先に故障したディスク装置１２をディスク＿Ａ、後から故障したディスク装置１２をディスク＿Ｂとする。なお、ディスク＿Ａとディスク＿Ｂは、それぞれが復旧に要するデータディスクおよびパリティディスクとの間で、共通集合を有する関係である。
【００４２】
ディスク＿Ａは、タイミングｔ０で故障し、タイミングｔ２で復旧する。ディスク＿Ｂは、タイミングｔ１で故障し、タイミングｔ３で復旧する。ディスク＿Ａとディスク＿Ｂは、タイミングｔ１からタイミングｔ２までの間で故障期間が重複する。
【００４３】
ディスク＿Ａを管理する管理ノード１５は、ディスク＿Ａの故障を検出して制御ノード１４にディスク＿Ａの故障の検出を通知する。これにより、制御ノード１４は、ディスク＿Ａの故障を検出する。また、ディスク＿Ｂを管理する管理ノード１５は、ディスク＿Ｂの故障を検出して制御ノード１４にディスク＿Ｂの故障の検出を通知する。これにより、制御ノード１４は、ディスク＿Ｂの故障を検出する。
【００４４】
したがって、制御ノード１４は、ディスク＿Ａとディスク＿Ｂとの同時故障を検出する。なお、災害などにより同時多発的にディスク装置１２が故障した場合には、制御ノード１４は、タイミングｔ０≒タイミングｔ１として、ディスク＿Ａとディスク＿Ｂとの同時故障を検出する。
【００４５】
次に、第２の実施形態のサーバ１１のハードウェア構成について図８を用いて説明する。図８は、第２の実施形態のサーバのハードウェア構成の一例を示す図である。
サーバ１１は、プロセッサ１０１によって装置全体が制御されている。すなわち、プロセッサ１０１は、サーバ１１の制御部として機能する。プロセッサ１０１には、バス１０６を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００４６】
ＲＡＭ１０２は、サーバ１１の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやファームウェア、アプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。また、ＲＡＭ１０２は、各種データの格納に用いるメモリと別体にキャッシュメモリを含むものであってもよい。すなわち、ＲＡＭ１０２は、サーバ１１の記憶部として機能する。
【００４７】
バス１０６に接続されている周辺機器としては、不揮発性メモリ１０３、入出力インタフェース１０４、および通信インタフェース１０５がある。
不揮発性メモリ１０３は、サーバ１１の電源遮断時においても記憶内容を保持する。不揮発性メモリ１０３は、たとえば、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）やフラッシュメモリなどの半導体記憶装置や、ＨＤＤなどである。また、不揮発性メモリ１０３は、サーバ１１の補助記憶装置として使用される。不揮発性メモリ１０３には、ＯＳのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。すなわち、不揮発性メモリ１０３は、サーバ１１の記憶部として機能する。
【００４８】
入出力インタフェース１０４は、入出力装置と接続して入出力をおこなう。入出力装置は、ディスク装置１２などの記憶装置を含む。
通信インタフェース１０５は、ネットワーク１３と接続することで、ネットワーク１３を介して、他のサーバ１１やホストとの間でデータの送受信をおこなう。
【００４９】
以上のようなハードウェア構成によって、第２の実施形態のサーバ１１の処理機能を実現することができる。なお、サーバ１１の他、第１の実施形態に示した記憶制御装置３も、図８に示したサーバ１１と同様のハードウェアにより実現することができる。
【００５０】
サーバ１１は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施形態の処理機能を実現する。サーバ１１に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、サーバ１１に実行させるプログラムを不揮発性メモリ１０３に格納しておくことができる。プロセッサ１０１は、不揮発性メモリ１０３内のプログラムの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。またコンピュータ１００に実行させるプログラムを、図示しない光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。メモリ装置は、入出力インタフェース１０４あるいは図示しない機器接続インタフェースとの通信機能を搭載した記録媒体である。たとえば、メモリ装置は、メモリリーダライタによりメモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しをおこなうことができる。メモリカードは、カード型の記録媒体である。
【００５１】
可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ１０１からの制御により、不揮発性メモリ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５２】
次に、第２の実施形態の復旧制御処理について図９を用いて説明する。図９は、第２の実施形態の復旧制御処理のフローチャートを示す図である。
復旧制御処理は、故障が発生した管理ノード１５の復旧手順を制御する処理である。復旧制御処理は、管理ノード１５からの故障通知を受けて制御ノード１４が実行する処理である。
【００５３】
［ステップＳ１１］制御ノード１４は、故障通知のあったディスクとは別に障害復旧中のディスクがあるか否かを判定する。制御ノード１４は、故障通知のあったディスクとは別に障害復旧中のディスクがある場合にステップＳ１２にすすみ、故障通知のあったディスクとは別に障害復旧中のディスクがない場合にステップＳ１５にすすむ。なお、制御ノード１４は、管理ノード１５の復旧進行を管理することにより障害復旧中のディスクの有無を判定できる。たとえば、管理ノード１５は、管理ノード１５の状態管理をおこなう管理テーブルを記憶部に保持することにより管理ノード１５の復旧進行を管理することができる。
【００５４】
［ステップＳ１２］制御ノード１４は、故障通知のあったディスクの復旧に要するディスク集合を算出する。
［ステップＳ１３］制御ノード１４は、障害復旧中のディスクの復旧に要するディスク集合と、故障通知のあったディスクの復旧に要するディスク集合との共通集合を算出し、共通集合の有無を判定する。制御ノード１４は、共通集合がある場合にステップＳ１４にすすみ、共通集合がない場合、すなわち共通集合が空集合である場合にステップＳ１５にすすむ。
【００５５】
［ステップＳ１４］制御ノード１４は、同時故障復旧制御処理を実行する。同時故障復旧制御処理は、復旧に要するディスク集合に共通部分のある２つの故障ディスクの復旧制御手順を制御する処理である。同時故障復旧制御処理の詳細は、図１０を用いて後で説明する。制御ノード１４は、同時故障復旧制御処理を実行後に、復旧制御処理を終了する。
【００５６】
［ステップＳ１５］制御ノード１４は、復旧に要するディスク集合に共通部分のある２つの故障ディスクがないことから、故障通知のあったディスクについて独立して復旧する手順を指示して、復旧制御処理を終了する。
【００５７】
このようにして、制御ノード１４は、ネットワーク１３にかかる通信負荷を軽減可能な同時故障復旧と、独立しておこなう故障復旧とを判別し、管理ノード１５に指示することができる。
【００５８】
次に、第２の実施形態の同時故障復旧制御処理について図１０を用いて説明する。図１０は、第２の実施形態の同時故障復旧制御処理のフローチャートを示す図である。
同時故障復旧制御処理は、復旧に要するディスク集合に共通部分のある２つの故障ディスクの復旧制御手順を制御する処理である。同時故障復旧制御処理は、復旧制御処理のステップＳ１４において制御ノード１４が実行する処理である。
【００５９】
［ステップＳ２１］制御ノード１４は、故障通知のあったディスクと、障害復旧中のディスクとのうちいずれを先行して復旧をおこなうのか、復旧順序を決定する。たとえば、制御ノード１４は、故障通知のあったディスクと、障害復旧中のディスクとのうちいずれを先行するかを、あらかじめ設定するものであってもよいし、ディスクごとの優先順位や、ディスクごとの稼働状態など、所要の条件にもとづいて復旧順序を決定するものであってもよい。
【００６０】
［ステップＳ２２］制御ノード１４は、先行して復旧をおこなう管理ノード１５（先行復旧ノード）に、先行して復旧をおこなう手順（先行復旧手順）を指示する。先行復旧手順は、先行復旧ノードが故障ディスクの復旧に要するディスク集合、先行復旧ノードが他の管理ノードのためにおこなう計算の計算式、計算結果の転送先を含む。
【００６１】
［ステップＳ２３］制御ノード１４は、後から復旧をおこなう管理ノード１５（後続復旧ノード）に、後に続いて復旧をおこなう手順（後続復旧手順）を指示する。後続復旧手順は、後続復旧ノードが故障ディスクの復旧に要するディスク集合、先行復旧ノードがおこなう計算の計算式、計算結果の転送元を含む。制御ノード１４は、後続復旧ノードに後続復旧手順を指示した後、同時故障復旧制御処理を終了する。
【００６２】
これにより、先行復旧ノードと後続復旧ノードとは、制御ノード１４の制御のもとで連携して障害復旧をおこなうことができる。
次に、第２の実施形態の先行復旧制御処理について図１１を用いて説明する。図１１は、第２の実施形態の先行復旧制御処理のフローチャートを示す図である。
【００６３】
先行復旧制御処理は、先行復旧ノードがおこなう復旧処理である。先行復旧制御処理は、制御ノード１４から先行復旧手順の指示を受けた管理ノード１５が実行する処理である。
【００６４】
［ステップＳ３１］管理ノード（先行復旧ノード）１５は、先行復旧手順で指示を受けたディスク集合にもとづいて復旧データを取得する。管理ノード１５は、ディスク集合の要素に対応するディスク装置１２を管理する管理ノード１５を介して、復旧データを取得することができる。なお、管理ノード１５は、すでに復旧データを取得している場合にはあらためて復旧データを取得することを要しない。たとえば、管理ノード１５が独立してリカバリ動作をおこなっていた後に、他の管理ノード１５において同時故障となる障害が発生した場合には、管理ノード１５は、先行復旧制御処理の開始時点においてすでに復旧データを取得済みであることがある。
【００６５】
［ステップＳ３２］管理ノード１５は、先行復旧手順で指示を受けた計算式にしたがい後続復旧ノードの部分計算（後続復旧ノードに代わって先行復旧ノードが負担する計算）を実行する。
【００６６】
［ステップＳ３３］管理ノード１５は、後続復旧ノードに計算結果を通知する。
［ステップＳ３４］管理ノード１５は、管理対象のディスクの復旧をおこなう。
［ステップＳ３５］管理ノード１５は、制御ノード１４に復旧完了を通知して、先行復旧制御処理を終了する。
【００６７】
このように、先行復旧ノードは、後続復旧ノードに代わってリカバリに伴う計算の一部を負担することから、後続復旧ノードにかかる復旧負荷を軽減できる。また、先行復旧ノードは、後続復旧ノードの部分計算を先行しておこなうことで、後続復旧ノードが復旧にかかるタイムラグを低減できる。また、先行復旧ノードは、先行しておこなう部分計算の計算結果を、自身が管理するディスクの復旧に用いてもよい。
【００６８】
次に、第２の実施形態の後続復旧制御処理について図１２を用いて説明する。図１２は、第２の実施形態の後続復旧制御処理のフローチャートを示す図である。
後続復旧制御処理は、後続復旧ノードがおこなう復旧処理である。後続復旧制御処理は、制御ノード１４から後続復旧手順の指示を受けた管理ノード１５が実行する処理である。
【００６９】
［ステップＳ４１］管理ノード（後続復旧ノード）１５は、後続復旧手順で指示を受けたディスク集合にもとづいて復旧データを取得する。管理ノード１５は、ディスク集合の要素に対応するディスク装置１２を管理する管理ノード１５を介して、復旧データを取得することができる。
【００７０】
［ステップＳ４２］管理ノード１５は、先行復旧ノードから計算結果を受信したか否かを判定する。管理ノード１５は、先行復旧ノードから計算結果を受信した場合にステップＳ４３にすすみ、先行復旧ノードから計算結果を受信しない場合に先行復旧ノードからの計算結果の受信を待ち受ける。
【００７１】
［ステップＳ４３］管理ノード１５は、取得した復旧データと計算結果とから管理対象のディスクの復旧をおこなう。
［ステップＳ４４］管理ノード１５は、制御ノード１４に復旧完了を通知して、後続復旧制御処理を終了する。
【００７２】
このように、先行復旧ノードは、後続復旧ノードに代わってリカバリに伴う計算の一部を負担することから、後続復旧ノードにかかる復旧負荷を軽減できる。また、先行復旧ノードは、後続復旧ノードの部分計算を先行しておこなうことで、後続復旧ノードが復旧にかかるタイムラグを低減できる。また、先行復旧ノードは、先行しておこなう部分計算の計算結果を、自身が管理するディスクの復旧に用いてもよい。また、後続復旧ノードは、先行復旧ノードがおこなった計算結果を用いることで、後続復旧ノードが復旧のために収集するデータ量を縮減できる。これにより、ストレージシステム１０は、ネットワーク１３におけるネットワーク帯域にかかる負荷を軽減することができる。したがって、ストレージシステム１０は、ユーザに対して提供するサービスのバックグラウンドで故障ディスクの復旧をおこなう場合であってもユーザ業務に与える影響を限定することができる。
【００７３】
なお、ストレージシステム１０は、制御ノード１４をあらかじめ設定したが、故障ディスクを管理する管理ノード１５のうちの１つが制御ノード１４になるようにしてもよい。たとえば、故障ディスクを検出した管理ノード１５は、ＲＡＩＤグループを構成するディスク装置１２を管理する管理ノード１５に対して、他に制御ノード１４がいないことを確認して制御ノード１４になるようにしてもよい。
【００７４】
以上、記憶制御装置３、サーバ１１を例示して説明したが、その他の情報処理装置においても適用可能である。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、記憶制御装置３、サーバ１１が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００７５】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００７６】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【００７７】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
【符号の説明】
【００７８】
１，１０  ストレージシステム
２，１３  ネットワーク
３，３ａ，３ｂ，３ｃ，３ｄ，３ｅ  記憶制御装置
４，４ａ，４ｂ，４ｃ，４ｄ，４ｅ  記憶装置
５  制御部
６，６ａ，６ｂ，６ｃ  データ
７  復旧用データ
１１  サーバ
１２  ディスク装置
１４  制御ノード
１５  管理ノード
１０１  プロセッサ
１０２  ＲＡＭ
１０３  不揮発性メモリ
１０４  入出力インタフェース
１０５  通信インタフェース
１０６  バス
【図１】
2015210658.tif 000003
【図２】
2015210658.tif 000004
【図３】
2015210658.tif 000005
【図４】
2015210658.tif 000006
【図５】
2015210658.tif 000007
【図６】
2015210658.tif 000008
【図７】
2015210658.tif 000009
【図８】
2015210658.tif 000010
【図９】
2015210658.tif 000011
【図１０】
2015210658.tif 000012
【図１１】
2015210658.tif 000013
【図１２】
2015210658.tif 000014