(57)【要約】【課題】アクセスノードにおけるエラーの発生を待たずに、論理ボリュームとストレージ装置との記憶領域の対応関係の変更内容をアクセスノードに対して通知できるようにする。【解決手段】論理ボリューム構成情報更新手段１ｃは、論理ボリュームの仮想記憶領域とストレージ装置内の実記憶領域との対応関係を変更する。論理ボリューム構成情報送信手段１ｄは、仮想記憶領域と実記憶領域との対応関係が変更されると、アクセスノードリスト記憶手段１ｂを参照し、アクセスノードリストに示されるアクセスノード２，３に対して、実記憶領域との対応関係が変更された仮想記憶領域に関する変更後の対応関係を示す更新情報を、ネットワーク経由で送信する。【選択図】図１
2010205029.tif 000002
【特許請求の範囲】
【請求項１】
仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置内の実記憶領域との対応関係を定義した論理ボリューム構成情報に基づき、前記仮想記憶領域内のデータを指定したアクセス要求に応じて前記実記憶領域にアクセスを行うアクセスノードに対し、前記論理ボリューム構成情報をネットワーク経由で提供する処理をコンピュータに実行させる論理ボリューム構成情報提供プログラムであって、
前記コンピュータに、
前記論理ボリューム構成情報における前記論理ボリュームの前記仮想記憶領域と前記ストレージ装置内の前記実記憶領域との対応関係を変更し、
前記仮想記憶領域と前記実記憶領域との対応関係が変更されると、前記アクセスノードの識別情報が登録されたアクセスノードリストを記憶するアクセスノードリスト記憶手段を参照し、前記アクセスノードリストで示される前記アクセスノードに対して、前記実記憶領域との対応関係が変更された前記仮想記憶領域に関する変更後の対応関係を示す更新情報を、前記ネットワーク経由で送信する、
処理を実行させることを特徴とする論理ボリューム構成情報提供プログラム。
【請求項２】
前記コンピュータに、さらに、
前記アクセスノードリストに登録されていない前記アクセスノードからのハートビートを受信した場合、ハートビートを送信した前記アクセスノードの識別情報を前記アクセスノードリストに登録する処理を実行させることを特徴とする請求項１記載の論理ボリューム構成情報提供プログラム。
【請求項３】
前記仮想記憶領域と前記実記憶領域との対応関係が変更された場合、前記アクセスノードリストで示される前記アクセスノードに対して構成情報変更通知を送信し、前記アクセスノードから前記論理ボリューム構成情報の参照要求を受け取ったときに、前記参照要求を出力した前記アクセスノードに前記更新情報を送信することを特徴とする請求項１記載の論理ボリューム構成情報提供プログラム。
【請求項４】
前記アクセスノードリストには、前記アクセスノードが使用する論理ボリュームの識別情報が設定されており、
前記更新情報を送信する場合、前記アクセスノードリストを参照し、前記仮想記憶領域と前記実記憶領域との対応関係が変更された前記論理ボリュームを使用する前記アクセスノードに対してのみ前記更新情報を送信することを特徴とする請求項１記載の論理ボリューム構成情報提供プログラム。
【請求項５】
前記論理ボリューム構成情報において、共通の前記仮想記憶領域に対して、前記アクセスノードからのアクセス対象となるプライマリ実記憶領域と、前記プライマリ実記憶領域に格納されたデータのコピーを格納するセカンダリ実記憶領域とが対応付けられている場合、
前記コンピュータに、さらに、
前記論理ボリューム構成情報から変更後の前記仮想記憶領域と前記プライマリ実記憶領域の対応関係を抽出して前記更新情報を生成する処理を実行させることを特徴とする請求項１記載の論理ボリューム構成情報提供プログラム。
【請求項６】
仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置内の実記憶領域との対応関係を定義した論理ボリューム構成情報に基づき、前記仮想記憶領域内のデータを指定したアクセス要求に応じて前記実記憶領域にアクセスを行うアクセスノードに対し、前記論理ボリューム構成情報をネットワーク経由で提供する処理をコンピュータで実行する論理ボリューム構成情報提供方法であって、
前記コンピュータが、
前記論理ボリューム構成情報における前記論理ボリュームの前記仮想記憶領域と前記ストレージ装置内の前記実記憶領域との対応関係を変更し、
前記仮想記憶領域と前記実記憶領域との対応関係が変更されると、前記アクセスノードの識別情報が登録されたアクセスノードリストを記憶するアクセスノードリスト記憶手段を参照し、前記アクセスノードリストで示される前記アクセスノードに対して、前記実記憶領域との対応関係が変更された前記仮想記憶領域に関する変更後の対応関係を示す更新情報を、前記ネットワーク経由で送信する、
ことを特徴とする論理ボリューム構成情報提供方法。
【請求項７】
仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置内の実記憶領域との対応関係を定義した論理ボリューム構成情報に基づき、前記仮想記憶領域内のデータを指定したアクセス要求に応じて前記実記憶領域にアクセスを行うアクセスノードに対し、前記論理ボリューム構成情報をネットワーク経由で提供する処理を実行する論理ボリューム構成情報提供装置であって、
前記論理ボリューム構成情報における前記論理ボリュームの前記仮想記憶領域と前記ストレージ装置内の前記実記憶領域との対応関係を変更する論理ボリューム構成情報更新手段と、
前記仮想記憶領域と前記実記憶領域との対応関係が変更されると、前記アクセスノードの識別情報が登録されたアクセスノードリストを記憶するアクセスノードリスト記憶手段を参照し、前記アクセスノードリストで示される前記アクセスノードに対して、前記実記憶領域との対応関係が変更された前記仮想記憶領域に関する変更後の対応関係を示す更新情報を、前記ネットワーク経由で送信する論理ボリューム構成情報送信手段と、
を有することを特徴とする論理ボリューム構成情報提供装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は論理ボリューム構成情報をアクセスノードに提供するための論理ボリューム構成情報提供プログラム、論理ボリューム構成情報提供方法、および論理ボリューム構成情報提供装置に関する。
【背景技術】
【０００２】
データを管理するシステムとして、マルチノードストレージシステムがある。マルチノードストレージシステムは、ネットワークで接続された複数のコンピュータに対して、データを分散格納するシステムである。
【０００３】
マルチノードストレージシステムでは、例えば、複数のディスクノード、アクセスノード、制御ノード、および管理ノードがネットワークで接続されている。ディスクノードは、ストレージ装置を有するコンピュータである。個々のディスクノードは接続されたストレージ装置の記憶領域を一定の大きさの単位領域に分割して管理する。ディスクノードの管理単位となる各単位領域はスライスと呼ばれる。スライスは、外部からのアクセス単位として定義された論理ボリュームに割り当てられる。
【０００４】
論理ボリュームは１つ以上のセグメントで構成される。各セグメントには、異なるディスクノードに属する２つのスライスが割り当てられる。そして、同じセグメントに割り当てられた２つのスライス間でデータが二重化される。ユーザからのアクセス指示は、論理ボリューム内のセグメントに対して行われる。
【０００５】
アクセスノードは、ユーザからのデータアクセス要求に応じて、ディスクノード内のデータにアクセスするコンピュータである。例えば、アクセスノードは、論理ボリュームへのデータアクセスを行うために、論理ボリュームの構成情報を制御ノードから入手する。そして、アクセスノードは、論理ボリュームの構成情報を参照して、論理ボリュームに対するユーザからのデータアクセスを適切なディスクノードへ振り分ける。ここで、アクセスノードは、ディスクノードへのアクセスに失敗したら、論理ボリューム内のアクセス対象セグメントに関する最新の割り当て関係を示す構成情報を制御ノードから入手する。そして、アクセスノードは、新たに手に入れた構成情報に基づいて再度ディスクノードへのアクセスを試みる。
【０００６】
管理ノードは、システムの管理者がマルチノードストレージシステムを管理するために操作するコンピュータである。例えば、管理者が論理ボリュームの作成指示を入力すると、対応するコマンドが制御ノードに送信される。
【０００７】
制御ノードは、論理ボリュームへのスライスの割り当てなどを管理するコンピュータである。例えば、制御ノードは、ディスクノードからスライス情報を集める。ディスクノードから収集するスライス情報には、ディスクノードが管理するスライスと、論理ボリュームのセグメントとの割り当て関係が示されている。制御ノードは、収集したスライス情報に基づいて論理ボリュームの構成情報を生成する。そして、制御ノードは、アクセスノードからの要求に応じて、論理ボリュームの構成情報をアクセスノードに通知する。
【０００８】
ところで、マルチノードストレージシステムでは、様々な状況で論理ボリュームの構成情報が変化する。その一例として、ディスクノードが故障した場合がある。ここで、マルチノードストレージシステムの運用中にディスクノードの１台が故障したと仮定する。このとき、故障したディスクノードに属するスライスが割り当てられたセグメントではデータの二重化状態が壊れている。そこで、該当セグメントへのスライスの再割り当てが行われる。再割り当ては、「二重化状態が壊れたセグメントに属するアクセス可能なスライスのデータを、新たに割り当てたスライスへコピーする」ことで行われる。
【０００９】
このように、二重化状態が壊れたセグメントについて新たにスライスの割り当て、およびデータのコピーにより、二重化状態を回復する処理をリカバリ処理と呼ぶ。リカバリ処理の実行開始を管理するのは制御ノードである。このリカバリ処理が発生すると論理ボリュームの構成情報が大きく変更されることとなる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００３−１０８４２０号公報
【特許文献２】国際公開第２００４／１０４８４５号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、リカバリ処理中およびリカバリ処理完了後には、アクセスノードが有している論理ボリュームの構成情報が一時的に実態から乖離してしまう。この場合、リカバリ処理実行後、アクセスノードが実際にディスクノードにアクセスし、アクセスが失敗することにより、アクセスノードにおいてリカバリ処理の発生が認識される。アクセスに失敗したアクセスノードは、例えば、アクセス対象のセグメントに新たに割り当てられたスライスの情報を制御ノードから取得し、自己の有する論理ボリューム構成情報を更新する。
【００１２】
しかし、アクセスノードにおいて、アクセスによるエラー発生後に論理ボリューム構成情報の更新処理を行うと、ユーザからのデータへのリクエストの応答も一時的に遅延してしまうという問題点がある。すなわち、アクセスノードでは、アクセス時に、タイムアウトを検出するまでディスクノードからの応答を待つ。その後、アクセスノードは、制御ノードから新たに割り当てられたスライスに関する情報を取得し、取得した情報に基づいて再度アクセスを行う。その結果、応答の待ち時間、論理ボリューム構成情報の取得時間、および再アクセスに要する時間の分、ユーザからのリクエストに対する応答時間が長期化する。
【００１３】
このような問題は、リカバリ処理に限らず、論理ボリュームの仮想的な記憶領域と、ストレージ装置の物理的な記憶領域のとの対応関係が変更された場合において同様に発生する。
【００１４】
本発明はこのような点に鑑みてなされたものであり、アクセスノードにおけるエラーの発生を待たずに、論理ボリュームとストレージ装置との記憶領域の対応関係の変更内容をアクセスノードに対して通知可能な論理ボリューム構成情報提供プログラム、論理ボリューム構成情報提供方法、および論理ボリューム構成情報提供装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、アクセスノードに対し論理ボリューム構成情報をネットワーク経由で提供する論理ボリューム構成情報提供装置が提供される。ここで、論理ボリューム構成情報は、仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置内の実記憶領域との対応関係を定義したものである。アクセスノードは、論理ボリューム構成情報に基づき、仮想記憶領域内のデータを指定したアクセス要求に応じて実記憶領域にアクセスを行うものである。
【００１６】
論理ボリューム構成情報提供装置は、論理ボリューム構成情報更新手段と論理ボリューム構成情報送信手段とを有する。論理ボリューム構成情報更新手段は、論理ボリューム構成情報における論理ボリュームの仮想記憶領域とストレージ装置内の実記憶領域との対応関係を変更する。論理ボリューム構成情報送信手段は、仮想記憶領域と実記憶領域との対応関係が変更されると、アクセスノードの識別情報が登録されたアクセスノードリストを記憶するアクセスノードリスト記憶手段を参照し、アクセスノードリストで示されるアクセスノードに対して、実記憶領域との対応関係が変更された仮想記憶領域に関する変更後の対応関係を示す更新情報を、ネットワーク経由で送信する。
【００１７】
また、上記課題を解決するために、上記論理ボリューム構成情報提供装置と同様の処理をコンピュータに実行させる論理ボリューム構成情報提供プログラムが提供される。さらに、論理ボリューム構成情報提供装置と同様の処理をコンピュータで実行する論理ボリューム構成情報提供方法が提供される。
【発明の効果】
【００１８】
上記論理ボリューム構成情報提供装置、論理ボリューム構成情報提供プログラム、および論理ボリューム構成情報提供方法によれば、アクセスノードにおけるエラーの発生を待たずに、論理ボリュームとストレージ装置との記憶領域の対応関係の変更内容をアクセスノードに対して通知できる。
【図面の簡単な説明】
【００１９】
【図１】実施の形態の概要を示す図である。
【図２】本実施の形態のマルチノードストレージシステム構成例を示す図である。
【図３】本実施の形態に用いる制御ノードのハードウェア構成例を示す図である。
【図４】論理ボリュームのデータ構造を示す図である。
【図５】アクセスノードの運用開始時における論理ボリューム構成情報の取得状況を示す図である。
【図６】制御ノードにおけるリカバリ処理状況を示す図である。
【図７】アクセスノードへの論理ボリューム構成情報の通知状況を示す図である。
【図８】ディスクノードの機能を示すブロック図である。
【図９】スライス情報記憶部のデータ構造例を示す図である。
【図１０】制御ノードの機能を示すブロック図である。
【図１１】スライス情報テーブルのデータ構造例を示す図である。
【図１２】セグメント情報テーブルのデータ構造例を示す図である。
【図１３】論理ボリューム構成情報のデータ構造例を示す図である。
【図１４】アクセスノードリストのデータ構造例を示す図である。
【図１５】障害発生時のセグメント情報テーブルの例を示す図である。
【図１６】復旧対象リストのデータ構造例を示す図である。
【図１７】アクセスノードの機能を示すブロック図である。
【図１８】Ｉ／Ｏ処理リストのデータ構造例を示す図である。
【図１９】アクセスノードリストへのアクセスノード登録処理の手順を示すシーケンス図である。
【図２０】ハートビート受信処理の手順を示すフローチャートである。
【図２１】アクセスノードリストチェック処理の手順を示すフローチャートである。
【図２２】論理ボリューム構成情報変更時の処理手順を示すシーケンス図である。
【図２３】制御ノードにおける構成情報変更通知処理の手順を示すフローチャートである。
【図２４】アクセスノードにおける論理ボリューム構成情報更新処理の手順を示すフローチャートである。
【図２５】第２の実施の形態におけるアクセスノードリストのデータ構造例を示す図である。
【図２６】第２の実施の形態における復旧対象リストの例を示す図である。
【図２７】第２の実施の形態の論理ボリューム構成情報送信処理を示す図である。
【図２８】論理ボリューム構成情報のプライマリ更新セグメント情報を示す図である。
【図２９】第２の実施の形態における論理ボリューム更新処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本実施の形態を図面を参照して説明する。
図１は、実施の形態の概要を示す図である。論理ボリューム構成情報提供装置１は、アクセスノード２，３やディスクノード４〜７にネットワークを介して接続されている。論理ボリューム構成情報提供装置１は、アクセスノード２，３に対し論理ボリューム構成情報をネットワーク経由で提供する。ここで、論理ボリューム構成情報は、仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置４ａ，５ａ，６ａ，７ａ内の実記憶領域との対応関係を定義したものである。
【００２１】
アクセスノード２，３は、論理ボリューム構成情報に基づき、仮想記憶領域内のデータを指定したアクセス要求に応じて実記憶領域にアクセスを行うコンピュータである。ディスクノード４〜７は、それぞれストレージ装置４ａ，５ａ，６ａ，７ａを有している。
【００２２】
論理ボリューム構成情報提供装置１は、論理ボリューム構成情報記憶手段１ａ、アクセスノードリスト記憶手段１ｂ、論理ボリューム構成情報更新手段１ｃ、および論理ボリューム構成情報送信手段１ｄを有している。
【００２３】
論理ボリューム構成情報記憶手段１ａは、論理ボリュームの仮想記憶領域と、ストレージ装置４ａ，５ａ，６ａ，７ａ内の実記憶領域との対応関係を示す論理ボリューム構成情報を記憶する。アクセスノードリスト記憶手段１ｂは、アクセスノード２，３の識別情報（アクセスノードＩＤ）を記憶する。
【００２４】
論理ボリューム構成情報更新手段１ｃは、論理ボリューム構成情報における論理ボリュームの仮想記憶領域とストレージ装置内の実記憶領域との対応関係を変更する。例えば、論理ボリューム構成情報更新手段１ｃは、ディスクノード４〜７のうちの１台が故障した場合に、故障したディスクノード内の実記憶領域が対応付けられていた仮想記憶領域に対して、新たに動作しているディスクノード内の実記憶領域を対応付ける。更新後の対応関係は、例えば、論理ボリューム構成情報記憶手段１ａに反映される。
【００２５】
論理ボリューム構成情報送信手段１ｄは、仮想記憶領域と実記憶領域との対応関係が変更されると、アクセスノードリスト記憶手段１ｂを参照し、アクセスノード２，３の識別情報を取得する。そして、論理ボリューム構成情報送信手段１ｄは、取得した識別情報で示されるアクセスノード２，３に対して、実記憶領域との対応関係が変更された仮想記憶領域に関する変更後の対応関係を示す更新情報を、ネットワーク経由で送信する。変更後の対応関係は、例えば、論理ボリューム構成情報記憶手段１ａを参照することで取得できる。
【００２６】
このようなマルチノードシステムが運用されているときに、ディスクノードの故障などの論理ボリューム構成情報の変更を必要とする事象が発生したものとする。その場合、論理ボリューム構成情報更新手段１ｃにより、論理ボリューム構成情報における論理ボリュームの仮想記憶領域とストレージ装置内の実記憶領域との対応関係が変更される。論理ボリューム構成情報送信手段１ｄは、仮想記憶領域と実記憶領域との対応関係が変更されると、アクセスノードリスト記憶手段１ｂを参照する。そして、論理ボリューム構成情報送信手段１ｄは、アクセスノード２，３の識別情報を取得する。そして、論理ボリューム構成情報送信手段１ｄにより、取得した識別情報で示されるアクセスノード２，３に対して、実記憶領域との対応関係が変更された仮想記憶領域に関する変更後の対応関係を示す更新情報が、ネットワーク経由で送信される。
【００２７】
このように、予め論理ボリューム構成情報提供装置１内にアクセスノードリストを設けておくことで、仮想記憶領域と実記憶領域との対応関係が変更された場合に、アクセスノード２，３でのエラーの発生を待たずに更新情報を送信できる。すると、アクセスノード２，３では、ユーザからのアクセス要求で指定された仮想記憶領域に対応する実記憶領域にアクセスする際に、常に最新の論理ボリューム構成情報に基づいてアクセス先の実記憶領域を判断できる。その結果、アクセスノード２，３は、対応関係変更後に、対応する実記憶領域が変更された仮想記憶領域に対して最初にアクセスする場合であっても、アクセスエラーとならずにデータにアクセスできる。その結果、アクセス要求を入力したユーザに対して迅速に応答することが可能となる。
【００２８】
また、ディスクノードに故障が発生した場合などは、仮想記憶領域と実記憶領域との対応関係の変更が多数発生する。このような場合、従来は、アクセスノードがアクセスに失敗し、その都度、そのアクセス対象の仮想記憶領域に対応する実記憶領域を論理ボリューム構成情報提供装置に問い合わせていた。すると、各アクセスノード内のすべてのセグメントに関する構成情報が最新状態に更新されるまでに、ノード間の通信が多発してしまう。その結果、ネットワーク上の通信量が増加し、システム全体の処理効率を低下させていた。
【００２９】
他方、図１に示す論理ボリューム構成情報提供装置１では、変更されたすべての対応関係を示す更新情報に含め、アクセスノード２，３に送信できる。そのため、仮想記憶領域と実記憶領域との対応関係の変更が同時に多数発生した場合でも、各アクセスノード２，３への情報送信は１回ずつで済む。その結果、論理ボリューム構成情報の変更内容をアクセスノード２，３に通知するための通信によるシステム全体の処理効率の低下を最小限に抑えることができる。
【００３０】
ところで、アクセスノードリストの内容は、システムの管理者が操作入力により更新することができる。また、アクセスノード２，３が運用しているか否かを論理ボリューム構成情報提供装置１で監視し、自動でアクセスノードリストの内容を更新することもできる。このような自動更新を行うことで、システム内に新たに追加されたアクセスノードに対する論理ボリューム構成情報の送信漏れを防止できる。
【００３１】
また、論理ボリュームの仮想記憶領域に対して、複数の実記憶領域を割り当て、それらの実記憶領域を用いて二重化処理を行うことができる。このような場合、共通の仮想記憶領域に対して割り当てられた実記憶領域を、プライマリ実記憶領域とセカンダリ実記憶領域とに分けることができる。プライマリ実記憶領域は、アクセスノード２，３からのアクセス対象となる実記憶領域である。セカンダリ実記憶領域は、プライマリ実記憶領域に格納されたデータのコピーを格納する実記憶領域である。このような構成の論理ボリュームの場合、仮想記憶領域と実記憶領域との対応関係のうち、プライマリ実記憶領域に関する対応関係のみをアクセスノード２，３に通知すればよい。
【００３２】
そこで、論理ボリュームに格納されるデータを二重化してストレージ装置に格納するマルチノードストレージシステムにおいて、アクセスノードリストを自動更新する場合を例に採り、本実施の形態を詳細に説明する。
【００３３】
［第１の実施の形態］
図２は、本実施の形態のマルチノードストレージシステム構成例を示す図である。本実施の形態では、ネットワーク１０を介して、複数のディスクノード１００，２００，３００，４００、制御ノード５００、アクセスノード６００，７００、および管理ノード５０が接続されている。ディスクノード１００，２００，３００，４００それぞれには、ストレージ装置１１０，２１０，３１０，４１０が接続されている。
【００３４】
ストレージ装置１１０には、複数のハードディスク装置（ＨＤＤ）１１１，１１２，１１３，１１４が実装されている。ストレージ装置２１０には、複数のＨＤＤ２１１，２１２，２１３，２１４が実装されている。ストレージ装置３１０には、複数のＨＤＤ３１１，３１２，３１３，３１４が実装されている。ストレージ装置４１０には、複数のＨＤＤ４１１，４１２，４１３，４１４が実装されている。各ストレージ装置１１０，２１０，３１０，４１０は、内蔵するＨＤＤを用いたＲＡＩＤシステムである。例えば、各ストレージ装置１１０，２１０，３１０，４１０は、ＲＡＩＤ５のディスク管理サービスを提供できる。
【００３５】
ディスクノード１００，２００，３００，４００は、例えば、ＩＡ（Intel Architecture）と呼ばれるアーキテクチャのコンピュータである。ディスクノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納されたデータを管理し、管理しているデータをネットワーク１０経由で端末装置２１，２２，２３に提供する。また、ディスクノード１００，２００，３００，４００は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも２つのディスクノードで管理されている。
【００３６】
制御ノード５００は、ディスクノード１００，２００，３００，４００およびアクセスノード６００，７００を管理する。例えば、制御ノード５００は、管理ノード５０から新たなストレージ装置の追加要求を受け取ると、新たな論理ボリュームを定義し、その論理ボリュームを介して追加されたストレージ装置に格納されていたデータにアクセスできるようにする。また、制御ノード５００は、必要に応じて、論理ボリュームの定義内容をアクセスノード６００，７００に送信する。
【００３７】
アクセスノード６００，７００には、ネットワーク１０を介して複数の端末装置２１，２２，２３が接続されている。アクセスノード６００，７００には、論理ボリュームが定義されている。そして、アクセスノード６００，７００は、端末装置２１，２２，２３からの論理ボリューム上でのデータのアクセス要求に応答して、ディスクノード１００，２００，３００，４００内の対応するデータへアクセスする。
【００３８】
管理ノード５０は、管理者がマルチノードストレージシステムの運用を管理するために使用するコンピュータである。例えば、管理ノード５０では、マルチノードストレージシステムにおける論理ボリュームの使用量などの情報を収集し、運用状況を画面に表示する。
【００３９】
図３は、本実施の形態に用いる制御ノードのハードウェア構成例を示す図である。制御ノード５００は、ＣＰＵ（Central Processing Unit）５０１によって装置全体が制御されている。ＣＰＵ５０１には、バス５０８を介してＲＡＭ（Random Access Memory）５０２と複数の周辺機器が接続されている。
【００４０】
ＲＡＭ５０２は、制御ノード５００の主記憶装置として使用される。ＲＡＭ５０２には、ＣＰＵ５０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ５０２には、ＣＰＵ５０１による処理に必要な各種データが格納される。
【００４１】
バス５０８に接続されている周辺機器としては、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）５０３、グラフィック処理装置５０４、入力インタフェース５０５、光学ドライブ装置５０６、および通信インタフェース５０７がある。
【００４２】
ＨＤＤ５０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ５０３は、制御ノード５００の二次記憶装置として使用される。ＨＤＤ５０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４３】
グラフィック処理装置５０４には、モニタ１１が接続されている。グラフィック処理装置５０４は、ＣＰＵ５０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４４】
入力インタフェース５０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース５０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ５０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４５】
光学ドライブ装置５０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４６】
通信インタフェース５０７は、ネットワーク１０に接続されている。通信インタフェース５０７は、ネットワーク１０を介して、ディスクノード１００，２００，３００，４００、アクセスノード６００，７００、および管理ノード５０との間でデータの送受信を行う。
【００４７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、制御ノード５００のハードウェア構成を示しているが、ディスクノード１００，２００，３００，４００、アクセスノード６００，７００、および管理ノード５０も同様のハードウェア構成で実現することができる。
【００４８】
図４は、論理ボリュームのデータ構造を示す図である。本実施の形態では、論理ボリューム６０には論理ボリューム識別子「ＬＶＯＬ−Ｘ」が付与され、論理ボリューム７０には論理ボリューム識別子「ＬＶＯＬ−Ｙ」が付与されている。ネットワーク経由で接続された４台のディスクノード１００，２００，３００，４００には、個々のノードの識別のためにそれぞれ「ＤＰ−Ａ」、「ＤＰ−Ｂ」、「ＤＰ−Ｃ」、「ＤＰ−Ｄ」というノード識別子が付与されている。そして、各ディスクノード１００，２００，３００，４００に接続されているストレージ装置１１０，２１０，３１０，４１０は、ディスクノード１００，２００，３００，４００のノード識別子によってネットワーク１０上で一意に識別される。
【００４９】
各ディスクノード１００，２００，３００，４００が有するストレージ装置１１０，２１０，３１０それぞれにおいて、例えばＲＡＩＤ５のストレージシステムが構成されている。各ストレージ装置１１０，２１０，３１０，４１０で提供される記憶機能は、複数のスライス１１５ａ〜１１５ｆ，２１５ａ〜２１５ｆ，３１５ａ〜３１５ｆ，４１５ａ〜４１５ｆに分割されて管理されている。スライス１１５ａ〜１１５ｆ，２１５ａ〜２１５ｆ，３１５ａ〜３１５ｆ，４１５ａ〜４１５ｆは、図１に示した実記憶領域に相当する。
【００５０】
論理ボリューム６０は、セグメント６１〜６６という単位で構成される。論理ボリューム７０は、セグメント７１という単位で構成される。セグメント６１〜６６，７１は、図１に示す仮想記憶領域に相当する。セグメント６１〜６６，７１の記憶容量は、ストレージ装置１１０，２１０，３１０，４１０における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が１ギガバイトとするとセグメントの記憶容量も１ギガバイトである。論理ボリューム６０，７０の記憶容量はセグメント１つ当たりの記憶容量の整数倍である。セグメント６１〜６６は、それぞれプライマリスライス６１ａ，６２ａ，６３ａ，６４ａ，６５ａ，６６ａとセカンダリスライス６１ｂ，６２ｂ，６３ｂ，６４ｂ，６５ｂ，６６ｂとの組（スライスペア）で構成される。セグメント７１は、プライマリスライス７１ａとセカンダリスライス７１ｂとの組で構成される。
【００５１】
同一セグメントに割り当てられた２つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
【００５２】
図４の例では、論理ボリューム６０，７０内のスライスの識別子を、「Ｐ」または「Ｓ」のアルファベットと数字との組合せで示している。「Ｐ」はプライマリスライスであることを示している。「Ｓ」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、１番目のセグメント６１のプライマリスライスが「Ｐ１」で示され、セカンダリスライスが「Ｓ１」で示される。
【００５３】
なお、図４では、論理ボリューム６０については、１番目のセグメントから６番目のセグメントが示されている。また、論理ボリューム７０については、７番目のセグメントが示されている。これは、論理ボリューム６０，７０ごとのセグメントを区別し易くするため、２つの論理ボリューム６０，７０のセグメントの番号が重複しないように図示したものである。実際には、セグメントを特定する情報内にそのセグメントが属する論理ボリュームの識別情報（論理ボリューム識別子）が含められ、論理ボリューム間のセグメントの番号の重複は許容される。従って、論理ボリューム７０においても、１番目のセグメントから番号を開始することができる。
【００５４】
このような論理ボリューム６０に含まれる各セグメント６１〜６６へのスライスの割り当て関係は、セグメント情報テーブルによって制御ノード５００で管理される。論理ボリューム７０も同様に制御ノード５００で管理される。セグメントに割り当てるスライスが変更された場合、制御ノード５００内のセグメント情報テーブルが更新される。このとき、各セグメントへのプライマリスライスの割り当て関係を示す論理ボリューム構成情報も同時に更新される。アクセスノード６００，７００は、適宜、制御ノード５００に問い合わせることで、論理ボリューム構成情報を取得する。
【００５５】
図５は、アクセスノードの運用開始時における論理ボリューム構成情報の取得状況を示す図である。制御ノード５００は、セグメント情報テーブル５２２を有している。制御ノード５００が有するセグメント情報テーブル５２２には、論理ボリューム６０，７０の各セグメント６１〜６６，７１に対して割り当てられたプライマリスライスとセカンダリスライスとの情報が登録されている。図５中、セグメント情報テーブル５２２の左側に論理ボリューム６０に関する情報を示し、右側に論理ボリューム７０に関する情報を示している。
【００５６】
なお、アクセスノード６００には、マルチノードストレージシステム内で一意に識別するためのアクセスノードＩＤ「ＡＰ＃１」が付与されている。また、アクセスノード７００には、アクセスノードＩＤ「ＡＰ＃２」が付与されている。アクセスノード６００は論理ボリューム６０を担当し、アクセスノード７００は論理ボリューム７０を担当する。
【００５７】
図５の例では、セグメント情報テーブル５２２の内容を簡略化して示している。セグメント情報テーブル５２２内の括弧内の情報が、論理ボリュームに属する１つのセグメントに関するスライスの割り当てを示している。括弧内の左側に、プライマリスライスに関する情報が設定され、右側にセカンダリスライスに関する情報が設定されている。各スライスに関する情報は、ディスクノードのノード識別子（図５では「ＤＰ−」を省略し、末端の記号のみを示している）と、ディスクノード内のスライスＩＤとの組で表されている。
【００５８】
アクセスノード６００，７００は、マルチノードストレージシステムとしての運用を開始する際に、制御ノード５００に対して論理ボリューム構成情報を要求する。図５の例では、アクセスノード６００は、論理ボリューム識別子「ＬＶＯＬ−Ｘ」の論理ボリューム６０へのアクセス処理を行うものとする。また、アクセスノード７００は、論理ボリューム識別子「ＬＶＯＬ−Ｙ」の論理ボリューム７０へのアクセス処理を行うものとする。この場合、アクセスノード６００は、制御ノード５００に対して論理ボリューム６０に関する論理ボリューム構成情報を要求する。同様に、アクセスノード７００は、制御ノード５００に対して論理ボリューム７０に関する論理ボリューム構成情報を要求する。
【００５９】
すると、制御ノード５００は、セグメント情報テーブル５２２の要求された論理ボリューム情報のうち、プライマリスライスに関する情報のみで構成される論理ボリューム構成情報を、アクセスノード６００，７００に送信する。その結果、アクセスノード６００，７００では、論理ボリューム構成情報６３１，７３１が保持される。
【００６０】
図５に示したように、アクセスノード６００，７００が保持する論理ボリューム構成情報６３１，７３１には、プライマリスライスに関する情報のみが含まれ、セカンダリスライスに関する情報は含まれない。これは、アクセスノード６００，７００からディスクノード１００，２００，３００，４００へのアクセスが、プライマリスライスに対してのみ行われるためである。アクセスノード６００，７００に配布する論理ボリューム構成情報６３１，７３１にセカンダリスライスに関する情報を含めないことで、制御ノード５００からアクセスノード６００，７００に転送すべきデータ量を削減できる。
【００６１】
なお、アクセスノード６００，７００からプライマリスライスへのデータの書き込みが行われた場合、プライマリスライスを管理するディスクノードがセカンダリスライスへデータのコピー（ミラーリング）を行う。これにより、アクセスノード６００，７００においてセカンダリスライスの所在を認識していなくても、データの二重化状態が維持される。
【００６２】
ここで、ディスクノード１００で故障が発生した場合を想定する。すると、ディスクノード１００で管理しているスライスが割り当てられているセグメントは、すべて二重化状態が損なわれる。以下、二重化状態が損なわれたセグメントを、特に「縮退セグメント」と呼ぶこととする。制御ノード５００は、縮退セグメントが発生するとリカバリ処理を開始する。
【００６３】
図６は、制御ノードにおけるリカバリ処理状況を示す図である。制御ノード５００は、先ずディスクノード１００の故障を検出する。例えば、制御ノード５００は、ディスクノード１００から定期的に出力されるべきハートビート（稼動していることを通知する信号）が所定期間途絶えた場合、ディスクノード１００の故障を認識できる。なお、ストレージ装置１１０のみの故障であれば、ディスクノード１００がその故障を検出し、制御ノード５００に対してその旨を通知することもできる。
【００６４】
制御ノード５００は、ストレージ装置１１０に対してアクセス不能になったことを検出すると、リカバリ処理を開始する。リカバリ処理では、ディスクノード１００が管理するスライスと同じセグメントに割り当てられている他のスライスを、すべてプライマリスライスに変更する。図６の例では、ディスクノード２００の５番目のスライス、ディスクノード３００の２番目のスライス、ディスクノード４００の１番目のスライス、およびディスクノード４００の４番目のスライスがセカンダリスライスからプライマリスライスに変更される。
【００６５】
次に、制御ノード５００は、縮退セグメントに対してセカンダリスライスを割り当てる。具体的には、正常に動作しているディスクノード２００，３００，４００が管理するスライスの中からフリーのスライス（セグメントへの割り当てが行われていないスライス）を抽出し、縮退セグメントに割り当てる。この際、制御ノード５００は、既に縮退セグメントに割り当てられているスライスが属するディスクノードは別のディスクノードに属するスライスを、その縮退セグメントに割り当てる。すなわち、制御ノード５００は、割り当て後のスライスペアを構成する２つのスライスが、常に異なるディスクノードに属するように、スライスの割り当てを行う。
【００６６】
制御ノード５００では、縮退セグメントに新たなスライスを割り当てた場合、その割り当て結果に基づいてセグメント情報テーブル５２２を更新する。そして、制御ノード５００は、割り当て結果をディスクノード２００，３００，４００に通知する。
【００６７】
各ディスクノード２００，３００，４００では、制御ノード５００からの通知によって、自己の管理するスライスの割り当て先となるセグメントと、スライスペアを組む相手となる他のディスクノードに属するスライスを認識する。そして、縮退セグメントのプライマリスライスを管理しているディスクノードは、縮退セグメントに割り当てられたセカンダリスライスに対してプライマリスライス内のデータをコピーする。なお、データをコピーしている間も、プライマリスライスへのアクセスノード６００，７００からのアクセスは可能である。
【００６８】
スライス内のデータのコピーが完了すると、縮退セグメントの二重化状態の復旧処理が完了し、該当セグメントは縮退セグメントではなくなる。ただし、この状態では、まだアクセスノード６００，７００内の論理ボリューム構成情報６３１，７３１が未更新である。そこで、制御ノード５００は、アクセスノード６００，７００に対して更新後の論理ボリューム構成情報の送信処理を行う。なお、論理ボリューム構成情報の送信処理は、縮退セグメント内のデータのコピーが完了するのを待たずに実行される。
【００６９】
図７は、アクセスノードへの論理ボリューム構成情報の通知状況を示す図である。制御ノード５００がアクセスノード６００，７００へ更新された論理ボリューム構成情報を通知するには、制御ノード５００がアクセスノード６００，７００の存在を予め認識している必要がある。そこで、制御ノード５００には、マルチノードストレージシステムに組み込まれているアクセスノード６００，７００の識別情報を予め登録しておく。
【００７０】
そして、制御ノード５００は、リカバリ処理の開始を契機として、セグメント情報テーブル５２２を、論理ボリューム構成情報が更新されたことをアクセスノード６００，７００に通知する。その通知を受け取ったアクセスノード６００，７００は、制御ノード５００に保持された更新後のセグメント情報テーブル５２２を参照する。そして、アクセスノード６００，７００は、セグメント情報テーブル５２２から、プライマリスライスに関する情報のみを取得し、自己の論理ボリューム構成情報６３１，７３１を更新する。
【００７１】
このように、アクセスノード６００，７００から故障したディスクノード１００へのアクセスが発生する前に、アクセスノード６００，７００の論理ボリューム構成情報６３１，７３１を更新することができる。そのため、ディスクノード１００の故障により縮退セグメントとなったセグメントのデータに対するアクセスノード６００，７００からのリカバリ処理後の最初のアクセスであっても、更新された論理ボリューム構成情報６３１，７３１に基づいてアクセスできる。その結果、リカバリ処理が発生してもユーザへの応答を遅延させずに済む。
【００７２】
次に、本実施の形態に係るリカバリ処理を実現するために必要な各装置の機能について詳細に説明する。
図８は、ディスクノードの機能を示すブロック図である。ディスクノード１００は、インタフェース（Ｉ／Ｆ）部１２０、デバイス制御部１３０、スライス情報記憶部１４０、および制御部１５０を有する。
【００７３】
Ｉ／Ｆ部１２０は、所定の通信プロトコルにより、他の装置とネットワーク１０を介したデータ通信を実現するための通信機能である。デバイス制御部１３０は、ストレージ装置１１０を制御する。
【００７４】
スライス情報記憶部１４０は、ストレージ装置１１０のスライスを管理するためのスライス情報を記憶する記憶機能である。例えば、ディスクノード１００のＲＡＭ内の記憶領域の一部がスライス情報記憶部１４０として使用される。なお、スライス情報は、スライス毎に設けられたメタデータを集めたものである。メタデータは、対応するスライスが割り当てられたセグメントや、スライスペアにおいて対となる他のスライスを示す情報である。
【００７５】
制御部１５０は、データアクセス制御部１５１、ハートビート送信部１５２、データ管理部１５３を有する。
データアクセス制御部１５１は、アクセスノードからのＩ／Ｏリクエスト（リード要求またはライト要求）を受け付けた場合に、スライス情報記憶部１４０を参照して、アクセス対象のスライスを判断する。そして、データアクセス制御部１５１は、ストレージ装置１１０内のアクセス要求に応じたデータにアクセスする。例えば、Ｉ／Ｏリクエストがリード要求であれば、データアクセス制御部１５１は、ストレージ装置１１０からデータを取得し、アクセスノード３０に送信する。また、Ｉ／Ｏリクエストがライト要求であれば、データアクセス制御部１５１は、ストレージ装置１１０にデータを書き込む。
【００７６】
ハートビート送信部１５２は、ディスクノード１００およびストレージ装置１１０が正常動作していることを制御ノード５００に定期的に通知する。具体的には、ハートビート送信部１５２は、ディスクノード１００およびストレージ装置１１０が正常に動作している場合、定期的に制御ノード５００へ正常に動作していることを示す正常通知（ハートビート）を送信する。制御ノード５００では、ディスクノード１００からのハートビートが一定時間途絶えた場合に、ディスクノード１００での障害が発生したことを認識する。
【００７７】
データ管理部１５３は、制御ノード５００からスライス情報の更新指示を受け付けた場合に、スライス情報記憶部１４０に記憶されているスライス情報を更新する。スライス情報の更新処理としては、例えば、スライスのプライマリ化がある。データ管理部１５３は、プライマリ化指示を受け付けた場合、スライス情報記憶部１４０内のプライマリ化指示に含まれるスライスＩＤで示されるメタデータの属性を「プライマリ（Ｐ）」に更新する。
【００７８】
また、データ管理部１５３は、スライス割当指示を受け付けた場合、スライス割当指示に含まれるスライスＩＤをキーにして、スライス情報記憶部１４０からメタデータを特定する。データ管理部１５３は、特定したメタデータの内容を、スライス割当指示で指定された内容（割当先のセグメントやペアとなる他のスライスの情報が含まれる）に応じて更新する。ストレージ装置１１０のスライスをセグメントに新たに割り当てた場合、データ管理部１５３は、他のディスクノードで管理されているペアとなるスライスからデータを取得し、新たに割り当てられたスライスに格納する。
【００７９】
なお、データ管理部１５３は、スライス情報内のメタデータを更新すると、ストレージ装置１１０内の対応するメタデータも更新する。これにより、ストレージ装置１１０内のメタデータとスライス情報記憶部１４０内のメタデータとの同一性が維持される。ストレージ装置１００の起動時には、ストレージ装置１１０からメタデータが読み出され、データ管理部１５３によってスライス情報が生成される。データ管理部１５３は、制御ノード５００からスライス情報取得要求を受け取った場合、スライス情報記憶部１４０内のスライス情報を制御ノード５００に送信する。
【００８０】
さらに、データ管理部１５３は、プライマリスライスとセカンダリスライスとのデータの冗長性確保処理を行う。具体的には、データ管理部１５３は、データアクセス制御部１５１によってライト要求に基づくデータの書き込みが行われた場合、データが書き込まれたプライマリスライスに対応するセカンダリスライスを管理するディスクノードを判断する。そして、データ管理部１５３は、該当するディスクノードのデータ管理部と連携動作し、プライマリスライスに対するデータ更新と同様に、セカンダリスライス内のデータを更新する。
【００８１】
リカバリ処理時において、ストレージ装置１１０内のスライスが縮退セグメントのプライマリスライスであった場合、データ管理部１５３は該当スライスのデータを、セカンダリスライスを管理するディスクノードに送信する。これにより、縮退セグメントのデータの二重化状態を回復することができる。
【００８２】
なお、図８にはディスクノード１００の機能を示したが、ディスクノード２００，３００，４００もディスクノード１００と同様の機能を有している。
次に、スライス情報記憶部１４０に格納されるデータについて詳細に説明する。
【００８３】
図９は、スライス情報記憶部のデータ構造例を示す図である。スライス情報記憶部１４０には、メタデータテーブル１４１が格納されている。メタデータテーブル１４１には、ディスクノードＩＤ、スライスＩＤ、状態、論理ボリュームＩＤ、セグメントＩＤ、ペアのディスクノードＩＤ、およびペアのスライスＩＤの欄が設けられている。メタデータテーブル１４１内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す１つのレコードを構成している。
【００８４】
ディスクノードＩＤの欄は、ストレージ装置１１０を管理しているディスクノード１００の識別情報（ディスクノードＩＤ）が設定される。
スライスＩＤの欄には、メタデータに対応するスライスのストレージ装置１１０内での識別情報（スライスＩＤ）が設定される。
【００８５】
状態の欄には、スライスの状態を示す状態フラグが設定される。スライスが論理ボリュームのセグメントに割り当てられていない場合、状態フラグ「Ｆ」が設定される。論理ボリュームのセグメントのプライマリストレージに割り当てられている場合、状態フラグ「Ｐ」が設定される。論理ボリュームのセグメントのセカンダリストレージに割り当てられている場合、状態フラグ「Ｓ」が設定される。
【００８６】
論理ボリュームＩＤの欄には、スライスに対応するセグメントが属する論理ボリュームを識別するための識別情報（論理ボリュームＩＤ）が設定される。
セグメントＩＤの欄には、論理ボリュームに含まれるセグメントの識別情報（セグメントＩＤ）が設定される。
【００８７】
ペアのディスクノードＩＤの欄には、ペアのスライス（同じセグメントに属する別のスライス）を有するストレージ装置を管理するディスクノードの識別情報（ディスクノードＩＤ）が設定される。
【００８８】
ペアのスライスＩＤの欄には、ペアのスライスを、そのスライスが属するストレージ装置内で識別するための識別情報（スライスＩＤ）が設定される。
図１０は、制御ノードの機能を示すブロック図である。制御ノード５００は、インタフェース（Ｉ／Ｆ）部５１０、記憶部５２０、および制御部５３０を有する。Ｉ／Ｆ部５１０は、所定の通信プロトコルにより、ディスクノード１００，２００，３００，４００、アクセスノード６００，７００、および管理ノード５０と、ネットワーク１０を介したデータ通信を実現するための通信機能である。
【００８９】
記憶部５２０は、各種情報を記憶する記憶機能である。例えば、ＲＡＭ５０２やＨＤＤ５０３の記憶領域の一部を、記憶部５２０として利用することができる。記憶部５２０には、スライス情報テーブル５２１、セグメント情報テーブル５２２、論理ボリューム構成情報５２３、アクセスノードリスト５２４、および復旧対象リスト５２５が記憶される。
【００９０】
スライス情報テーブル５２１は、各ディスクノード１００，２００，３００，４００から収集したメタデータが登録されたデータテーブルである。このメタデータは、ストレージ装置内の各スライスに関して、割り当てられたセグメント、および対となる他のスライスが示された情報である。スライス情報テーブル５２１は、制御部５３０内のスライス情報収集部５３２によって作成される。
【００９１】
セグメント情報テーブル５２２は、論理ボリュームを構成する各セグメントに対して割り当てられたスライスを示す情報である。セグメント情報テーブル５２２は、スライス情報収集部５３２によって、ディスクノード１００，２００，３００，４００から収集したメタデータ基づいて生成される。
【００９２】
論理ボリューム構成情報５２３は、予め定義されている論理ボリュームごとに、その論理ボリュームに含まれるセグメントへのスライスの割り当て関係が定義された情報である。
【００９３】
アクセスノードリスト５２４は、マルチノードストレージシステムに組み込まれたアクセスノードが正常に運用しているか否かを示す情報である。アクセスノードリスト５２４の内容は、アクセスノード管理部５３７によって更新される。
【００９４】
復旧対象リスト５２５は、リカバリ処理の対象となるセグメントを示す情報である。復旧対象リスト５２５は、制御部５３０内の復旧対象抽出部５３３によって生成される。
制御部５３０は、ディスクノード監視部５３１、スライス情報収集部５３２、復旧対象抽出部５３３、二重化制御部５３４、論理ボリューム構成情報管理部５３５、アクセスノードハートビート受信部５３６、アクセスノード管理部５３７、および構成情報変更通知部５３８を有する。
【００９５】
ディスクノード監視部５３１は、ディスクノード１００，２００，３００，４００が正常に動作しているか否かを監視する処理部である。具体的には、ディスクノード監視部５３１は、ディスクノード１００，２００，３００，４００から定期的に送られてくるハートビートを受信する。そのとき、ディスクノード監視部５３１は、ハートビートの受信時刻を、ディスクノードに対応付けて記憶する。そして、ディスクノード監視部５３１は、前回のハートビート受信から所定期間以上経過しても次のハートビートを送ってこないディスクノードがあると、そのディスクノードに障害が発生したものと判断する。
【００９６】
スライス情報収集部５３２は、システムの運用開始時にディスクノード１００，２００，３００，４００からスライス情報を収集し、スライス情報テーブル５２１とセグメント情報テーブル５２２とを生成する。また、スライス情報収集部５３２は、ディスクノード監視部５３１によっていずれかのディスクノードに異常が発生したことが検知された場合、正常に動作しているディスクノードからスライス情報（メタデータの集合）を収集する。そして、スライス情報収集部５３２は、収集したスライス情報に基づいて、スライス情報テーブル５２１とセグメント情報テーブル５２２とを新たに生成する。
【００９７】
復旧対象抽出部５３３は、ディスクノード監視部５３１によりディスクノードの障害が検出されると、縮退セグメントを検出する。具体的には、復旧対象抽出部５３３は、障害発生により再生成されたセグメント情報テーブル５２２に基づいて、縮退セグメントを抽出する。縮退セグメントとは、プライマリスライスまたはセカンダリスライスの一方のみが割り当てられているセグメントである。そして、復旧対象抽出部５３３は、縮退セグメントを示す情報を復旧対象リスト５２５に格納する。
【００９８】
二重化制御部５３４は、セグメントのデータの二重化が保たれるように、縮退セグメントへのスライス割当を制御する。すなわち、ディスクノードの障害により二重化状態が崩れたセグメントが発生すると、そのセグメントのリカバリ処理（二重化回復処理）を行う。リカバリ処理は、縮退セグメントに割り当てられているスライスと、正常に動作しているストレージ管理装置の空きスライスとでスライスペアを再構成し、二重化状態を回復させる処理である。なお、空きスライスとは、いずれのセグメントにも割り当てられていないスライスである。リカバリ処理は、大別するとプライマリ化処理、空きスライス割当処理、およびスライス情報更新処理に分かれる。
【００９９】
プライマリ化処理は、縮退セグメントに現在割り当てられているスライスをすべてプライマリにする処理である。具体的には、二重化制御部５３４は、復旧対象リスト５２５とセグメント情報テーブル５２２とから、縮退セグメントに割り当てられているスライスのディスクノードＩＤおよびスライスＩＤを取得する。そして、二重化制御部５３４は、取得したディスクノードＩＤに該当するストレージ装置を有するディスクノードに対して、取得したスライスＩＤで示されるスライスのプライマリ化指示を送信する。プライマリ化指示で指定されたスライスは、そのプライマリ化指示を受け取ったディスクノードによって、属性がプライマリに変更される。
【０１００】
続いて、二重化制御部５３４は、空きスライス割当処理を行う。具体的には、二重化制御部５３４は、スライス情報テーブル５２１から、縮退セグメントに現在割り当てられているスライスとは異なるストレージ装置に属する空きスライスを検索する。そして、二重化制御部５３４は、検索されたスライスの１つを選択し、縮退セグメントのセカンダリスライスとして割り当てる。
【０１０１】
さらに、二重化制御部５３４は、セカンダリスライスとするスライスへのデータコピー指示を、プライマリスライスを管理するディスクノードに対して送信する。データコピー指示には、セカンダリスライスを管理するディスクノードのディスクノードＩＤと、セカンダリスライスのスライスＩＤとが含まれる。データコピー指示を受け取ったディスクノードは、プライマリスライスのデータをセカンダリスライスを管理するディスクノードに転送する。データを受け取ったディスクノードは、そのデータをセカンダリスライスに格納する。これにより、縮退セグメントのデータが二重化される。
【０１０２】
そして、二重化制御部５３４は、縮退セグメントのプライマリスライスとセカンダリスライスとのそれぞれを管理するディスクノードに対して、スライス情報更新指示を送信し、復旧対象リスト５２５の内容を消去する。スライス情報更新指示には、縮退セグメントに割り当てられたスライスのメタデータが含まれる。スライス情報更新指示を受け取ったディスクノードは、スライス情報更新指示に含まれるメタデータにより、スライス情報記憶部とストレージ装置とのメタデータを更新する。
【０１０３】
論理ボリューム構成情報管理部５３５は、論理ボリューム構成情報５２３を管理する。具体的には、論理ボリューム構成情報管理部５３５は、セグメント情報テーブル５２２を参照し、論理ボリュームにおける各セグメントへのスライスの割り当て関係を示す情報のうち、プライマリスライスに関する情報のみを抽出する。そして、論理ボリューム構成情報管理部５３５は、抽出したプライマリスライスに関する情報を含む論理ボリューム構成情報５２３を生成する。論理ボリューム構成情報管理部５３５は、生成した論理ボリューム構成情報５２３を記憶部５２０に格納する。
【０１０４】
また、論理ボリューム構成情報管理部５３５は、アクセスノード６００，７００からの論理ボリューム構成情報参照要求に応答して、論理ボリューム構成情報５２３をアクセスノード６００，７００に送信する。
【０１０５】
アクセスノードハートビート受信部５３６は、アクセスノード６００，７００からのハートビートを受信する。アクセスノードハートビート受信部５３６は、ハートビートを受信すると、そのハートビートを送信したアクセスノードに関するアクセスノード情報をアクセスノード管理部５３７に通知する。
【０１０６】
アクセスノード管理部５３７は、運用中のアクセスノードを管理する。具体的には、アクセスノード管理部５３７は、アクセスノードハートビート受信部５３６から受け取ったハートビートの情報に基づき、ハートビートを出力したアクセスノードの識別情報（ＩＰアドレスなど）を判断する。そして、アクセスノード管理部５３７は、ハートビートを出力したアクセスノードがアクセスノードリスト５２４に登録されていなければ、そのアクセスノードをアクセスノードリスト５２４に追加登録する。
【０１０７】
また、アクセスノード管理部５３７は、アクセスノードリスト５２４に登録されているアクセスノードから定期的にハートビートが届いているか否かを判断する。ハートビートが所定期間以上途絶えたアクセスノードがある場合、アクセスノード管理部５３７は、該当するアクセスノードをアクセスノードリスト５２４から削除する。
【０１０８】
構成情報変更通知部５３８は、論理ボリューム構成情報管理部５３５により論理ボリューム構成情報５２３の内容が更新されると、そのとき正常に動作しているアクセスノードに対して論理ボリューム構成情報５２３が更新されたことを通知する。なお、構成情報変更通知部５３８は、アクセスノードリスト５２４を参照することで、正常に動作しているアクセスノードを判断する。
【０１０９】
次に、記憶部５２０に格納される情報について詳細に説明する。
図１１は、スライス情報テーブルのデータ構造例を示す図である。スライス情報テーブル５２１には、ディスクノードＩＤ、スライスＩＤ、状態、論理ボリュームＩＤ、セグメントＩＤ、ペアのディスクノードＩＤ、およびペアのスライスＩＤの欄が設けられている。スライス情報テーブル５２１内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す１つのレコードを構成している。スライス情報テーブル５２１の各欄に設定される情報は、図９に示したメタデータテーブル１４１の同名の欄と同種の情報である。ただし、スライス情報テーブル５２１は、ディスクノード１００のメタデータテーブル１４１とは異なり、複数のディスクノード１００，２００，３００，４００から収集したすべてのスライス情報に含まれるメタデータが登録されている。
【０１１０】
図１２は、セグメント情報テーブルのデータ構造例を示す図である。セグメント情報テーブル５２２には、論理ボリュームＩＤ、セグメントＩＤ、プライマリスライス情報、およびセカンダリスライス情報の欄が設けられている。
【０１１１】
論理ボリュームＩＤの欄には、マルチノードストレージシステムで定義された論理ボリュームの識別情報（論理ボリュームＩＤ）が設定される。セグメントＩＤの欄には、論理ボリュームに定義されたセグメントの識別情報（セグメントＩＤ）が設定される。
【０１１２】
プライマリスライス情報の欄には、対応するセグメントに割り当てられたプライマリスライスに関する情報が設定される。プライマリスライスに関する情報としては、ディスクノードＩＤとスライスＩＤとがある。プライマリスライスに関する情報としてのディスクノードＩＤは、プライマリスライスとして割り当てられたスライスを管理するディスクノードの識別情報である。プライマリスライスに関する情報としてのスライスＩＤは、プライマリスライスとして割り当てられたスライスの識別情報である。
【０１１３】
セカンダリスライス情報の欄には、対応するセグメントに割り当てられたセカンダリスライスに関する情報が設定される。セカンダリスライスに関する情報としては、ディスクノードＩＤとスライスＩＤとがある。セカンダリスライス情報としてのディスクノードＩＤは、セカンダリスライスとして割り当てられたスライスを管理するディスクノードの識別情報である。セカンダリスライス情報としてのスライスＩＤは、セカンダリスライスとして割り当てられたスライスの識別情報である。
【０１１４】
図１３は、論理ボリューム構成情報のデータ構造例を示す図である。論理ボリューム構成情報５２３には、論理ボリュームＩＤ、セグメントＩＤ、およびスライス情報の欄が設けられている。論理ボリューム構成情報５２３の各欄に設定される情報は、図９に示したメタデータテーブル１４１の同名の欄と同種の情報である。
【０１１５】
図１４は、アクセスノードリストのデータ構造例を示す図である。アクセスノードリスト５２４には、アクセスノードＩＤ、ＩＰアドレス、ポート番号、およびハートビート受信時刻の欄が設けられている。テーブル内の横方向に並べられた情報が互いに関連付けられている。互いに関連付けられた情報を含むレコードが、１つのアクセスノード情報となる。
【０１１６】
アクセスノードＩＤの欄には、運用中のアクセスノードをマルチノードストレージシステム内で一意に識別するための識別番号が設定される。ＩＰアドレスの欄には、アクセスノードのＩＰアドレスが設定される。ポート番号の欄には、アクセスノード内の論理ボリュームアクセス制御部に対応するＩＰポート番号が設定される。
【０１１７】
ハートビート受信時刻の欄には、対応するアクセスノードから出力されたハートビートの受信時刻を示す情報が設定される。
次に、復旧対象リスト５２５について説明する。復旧対象リスト５２５は、ディスクノードにおいて障害が検出されたときに、セグメント情報テーブルに基づいて生成される。ここで、ディスクノード１００が故障した場合を想定する（図６に示した状況）。この場合、ディスクノード１００が管理するスライスへアクセスできなくなる。すると、セグメント情報テーブル５２２が更新される。
【０１１８】
図１５は、障害発生時のセグメント情報テーブルの例を示す図である。ディスクノード１００に障害が発生したことにより、ディスクノード１００のスライスに関する情報が、セグメント情報テーブル５２２から削除される。その結果、プライマリスライスまたはセカンダリスライスの一方のみが割り当てられているセグメントが発生する。このような縮退セグメントが復旧対象セグメントとして選択され、復旧対象リスト５２５が生成される。
【０１１９】
図１６は、復旧対象リストのデータ構造例を示す図である。復旧対象リスト５２５には、論理ボリュームＩＤとセグメントＩＤとの欄が設けられている。論理ボリュームＩＤの欄には、復旧対象セグメントが属する論理ボリュームの識別子（論理ボリュームＩＤ）が設定される。セグメントＩＤの欄には、縮退セグメントとなり、二重化状態を復旧する必要があるセグメントの識別情報が設定される。
【０１２０】
図１５に示したセグメント情報テーブル５２２では、論理ボリュームＩＤ「ＬＶＯＬ−Ｘ」の論理ボリューム６０内の４つのセグメントが縮退セグメントとなっている。そのため、それらの４つのセグメントが図１６に示す復旧対象リスト５２５が登録されている。
【０１２１】
次に、アクセスノード６００，７００が有する機能について説明する。
図１７は、アクセスノードの機能を示すブロック図である。アクセスノード６００は、インタフェース（Ｉ／Ｆ）部６１０、記憶部６２０、および論理ボリュームアクセス制御部６３０を有する。Ｉ／Ｆ部６１０は、所定の通信プロトコルにより、ディスクノード１００，２００，３００，４００、制御ノード５００、および管理ノード５０と、ネットワーク１０を介したデータ通信を実現するための通信機能である。
【０１２２】
記憶部６２０は、各種情報を記憶する記憶機能である。例えば、ＲＡＭ５０２やＨＤＤ５０３の記憶領域の一部を、記憶部５２０として利用することができる。記憶部５２０には、論理ボリューム構成情報６２１とＩ／Ｏ処理リスト６２２とが格納されている。論理ボリューム構成情報６２１は、アクセスノード６００で使用する論理ボリュームの各セグメントに対して割り当てられたプライマリスライスに関する情報である。なお、論理ボリューム構成情報６２１のデータ構造および内容は、図１３に示した論理ボリューム構成情報５２３と同様である。
【０１２３】
Ｉ／Ｏ処理リスト６２２は、端末装置２１，２２，２３からのＩ／Ｏリクエストに応じて実行したディスクノード１００，２００，３００，４００に対するＩ／Ｏ処理の内容を示す情報である。
【０１２４】
論理ボリュームアクセス制御部６３０は、端末装置２１，２２，２３などからの論理ボリュームへのＩ／Ｏリクエストに応じて、そのＩ／Ｏリクエストで指定されたセグメントに対応するスライスにアクセスする。そのために、論理ボリュームアクセス制御部６３０は、Ｉ／Ｏリクエスト受信部６３１、構成情報参照部６３２、Ｉ／Ｏリクエスト処理部６３３、Ｉ／Ｏレスポンス送信部６３４、ハートビート送信部６３５、および構成変更通知受信部６３６を有する。
【０１２５】
Ｉ／Ｏリクエスト受信部６３１は、端末装置２１，２２，２３などからのＩ／Ｏリクエストを受信する。Ｉ／Ｏリクエスト受信部６３１は、受信したＩ／ＯリクエストをＩ／Ｏリクエスト処理部６３３に渡す。
【０１２６】
構成情報参照部６３２は、必要に応じて制御ノード５００の論理ボリューム構成情報５２３を参照する。例えば、構成情報参照部６３２は、アクセスノード６００の起動時に制御ノード５００に論理ボリューム構成情報５２３の参照要求を送信し、論理ボリューム構成情報５２３を取得する。この場合、構成情報参照部６３２は、取得した論理ボリューム構成情報５２３と同じ内容の論理ボリューム構成情報６２１を記憶部６２０に格納する。また、構成情報参照部６３２は、論理ボリューム構成情報５２３の構成が変更され旨の情報を構成変更通知受信部６３６から受け取った場合にも、制御ノード５００に論理ボリューム構成情報５２３の参照要求を送信し、論理ボリューム構成情報５２３を取得する。この場合、構成情報参照部６３２は、取得した論理ボリューム構成情報５２３と同じ内容に、論理ボリューム構成情報６２１の内容を更新する。
【０１２７】
Ｉ／Ｏリクエスト処理部６３３は、Ｉ／Ｏリクエスト受信部６３１から渡されたＩ／Ｏリクエストに基づいてＩ／Ｏ処理を実行する。具体的には、Ｉ／Ｏリクエスト処理部６３３は、論理ボリューム構成情報６２１を参照し、Ｉ／Ｏリクエストに応じたアクセス先となるディスクノードと、そのディスクノードが管理するスライスとを判断する。さらに、Ｉ／Ｏリクエスト処理部６３３は、該当するディスクノードに対して、ディスクノードのスライスを指定したスライス指定Ｉ／Ｏリクエスト（リード要求またはライト要求）を送信する。そして、Ｉ／Ｏリクエスト処理部６３３は、実行したＩ／Ｏリクエストの処理内容をＩ／Ｏ処理リスト６２２に格納する。
【０１２８】
Ｉ／Ｏレスポンス送信部６３４は、スライス指定Ｉ／Ｏリクエストを送信したディスクノードからのＩ／Ｏレスポンスを取得し、論理ボリュームへのＩ／Ｏリクエストを出力した端末装置に送信する。
【０１２９】
ハートビート送信部６３５は、定期的に制御ノード５００に対してハートビートを送信する。
構成変更通知受信部６３６は、論理ボリュームの構成情報変更通知を制御ノード５００から受信する。構成変更通知受信部６３６は、構成情報変更通知を受信すると、その旨を構成情報参照部６３２に通知する。
【０１３０】
なお、図１７には、アクセスノード６００の機能を示したが、アクセスノード７００も同様の機能を有している。
次に、Ｉ／Ｏ処理リスト６２２の詳細について説明する。
【０１３１】
図１８は、Ｉ／Ｏ処理リストのデータ構造例を示す図である。Ｉ／Ｏ処理リスト６２２には、キュー形式でＩ／Ｏ処理単位６２２ｂ，６２２ｃ，６２２ｄが格納されている。
Ｉ／Ｏ処理リスト６２２内には、キュートップ６２２ａが設けられている。キュートップ６２２ａには、処理順が最も早いＩ／Ｏ処理単位６２２ｂへのポインタ（Ｉ／Ｏ処理単位の格納領域の先頭を示す情報）が設定されている。各Ｉ／Ｏ処理単位６２２ｂ，６２２ｃ，６２２ｄは、処理順が次になるＩ／Ｏ処理単位へのポインタを有している。このように、キュートップ６２２ａから順に複数のＩ／Ｏ処理単位６２２ｂ，６２２ｃ，６２２ｄが並べられる。
【０１３２】
Ｉ／Ｏリクエスト処理部６３３は、スライス指定Ｉ／Ｏリクエストをディスクノードに送信した場合、端末装置から受信したＩ／Ｏリクエストに応じたＩ／Ｏ処理単位をＩ／Ｏ処理リスト６２２に登録する。そして、Ｉ／Ｏリクエスト処理部６３３は、最後尾のＩ／Ｏ処理単位６２２ｄに対して、新たに登録したＩ／Ｏ処理単位へのポインタを設定する。
【０１３３】
Ｉ／Ｏ処理単位６２２ｂには、処理内容、論理ボリュームＩＤ、論理ボリューム内のオフセット値、アクセスサイズ（ブロック数）、データ領域ポインタ、リクエスト発行時刻、リクエストを出したディスクノード数などの情報が含まれる。
【０１３４】
処理内容は、Ｉ／Ｏリクエストが、リード要求なのかライト要求なのかを示す情報である。論理ボリュームＩＤは、アクセス対象の論理ボリュームの識別子である。論理ボリューム内のオフセット値は、論理ボリュームの先頭のアドレスと、アクセス対象のデータの先頭のアドレスとの差分（オフセット値）である。このオフセット値に基づいて、アクセス対象のセグメントを一意に特定することができる。例えば、セグメントのサイズが１ギガバイトのときに、オフセット値が１ギガバイト未満であれば、論理ボリューム６０内の先頭のセグメント６１がアクセス対象となる。セグメントのサイズが１ギガバイトのときに、オフセット値が１ギガバイト以上、２ギガバイト未満であれば、２つ目のセグメント６２がアクセス対象となる。
【０１３５】
アクセスサイズは、アクセス対象のデータサイズである。そのデータサイズは、アクセスの最小単位であるブロックの数によって指定される。
データ領域ポインタは、Ｉ／Ｏリクエストの処理対象となるデータの格納領域の先頭のアドレスを示す情報である。Ｉ／Ｏリクエストがリード要求の場合、読み込んだデータの格納領域が、データ領域ポインタで示される。また、Ｉ／Ｏリクエストがライト要求の場合、書き込むべきデータの格納領域が、データ領域ポインタで示される。
【０１３６】
リクエスト発行時刻は、Ｉ／Ｏリクエストを受信した時刻を示す情報である。Ｉ／Ｏリクエストを出したディスクノード数は、論理ボリューム内のアドレスで指定されたＩ／Ｏリクエストに応じて、スライス指定Ｉ／Ｏリクエストを何台のディスクノードに対して送信したのかが示される。複数のセグメントにまたがったデータへのＩ／Ｏリクエストを受信した場合には、各セグメントに対応する複数のスライス指定Ｉ／Ｏリクエストが送信される。そのため、１つのＩ／Ｏリクエストから複数のディスクノードへのスライス指定Ｉ／Ｏリクエストが送信される場合がある。
【０１３７】
次に、アクセスノード６００と制御ノード５００との間で行われる処理について詳細に説明する。
図１９は、アクセスノードリストへのアクセスノード登録処理の手順を示すシーケンス図である。アクセスノード６００が起動されると、制御ノード５００へのハートビートの送信処理を実行する（ステップＳ１１）。具体的には、アクセスノード６００内のハートビート送信部６３５が制御ノード５００へハートビートを送信し、レスポンスを待つ。なお、ハートビートには、アクセスノード６００や、アクセスノード６００内の論理ボリュームアクセス制御部６３０に関する情報（アクセスノードＩＤ、ＩＰアドレス、ポート番号など）を含めることができる。
【０１３８】
制御ノード５００では、アクセスノード６００からのハートビートに応じて、アクセスノード情報をアクセスノードリストへの登録処理を行う（ステップＳ１２）。具体的には、アクセスノードハートビート受信部５３６がアクセスノード６００からのハートビートを受信する。アクセスノードハートビート受信部５３６は、ハートビートを送信したアクセスノード６００に関するアクセスノード情報を、アクセスノード管理部５３７に渡す。アクセスノード管理部５３７はアクセスノードリスト５２４を参照し、未登録のアクセスノードからのハートビートであることを確認する。そして、アクセスノード管理部５３７は、アクセスノード６００のアクセスノード情報をアクセスノードリスト５２４に登録する。この際、アクセスノード管理部５３７は、アクセスノード６００用のハートビート受信時刻を記録する。また、アクセスノードハートビート受信部５３６は、アクセスノード６００に対してハートビートへのレスポンスを返す。
【０１３９】
アクセスノード６００のハートビート送信部６３５は、制御ノード５００からのレスポンスを受信することで、１回のハートビート送信処理が終了する。ハートビート送信部６３５は、ハートビート送信処理が終了すると、時間の計測を開始する。そして、ハートビート送信部６３５は、計測時間が予め設定されたハートビート間隔に達すると、次のハートビート送信処理を行う（ステップＳ１３）。
【０１４０】
２回目のハートビートを受信した制御ノード５００では、アクセスノード６００の生存確認処理を行う（ステップＳ１４）。具体的には、制御ノード５００のアクセスノードハートビート受信部５３６は、１回目と同様に、ハートビートを受信して、そのハートビートをアクセスノード管理部５３７に渡す。アクセスノード管理部５３７は、アクセスノードリスト５２４を参照し、既に登録されたアクセスノードからのハートビートであることを確認する。そして、アクセスノード管理部５３７は、アクセスノードリスト５２４におけるアクセスノード６００のハートビート受信時刻を更新する。また、アクセスノードハートビート受信部５３６は、アクセスノード６００に対してハートビートへのレスポンスを返す。
【０１４１】
なお、アクセスノード管理部５３７は、アクセスノード６００用のハートビート受信時刻から所定のエラー検出時間を過ぎても次のハートビートが受信できなかった場合、アクセスノード６００は停止したものと判断する。その場合、アクセスノード管理部５３７は、アクセスノードリスト５２４から、アクセスノード６００に関するアクセスノード情報を削除する。
【０１４２】
このようにして、アクセスノード６００からのハートビートに基づく、制御ノード５００におけるアクセスノード６００の生存確認が行われる。以下、ハートビートを受信したときの制御ノード５００における処理を詳細に説明する。
【０１４３】
まず、アクセスノードハートビート受信部５３６の処理について説明する。
図２０は、ハートビート受信処理の手順を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
【０１４４】
［ステップＳ２１］アクセスノードハートビート受信部５３６は、アクセスノードからのハートビートを受信するのを待つ。
［ステップＳ２２］アクセスノードハートビート受信部５３６は、アクセスノードからハートビートを受信する。
【０１４５】
［ステップＳ２３］アクセスノードハートビート受信部５３６は、ハートビートを出力したアクセスノードに関するアクセスノード情報を、アクセスノード管理部５３７に通知する。
【０１４６】
［ステップＳ２４］アクセスノードハートビート受信部５３６は、ハートビートを出力したアクセスノードに対してレスポンスを返す。その後、処理がステップＳ２１に進められる。
【０１４７】
次に、アクセスノード管理部５３７におけるアクセスノードチェック処理について説明する。
図２１は、アクセスノードリストチェック処理の手順を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
【０１４８】
［ステップＳ３１］アクセスノード管理部５３７は、アクセスノードハートビート受信部５３６から、ハートビートの受信に応じたアクセスノード情報の通知があったか否かを判断する。アクセスノード情報が通知された場合、処理がステップＳ３２に進められる。アクセスノード情報の通知がなければ、処理がステップＳ３５に進められる。
【０１４９】
［ステップＳ３２］アクセスノード管理部５３７は、アクセスノードハートビート受信部５３６からアクセスノード情報を受け取ると、通知されたアクセスノード情報がアクセスノードリスト５２４に登録済みか否かを判断する。登録済みであれば、処理がステップＳ３３に進められる。登録済みでなければ、処理がステップＳ３４に進められる。
【０１５０】
［ステップＳ３３］アクセスノード管理部５３７は、通知されたアクセスノード情報がアクセスノードリスト５２４に既に登録されている場合、該当するアクセスノードのハートビート受信時刻を現在の時刻に更新する。その後、処理がステップＳ３５に進められる。
【０１５１】
［ステップＳ３４］アクセスノード管理部５３７は、通知されたアクセスノード情報がアクセスノードリスト５２４に登録されていない場合、アクセスノードリスト５２４に取得したアクセスノード情報を登録する。その際、アクセスノード管理部５３７は、新たに登録したアクセスノード情報に対し、現在の時刻をハートビート受信時刻として追加する。
【０１５２】
［ステップＳ３５］アクセスノード管理部５３７は、一定時間以上更新されていないアクセスノード情報があるか否かを判断する。具体的には、アクセスノード管理部５３７は、アクセスノードリスト５２４内の各アクセスノード情報に付与されているハートビート受信時刻と現在の時刻とを比較する。その時刻の差が、予め設定されたハートビート途絶検出の閾値を超えていた場合、アクセスノード管理部５３７は、該当するアクセスノード情報について一定時間以上更新されていないと判断する。該当するアクセスノード情報があれば、処理がステップＳ３６に進められる。該当するアクセスノード情報がなければ、処理がステップＳ３１に進められる。
【０１５３】
［ステップＳ３６］アクセスノード管理部５３７は、一定時間以上更新されていないアクセスノード情報がある場合、該当するアクセスノード情報をアクセスノードリスト５２４から削除する。その後、処理がステップＳ３１に進められる。
【０１５４】
このように、アクセスノードからハートビートを出力することで、制御ノード５００において運用中のアクセセスノードを認識することができる。すなわち、アクセスノードリスト５２４の内容をリアルタイムに更新することができる。そして、制御ノード５００では、論理ボリューム構成情報５２３の内容が更新された場合、アクセスノードリスト５２４を参照して、構成情報が更新された旨の通知を、運用中のアクセスノードに送信できる。
【０１５５】
図２２は、論理ボリューム構成情報変更時の処理手順を示すシーケンス図である。図２２の例では、ディスクノード１００に障害が発生した場合における、論理ボリューム６０（図４参照）のセグメントＩＤ「１」の二重化状態の復旧処理が示されている。
【０１５６】
ディスクノード１００のハートビート送信部１５２は、正常に動作している間、制御ノード５００に対して定期的にハートビートを送信する（ステップＳ４１）。制御ノード５００のディスクノード監視部５３１は、ディスクノード１００からハートビートを受信することで、ディスクノード１００が正常に動作していることを認識する（ステップＳ４２）。
【０１５７】
ここで、ディスクノード１００に障害が発生し、ハートビートが途絶したものとする。この場合、制御ノードの５００のディスクノード監視部５３１は、ディスクノード１００からのハートビートが所定の期間以上途絶したことにより、ディスクノード１００の障害を検知する（ステップＳ４３）。すると制御ノード５００のスライス情報収集部５３２が、正常に動作しているディスクノード２００，３００，４００から最新のスライス情報を収集し、スライス情報テーブル５２１を再構成する。次に二重化制御部５３４が、再構成されたスライス情報テーブル５２１に基づいてセグメント情報テーブル５２２を更新する。更新後のセグメント情報テーブル５２２の内容は、図１５に示した通りである。
【０１５８】
二重化制御部５３４は、セグメント情報テーブル５２２に基づいて縮退セグメントを判断する。ここで、セグメントＩＤ「１」のセグメントに着目すると、プライマリスライスが割り当てられていない。そこで、二重化制御部５３４は、セグメントＩＤ「１」のセグメントの現在のセカンダリスライスのプライマリ化と、新たなセカンダリスライスの割り当てを決定する。ここでは、図６に示したように、ディスクノード４００のスライスＩＤ「２」のスライスをセカンダリスライスとして割り当てるものとする。
【０１５９】
二重化制御部５３４は、セグメントへのスライス割当の変更に伴い、セグメントＩＤ「１」のセグメントのセカンダリスライスを管理するディスクノード３００に対して、該当スライスのプライマリ化を指示する（ステップＳ４４）。この際、ディスクノード３００へは、セグメントＩＤ「１」のセグメントのセカンダリスライスの情報も通知される。例えば二重化制御部５３４は、プライマリ化対象のスライスのプライマリ化後のメタデータをディスクノード３００に送信することで、プライマリ化の指示とセカンダリスライスの情報の通知とを行うことができる。送信されるメタデータのデータ構造は、図９に示したメタデータと同様である。
【０１６０】
また、二重化制御部５３４は、ディスクノード４００に対して、ディスクノード４００内のスライスＩＤ「２」のスライスを、セグメントＩＤ「１」のセグメントのセカンダリスライスとして割り当てることを指示する（ステップＳ４５）。この際、ディスクノード４００へは、セグメントＩＤ「１」のセグメントのプライマリスライスの情報も通知される。例えば二重化制御部５３４は、新規割り当て対象のスライスの割り当て後のメタデータをディスクノード４００に送信することで、スライスの割り当て指示とプライマリスライスの情報の通知とを行うことができる。送信されるメタデータのデータ構造は，図９に示したメタデータと同様である。
【０１６１】
ディスクノード３００は、指定されたスライスのプライマリ化処理を行う（ステップＳ４６）。具体的には、ディスクノード３００は、内部で保持するスライス情報を更新し、指定されたスライス（スライスＩＤ「２」）を、セグメントＩＤ「１」のセグメントにプライマリスライスとして割り当てたことを登録する。また、ディスクノード３００は、自己の管理するスライスＩＤ「２」のスライスとスライスペアを組むスライスが、ディスクノード４００のスライスＩＤ「２」のスライスであることをスライス情報として登録する。そして、ディスクノード３００は、スライス情報の更新完了を制御ノード５００に応答する。
【０１６２】
ディスクノード４００は、指定されたスライスのセグメントへの割り当て処理を行う（ステップＳ４７）。具体的には、ディスクノード４００は、内部で保持するスライス情報を更新し、指定されたスライス（スライスＩＤ「２」）を、セグメントＩＤ「１」のセグメントにセカンダリスライスとして割り当てたことを登録する。また、ディスクノード４００は、自己の管理するスライスＩＤ「２」のスライスとスライスペアを組むスライスが、ディスクノード３００のスライスＩＤ「２」のスライスであることをスライス情報として登録する。そして、ディスクノード４００は、スライス情報の更新完了を制御ノード５００に応答する。
【０１６３】
その後、ディスクノード３００は、プライマリ化したスライス内のデータを、スライスペアを組むスライスを管理するディスクノード４００に送信する（ステップＳ４８）。ディスクノード４００では、ディスクノード３００から送られたデータを、新たにセカンダリスライスとして割り当てられたスライスに格納する（ステップＳ４９）。これにより、縮退セグメントのデータがコピーされ、二重化状態が復旧する。
【０１６４】
制御ノード５００では、二重化制御部５３４によってスライス情報テーブル５２１、セグメント情報テーブル５２２が更新される。また、論理ボリューム構成情報管理部５３５によって、論理ボリューム構成情報５２３が更新される。すると、構成情報変更通知部５３８が、アクセスノードリスト５２４を参照し、運用中のアクセスノード６００に対して構成情報変更通知を送信する（ステップＳ５０）。
【０１６５】
なお、図２２ではステップＳ５０の処理をステップＳ４５の後に行っているが、ステップＳ４４が終わったらステップＳ４５の処理を待たずにステップＳ５０からステップＳ５２までの処理を行ってもよい。これにより、構成情報変更通知を迅速に行うことができる。なお、ステップＳ４５の処理を待たなくてよいのは、アクセスノードが持つ論理ボリューム構成情報はプライマリスライスだけの情報でよく、セカンダリスライスの情報が不要だからである。
【０１６６】
アクセスノード６００では、構成情報変更通知を構成変更通知受信部が受信し、論理ボリューム構成情報更新処理が行われる（ステップＳ５１）。論理ボリューム構成情報更新処理では、まず構成情報参照部６３２が、制御ノード５００へ構成情報参照要求を送信する。制御ノード５００では、論理ボリューム構成情報管理部５３５が、構成情報参照要求に応じて、論理ボリューム構成情報５２３をアクセスノード６００に送信する（ステップＳ５２）。アクセスノード６００では、制御ノード５００から送られた論理ボリューム構成情報５２３を構成情報参照部６３２が受信し、自己の管理する論理ボリューム構成情報６２１を更新する。
【０１６７】
その後、アクセスノード６００で、論理ボリューム識別子が「ＬＶＯＬ−Ｘ」の論理ボリューム６０のセグメントＩＤ「１」のセグメントへのＩ／Ｏリクエストが発生したものとする。すると、アクセスノード６００においてＩ／Ｏ処理が実行される（ステップＳ５３）。例えば、端末装置２１からＩ／Ｏリクエストが出力されると、アクセスノード６００のＩ／Ｏリクエスト受信部６３１がそのＩ／Ｏリクエストが受信する。次に、Ｉ／Ｏリクエスト処理部６３３が、論理ボリューム構成情報６２１を参照し、アクセス対象のセグメントに対してプライマリスライスとして割り当てられたスライスを確認する。そして、Ｉ／Ｏリクエスト処理部６３３は、該当するスライスを管理するディスクノード３００へスライス指定Ｉ／Ｏリクエストを送信する。すると、ディスクノード３００においてスライス指定Ｉ／Ｏリクエストに応じたデータアクセスが行われ、Ｉ／Ｏレスポンスがアクセスノードに送信される（ステップＳ５４）。
【０１６８】
次に、制御ノード５００における構成情報変更通知処理と、アクセスノード６００における論理ボリューム構成情報更新処理との処理手順について詳細に説明する。
図２３は、制御ノードにおける構成情報変更通知処理の手順を示すフローチャートである。以下、図２３に示す処理をステップ番号に沿って説明する。
【０１６９】
［ステップＳ６１］制御ノード５００の構成情報変更通知部５３８は、論理ボリューム構成情報５２３が更新されたか否かを判断する。論理ボリューム構成情報５２３が更新された場合、処理がステップＳ６２に進められる。論理ボリューム構成情報５２３が更新されていない場合、ステップＳ６１の処理が繰り返される。
【０１７０】
［ステップＳ６２］構成情報変更通知部５３８は、運用中のアクセスノードに、構成情報変更通知を送信する。具体的には、構成情報変更通知部５３８は、アクセスノードリスト５２４を参照し、アクセスノードリスト５２４に登録されているアクセスノード情報を取得する。そして、構成情報変更通知部５３８は、取得したアクセスノード情報に示されるＩＰアドレスおよびポート番号を宛先に指定し、構成情報変更通知を送信する。その後、処理がステップＳ６１に進められる。
【０１７１】
図２４は、アクセスノードにおける論理ボリューム構成情報更新処理の手順を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。
［ステップＳ７１］アクセスノード６００の構成変更通知受信部６３６は、構成情報更新通知を受信したか否かを判断する。構成情報変更通知を受信した場合、処理がステップＳ７２に進められる。構成情報変更通知を受信していなければ、ステップＳ７１の処理が繰り返される。
【０１７２】
［ステップＳ７２］構成情報参照部６３２は、制御ノード５００へ構成情報参照要求を送信する。
［ステップＳ７３］構成情報参照部６３２は、制御ノード５００から送られた論理ボリューム構成情報５２３を受信する。
【０１７３】
［ステップＳ７４］構成情報参照部６３２は、受信した論理ボリューム構成情報５２３と同じ内容に、論理ボリューム構成情報６２１を更新する。これにより、アクセスノード６００の論理ボリューム構成情報６２１が最新の状態に更新される。その後、処理がステップＳ７１に進められる。
【０１７４】
以上のようにして、スライスの割り当てが変更されたセグメントへのＩ／Ｏリクエストの発生を待たずに、アクセスノード６００，７００内の論理ボリューム構成情報を更新することが可能となる。その結果、リカバリ処理などによって論理ボリュームに対するスライスの割り当てに変更が生じた場合でも、その後の割り当てが変更されたセグメントへのＩ／Ｏリクエストに対して迅速に応答することが可能となる。
【０１７５】
また、ディスクノードの障害発生時のように、多数のセグメントが同時に縮退セグメントとなった場合であっても、アクセスノード６００，７００内の論理ボリューム構成情報がすべてのセグメントについて最新の状態に更新される。そのため、各セグメントへのＩ／Ｏリクエストが発生するごとに該当セグメントの割り当て関係を示す情報を更新する場合に比べ、メッセージの量を削減することができる。その結果、マルチノードストレージシステム全体での処理効率を向上させることができる。すなわち、論理ボリューム構成情報を変更した場合にネットワーク１０を介して送受信されるメッセージの数が減ることで、Ｉ／Ｏリクエストに応じた処理を迅速に処理できる。その結果、ユーザからのデータアクセスに対する応答時間が短縮される。
【０１７６】
また、アクセスノード６００，７００からのハートビートを監視し、アクセスノードリストを自動更新するようにしたため、システム管理者によるアクセスノードリストの編集の手間が省ける。また、マルチノードストレージシステムにアクセスノードが新たに追加された場合、そのアクセスノードの情報がアクセスノードリストに自動で追加されることで、アクセスノードに対する論理ボリューム構成情報の送信漏れを防止できる。さらに、アクセスノードの動作が停止した場合、そのアクセスノードの情報がアクセスノードリストから自動で削除されることで、無駄な論理ボリューム構成情報の送信を防止できる。その結果、システム全体の運用効率が向上する。
【０１７７】
［第２の実施の形態］
次に、第２の実施の形態について説明する。第２の実施の形態は、プッシュ型の論理ボリューム情報更新処理を行うものである。ここでプッシュ型とは、アクセスノードからの参照要求を待たずに、制御ノードからアクセスノードに論理ボリューム構成情報を送信する通信方式である。
【０１７８】
なお、第２の実施の形態におけるマルチノードストレージシステムの構成は、図２に示す第１の実施の形態の構成と同様である。また、第２の実施の形態に係るディスクノード、制御ノード、およびアクセスノードが有する要素は、図８、図１０および図１７に示した第１の実施の形態の各ノードと同様である。そこで、図８、図１０および図１７に示した各要素に付した符号を用いて、第２の実施の形態における各要素の機能における第１の実施の形態との相違点を説明する。
【０１７９】
まず、プッシュ型の論理ボリューム情報更新処理を行うために、どのアクセスノードがどの論理ボリュームを使用しているのかを制御ノード５００で管理する。そこで、第２の実施の形態では、アクセスノードリストが拡張される。
【０１８０】
図２５は、第２の実施の形態におけるアクセスノードリストのデータ構造例を示す図である。アクセスノードリスト５２４ａには、アクセスノードＩＤ、ＩＰアドレス、ポート番号、ハートビート受信時刻の欄に加え、論理ボリュームＩＤの欄が設けられている。
【０１８１】
論理ボリュームＩＤの欄には、各アクセスノードで使用している論理ボリュームの識別子（論理ボリュームＩＤ）が設定される。各アクセスノードが使用する論理ボリュームは、例えば各アクセスノードがハートビートと共に通知することができる。その場合、アクセスノードのハートビート送信部６３５は、自己の使用する論理ボリュームの論理ボリュームＩＤを含むアクセスノード情報をハートビートに付与し、定期的に制御ノード５００に送信する。制御ノード５００では、アクセスノードハートビート受信部５３６がそのハートビートを受信する。そして、アクセスノード管理部５３７が、ハートビートに付与されたアクセスノード情報に基づいて、アクセスノードリスト５２４ａを更新する。
【０１８２】
なお第１の実施の形態では、更新後の論理ボリューム構成情報全体をアクセスノードに送信しているが、第２の実施の形態ではプライマリスライスが変更されたセグメントの情報のみを送信することで通信量を削減するものとする。プライマリスライスの変更の有無は、例えば、復旧対象リスト５２５ａで管理することができる。
【０１８３】
図２６は、第２の実施の形態における復旧対象リストの例を示す図である。第２の実施の形態における復旧対象リスト５２５ａには、論理ボリュームＩＤ、セグメントＩＤの欄に加え、プライマリ更新フラグの欄が設けられている。
【０１８４】
プライマリ更新フラグの欄には、プライマリスライスの変更の有無を示すフラグ（プライマリ更新フラグ）が設定される。プライマリ更新フラグが「１」であれば、プライマリスライスが変更されることを意味する。プライマリ更新フラグが「０」であれば、プライマリスライスが変更されないことを意味する。
【０１８５】
プライマリ更新フラグは、復旧対象抽出部５３３が復旧対象リスト５２５ａを作成する際に設定される。具体的には、復旧対象抽出部５３３は、セグメント情報テーブル５２２を参照して縮退セグメントを検出する際に、プライマリスライスが欠けているのか、セカンダリスライスが欠けているのかを判断する。プライマリスライスが欠けている場合、復旧対象抽出部５３３は、復旧対象リスト５２５ａ内の該当するセグメントに対して、プライマリ更新フラグ「１」を設定する。
【０１８６】
次に、プッシュ型で論理ボリューム構成情報を送信する場合の構成情報変更通知部５３８の処理について説明する。
図２７は、第２の実施の形態の論理ボリューム構成情報送信処理を示す図である。以下、図２７に示す処理をステップ番号に沿って説明する。
【０１８７】
［ステップＳ８１］構成情報変更通知部５３８は、論理ボリューム構成情報５２３が更新されたか否かを判断する。論理ボリューム構成情報が更新された場合、処理がステップＳ８２に進められる。論理ボリューム構成情報が更新されていない場合、ステップＳ８１の処理が繰り返される。
【０１８８】
［ステップＳ８２］構成情報変更通知部５３８は、復旧対象リスト５２５ａを参照し、プライマリスライスが変更されたセグメントを判断する。次に、構成情報変更通知部５３８は、論理ボリューム構成情報５２３から、プライマリスライスが更新されたセグメントに関する情報のみを抽出し、プライマリ更新セグメント情報を生成する。さらに、構成情報変更通知部５３８は、アクセスノードリスト５２４ａを参照し、構成が変更された論理ボリュームを使用するアクセスノードを判断する。例えば、図２５のアクセスノードリスト５２４ａでは、論理ボリュームＩＤ「ＬＶＯＬ−Ｘ」の論理ボリューム情報が変更された場合、該当する論理ボリュームを使用しているのは、アクセスノードＩＤ「ＡＰ＃１」のアクセスノード６００である。そして、構成情報変更通知部５３８は、該当するアクセスノードに対して、プライマリ更新セグメント情報を含む構成情報変更通知を送信する。
【０１８９】
図２８は、論理ボリューム構成情報のプライマリ更新セグメント情報を示す図である。図２８には、図６に示したようなリカバリ処理により論理ボリューム構成情報が更新された場合におけるプライマリ更新セグメント情報５２３ａを示している。このようなプライマリ更新セグメント情報５２３ａがプッシュ型でアクセスノード６００に通知される。
【０１９０】
プライマリ更新セグメント情報５２３ａを受信したアクセスノード６００では、論理ボリューム更新処理が行われる。
図２９は、第２の実施の形態における論理ボリューム更新処理の手順を示すフローチャートである。以下、図２９に示す処理をステップ番号に沿って説明する。
【０１９１】
［ステップＳ９１］アクセスノード６００の構成変更通知受信部６３６は、制御ノード５００から構成情報変更通知を受信したか否かを判断する。構成情報変更通知を受信した場合、処理がステップＳ９２に進められる。構成情報変更通知を受信していなければ、ステップＳ９１の処理が繰り返される。
【０１９２】
［ステップＳ９２］構成変更通知受信部６３６は、受信した構成情報変更通知に含まれるプライマリ更新セグメント情報５２３ａに基づいて、アクセスノード６００で保持する論理ボリューム構成情報６２１の内容を更新する。すなわち、構成変更通知受信部６３６は、プライマリ更新セグメント情報５２３ａで示されているセグメントに対応するスライス情報を、プライマリ更新セグメント情報５２３ａで示されているスライス情報に更新する。その後、処理がステップＳ９１に進められる。
【０１９３】
このようにして、プッシュ型の通信により、アクセスノード６００の論理ボリューム構成情報６２１を適時更新することができる。しかも、変更があった内容のみを送信することにより、通信データ量を削減できる。さらに、各アクセスノードが使用している論理ボリュームの情報を制御ノード５００で管理しているため、構成が変更された論理ボリュームを使用しているアクセスノードに対してのみ論理ボリューム構成情報を送信できる。その結果、不要な通信が発生せず、ネットワーク１０上の通信量を削減できる。
【０１９４】
［その他の応用例］
上記の説明では論理ボリュームの構成が変更される例として、ディスクノードが故障した場合を示したが、それ以外にも論理ボリュームの構成が変更される場合がある。例えば、メンテナンスのためにディスクノードを停止させる場合、ディスクノードが管理しているデータの退避が必要となる。そこで、停止前にそのディスクノードのスライスを割り当てていたセグメントへのスライスの再割り当てが行われる。また、論理ボリュームからの複数のディスクノードへのアクセスの均等化を図るために、スライスの再割り当てを行う場合もある。これらの場合にも、上記第１、第２の実施の形態を用いてアクセスノード６００，７００内の論理ボリューム構成情報を効率よく更新することができる。
【０１９５】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ディスクノード１００，２００，３００，４００、制御ノード５００、およびアクセスノード６００，７００それぞれが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０１９６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１９７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１９８】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１９９】
［実施の形態に係る主な技術的特徴］
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）  仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置内の実記憶領域との対応関係を定義した論理ボリューム構成情報に基づき、前記仮想記憶領域内のデータを指定したアクセス要求に応じて前記実記憶領域にアクセスを行うアクセスノードに対し、前記論理ボリューム構成情報をネットワーク経由で提供する処理をコンピュータに実行させる論理ボリューム構成情報提供プログラムであって、
前記コンピュータに、
前記論理ボリューム構成情報における前記論理ボリュームの前記仮想記憶領域と前記ストレージ装置内の前記実記憶領域との対応関係を変更し、
前記仮想記憶領域と前記実記憶領域との対応関係が変更されると、前記アクセスノードの識別情報が登録されたアクセスノードリストを記憶するアクセスノードリスト記憶手段を参照し、前記アクセスノードリストで示される前記アクセスノードに対して、前記実記憶領域との対応関係が変更された前記仮想記憶領域に関する変更後の対応関係を示す更新情報を、前記ネットワーク経由で送信する、
処理を実行させることを特徴とする論理ボリューム構成情報提供プログラム。
【０２００】
（付記２）  前記コンピュータに、さらに、
前記アクセスノードリストに登録されていない前記アクセスノードからのハートビートを受信した場合、ハートビートを送信した前記アクセスノードの識別情報を前記アクセスノードリストに登録する処理を実行させることを特徴とする付記１記載の論理ボリューム構成情報提供プログラム。
【０２０１】
（付記３）  前記コンピュータに、さらに、
前記アクセスノードリストに登録されている前記アクセスノードからのハートビートが所定期間以上途絶えた場合、ハートビートが途絶えた前記アクセスノードの識別情報を前記アクセスノードリストから削除する処理を実行させることを特徴とする付記２記載の論理ボリューム構成情報提供プログラム。
【０２０２】
（付記４）  前記仮想記憶領域と前記実記憶領域との対応関係が変更された場合、前記アクセスノードリストで示される前記アクセスノードに対して構成情報変更通知を送信し、前記アクセスノードから前記論理ボリューム構成情報の参照要求を受け取ったときに、前記参照要求を出力した前記アクセスノードに前記更新情報を送信することを特徴とする付記１記載の論理ボリューム構成情報提供プログラム。
【０２０３】
（付記５）  前記アクセスノードリストには、前記アクセスノードが使用する論理ボリュームの識別情報が設定されており、
前記更新情報を送信する場合、前記アクセスノードリストを参照し、前記仮想記憶領域と前記実記憶領域との対応関係が変更された前記論理ボリュームを使用する前記アクセスノードに対してのみ前記更新情報を送信することを特徴とする付記１記載の論理ボリューム構成情報提供プログラム。
【０２０４】
（付記６）  前記論理ボリューム構成情報において、共通の前記仮想記憶領域に対して、前記アクセスノードからのアクセス対象となるプライマリ実記憶領域と、前記プライマリ実記憶領域に格納されたデータのコピーを格納するセカンダリ実記憶領域とが対応付けられている場合、
前記コンピュータに、さらに、
前記論理ボリューム構成情報から変更後の前記仮想記憶領域と前記プライマリ実記憶領域の対応関係を抽出して前記更新情報を生成する処理を実行させることを特徴とする付記１記載の論理ボリューム構成情報提供プログラム。
【０２０５】
（付記７）  前記仮想記憶領域と前記実記憶領域との対応関係を変更した場合、
前記コンピュータに、さらに、
論理ボリューム構成情報記憶手段に格納された前記論理ボリューム構成情報を変更内容に応じて更新し、
前記論理ボリューム構成情報記憶手段から、前記仮想記憶領域と前記実記憶領域との変更された対応関係のみを抽出して前記更新情報を生成する処理を実行させることを特徴とする付記１記載の論理ボリューム構成情報提供プログラム。
【０２０６】
（付記８）  仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置内の実記憶領域との対応関係を定義した論理ボリューム構成情報に基づき、前記仮想記憶領域内のデータを指定したアクセス要求に応じて前記実記憶領域にアクセスを行うアクセスノードに対し、前記論理ボリューム構成情報をネットワーク経由で提供する処理をコンピュータで実行する論理ボリューム構成情報提供方法であって、
前記コンピュータが、
前記論理ボリューム構成情報における前記論理ボリュームの前記仮想記憶領域と前記ストレージ装置内の前記実記憶領域との対応関係を変更し、
前記仮想記憶領域と前記実記憶領域との対応関係が変更されると、前記アクセスノードの識別情報が登録されたアクセスノードリストを記憶するアクセスノードリスト記憶手段を参照し、前記アクセスノードリストで示される前記アクセスノードに対して、前記実記憶領域との対応関係が変更された前記仮想記憶領域に関する変更後の対応関係を示す更新情報を、前記ネットワーク経由で送信する、
ことを特徴とする論理ボリューム構成情報提供方法。
【０２０７】
（付記９）  仮想的に定義された論理ボリューム内の仮想記憶領域とストレージ装置内の実記憶領域との対応関係を定義した論理ボリューム構成情報に基づき、前記仮想記憶領域内のデータを指定したアクセス要求に応じて前記実記憶領域にアクセスを行うアクセスノードに対し、前記論理ボリューム構成情報をネットワーク経由で提供する処理を実行する論理ボリューム構成情報提供装置であって、
前記論理ボリューム構成情報における前記論理ボリュームの前記仮想記憶領域と前記ストレージ装置内の前記実記憶領域との対応関係を変更する論理ボリューム構成情報更新手段と、
前記仮想記憶領域と前記実記憶領域との対応関係が変更されると、前記アクセスノードの識別情報が登録されたアクセスノードリストを記憶するアクセスノードリスト記憶手段を参照し、前記アクセスノードリストで示される前記アクセスノードに対して、前記実記憶領域との対応関係が変更された前記仮想記憶領域に関する変更後の対応関係を示す更新情報を、前記ネットワーク経由で送信する論理ボリューム構成情報送信手段と、
を有することを特徴とする論理ボリューム構成情報提供装置。
【符号の説明】
【０２０８】
１  論理ボリューム構成情報提供装置
１ａ  論理ボリューム構成情報記憶手段
１ｂ  アクセスノードリスト記憶手段
１ｃ  論理ボリューム構成情報更新手段
１ｄ  論理ボリューム構成情報送信手段
２，３  アクセスノード
４〜７  ディスクノード
４ａ，５ａ，６ａ，７ａ  ストレージ装置
【図１】
2010205029.tif 000003
【図２】
2010205029.tif 000004
【図３】
2010205029.tif 000005
【図４】
2010205029.tif 000006
【図５】
2010205029.tif 000007
【図６】
2010205029.tif 000008
【図７】
2010205029.tif 000009
【図８】
2010205029.tif 000010
【図９】
2010205029.tif 000011
【図１０】
2010205029.tif 000012
【図１１】
2010205029.tif 000013
【図１２】
2010205029.tif 000014
【図１３】
2010205029.tif 000015
【図１４】
2010205029.tif 000016
【図１５】
2010205029.tif 000017
【図１６】
2010205029.tif 000018
【図１７】
2010205029.tif 000019
【図１８】
2010205029.tif 000020
【図１９】
2010205029.tif 000021
【図２０】
2010205029.tif 000022
【図２１】
2010205029.tif 000023
【図２２】
2010205029.tif 000024
【図２３】
2010205029.tif 000025
【図２４】
2010205029.tif 000026
【図２５】
2010205029.tif 000027
【図２６】
2010205029.tif 000028
【図２７】
2010205029.tif 000029
【図２８】
2010205029.tif 000030
【図２９】
2010205029.tif 000031