説明

データ管理プログラム、ストレージシステム、およびデータ管理方法

【課題】データ移行時のコンピュータの処理負荷を軽減する。
【解決手段】ノード5の対応付け手段5aは、ストレージ装置8内の、仮想ディスク1の記憶容量に相当する記憶領域を移行先記憶領域8aとする。そして対応付け手段5aは、移行先記憶領域8aを仮想ディスク1内の記憶領域に対応付ける。例えば対応付け手段5aは、仮想ディスク1内の連続する記憶領域を、移行先記憶領域8a内の連続する記憶領域に対応付ける。ノード5〜7のコピー手段5b,6a,7aは、自己が管理している仮想ディスク1のデータをストレージ装置2〜4から取り出し、そのデータの仮想ディスク1内での位置に対応する移行先記憶領域8a内の位置へコピーする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置に格納されたデータを管理するデータ管理プログラム、ストレージシステム、およびデータ管理方法に関する。
【背景技術】
【0002】
大規模なコンピュータネットワークではデータの信頼性を確保するため、データを複数のストレージ装置に多重化して格納する場合がある。データを多重化させる手法の1つとして、データをネットワーク上の複数のノード(ディスクノード)それぞれに接続されたストレージ装置に、多重化させたデータを分散格納する方法がある。このように、ネットワーク上の複数のディスクノードでデータを分散管理するシステムを、マルチノードストレージシステムと呼ぶ。
【0003】
マルチノードストレージシステムでは、アクセスを行うノード(アクセスノード)内に仮想ディスクを定義し、仮想ディスクを介してデータの入出力を行う。仮想ディスク内の記憶領域は複数のセグメントに分割され、各セグメントがストレージ装置の複数の記憶領域を対応付けられる。アプリケーションが仮想ディスクのセグメントを指定してデータの書き込みを行うと、書き込み対象のセグメントに対応付けられた複数のストレージ装置にデータが書き込まれる。このようにデータを多重化することで、データの信頼性を高めることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2004/104845号
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、従来の技術では、マルチノードストレージシステムの仮想ディスク内のデータを他のシステムに移行する場合、仮想ディスク内のデータのコピー処理が1台のコンピュータで実行され、そのコンピュータに負荷がかかりすぎていた。
【0006】
例えば、既存の仮想ディスクのアクセスを止められない場合、以下の手順でデータが移行される。
[処理1]仮想ディスクのスナップショットを、仮想ディスクにアクセス可能なコンピュータが作成する。
[処理2]仮想ディスクにアクセス可能なコンピュータが、作成したスナップショットを他システムに接続されるストレージ装置にコピーする。
[処理3]仮想ディスクにアクセス可能なコンピュータが、仮想ディスクへのアクセスを停止して、処理2のコピー後に発生した仮想ディスク内のデータ更新内容を他システムのストレージ装置に反映する。
[処理4]他システム内のコンピュータが、移行先のストレージ装置へのアクセスを開始する。
【0007】
このような手順で仮想ディスク内のデータを他のシステムのストレージ装置に移行した場合、処理1から処理3までを1台のコンピュータが行うこととなり、そのコンピュータの処理負荷が過大となる。
【0008】
1つの側面では、データ移行時のコンピュータの処理負荷を軽減したデータ管理プログラム、ストレージシステム、およびデータ管理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの案としては、データ管理プログラムは、ネットワークを介して接続された複数のノードそれぞれが有する第1のストレージ装置にデータが分散して格納されている仮想ディスクに属するデータを、該複数のノードの1つとして用いられるコンピュータに管理させる。すなわち、データ管理プログラムは、コンピュータに以下の処理を実行させる。
【0010】
コンピュータは、第2のストレージ装置内の、仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を仮想ディスク内の記憶領域に対応付ける。そして、コンピュータは、コンピュータが管理している仮想ディスクのデータを、該データの仮想ディスク内での位置に対応する移行先記憶領域内の位置へコピーする。
【0011】
また、1つの案として、ストレージシステムは、ネットワークを介して接続された複数のノードを有し、複数のノードそれぞれが有する第1のストレージ装置に、仮想ディスク内のデータを分散して格納する。複数のノードのうちの少なくとも1つのノードは、第2のストレージ装置内の、仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を仮想ディスク内の記憶領域に対応付ける。そして、複数のノードは、それぞれ自己が管理している仮想ディスクのデータを、該データの仮想ディスク内での位置に対応する移行先記憶領域内の位置へコピーする。
【0012】
また、1つの案として、データ管理方法は、ネットワークを介して接続された複数のノードそれぞれが有する第1のストレージ装置にデータが分散して格納されている仮想ディスクに属するデータを、該複数のノードの1つとして用いられるコンピュータに管理させる。
【0013】
このデータ管理方法では、コンピュータが、第2のストレージ装置内の、仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を仮想ディスク内の記憶領域に対応付ける。さらにコンピュータは、コンピュータが管理している仮想ディスクのデータを、該データの仮想ディスク内での位置に対応する移行先記憶領域内の位置へコピーする。
【発明の効果】
【0014】
データ移行時のコンピュータの処理負荷が軽減される。
【図面の簡単な説明】
【0015】
【図1】第1の実施の形態の機能を示すブロック図である。
【図2】第2の実施の形態のマルチノードストレージシステム構成例を示す図である。
【図3】ディスクノードのハードウェア構成例を示す図である。
【図4】仮想ディスクのデータ構造を示す図である。
【図5】第2の実施の形態に係るマルチノードストレージシステムの各装置の機能を示すブロック図である。
【図6】ストレージ装置のデータ構造例を示す図である。
【図7】メタデータ記憶部のデータ構造の一例を示す図である。
【図8】状態フラグで示される状態の種類を示す図である。
【図9】仮想ディスクメタデータ記憶部のデータ構造の一例を示す図である。
【図10】データ移行に利用される各ノードの機能を示す図である。
【図11】第2の実施の形態におけるデータ移行処理の手順を示すシーケンス図である。
【図12】スライスコピー処理の手順を示すシーケンス図である。
【図13】スライスコピー処理によるメタデータの内容の推移の一例を示す図である。
【図14】セカンダリ切り離し処理手順を示すシーケンス図である。
【図15】セカンダリ切り離し処理で更新されたメタデータの例を示す図である。
【図16】データ移行後のメタデータ用ディスク内のメタデータの例を示す図である。
【図17】ノード故障時の制御ノードにおける処理手順を示すフローチャートである。
【図18】シングルプライマリ化処理の手順を示すフローチャートである。
【図19】再2重化処理の手順を示すフローチャートである。
【図20】セグメントに割り当てられたスライスのメタデータの例を示す図である。
【図21】シングルプライマリへの変更例を示す図である。
【図22】異常セグメントにリザーブスライス割り当て後のメタデータの例を示す図である。
【図23】再2重化完了後のメタデータの例を示す図である。
【図24】第3の実施の形態のマルチノードストレージシステムの構成例を示す図である。
【図25】第3の実施の形態に係るマルチノードストレージシステムの各装置の機能を示すブロック図である。
【図26】データ移行に利用される各ノードの機能を示す図である。
【図27】第3の実施の形態におけるデータ移行処理の手順を示すシーケンス図である。
【図28】ディスクノードへの担当領域の通知例を示す図である。
【図29】各ディスクノードが管理するスライスとメタデータ用ディスクとを示す図である。
【図30】各メタデータ用ディスク内に格納されたメタデータの例を示す図である。
【図31】第4の実施の形態のマルチノードストレージシステムの構成例を示す図である。
【発明を実施するための形態】
【0016】
以下、本実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態の機能を示すブロック図である。図1に示すストレージシステムは、ネットワークを介して接続された複数のノード5〜7を有する。複数のノード5〜7は、それぞれストレージ装置2〜4を有する。このストレージ装置2〜4に、仮想ディスク1のデータが分散して格納されている。
【0017】
このようなストレージシステムにおいて、仮想ディスク1のデータを、ストレージ装置8に移行させる場合がある。例えば、ストレージシステムで利用していた仮想ディスク1を、SAN(Storage Area Network)などの他のシステムに移行する場合である。なお、ストレージ装置8は、仮想ディスク1のデータを格納するストレージ装置2〜4とは別に設けられている。
【0018】
このように仮想ディスク1のデータをストレージ装置8に移行するために、ノード5は、対応付け手段5aとコピー手段5bとを有する。またノード6は、コピー手段6aを有する。さらにノード7は、コピー手段7aを有する。
【0019】
ノード5の対応付け手段5aは、ストレージ装置8内の、仮想ディスク1の記憶容量に相当する記憶領域を移行先記憶領域8aとする。そして対応付け手段5aは、移行先記憶領域8aを仮想ディスク1内の記憶領域に対応付ける。例えば対応付け手段5aは、仮想ディスク1内の連続する記憶領域を、移行先記憶領域8a内の連続する記憶領域に対応付ける。
【0020】
ノード5のコピー手段5bは、ノード5が管理している仮想ディスク1のデータをストレージ装置2から取り出し、そのデータの仮想ディスク1内での位置に対応する移行先記憶領域8a内の位置へコピーする。
【0021】
またノード6のコピー手段6aは、ノード6が管理している仮想ディスク1のデータをストレージ装置3から取り出し、そのデータの仮想ディスク1内での位置に対応する移行先記憶領域8a内の位置へコピーする。さらにノード7のコピー手段7aは、ノード7が管理している仮想ディスク1のデータをストレージ装置4から取り出し、そのデータの仮想ディスク1内での位置に対応する移行先記憶領域8a内の位置へコピーする。
【0022】
このように、各ノード5〜7は、仮想ディスク1内のデータのうち自己の管理するデータのみをコピーすればよく、1つのノードに負荷が集中せずにすむ。その結果、データ移行時の各ノードの負荷が軽減される。
【0023】
しかも、データをコピーしている間もコピー元の仮想ディスク1のデータにアクセス可能である。すなわち、データ移行中であっても、仮想ディスク1を用いたデータ管理サービスを継続して提供できる。そのため、データ移行に伴うサービス停止期間を低減できる。
【0024】
ところで、仮想ディスク1内の記憶領域と移行先記憶領域8aとの対応関係は、例えば制御ノード9を介して各ノード5〜7のコピー手段5b,6a,7aに通知される。この場合、制御ノード9は、ノード5の対応付け手段5aから、仮想ディスク1内の記憶領域と移行先記憶領域8aとの対応関係を示す情報を取得する。そして、制御ノード9は、各ノード5〜7に対して、仮想ディスク1内の記憶領域と移行先記憶領域8aとの対応関係を通知する。
【0025】
なお制御ノード9は、仮想ディスク1内の記憶領域と移行先記憶領域8aとの対応関係を通知と共に、コピー指示を行うことができる。その場合、各ノード5〜7のコピー手段5b,6a,7aは、コピー指示に従ってデータのコピーを行う。例えば制御ノード9は、仮想ディスク1内の単位記憶領域を、アドレスの小さい順に1つずつ選択する。そして、制御ノード9は、選択した単位記憶領域のデータを管理しているノードに対して、選択した単位記憶領域に対応する移行先記憶領域8a内の位置を通知すると共に、選択した単位記憶領域のデータのコピーを指示する。すると、コピーの指示を受けたノードによって、選択した単位記憶領域のデータが、移行先記憶領域8aにコピーされる。制御ノード9は、例えば、選択した単位記憶領域のコピーが完了するのを待って、次の単位記憶領域を選択する。これにより、データのコピーが順番に行われる。データのコピーが順番に行われることで、複数のノードにより、ストレージ装置8へのデータコピーが同時に行われることが抑制される。その結果、例えば、データ移行に伴うネットワーク上のデータ通信の輻輳の発生が抑制される。
【0026】
なお各ノード5〜7は、自己の管理している仮想ディスク1のデータのコピーが完了すると、自己の管理している仮想ディスク1のデータが格納されていたストレージ装置2〜4の記憶領域を開放することができる。記憶領域の開放とは、その記憶領域に、現在記憶されているデータとは関連性のないデータを格納可能とすることである。
【0027】
また、ストレージ装置8がノード5の直下に接続されている場合がある。このような場合、ノード5は、他のノード6,7が管理している仮想ディスク1の各データをノード6,7から受信すると、受信したデータを、そのデータの仮想ディスク内での位置に対応する移行先記憶領域8a内の位置へ書き込む。
【0028】
また、ノード5は、さらに、移行先記憶領域8aを有するストレージ装置8内に、移行先記憶領域8aに関する管理情報を格納することができる。管理情報には、例えば、移行先記憶領域8a内の単位記憶領域ごとの仮想ディスク内の記憶領域との対応関係、および移行先記憶領域8a内の単位記憶領域ごとのデータの有無が含まれる。管理情報をストレージ装置8に格納した場合、各ノード5〜7が仮想ディスク1のデータをコピーする際には、管理情報を参照する。そして各ノード5〜7は、管理情報に基づいてデータの仮想ディスク内での記憶領域に対応する移行先記憶領域8a内の単位記憶領域を特定し、特定した単位記憶領域に該データをコピーする。また各ノード5〜7は、仮想ディスク1のデータを移行先記憶領域8a内へコピーすると、データがコピーされた移行先記憶領域8a内の単位記憶領域にデータが格納されたことを、管理情報に設定する。
【0029】
このように、管理情報を用いて移行先記憶領域8a内のデータを管理することで、データ移行の途中で障害などが発生し、仮想ディスク1のデータが失われても、移行先記憶領域8a内のデータを用いた復旧が容易となる。すなわち、管理情報を参照すれば、仮想ディスク1内の失われたデータに対応する移行先記憶領域8a内の単位記憶領域が判別できる。その単位記憶領域内にデータが格納されていれば、そのデータを用いて仮想ディスク1内のデータを復旧できる。
【0030】
また、仮想ディスク1の記憶領域を複数に分割し、分割された記憶領域を、各ノード5〜7での担当領域とすることができる。この場合、各ノード5〜7は、自己の担当領域について、移行先記憶領域8aとの対応付けを行う。例えばノード5〜7は、仮想ディスク1内の全記憶領域のうちの自己の担当する担当領域に、移行先記憶領域8a内の少なくとも一部の記憶領域を対応付ける。この場合、移行先記憶領域8aへのコピーは、例えば、コピー先の位置の対応付けを行ったノードを介して行われる。すなわち、各ノード5〜7は、自己の管理している仮想ディスク1のデータのうち、自己の担当領域以外の記憶領域のデータを移行先記憶領域8aにコピーする場合がある。その場合、コピー対象のデータの仮想ディスク1内での位置の割り当てを担当したノードを介してデータのコピーを行う。具体的には、各ノード5〜7は、コピー対象のデータの仮想ディスク1内での位置の割り当てを担当したノードにデータを送信する。すると、そのデータを受信したノードが、そのデータに対応する移行先記憶領域8a内の位置へデータを格納する。
【0031】
なお、ストレージシステムでは、仮想ディスク1のデータを2重化して複数のノードに分散格納することができる。その場合、2重化されたデータのうち、優先して参照される一方のデータを第1の属性、他方のデータを第2の属性と定義することができる。このようにデータが2重化された場合、各ノード5〜7のコピー手段5b,6a,7aは、仮想ディスク1のデータをコピーする際に、第2の属性のデータを、第2の属性のデータの仮想ディスク内での位置に対応する移行先記憶領域8a内の位置へコピーする。優先して参照される第1の属性のデータではなく、第2の属性のデータをコピーすることで、データ移行時における仮想ディスク1内のデータ参照時間の遅延を抑止できる。
【0032】
〔第2の実施の形態〕
次に、第2の実施の形態の詳細を説明する。第2の実施の形態は、データを2重化して管理するマルチノードストレージシステムにおいて、データ移行を行うものである。
【0033】
図2は、第2の実施の形態のマルチノードストレージシステム構成例を示す図である。第2の実施の形態では、スイッチ10を介して、複数のディスクノード100,200,300、制御ノード500、アクセスノード30、および管理ノード400が接続されている。ディスクノード100には、ストレージ装置110,120が接続されている。ディスクノード200には、ストレージ装置210が接続されている。ディスクノード300には、ストレージ装置310が接続されている。
【0034】
なお、ディスクノード100に接続されているストレージ装置120は、マルチノードストレージシステム以外のシステムに移行するデータの記憶用に接続されている。マルチノードストレージシステム以外のシステムとしては、例えばSANがある。
【0035】
各ディスクノード100,200,300には、ディスクノードIDが付与されている。図2の例では、ディスクノード100のディスクノードIDは「DP1」、ディスクノード200のディスクノードIDは「DP2」、ディスクノード300のディスクノードIDは「DP3」である。各ディスクノード100,200,300に接続されたストレージ装置110,120,210,310は、ディスクノード100,200,300のディスクノードIDによってネットワーク上の位置が識別される。
【0036】
ストレージ装置110には、複数のハードディスク装置(HDD)111,112,113,114が実装されている。ストレージ装置120には、複数のHDD121,122,123,124が実装されている。ストレージ装置210には、複数のHDD211,212,213,214が実装されている。ストレージ装置310には、複数のHDD311,312,313,314が実装されている。各ストレージ装置110,120,210,310は、内蔵するHDDを用いたRAIDシステムである。
【0037】
ディスクノード100,200,300は、例えば、IA(Intel Architecture)と呼ばれるアーキテクチャのコンピュータである。ディスクノード100,200,300は、接続されたストレージ装置110,120,210,310に格納されたデータを管理し、管理しているデータをスイッチ10経由で端末装置21,22,23に提供する。また、ディスクノード100,200,300は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも2つのディスクノードで管理されている。
【0038】
制御ノード500は、ディスクノード100,200,300を管理する。例えば、制御ノード500は、ディスクノード100,200,300から新たなストレージ装置の接続通知を受け取ると、仮想ディスクを介して、接続されたストレージ装置に格納されていたデータにアクセスできるようにする。
【0039】
アクセスノード30には、ネットワーク20を介して複数の端末装置21,22,23が接続されている。アクセスノード30には、仮想ディスクが定義されている。そして、アクセスノード30は、端末装置21,22,23からの仮想ディスク上でのデータのアクセス要求に応答して、ディスクノード100,200,300内の対応するデータへアクセスする。
【0040】
管理ノード400は、管理者がマルチノードストレージシステムの運用を管理するために使用するコンピュータである。例えば、管理ノード400では、管理者からの操作入力に応答して、仮想ディスクのデータの移行先となるストレージ装置の接続指示をディスクノードに送信する。また、管理ノード400は、管理者からの操作入力に応答して、仮想ディスクのデータの移行指示を制御ノード500に送信する。
【0041】
図3は、ディスクノードのハードウェア構成例を示す図である。ディスクノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス109を介してRAM(Random Access Memory)102と複数の周辺機器が接続されている。
【0042】
RAM102は、ディスクノード100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
【0043】
バス109に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、通信インタフェース107、およびストレージ装置インタフェース108がある。
【0044】
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、制御ノード500の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【0045】
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
【0046】
入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0047】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0048】
通信インタフェース107は、スイッチ10に接続されている。通信インタフェース107は、スイッチ10を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0049】
ストレージ装置インタフェース108は、外部接続されたストレージ装置110,120との間でデータ通信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、ディスクノード100のハードウェア構成を示しているが、他のディスクノード200,300、アクセスノード30、管理ノード400、および制御ノード500も同様のハードウェア構成で実現することができる。
【0050】
図4は、仮想ディスクのデータ構造を示す図である。本実施の形態では、仮想ディスク60には仮想ディスク識別子「LVOL1」が付与されている。ネットワーク経由で接続された3台のディスクノード100,200,300には、個々のノードの識別のためにそれぞれ「DP−1」、「DP−2」、「DP−3」というノード識別子が付与されている。そして、各ディスクノード100,200,300は、ノード識別子によってスイッチ10で一意に識別される。
【0051】
各ディスクノード100,200,300が有するストレージ装置110,120,210,310それぞれにおいてRAID5のストレージシステムが構成されている。各ストレージ装置110,210,310内の記憶領域は、複数のスライス115a,115b,・・・,115n,215a,215b,・・・,215n,315a,315b,・・・,315nに分割して管理されている。
【0052】
仮想ディスク60は、セグメント61〜64という単位で構成される。セグメント61〜64の記憶容量は、ストレージ装置110,210における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が1ギガバイトとするとセグメントの記憶容量も1ギガバイトである。仮想ディスク60の記憶容量はセグメント1つ当たりの記憶容量の整数倍である。セグメント61〜64は、それぞれプライマリスライス61a,62a,63a,64aとセカンダリスライス61b,62b,63b,64bとの組(スライスペア)で構成される。プライマリスライスは、データ参照やデータ書き込みにおいて、優先的にアクセスされる。すなわち、アクセスノード30から仮想ディスク60内のデータへのアクセスは、そのデータが属するセグメントに割り当てられたプライマリスライスに対して行われる。
【0053】
同一セグメントに属する2つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には仮想ディスク識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
【0054】
図4の例では、仮想ディスク60内のスライスの識別子を、「P」または「S」のアルファベットと数字との組合せで示している。「P」はプライマリスライスであることを示している。「S」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、1番目のセグメント61のプライマリスライスが「P1」で示され、セカンダリスライスが「S1」で示される。
【0055】
本実施の形態では、図4に示した仮想ディスク60内のデータを、ディスクノード100に接続されたストレージ装置120に移行するものとする。
図5は、第2の実施の形態に係るマルチノードストレージシステムの各装置の機能を示すブロック図である。アクセスノード30は、仮想ディスクアクセス制御部31を有している。仮想ディスクアクセス制御部31は、端末装置21,22,23からの仮想ディスク60内のデータを指定したアクセス要求に応じて、指定されたデータを管理するディスクノードに対してデータアクセスを行う。具体的には、仮想ディスクアクセス制御部31は、アクセス対象のデータが記憶された仮想ディスク60内のブロックを特定する。次に、仮想ディスクアクセス制御部31は、特定したブロックに対応するセグメントを特定する。さらに、仮想ディスクアクセス制御部31は、予め取得しているメタデータを参照し、セグメントを構成するプライマリスライスに対応するディスクノードおよびそのディスクノード内のスライスを特定する。メタデータは、各セグメントに割り当てられたスライスの管理情報である。メタデータには、セグメントに割り当てられたスライスの所在などが示されている。そして、仮想ディスクアクセス制御部31は、特定したディスクノードに対して、特定したスライスへのアクセス要求を出力する。
【0056】
制御ノード500は、仮想ディスク管理部510と仮想ディスクメタデータ記憶部520とを有している。
仮想ディスク管理部510は、ディスクノード100,200,300が有するストレージ装置110,120,210,310内のスライスを管理する。例えば、仮想ディスク管理部510は、システム起動時に、ディスクノード100,200,300に対してメタデータ取得要求を送信する。そして、仮想ディスク管理部510は、メタデータ取得要求に対して返信されたメタデータから仮想ディスクメタデータを生成し、仮想ディスクメタデータ記憶部520に格納する。
【0057】
また仮想ディスク管理部510は、管理ノード400から仮想ディスク内のデータの移行指示を受け取ると、指定された仮想ディスク内のデータの指定されたストレージ装置へのコピーを、その仮想ディスクのデータを管理するディスクノードに指示する。仮想ディスク管理部510は、移行指示に応じたデータのコピーが完了すると、管理ノード400に対して移行完了応答を送信する。
【0058】
仮想ディスクメタデータ記憶部520は、ディスクノード100,200,300から収集されたメタデータに基づいて生成された仮想ディスクメタデータを記憶する。例えば、制御ノード500内のRAM502の記憶領域の一部が仮想ディスクメタデータ記憶部520として使用される。
【0059】
ディスクノード100は、データアクセス部130、データ管理部140、およびメタデータ記憶部150を有している。
データアクセス部130は、アクセスノード30からの要求に応答して、ストレージ装置110内のデータにアクセスする。具体的には、データアクセス部130は、アクセスノード30からデータのリード要求を受け取った場合、リード要求で指定されたデータをストレージ装置110から取得し、リード要求の送信元であるアクセスノードに返信する。また、データアクセス部130は、アクセスノード30からデータのライト要求を受け取った場合、ライト要求に含まれるデータをストレージ装置110内に格納する。
【0060】
データ管理部140は、ディスクノード100にストレージ装置120が物理接続された場合に、ストレージ装置120をマルチストレージシステム内の一ストレージ装置として論理的に接続する。すなわちデータ管理部140は、ストレージ装置120を、制御ノード500から認識できるようにする。
【0061】
またデータ管理部140は、データアクセス部130によってライト要求に基づくデータの書き込みが行われた場合、データが書き込まれたスライス(プライマリスライス)に対応するセカンダリスライス内のデータ更新を行う。セカンダリスライス内のデータ更新処理は、セカンダリスライスを管理するディスクノードのデータ管理部と連携動作によって実現される。すなわち、データ管理部140は、更新されたデータを、セカンダリスライスを管理するディスクノードに送信する。そのデータを受け取ったディスクノードのデータ管理部は、セカンダリスライスにそのデータを書き込む。これにより、2重化されたデータの一貫性が保たれる。
【0062】
さらに、データ管理部140は、仮想ディスク管理部510からのメタデータ取得要求に応答して、メタデータ記憶部150に記憶されたメタデータを仮想ディスク管理部510に対して送信する。
【0063】
メタデータ記憶部150は、メタデータを記憶する。例えば、RAM内の記憶領域の一部がメタデータ記憶部150として使用される。なお、メタデータ記憶部150に格納されるメタデータは、システム停止時にはストレージ装置110内に格納され、システム起動時にメタデータ記憶部150に読み込まれる。
【0064】
他のディスクノード200,300は、ディスクノード100と同様の機能を有している。すなわち、ディスクノード200は、データアクセス部220、データ管理部230、およびメタデータ記憶部240を有している。ディスクノード300は、データアクセス部320、データ管理部330、およびメタデータ記憶部340を有している。ディスクノード200,300内の各要素は、ディスクノード100内の同名の要素と同じ機能を有している。
【0065】
管理ノード400は、管理者からの操作入力に応答して、マルチストレージシステムの管理用の指示を、各ノードに送信する。例えば、管理者は、ストレージ装置120とディスクノード100とをケーブルで接続(物理接続)した場合、管理ノード400に対してストレージ装置120の論理的な接続を指示する操作入力を行う。すると管理ノード400は、管理者からの操作入力に応答してディスクノード100に対して、新たに物理接続されたストレージ装置120の接続指示を送信する。その接続指示に基づいてディスクノード100がストレージ装置120内にメタデータの格納などの処理を行い、ストレージ装置120を制御ノード500において認識可能とする。接続指示に応じた処理が完了すると、ディスクノード100から管理ノード400へ接続完了応答が返される。
【0066】
また、管理ノード400は、管理者からの操作入力に応答して、仮想ディスクの移行指示を制御ノード500に送信する。例えば、仮想ディスク60内のデータのストレージ装置120への移行指示が送信される。この移行指示に応じて、制御ノード500が各ディスクノード100,200,300を制御し、データ移行を実現する。データの移行が完了すると、制御ノード500から管理ノード400へ移行完了応答が送信される。
【0067】
図5の例は、仮想ディスク60のデータをストレージ装置120に移行する場合を想定している。この場合、ストレージ装置120には、制御ノード500によって、移行先ディスク121とメタデータ用ディスク122とが設けられる。なお、移行先ディスク121とメタデータ用ディスク122とは、それぞれストレージ装置120内のHDDで構成されるRAID構成のディスクグループを複数分割することで得られる仮想的なディスクである。移行先ディスク121とメタデータ用ディスク122として使用される仮想的なディスクは、図4に示したマルチノードストレージシステムにおける仮想ディスク60とは異なり、1つのストレージ装置120内のHDDにより実現されている。移行先ディスク121とメタデータ用ディスク122とには、論理ユニット番号(LUN)が割り振られ、論理ユニット番号によってディスクノード100で識別される。
【0068】
作成される移行先ディスク121の記憶容量は、移行対象の仮想ディスク60と同じである。作成されるメタデータ用ディスク122の記憶容量は、仮想ディスク60のメタデータを格納可能な容量である。移行先ディスク121は、少なくともディスクノード100およびアクセスノード30からアクセス可能である。メタデータ用ディスク122は、少なくともディスクノード100からアクセス可能である。
【0069】
次に、ストレージ装置110、移行先ディスク121、およびメタデータ用ディスク122内のデータ構造を詳細に説明する。ストレージ装置110には、複数のスライスとスライスごとのメタデータとが格納されている。移行先ディスク121とメタデータ用ディスク122とは、ストレージ装置120をディスクノード100に接続した直後は、内容がブランクである。ストレージ装置120接続後に、データ管理部140により、移行先ディスク121内の記憶領域がスライス単位に分割される。またストレージ装置120接続後に、データ管理部140により、メタデータ用ディスク122内にメタデータが格納される。
【0070】
図6は、ストレージ装置のデータ構造例を示す図である。ストレージ装置110には、スライス115a,115b,・・・,115nとは別に、デバイス情報116と複数のメタデータ117a,117b,・・・,117nとが格納されている。移行先ディスク121内には、複数のスライス121a,121b,・・・,121nが設けられている。メタデータ用ディスク122内には、移行先ディスク121内のスライス121a,121b,・・・,121nそれぞれに対応するメタデータ122a,122b,・・・,122nと、デバイス情報122xとが格納されている。
【0071】
デバイス情報116,122xは、ストレージ装置110,120の管理に使用される情報である。例えば、デバイス情報116,122xには、ストレージ装置110,120がマルチノードストレージシステムに組み込まれていることを示す情報が含まれる。また、ストレージ装置120のデバイス情報122xには、マルチストレージシステム内の仮想ディスクのデータの移行先となるディスクであることを示す情報を含めることができる。
【0072】
さらに、デバイス情報116,122xには、メタデータ格納形式が含まれる。メタデータ格納形式は、各メタデータが対応するスライスと連続の記憶領域に格納されているのか、あるいはメタデータを一纏めにして、スライスとは個別の記憶領域に格納されているのかを示す情報である。本実施の形態では、各メタデータが対応するスライスと連続の記憶領域に格納されている場合のメタデータ格納形式を「type1」とする。また、メタデータを一纏めにして、スライスとは個別の記憶領域に格納されている場合のメタデータ格納形式を「type2」とする。
【0073】
図6の例では、ストレージ装置110は、個々のスライスと連続の記憶領域に、そのスライスに対応するメタデータが格納されている。従って、ストレージ装置110のメタデータ格納形式は「type1」である。移行先ディスク121に対応するメタデータは一纏めにしてメタデータ用ディスク122に格納されるため、メタデータ格納形式は「type2」となる。なお、移行先ディスク121に対応するメタデータは、ディスクノード100から見た場合に移行先ディスク121とは別ディスクとなるメタデータ用ディスク122に格納される。そこで、スライスとメタデータを別ディスクに一纏めで格納する場合のメタデータ格納形式を「type3」とすることもできる。この場合、ストレージ装置120のデバイス情報122xに示されるデータ格納形式は「type3」となる。
【0074】
ストレージ装置110に格納されたメタデータ117a,117b,・・・,117nは、ディスクノード100の起動時にデータ管理部140によって読み出され、メタデータ記憶部150に格納される。同様に、メタデータ用ディスク122に格納されたメタデータ122a,122b,・・・,122nも、ディスクノード100の起動時にデータ管理部140によって読み出され、メタデータ記憶部150に格納される。
【0075】
次に、ディスクノード100内のメタデータ記憶部150のデータ構造について説明する。
図7は、メタデータ記憶部のデータ構造の一例を示す図である。メタデータ記憶部150には、メタデータテーブル151が格納されている。メタデータテーブル151には、ディスクノードID、スライスID、状態、仮想ディスクID、仮想ディスクアドレス、ペアのディスクノードID、およびペアのスライスIDの欄が設けられている。メタデータテーブル151内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す1つのレコードとなる。
【0076】
ディスクノードIDの欄には、ストレージ装置110,120を管理しているディスクノード100の識別情報(ディスクノードID)が設定される。
スライスIDの欄には、メタデータに対応するスライスのストレージ装置110,120内での識別情報(スライスID)が設定される。なお、スライスID「1」〜「1000」が、ストレージ装置110のスライスに割り当てられたスライスIDである。また、スライスID「1001」〜「1100」が、ストレージ装置120の移行先ディスク121のスライスに割り当てられたスライスIDである。ディスクノード100のデータアクセス部130は、スライスIDと、そのスライスIDに対応するスライスの所在(ストレージ装置110なのか移行先ディスク121なのか)を認識している。そして、データアクセス部130は、スライスIDに基づいて、どのストレージ装置にアクセスすべきかを判断できる。
【0077】
状態の欄には、スライスの状態を示す状態フラグが設定される。
図8は、状態フラグで示される状態の種類を示す図である。各スライスの状態を示す状態フラグには、「F」、「P」、「S」、「R」、「B」、および「SP」の何れかが設定される。
【0078】
スライスが仮想ディスクのセグメントに割り当てられていない場合、状態フラグ「F」が設定される。スライスが仮想ディスクのセグメントのプライマリスライスに割り当てられている場合、状態フラグ「P」が設定される。スライスが仮想ディスクのセグメントのセカンダリスライスに割り当てられている場合、状態フラグ「S」が設定される。スライスを仮想ディスクのセグメントに割り当てることが決定したが、まだデータのコピーが行われていない場合、予約済を示す状態フラグ「R」が設定される。移行先ディスク121のスライスであるが、まだデータのコピーが行われていない場合、ブランクを示す状態フラグ「B」が設定される。スライスが仮想ディスクの冗長性が損なわれたセグメントに割り当てられている場合、シングルプライマリを示す状態フラグ「SP」が設定される。
【0079】
状態フラグのうち、「P」、「S」、または「SP」が設定されている場合、対応するスライスにデータが格納されている。
以下、図7の説明に戻る。
【0080】
仮想ディスクIDの欄には、スライスに対応するセグメントが属する仮想ディスクを識別するための識別情報(仮想ディスクID)が設定される。
仮想ディスクアドレスの欄には、スライスが割り当てられているセグメントの先頭を示す仮想ディスク内でのアドレスが設定される。
【0081】
ペアのディスクノードIDの欄には、ペアのスライス(同じセグメントに属する別のスライス)を有するストレージ装置を管理するディスクノードの識別情報(ディスクノードID)が設定される。
【0082】
ペアのスライスIDの欄には、ペアのスライスを、そのスライスが属するストレージ装置内で識別するための識別情報(スライスID)が設定される。
図7では、ストレージ装置120がディスクノード100のOSで認識され、ストレージ装置120用のメタデータがメタデータテーブル151に登録された直後の状態が示されている。すなわち、データ移行のためのストレージ装置120へのデータのコピーは未実施である。そのため、ストレージ装置120(ディスクID「1001」〜「1100」)のスライスの状態フラグは、すべて「B」となっている。
【0083】
また、移行先ディスク121内の各スライスは、仮想ディスクアドレスのセグメントに割り当てられている。なお、移行先ディスク121内のスライスのうち、スライスIDの値が小さいスライスほど、仮想ディスクアドレスの値が小さいセグメントに割り当てられている。これにより、データ移行後は、仮想ディスク60におけるデータ配列と同じ配列で、仮想ディスク60内のデータが移行先ディスク121内に格納されることとなる。
【0084】
各ディスクノード100,200,300のメタデータ記憶部150,240,340に格納されたメタデータは、制御ノード500からの要求に応じて制御ノード500に送信される。制御ノード500では、ディスクノード100,200,300から収集したメタデータを、仮想ディスクメタデータ記憶部520に格納する。
【0085】
図9は、仮想ディスクメタデータ記憶部のデータ構造の一例を示す図である。図9に示すように、仮想ディスクメタデータ記憶部520には、各ディスクノード100,200,300が保持していたメタデータテーブル151,241,341に含まれるメタデータが格納される。
【0086】
なお、制御ノード500の仮想ディスク管理部510は、仮想ディスクが複数ある場合、ディスクノード100,200,300から収集したメタデータを、仮想ディスクIDによって分類してもよい。
【0087】
次に、仮想ディスク60からストレージ装置120へのデータ移行の実施に利用される各ノードの機能について、詳細に説明する。
図10は、データ移行に利用される各ノードの機能を示す図である。制御ノード500の仮想ディスク管理部510は、仮想ディスクのデータ移行のために、スライス割り当て制御部511およびデータコピー指示部512を有する。
【0088】
スライス割り当て制御部511は、システム起動時などに、各ディスクノード100,200,300に対してメタデータ照会要求を送信する。するとディスクノード100,200,300からメタデータが応答される。またスライス割り当て制御部511は、データコピー対象のスライスを選択し、該当スライスを管理しているディスクノードに対して、コピーの進行状況に応じてメタデータの更新を指示する。データコピー指示部512は、データコピーのコピー元となるスライスを管理するディスクノードに対して、移行先ディスク121への該当スライス内のデータの送信を指示する。
【0089】
ディスクノード100のデータ管理部140は、移行先ストレージ接続部141、メタデータ管理部142、およびデータコピー部143を有する。
移行先ストレージ接続部141は、ディスクノード100に接続されたストレージ装置120の存在を制御ノード500に認識させる。例えば、移行先ストレージ接続部141は、管理ノード400からの接続指示を受けると、ディスクノード100に接続されているストレージ装置のうち、未認識のストレージ装置120を検出する。移行先ストレージ接続部141は、検出したストレージ装置120をOSに認識させる。さらに移行先ストレージ接続部141は、検出したストレージ装置120内の1つの仮想的なディスクを移行先ディスク121とし、他の1つの仮想的なディスクをメタデータ用ディスク122とする。そして移行先ストレージ接続部141は、メタデータ用ディスク122に、移行先ディスク121内の記憶領域を分割して得られるスライスごとのメタデータを格納する。その後、移行先ストレージ接続部141は、接続完了応答を管理ノード400に送信する。
【0090】
メタデータ管理部142は、制御ノード500からのメタデータ照会要求に応答して、メタデータ記憶部150内のメタデータを制御ノード500に送信する。また、メタデータ管理部142は、制御ノード500からの指示に従って、メタデータを更新する。
【0091】
データコピー部143は、制御ノード500からの指示に従って、仮想ディスク60のセグメントに割り当てられたスライス内のデータを、移行先ディスク121内のスライスにコピーする。また、データコピー部143は、他のディスクノード200,300から、移行先ディスク121内のスライスをコピー先としてデータを受信すると、受信したデータを、コピー先として指定されたスライスに格納する。
【0092】
ディスクノード200のデータ管理部230は、メタデータ管理部231とデータコピー部232とを有する。メタデータ管理部231は、制御ノード500からの指示に従って、メタデータを更新する。データコピー部232は、制御ノード500からの指示に従って、仮想ディスク60のセグメントに割り当てられたスライス内のデータを、コピー先のスライスを指定して、ディスクノード100に送信する。
【0093】
ディスクノード300のデータ管理部330は、メタデータ管理部331とデータコピー部332とを有する。メタデータ管理部331とデータコピー部332との機能は、それぞれディスクノード200のメタデータ管理部231とデータコピー部232との機能と同じである。
【0094】
次に、データ移行処理の手順について説明する。
図11は、第2の実施の形態におけるデータ移行処理の手順を示すシーケンス図である。以下、図11に示す処理を、ステップ番号に沿って説明する。
【0095】
[ステップS11]管理ノード400からディスクノード100に接続指示が出される。例えば、管理者は管理ノード400に対して、データの移行を指示する。この指示では、例えば仮想ディスク60の仮想ディスクID、仮想ディスクのセグメント数(または仮想ディスク60のデータ容量)、および移行先のストレージ装置を接続したディスクノード100のディスクノードIDが指定される。管理ノード400は、指定されたディスクノード100に対して、仮想ディスク60の仮想ディスクIDと仮想ディスク60のセグメント数とを指定した接続指示を送信する。
【0096】
ディスクノード100は、管理ノード400からの接続指示に応答して、データ移行先となるストレージ装置120をマルチノードストレージシステムの配下のストレージ装置として接続する。具体的には、ディスクノード100の移行先ストレージ接続部141は、ストレージ装置120内の1つのディスクを移行先ディスク121、他の1つのディスクをメタデータ用ディスク122として、ディスクノード100のOSに認識させる。この時点では、移行先ディスク121とメタデータ用ディスク122との内容はブランクである。その後、移行先ストレージ接続部141は、メタデータ用ディスク122にメタデータを格納する。なお、移行先ディスク121については、接続時には書き込みは行われない。
【0097】
メタデータ用ディスク122へ格納するメタデータの内容は、管理ノード400からの指示に従って行われる。例えば、管理ノード400からの接続指示において、データの移行を行う仮想ディスク60の仮想ディスクIDとセグメントの数が指定される。すると、移行先ストレージ接続部141は、仮想ディスクのセグメントの数分のスライスに対応するメタデータを作成し、そのメタデータの仮想ディスクIDの欄には、仮想ディスク60の仮想ディスクIDを設定する。そして、移行先ストレージ接続部141は、作成したメタデータと、メタデータの格納形式を示すデバイス情報とを、メタデータ用ディスク122に格納する。この際、移行先ストレージ接続部141は、メタデータ用ディスク122に格納したメタデータを、メタデータ記憶部150にも格納する。その後、移行先ストレージ接続部141は、管理ノード400に対して接続完了応答を送信する。
【0098】
[ステップS12]管理ノード400から制御ノード500に移行指示が出される。例えば、移行指示には、データの移行先となるストレージ装置120を接続したディスクノード100のディスクノードIDが指定されている。制御ノード500のスライス割り当て制御部511は、移行指示で指定されたディスクノード100に対して、メタデータ照会要求を送信する。
【0099】
[ステップS13]メタデータ照会要求を受け取ったディスクノード100では、メタデータ管理部142がメタデータ記憶部150からメタデータを取得し、制御ノード500に送信する。なお、メタデータ管理部142は、メタデータ記憶部150からストレージ装置120内のスライスのメタデータのみを取得し、取得したメタデータを制御ノード500に送信してもよい。
【0100】
[ステップS14]メタデータを受信した制御ノード500のスライス割り当て制御部511は、受信したメタデータにより仮想ディスクメタデータ記憶部520内のメタデータを更新する。そして、データコピー指示部512の制御の下、ディスクノード100,200,300によるスライス内のデータの移行先ディスク121へのコピー処理が行われる。
【0101】
[ステップS15]データのコピーが完了すると、制御ノード500のスライス割り当て制御部511の制御の下、仮想ディスク60のセグメントに対するセカンダリスライスの切り離し(割り当て解除)処理が行われる。スライス割り当て制御部511は、セカンダリスライスの切り離し処理が完了すると、移行完了応答を管理ノード400に送信する。
【0102】
このような手順で、仮想ディスク60内のデータが移行先ディスク121に移行される。次に、ステップS14に示したスライスコピー処理について詳細に説明する。
図12は、スライスコピー処理の手順を示すシーケンス図である。図12には、1つのセグメントに関するスライスコピー処理が示されている。以下、図12に示す処理をステップ番号に沿って説明する。
【0103】
[ステップS21]制御ノード500のスライス割り当て制御部511は、移行対象の仮想ディスク60のセグメントのうち、スライスコピー処理を行っていないセグメントを1つ選択する。スライス割り当て制御部511は、選択したセグメントに割り当てられているスライスを管理しているディスクノードに対して、メタデータ変更要求を送信する。
【0104】
例えば、アドレス「A1」のセグメントが選択されたものとする。移行対象の仮想ディスク60内の冗長構成が保たれたセグメントであれば、選択されたセグメントには、状態がプライマリのスライス、状態がセカンダリのスライス、および状態がブランクのスライスが割り当てられている。そこでスライス割り当て制御部511は、図9に示したメタデータテーブル151,241,341を参照し、選択されたセグメントに割り当てられたブランクのスライスが、ディスクノード100で管理されていることを認識する。そして、スライス割り当て制御部511は、ディスクノード100に対して、選択したセグメントに割り当てられたブランクのスライスの状態をリザーブ「R」に変更することを指示するメタデータ変更要求を送信する。
【0105】
[ステップS22]ディスクノード100では、メタデータ管理部142がメタデータ変更要求を受信する。すると、メタデータ管理部142は、メタデータ変更要求に従い、メタデータ記憶部150内のメタデータ変更要求で指定されたスライスのメタデータを更新する。すなわち、メタデータ管理部142は、指定されたスライスのメタデータの状態の欄の状態フラグを「B」から「R」に変更する。さらにメタデータ管理部142は、メタデータ用ディスク122内のメタデータ変更要求で指定されたスライスのメタデータについても同様に更新する。メタデータ管理部142は、メタデータの更新が完了すると、変更完了応答を制御ノード500に送信する。
【0106】
[ステップS23]制御ノード500では、スライス割り当て制御部511が変更完了応答を受信する。すると、スライス割り当て制御部511は、仮想ディスクメタデータ記憶部520内のメタデータについても、メタデータ変更要求で指示した内容と同様に更新する。その後、制御ノード500のデータコピー指示部512が、選択したセグメントに割り当てられたセカンダリのスライスを管理するディスクノードに対して、スライスコピー指示を送信する。
【0107】
例えばアドレス「A1」のセグメントが選択された場合、データコピー指示部512は、図9に示したメタデータテーブル151,241,341を参照する。これによりデータコピー指示部512は、選択されたセグメントに割り当てられたセカンダリのスライスが、ディスクノード300で管理されていることを認識する。そしてデータコピー指示部512は、ディスクノード300に対して、選択したセグメントに割り当てられたセカンダリのスライス内のデータを、選択したセグメントに割り当てられたリザーブのスライスにコピーすべき旨のスライスコピー指示を送信する。スライスコピー指示には、例えば、選択したセグメントのセカンダリのスライスとリザーブのスライスとのそれぞれの、ディスクノードIDとスライスIDとが示される。
【0108】
[ステップS24]ディスクノード300では、データコピー部332がスライスコピー指示を受信する。するとデータコピー部332は、スライスコピー指示で指定されたセカンダリのスライス内のデータを、リザーブのスライスを管理するディスクノード100に送信する。この際、送信したデータの格納先として、例えばスライスコピー指示で指定されたリザーブのスライスのスライスIDが指定される。
【0109】
[ステップS25]ディスクノード100では、ディスクノード300から送信されたデータをデータコピー部143が受信する。するとデータコピー部143は、移行先ディスク121内の指定されたスライスに対して、受信したデータを書き込む。データの書き込みが完了すると、データコピー部143は、書き込み完了応答をディスクノード300に送信する。
【0110】
[ステップS26]ディスクノード300のデータコピー部332は、ディスクノード100から書き込み完了応答を受信すると、制御ノード500に対してコピー完了応答を送信する。
【0111】
[ステップS27]制御ノード500のデータコピー指示部512は、選択したセグメントに割り当てられた各スライスを管理するディスクノード100,200,300に対して、メタデータ変更要求を送信する。例えば、プライマリのスライスを管理するディスクノード200に対しては、選択したセグメントに割り当てられていたスライスのペアの相手を移行先ディスク121内のデータのコピー先となったスライスに変更することを示すメタデータ変更要求が送信される。セカンダリのスライスを管理するディスクノード300に対しては、選択したセグメントに割り当てられていたスライスの状態を、セカンダリ「S」からフリー「F」へ変更することを示すメタデータ変更要求が送信される。リザーブのスライスを管理するディスクノード100に対しては、選択したセグメントに割り当てられていたスライスの状態を、リザーブ「R」からセカンダリ「S」へ変更することを示すメタデータ変更要求が送信される。
【0112】
なお、図12の例では、セカンダリスライスをフリースライスに変更するようにメタデータ変更要求が出されているが、プライマリスライスをフリースライスに変更するようにしてもよい。その場合、セカンダリスライスをプライマリスライスに変更することとなる。
【0113】
[ステップS28]ディスクノード200では、メタデータ変更要求をメタデータ管理部231が受信する。メタデータ管理部231は、メタデータ変更要求に従って、メタデータ記憶部240内のメタデータを更新する。すなわちメタデータ管理部231は、選択されたセグメントに割り当てられたプライマリのスライスのメタデータに対し、ペアのディスクノードIDとして、移行先ディスク121が接続されたディスクノード100のディスクノードIDを設定する。またメタデータ管理部231は、選択されたセグメントに割り当てられたプライマリのスライスのメタデータに対し、ペアのスライスとして、移行先ディスク121内のデータのコピー先となったスライスのスライスIDを設定する。さらにメタデータ管理部231は、メタデータ記憶部240に対するメタデータ更新処理と同様のメタデータ更新処理を、ストレージ装置210内のメタデータに対しても行う。メタデータの更新が完了すると、メタデータ管理部231は、変更完了応答を制御ノード500に送信する。
【0114】
[ステップS29]ディスクノード300では、メタデータ変更要求をメタデータ管理部331が受信する。メタデータ管理部331は、メタデータ変更要求に従って、メタデータ記憶部340内のメタデータを更新する。すなわちメタデータ管理部331は、選択されたセグメントに割り当てられたセカンダリのスライスのメタデータの状態フラグを、セカンダリ「S」からフリー「F」に変更する。また、メタデータ管理部331は、状態フラグを変更したメタデータの、仮想ディスクID、仮想ディスクアドレス、ペアのディスクノードID、およびペアのスライスIDの各欄の設定内容を削除する。状態がフリーとなったスライスは、セグメントへの割り当てが解除され、他のセグメントへの割り当てが可能となる。すなわち、状態がフリーとなったスライスは、そのスライスの記憶領域が開放される。
【0115】
さらにメタデータ管理部331は、メタデータ記憶部340に対するメタデータ更新処理と同様のメタデータ更新処理を、ストレージ装置310内のメタデータに対しても行う。メタデータの更新が完了すると、メタデータ管理部331は、変更完了応答を制御ノード500に送信する。
【0116】
[ステップS30]ディスクノード100では、メタデータ変更要求をメタデータ管理部142が受信する。メタデータ管理部142は、メタデータ変更要求に従って、メタデータ記憶部150内のメタデータを更新する。すなわちメタデータ管理部142は、選択されたセグメントに割り当てられたリザーブのスライスのメタデータの状態フラグを、リザーブ「R」からセカンダリ「S」に変更する。また、メタデータ管理部142は、状態フラグを変更したメタデータのペアのディスクノードIDの欄に、プライマリスライスを管理するディスクノードのディスクノードIDを設定する。さらに、メタデータ管理部142は、状態フラグを変更したメタデータのペアのスライスIDの欄に、プライマリスライスのスライスIDを設定する。その後、メタデータ管理部142は、メタデータ記憶部150に対するメタデータ更新処理と同様のメタデータ更新処理を、メタデータ用ディスク122内のメタデータに対しても行う。メタデータの更新が完了すると、メタデータ管理部142は、変更完了応答を制御ノード500に送信する。
【0117】
[ステップS31]制御ノード500では、スライス割り当て制御部511が、各ディスクノード100,200,300から送信された変更完了応答を受信する。すると、スライス割り当て制御部511は、仮想ディスクメタデータ記憶部520内のメタデータについても、ステップS27においてメタデータ変更要求で指示した内容と同様に更新する。
【0118】
図12に示したスライスコピー処理が、移行対象の仮想ディスク60内のセグメントごとに実行される。例えば、制御ノード500のスライス割り当て制御部511は、ステップS31の処理が完了すると、仮想ディスク60内の未選択のセグメントの有無を判断する。未選択のセグメントがあれば、スライス割り当て制御部511は、図12に示したスライスコピー処理を、ステップS21から開始する。未選択のセグメントがなければ、図11に示すスライスコピー処理(ステップS14)が完了し、次のセカンダリ切り離し処理(ステップS15)が実行される。
【0119】
次に、スライスコピー処理によるメタデータの内容の推移について説明する。
図13は、スライスコピー処理によるメタデータの内容の推移の一例を示す図である。なお、図13には、仮想ディスクアドレス「A1」に対応するセグメントを選択して、スライスコピー処理を実行した場合の、該当セグメントに割り当てられているスライスのメタデータの内容の推移が示されている。
【0120】
第1の状態は、セグメント選択(図12のステップS21)時点での、処理対象のスライスのメタデータの状態を示している。図13の例では、仮想ディスクアドレス「A1」のセグメントに対して、プライマリスライスとして、ディスクノード200(ディスクノードID「DP2」)のスライスID「スライス100」のスライスが割り当てられている。仮想ディスクアドレス「A1」のセグメントに対して、セカンダリスライスとして、ディスクノード300(ディスクノードID「DP3」)のスライスID「スライス200」のスライスが割り当てられている。
【0121】
また、選択されたセグメントの仮想ディスクアドレスは、仮想ディスク60内の先頭のアドレスである。すなわち、仮想ディスク60内の先頭のセグメントが選択されている。そこで、ディスクノード100(ディスクノードID「DP1」)で管理される移行先ディスク121の先頭のスライスが、データコピー先のスライスとして選択される。移行先ディスク121の先頭のスライスのスライスIDは、「スライス1001」である。移行先ディスク121の先頭のスライスの状態は、ブランク「B」である。
【0122】
第2の状態は、移行先ディスク121内のスライスのセグメントへの割り当て処理(図12のステップS22)後の状態を示している。移行先ディスク121のスライスID「スライス1001」のスライスの状態は、ブランク「B」からリザーブ「R」に変更されている。
【0123】
第3の状態は、コピー完了後に行われるメタデータ変更処理(図12のステップS27〜S31)後の状態を示している。ディスクノード100(ディスクノードID「DP1」)のスライスID「スライス1001」のスライスのメタデータは、状態がセカンダリ「S」に変更されている。また、そのメタデータには、ペアのディスクノードIDとしてディスクノード200のディスクノードID「DP2」が設定され、ペアのスライスIDとして、選択されたセグメントのプライマリスライスのスライスID「スライス100」が設定されている。
【0124】
ディスクノード200(ディスクノードID「DP2」)のスライスID「スライス100」のスライスのメタデータには、ペアのディスクノードIDがディスクノード100のディスクノードID「DP1」に変更されている。さらに、そのメタデータのペアのスライスIDが、選択されたセグメントのセカンダリスライスのスライスID「スライス1001」に変更されている。
【0125】
ディスクノード300(ディスクノードID「DP3」)のスライスID「スライス200」のスライスのメタデータは、状態がフリー「F」に変更されている。また、そのメタデータの仮想ディスクID、仮想ディスクアドレス、ペアのディスクノードID、およびペアのスライスIDの内容は、「NULL」に変更されている。これにより、ディスクノード300(ディスクノードID「DP3」)のスライスID「スライス200」のスライスは、仮想ディスクアドレス「A1」のセグメントから切り離されたこととなる。
【0126】
次に、図11のステップS15に示したセカンダリ切り離し処理の詳細について説明する。
図14は、セカンダリ切り離し処理手順を示すシーケンス図である。以下、図14に示す処理をステップ番号に沿って説明する。
【0127】
[ステップS41]制御ノード500のスライス割り当て制御部511は、移行対象の仮想ディスク60のセグメントのうち、スライスコピー処理を行っていないセグメントを1つ選択する。データコピー指示部512は、選択したセグメントに割り当てられた各スライスを管理するディスクノード100,200に対して、メタデータ変更要求を送信する。
【0128】
例えば、プライマリのスライスを管理するディスクノード200に対しては、選択したセグメントに割り当てられていたスライスの状態を、プライマリ「P」からフリー「F」に変更することを示すメタデータ変更要求が送信される。セカンダリのスライスを管理するディスクノード100に対しては、選択したセグメントに割り当てられていたスライスの状態を、セカンダリ「S」からプライマリ「P」へ変更することを示すメタデータ変更要求が送信される。
【0129】
[ステップS42]ディスクノード200では、メタデータ変更要求をメタデータ管理部231が受信する。メタデータ管理部231は、メタデータ変更要求に従って、メタデータ記憶部240内のメタデータを更新する。すなわちメタデータ管理部231は、選択されたセグメントに割り当てられたセカンダリのスライスのメタデータの状態フラグを、プライマリ「P」からフリー「F」に変更する。また、メタデータ管理部231は、状態フラグを変更したメタデータの、仮想ディスクID、仮想ディスクアドレス、ペアのディスクノードID、およびペアのスライスIDの各欄の設定内容を削除する。さらにメタデータ管理部231は、メタデータ記憶部240に対するメタデータ更新処理と同様のメタデータ更新処理を、ストレージ装置210内のメタデータに対しても行う。メタデータの更新が完了すると、メタデータ管理部231は、変更完了応答を制御ノード500に送信する。
【0130】
[ステップS43]ディスクノード100では、メタデータ変更要求をメタデータ管理部142が受信する。メタデータ管理部142は、メタデータ変更要求に従って、メタデータ記憶部150内のメタデータを更新する。すなわちメタデータ管理部142は、選択されたセグメントに割り当てられたセカンダリのスライスのメタデータの状態フラグを、セカンダリ「S」からプライマリ「P」に変更する。また、メタデータ管理部142は、状態フラグを変更したメタデータの、ペアのディスクノードID、およびペアのスライスIDの各欄の設定内容を削除する。さらにメタデータ管理部142は、メタデータ記憶部150に対するメタデータ更新処理と同様のメタデータ更新処理を、メタデータ用ディスク122内のメタデータに対しても行う。メタデータの更新が完了すると、メタデータ管理部142は、変更完了応答を制御ノード500に送信する。
【0131】
[ステップS44]制御ノード500では、スライス割り当て制御部511が、各ディスクノード100,200から送信された変更完了応答を受信する。すると、スライス割り当て制御部511は、仮想ディスクメタデータ記憶部520内のメタデータについても、ステップS41においてメタデータ変更要求で指示した内容と同様に更新する。
【0132】
図14に示したセカンダリ切り離し処理が、移行対象の仮想ディスク60内のセグメントごとに実行される。例えば、制御ノード500のスライス割り当て制御部511は、ステップS44の処理が完了すると、仮想ディスク60内の未選択のセグメントの有無を判断する。未選択のセグメントがあれば、スライス割り当て制御部511は、図14に示したセカンダリ切り離し処理を、ステップS41から開始する。未選択のセグメントがなければ、図11に示すセカンダリ切り離し処理(ステップS15)が完了し、スライス割り当て制御部511から管理ノード400へ移行完了応答が送信される。
【0133】
図15は、セカンダリ切り離し処理で更新されたメタデータの例を示す図である。図15には、セカンダリ切り離し処理後の状態が示されているディスクノード100(ディスクノードID「DP1」)のスライスID「スライス1001」のスライスのメタデータは、状態がプライマリ「P」に変更されている。また、そのメタデータには、ペアのディスクノードIDとペアのスライスIDとは、内容が削除され「NULL」に変更されている。
【0134】
ディスクノード200(ディスクノードID「DP2」)のスライスID「スライス100」のスライスのメタデータには、状態がフリー「F」に変更されている。また、そのメタデータの仮想ディスクID、仮想ディスクアドレス、ペアのディスクノードID、およびペアのスライスIDの内容は、「NULL」に変更されている。これにより、ディスクノード200(ディスクノードID「DP2」)のスライスID「スライス100」のスライスは、仮想ディスクアドレス「A1」のセグメントから切り離されたこととなる。
【0135】
すべてのデータ移行処理が完了すると、移行先ディスク121内のスライスはすべてプライマリスライスとなる。
図16は、データ移行後のメタデータ用ディスク内のメタデータの例を示す図である。図16に示す用に、メタデータ用ディスク122内の各メタデータ122a,122b,・・・,122nは、状態がすべてプライマリ「P」となっている。
【0136】
以上のようにして、仮想ディスク60内のデータが、移行先ディスク121に移行される。移行後は、仮想ディスク60における仮想ディスクアドレスの順に、移行先ディスク121の上位から順番のスライスにデータが移行される。データ移行後は、アクセスノード30から仮想ディスク60を指定したアクセスを停止すれば、移行先ディスク121をマルチノードストレージシステムから切り離すことができる。具体的には、移行先ディスク121を有するストレージ装置120を、ディスクノード100から切り離すことができる。そして、ストレージ装置120をSANシステムに接続することで、仮想ディスク60内のデータのシステム間の移行が完了する。
【0137】
ところで、第2の実施の形態では、仮想ディスク60内のデータの移行が完了するまで、メタデータ用ディスク122に格納されたメタデータを用いて、移行先ディスク121内のデータをマルチストレージシステムの管理下に置くことができる。そのため、例えばデータ移行中に何れかのノードに故障が発生した場合、データ移行処理を中止し、データの保守を行うことができる。
【0138】
図17は、ノード故障時の制御ノードにおける処理手順を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
[ステップS51]制御ノード500の仮想ディスク管理部510は、ディスクノードまたはストレージ装置の故障を検出する。例えば各ディスクノード100,200,300から定期的にハートビートが出力される場合、仮想ディスク管理部510は所定期間以上ハートビートが途絶えたディスクノードについて、故障したものと判定する。なお、ハートビートとは、ディスクノード自身が正常に稼動していることを制御ノード500に知らせるために、所定間隔で出力する信号である。また、ディスクノード100,200,300のデータ管理部140,230,330は、ストレージ装置の故障を検知すると、ストレージ装置が故障した旨の情報(故障通知メッセージ)を制御ノード500に送信することもできる。この場合、制御ノード500の仮想ディスク管理部510は、故障通知メッセージに基づいて、ストレージ装置の故障を認識する。
【0139】
[ステップS52]スライス割り当て制御部511は、データ移行処理を中止する。例えば、スライスコピー処理(図11のステップS14)やセカンダリ切り離し処理(図11のステップS15)の途中であった場合、スライス割り当て制御部511は、新たなセグメントの選択を行わずに、データ移行処理を終了する。
【0140】
[ステップS53]スライス割り当て制御部511は、各ディスクノード100,200,300からスライス情報を取得する。例えばスライス割り当て制御部511は、各ディスクノード100,200,300に対して、メタデータ照会要求を送信する。故障せずに動作しているディスクノードのメタデータ管理部は、メタデータ照会要求に応答し、メタデータ記憶部内のメタデータを制御ノード500に送信する。スライス割り当て制御部511は、ディスクノードから送られたメタデータに基づいて、仮想ディスクメタデータ記憶部520内のメタデータを更新する。
【0141】
このとき、故障しているディスクノードからはメタデータが送られてこない。そのため、仮想ディスクメタデータ記憶部520内の更新後のメタデータに基づいて仮想ディスク60のセグメントへのスライスの割り当てを判断すると、プライマリとセカンダリとの一方しか割り当てられていないセグメントが生じ得る。
【0142】
ストレージ装置の故障の場合、例えばディスクノードのメタデータ管理部において、故障したストレージ装置内のスライスに対応するメタデータを、制御ノード500に送信しないようにすることができる。また、制御ノード500のスライス割り当て制御部511が、故障したストレージ装置内のスライスに対応するメタデータについては、仮想ディスクメタデータ記憶部520に格納しないようにすることもできる。
【0143】
[ステップS54]スライス割り当て制御部511は、シングルプライマリ化の処理を行う。シングルプライマリ化処理とは、冗長性が損なわれたセグメントに割り当てられているスライスを、シングルプライマリの状態(状態フラグが「SP」)にする処理である。この処理の詳細は後述する(図18参照)。
【0144】
[ステップS55]スライス割り当て制御部511は、再2重化処理を行う。再2重化処理では、冗長性が損なわれたセグメントのデータを2重化する処理である。この処理の詳細は後述する(図19参照)。
【0145】
このような手順で、データ移行の途中でディスクノードの故障が発生しても、冗長性が損なわれたセグメントの2重化を回復させることができる。すなわち、ディスクノード100のメタデータ管理部142は、メタデータ照会要求に応答し、移行先ディスク121内のスライスに対応するメタデータについても制御ノード500に送信する。これにより、例えばスライスコピー処理完了後、セカンダリ切り離し処理中にストレージ装置110以外のストレージ装置210,310が故障した場合でも、仮想ディスク60の2重化の復旧が可能となる。
【0146】
図18は、シングルプライマリ化処理の手順を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS61]スライス割り当て制御部511は、仮想ディスクメタデータ記憶部520内のメタデータを参照し、ステップS62において未選択の異常セグメントの有無を判断する。異常セグメントとは、プライマリスライスとセカンダリスライスとの何れか一方しか割り当てられていないセグメントである。例えばスライス割り当て制御部511は、仮想ディスク60の仮想ディスクアドレスが小さい順にセグメントを抽出する。そして、スライス割り当て制御部511は、抽出したセグメントに割り当てられたスライスを仮想ディスクメタデータ記憶部520から検索する。検索によりプライマリスライスとセカンダリスライスとの何れか一方しか見つからなければ、スライス割り当て制御部511は、抽出したセグメントを異常セグメントと判断する。
【0147】
ステップS61で未選択の異常セグメントがある場合、処理がステップS62に進められる。ステップS61で未選択の異常セグメントがなければ、シングルプライマリ化の処理が終了する。
【0148】
[ステップS62]スライス割り当て制御部511は、ステップS61で検出した異常セグメントを1つ選択する。
[ステップS63]スライス割り当て制御部511は、選択した異常セグメントに割り当てられているスライスを管理しているディスクノードへ、該当スライスの状態をシングルプライマリ「SP」に変更することを指示するメタデータ変更要求を送信する。なお、選択した異常セグメントに割り当てられているスライスの状態は、プライマリスライス(状態「P」)の場合と、セカンダリスライス(状態「S」)の場合とがある。
【0149】
メタデータ変更要求を受信したディスクノードでは、異常セグメントに割り当てられているスライスの状態が、シングルプライマリ「SP」に変更される。スライス割り当て制御部511は、メタデータ変更要求を送信したディスクノードから変更完了応答を受信すると、処理をステップS61に進める。
【0150】
このようにして、冗長性が損なわれた異常セグメントに割り当てられているスライスの状態が、すべてシングルプライマリ「SP」に変更される。
図19は、再2重化処理の手順を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。
【0151】
[ステップS71]スライス割り当て制御部511は、仮想ディスクメタデータ記憶部520内のメタデータを参照し、ステップS72において未選択の異常セグメントの有無を判断する。再2重化処理を実行時には、異常セグメントは、シングルプライマリスライスが割り当てられているセグメントである。例えばスライス割り当て制御部511は、仮想ディスク60の仮想ディスクアドレスが小さい順にセグメントを抽出する。そして、スライス割り当て制御部511は、抽出したセグメントに割り当てられたスライスを仮想ディスクメタデータ記憶部520から検索する。検索によりシングルプライマリスライスが見つかれば、スライス割り当て制御部511は、抽出したセグメントを異常セグメントと判断する。
【0152】
ステップS71で未選択の異常セグメントがある場合、処理がステップS72に進められる。ステップS71で未選択の異常セグメントがなければ、シングルプライマリ化の処理が終了する。
【0153】
[ステップS72]スライス割り当て制御部511は、ステップS71で検出した異常セグメントを1つ選択する。
[ステップS73]スライス割り当て制御部511は、仮想ディスクメタデータ記憶部520内のメタデータを参照し、プライマリスライスとは別のディスクノードで管理されているフリーのスライスを1つ選択する。
【0154】
[ステップS74]スライス割り当て制御部511は、ステップS73で選択したスライスの状態をフリー「F」からリザーブ「R」に変更することを指示するメタデータ変更要求を、ステップS73で選択したスライスを管理するディスクノードに送信する。メタデータ変更要求では、ステップS73で選択したスライスを、ステップS72で選択したセグメントに割り当てることも示される。メタデータ変更要求を受信したディスクノードでは、メタデータ変更要求で指定されたスライスが、ステップS72で選択したセグメントに割り当てられ、状態がリザーブ「R」に変更される。
【0155】
またスライス割り当て制御部511は、選択したセグメントのシングルプライマリスライスを管理するディスクノードに対して、シングルプライマリスライスからプライマリスライスへの状態の変更を指示するメタデータ変更要求を送信する。プライマリスライスへの変更を指示するメタデータ変更要求を受信したディスクノードでは、メタデータ変更要求に従ってメタデータが変更される。
【0156】
スライス割り当て制御部511は、メタデータ変更要求を送信した各ディスクノードから変更完了応答を受信すると、処理をステップS75に進める。
[ステップS75]データコピー指示部512は、ステップS72で選択したセグメントのシングルプライマリスライスを管理するディスクノードに対して、シングルプライマリスライス内のデータのコピー要求を送信する。コピー要求では、コピー先として、ステップS74でリザーブに変更したスライスが指定される。コピー要求を受信したディスクノードでは、指定されたシングルプライマリスライスのデータを、リザーブスライスを管理するディスクノードに送信する。リザーブスライスを管理するディスクノードは、シングルプライマリスライスのデータを受信し、リザーブスライスに書き込む。リザーブスライスを管理するディスクノードは、リザーブスライスへのデータの書き込みが完了すると、シングルプライマリスライスを管理するディスクノードへ書き込み完了応答を送信する。シングルプライマリスライスを管理するディスクノードは、書き込み完了応答を受信すると、制御ノード500に対してコピー完了応答を送信する。スライス割り当て制御部511は、コピー完了応答を受信すると、処理をステップS76に進める。
【0157】
[ステップS76]スライス割り当て制御部511は、ステップS72で選択したセグメントに割り当てられたスライスを管理するディスクノードに対して、メタデータ変更要求を送信する。具体的には、スライス割り当て制御部511は、選択したセグメントのリザーブスライスを管理するディスクノードに対して、リザーブスライスからセカンダリスライスへの状態の変更を指示するメタデータ変更要求を送信する。
【0158】
メタデータ変更要求を受信した各ディスクノードでは、メタデータ変更要求に従ってメタデータが変更される。スライス割り当て制御部511は、メタデータ変更要求を送信したディスクノードから変更完了応答を受信すると、処理をステップS71に進める。
【0159】
次に、ノード故障時の処理を、具体例を用いて説明する。
まず、ステップS61における異常セグメントか否か判断内容を、具体例を用いて説明する。
【0160】
図20は、セグメントに割り当てられたスライスのメタデータの例を示す図である。図20には、セグメントに割り当てられたスライスのメタデータの例として、6つのパターンが示されている。なお、図20では、メタデータに含まれるペアのディスクノードIDとペアのスライスIDとの欄は省略されている。
【0161】
第1のパターンは、判断対象のセグメントに対して、プライマリスライス、セカンダリスライス、およびブランクスライスが割り当てられている例である。この場合、スライス割り当て制御部511は、判断対象のセグメントを正常なセグメントと判定する。
【0162】
第2のパターンは、判断対象のセグメントに対して、プライマリスライスとセカンダリスライスとが割り当てられている例である。この場合、スライス割り当て制御部511は、判断対象のセグメントを正常なセグメントと判定する。
【0163】
第3のパターンは、判断対象のセグメントに対して、ブランクスライスとセカンダリスライスとが割り当てられている例である。この場合、スライス割り当て制御部511は、判断対象のセグメントを異常なセグメントと判定する。
【0164】
第4のパターンは、判断対象のセグメントに対して、ブランクスライスとプライマリスライスとが割り当てられている例である。この場合、スライス割り当て制御部511は、判断対象のセグメントを異常なセグメントと判定する。
【0165】
第5のパターンは、判断対象のセグメントに対して、プライマリスライスのみが割り当てられている例である。この場合、スライス割り当て制御部511は、判断対象のセグメントを異常なセグメントと判定する。
【0166】
第6のパターンは、判断対象のセグメントに対して、セカンダリスライスのみが割り当てられている例である。この場合、スライス割り当て制御部511は、判断対象のセグメントを異常なセグメントと判定する。
【0167】
このように図20に示した例では、第3から第6のパターンに該当するセグメントが異常と判定され、スライスのシングルプライマリへの変更が行われる。
図21は、シングルプライマリへの変更例を示す図である。図21に示すように、プライマリスライスとセカンダリスライスとが、シングルプライマリスライスに変更される。ブランクスライスについては、変更されない。
【0168】
変更後のメタデータは、所定のタイミングでアクセスノード30に通知される。例えばアクセスノード30は、スライスへのアクセスを行いエラーが発生すると、制御ノード500に対して、該当スライスが割り当てられていたセグメントに関するメタデータ照会要求を送信する。すると、制御ノード500の仮想ディスク管理部510が、指定されたセグメントに割り当てられたスライスのメタデータを仮想ディスクメタデータ記憶部520から取得し、アクセスノード30に送信する。これにより、アクセスノード30は最新のメタデータを取得することができる。
【0169】
アクセスノード30は、セグメント内のデータにアクセスする場合、そのセグメントに割り当てられたプライマリスライスまたはシングルプライマリスライスにアクセスする。そのため、図21に示すようにシングルプライマリ化を行うことで、アクセスノード30から異常セグメント内のデータへのアクセスが可能となる。
【0170】
シングルプライマリ化が完了すると、スライス割り当て制御部511は、フリースライスを選択して、異常セグメントのリザーブスライスとする。
図22は、異常セグメントにリザーブスライス割り当て後のメタデータの例を示す図である。図22に示すように、リザーブスライスは、シングルプライマリスライスを管理しているディスクノードとは別のディスクノードが管理するスライスから選択される。この際、シングルプライマリスライスは、プライマリスライスに変更される。また、ブランクスライスについては、変更されない。
【0171】
その後、プライマリスライスからリザーブスライスへのデータのコピーが行われ、リザーブスライスがセカンダリスライスに変更される。
図23は、再2重化完了後のメタデータの例を示す図である。図23に示すように、再2重化が完了することで、異常セグメントであったセグメントには、プライマリスライスとセカンダリスライスとが割り当てられ、冗長性が確保される。
【0172】
以上説明したように、マルチノードストレージシステムにおけるストレージ装置に分散配置されているデータを、各データを管理するディスクノードから移行先ディスク121にコピーするようにしたため、データ移行処理の負荷が1つのノードに集中せずにすむ。その結果、マルチノードストレージシステムの運用を安定的に継続しながら、仮想ディスク60内のデータの他のシステムで利用するストレージ装置120への移行を実行できる。
【0173】
しかも、SANなどのマルチノードストレージシステム以外のシステムに接続して使用する予定のストレージ装置120にデータを安全に移行することができる。すなわち、データ移行が完了するまではストレージ装置120内のデータを制御ノード500の管理下に置き、マルチノードストレージシステムによる高い信頼性を確保することができる。例えば、移行先ディスク121とは別にメタデータ用ディスク122を設けたことで、データ移行が完了するまでは、移行先ディスク121もマルチストレージシステム管理下の1つのストレージ装置として扱うことができる。そのため、データ移行中に障害などが発生しても、メタデータ用ディスク122内のメタデータを利用して、適切な復旧処理が可能となる。
【0174】
さらに、セカンダリスライスのデータを、移行先ディスク121にコピーするようにしたことで、アクセスノード30からプライマリスライスへのアクセスに影響を与えずに、データコピーを行うことができる。
【0175】
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、移行先ディスクに対して複数のディスクノードからアクセス可能としたものである。これにより、複数のディスクノードから並行して移行先ディスクにデータをコピーすることができ、データ移行に要する時間を短縮することができる。
【0176】
図24は、第3の実施の形態のマルチノードストレージシステムの構成例を示す図である。図24において、図2に示した第2の実施の形態の構成における要素と同じ要素には同じ符号を付し、説明を省略する。
【0177】
第3の実施の形態では、スイッチ10を介して、複数のディスクノード100a,200a,300a,制御ノード500a、アクセスノード30、管理ノード400a、およびストレージ装置600が接続されている。ストレージ装置600は、例えばiSCSI(Internet Small Computer System Interface)によってスイッチ10に接続されている。
【0178】
ディスクノード100aには、ストレージ装置110が接続されている。ディスクノード200aには、ストレージ装置210が接続されている。ディスクノード300aには、ストレージ装置310が接続されている。
【0179】
ストレージ装置600には、複数のHDD601,602,603,604が実装されている。ストレージ装置600は、内蔵するHDDを用いたRAIDシステムである。
ディスクノード100a,200a,300aは、接続されたストレージ装置110,210,310に格納されたデータを管理し、管理しているデータをスイッチ10経由で端末装置21,22,23に提供する。またディスクノード100a,200a,300aは、ストレージ装置600を論理的に接続することができる。論理的に接続するとは、ストレージ装置600に対して、直接接続されたストレージ装置と同様にアクセス可能とすることである。
【0180】
制御ノード500aは、ディスクノード100a,200a,300aを管理する。例えば、制御ノード500aは、ディスクノード100a,200a,300aから新たなストレージ装置の接続通知を受け取ると、仮想ディスク60を介して、接続されたストレージ装置に格納されていたデータにアクセスできるようにする。
【0181】
なお、ディスクノード100a,200a,300aと制御ノード500aとは、図3に示したディスクノード100と同様のハードウェア構成で実現できる。
図25は、第3の実施の形態に係るマルチノードストレージシステムの各装置の機能を示すブロック図である。
【0182】
制御ノード500aは、仮想ディスク管理部510aと仮想ディスクメタデータ記憶部520aとを有している。
仮想ディスク管理部510aは、ディスクノード100a,200a,300aが有するストレージ装置110,210,310,600内のスライスを管理する。例えば、仮想ディスク管理部510aは、システム起動時に、ディスクノード100a,200a,300aに対してメタデータ取得要求を送信する。そして、仮想ディスク管理部510aは、メタデータ取得要求に対して返信されたメタデータから仮想ディスクメタデータを生成し、仮想ディスクメタデータ記憶部520aに格納する。
【0183】
また仮想ディスク管理部510aは、管理ノード400aから仮想ディスク内のデータの移行指示を受け取ると、指定された仮想ディスク内のデータの指定されたストレージ装置へのコピーを、その仮想ディスクのデータを管理するディスクノードに指示する。仮想ディスク管理部510aは、移行指示に応じたデータのコピーが完了すると、管理ノード400aに対して移行完了応答を送信する。
【0184】
仮想ディスクメタデータ記憶部520aは、ディスクノード100a,200a,300aから収集されたメタデータに基づいて生成された仮想ディスクメタデータを記憶する。例えば、制御ノード500a内のRAMの記憶領域の一部が仮想ディスクメタデータ記憶部520aとして使用される。
【0185】
ディスクノード100aは、データアクセス部130a、データ管理部140a、およびメタデータ記憶部150aを有している。
データアクセス部130aは、アクセスノード30からの要求に応答して、ストレージ装置110内のデータにアクセスする。データ管理部140aは、スイッチ10にストレージ装置600が物理接続された場合に、ストレージ装置600をマルチストレージシステム内の一ストレージ装置として論理的に接続する。すなわちデータ管理部140aは、ストレージ装置600を、ディスクノード100a経由で制御ノード500aから認識できるようにする。
【0186】
またデータ管理部140aは、データアクセス部130aによってライト要求に基づくデータの書き込みが行われた場合、データが書き込まれたスライス(プライマリスライス)に対応するセカンダリスライス内のデータを更新する。すなわち、データ管理部140aは、更新されたデータを、セカンダリスライスを管理するディスクノードに送信する。そのデータを受け取ったディスクノードのデータ管理部は、セカンダリスライスにそのデータを書き込む。これにより、2重化されたデータの一貫性が保たれる。
【0187】
さらに、データ管理部140aは、仮想ディスク管理部510aからのメタデータ取得要求に応答して、メタデータ記憶部150aに記憶されたメタデータを仮想ディスク管理部510aに対して送信する。
【0188】
メタデータ記憶部150aは、メタデータを記憶する。例えば、RAM内の記憶領域の一部がメタデータ記憶部150aとして使用される。なお、メタデータ記憶部150aに格納されるメタデータは、システム停止時にはストレージ装置110内に格納され、システム起動時にメタデータ記憶部150aに読み込まれる。
【0189】
他のディスクノード200a,300aは、ディスクノード100aと同様の機能を有している。すなわち、ディスクノード200aは、データアクセス部220a、データ管理部230a、およびメタデータ記憶部240aを有している。ディスクノード300aは、データアクセス部320a、データ管理部330a、およびメタデータ記憶部340aを有している。ディスクノード200a,300a内の各要素は、ディスクノード100a内の同名の要素と同じ機能を有している。
【0190】
管理ノード400aは、管理者からの操作入力に応答して、マルチストレージシステムの管理用の指示を、各ノードに送信する。例えば、管理者は、ストレージ装置600とスイッチ10とをケーブルで接続(物理接続)した場合、管理ノード400aに対してストレージ装置600の論理的な接続を指示する操作入力を行う。すると管理ノード400aは、管理者からの操作入力に応答して各ディスクノード100a,200a,300aに対して、新たに物理接続されたストレージ装置600の接続指示を送信する。その接続指示に基づいてディスクノード100a,200a,300aがストレージ装置600内にメタデータの格納などの処理を行い、ストレージ装置600を制御ノード500aにおいて認識可能とする。接続指示に応じた処理が完了すると、ディスクノード100a,200a,300aから管理ノード400aへ接続完了応答が返される。
【0191】
図25の例は、仮想ディスク60のデータをストレージ装置600に移行する場合を想定している。この場合、ストレージ装置600には、制御ノード500aによって、移行先ディスク611と複数のメタデータ用ディスク612〜614とが設けられる。なお、移行先ディスク611とメタデータ用ディスク612〜614とは、それぞれストレージ装置600内のHDDで構成されるRAID構成のディスクグループを複数分割することで得られる仮想的なディスクである。移行先ディスク611とメタデータ用ディスク612〜614として使用される仮想的なディスクは、図4に示したマルチノードストレージシステムにおける仮想ディスク60とは異なり、1つのストレージ装置600内のHDDにより実現されている。移行先ディスク611とメタデータ用ディスク612〜614とには、論理ユニット番号(LUN)などの識別子が割り振られ、識別子によってディスクノード100a,200a,300aで識別される。図25の例では、移行先ディスク611には、識別子「LU」のディスクが使用されている。メタデータ用ディスク612には、識別子「LU1」のディスクが使用されている。メタデータ用ディスク613には、識別子「LU2」のディスクが使用されている。メタデータ用ディスク614には、識別子「LU3」のディスクが使用されている。
【0192】
3つのメタデータ用ディスク612〜614は、それぞれディスクノード100a,200a,300aに対応する。各ディスクノード100a,200a,300aは、対応するメタデータ用ディスクに、移行先ディスク611内の自己の管理するスライスのメタデータを格納する。
【0193】
次に、仮想ディスク60からストレージ装置600へのデータ移行の実施に利用される各ノードの機能について、詳細に説明する。
図26は、データ移行に利用される各ノードの機能を示す図である。制御ノード500aの仮想ディスク管理部510aは、仮想ディスクのデータ移行のために、スライス割り当て制御部511aおよびデータコピー指示部512aを有する。
【0194】
スライス割り当て制御部511aは、システム起動時などに、各ディスクノード100a,200a,300aに対してメタデータ照会要求を送信する。するとディスクノード100a,200a,300aからメタデータが応答される。またスライス割り当て制御部511aは、データコピー対象のスライスを選択し、該当スライスを管理しているディスクノードに対して、コピーの進行状況に応じてメタデータの更新を指示する。データコピー指示部512aは、データコピーのコピー元となるスライスを管理するディスクノードに対して、移行先ディスク611aへの該当スライス内のデータの送信を指示する。
【0195】
ディスクノード100aのデータ管理部140aは、移行先ストレージ接続部141a、メタデータ管理部142a、およびデータコピー部143aを有する。
移行先ストレージ接続部141aは、スイッチ10に接続されたストレージ装置600の存在を制御ノード500aに認識させる。例えば、移行先ストレージ接続部141aは、管理ノード400aからの接続指示を受けると、スイッチ10を介して接続されているストレージ装置の探索を行い、未認識のストレージ装置600を検出する。移行先ストレージ接続部141aは、検出したストレージ装置600をOSに認識させる。さらに移行先ストレージ接続部141aは、検出したストレージ装置600内の1つの仮想的なディスクを移行先ディスク611とし、他の1つの仮想的なディスクを、自己の管理するメタデータ用ディスク612とする。そして移行先ストレージ接続部141aは、メタデータ用ディスク612に、移行先ディスク611内の記憶領域を分割して得られるスライスのうち、ディスクノード100aが管理するスライスのメタデータを格納する。その後、移行先ストレージ接続部141aは、接続完了応答を管理ノード400aに送信する。
【0196】
メタデータ管理部142aは、制御ノード500aからのメタデータ照会要求に応答して、メタデータ記憶部150a内のメタデータを制御ノード500aに送信する。また、メタデータ管理部142aは、制御ノード500aからの指示に従って、メタデータを更新する。
【0197】
データコピー部143aは、制御ノード500aからの指示に従って、仮想ディスク60のセグメントに割り当てられたスライス内のデータを、移行先ディスク611内のスライスにコピーする。また、データコピー部143aは、他のディスクノード200a,300aから、移行先ディスク611内のスライスをコピー先としてデータを受信すると、受信したデータを、コピー先として指定されたスライスに格納する。
【0198】
ディスクノード200aのデータ管理部230aは、移行先ストレージ接続部231a、メタデータ管理部232a、およびデータコピー部233aを有する。移行先ストレージ接続部231a、メタデータ管理部232a、およびデータコピー部233aの機能は、それぞれディスクノード100aの移行先ストレージ接続部141a、メタデータ管理部142a、およびデータコピー部143aと同じである。ただし、移行先ストレージ接続部231aは、管理ノード400aから接続指示を受けた場合、管理するメタデータ用ディスク612とは別の仮想的なディスクを、自己の管理するメタデータ用ディスク613とする。
【0199】
ディスクノード300aのデータ管理部330aは、移行先ストレージ接続部331a、メタデータ管理部332a、およびデータコピー部333aを有する。移行先ストレージ接続部331a、メタデータ管理部332a、およびデータコピー部333aの機能は、それぞれディスクノード100aの移行先ストレージ接続部141a、メタデータ管理部142a、およびデータコピー部143aと同じである。ただし、移行先ストレージ接続部331aは、管理ノード400aから接続指示を受けた場合、管理するメタデータ用ディスク612,613とは別の仮想的なディスクを、自己の管理するメタデータ用ディスク614とする。
【0200】
次に、データ移行処理の手順について説明する。
図27は、第3の実施の形態におけるデータ移行処理の手順を示すシーケンス図である。以下、図27に示す処理を、ステップ番号に沿って説明する。
【0201】
[ステップS81]管理ノード400aからディスクノード100a,200a,300aに接続指示が出される。例えば、管理者は管理ノード400aに対して、データの移行を指示する。管理ノード400aは、指定されたディスクノード100a,200a,300aに対して、仮想ディスク60の仮想ディスクID、仮想ディスク60のセグメント数を指定した接続指示を送信する。第3の実施の形態では、接続指示に、各ディスクノード100a,200a,300aが管理を担当する仮想ディスク60内の領域を示す担当領域情報が含まれる。
【0202】
また管理ノード400aは、例えば、移行先ディスク611、仮想ディスク、メタデータ用ディスク612〜614とするストレージ装置600内の仮想ディスクの識別番号(例えば、RAIDのLUN)を接続指示に含めることができる。これにより、各ディスクノード100a,200a,300aは、移行先ディスク611と、自己の管理するメタデータを格納するメタデータ用ディスク612〜614とを認識できる。
【0203】
ディスクノード100aは、管理ノード400aからの接続指示に応答して、データ移行先となるストレージ装置600をマルチノードストレージシステムの配下のストレージ装置として接続する。例えば、ディスクノード100aの移行先ストレージ接続部141aは、スイッチ10を介して接続されている未認識のストレージ装置を検索することで、ストレージ装置600を認識する。そして移行先ストレージ接続部141aは、ストレージ装置600内の1つの仮想的なディスクを移行先ディスク611、他の1つのディスクをメタデータ用ディスク612として、ディスクノード100aのOSに認識させる。この時点では、移行先ディスク611とメタデータ用ディスク612との内容はブランクである。その後、移行先ストレージ接続部141aは、メタデータ用ディスク612にメタデータを格納する。なお、移行先ディスク611については、接続時には書き込みは行われない。
【0204】
メタデータ用ディスク612へ格納するメタデータの内容は、管理ノード400aからの指示に従って行われる。例えば、管理ノード400aからの接続指示において、データの移行を行う仮想ディスク60の仮想ディスクIDと、仮想ディスク60内の担当領域が指定される。担当領域は、ディスクノード100aが管理を担当するセグメントである。移行先ストレージ接続部141aは、仮想ディスク60の担当するセグメントに割り当てるスライスに対応するメタデータを作成し、そのメタデータの仮想ディスクIDの欄には、仮想ディスク60の仮想ディスクIDを設定する。そして移行先ストレージ接続部141aは、作成したメタデータと、メタデータの格納形式を示すデバイス情報とを、メタデータ用ディスク612に格納する。この際、移行先ストレージ接続部141aは、メタデータ用ディスク612に格納したメタデータを、メタデータ記憶部150aにも格納する。その後、移行先ストレージ接続部141aは、管理ノード400aに対して接続完了応答を送信する。
【0205】
[ステップS82]ディスクノード200aの移行先ストレージ接続部231aは、ディスクノード100aと同様に、管理ノード400aからの接続指示に従って、移行先ディスク611とメタデータ用ディスク613を認識する。そして移行先ストレージ接続部231aは、メタデータ用ディスク613内に、ディスクノード200aが管理を担当するセグメントに割り当てるスライスに対応するメタデータを作成し、メタデータ用ディスク613に格納する。その後、移行先ストレージ接続部231aは、管理ノード400aに接続完了応答を送信する。
【0206】
[ステップS83]ディスクノード300aの移行先ストレージ接続部331aは、ディスクノード100aと同様に、管理ノード400aからの接続指示に従って、移行先ディスク611とメタデータ用ディスク614を認識する。そして移行先ストレージ接続部331aは、メタデータ用ディスク614内に、ディスクノード300aが管理を担当するセグメントに割り当てるスライスに対応するメタデータを作成し、メタデータ用ディスク614に格納する。その後、移行先ストレージ接続部331aは、管理ノード400aに接続完了応答を送信する。
【0207】
[ステップS84]管理ノード400aから制御ノード500aに移行指示が出される。例えば、移行指示には、データの移行先となるストレージ装置600を接続したディスクノード100a,200a,300aのディスクノードIDが指定されている。制御ノード500aのスライス割り当て制御部511aは、移行指示で指定されたディスクノード100a,200a,300aに対して、メタデータ照会要求を送信する。
【0208】
[ステップS85]メタデータ照会要求を受け取ったディスクノード100aでは、メタデータ管理部142aがメタデータ記憶部150aからメタデータを取得し、制御ノード500aに送信する。なお、メタデータ管理部142aは、メタデータ記憶部150aからストレージ装置600内のスライスのメタデータのみを取得し、取得したメタデータを制御ノード500aに送信してもよい。
【0209】
[ステップS86]メタデータ照会要求を受け取ったディスクノード200aでは、メタデータ管理部232aがメタデータ記憶部240aからメタデータを取得し、制御ノード500aに送信する。なお、メタデータ管理部232aは、メタデータ記憶部240aからストレージ装置600内のスライスのメタデータのみを取得し、取得したメタデータを制御ノード500aに送信してもよい。
【0210】
[ステップS87]メタデータ照会要求を受け取ったディスクノード300aでは、メタデータ管理部332aがメタデータ記憶部340aからメタデータを取得し、制御ノード500aに送信する。なお、メタデータ管理部332aは、メタデータ記憶部340aからストレージ装置600内のスライスのメタデータのみを取得し、取得したメタデータを制御ノード500aに送信してもよい。
【0211】
[ステップS88]メタデータを受信した制御ノード500aのスライス割り当て制御部511aは、受信したメタデータにより仮想ディスクメタデータ記憶部520a内のメタデータを更新する。そして、データコピー指示部512aの制御の下、ディスクノード100a,200a,300aによるスライス内のデータの移行先ディスク611へのコピー処理が行われる。
【0212】
[ステップS89]データのコピーが完了すると、制御ノード500aのスライス割り当て制御部511aの制御の下、仮想ディスク60のセグメントに対するセカンダリスライスの切り離し(割り当て解除)処理が行われる。スライス割り当て制御部511aは、セカンダリスライスの切り離し処理が完了すると、移行完了応答を管理ノード400aに送信する。
【0213】
このような手順で、仮想ディスク60内のデータが移行先ディスク611に移行される。
第3の実施の形態における第2の実施の形態との相違点として、複数のディスクノード100a,200a,300aで分担して移行先ディスク611を管理することがある。各ディスクノード100a,200a,300aには、接続指示の際に、それぞれが担当する仮想ディスク60内のセグメントが通知される。各ディスクノード100a,200a,300aは、担当するセグメントに対応する移行先ディスク611内のスライスを管理する。
【0214】
図28は、ディスクノードへの担当領域の通知例を示す図である。例えば、管理ノード400aは、担当領域情報71,72,73を含む接続指示を、ディスクノード100a,200a,300aに送信する。
【0215】
担当領域情報71,72,73には、移行先ディスクID、メタデータ用ディスクID、仮想ディスクID、仮想ディスク開始アドレス、および仮想ディスク終了アドレスのフィールドが設けられている。移行先ディスクIDのフィールドには、移行先ディスク611として使用するストレージ装置600内の仮想的なディスクの識別子が設定される。メタデータ用ディスクIDのフィールドには、管理を担当するスライスのメタデータの格納に使用するメタデータ用ディスクとして使用するストレージ装置600内の仮想的なディスクの識別子が設定される。仮想ディスクIDのフィールドには、移行対象の仮想ディスク60の仮想ディスクIDが設定される。仮想ディスク開始アドレスのフィールドには、管理を担当する複数のセグメントのうちの先頭のセグメントを示すアドレスが設定される。仮想ディスク終了アドレスのフィールドには、管理を担当する複数のセグメントのうちの最後部のセグメントを示すアドレスが設定される。
【0216】
例えばディスクノード100aには、担当領域情報71が送信されている。この担当領域情報71には、移行先ディスクID「LU」、メタデータ用ディスクID「LU1」、仮想ディスクID「LVOL1」、仮想ディスク開始アドレス「A1」、仮想ディスク終了アドレス「A10」が設定されている。
【0217】
このような担当領域情報71,72,73に基づいて、各ディスクノード100a,200a,300aは、自己の管理するセグメントを認識する。なお、移行先ディスク611内のスライスは、アドレスが小さい方から順に、アドレスの小さいセグメントに割り当てられるものとする。この場合、各ディスクノード100a,200a,300aは、自己の管理するセグメントを認識することで、そのセグメントのデータを格納するための移行先ディスク611内のスライスも一意に特定できる。
【0218】
図29は、各ディスクノードが管理するスライスとメタデータ用ディスクとを示す図である。ディスクノード100aに対して通知される担当領域情報71(図28参照)では、移行先ディスクID「LU」、仮想ディスク開始アドレス「A1」、および仮想ディスク終了アドレス「A10」が示されている。そこで、ディスクノード100aは、識別子「LU」の移行先ディスク611内の先頭のスライスID「スライス1001」のスライスから、スライスID「スライス1010」のスライスまでの10個のスライスを、自己の管理対象と認識する。またディスクノード100aに対して通知される担当領域情報71(図28参照)では、メタデータ用ディスクID「LU1」が示されている。そこで、ディスクノード100aは、識別子「LU1」のメタデータ用ディスク612内に、自己の管理するスライスのメタデータを格納する。
【0219】
ディスクノード200aに対して通知される担当領域情報72(図28参照)では、移行先ディスクID「LU」、仮想ディスク開始アドレス「A11」、および仮想ディスク終了アドレス「A20」が示されている。そこで、ディスクノード200aは、識別子「LU」の移行先ディスク611内のスライスID「スライス1011」のスライスから、スライスID「スライス1020」のスライスまでの10個のスライスを、自己の管理対象と認識する。またディスクノード200aに対して通知される担当領域情報72(図28参照)では、メタデータ用ディスクID「LU2」が示されている。そこで、ディスクノード200aは、識別子「LU2」のメタデータ用ディスク613内に、自己の管理するスライスのメタデータを格納する。
【0220】
ディスクノード300aに対して通知される担当領域情報73(図28参照)では、移行先ディスクID「LU」、仮想ディスク開始アドレス「A21」、および仮想ディスク終了アドレス「A30」が示されている。そこで、ディスクノード300aは、識別子「LU」の移行先ディスク611内のスライスID「スライス1021」のスライスから、スライスID「スライス1030」のスライスまでの10個のスライスを、自己の管理対象と認識する。またディスクノード300aに対して通知される担当領域情報73(図28参照)では、メタデータ用ディスクID「LU3」が示されている。そこで、ディスクノード300aは、識別子「LU3」のメタデータ用ディスク614内に、自己の管理するスライスのメタデータを格納する。
【0221】
図30は、各メタデータ用ディスク内に格納されたメタデータの例を示す図である。図30の例では、スライスコピー処理(図27のステップS88)の実行前のメタデータを示している。
【0222】
メタデータ用ディスク612には、ディスクノード100aが管理するスライスのメタデータが格納されている。そのためディスクノードIDの欄には、ディスクノード100aのディスクノードID「DP1」が設定されている。またメタデータ用ディスク612には、スライスIDが「スライス1001」〜「スライス1010」の各スライスに対応するメタデータが格納されている。スライスIDが「スライス1001」〜「スライス1010」の各スライスは、仮想ディスク60の仮想ディスクアドレス「A1」〜「A10」の各セグメントに割り当てられている。
【0223】
メタデータ用ディスク613には、ディスクノード200aが管理するスライスのメタデータが格納されている。そのためディスクノードIDの欄には、ディスクノード200aのディスクノードID「DP2」が設定されている。またメタデータ用ディスク613には、スライスIDが「スライス1011」〜「スライス1020」の各スライスに対応するメタデータが格納されている。スライスIDが「スライス1011」〜「スライス1020」の各スライスは、仮想ディスク60の仮想ディスクアドレス「A11」〜「A20」の各セグメントに割り当てられている。
【0224】
メタデータ用ディスク614には、ディスクノード300aが管理するスライスのメタデータが格納されている。そのためディスクノードIDの欄には、ディスクノード300aのディスクノードID「DP3」が設定されている。またメタデータ用ディスク614には、スライスIDが「スライス1021」〜「スライス1030」の各スライスに対応するメタデータが格納されている。スライスIDが「スライス1021」〜「スライス1030」の各スライスは、仮想ディスク60の仮想ディスクアドレス「A21」〜「A30」の各セグメントに割り当てられている。
【0225】
なお図30の例では、移行先ディスク611の各スライスのスライスIDは全ディスクノードで一意になるようにしているが、スライスIDは個々のディスクノード内で一意であればよい。すなわち、異なるディスクノードでスライスIDが重複しても、各メタデータのディスクノードIDとの組み合わせによってスライスを一意に識別可能である。
【0226】
図30に示すように、各メタデータ用ディスク612〜614内にメタデータが格納された後、スライスコピー処理(ステップS88)とセカンダリ切り離し処理(ステップS89)とが行われる。スライスコピー処理とセカンダリ切り離し処理の詳細は、移行先ディスク611を管理するディスクノードが複数あること以外は、第2の実施の形態と同様である。すなわち、制御ノード500aは、移行先ディスク610のスライスのメタデータ変更要求を送信する場合、該当スライスを管理しているディスクノードを判断し、該当ディスクノードに対してメタデータ変更要求を送信する。なお、移行先ディスク610のスライスをどのディスクノードが管理しているのかは、各ディスクノード100a,200a,300aから収集したメタデータのディスクノードIDの欄を参照することで判断できる。
【0227】
このように、移行先ディスク610のスライスの管理を複数のディスクノードで行うことで、データ移行の処理効率が向上する。また、移行先ディスク610のスライスのメタデータの変更などの処理が1つのディスクに集中せずにすみ、データ移行に関する処理でディスクノードの負荷が過大となることを抑制できる。
【0228】
〔第4の実施の形態〕
次に、第4の実施の形態について説明する。第4の実施の形態は、移行先ディスクが設けられたストレージ装置とは別のストレージ装置に、メタデータ用ディスクを設けるようにしたものである。
【0229】
図31は、第4の実施の形態のマルチノードストレージシステムの構成例を示す図である。図31において、図5に示した第2の実施の形態の構成における要素を同じ要素には同じ符号を付し、説明を省略する。
【0230】
第4の実施の形態では、図2に示した第2の実施の形態におけるストレージ装置120に代えて、2台のストレージ装置710,720がディスクノード100に接続されている。ストレージ装置710には、移行先ディスク711が設けられている。またストレージ装置720には、メタデータ用ディスク721が設けられている。
【0231】
移行先ディスク711に格納される情報は、第2の実施の形態における移行先ディスク121に格納される情報と同様である。メタデータ用ディスク721に格納される情報は、第2の実施の形態におけるメタデータ用ディスク122に格納される情報と同様である。すなわち、第2の実施の形態において1台のストレージ装置120内に設けられていた移行先ディスク121とメタデータ用ディスク122とのそれぞれに対応する情報が、第4の実施の形態では、複数のストレージ装置710,720に別個に格納されている。ディスクノード100は、スライスのデータを移行先ディスク711に格納し、各スライスのメタデータをメタデータ用ディスク721に格納する。
【0232】
このように、移行先ディスク711とメタデータ用ディスク721とをそれぞれ別個のストレージ装置710,720に設けることで、ストレージ装置710をSANなどの他のシステムに接続する際の処理が容易となる。すなわち、メタデータ用ディスク721は、データ移行中の信頼性確保のために設けられている。そのため移行先ディスク711を他のシステムに移行後は、メタデータ用ディスク721は使用されない。第2の実施の形態のように1つのストレージ装置120内に移行先ディスク121とメタデータ用ディスク122とを設けた場合、移行先ディスク121へのデータ移行完了後、メタデータ用ディスク122の削除処理が行われる。これは、使用する予定のないメタデータ用ディスク122がストレージ装置120内に残存していたのでは、資源の使用効率が低下するためである。一方、移行先ディスク711が設けられたストレージ装置710とは別のストレージ装置720にメタデータ用ディスク721を設けておけば、メタデータ用ディスク721の削除処理を行わずに、ストレージ装置720を他のシステムに接続できる。その結果、データ移行の作業効率が向上する。
【0233】
なお、ストレージ装置720に設けられたメタデータ用ディスク721は、移行先ディスク711へのデータ移行を行った仮想ディスクとは別の仮想ディスクのデータ移行を行うときに利用できる。そのため、メタデータ用ディスク721の削除処理は行わなくともよい。
【0234】
なお、図25に示した第3の実施の形態の例においても、メタデータ用ディスク612,613,614を、ストレージ装置600とは別のストレージ装置に設けることができる。
【0235】
〔その他の応用例〕
第2の実施の形態では、移行先ディスク121を有するストレージ装置120が、ディスクノード100に直接接続されているが、ストレージ装置120をスイッチ10経由でディスクノード100に接続してもよい。
【0236】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、管理ノード、制御ノード、ディスクノードなどが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0237】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0238】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0239】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
【0240】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0241】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) ネットワークを介して接続された複数のノードそれぞれが有する第1のストレージ装置にデータが分散して格納されている仮想ディスクに属するデータを、該複数のノードの1つとして用いられるコンピュータに管理させるデータ管理プログラムにおいて、
前記コンピュータに、
第2のストレージ装置内の、前記仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を前記仮想ディスク内の記憶領域に対応付け、
前記コンピュータが管理している前記仮想ディスクのデータを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする、
処理を実行させるためのデータ管理プログラム。
【0242】
(付記2) 前記コンピュータに、さらに、
前記コンピュータが管理している前記仮想ディスクのデータのコピーが完了すると、前記コンピュータが管理している前記仮想ディスクのデータが格納されていた前記コンピュータが有する前記第1のストレージ装置の記憶領域を開放する、
処理を実行させることを特徴とする付記1記載のデータ管理プログラム。
【0243】
(付記3) 前記コンピュータに、さらに、
前記コンピュータ以外のノードが管理している前記仮想ディスクの各データを該ノードから受信すると、受信した該データを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へ書き込む、
処理を実行させることを特徴とする付記1または2のいずれかに記載のデータ管理プログラム。
【0244】
(付記4) 前記コンピュータに、さらに、
第3のストレージ装置内に、前記移行先記憶領域内の単位記憶領域ごとの前記仮想ディスク内の記憶領域との対応関係、および前記移行先記憶領域内の単位記憶領域ごとのデータの有無を管理する管理情報を格納し、
前記仮想ディスクのデータをコピーする際には、前記管理情報を参照して、該データの前記仮想ディスク内での記憶領域に対応する前記移行先記憶領域内の単位記憶領域を特定し、特定した該単位記憶領域に該データをコピーし、
前記仮想ディスクのデータを前記移行先記憶領域へコピーすると、データがコピーされた前記移行先記憶領域内の単位記憶領域にデータが格納されたことを、前記管理情報に設定する、
処理を実行させることを特徴とする付記1乃至3のいずれかに記載のデータ管理プログラム。
【0245】
(付記5) 前記コンピュータに、さらに、
前記移行先記憶領域の前記仮想ディスク内の記憶領域との対応付けの際には、前記仮想ディスク内の全記憶領域のうちの前記コンピュータが前記移行先記憶領域との対応付けを担当する担当領域に、前記移行先記憶領域内の少なくとも一部の記憶領域を対応付け、
前記仮想ディスクのデータをコピーする際には、前記コンピュータが管理している前記仮想ディスクのデータのうち、前記担当領域以外の記憶領域のデータを、該データの前記仮想ディスク内での位置の前記移行先記憶領域との対応付けを担当するノードを介して、該データに対応する前記移行先記憶領域へコピーする、
処理を実行させることを特徴とする付記1乃至4のいずれかに記載のデータ管理プログラム。
【0246】
(付記6) 前記仮想ディスクは、データが2重化して前記複数のノードに分散格納されており、2重化されたデータのうち、優先して参照される一方のデータが第1の属性、他方のデータが第2の属性と定義されており、
前記コンピュータに、さらに、
前記仮想ディスクのデータをコピーする際には、前記第2の属性のデータを、該第2の属性のデータの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする処理を実行させることを特徴とする付記1乃至5のいずれかに記載のデータ管理プログラム。
【0247】
(付記7) 前記コンピュータに、さらに、
前記仮想ディスクのデータをコピーする際には、前記第2の属性データのコピー後、該第2の属性のデータを、優先して参照される前記第1の属性のデータに変更する処理を実行させることを特徴とする付記6記載のデータ管理プログラム。
【0248】
(付記8) ネットワークを介して接続された複数のノードを有し、前記複数のノードそれぞれが有する第1のストレージ装置に、仮想ディスク内のデータを分散して格納するストレージシステムにおいて、
前記複数のノードのうちの少なくとも1つのノードは、第2のストレージ装置内の、前記仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を前記仮想ディスク内の記憶領域に対応付け、
前記複数のノードは、それぞれ自己が管理している前記仮想ディスクのデータを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする、
ことを特徴とするストレージシステム。
【0249】
(付記9) 前記仮想ディスク内の単位記憶領域を順番に選択し、選択した該単位記憶領域のデータを管理するノードに対して、該データの前記移行先記憶領域へのコピーを指示する制御ノードをさらに有し、
前記ディスクノードは、前記制御ノードからの指示に応じて、自己が管理している前記仮想ディスクのデータを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする、
ことを特徴とする付記8記載のストレージシステム。
【0250】
(付記10) ネットワークを介して接続された複数のノードそれぞれが有する第1のストレージ装置にデータが分散して格納されている仮想ディスクに属するデータを、該複数のノードの1つとして用いられるコンピュータに管理させるデータ管理方法において、
前記コンピュータが、
第2のストレージ装置内の、前記仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を前記仮想ディスク内の記憶領域に対応付け、
前記コンピュータが管理している前記仮想ディスクのデータを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする、
ことを特徴とするデータ管理方法。
【符号の説明】
【0251】
1 仮想ディスク
2〜4,8 ストレージ装置
5〜7 ノード
5a 対応付け手段
5b,6a,7a コピー手段
8a 移行先記憶領域

【特許請求の範囲】
【請求項1】
ネットワークを介して接続された複数のノードそれぞれが有する第1のストレージ装置にデータが分散して格納されている仮想ディスクに属するデータを、該複数のノードの1つとして用いられるコンピュータに管理させるデータ管理プログラムにおいて、
前記コンピュータに、
第2のストレージ装置内の、前記仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を前記仮想ディスク内の記憶領域に対応付け、
前記コンピュータが管理している前記仮想ディスクのデータを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする、
処理を実行させるためのデータ管理プログラム。
【請求項2】
前記コンピュータに、さらに、
前記コンピュータが管理している前記仮想ディスクのデータのコピーが完了すると、前記コンピュータが管理している前記仮想ディスクのデータが格納されていた前記コンピュータが有する前記第1のストレージ装置の記憶領域を開放する、
処理を実行させることを特徴とする請求項1記載のデータ管理プログラム。
【請求項3】
前記コンピュータに、さらに、
第3のストレージ装置内に、前記移行先記憶領域内の単位記憶領域ごとの前記仮想ディスク内の記憶領域との対応関係、および前記移行先記憶領域内の単位記憶領域ごとのデータの有無を管理する管理情報を格納し、
前記仮想ディスクのデータをコピーする際には、前記管理情報を参照して、該データの前記仮想ディスク内での記憶領域に対応する前記移行先記憶領域内の単位記憶領域を特定し、特定した該単位記憶領域に該データをコピーし、
前記仮想ディスクのデータを前記移行先記憶領域へコピーすると、データがコピーされた前記移行先記憶領域内の単位記憶領域にデータが格納されたことを、前記管理情報に設定する、
処理を実行させることを特徴とする請求項1または2のいずれかに記載のデータ管理プログラム。
【請求項4】
前記コンピュータに、さらに、
前記移行先記憶領域の前記仮想ディスク内の記憶領域との対応付けの際には、前記仮想ディスク内の全記憶領域のうちの前記コンピュータが前記移行先記憶領域との対応付けを担当する担当領域に、前記移行先記憶領域内の少なくとも一部の記憶領域を対応付け、
前記仮想ディスクのデータをコピーする際には、前記コンピュータが管理している前記仮想ディスクのデータのうち、前記担当領域以外の記憶領域のデータを、該データの前記仮想ディスク内での位置の前記移行先記憶領域との対応付けを担当するノードを介して、該データに対応する前記移行先記憶領域へコピーする、
処理を実行させることを特徴とする請求項1乃至3のいずれかに記載のデータ管理プログラム。
【請求項5】
前記仮想ディスクは、データが2重化して前記複数のノードに分散格納されており、2重化されたデータのうち、優先して参照される一方のデータが第1の属性、他方のデータが第2の属性と定義されており、
前記コンピュータに、さらに、
前記仮想ディスクのデータをコピーする際には、前記第2の属性のデータを、該第2の属性のデータの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする処理を実行させることを特徴とする請求項1乃至4のいずれかに記載のデータ管理プログラム。
【請求項6】
ネットワークを介して接続された複数のノードを有し、前記複数のノードそれぞれが有する第1のストレージ装置に、仮想ディスク内のデータを分散して格納するストレージシステムにおいて、
前記複数のノードのうちの少なくとも1つのノードは、第2のストレージ装置内の、前記仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を前記仮想ディスク内の記憶領域に対応付け、
前記複数のノードは、それぞれ自己が管理している前記仮想ディスクのデータを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする、
ことを特徴とするストレージシステム。
【請求項7】
ネットワークを介して接続された複数のノードそれぞれが有する第1のストレージ装置にデータが分散して格納されている仮想ディスクに属するデータを、該複数のノードの1つとして用いられるコンピュータに管理させるデータ管理方法において、
前記コンピュータが、
第2のストレージ装置内の、前記仮想ディスクの記憶容量に相当する記憶領域を移行先記憶領域とし、該移行先記憶領域を前記仮想ディスク内の記憶領域に対応付け、
前記コンピュータが管理している前記仮想ディスクのデータを、該データの前記仮想ディスク内での位置に対応する前記移行先記憶領域内の位置へコピーする、
ことを特徴とするデータ管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate


【公開番号】特開2011−258103(P2011−258103A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−133740(P2010−133740)
【出願日】平成22年6月11日(2010.6.11)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】