データ管理プログラム、データ管理装置、およびデータ管理方法
【課題】リカバリ処理に起因して退避処理実行時間が長期化するのを防止する。
【解決手段】退避処理実行手段2は、退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段3に格納し、退避処理を実行する。障害検出手段4は、障害が発生した障害ストレージ装置を検出する。退避処理中止指示手段5は、障害の発生が検出された場合、退避処理実行手段2による退避処理を中止させる。復旧対象データ判定手段6は、二重化状態が損なわれたデータを復旧対象データとする。冗長データコピー先選択手段7は、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。冗長データコピー手段は、冗長データコピー先の記憶領域に復旧対象データをコピーする。
【解決手段】退避処理実行手段2は、退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段3に格納し、退避処理を実行する。障害検出手段4は、障害が発生した障害ストレージ装置を検出する。退避処理中止指示手段5は、障害の発生が検出された場合、退避処理実行手段2による退避処理を中止させる。復旧対象データ判定手段6は、二重化状態が損なわれたデータを復旧対象データとする。冗長データコピー先選択手段7は、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。冗長データコピー手段は、冗長データコピー先の記憶領域に復旧対象データをコピーする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は複数のストレージ装置に格納されたデータを管理するためのデータ管理プログラム、データ管理装置、およびデータ管理方法に関し、特に二重化されたデータを管理するためのデータ管理プログラム、データ管理装置、およびデータ管理方法に関する。
【背景技術】
【0002】
コンピュータシステムでは、多数のユーザが使用する大量のデータを管理する必要がある。このような大量のデータを管理するためのシステムの1つとして、マルチノードストレージシステムがある。
【0003】
マルチノードストレージシステムは、複数のノードで構成されるストレージシステムである。例えば、マルチノードストレージシステムには、アクセスノード、制御ノード、およびディスクノードで構成される。アクセスノードは、ディスクノードに格納されたデータへのアクセス環境をユーザに提供するコンピュータである。ユーザは、アクセスノードに対してデータへのアクセス要求を出すことで、ディスクノードに格納されたデータにアクセスすることができる。制御ノードは、マルチノードストレージシステムで提供されるデータの保守管理をコンピュータである。例えば、制御ノードは、仮想的に定義した論理ボリュームと、ディスクノードが管理するストレージ装置内の記憶領域との対応関係を管理する。ディスクノードは、ストレージ装置を有しており、ストレージ装置の記憶領域を、一定の大きさで区切ったスライスと呼ぶ領域で管理する。
【0004】
マルチノードストレージシステムでは、同一のデータを異なる複数のディスクノードで管理する。すなわち、同じデータが、異なるディスクノードに属する2つのスライスに格納される。このようにデータを冗長化することで、1つのディスクノードに障害が発生してもデータを失わずに済む。
【0005】
なお、ディスクノードに障害が発生すると、そのディスクノードに格納されたデータが使用できなくなり、データの二重化状態が失われる。その場合、制御ノードがディスクノードに指示を出し、リカバリ処理が開始される。リカバリ処理とは、データの二重化を復旧する処理である。
【0006】
リカバリ処理では、制御ノードが、障害などでアクセスができなくなったスライスとペアを組んでいたスライス(二重化が失われたスライス)を特定する。次に、制御ノードは、二重化が失われたスライスとペアを組む別のスライス(これをリザーブスライスと呼ぶ)を確保する。そして、制御ノードは、確保したリザーブスライスに対してデータコピーを行うように、二重化が失われたスライスを管理するディスクノードに指示する。このようなリカバリ処理により、マルチノードストレージシステムでは、ディスクノードで障害が発生してもデータの二重化状態が回復される。
【0007】
ところで、障害とは別の理由で、ディスクノードの機能を停止する場合がある。例えばディスクノードのハードウェアを、より性能の高い別のハードウェアと入れ替える場合などである。このような場合、データの退避処理(evacuate処理)が行われる。退避処理とは、指定したディスクノードが管理するデータを他のノードにコピーする処理である。管理者は、退避処理の後に指定したディスクノードを新しいハードウェアと交換する。ディスクノードを交換後、そのディスクノードが再度マルチノードストレージシステムに組み込まれる。なお、ディスクノードのハードウェアの交換時に限らず、ディスクノードのOS(Operating System)などの再起動を伴うソフトウェアのアップグレード時にも退避処理が行われる。ディスクノードのメンテナンス時に退避処理を行うことにより、データの二重化を維持したままハードウェアのグレードアップなどの作業が可能となる。
【0008】
なお、退避処理に要する時間は、ディスクノードが管理しているストレージ装置の記憶容量に大きく依存する。最近のストレージ装置の大容量化に伴い退避処理の時間も長くなる傾向にある。退避処理に長時間を要することにより、退避処理中に、退避処理対象とは別のディスクノードに障害が発生する可能性も高くなる。退避処理中に退避処理対象ではないディスクノードに障害が発生すると退避処理が打ち切られ、リカバリ処理が実行される。
【特許文献1】特開2005−4681号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかし、退避処理を中止してリカバリ処理を実行した場合、退避処理対象のディスクノードのスライスが、リザーブスライスとして選択される場合がある。すると、退避処理対象のディスクノードのスライスにデータがコピーされる。この場合、リカバリ完了後に退避処理を中止したディスクノードの退避処理を再度続行すると、中止前よりも退避させなければならないデータ量が増え、退避処理が完了するまでの時間が長期化してしまう。
【0010】
本発明はこのような点に鑑みてなされたものであり、リカバリ処理に起因して退避処理実行時間が長期化するのを防止できるデータ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するために、以下のような機能を実現するデータ管理装置が提供される。データ管理装置は、複数のストレージ装置に格納されたデータを管理するために、退避処理実行手段、障害検出手段、退避処理中止指示手段、復旧対象データ判定手段、冗長データコピー先選択手段、および冗長データコピー手段を有する。
【0012】
退避処理実行手段は、任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する。障害検出手段は、障害が発生した障害ストレージ装置を検出する。退避処理中止指示手段は、退避処理中に障害検出手段で障害の発生が検出された場合、退避処理実行手段による退避処理を中止させる。復旧対象データ判定手段は、障害検出手段で検出された障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする。冗長データコピー先選択手段は、記憶手段を参照し、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。冗長データコピー手段は、冗長データコピー先選択手段で選択された冗長データコピー先の記憶領域に、復旧対象データをコピーする。
【0013】
また、データ管理装置と同様の機能をコンピュータに実行させるデータ管理プログラム、およびデータ管理装置で実行される処理をコンピュータで実行するデータ管理方法が提供される。
【発明の効果】
【0014】
上記データ管理プログラム、データ管理装置、およびデータ管理方法では、退避処理対象のストレージ装置内のデータ量を増加させずにリカバリ処理が実行され、退避処理実行時間の長期化を防止できる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、実施の形態の概要を示す図である。実施の形態では、複数のストレージ装置1a,1b,1c,1dに格納されたデータを管理するために、退避処理実行手段2、障害検出手段4、退避処理中止指示手段5、復旧対象データ判定手段6、冗長データコピー先選択手段7、および冗長データコピー手段8を有する。
【0016】
なお、図1の例では、ストレージ装置1a,1b,1c,1d内が単位記憶領域(スライス)に分割され、二重化されたスライスに同じ識別番号を付している。
退避処理実行手段2は、任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段3に格納する。図1の例では、ストレージ装置1cが、退避処理対象ストレージ装置である。また、退避処理実行手段2は、退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する。図1の例では、ストレージ装置1cに格納されているデータが、他のストレージ装置1a,1b,1dにコピーされる。
【0017】
障害検出手段4は、障害が発生した障害ストレージ装置を検出する。図1の例では、ストレージ装置1dに障害が発生している。
退避処理中止指示手段5は、退避処理中に障害検出手段4で障害の発生が検出された場合、退避処理実行手段2による退避処理を中止させる。図1の例では、識別番号「1」のスライスのデータと、識別番号「3」のスライスのデータとのコピーが終了した時点で、退避処理が中止されたものとする。すなわち、識別番号「2」のスライスのデータのコピーは実行されていない(退避処理が未処理である)。
【0018】
復旧対象データ判定手段6は、障害検出手段4で検出された障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする。例えば、復旧対象データ判定手段6は、正常に動作しているストレージ装置1a,1b,1cから格納されているデータの情報を収集し、各データの対応関係を調査することで、二重化状態が損なわれているデータを検出し、検出したデータを復旧対象データとする。図1の例では、識別番号「2」、「3」、「5」のスライスのデータが復旧対象データとなる。
【0019】
冗長データコピー先選択手段7は、記憶手段3を参照して退避処理対象ストレージ装置を認識する。次に、冗長データコピー先選択手段7は、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。図1の例では、ストレージ装置1a,1bの記憶領域が優先的に冗長データコピー先として選択される。なお、冗長データコピー先を選択する場合、コピー元の復旧対象データが格納されたストレージ装置とは異なるストレージ装置内の記憶領域が選択される。
【0020】
冗長データコピー手段8は、冗長データコピー先選択手段で選択された冗長データコピー先の記憶領域に、復旧対象データをコピーする。
このような機能によって、退避処理実行手段2による退避処理実行中にストレージ装置の障害が検出されると、退避処理中止指示手段5による退避処理が中止され、リカバリ処理が開始される。リカバリ処理では、復旧対象データ判定手段6により復旧対象データが特定される。次に、冗長データコピー先選択手段7により、復旧対象データの冗長データコピー先が選択される。その際、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択される。そして、冗長データコピー手段8により、冗長データコピー先の記憶領域に復旧対象データがコピーされる。
【0021】
このように、リカバリ処理において退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に冗長データコピー先を選択するようにしたため、退避処理対象ストレージ装置の記憶領域が冗長データコピー先として選択されることを防止できる。その結果、リカバリ処理の実行に起因して退避対象データが増大することがなくなり、退避処理の長期化が防止される。
【0022】
ところで、図1に示した機能は、マルチノードストレージシステムに適用することができる。マルチノードストレージシステムでは、各ストレージ装置が個別のディスクノードで管理されている。そのため、ディスクノードに対してネットワーク経由でコピー指示を出すことで、ディスクノード間でデータをコピーさせることができる。そこで、退避処理や障害検出時のリカバリ処理は、ディスクノードにネットワークで接続された制御ノードからの遠隔制御によって実行することが可能となる。以下に、マルチノードストレージシステムを用いた実施の形態を詳細に説明する。
【0023】
図2は、本実施の形態のマルチノードストレージシステム構成例を示す図である。本実施の形態では、ネットワーク10を介して、複数のディスクノード100,200,300,400、制御ノード500、アクセスノード30,40、および管理ノード50が接続されている。ディスクノード100,200,300,400それぞれには、ストレージ装置110,210,310,410が接続されている。
【0024】
ストレージ装置110には、複数のハードディスク装置(HDD)111,112,113,114が実装されている。ストレージ装置210には、複数のHDD211,212,213,214が実装されている。ストレージ装置310には、複数のHDD311,312,313,314が実装されている。ストレージ装置410には、複数のHDD411,412,413,414が実装されている。各ストレージ装置110,210,310,410は、内蔵するHDDを用いたRAIDシステムである。本実施の形態では、各ストレージ装置110,210,310,410のRAID5のディスク管理サービスを提供する。
【0025】
ディスクノード100,200,300,400は、例えば、IA(Intel Architecture)と呼ばれるアーキテクチャのコンピュータである。ディスクノード100,200,300,400は、接続されたストレージ装置110,210,310,410に格納されたデータを管理し、管理しているデータをネットワーク10経由で端末装置21,22,23に提供する。また、ディスクノード100,200,300,400は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも2つのディスクノードで管理されている。
【0026】
制御ノード500は、ディスクノード100,200,300,400を管理する。例えば、制御ノード500は、管理ノード50から新たなストレージ装置の追加要求を受け取ると、新たな論理ボリュームを定義し、その論理ボリュームを介して追加されたストレージ装置に格納されていたデータにアクセスできるようにする。
【0027】
アクセスノード30,40には、ネットワーク20を介して複数の端末装置21,22,23が接続されている。アクセスノード30,40には、論理ボリュームが定義されている。そして、アクセスノード30,40は、端末装置21,22,23からの論理ボリューム上でのデータのアクセス要求に応答して、ディスクノード100,200,300,400内の対応するデータへアクセスする。
【0028】
管理ノード50は、管理者がマルチノードストレージシステムの運用を管理するために使用するコンピュータである。例えば、管理ノード50では、マルチノードストレージシステムにおける論理ボリュームの使用量などの情報を収集し、運用状況を画面に表示する。
【0029】
図3は、制御ノードのハードウェア構成例を示す図である。制御ノード500は、CPU(Central Processing Unit)501によって装置全体が制御されている。CPU501には、バス507を介してRAM(Random Access Memory)502、ハードディスクドライブ(HDD:Hard Disk Drive)503、グラフィック処理装置504、入力インタフェース505、および通信インタフェース506が接続されている。
【0030】
RAM502は、制御ノード500の主記憶装置として使用される。RAM502には、CPU501に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM502には、CPU501による処理に必要な各種データが格納される。HDD503は、制御ノード500の二次記憶装置として使用される。HDD503には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【0031】
グラフィック処理装置504には、モニタ11が接続されている。グラフィック処理装置504は、CPU501からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置がある。
【0032】
入力インタフェース505には、キーボード12とマウス13とが接続されている。入力インタフェース505は、キーボード12やマウス13から送られてくる信号を、バス507を介してCPU501に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0033】
通信インタフェース506は、ネットワーク10に接続されている。通信インタフェース506は、ネットワーク10を介して、他のコンピュータとの間でデータの送受信を行う。
【0034】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、制御ノード500のハードウェア構成を示しているが、ディスクノード100,200,300,400、アクセスノード30,40、および管理ノード50も同様のハードウェア構成で実現することができる。
【0035】
図4は、論理ボリュームのデータ構造を示す図である。本実施の形態では、論理ボリューム60には論理ボリューム識別子「LVOL−X」が付与されている。ネットワーク経由で接続された4台のディスクノード100,200,300,400には、個々のノードの識別のためにそれぞれ「DP−A」、「DP−B」、「DP−C」、「DP−D」というノード識別子が付与されている。そして、各ディスクノード100,200,300,400に接続されているストレージ装置110,210,310,410は、ディスクノード100,200,300,400のノード識別子によってネットワーク10で一意に識別される。
【0036】
各ディスクノード100,200,300,400が有するストレージ装置110,210,310それぞれにおいてRAID5のストレージシステムが構成されている。各ストレージ装置110,210,310,410で提供される記憶機能は、複数のスライス115a〜115f,215a〜215f,315a〜315f,415a〜415fに分割されて管理されている。
【0037】
論理ボリューム60は、セグメント61〜66という単位で構成される。セグメント61〜66の記憶容量は、ストレージ装置110,210,310,410における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が1ギガバイトとするとセグメントの記憶容量も1ギガバイトである。論理ボリューム60の記憶容量はセグメント1つ当たりの記憶容量の整数倍である。セグメント61〜66は、それぞれプライマリスライス61a,62a,63a,64a,65a,66aとセカンダリスライス61b,62b,63b,64b,65b,66bとの組(スライスペア)で構成される。
【0038】
同一セグメントに属する2つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
【0039】
図4の例では、論理ボリューム60内のスライスの識別子を、「P」または「S」のアルファベットと数字との組合せで示している。「P」はプライマリスライスであることを示している。「S」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、1番目のセグメント61のプライマリスライスが「P1」で示され、セカンダリスライスが「S1」で示される。
【0040】
図5は、ディスクノードとアクセスノードとの機能を示すブロック図である。アクセスノード30は、論理ボリュームアクセス制御部31を有している。論理ボリュームアクセス制御部31は、端末装置21,22,23からの論理ボリューム60内のデータを指定したアクセス要求に応じて、指定されたデータを管理するディスクノードに対してデータアクセスを行う。具体的には、論理ボリュームアクセス制御部31は、アクセス対象のデータが記憶された論理ボリューム60内のブロックを特定する。次に、論理ボリュームアクセス制御部31は、特定したブロックに対応するセグメントを特定する。さらに、論理ボリュームアクセス制御部31は、セグメントを構成するプライマリスライスに対応するディスクノードおよびそのディスクノード内のスライスを特定する。そして、論理ボリュームアクセス制御部31は、特定したディスクノードに対して、特定したスライスへのアクセス要求を出力する。アクセスノード40も、アクセスノード30と同様の機能を有している。
【0041】
ディスクノード100は、I/F部120、デバイス制御部130、スライス情報記憶部140、および制御部150を有する。
I/F部120は、所定の通信プロトコルにより、他の装置とネットワーク10を介したデータ通信を実現するための通信機能である。デバイス制御部130は、ストレージ装置110を制御する。
【0042】
スライス情報記憶部140は、ストレージ装置110のスライスを管理するためのスライス情報を記憶する記憶機能である。例えば、ディスクノード100のRAM内の記憶領域の一部がスライス情報記憶部140として使用される。なお、スライス情報は、スライス毎に設けられたメタデータを集めたものである。メタデータは、対応するスライスが割り当てられたセグメントや、スライスペアにおいて対となる他のスライスを示す情報である。
【0043】
制御部150は、データアクセス制御部151、ハートビート送信部152、データ管理部153を有する。
データアクセス制御部151は、アクセスノードからのアクセス要求(リード要求またはライト要求)を受け付けた場合に、スライス情報記憶部140を参照して、アクセス対象のスライスを判断する。そして、データアクセス制御部151は、ストレージ装置110内のアクセス要求に応じたデータにアクセスする。例えば、アクセス要求がリード要求であれば、データアクセス制御部151は、ストレージ装置110からデータを取得し、アクセスノード30に送信する。また、アクセス要求がライト要求であれば、データアクセス制御部151は、ストレージ装置110にデータを書き込む。
【0044】
ハートビート送信部152は、ディスクノード100およびストレージ装置110が正常動作していることを制御ノード500に定期的に通知する。具体的には、ハートビート送信部152は、ディスクノード100およびストレージ装置110が正常に動作している場合、定期的に制御ノード500へ正常に動作していることを示す正常通知(ハートビート)を送信する。制御ノード500では、ディスクノード100からのハートビートが一定時間途絶えた場合に、ディスクノード100での障害が発生したことを認識する。
【0045】
データ管理部153は、制御ノード500からスライス情報の更新指示を受け付けた場合に、スライス情報記憶部140に記憶されているスライス情報を更新する。スライス情報の更新処理としては、例えば、スライスのプライマリ化がある。データ管理部153は、プライマリ化指示を受け付けた場合、スライス情報記憶部140内のプライマリ化指示に含まれるスライスIDで示されるメタデータの属性を「プライマリ(P)」に更新する。
【0046】
また、データ管理部153は、スライス割当指示を受け付けた場合、スライス割当指示に含まれるスライスIDをキーにして、スライス情報記憶部140からメタデータを特定する。データ管理部153は、特定したメタデータの内容を、スライス割当指示で指定された内容(割当先のセグメントやペアとなる他のスライスの情報が含まれる)に応じて更新する。ストレージ装置110のスライスをセグメントに割り当てた場合、データ管理部153は、他のディスクノードで管理されているペアとなるスライスからデータを取得し、新たに割り当てられたスライスに格納する。
【0047】
なお、データ管理部153は、スライス情報内のメタデータを更新すると、ストレージ装置110内の対応するメタデータも更新する。これにより、ストレージ装置110内のメタデータとスライス情報記憶部140内のメタデータとの同一性が維持される。さらに、データ管理部153は、制御ノード500から、スライス情報取得要求を受け取ると、スライス情報記憶部140内のスライス情報を制御ノード500に送信する。
【0048】
退避処理やリカバリ処理が行われる場合、制御ノード500からディスクノード100にストレージ装置110内のデータのコピー指示が出される。データ管理部153は、制御ノード500からのコピー指示を受け取ると、ストレージ装置110内のデータを他のディスクノードに転送する。
【0049】
さらに、データ管理部153は、プライマリスライスとセカンダリスライスとのデータの冗長性確保処理を行う。具体的には、データ管理部153は、データアクセス制御部151によってライト要求に基づくデータの書き込みが行われた場合、データが書き込まれたスライス(プライマリスライス)に対応するセカンダリスライスを管理するディスクノードのデータ管理部と連携動作し、セカンダリスライス内のデータを更新する。
【0050】
なお、ディスクノード200,300,400もディスクノード100と同様の機能を有している。
次に、スライス情報記憶部140に格納されるデータについて詳細に説明する。
【0051】
図6は、スライス情報記憶部のデータ構造例を示す図である。スライス情報記憶部140には、メタデータテーブル141が格納されている。メタデータテーブル141には、ディスクノードID、スライスID、状態、論理ボリュームID、セグメントID、ペアのディスクノードID、およびペアのスライスIDの欄が設けられている。メタデータテーブル141内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す1つのレコードを構成している。
【0052】
ディスクノードIDの欄は、ストレージ装置110を管理しているディスクノード100の識別情報(ディスクノードID)が設定される。
スライスIDの欄には、メタデータに対応するスライスのストレージ装置110内での識別情報(スライスID)が設定される。
【0053】
状態の欄には、スライスの状態を示す状態フラグが設定される。スライスが論理ボリュームのセグメントに割り当てられていない場合、状態フラグ「F」が設定される。論理ボリュームのセグメントのプライマリストレージに割り当てられている場合、状態フラグ「P」が設定される。論理ボリュームのセグメントのセカンダリストレージに割り当てられている場合、状態フラグ「S」が設定される。
【0054】
論理ボリュームIDの欄には、スライスに対応するセグメントが属する論理ボリュームを識別するための識別情報(論理ボリュームID)が設定される。
ペアのディスクノードIDの欄には、ペアのスライス(同じセグメントに属する別のスライス)を有するストレージ装置を管理するディスクノードの識別情報(ディスクノードID)が設定される。
【0055】
ペアのスライスIDの欄には、ペアのスライスを、そのスライスが属するストレージ装置内で識別するための識別情報(スライスID)が設定される。
次に、制御ノード500の機能を詳細に説明する。制御ノード500は、論理ボリュームを管理すると共に、ディスクノード100,200,300,400に障害が発生したときのリカバリ処理を行う。また、制御ノード500は、システム管理者からの操作入力などに応答し、いずれかのストレージ装置に格納されているデータの退避処理を行う。
【0056】
図7は、制御ノードの機能を示すブロック図である。制御ノード500は、インタフェース(I/F)部510、記憶部520、および制御部530を有する。I/F部510は、所定の通信プロトコルにより、ディスクノード100,200,300,400、アクセスノード30,40、および管理ノード50と、ネットワーク10を介したデータ通信を実現するための通信機能である。
【0057】
記憶部520は、各種情報を記憶する記憶機能である。例えば、RAM502の記憶領域の一部を、記憶部520として利用することができる。記憶部520には、スライス情報テーブル521、セグメント情報テーブル522、復旧対象リスト523、退避対象スライスリスト524、および退避処理対象ディスクノードリスト525が記憶されている。
【0058】
スライス情報テーブル521は、各ディスクノード100,200,300,400から収集したメタデータ(ストレージ装置内の各スライスに関して、割り当てられたセグメント、および対となる他のスライスが示された情報)が登録されたデータテーブルである。スライス情報テーブル521は、制御部530内のスライス情報収集部532によって作成される。
【0059】
セグメント情報テーブル522は、論理ボリュームを構成する各セグメントに対して割り当てられたスライスを示す情報である。セグメント情報テーブル522は、スライス情報収集部532によって、ディスクノード100,200,300,400から収集したメタデータ基づいて生成される。
【0060】
復旧対象リスト523は、リカバリ処理の対象となるセグメントを示す情報である。復旧対象リスト523は、制御部530内の復旧対象抽出部533によって生成される。
退避対象スライスリスト524は、退避処理を実行する際に、データを退避させるべきスライスのリストである。退避対象スライスリスト524は、制御部530内の退避制御部535によって生成される。
【0061】
退避処理対象ディスクノードリスト525は、退避処理の対象となっているディスクノードのリストである。退避対象スライスリスト524は、制御部530内の退避制御部535によって生成される。
【0062】
制御部530は、監視部531、スライス情報収集部532、復旧対象抽出部533、二重化制御部534、および退避(Evacuate)制御部535を有する。
監視部531は、ディスクノード100,200,300,400が正常に動作しているか否かを監視する処理部である。具体的には、監視部531は、ディスクノード100,200,300,400から定期的に送られてくるハートビートを受信する。そのとき、監視部531は、ハートビートの受信時刻を、ディスクノードに対応付けて記憶する。そして、監視部531は、前回のハートビート受信から所定期間以上経過しても次のハートビートを送ってこないディスクノードがあると、そのディスクノードに障害が発生したものと判断する。
【0063】
スライス情報収集部532は、システムの運用開始時にディスクノード100,200,300,400からスライス情報を収集し、スライス情報テーブル521とセグメント情報テーブル522とを生成する。また、スライス情報収集部532は、監視部531によってディスクノード100,200,300,400のいずれかに異常が発生したことが検知された場合に、正常に動作しているディスクノードからスライス情報(メタデータの集合)を収集する。そして、スライス情報収集部532は、収集したスライス情報に基づいて、スライス情報テーブル521とセグメント情報テーブル522とを新たに生成する。
【0064】
復旧対象抽出部533は、監視部531によりディスクノードの障害が検出されると、復旧対象のセグメントを検出する。具体的には、復旧対象抽出部533は、障害発生により再生成されたセグメント情報テーブル522に基づいて、復旧対象のセグメントを抽出する。復旧対象のセグメントとは、プライマリスライスまたはセカンダリスライスの一方のみが記憶されているセグメントである。そして、復旧対象抽出部533は、復旧対象のセグメントを示す情報を復旧対象リスト523に格納する。
【0065】
二重化制御部534は、セグメントのデータの二重化が保たれるように、セグメントへのスライス割当を制御する。すなわち、ディスクノードの障害により二重化状態が崩れたセグメントが発生すると、そのセグメントのリカバリ処理(二重化回復処理)を行う。リカバリ処理は、復旧対象のセグメントに割り当てられているスライスを、正常に動作しているストレージ管理装置の空きスライスと二重化させる処理である。リカバリ処理は、大別するとプライマリ化処理、空きスライス割当処理、およびスライス情報更新処理に分かれる。
【0066】
プライマリ化処理は、復旧対象のセグメントに現在割り当てられているスライスをすべてプライマリにする処理である。具体的には、二重化制御部534は、復旧対象リスト523とセグメント情報テーブル522とから、復旧対象セグメントに割り当てられているスライスのディスクノードIDおよびスライスIDを取得する。そして、二重化制御部534は、取得した復旧対象のスライスのディスクノードIDに該当するストレージ装置を有するディスクノードに対して、プライマリ化指示を送信する。プライマリ化指示で指定されたスライスは、そのプライマリか指示を受け取ったディスクノードによって、属性がプライマリに変更される。
【0067】
続いて、二重化制御部534は、空きスライス割当処理を行う。具体的には、二重化
制御部534は、スライス情報テーブル521から、復旧対象のセグメントに現在割り当てられているスライス(プライマリスライス)とは異なるストレージ装置に属するスライスで、いずれのセグメントにも割り当てられていないスライス(空きスライス)を検索する。
【0068】
そして、二重化制御部534は、検索されたスライスの1つを選択し、復旧対象のセグメントのセカンダリスライスとして割り当てる。この際、二重化制御部534は、退避処理対象ディスクノードリスト525を参照し、退避処理対象のディスクノードの存否を確認する。退避処理対象のディスクノードがある場合、二重化制御部534は、そのディスクノードが管理するスライスは、空きスライス割当処理におけるセカンダリスライスとしての選択する優先順位を最も低くする。すなわち、退避処理対象のディスクノード以外のディスクノードが管理するスライスの中に空きスライスが無くなったときにのみ、退避処理対象のディスクノードが管理するスライスが、復旧対象のセグメントに割り当てられる。
【0069】
さらに、二重化制御部534は、セカンダリスライスとするスライスへのデータコピー指示を、プライマリスライスを管理するディスクノードに対して送信する。データコピー指示には、セカンダリスライスを管理するディスクノードのディスクノードIDと、セカンダリスライスのスライスIDとが含まれる。データコピー指示を受け取ったディスクノードは、プライマリスライスのデータをセカンダリスライスを管理するディスクノードに転送する。データを受け取ったディスクノードは、そのデータをセカンダリスライスに格納する。これにより、復旧対象のセグメントのデータが二重化される。
【0070】
そして、二重化制御部534は、復旧対象のセグメントのプライマリスライスとセカンダリスライスとのそれぞれを管理するディスクノードに対して、スライス情報更新指示を送信し、復旧対象リスト523の内容を消去する。スライス情報更新指示には、復旧対象のセグメントに割り当てられたスライスのメタデータが含まれる。スライス情報更新指示を受け取ったディスクノードは、スライス情報更新指示に含まれるメタデータにより、スライス情報記憶部とストレージ装置とのメタデータを更新する。
【0071】
退避制御部535は、管理者による操作入力などに基づいて退避処理を行う。具体的には、退避制御部535は、退避処理対象のストレージ装置を指定した退避指示を受け取ると、指定されたストレージ装置を管理するディスクノードのディスクノードIDを退避処理対象ディスクノードリスト525に登録する。次に退避制御部535は、スライス情報テーブル521を参照し、退避処理対象のストレージ装置のスライスのうち、セグメントに割り当てられているスライス(状態が「P」または「S」)を検出する。そして退避制御部535は、検出したスライス(退避処理対象スライス)に関するディスクノードIDとスライスIDとを、退避対象スライスリスト524に登録する。
【0072】
次に退避制御部535は、セグメント情報テーブル522を参照し、退避処理対象スライスがプライマリスライスか否かを判断する。退避処理対象スライスがプライマリスライスであれば、退避制御部535は、同じセグメントに割り当てられたセカンダリスライスを管理するディスクノードに対して、プライマリスライスへの変更指示(プライマリ化指示)を送信する。
【0073】
さらに、退避制御部535は、退避処理対象のディスクノード以外のディスクノードが管理する空きスライスの中から、退避処理対象スライスのデータを退避させるためのスライスを選択する。そして、退避制御部535は、退避処理対象のディスクノードに対して、選択したスライスへのデータコピー指示を送信する。退避制御部535は、ディスクノードからコピー完了の応答を受け取ると、コピー先のディスクノードに対してスライス情報更新指示を送信する。退避処理対象スライスが複数ある場合、退避制御部535は、退避処理対象スライスを1つずつ選択する。そして、退避制御部535は、前に選択した退避処理対象スライスのデータのコピーが終了すると、次の退避処理対象スライスのデータコピー指示を送信する。
【0074】
退避制御部535は、選択した1つの退避処理対象スライスのデータコピーが終了するごとに、コピー先のディスクノードに対してセグメント情報の更新指示を送信する。すなわち退避制御部535は、コピー先のスライスを、コピー元のスライスと同じセグメントのセカンダリスライスとするメタデータを、コピー先のスライスを管理するディスクノードに送信する。
【0075】
なお、退避制御部535は、退避処理中に、退避処理対象のディスクノード以外のディスクノードで障害が検出されると、退避処理を中止する。中止した退避処理は、リカバリ処理の完了後に再開される。例えば、退避制御部535は、二重化制御部534によるリカバリ処理の完了を検知すると、中止していた退避処理を再開する。また、退避制御部535は、二重化制御部534によるリカバリ処理の完了後、管理者からの再開指示があったときに中止していた退避処理を再開するようにしてもよい。
【0076】
ところで、図1に示した各機能と図7に示した機能との対応関係は次の通りである。図1の退避処理実行手段2と退避処理中止指示手段5との機能は、図7の退避制御部535に含まれる。図1の記憶手段3の機能は、図7の記憶部520に含まれる。図1の障害検出手段4の機能は、図7の監視部531に含まれる。図1の復旧対象データ判定手段6、冗長データコピー先選択手段7、および冗長データコピー手段8の機能は、図7の二重化制御部534に含まれる。
【0077】
次に、記憶部520に格納される情報について詳細に説明する。
図8は、スライス情報テーブルのデータ構造例を示す図である。スライス情報テーブル521には、ディスクノードID、スライスID、状態、論理ボリュームID、セグメントID、ペアのディスクノードID、およびペアのスライスIDの欄が設けられている。スライス情報テーブル521内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す1つのレコードを構成している。スライス情報テーブル521の各欄に設定される情報は、メタデータテーブル141の同名の欄と同じ情報である。ただし、スライス情報テーブル521は、ディスクノード100のメタデータテーブル141とは異なり、複数のディスクノード100,200,300,400から収集したすべてのスライス情報に含まれるメタデータが登録されている。
【0078】
図9は、セグメント情報テーブルのデータ構造例を示す図である。セグメント情報テーブル522には、論理ボリュームID、セグメントID、プライマリ情報、およびセカンダリ情報の欄が設けられている。
【0079】
論理ボリュームIDの欄には、マルチノードストレージシステムで定義された論理ボリュームの識別情報(論理ボリュームID)が設定される。セグメントIDの欄には、論理ボリュームに定義されたセグメントの識別情報(セグメントID)が設定される。
【0080】
プライマリ情報の欄には、対応するセグメントに割り当てられたプライマリスライスに関する情報が設定される。プライマリ情報の欄は、ディスクノードIDとスライスIDとの欄に細分化されている。ディスクノードIDの欄には、プライマリスライスとして割り当てられたスライスを管理するディスクノードの識別情報(ディスクノードID)が設定される。スライスIDの欄には、プライマリスライスとして割り当てられたスライスの識別情報(スライスID)が設定される。
【0081】
セカンダリ情報の欄には、対応するセグメントに割り当てられたセカンダリスライスに関する情報が設定される。セカンダリ情報の欄は、ディスクノードIDとスライスIDとの欄に細分化されている。ディスクノードIDの欄には、セカンダリスライスとして割り当てられたスライスを管理するディスクノードの識別情報(ディスクノードID)が設定される。スライスIDの欄には、セカンダリスライスとして割り当てられたスライスの識別情報(スライスID)が設定される。
【0082】
図10は、復旧対象リストのデータ構造例を示す図である。復旧対象リスト523には、論理ボリュームIDとセグメントIDとの欄が設けられている。
論理ボリュームIDの欄には、リカバリ処理による復旧対象となるセグメントが属する論理ボリュームの識別情報(論理ボリュームID)が設定される。セグメントのIDの欄には、リカバリ処理による復旧対象となるセグメントの識別情報(セグメントID)が設定される。
【0083】
図11は、退避対象スライスリストのデータ構造例を示す図である。退避対象スライスリスト524には、ディスクノードIDとスライスIDとの欄が設けられている。退避対象スライスリスト524内の横方向に並べられた情報同士が互いに関連付けられ、退避処理対象スライスを示す1つのレコードを構成している。
【0084】
ディスクノードIDの欄には、退避処理の対象となるスライスを管理するディスクノードの識別情報(ディスクノードID)が設定される。スライスIDの欄には、退避処理の対象となるスライスの識別情報(スライスID)が設定される。
【0085】
図12は、退避処理対象ディスクノードリストのデータ構造例を示す図である。退避処理対象ディスクノードリスト525には、退避処理対象となっているディスクノードの識別情報(ディスクノードID)が設定される。
【0086】
以上のような構成のシステムにより、退避処理やリカバリ処理が実行される。そして、退避処理中に退避処理対象のディスクノードとは別のディスクノードに障害が発生すると、退避処理を中止してリカバリ処理が開始される。以下、退避処理とリカバリ処理とについて詳細に説明する。
【0087】
図13は、退避処理の手順を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。なお、退避処理は、ディスクノードを指定した退避処理の指示が入力されたときに開始される。
【0088】
[ステップS11]退避制御部535は、退避処理の指示で指定されたディスクノード(退避処理対象ディスクノード)のディスクノードIDが登録された退避処理対象ディスクノードリスト525を生成する。そして、退避制御部535は、生成した退避処理対象ディスクノードリスト525を記憶部520に格納する。
【0089】
[ステップS12]退避制御部535は、退避対象スライスリスト524を生成する。具体的には、退避制御部535は、スライス情報テーブル521を参照し、退避処理対象ディスクノードが管理するスライスのうち、論理ボリュームのセグメントに割り当てられているスライス(退避対象スライス)のメタデータを検索する。セグメントに割り当てられているスライスとは、状態の欄に「P(プライマリスライス)」または「S(セカンダリスライス)」のフラグが設定されたスライスである。退避制御部535は、検出した各メタデータのディスクノードIDとスライスIDとの組みを退避対象スライスリスト524に設定する。そして、退避制御部535は、生成した退避対象スライスリスト524を、記憶部520に格納する。
【0090】
[ステップS13]退避制御部535は、退避対象スライスリスト524から退避対象スライスを1つ選択する。具体的には、退避制御部535は、退避対象スライスリスト524から、1つのレコード(ディスクノードIDとスライスIDとの組み)を選択する。
【0091】
[ステップS14]退避制御部535は、選択したスライスがプライマリスライスか否かを判断する。具体的には、退避制御部535は、スライス情報テーブル521から、ステップS13で選択したスライスのディスクノードIDとスライスIDとの組みに対応するメタデータを検索する。そして、退避制御部535は、検出したメタデータの状態が「P(プライマリスライス)」であれば、選択したスライスがプライマリスライスであると判断する。選択したスライスがプライマリスライスであれば、処理がステップS15に進められる。選択したスライスがセカンダリスライスであれば、処理がステップS16に進められる。
【0092】
[ステップS15]退避制御部535は、選択したスライスとペアのスライスのプライマリ化処理を行う。具体的には、退避制御部535は、ステップS14で検出したメタデータにおけるペアのディスクノードIDおよびペアのスライスIDによって、ペアのスライスを特定する。選択したスライスがプライマリスライスであるため、ペアのスライスはセカンダリスライスである。そこで、退避制御部535は、セカンダリスライスを管理するディスクノードに対して、プライマリ化(メタデータの属性を「P」に変更)の指示を送信する。プライマリ化指示には、プライマリ化すべきスライスのスライスIDが含まれる。
【0093】
プライマリ化指示を受信したディスクノードでは、指定されたスライスのメタデータの属性を「P」に変更する。プライマリ化を行ったディスクノードは、プライマリ化完了応答を退避制御部535に返す。プライマリ化完了応答を受け取った退避制御部535は、スライス情報テーブル521とセグメント情報テーブル522を更新する。すなわち、プライマリ化させたスライスのメタデータの属性が「P」に変更され、選択された退避対象スライスのメタデータの属性が「S」に変更される。
【0094】
[ステップS16]退避制御部535は、退避対象スライスのデータを、他のスライスにコピーする。具体的には、退避制御部535は、スライス情報テーブル521を参照し、選択した退避対象スライスのペアのスライスとは異なるディスクノードで管理された空きスライスを1つ選択する。そして、退避制御部535は、退避対象スライスを管理するディスクノードに対して、退避対象スライスの空きスライスへのデータコピー指示を送信する。このデータコピー指示には、退避対象スライスのスライスID、コピー先のディスクノードのディスクノードID、および選択した空きスライスのスライスIDが含まれる。
【0095】
データコピー指示を受け取ったディスクノードは、退避対象スライス内のデータを、指定された空きスライスにコピーする。データコピーを行ったディスクノードは、データコピー完了応答を退避制御部535に返す。
【0096】
[ステップS17]退避制御部535は、メタデータを更新する。具体的には、退避制御部535は、データのコピー先となったスライスを管理するディスクノードに対して、その空きスライスを、選択した退避対象スライスと同じセグメントのセカンダリスライスとして割り当てることを示すスライス情報更新指示を送信する。スライス情報更新指示を受け取ったディスクノードは、指定された内容でデータコピー先となったスライスのメタデータを更新する。メタデータを更新したディスクノードは、退避制御部535に対してメタデータ更新完了応答を返す。メタデータ更新完了応答を受け取った退避制御部535は、スライス情報テーブル521とセグメント情報テーブル522を更新する。
【0097】
[ステップS18]退避制御部535は、退避対象スライスを退避対象スライスリスト524から削除する。
[ステップS19]退避制御部535は、退避対象スライスリスト524に未選択の退避対象スライスがあるか否かを判断する。未選択の退避対象スライスがあれば、処理がステップS13に進められる。すべての退避対象スライスについての退避処理が完了していれば、処理がステップS20に進められる。
【0098】
[ステップS20]退避制御部535は、退避処理対象ディスクノードを退避処理対象ディスクノードリスト525から削除する。その後、処理が終了する。
このように、退避処理では、退避対象スライスが1つずつ選択され、順次処理される。退避処理が完了する前にディスクノードの障害が検出されると、退避処理は中止される。退避処理が中止されても、退避処理対象ディスクノードリスト525の内容は維持される。
【0099】
次に、リカバリ処理について詳細に説明する。
図14は、リカバリ処理の手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。なお、図14の処理は、ディスクノードからのハートビートが所定時間以上途絶えたときに実行される。
【0100】
[ステップS31]監視部531は、ディスクノードからのハードビートが所定時間途絶えたことにより、そのディスクノードの異常を検出する。
[ステップS32]二重化制御部534は、退避制御部535による退避処理中か否かを判断する。退避処理中でなければ、処理がステップS33に進められる。退避処理中であれば、処理がステップS34に進められる。
【0101】
[ステップS33]制御部530内の各要素が連携して、通常リカバリ処理を実行する。この処理の詳細は後述する。その後、リカバリ処理が終了する。
[ステップS34]制御部530内の各要素が連携して、退避処理中リカバリ処理を実行する。この処理の詳細は後述する。その後、リカバリ処理が終了する。
【0102】
このように、リカバリ処理は、退避処理中か否かによって処理内容が異なってくる。以下、通常リカバリ処理と退避処理中リカバリ処理との詳細な手順について説明する。
図15は、通常リカバリ処理の手順を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
【0103】
[ステップS41]スライス情報収集部532は、正常なディスクノードからスライス情報を収集する。具体的には、スライス情報収集部532は、監視部531から、異常を検出したディスクノードのディスクノードIDを取得する。次に、スライス情報収集部532は、異常を検出したディスクノード以外の各ディスクノードに対して、スライス情報取得要求を送信する。スライス情報取得要求を受信した各ディスクノードは、スライス情報記憶部に格納されているスライス情報(スライス毎のメタデータ)をスライス情報収集部532に送信する。スライス情報収集部532は、各ディスクノードが送信したスライス情報を受信する。
【0104】
[ステップS42]スライス情報収集部532は、スライス情報テーブル521とセグメント情報テーブル522とを再構成する。具体的には、スライス情報収集部532は、収集したスライス情報に基づいてスライス情報テーブルを生成し、記憶部520内のスライス情報テーブル521を更新する。さらに、スライス情報収集部532は、収集したスライス情報に基づいてセグメント情報テーブルを生成し、記憶部520内のセグメント情報テーブル522を更新する。なお、セグメント情報テーブル522を生成する際には、スライス情報収集部532は、収集したスライス情報の各メタデータの状態を参照する。そして、スライス情報収集部532は、メタデータの状態が「P」であれば、そのメタデータの情報を、セグメント情報テーブル522のプライマリ情報の欄に設定する。また、スライス情報収集部532は、メタデータの状態が「S」であれば、そのメタデータの情報を、セグメント情報テーブル522のセカンダリ情報の欄に設定する。この際、障害が発生したディスクノードからはスライス情報が収集されないため、再構築したセグメント情報テーブル522では、障害が発生したディスクノードで管理するスライスを割り当てていたセグメントのプライマリ情報またはセカンダリ情報の欄は空欄となる。
【0105】
[ステップS43]復旧対象抽出部533は、復旧対象リスト523を作成する。具体的には、復旧対象抽出部533は、セグメント情報テーブル522を参照し、プライマリ情報とセカンダリ情報とのいずれかの欄が空欄となっているセグメントを抽出する。そして、復旧対象抽出部533は、抽出したセグメントの情報(論理ボリュームIDとセグメントID)を復旧対象リスト523に登録する。これにより、異常が検出されたディスクノードが管理するスライスが割り当てられていたセグメント(復旧対象セグメント)を示す情報が登録された復旧対象リスト523が生成される。生成された復旧対象リスト523は、記憶部520に格納される。
【0106】
[ステップS44]二重化制御部534は、復旧対象セグメントの既割当スライスをプライマリスライスとする。具体的には、二重化制御部534は、復旧対象リスト523から、復旧対象セグメントのディスクノードIDおよびセグメントIDを取得する。そして、二重化制御部534は、セグメント情報テーブル522を参照し、復旧対象セグメントに割り当てられている既存のスライス(既割当スライス)がプライマリスライスかセカンダリスライスかを判断する。既割当スライスがセカンダリスライスであれば、二重化制御部534は、その既割当スライスのディスクノードIDに該当するディスクノードに対してプライマリ化指示を送信する。すると、既割当スライスがプライマリスライスに変更される。
【0107】
[ステップS45]二重化制御部534は、復旧対象セグメントに対して、セカンダリスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521を参照し、復旧対象セグメントの既割当スライスとは別のディスクノードで管理されている空きスライス(状態が「F」のスライス)を1つ選択する。そして、二重化制御部534は、選択したスライスを復旧対象セグメントのセカンダリスライスとして割り当てる。なお、この時点では、スライス情報テーブル521では、割り当てたスライスの状態が「R」(リザーブスライスであることを示す)に設定される。そして、後述するメタデータの更新処理が完了したときに、そのスライスの状態が「S」(セカンダリスライス)に変更される。
【0108】
[ステップS46]二重化制御部534は、復旧対象セグメントの既割当スライス(プライマリスライス)から新たに割り当てたスライス(セカンダリスライス)へのデータコピーを指示する。具体的には、二重化制御部534は、プライマリスライスを管理するディスクノードに対して、セカンダリスライスのディスクノードIDとスライスIDとを指定したデータコピー指示を送信する。
【0109】
[ステップS47]二重化制御部534は、スライス情報更新指示をプライマリスライスとセカンダリスライスとを管理するディスクノードに送信する。送信されるスライス情報更新指示には、既割当スライスを復旧対象セグメントのプライマリライスとし、ステップS45で割り当てたスライスを復旧対象セグメントのセカンダリスライスとすることが示される。各ディスクノードでは、スライス情報記憶部とストレージ装置とのそれぞれに格納されたメタデータが更新される。ディスクノードは、メタデータを更新すると、スライス情報更新完了の応答を二重化制御部534に送信する。二重化制御部534は、ディスクノードからスライス情報更新完了の応答が返されると、スライス情報テーブル521とセグメント情報テーブル522とを更新する。
【0110】
このようにして、退避処理を実行していないときのリカバリ処理が完了する。次に、退避処理中のリカバリ処理を詳細に説明する。
図16は、退避処理中リカバリ処理を示す第1のフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
【0111】
[ステップS51]退避制御部535は、退避処理を中止する。具体的には、二重化制御部534から退避制御部535へ退避処理中止の指示が出される。退避制御部535は、退避処理中止の指示に応答して、退避処理を中止する。その際、退避対象スライスリスト524の内容はクリアされるが、退避処理対象ディスクノードリスト525の内容は維持される。
【0112】
[ステップS52]スライス情報収集部532は、正常なディスクノードからスライス情報を収集する。この処理の詳細は、図15のステップS41と同様である。
[ステップS53]スライス情報収集部532は、スライス情報テーブル521とセグメント情報テーブル522とを再構成する。この処理の詳細は、図15のステップS42と同様である。
【0113】
[ステップS54]復旧対象抽出部533は、復旧対象リスト523を作成する。この処理の詳細は、図15のステップS43と同様である。
[ステップS55]二重化制御部534は、復旧対象セグメントの既割当スライスをプライマリスライスとする。この処理の詳細は、図15のステップS44と同様である。
【0114】
[ステップS56]二重化制御部534は、未処理の復旧対象セグメントに退避対象スライスをもつセグメントがあるか否かを判断する。具体的には、二重化制御部534は、復旧対象リスト523を参照して、復旧対象セグメントを判断する。なお、二重化制御部534は、復旧対象セグメントに対して二重化復旧のためにセカンダリスライスが割り当てられているか否かの情報を内部で記憶しており、セカンダリスライスが割り当てられていない復旧対象セグメントを未処理と認識する。次に、二重化制御部534は、セグメント情報テーブル522を参照して、未処理の復旧対象セグメントに割り当てられている既割当スライスを判断する。さらに、二重化制御部534は、退避対象ディスクノードリスト525を参照し、既割当スライスが退避対象ディスクノードに属しているスライスならば退避対象スライスに該当し、この退避対象スライスを持つセグメントが該当する復旧対象セグメントと判断する。該当する復旧対象セグメントがあれば処理がステップS57に進められる。該当する復旧対象セグメントがなければ、処理がステップS61(図17参照)に進められる。
【0115】
[ステップS57]二重化制御部534は、退避対象スライスが割り当てられた未処理の復旧対象セグメントを1つ選択する。
[ステップS58]二重化制御部534は、選択した復旧対象セグメントに、退避対象ディスクノード以外のディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノード以外のディスクノードに対応するスライスから、空きスライス(状態が「F」)を1つ選択する。そして、選択したスライスを、ステップS57で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。その後、処理がステップS56に進められる。
【0116】
図17は、退避処理中リカバリ処理を示す第2のフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
[ステップS61]二重化制御部534は、未処理の復旧対象セグメントがあるか否かを判断する。具体的には、二重化制御部534は、復旧対象リスト523を参照して、復旧対象セグメントを判断する。そして、二重化制御部534は、復旧対象セグメントのうち、セカンダリスライスを割り当てていないセグメントがあれば、未処理の復旧対象セグメントがあると判断する。未処理の復旧対象セグメントがある場合、処理がステップS62に進められる。未処理の復旧対象セグメントがない場合、処理がステップS74(図18参照)に進められる。
【0117】
[ステップS62]二重化制御部534は、退避対象ディスクノード以外のディスクノードに空きスライスがあるか否かを判断する。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノード以外のディスクノードに対応するスライスのうち、空きスライス(状態が「F」)があるか否かを判断する。空きスライスがあれば、処理がステップS63に進められる。空きスライスがなければ、処理がステップS71(図18に示す)に進められる。
【0118】
[ステップS63]二重化制御部534は、未処理の復旧対象セグメントを1つ選択する。
[ステップS64]二重化制御部534は、ステップS63で選択した復旧対象セグメントに、退避対象ディスクノード以外のディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノード以外のディスクノードに対応するスライスから、空きスライス(状態が「F」)を1つ選択する。そして、選択したスライスを、ステップS63で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。その後、処理がステップS61に進められる。
【0119】
図18は、退避処理中リカバリ処理を示す第3のフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS71]二重化制御部534は、未処理の復旧対象セグメントを1つ選択する。
【0120】
[ステップS72]二重化制御部534は、ステップS71で選択した復旧対象セグメントに、退避対象ディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノードに対応するスライスから、空きスライス(状態が「F」)を1つ選択する。そして、選択したスライスを、ステップS71で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。
【0121】
[ステップS73]二重化制御部534は、未処理の復旧対象セグメントがあるか否かを判断する。未処理の復旧対象セグメントがあれば、処理がステップS71に進められる。未処理の復旧対象セグメントがなければ、処理がステップS74に進められる。
【0122】
[ステップS74]二重化制御部534は、復旧対象セグメントの既割当スライス(プライマリスライス)から新たに割り当てたスライス(セカンダリスライス)へのデータコピーを指示する。具体的には、二重化制御部534は、プライマリスライスを管理するディスクノードに対して、セカンダリスライスのディスクノードIDとスライスIDとを指定したデータコピー指示を送信する。
【0123】
[ステップS75]二重化制御部534は、スライス情報更新指示をプライマリスライスとセカンダリスライスとを管理するディスクノードに送信する。送信されるスライス情報更新指示には、既割当スライスを復旧対象セグメントのプライマリライスとし、ステップS45で割り当てたスライスを復旧対象セグメントのセカンダリスライスとすることが示される。各ディスクノードでは、スライス情報記憶部とストレージ装置とのそれぞれに格納されたメタデータが更新される。ディスクノードは、メタデータを更新すると、スライス情報更新完了の応答を二重化制御部534に送信する。二重化制御部534は、ディスクノードからスライス情報更新完了の応答が返されると、スライス情報テーブル521とセグメント情報テーブル522とを更新する。
【0124】
[ステップS76]二重化制御部534は、退避処理を再実行するか否かを判断する。例えば、リカバリ処理終了後に中止した退避処理を再実行する旨の指示が予め入力されていた場合、退避処理を再実行すると判断する。また、二重化制御部534は、退避処理の再実行の有無を問い合わせる画面を表示し、管理者からの再実行の要否を示す操作入力に基づいて、退避処理再開の要否を判断してもよい。退避処理を再実行する場合、処理がステップS77に進められる。退避処理を再実行しない場合、退避処理中リカバリ処理が終了する。
【0125】
[ステップS77]二重化制御部534は、退避処理の再実行を退避制御部535に送信する。これにより、退避制御部535により退避処理が再実行される。再実行される退避処理の詳細は、図13に示した処理と同様である。ただし、退避処理対象ディスクノードリスト525については中止された退避処理において作成されたものが使用される。そのため、再実行された退避処理では、ステップS11に示す退避処理対象ディスクノードリスト作成処理は行われない。二重化制御部534が退避処理再開指示を出力すると、退避処理中リカバリ処理が終了する。
【0126】
以上のような手順でリカバリ処理が行われる。以下に、退避処理中に障害が発生したときのスライス割当状態の遷移について説明する。
図19は、退避処理中に障害が発生したときのスライス割当の状態遷移を示す図である。図19において、ストレージ装置110,210,310,410を管理するディスクノードのディスクノードIDを、各ストレージ装置110,210,310,410の下に示している。また、ストレージ装置110,210,310,410内のスライスのスライスIDを、各スライスの左に示している。
【0127】
第1の状態[ST1]は、退避処理開始時のスライス割当状態を示している。図19の例では、ストレージ装置310の退避処理が開始されている。ストレージ装置310には、3つのスライスがセグメントに割り当てられている。そこで、ストレージ装置310のスライスID「2」のスライスのデータをストレージ装置210のスライスID「2」のスライスに退避させ、ストレージ装置310のスライスID「3」のスライスのデータをストレージ装置410のスライスID「2」のスライスに退避させ、ストレージ装置310のスライスID「6」のスライスのデータをストレージ装置110のスライスID「2」のスライスに退避させるものとする。
【0128】
この場合、ストレージ装置310内の退避対象スライスが順に選択され、退避先のスライスにデータがコピーされる。なお、ストレージ装置310のスライスID「3」のスライスは、セグメントID「3」のセグメントのプライマリリスライスである。そこで、セグメントID「3」のセグメントのセカンダリスライス(ストレージ装置210のスライスID「3」のスライス)のプライマリ化を行った後、データコピーが行われる。
【0129】
このような退避処理中に、退避対象のストレージ装置310以外のストレージ装置に障害が発生すると、退避処理は中止される。
第2の状態[ST2]は、障害発生時のスライス割当状態を示している。図19の例では、ストレージ装置310のスライスID「6」のスライスのデータを退避させる前に、ストレージ装置410に障害が発生している。この場合、退避処理が中止される。
【0130】
第3の状態[ST3]は、退避処理中止後のスライス割当状態を示している。退避処理が中止されたため、依然として、ストレージ装置310のスライスID「6」のスライスは、セグメントID「2」のセグメントに割り当てられている。なお、退避処理が中止されても、ストレージ装置が退避処理の対象であることを示す情報は維持される。
【0131】
退避処理が中止されると、リカバリ処理が開始される。リカバリ処理では、まずスライス情報テーブル521とセグメント情報テーブル522とが再構成される。
図20は、再構成されたスライス情報テーブルの例を示す図である。再構成されたスライス情報テーブル521には、障害が発生したディスクノード400(ディスクノードID「DP−D」)のメタデータは含まれていない。そのため、正常動作している3台のディスクノード100,200,300から収集したメタデータから、セグメント情報テーブル522が再構成される。
【0132】
図21は、再構成されたセグメント情報テーブルの例を示す図である。再構成されたセグメント情報テーブル522では、1つのスライスしか割り当てられていないセグメントが存在する。このセグメントが、復旧対象セグメントとして選択される。
【0133】
次に、退避処理中のリカバリ処理におけるスライス割当の状態遷移例について説明する。
図22は、退避処理中のリカバリ処理におけるスライス割当の状態遷移を示す図である。リカバリ処理を行う場合、障害が発生したストレージ装置410に格納されていたスライスが割り当てられていたセグメントがリカバリ対象となる。そして、リカバリ対象のセグメントに割り当てられている別のセグメントのデータを用いて、データの二重化が実行される。データの二重化を行う場合、退避処理対象のストレージ装置310のスライスが優先的に処理される。
【0134】
第4の状態[ST4]は、退避対象スライスのリカバリ処理時のスライス割当状態を示している。図22の例では、ストレージ装置410のスライスID「6」のスライスが、セグメントID「2」のセグメントに対して、プライマリスライスとして割り当てられている。またこのセグメントには、退避処理対象のストレージ装置310のスライスID「6」のスライスが、セカンダリスライスとして割り当てられている。そこで、ストレージ装置310のスライスID「6」のスライスをプライマリスライスに変更した後、そのスライスのデータのコピーが行われる。図22の例では、ストレージ装置310のスライス番号「6」の退避対象スライスのデータが、ストレージ装置110のスライス番号「2」のスライスにコピーされている。
【0135】
その後、退避処理対象のストレージ装置310以外のストレージ装置110,210に格納されているデータのリカバリ処理が行われる。
第5の状態[ST5]は、退避対象ではないスライスのリカバリ処理時のスライス割当状態を示している。図22の例では、ストレージ装置110のスライスID「2」のスライスのデータが、ストレージ装置210のスライスID「1」のスライスにコピーされる。また、ストレージ装置210のスライスID「3」のスライスのデータが、ストレージ装置110のスライスID「5」のスライスにコピーされる。
【0136】
第6の状態[ST6]は、リカバリ処理終了時の状態を示している。リカバリ処理が終了したことにより、ストレージ装置410のスライスが割り当てられていたセグメントは、正常に動作しているストレージ装置110,210,310のスライスが二重化して割り当てられている。また、退避処理対象のストレージ装置310は、リカバリ処理時のコピー先として選択される優先順位が最も低いため、リカバリ処理により新たにデータがコピーされずに済んでいる。
【0137】
リカバリ処理終了後、中止した退避処理を再開することができる。
図23は、再開した退避処理におけるスライス割当の状態遷移を示す図である。第7の状態[ST7]は、退避処理再開時のスライス割当状態を示している。図23の例では、空きスライスは、ストレージ装置210のスライスID「6」のスライスのみである。そこで、ストレージ装置210のスライスID「6」のスライスに、退避対象スライスの退避が行われる。
【0138】
なお、退避対象スライスであるストレージ装置310のスライスID「6」のスライスは、プライマリスライスである。そこで、そのスライスとペアを組んでいるストレージ装置110のスライスID「2」のスライスが、プライマリスライスに変更される。
【0139】
第8の状態[ST8]は、退避処理終了後のスライス割当状態を示している。退避処理が終了したことにより、ストレージ装置310内のスライスはすべて空きスライスとなっている。
【0140】
このようにして、再開した退避処理が実行される。退避処理対象のストレージ装置310のスライスは、リカバリ処理におけるリザーブスライスとして選択される優先順位が低い。そのため、退避処理を中止してリカバリ処理が実行されても、退避対象スライス数が増加せずに済む。その結果、再開した退避処理では、中止時点で未処理だった退避対象スライスのデータを退避させるだけで済む。すなわち、退避処理中に退避処理対象のストレージ装置とは異なるストレージ装置が故障してリカバリ処理が実行されても、退避処理の長期化が防止される。
【0141】
しかも、リカバリ処理において、退避処理対象ディスクノードで管理されているスライスのコピー先の選択を優先して実行する。これにより、未処理の復旧対象セグメントがあるにも拘わらず退避処理対象ディスクノード以外のディスクノードに空きスライスが無くなってしまった場合であっても、未処理の復旧対象セグメントに割り当てるスライスを確実に選択できる。
【0142】
すなわち、リカバリ処理で未処理の復旧対象セグメントに割り当てるスライスを選択する場合、既に割り当てられているスライスとは異なるディスクノードで管理されているスライスを選択する必要がある。退避処理対象ディスクノード以外のディスクノードに空きスライスが無くなってしまった場合、空きスライスは退避処理対象ディスクノードにしか存在しない。このとき、未処理の復旧対象セグメントの既に割り当てられているスライスが退避処理対象ディスクノードで管理されている場合、二重化のためのペアとなるスライスの選択の余地が無くなってしまう。退避処理対象ディスクノードで管理されているスライスのコピー先の選択を優先して実行しておけば、このようなペアとなるスライスが選択できないという事態の発生を回避することができる。
【0143】
さらに、上記実施の形態では、退避対象スライスがプライマリスライスの場合、ペアとなるスライスをプライマリ化した後、データのコピーを実行する。これにより、アクセスノード30,40からのデータアクセスを、データコピー処理を行っていないストレージノードに対して行わせることができる。すなわち、アクセスノード30,40は、制御ノード500からセグメント情報テーブル522に示される情報を取得し、常にプライマリスライスに対してデータアクセスを行う。アクセスノード30,40がデータアクセスを行ったときに、アクセス先のスライスが、アクセス対象のセグメントのプライマリスライスではない場合、アクセスノード30,40は、制御ノード500から最新のセグメント情報テーブル522を取得し、改めてプライマリスライスにアクセスを行う。このように、アクセスノード30,40が常にプライマリスライスにアクセスするように制御されていることから、退避処理によるコピー元のスライスがプライマリスライスの場合、ペアとなるスライスをプライマリ化することで、退避対象スライスへのアクセスを防止できる。その結果、退避処理のためのデータコピーとアクセスノード30,40からのアクセスが同一セグメントに同時に行われることがなくなり、アクセス効率の低下を防止できる。
【0144】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御ノードやディスクノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0145】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0146】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0147】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【0148】
(付記1) 複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理プログラムであって、
前記コンピュータを、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段、
障害が発生した障害ストレージ装置を検出する障害検出手段、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする復旧対象データ判定手段、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段、
として機能させるデータ管理プログラム。
【0149】
(付記2) 前記冗長データコピー先選択手段は、前記復旧対象データの総量に対して、前記退避処理対象ストレージ装置以外のストレージ装置内の空き領域が不足している場合、不足しているデータ容量分だけ、前記退避処理対象ストレージ装置内の空き領域を前記冗長データコピー先として選択することを特徴とする付記1記載のデータ管理プログラム。
【0150】
(付記3) 前記冗長データコピー先選択手段は、前記退避処理対象ストレージ装置内に格納されている前記復旧対象データの前記冗長データコピー先を決定後、前記退避処理対象ストレージ装置以外のストレージ装置に格納されている前記復旧対象データの前記冗長データコピー先を決定することを特徴とする付記1記載のデータ管理プログラム。
【0151】
(付記4) 前記復旧対象データ判定手段は、前記障害検出手段で検出された前記障害ストレージ装置以外の正常ストレージ装置に格納されているデータ同士の対応関係を調査し、対応関係にある他のデータが存在しないデータを前記復旧対象データとすることを特徴とする付記1記載のデータ管理プログラム。
【0152】
(付記5) 前記復旧対象データ判定手段は、仮想的に設けられた論理ボリュームの記憶領域を構成する複数のセグメントへの前記複数のストレージ装置の記憶領域を構成するスライスの割当関係を示すメタデータを、前記複数のストレージ装置から収集し、収集した前記メタデータに基づいて、1つのスライスしか割り当てられていないセグメントを復旧対象セグメントとし、前記復旧対象セグメントに割り当てられているスライス内のデータを前記復旧対象データとすることを特徴とする付記1記載のデータ管理プログラム。
【0153】
(付記6) 前記退避処理実行手段は、前記退避処理が中止された場合、前記冗長データコピー手段によるコピー処理が終了後、前記退避対象ストレージ装置内のデータの退避処理を再実行することを特徴とする付記1記載のデータ管理プログラム。
【0154】
(付記7) 前記複数のストレージ装置はそれぞれ個別のディスクノードで管理されており、
前記退避処理実行手段は、前記退避処理対象ストレージ装置に格納されているデータのコピー先となる退避データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の空き領域から選択し、前記退避処理対象ストレージ装置を管理する前記ディスクノードに、前記退避データコピー先への前記退避処理対象ストレージ装置内のデータのコピーを実行させることを特徴とする付記1記載のデータ管理プログラム。
【0155】
(付記8) 前記複数のストレージ装置はそれぞれ個別のディスクノードで管理されており、
前記冗長データコピー手段は、前記復旧対象データが格納された前記ストレージ装置を管理する前記ディスクノードに、前記冗長データコピー先選択手段で選択された前記冗長データコピー先への前記復旧対象データのコピーを実行させることを特徴とする付記1記載のデータ管理プログラム。
【0156】
(付記9) 複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理装置であって、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段と、
障害が発生した障害ストレージ装置を検出する障害検出手段と、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段と、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを判断し、復旧対象データとする復旧対象データ判定手段と、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段と、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段と、
を有するデータ管理装置。
【0157】
(付記10) 複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理方法であって、
前記コンピュータが、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行し、
障害が発生した障害ストレージ装置を検出し、
前記退避処理中に障害の発生が検出された場合、前記退避処理を中止させ、
前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとし、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択し、
選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする、
ことを特徴とするデータ管理方法。
【図面の簡単な説明】
【0158】
【図1】実施の形態の概要を示す図である。
【図2】本実施の形態のマルチノードストレージシステム構成例を示す図である。
【図3】制御ノードのハードウェア構成例を示す図である。
【図4】論理ボリュームのデータ構造を示す図である。
【図5】ディスクノードとアクセスノードとの機能を示すブロック図である。
【図6】スライス情報記憶部のデータ構造例を示す図である。
【図7】制御ノードの機能を示すブロック図である。
【図8】スライス情報テーブルのデータ構造例を示す図である。
【図9】セグメント情報テーブルのデータ構造例を示す図である。
【図10】復旧対象リストのデータ構造例を示す図である。
【図11】退避対象スライスリストのデータ構造例を示す図である。
【図12】退避処理対象ディスクノードリストのデータ構造例を示す図である。
【図13】退避処理の手順を示すフローチャートである。
【図14】リカバリ処理の手順を示すフローチャートである。
【図15】通常リカバリ処理の手順を示すフローチャートである。
【図16】退避処理中リカバリ処理を示す第1のフローチャートである。
【図17】退避処理中リカバリ処理を示す第2のフローチャートである。
【図18】退避処理中リカバリ処理を示す第3のフローチャートである。
【図19】退避処理中に障害が発生したときのスライス割当の状態遷移を示す図である。
【図20】再構成されたスライス情報テーブルの例を示す図である。
【図21】再構成されたセグメント情報テーブルの例を示す図である。
【図22】退避処理中のリカバリ処理におけるスライス割当の状態遷移を示す図である。
【図23】再開した退避処理におけるスライス割当の状態遷移を示す図である。
【符号の説明】
【0159】
1a,1b,1c,1d ストレージ装置
2 退避処理実行手段
3 記憶手段
4 障害検出手段
5 退避処理中止指示手段
6 復旧対象データ判定手段
7 冗長データコピー先選択手段
8 冗長データコピー手段
【技術分野】
【0001】
本発明は複数のストレージ装置に格納されたデータを管理するためのデータ管理プログラム、データ管理装置、およびデータ管理方法に関し、特に二重化されたデータを管理するためのデータ管理プログラム、データ管理装置、およびデータ管理方法に関する。
【背景技術】
【0002】
コンピュータシステムでは、多数のユーザが使用する大量のデータを管理する必要がある。このような大量のデータを管理するためのシステムの1つとして、マルチノードストレージシステムがある。
【0003】
マルチノードストレージシステムは、複数のノードで構成されるストレージシステムである。例えば、マルチノードストレージシステムには、アクセスノード、制御ノード、およびディスクノードで構成される。アクセスノードは、ディスクノードに格納されたデータへのアクセス環境をユーザに提供するコンピュータである。ユーザは、アクセスノードに対してデータへのアクセス要求を出すことで、ディスクノードに格納されたデータにアクセスすることができる。制御ノードは、マルチノードストレージシステムで提供されるデータの保守管理をコンピュータである。例えば、制御ノードは、仮想的に定義した論理ボリュームと、ディスクノードが管理するストレージ装置内の記憶領域との対応関係を管理する。ディスクノードは、ストレージ装置を有しており、ストレージ装置の記憶領域を、一定の大きさで区切ったスライスと呼ぶ領域で管理する。
【0004】
マルチノードストレージシステムでは、同一のデータを異なる複数のディスクノードで管理する。すなわち、同じデータが、異なるディスクノードに属する2つのスライスに格納される。このようにデータを冗長化することで、1つのディスクノードに障害が発生してもデータを失わずに済む。
【0005】
なお、ディスクノードに障害が発生すると、そのディスクノードに格納されたデータが使用できなくなり、データの二重化状態が失われる。その場合、制御ノードがディスクノードに指示を出し、リカバリ処理が開始される。リカバリ処理とは、データの二重化を復旧する処理である。
【0006】
リカバリ処理では、制御ノードが、障害などでアクセスができなくなったスライスとペアを組んでいたスライス(二重化が失われたスライス)を特定する。次に、制御ノードは、二重化が失われたスライスとペアを組む別のスライス(これをリザーブスライスと呼ぶ)を確保する。そして、制御ノードは、確保したリザーブスライスに対してデータコピーを行うように、二重化が失われたスライスを管理するディスクノードに指示する。このようなリカバリ処理により、マルチノードストレージシステムでは、ディスクノードで障害が発生してもデータの二重化状態が回復される。
【0007】
ところで、障害とは別の理由で、ディスクノードの機能を停止する場合がある。例えばディスクノードのハードウェアを、より性能の高い別のハードウェアと入れ替える場合などである。このような場合、データの退避処理(evacuate処理)が行われる。退避処理とは、指定したディスクノードが管理するデータを他のノードにコピーする処理である。管理者は、退避処理の後に指定したディスクノードを新しいハードウェアと交換する。ディスクノードを交換後、そのディスクノードが再度マルチノードストレージシステムに組み込まれる。なお、ディスクノードのハードウェアの交換時に限らず、ディスクノードのOS(Operating System)などの再起動を伴うソフトウェアのアップグレード時にも退避処理が行われる。ディスクノードのメンテナンス時に退避処理を行うことにより、データの二重化を維持したままハードウェアのグレードアップなどの作業が可能となる。
【0008】
なお、退避処理に要する時間は、ディスクノードが管理しているストレージ装置の記憶容量に大きく依存する。最近のストレージ装置の大容量化に伴い退避処理の時間も長くなる傾向にある。退避処理に長時間を要することにより、退避処理中に、退避処理対象とは別のディスクノードに障害が発生する可能性も高くなる。退避処理中に退避処理対象ではないディスクノードに障害が発生すると退避処理が打ち切られ、リカバリ処理が実行される。
【特許文献1】特開2005−4681号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかし、退避処理を中止してリカバリ処理を実行した場合、退避処理対象のディスクノードのスライスが、リザーブスライスとして選択される場合がある。すると、退避処理対象のディスクノードのスライスにデータがコピーされる。この場合、リカバリ完了後に退避処理を中止したディスクノードの退避処理を再度続行すると、中止前よりも退避させなければならないデータ量が増え、退避処理が完了するまでの時間が長期化してしまう。
【0010】
本発明はこのような点に鑑みてなされたものであり、リカバリ処理に起因して退避処理実行時間が長期化するのを防止できるデータ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するために、以下のような機能を実現するデータ管理装置が提供される。データ管理装置は、複数のストレージ装置に格納されたデータを管理するために、退避処理実行手段、障害検出手段、退避処理中止指示手段、復旧対象データ判定手段、冗長データコピー先選択手段、および冗長データコピー手段を有する。
【0012】
退避処理実行手段は、任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する。障害検出手段は、障害が発生した障害ストレージ装置を検出する。退避処理中止指示手段は、退避処理中に障害検出手段で障害の発生が検出された場合、退避処理実行手段による退避処理を中止させる。復旧対象データ判定手段は、障害検出手段で検出された障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする。冗長データコピー先選択手段は、記憶手段を参照し、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。冗長データコピー手段は、冗長データコピー先選択手段で選択された冗長データコピー先の記憶領域に、復旧対象データをコピーする。
【0013】
また、データ管理装置と同様の機能をコンピュータに実行させるデータ管理プログラム、およびデータ管理装置で実行される処理をコンピュータで実行するデータ管理方法が提供される。
【発明の効果】
【0014】
上記データ管理プログラム、データ管理装置、およびデータ管理方法では、退避処理対象のストレージ装置内のデータ量を増加させずにリカバリ処理が実行され、退避処理実行時間の長期化を防止できる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、実施の形態の概要を示す図である。実施の形態では、複数のストレージ装置1a,1b,1c,1dに格納されたデータを管理するために、退避処理実行手段2、障害検出手段4、退避処理中止指示手段5、復旧対象データ判定手段6、冗長データコピー先選択手段7、および冗長データコピー手段8を有する。
【0016】
なお、図1の例では、ストレージ装置1a,1b,1c,1d内が単位記憶領域(スライス)に分割され、二重化されたスライスに同じ識別番号を付している。
退避処理実行手段2は、任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段3に格納する。図1の例では、ストレージ装置1cが、退避処理対象ストレージ装置である。また、退避処理実行手段2は、退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する。図1の例では、ストレージ装置1cに格納されているデータが、他のストレージ装置1a,1b,1dにコピーされる。
【0017】
障害検出手段4は、障害が発生した障害ストレージ装置を検出する。図1の例では、ストレージ装置1dに障害が発生している。
退避処理中止指示手段5は、退避処理中に障害検出手段4で障害の発生が検出された場合、退避処理実行手段2による退避処理を中止させる。図1の例では、識別番号「1」のスライスのデータと、識別番号「3」のスライスのデータとのコピーが終了した時点で、退避処理が中止されたものとする。すなわち、識別番号「2」のスライスのデータのコピーは実行されていない(退避処理が未処理である)。
【0018】
復旧対象データ判定手段6は、障害検出手段4で検出された障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする。例えば、復旧対象データ判定手段6は、正常に動作しているストレージ装置1a,1b,1cから格納されているデータの情報を収集し、各データの対応関係を調査することで、二重化状態が損なわれているデータを検出し、検出したデータを復旧対象データとする。図1の例では、識別番号「2」、「3」、「5」のスライスのデータが復旧対象データとなる。
【0019】
冗長データコピー先選択手段7は、記憶手段3を参照して退避処理対象ストレージ装置を認識する。次に、冗長データコピー先選択手段7は、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。図1の例では、ストレージ装置1a,1bの記憶領域が優先的に冗長データコピー先として選択される。なお、冗長データコピー先を選択する場合、コピー元の復旧対象データが格納されたストレージ装置とは異なるストレージ装置内の記憶領域が選択される。
【0020】
冗長データコピー手段8は、冗長データコピー先選択手段で選択された冗長データコピー先の記憶領域に、復旧対象データをコピーする。
このような機能によって、退避処理実行手段2による退避処理実行中にストレージ装置の障害が検出されると、退避処理中止指示手段5による退避処理が中止され、リカバリ処理が開始される。リカバリ処理では、復旧対象データ判定手段6により復旧対象データが特定される。次に、冗長データコピー先選択手段7により、復旧対象データの冗長データコピー先が選択される。その際、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択される。そして、冗長データコピー手段8により、冗長データコピー先の記憶領域に復旧対象データがコピーされる。
【0021】
このように、リカバリ処理において退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に冗長データコピー先を選択するようにしたため、退避処理対象ストレージ装置の記憶領域が冗長データコピー先として選択されることを防止できる。その結果、リカバリ処理の実行に起因して退避対象データが増大することがなくなり、退避処理の長期化が防止される。
【0022】
ところで、図1に示した機能は、マルチノードストレージシステムに適用することができる。マルチノードストレージシステムでは、各ストレージ装置が個別のディスクノードで管理されている。そのため、ディスクノードに対してネットワーク経由でコピー指示を出すことで、ディスクノード間でデータをコピーさせることができる。そこで、退避処理や障害検出時のリカバリ処理は、ディスクノードにネットワークで接続された制御ノードからの遠隔制御によって実行することが可能となる。以下に、マルチノードストレージシステムを用いた実施の形態を詳細に説明する。
【0023】
図2は、本実施の形態のマルチノードストレージシステム構成例を示す図である。本実施の形態では、ネットワーク10を介して、複数のディスクノード100,200,300,400、制御ノード500、アクセスノード30,40、および管理ノード50が接続されている。ディスクノード100,200,300,400それぞれには、ストレージ装置110,210,310,410が接続されている。
【0024】
ストレージ装置110には、複数のハードディスク装置(HDD)111,112,113,114が実装されている。ストレージ装置210には、複数のHDD211,212,213,214が実装されている。ストレージ装置310には、複数のHDD311,312,313,314が実装されている。ストレージ装置410には、複数のHDD411,412,413,414が実装されている。各ストレージ装置110,210,310,410は、内蔵するHDDを用いたRAIDシステムである。本実施の形態では、各ストレージ装置110,210,310,410のRAID5のディスク管理サービスを提供する。
【0025】
ディスクノード100,200,300,400は、例えば、IA(Intel Architecture)と呼ばれるアーキテクチャのコンピュータである。ディスクノード100,200,300,400は、接続されたストレージ装置110,210,310,410に格納されたデータを管理し、管理しているデータをネットワーク10経由で端末装置21,22,23に提供する。また、ディスクノード100,200,300,400は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも2つのディスクノードで管理されている。
【0026】
制御ノード500は、ディスクノード100,200,300,400を管理する。例えば、制御ノード500は、管理ノード50から新たなストレージ装置の追加要求を受け取ると、新たな論理ボリュームを定義し、その論理ボリュームを介して追加されたストレージ装置に格納されていたデータにアクセスできるようにする。
【0027】
アクセスノード30,40には、ネットワーク20を介して複数の端末装置21,22,23が接続されている。アクセスノード30,40には、論理ボリュームが定義されている。そして、アクセスノード30,40は、端末装置21,22,23からの論理ボリューム上でのデータのアクセス要求に応答して、ディスクノード100,200,300,400内の対応するデータへアクセスする。
【0028】
管理ノード50は、管理者がマルチノードストレージシステムの運用を管理するために使用するコンピュータである。例えば、管理ノード50では、マルチノードストレージシステムにおける論理ボリュームの使用量などの情報を収集し、運用状況を画面に表示する。
【0029】
図3は、制御ノードのハードウェア構成例を示す図である。制御ノード500は、CPU(Central Processing Unit)501によって装置全体が制御されている。CPU501には、バス507を介してRAM(Random Access Memory)502、ハードディスクドライブ(HDD:Hard Disk Drive)503、グラフィック処理装置504、入力インタフェース505、および通信インタフェース506が接続されている。
【0030】
RAM502は、制御ノード500の主記憶装置として使用される。RAM502には、CPU501に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM502には、CPU501による処理に必要な各種データが格納される。HDD503は、制御ノード500の二次記憶装置として使用される。HDD503には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【0031】
グラフィック処理装置504には、モニタ11が接続されている。グラフィック処理装置504は、CPU501からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置がある。
【0032】
入力インタフェース505には、キーボード12とマウス13とが接続されている。入力インタフェース505は、キーボード12やマウス13から送られてくる信号を、バス507を介してCPU501に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0033】
通信インタフェース506は、ネットワーク10に接続されている。通信インタフェース506は、ネットワーク10を介して、他のコンピュータとの間でデータの送受信を行う。
【0034】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、制御ノード500のハードウェア構成を示しているが、ディスクノード100,200,300,400、アクセスノード30,40、および管理ノード50も同様のハードウェア構成で実現することができる。
【0035】
図4は、論理ボリュームのデータ構造を示す図である。本実施の形態では、論理ボリューム60には論理ボリューム識別子「LVOL−X」が付与されている。ネットワーク経由で接続された4台のディスクノード100,200,300,400には、個々のノードの識別のためにそれぞれ「DP−A」、「DP−B」、「DP−C」、「DP−D」というノード識別子が付与されている。そして、各ディスクノード100,200,300,400に接続されているストレージ装置110,210,310,410は、ディスクノード100,200,300,400のノード識別子によってネットワーク10で一意に識別される。
【0036】
各ディスクノード100,200,300,400が有するストレージ装置110,210,310それぞれにおいてRAID5のストレージシステムが構成されている。各ストレージ装置110,210,310,410で提供される記憶機能は、複数のスライス115a〜115f,215a〜215f,315a〜315f,415a〜415fに分割されて管理されている。
【0037】
論理ボリューム60は、セグメント61〜66という単位で構成される。セグメント61〜66の記憶容量は、ストレージ装置110,210,310,410における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が1ギガバイトとするとセグメントの記憶容量も1ギガバイトである。論理ボリューム60の記憶容量はセグメント1つ当たりの記憶容量の整数倍である。セグメント61〜66は、それぞれプライマリスライス61a,62a,63a,64a,65a,66aとセカンダリスライス61b,62b,63b,64b,65b,66bとの組(スライスペア)で構成される。
【0038】
同一セグメントに属する2つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
【0039】
図4の例では、論理ボリューム60内のスライスの識別子を、「P」または「S」のアルファベットと数字との組合せで示している。「P」はプライマリスライスであることを示している。「S」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、1番目のセグメント61のプライマリスライスが「P1」で示され、セカンダリスライスが「S1」で示される。
【0040】
図5は、ディスクノードとアクセスノードとの機能を示すブロック図である。アクセスノード30は、論理ボリュームアクセス制御部31を有している。論理ボリュームアクセス制御部31は、端末装置21,22,23からの論理ボリューム60内のデータを指定したアクセス要求に応じて、指定されたデータを管理するディスクノードに対してデータアクセスを行う。具体的には、論理ボリュームアクセス制御部31は、アクセス対象のデータが記憶された論理ボリューム60内のブロックを特定する。次に、論理ボリュームアクセス制御部31は、特定したブロックに対応するセグメントを特定する。さらに、論理ボリュームアクセス制御部31は、セグメントを構成するプライマリスライスに対応するディスクノードおよびそのディスクノード内のスライスを特定する。そして、論理ボリュームアクセス制御部31は、特定したディスクノードに対して、特定したスライスへのアクセス要求を出力する。アクセスノード40も、アクセスノード30と同様の機能を有している。
【0041】
ディスクノード100は、I/F部120、デバイス制御部130、スライス情報記憶部140、および制御部150を有する。
I/F部120は、所定の通信プロトコルにより、他の装置とネットワーク10を介したデータ通信を実現するための通信機能である。デバイス制御部130は、ストレージ装置110を制御する。
【0042】
スライス情報記憶部140は、ストレージ装置110のスライスを管理するためのスライス情報を記憶する記憶機能である。例えば、ディスクノード100のRAM内の記憶領域の一部がスライス情報記憶部140として使用される。なお、スライス情報は、スライス毎に設けられたメタデータを集めたものである。メタデータは、対応するスライスが割り当てられたセグメントや、スライスペアにおいて対となる他のスライスを示す情報である。
【0043】
制御部150は、データアクセス制御部151、ハートビート送信部152、データ管理部153を有する。
データアクセス制御部151は、アクセスノードからのアクセス要求(リード要求またはライト要求)を受け付けた場合に、スライス情報記憶部140を参照して、アクセス対象のスライスを判断する。そして、データアクセス制御部151は、ストレージ装置110内のアクセス要求に応じたデータにアクセスする。例えば、アクセス要求がリード要求であれば、データアクセス制御部151は、ストレージ装置110からデータを取得し、アクセスノード30に送信する。また、アクセス要求がライト要求であれば、データアクセス制御部151は、ストレージ装置110にデータを書き込む。
【0044】
ハートビート送信部152は、ディスクノード100およびストレージ装置110が正常動作していることを制御ノード500に定期的に通知する。具体的には、ハートビート送信部152は、ディスクノード100およびストレージ装置110が正常に動作している場合、定期的に制御ノード500へ正常に動作していることを示す正常通知(ハートビート)を送信する。制御ノード500では、ディスクノード100からのハートビートが一定時間途絶えた場合に、ディスクノード100での障害が発生したことを認識する。
【0045】
データ管理部153は、制御ノード500からスライス情報の更新指示を受け付けた場合に、スライス情報記憶部140に記憶されているスライス情報を更新する。スライス情報の更新処理としては、例えば、スライスのプライマリ化がある。データ管理部153は、プライマリ化指示を受け付けた場合、スライス情報記憶部140内のプライマリ化指示に含まれるスライスIDで示されるメタデータの属性を「プライマリ(P)」に更新する。
【0046】
また、データ管理部153は、スライス割当指示を受け付けた場合、スライス割当指示に含まれるスライスIDをキーにして、スライス情報記憶部140からメタデータを特定する。データ管理部153は、特定したメタデータの内容を、スライス割当指示で指定された内容(割当先のセグメントやペアとなる他のスライスの情報が含まれる)に応じて更新する。ストレージ装置110のスライスをセグメントに割り当てた場合、データ管理部153は、他のディスクノードで管理されているペアとなるスライスからデータを取得し、新たに割り当てられたスライスに格納する。
【0047】
なお、データ管理部153は、スライス情報内のメタデータを更新すると、ストレージ装置110内の対応するメタデータも更新する。これにより、ストレージ装置110内のメタデータとスライス情報記憶部140内のメタデータとの同一性が維持される。さらに、データ管理部153は、制御ノード500から、スライス情報取得要求を受け取ると、スライス情報記憶部140内のスライス情報を制御ノード500に送信する。
【0048】
退避処理やリカバリ処理が行われる場合、制御ノード500からディスクノード100にストレージ装置110内のデータのコピー指示が出される。データ管理部153は、制御ノード500からのコピー指示を受け取ると、ストレージ装置110内のデータを他のディスクノードに転送する。
【0049】
さらに、データ管理部153は、プライマリスライスとセカンダリスライスとのデータの冗長性確保処理を行う。具体的には、データ管理部153は、データアクセス制御部151によってライト要求に基づくデータの書き込みが行われた場合、データが書き込まれたスライス(プライマリスライス)に対応するセカンダリスライスを管理するディスクノードのデータ管理部と連携動作し、セカンダリスライス内のデータを更新する。
【0050】
なお、ディスクノード200,300,400もディスクノード100と同様の機能を有している。
次に、スライス情報記憶部140に格納されるデータについて詳細に説明する。
【0051】
図6は、スライス情報記憶部のデータ構造例を示す図である。スライス情報記憶部140には、メタデータテーブル141が格納されている。メタデータテーブル141には、ディスクノードID、スライスID、状態、論理ボリュームID、セグメントID、ペアのディスクノードID、およびペアのスライスIDの欄が設けられている。メタデータテーブル141内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す1つのレコードを構成している。
【0052】
ディスクノードIDの欄は、ストレージ装置110を管理しているディスクノード100の識別情報(ディスクノードID)が設定される。
スライスIDの欄には、メタデータに対応するスライスのストレージ装置110内での識別情報(スライスID)が設定される。
【0053】
状態の欄には、スライスの状態を示す状態フラグが設定される。スライスが論理ボリュームのセグメントに割り当てられていない場合、状態フラグ「F」が設定される。論理ボリュームのセグメントのプライマリストレージに割り当てられている場合、状態フラグ「P」が設定される。論理ボリュームのセグメントのセカンダリストレージに割り当てられている場合、状態フラグ「S」が設定される。
【0054】
論理ボリュームIDの欄には、スライスに対応するセグメントが属する論理ボリュームを識別するための識別情報(論理ボリュームID)が設定される。
ペアのディスクノードIDの欄には、ペアのスライス(同じセグメントに属する別のスライス)を有するストレージ装置を管理するディスクノードの識別情報(ディスクノードID)が設定される。
【0055】
ペアのスライスIDの欄には、ペアのスライスを、そのスライスが属するストレージ装置内で識別するための識別情報(スライスID)が設定される。
次に、制御ノード500の機能を詳細に説明する。制御ノード500は、論理ボリュームを管理すると共に、ディスクノード100,200,300,400に障害が発生したときのリカバリ処理を行う。また、制御ノード500は、システム管理者からの操作入力などに応答し、いずれかのストレージ装置に格納されているデータの退避処理を行う。
【0056】
図7は、制御ノードの機能を示すブロック図である。制御ノード500は、インタフェース(I/F)部510、記憶部520、および制御部530を有する。I/F部510は、所定の通信プロトコルにより、ディスクノード100,200,300,400、アクセスノード30,40、および管理ノード50と、ネットワーク10を介したデータ通信を実現するための通信機能である。
【0057】
記憶部520は、各種情報を記憶する記憶機能である。例えば、RAM502の記憶領域の一部を、記憶部520として利用することができる。記憶部520には、スライス情報テーブル521、セグメント情報テーブル522、復旧対象リスト523、退避対象スライスリスト524、および退避処理対象ディスクノードリスト525が記憶されている。
【0058】
スライス情報テーブル521は、各ディスクノード100,200,300,400から収集したメタデータ(ストレージ装置内の各スライスに関して、割り当てられたセグメント、および対となる他のスライスが示された情報)が登録されたデータテーブルである。スライス情報テーブル521は、制御部530内のスライス情報収集部532によって作成される。
【0059】
セグメント情報テーブル522は、論理ボリュームを構成する各セグメントに対して割り当てられたスライスを示す情報である。セグメント情報テーブル522は、スライス情報収集部532によって、ディスクノード100,200,300,400から収集したメタデータ基づいて生成される。
【0060】
復旧対象リスト523は、リカバリ処理の対象となるセグメントを示す情報である。復旧対象リスト523は、制御部530内の復旧対象抽出部533によって生成される。
退避対象スライスリスト524は、退避処理を実行する際に、データを退避させるべきスライスのリストである。退避対象スライスリスト524は、制御部530内の退避制御部535によって生成される。
【0061】
退避処理対象ディスクノードリスト525は、退避処理の対象となっているディスクノードのリストである。退避対象スライスリスト524は、制御部530内の退避制御部535によって生成される。
【0062】
制御部530は、監視部531、スライス情報収集部532、復旧対象抽出部533、二重化制御部534、および退避(Evacuate)制御部535を有する。
監視部531は、ディスクノード100,200,300,400が正常に動作しているか否かを監視する処理部である。具体的には、監視部531は、ディスクノード100,200,300,400から定期的に送られてくるハートビートを受信する。そのとき、監視部531は、ハートビートの受信時刻を、ディスクノードに対応付けて記憶する。そして、監視部531は、前回のハートビート受信から所定期間以上経過しても次のハートビートを送ってこないディスクノードがあると、そのディスクノードに障害が発生したものと判断する。
【0063】
スライス情報収集部532は、システムの運用開始時にディスクノード100,200,300,400からスライス情報を収集し、スライス情報テーブル521とセグメント情報テーブル522とを生成する。また、スライス情報収集部532は、監視部531によってディスクノード100,200,300,400のいずれかに異常が発生したことが検知された場合に、正常に動作しているディスクノードからスライス情報(メタデータの集合)を収集する。そして、スライス情報収集部532は、収集したスライス情報に基づいて、スライス情報テーブル521とセグメント情報テーブル522とを新たに生成する。
【0064】
復旧対象抽出部533は、監視部531によりディスクノードの障害が検出されると、復旧対象のセグメントを検出する。具体的には、復旧対象抽出部533は、障害発生により再生成されたセグメント情報テーブル522に基づいて、復旧対象のセグメントを抽出する。復旧対象のセグメントとは、プライマリスライスまたはセカンダリスライスの一方のみが記憶されているセグメントである。そして、復旧対象抽出部533は、復旧対象のセグメントを示す情報を復旧対象リスト523に格納する。
【0065】
二重化制御部534は、セグメントのデータの二重化が保たれるように、セグメントへのスライス割当を制御する。すなわち、ディスクノードの障害により二重化状態が崩れたセグメントが発生すると、そのセグメントのリカバリ処理(二重化回復処理)を行う。リカバリ処理は、復旧対象のセグメントに割り当てられているスライスを、正常に動作しているストレージ管理装置の空きスライスと二重化させる処理である。リカバリ処理は、大別するとプライマリ化処理、空きスライス割当処理、およびスライス情報更新処理に分かれる。
【0066】
プライマリ化処理は、復旧対象のセグメントに現在割り当てられているスライスをすべてプライマリにする処理である。具体的には、二重化制御部534は、復旧対象リスト523とセグメント情報テーブル522とから、復旧対象セグメントに割り当てられているスライスのディスクノードIDおよびスライスIDを取得する。そして、二重化制御部534は、取得した復旧対象のスライスのディスクノードIDに該当するストレージ装置を有するディスクノードに対して、プライマリ化指示を送信する。プライマリ化指示で指定されたスライスは、そのプライマリか指示を受け取ったディスクノードによって、属性がプライマリに変更される。
【0067】
続いて、二重化制御部534は、空きスライス割当処理を行う。具体的には、二重化
制御部534は、スライス情報テーブル521から、復旧対象のセグメントに現在割り当てられているスライス(プライマリスライス)とは異なるストレージ装置に属するスライスで、いずれのセグメントにも割り当てられていないスライス(空きスライス)を検索する。
【0068】
そして、二重化制御部534は、検索されたスライスの1つを選択し、復旧対象のセグメントのセカンダリスライスとして割り当てる。この際、二重化制御部534は、退避処理対象ディスクノードリスト525を参照し、退避処理対象のディスクノードの存否を確認する。退避処理対象のディスクノードがある場合、二重化制御部534は、そのディスクノードが管理するスライスは、空きスライス割当処理におけるセカンダリスライスとしての選択する優先順位を最も低くする。すなわち、退避処理対象のディスクノード以外のディスクノードが管理するスライスの中に空きスライスが無くなったときにのみ、退避処理対象のディスクノードが管理するスライスが、復旧対象のセグメントに割り当てられる。
【0069】
さらに、二重化制御部534は、セカンダリスライスとするスライスへのデータコピー指示を、プライマリスライスを管理するディスクノードに対して送信する。データコピー指示には、セカンダリスライスを管理するディスクノードのディスクノードIDと、セカンダリスライスのスライスIDとが含まれる。データコピー指示を受け取ったディスクノードは、プライマリスライスのデータをセカンダリスライスを管理するディスクノードに転送する。データを受け取ったディスクノードは、そのデータをセカンダリスライスに格納する。これにより、復旧対象のセグメントのデータが二重化される。
【0070】
そして、二重化制御部534は、復旧対象のセグメントのプライマリスライスとセカンダリスライスとのそれぞれを管理するディスクノードに対して、スライス情報更新指示を送信し、復旧対象リスト523の内容を消去する。スライス情報更新指示には、復旧対象のセグメントに割り当てられたスライスのメタデータが含まれる。スライス情報更新指示を受け取ったディスクノードは、スライス情報更新指示に含まれるメタデータにより、スライス情報記憶部とストレージ装置とのメタデータを更新する。
【0071】
退避制御部535は、管理者による操作入力などに基づいて退避処理を行う。具体的には、退避制御部535は、退避処理対象のストレージ装置を指定した退避指示を受け取ると、指定されたストレージ装置を管理するディスクノードのディスクノードIDを退避処理対象ディスクノードリスト525に登録する。次に退避制御部535は、スライス情報テーブル521を参照し、退避処理対象のストレージ装置のスライスのうち、セグメントに割り当てられているスライス(状態が「P」または「S」)を検出する。そして退避制御部535は、検出したスライス(退避処理対象スライス)に関するディスクノードIDとスライスIDとを、退避対象スライスリスト524に登録する。
【0072】
次に退避制御部535は、セグメント情報テーブル522を参照し、退避処理対象スライスがプライマリスライスか否かを判断する。退避処理対象スライスがプライマリスライスであれば、退避制御部535は、同じセグメントに割り当てられたセカンダリスライスを管理するディスクノードに対して、プライマリスライスへの変更指示(プライマリ化指示)を送信する。
【0073】
さらに、退避制御部535は、退避処理対象のディスクノード以外のディスクノードが管理する空きスライスの中から、退避処理対象スライスのデータを退避させるためのスライスを選択する。そして、退避制御部535は、退避処理対象のディスクノードに対して、選択したスライスへのデータコピー指示を送信する。退避制御部535は、ディスクノードからコピー完了の応答を受け取ると、コピー先のディスクノードに対してスライス情報更新指示を送信する。退避処理対象スライスが複数ある場合、退避制御部535は、退避処理対象スライスを1つずつ選択する。そして、退避制御部535は、前に選択した退避処理対象スライスのデータのコピーが終了すると、次の退避処理対象スライスのデータコピー指示を送信する。
【0074】
退避制御部535は、選択した1つの退避処理対象スライスのデータコピーが終了するごとに、コピー先のディスクノードに対してセグメント情報の更新指示を送信する。すなわち退避制御部535は、コピー先のスライスを、コピー元のスライスと同じセグメントのセカンダリスライスとするメタデータを、コピー先のスライスを管理するディスクノードに送信する。
【0075】
なお、退避制御部535は、退避処理中に、退避処理対象のディスクノード以外のディスクノードで障害が検出されると、退避処理を中止する。中止した退避処理は、リカバリ処理の完了後に再開される。例えば、退避制御部535は、二重化制御部534によるリカバリ処理の完了を検知すると、中止していた退避処理を再開する。また、退避制御部535は、二重化制御部534によるリカバリ処理の完了後、管理者からの再開指示があったときに中止していた退避処理を再開するようにしてもよい。
【0076】
ところで、図1に示した各機能と図7に示した機能との対応関係は次の通りである。図1の退避処理実行手段2と退避処理中止指示手段5との機能は、図7の退避制御部535に含まれる。図1の記憶手段3の機能は、図7の記憶部520に含まれる。図1の障害検出手段4の機能は、図7の監視部531に含まれる。図1の復旧対象データ判定手段6、冗長データコピー先選択手段7、および冗長データコピー手段8の機能は、図7の二重化制御部534に含まれる。
【0077】
次に、記憶部520に格納される情報について詳細に説明する。
図8は、スライス情報テーブルのデータ構造例を示す図である。スライス情報テーブル521には、ディスクノードID、スライスID、状態、論理ボリュームID、セグメントID、ペアのディスクノードID、およびペアのスライスIDの欄が設けられている。スライス情報テーブル521内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す1つのレコードを構成している。スライス情報テーブル521の各欄に設定される情報は、メタデータテーブル141の同名の欄と同じ情報である。ただし、スライス情報テーブル521は、ディスクノード100のメタデータテーブル141とは異なり、複数のディスクノード100,200,300,400から収集したすべてのスライス情報に含まれるメタデータが登録されている。
【0078】
図9は、セグメント情報テーブルのデータ構造例を示す図である。セグメント情報テーブル522には、論理ボリュームID、セグメントID、プライマリ情報、およびセカンダリ情報の欄が設けられている。
【0079】
論理ボリュームIDの欄には、マルチノードストレージシステムで定義された論理ボリュームの識別情報(論理ボリュームID)が設定される。セグメントIDの欄には、論理ボリュームに定義されたセグメントの識別情報(セグメントID)が設定される。
【0080】
プライマリ情報の欄には、対応するセグメントに割り当てられたプライマリスライスに関する情報が設定される。プライマリ情報の欄は、ディスクノードIDとスライスIDとの欄に細分化されている。ディスクノードIDの欄には、プライマリスライスとして割り当てられたスライスを管理するディスクノードの識別情報(ディスクノードID)が設定される。スライスIDの欄には、プライマリスライスとして割り当てられたスライスの識別情報(スライスID)が設定される。
【0081】
セカンダリ情報の欄には、対応するセグメントに割り当てられたセカンダリスライスに関する情報が設定される。セカンダリ情報の欄は、ディスクノードIDとスライスIDとの欄に細分化されている。ディスクノードIDの欄には、セカンダリスライスとして割り当てられたスライスを管理するディスクノードの識別情報(ディスクノードID)が設定される。スライスIDの欄には、セカンダリスライスとして割り当てられたスライスの識別情報(スライスID)が設定される。
【0082】
図10は、復旧対象リストのデータ構造例を示す図である。復旧対象リスト523には、論理ボリュームIDとセグメントIDとの欄が設けられている。
論理ボリュームIDの欄には、リカバリ処理による復旧対象となるセグメントが属する論理ボリュームの識別情報(論理ボリュームID)が設定される。セグメントのIDの欄には、リカバリ処理による復旧対象となるセグメントの識別情報(セグメントID)が設定される。
【0083】
図11は、退避対象スライスリストのデータ構造例を示す図である。退避対象スライスリスト524には、ディスクノードIDとスライスIDとの欄が設けられている。退避対象スライスリスト524内の横方向に並べられた情報同士が互いに関連付けられ、退避処理対象スライスを示す1つのレコードを構成している。
【0084】
ディスクノードIDの欄には、退避処理の対象となるスライスを管理するディスクノードの識別情報(ディスクノードID)が設定される。スライスIDの欄には、退避処理の対象となるスライスの識別情報(スライスID)が設定される。
【0085】
図12は、退避処理対象ディスクノードリストのデータ構造例を示す図である。退避処理対象ディスクノードリスト525には、退避処理対象となっているディスクノードの識別情報(ディスクノードID)が設定される。
【0086】
以上のような構成のシステムにより、退避処理やリカバリ処理が実行される。そして、退避処理中に退避処理対象のディスクノードとは別のディスクノードに障害が発生すると、退避処理を中止してリカバリ処理が開始される。以下、退避処理とリカバリ処理とについて詳細に説明する。
【0087】
図13は、退避処理の手順を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。なお、退避処理は、ディスクノードを指定した退避処理の指示が入力されたときに開始される。
【0088】
[ステップS11]退避制御部535は、退避処理の指示で指定されたディスクノード(退避処理対象ディスクノード)のディスクノードIDが登録された退避処理対象ディスクノードリスト525を生成する。そして、退避制御部535は、生成した退避処理対象ディスクノードリスト525を記憶部520に格納する。
【0089】
[ステップS12]退避制御部535は、退避対象スライスリスト524を生成する。具体的には、退避制御部535は、スライス情報テーブル521を参照し、退避処理対象ディスクノードが管理するスライスのうち、論理ボリュームのセグメントに割り当てられているスライス(退避対象スライス)のメタデータを検索する。セグメントに割り当てられているスライスとは、状態の欄に「P(プライマリスライス)」または「S(セカンダリスライス)」のフラグが設定されたスライスである。退避制御部535は、検出した各メタデータのディスクノードIDとスライスIDとの組みを退避対象スライスリスト524に設定する。そして、退避制御部535は、生成した退避対象スライスリスト524を、記憶部520に格納する。
【0090】
[ステップS13]退避制御部535は、退避対象スライスリスト524から退避対象スライスを1つ選択する。具体的には、退避制御部535は、退避対象スライスリスト524から、1つのレコード(ディスクノードIDとスライスIDとの組み)を選択する。
【0091】
[ステップS14]退避制御部535は、選択したスライスがプライマリスライスか否かを判断する。具体的には、退避制御部535は、スライス情報テーブル521から、ステップS13で選択したスライスのディスクノードIDとスライスIDとの組みに対応するメタデータを検索する。そして、退避制御部535は、検出したメタデータの状態が「P(プライマリスライス)」であれば、選択したスライスがプライマリスライスであると判断する。選択したスライスがプライマリスライスであれば、処理がステップS15に進められる。選択したスライスがセカンダリスライスであれば、処理がステップS16に進められる。
【0092】
[ステップS15]退避制御部535は、選択したスライスとペアのスライスのプライマリ化処理を行う。具体的には、退避制御部535は、ステップS14で検出したメタデータにおけるペアのディスクノードIDおよびペアのスライスIDによって、ペアのスライスを特定する。選択したスライスがプライマリスライスであるため、ペアのスライスはセカンダリスライスである。そこで、退避制御部535は、セカンダリスライスを管理するディスクノードに対して、プライマリ化(メタデータの属性を「P」に変更)の指示を送信する。プライマリ化指示には、プライマリ化すべきスライスのスライスIDが含まれる。
【0093】
プライマリ化指示を受信したディスクノードでは、指定されたスライスのメタデータの属性を「P」に変更する。プライマリ化を行ったディスクノードは、プライマリ化完了応答を退避制御部535に返す。プライマリ化完了応答を受け取った退避制御部535は、スライス情報テーブル521とセグメント情報テーブル522を更新する。すなわち、プライマリ化させたスライスのメタデータの属性が「P」に変更され、選択された退避対象スライスのメタデータの属性が「S」に変更される。
【0094】
[ステップS16]退避制御部535は、退避対象スライスのデータを、他のスライスにコピーする。具体的には、退避制御部535は、スライス情報テーブル521を参照し、選択した退避対象スライスのペアのスライスとは異なるディスクノードで管理された空きスライスを1つ選択する。そして、退避制御部535は、退避対象スライスを管理するディスクノードに対して、退避対象スライスの空きスライスへのデータコピー指示を送信する。このデータコピー指示には、退避対象スライスのスライスID、コピー先のディスクノードのディスクノードID、および選択した空きスライスのスライスIDが含まれる。
【0095】
データコピー指示を受け取ったディスクノードは、退避対象スライス内のデータを、指定された空きスライスにコピーする。データコピーを行ったディスクノードは、データコピー完了応答を退避制御部535に返す。
【0096】
[ステップS17]退避制御部535は、メタデータを更新する。具体的には、退避制御部535は、データのコピー先となったスライスを管理するディスクノードに対して、その空きスライスを、選択した退避対象スライスと同じセグメントのセカンダリスライスとして割り当てることを示すスライス情報更新指示を送信する。スライス情報更新指示を受け取ったディスクノードは、指定された内容でデータコピー先となったスライスのメタデータを更新する。メタデータを更新したディスクノードは、退避制御部535に対してメタデータ更新完了応答を返す。メタデータ更新完了応答を受け取った退避制御部535は、スライス情報テーブル521とセグメント情報テーブル522を更新する。
【0097】
[ステップS18]退避制御部535は、退避対象スライスを退避対象スライスリスト524から削除する。
[ステップS19]退避制御部535は、退避対象スライスリスト524に未選択の退避対象スライスがあるか否かを判断する。未選択の退避対象スライスがあれば、処理がステップS13に進められる。すべての退避対象スライスについての退避処理が完了していれば、処理がステップS20に進められる。
【0098】
[ステップS20]退避制御部535は、退避処理対象ディスクノードを退避処理対象ディスクノードリスト525から削除する。その後、処理が終了する。
このように、退避処理では、退避対象スライスが1つずつ選択され、順次処理される。退避処理が完了する前にディスクノードの障害が検出されると、退避処理は中止される。退避処理が中止されても、退避処理対象ディスクノードリスト525の内容は維持される。
【0099】
次に、リカバリ処理について詳細に説明する。
図14は、リカバリ処理の手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。なお、図14の処理は、ディスクノードからのハートビートが所定時間以上途絶えたときに実行される。
【0100】
[ステップS31]監視部531は、ディスクノードからのハードビートが所定時間途絶えたことにより、そのディスクノードの異常を検出する。
[ステップS32]二重化制御部534は、退避制御部535による退避処理中か否かを判断する。退避処理中でなければ、処理がステップS33に進められる。退避処理中であれば、処理がステップS34に進められる。
【0101】
[ステップS33]制御部530内の各要素が連携して、通常リカバリ処理を実行する。この処理の詳細は後述する。その後、リカバリ処理が終了する。
[ステップS34]制御部530内の各要素が連携して、退避処理中リカバリ処理を実行する。この処理の詳細は後述する。その後、リカバリ処理が終了する。
【0102】
このように、リカバリ処理は、退避処理中か否かによって処理内容が異なってくる。以下、通常リカバリ処理と退避処理中リカバリ処理との詳細な手順について説明する。
図15は、通常リカバリ処理の手順を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
【0103】
[ステップS41]スライス情報収集部532は、正常なディスクノードからスライス情報を収集する。具体的には、スライス情報収集部532は、監視部531から、異常を検出したディスクノードのディスクノードIDを取得する。次に、スライス情報収集部532は、異常を検出したディスクノード以外の各ディスクノードに対して、スライス情報取得要求を送信する。スライス情報取得要求を受信した各ディスクノードは、スライス情報記憶部に格納されているスライス情報(スライス毎のメタデータ)をスライス情報収集部532に送信する。スライス情報収集部532は、各ディスクノードが送信したスライス情報を受信する。
【0104】
[ステップS42]スライス情報収集部532は、スライス情報テーブル521とセグメント情報テーブル522とを再構成する。具体的には、スライス情報収集部532は、収集したスライス情報に基づいてスライス情報テーブルを生成し、記憶部520内のスライス情報テーブル521を更新する。さらに、スライス情報収集部532は、収集したスライス情報に基づいてセグメント情報テーブルを生成し、記憶部520内のセグメント情報テーブル522を更新する。なお、セグメント情報テーブル522を生成する際には、スライス情報収集部532は、収集したスライス情報の各メタデータの状態を参照する。そして、スライス情報収集部532は、メタデータの状態が「P」であれば、そのメタデータの情報を、セグメント情報テーブル522のプライマリ情報の欄に設定する。また、スライス情報収集部532は、メタデータの状態が「S」であれば、そのメタデータの情報を、セグメント情報テーブル522のセカンダリ情報の欄に設定する。この際、障害が発生したディスクノードからはスライス情報が収集されないため、再構築したセグメント情報テーブル522では、障害が発生したディスクノードで管理するスライスを割り当てていたセグメントのプライマリ情報またはセカンダリ情報の欄は空欄となる。
【0105】
[ステップS43]復旧対象抽出部533は、復旧対象リスト523を作成する。具体的には、復旧対象抽出部533は、セグメント情報テーブル522を参照し、プライマリ情報とセカンダリ情報とのいずれかの欄が空欄となっているセグメントを抽出する。そして、復旧対象抽出部533は、抽出したセグメントの情報(論理ボリュームIDとセグメントID)を復旧対象リスト523に登録する。これにより、異常が検出されたディスクノードが管理するスライスが割り当てられていたセグメント(復旧対象セグメント)を示す情報が登録された復旧対象リスト523が生成される。生成された復旧対象リスト523は、記憶部520に格納される。
【0106】
[ステップS44]二重化制御部534は、復旧対象セグメントの既割当スライスをプライマリスライスとする。具体的には、二重化制御部534は、復旧対象リスト523から、復旧対象セグメントのディスクノードIDおよびセグメントIDを取得する。そして、二重化制御部534は、セグメント情報テーブル522を参照し、復旧対象セグメントに割り当てられている既存のスライス(既割当スライス)がプライマリスライスかセカンダリスライスかを判断する。既割当スライスがセカンダリスライスであれば、二重化制御部534は、その既割当スライスのディスクノードIDに該当するディスクノードに対してプライマリ化指示を送信する。すると、既割当スライスがプライマリスライスに変更される。
【0107】
[ステップS45]二重化制御部534は、復旧対象セグメントに対して、セカンダリスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521を参照し、復旧対象セグメントの既割当スライスとは別のディスクノードで管理されている空きスライス(状態が「F」のスライス)を1つ選択する。そして、二重化制御部534は、選択したスライスを復旧対象セグメントのセカンダリスライスとして割り当てる。なお、この時点では、スライス情報テーブル521では、割り当てたスライスの状態が「R」(リザーブスライスであることを示す)に設定される。そして、後述するメタデータの更新処理が完了したときに、そのスライスの状態が「S」(セカンダリスライス)に変更される。
【0108】
[ステップS46]二重化制御部534は、復旧対象セグメントの既割当スライス(プライマリスライス)から新たに割り当てたスライス(セカンダリスライス)へのデータコピーを指示する。具体的には、二重化制御部534は、プライマリスライスを管理するディスクノードに対して、セカンダリスライスのディスクノードIDとスライスIDとを指定したデータコピー指示を送信する。
【0109】
[ステップS47]二重化制御部534は、スライス情報更新指示をプライマリスライスとセカンダリスライスとを管理するディスクノードに送信する。送信されるスライス情報更新指示には、既割当スライスを復旧対象セグメントのプライマリライスとし、ステップS45で割り当てたスライスを復旧対象セグメントのセカンダリスライスとすることが示される。各ディスクノードでは、スライス情報記憶部とストレージ装置とのそれぞれに格納されたメタデータが更新される。ディスクノードは、メタデータを更新すると、スライス情報更新完了の応答を二重化制御部534に送信する。二重化制御部534は、ディスクノードからスライス情報更新完了の応答が返されると、スライス情報テーブル521とセグメント情報テーブル522とを更新する。
【0110】
このようにして、退避処理を実行していないときのリカバリ処理が完了する。次に、退避処理中のリカバリ処理を詳細に説明する。
図16は、退避処理中リカバリ処理を示す第1のフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
【0111】
[ステップS51]退避制御部535は、退避処理を中止する。具体的には、二重化制御部534から退避制御部535へ退避処理中止の指示が出される。退避制御部535は、退避処理中止の指示に応答して、退避処理を中止する。その際、退避対象スライスリスト524の内容はクリアされるが、退避処理対象ディスクノードリスト525の内容は維持される。
【0112】
[ステップS52]スライス情報収集部532は、正常なディスクノードからスライス情報を収集する。この処理の詳細は、図15のステップS41と同様である。
[ステップS53]スライス情報収集部532は、スライス情報テーブル521とセグメント情報テーブル522とを再構成する。この処理の詳細は、図15のステップS42と同様である。
【0113】
[ステップS54]復旧対象抽出部533は、復旧対象リスト523を作成する。この処理の詳細は、図15のステップS43と同様である。
[ステップS55]二重化制御部534は、復旧対象セグメントの既割当スライスをプライマリスライスとする。この処理の詳細は、図15のステップS44と同様である。
【0114】
[ステップS56]二重化制御部534は、未処理の復旧対象セグメントに退避対象スライスをもつセグメントがあるか否かを判断する。具体的には、二重化制御部534は、復旧対象リスト523を参照して、復旧対象セグメントを判断する。なお、二重化制御部534は、復旧対象セグメントに対して二重化復旧のためにセカンダリスライスが割り当てられているか否かの情報を内部で記憶しており、セカンダリスライスが割り当てられていない復旧対象セグメントを未処理と認識する。次に、二重化制御部534は、セグメント情報テーブル522を参照して、未処理の復旧対象セグメントに割り当てられている既割当スライスを判断する。さらに、二重化制御部534は、退避対象ディスクノードリスト525を参照し、既割当スライスが退避対象ディスクノードに属しているスライスならば退避対象スライスに該当し、この退避対象スライスを持つセグメントが該当する復旧対象セグメントと判断する。該当する復旧対象セグメントがあれば処理がステップS57に進められる。該当する復旧対象セグメントがなければ、処理がステップS61(図17参照)に進められる。
【0115】
[ステップS57]二重化制御部534は、退避対象スライスが割り当てられた未処理の復旧対象セグメントを1つ選択する。
[ステップS58]二重化制御部534は、選択した復旧対象セグメントに、退避対象ディスクノード以外のディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノード以外のディスクノードに対応するスライスから、空きスライス(状態が「F」)を1つ選択する。そして、選択したスライスを、ステップS57で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。その後、処理がステップS56に進められる。
【0116】
図17は、退避処理中リカバリ処理を示す第2のフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
[ステップS61]二重化制御部534は、未処理の復旧対象セグメントがあるか否かを判断する。具体的には、二重化制御部534は、復旧対象リスト523を参照して、復旧対象セグメントを判断する。そして、二重化制御部534は、復旧対象セグメントのうち、セカンダリスライスを割り当てていないセグメントがあれば、未処理の復旧対象セグメントがあると判断する。未処理の復旧対象セグメントがある場合、処理がステップS62に進められる。未処理の復旧対象セグメントがない場合、処理がステップS74(図18参照)に進められる。
【0117】
[ステップS62]二重化制御部534は、退避対象ディスクノード以外のディスクノードに空きスライスがあるか否かを判断する。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノード以外のディスクノードに対応するスライスのうち、空きスライス(状態が「F」)があるか否かを判断する。空きスライスがあれば、処理がステップS63に進められる。空きスライスがなければ、処理がステップS71(図18に示す)に進められる。
【0118】
[ステップS63]二重化制御部534は、未処理の復旧対象セグメントを1つ選択する。
[ステップS64]二重化制御部534は、ステップS63で選択した復旧対象セグメントに、退避対象ディスクノード以外のディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノード以外のディスクノードに対応するスライスから、空きスライス(状態が「F」)を1つ選択する。そして、選択したスライスを、ステップS63で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。その後、処理がステップS61に進められる。
【0119】
図18は、退避処理中リカバリ処理を示す第3のフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS71]二重化制御部534は、未処理の復旧対象セグメントを1つ選択する。
【0120】
[ステップS72]二重化制御部534は、ステップS71で選択した復旧対象セグメントに、退避対象ディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部534は、スライス情報テーブル521から、退避対象ディスクノードに対応するスライスから、空きスライス(状態が「F」)を1つ選択する。そして、選択したスライスを、ステップS71で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。
【0121】
[ステップS73]二重化制御部534は、未処理の復旧対象セグメントがあるか否かを判断する。未処理の復旧対象セグメントがあれば、処理がステップS71に進められる。未処理の復旧対象セグメントがなければ、処理がステップS74に進められる。
【0122】
[ステップS74]二重化制御部534は、復旧対象セグメントの既割当スライス(プライマリスライス)から新たに割り当てたスライス(セカンダリスライス)へのデータコピーを指示する。具体的には、二重化制御部534は、プライマリスライスを管理するディスクノードに対して、セカンダリスライスのディスクノードIDとスライスIDとを指定したデータコピー指示を送信する。
【0123】
[ステップS75]二重化制御部534は、スライス情報更新指示をプライマリスライスとセカンダリスライスとを管理するディスクノードに送信する。送信されるスライス情報更新指示には、既割当スライスを復旧対象セグメントのプライマリライスとし、ステップS45で割り当てたスライスを復旧対象セグメントのセカンダリスライスとすることが示される。各ディスクノードでは、スライス情報記憶部とストレージ装置とのそれぞれに格納されたメタデータが更新される。ディスクノードは、メタデータを更新すると、スライス情報更新完了の応答を二重化制御部534に送信する。二重化制御部534は、ディスクノードからスライス情報更新完了の応答が返されると、スライス情報テーブル521とセグメント情報テーブル522とを更新する。
【0124】
[ステップS76]二重化制御部534は、退避処理を再実行するか否かを判断する。例えば、リカバリ処理終了後に中止した退避処理を再実行する旨の指示が予め入力されていた場合、退避処理を再実行すると判断する。また、二重化制御部534は、退避処理の再実行の有無を問い合わせる画面を表示し、管理者からの再実行の要否を示す操作入力に基づいて、退避処理再開の要否を判断してもよい。退避処理を再実行する場合、処理がステップS77に進められる。退避処理を再実行しない場合、退避処理中リカバリ処理が終了する。
【0125】
[ステップS77]二重化制御部534は、退避処理の再実行を退避制御部535に送信する。これにより、退避制御部535により退避処理が再実行される。再実行される退避処理の詳細は、図13に示した処理と同様である。ただし、退避処理対象ディスクノードリスト525については中止された退避処理において作成されたものが使用される。そのため、再実行された退避処理では、ステップS11に示す退避処理対象ディスクノードリスト作成処理は行われない。二重化制御部534が退避処理再開指示を出力すると、退避処理中リカバリ処理が終了する。
【0126】
以上のような手順でリカバリ処理が行われる。以下に、退避処理中に障害が発生したときのスライス割当状態の遷移について説明する。
図19は、退避処理中に障害が発生したときのスライス割当の状態遷移を示す図である。図19において、ストレージ装置110,210,310,410を管理するディスクノードのディスクノードIDを、各ストレージ装置110,210,310,410の下に示している。また、ストレージ装置110,210,310,410内のスライスのスライスIDを、各スライスの左に示している。
【0127】
第1の状態[ST1]は、退避処理開始時のスライス割当状態を示している。図19の例では、ストレージ装置310の退避処理が開始されている。ストレージ装置310には、3つのスライスがセグメントに割り当てられている。そこで、ストレージ装置310のスライスID「2」のスライスのデータをストレージ装置210のスライスID「2」のスライスに退避させ、ストレージ装置310のスライスID「3」のスライスのデータをストレージ装置410のスライスID「2」のスライスに退避させ、ストレージ装置310のスライスID「6」のスライスのデータをストレージ装置110のスライスID「2」のスライスに退避させるものとする。
【0128】
この場合、ストレージ装置310内の退避対象スライスが順に選択され、退避先のスライスにデータがコピーされる。なお、ストレージ装置310のスライスID「3」のスライスは、セグメントID「3」のセグメントのプライマリリスライスである。そこで、セグメントID「3」のセグメントのセカンダリスライス(ストレージ装置210のスライスID「3」のスライス)のプライマリ化を行った後、データコピーが行われる。
【0129】
このような退避処理中に、退避対象のストレージ装置310以外のストレージ装置に障害が発生すると、退避処理は中止される。
第2の状態[ST2]は、障害発生時のスライス割当状態を示している。図19の例では、ストレージ装置310のスライスID「6」のスライスのデータを退避させる前に、ストレージ装置410に障害が発生している。この場合、退避処理が中止される。
【0130】
第3の状態[ST3]は、退避処理中止後のスライス割当状態を示している。退避処理が中止されたため、依然として、ストレージ装置310のスライスID「6」のスライスは、セグメントID「2」のセグメントに割り当てられている。なお、退避処理が中止されても、ストレージ装置が退避処理の対象であることを示す情報は維持される。
【0131】
退避処理が中止されると、リカバリ処理が開始される。リカバリ処理では、まずスライス情報テーブル521とセグメント情報テーブル522とが再構成される。
図20は、再構成されたスライス情報テーブルの例を示す図である。再構成されたスライス情報テーブル521には、障害が発生したディスクノード400(ディスクノードID「DP−D」)のメタデータは含まれていない。そのため、正常動作している3台のディスクノード100,200,300から収集したメタデータから、セグメント情報テーブル522が再構成される。
【0132】
図21は、再構成されたセグメント情報テーブルの例を示す図である。再構成されたセグメント情報テーブル522では、1つのスライスしか割り当てられていないセグメントが存在する。このセグメントが、復旧対象セグメントとして選択される。
【0133】
次に、退避処理中のリカバリ処理におけるスライス割当の状態遷移例について説明する。
図22は、退避処理中のリカバリ処理におけるスライス割当の状態遷移を示す図である。リカバリ処理を行う場合、障害が発生したストレージ装置410に格納されていたスライスが割り当てられていたセグメントがリカバリ対象となる。そして、リカバリ対象のセグメントに割り当てられている別のセグメントのデータを用いて、データの二重化が実行される。データの二重化を行う場合、退避処理対象のストレージ装置310のスライスが優先的に処理される。
【0134】
第4の状態[ST4]は、退避対象スライスのリカバリ処理時のスライス割当状態を示している。図22の例では、ストレージ装置410のスライスID「6」のスライスが、セグメントID「2」のセグメントに対して、プライマリスライスとして割り当てられている。またこのセグメントには、退避処理対象のストレージ装置310のスライスID「6」のスライスが、セカンダリスライスとして割り当てられている。そこで、ストレージ装置310のスライスID「6」のスライスをプライマリスライスに変更した後、そのスライスのデータのコピーが行われる。図22の例では、ストレージ装置310のスライス番号「6」の退避対象スライスのデータが、ストレージ装置110のスライス番号「2」のスライスにコピーされている。
【0135】
その後、退避処理対象のストレージ装置310以外のストレージ装置110,210に格納されているデータのリカバリ処理が行われる。
第5の状態[ST5]は、退避対象ではないスライスのリカバリ処理時のスライス割当状態を示している。図22の例では、ストレージ装置110のスライスID「2」のスライスのデータが、ストレージ装置210のスライスID「1」のスライスにコピーされる。また、ストレージ装置210のスライスID「3」のスライスのデータが、ストレージ装置110のスライスID「5」のスライスにコピーされる。
【0136】
第6の状態[ST6]は、リカバリ処理終了時の状態を示している。リカバリ処理が終了したことにより、ストレージ装置410のスライスが割り当てられていたセグメントは、正常に動作しているストレージ装置110,210,310のスライスが二重化して割り当てられている。また、退避処理対象のストレージ装置310は、リカバリ処理時のコピー先として選択される優先順位が最も低いため、リカバリ処理により新たにデータがコピーされずに済んでいる。
【0137】
リカバリ処理終了後、中止した退避処理を再開することができる。
図23は、再開した退避処理におけるスライス割当の状態遷移を示す図である。第7の状態[ST7]は、退避処理再開時のスライス割当状態を示している。図23の例では、空きスライスは、ストレージ装置210のスライスID「6」のスライスのみである。そこで、ストレージ装置210のスライスID「6」のスライスに、退避対象スライスの退避が行われる。
【0138】
なお、退避対象スライスであるストレージ装置310のスライスID「6」のスライスは、プライマリスライスである。そこで、そのスライスとペアを組んでいるストレージ装置110のスライスID「2」のスライスが、プライマリスライスに変更される。
【0139】
第8の状態[ST8]は、退避処理終了後のスライス割当状態を示している。退避処理が終了したことにより、ストレージ装置310内のスライスはすべて空きスライスとなっている。
【0140】
このようにして、再開した退避処理が実行される。退避処理対象のストレージ装置310のスライスは、リカバリ処理におけるリザーブスライスとして選択される優先順位が低い。そのため、退避処理を中止してリカバリ処理が実行されても、退避対象スライス数が増加せずに済む。その結果、再開した退避処理では、中止時点で未処理だった退避対象スライスのデータを退避させるだけで済む。すなわち、退避処理中に退避処理対象のストレージ装置とは異なるストレージ装置が故障してリカバリ処理が実行されても、退避処理の長期化が防止される。
【0141】
しかも、リカバリ処理において、退避処理対象ディスクノードで管理されているスライスのコピー先の選択を優先して実行する。これにより、未処理の復旧対象セグメントがあるにも拘わらず退避処理対象ディスクノード以外のディスクノードに空きスライスが無くなってしまった場合であっても、未処理の復旧対象セグメントに割り当てるスライスを確実に選択できる。
【0142】
すなわち、リカバリ処理で未処理の復旧対象セグメントに割り当てるスライスを選択する場合、既に割り当てられているスライスとは異なるディスクノードで管理されているスライスを選択する必要がある。退避処理対象ディスクノード以外のディスクノードに空きスライスが無くなってしまった場合、空きスライスは退避処理対象ディスクノードにしか存在しない。このとき、未処理の復旧対象セグメントの既に割り当てられているスライスが退避処理対象ディスクノードで管理されている場合、二重化のためのペアとなるスライスの選択の余地が無くなってしまう。退避処理対象ディスクノードで管理されているスライスのコピー先の選択を優先して実行しておけば、このようなペアとなるスライスが選択できないという事態の発生を回避することができる。
【0143】
さらに、上記実施の形態では、退避対象スライスがプライマリスライスの場合、ペアとなるスライスをプライマリ化した後、データのコピーを実行する。これにより、アクセスノード30,40からのデータアクセスを、データコピー処理を行っていないストレージノードに対して行わせることができる。すなわち、アクセスノード30,40は、制御ノード500からセグメント情報テーブル522に示される情報を取得し、常にプライマリスライスに対してデータアクセスを行う。アクセスノード30,40がデータアクセスを行ったときに、アクセス先のスライスが、アクセス対象のセグメントのプライマリスライスではない場合、アクセスノード30,40は、制御ノード500から最新のセグメント情報テーブル522を取得し、改めてプライマリスライスにアクセスを行う。このように、アクセスノード30,40が常にプライマリスライスにアクセスするように制御されていることから、退避処理によるコピー元のスライスがプライマリスライスの場合、ペアとなるスライスをプライマリ化することで、退避対象スライスへのアクセスを防止できる。その結果、退避処理のためのデータコピーとアクセスノード30,40からのアクセスが同一セグメントに同時に行われることがなくなり、アクセス効率の低下を防止できる。
【0144】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御ノードやディスクノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0145】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0146】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0147】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【0148】
(付記1) 複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理プログラムであって、
前記コンピュータを、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段、
障害が発生した障害ストレージ装置を検出する障害検出手段、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする復旧対象データ判定手段、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段、
として機能させるデータ管理プログラム。
【0149】
(付記2) 前記冗長データコピー先選択手段は、前記復旧対象データの総量に対して、前記退避処理対象ストレージ装置以外のストレージ装置内の空き領域が不足している場合、不足しているデータ容量分だけ、前記退避処理対象ストレージ装置内の空き領域を前記冗長データコピー先として選択することを特徴とする付記1記載のデータ管理プログラム。
【0150】
(付記3) 前記冗長データコピー先選択手段は、前記退避処理対象ストレージ装置内に格納されている前記復旧対象データの前記冗長データコピー先を決定後、前記退避処理対象ストレージ装置以外のストレージ装置に格納されている前記復旧対象データの前記冗長データコピー先を決定することを特徴とする付記1記載のデータ管理プログラム。
【0151】
(付記4) 前記復旧対象データ判定手段は、前記障害検出手段で検出された前記障害ストレージ装置以外の正常ストレージ装置に格納されているデータ同士の対応関係を調査し、対応関係にある他のデータが存在しないデータを前記復旧対象データとすることを特徴とする付記1記載のデータ管理プログラム。
【0152】
(付記5) 前記復旧対象データ判定手段は、仮想的に設けられた論理ボリュームの記憶領域を構成する複数のセグメントへの前記複数のストレージ装置の記憶領域を構成するスライスの割当関係を示すメタデータを、前記複数のストレージ装置から収集し、収集した前記メタデータに基づいて、1つのスライスしか割り当てられていないセグメントを復旧対象セグメントとし、前記復旧対象セグメントに割り当てられているスライス内のデータを前記復旧対象データとすることを特徴とする付記1記載のデータ管理プログラム。
【0153】
(付記6) 前記退避処理実行手段は、前記退避処理が中止された場合、前記冗長データコピー手段によるコピー処理が終了後、前記退避対象ストレージ装置内のデータの退避処理を再実行することを特徴とする付記1記載のデータ管理プログラム。
【0154】
(付記7) 前記複数のストレージ装置はそれぞれ個別のディスクノードで管理されており、
前記退避処理実行手段は、前記退避処理対象ストレージ装置に格納されているデータのコピー先となる退避データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の空き領域から選択し、前記退避処理対象ストレージ装置を管理する前記ディスクノードに、前記退避データコピー先への前記退避処理対象ストレージ装置内のデータのコピーを実行させることを特徴とする付記1記載のデータ管理プログラム。
【0155】
(付記8) 前記複数のストレージ装置はそれぞれ個別のディスクノードで管理されており、
前記冗長データコピー手段は、前記復旧対象データが格納された前記ストレージ装置を管理する前記ディスクノードに、前記冗長データコピー先選択手段で選択された前記冗長データコピー先への前記復旧対象データのコピーを実行させることを特徴とする付記1記載のデータ管理プログラム。
【0156】
(付記9) 複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理装置であって、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段と、
障害が発生した障害ストレージ装置を検出する障害検出手段と、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段と、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを判断し、復旧対象データとする復旧対象データ判定手段と、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段と、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段と、
を有するデータ管理装置。
【0157】
(付記10) 複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理方法であって、
前記コンピュータが、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行し、
障害が発生した障害ストレージ装置を検出し、
前記退避処理中に障害の発生が検出された場合、前記退避処理を中止させ、
前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとし、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択し、
選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする、
ことを特徴とするデータ管理方法。
【図面の簡単な説明】
【0158】
【図1】実施の形態の概要を示す図である。
【図2】本実施の形態のマルチノードストレージシステム構成例を示す図である。
【図3】制御ノードのハードウェア構成例を示す図である。
【図4】論理ボリュームのデータ構造を示す図である。
【図5】ディスクノードとアクセスノードとの機能を示すブロック図である。
【図6】スライス情報記憶部のデータ構造例を示す図である。
【図7】制御ノードの機能を示すブロック図である。
【図8】スライス情報テーブルのデータ構造例を示す図である。
【図9】セグメント情報テーブルのデータ構造例を示す図である。
【図10】復旧対象リストのデータ構造例を示す図である。
【図11】退避対象スライスリストのデータ構造例を示す図である。
【図12】退避処理対象ディスクノードリストのデータ構造例を示す図である。
【図13】退避処理の手順を示すフローチャートである。
【図14】リカバリ処理の手順を示すフローチャートである。
【図15】通常リカバリ処理の手順を示すフローチャートである。
【図16】退避処理中リカバリ処理を示す第1のフローチャートである。
【図17】退避処理中リカバリ処理を示す第2のフローチャートである。
【図18】退避処理中リカバリ処理を示す第3のフローチャートである。
【図19】退避処理中に障害が発生したときのスライス割当の状態遷移を示す図である。
【図20】再構成されたスライス情報テーブルの例を示す図である。
【図21】再構成されたセグメント情報テーブルの例を示す図である。
【図22】退避処理中のリカバリ処理におけるスライス割当の状態遷移を示す図である。
【図23】再開した退避処理におけるスライス割当の状態遷移を示す図である。
【符号の説明】
【0159】
1a,1b,1c,1d ストレージ装置
2 退避処理実行手段
3 記憶手段
4 障害検出手段
5 退避処理中止指示手段
6 復旧対象データ判定手段
7 冗長データコピー先選択手段
8 冗長データコピー手段
【特許請求の範囲】
【請求項1】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理プログラムであって、
前記コンピュータを、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段、
障害が発生した障害ストレージ装置を検出する障害検出手段、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする復旧対象データ判定手段、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段、
として機能させるデータ管理プログラム。
【請求項2】
前記冗長データコピー先選択手段は、前記復旧対象データの総量に対して、前記退避処理対象ストレージ装置以外のストレージ装置内の空き領域が不足している場合、不足しているデータ容量分だけ、前記退避処理対象ストレージ装置内の空き領域を前記冗長データコピー先として選択することを特徴とする請求項1記載のデータ管理プログラム。
【請求項3】
前記冗長データコピー先選択手段は、前記退避処理対象ストレージ装置内に格納されている前記復旧対象データの前記冗長データコピー先を決定後、前記退避処理対象ストレージ装置以外のストレージ装置に格納されている前記復旧対象データの前記冗長データコピー先を決定することを特徴とする請求項1記載のデータ管理プログラム。
【請求項4】
前記復旧対象データ判定手段は、前記障害検出手段で検出された前記障害ストレージ装置以外の正常ストレージ装置に格納されているデータ同士の対応関係を調査し、対応関係にある他のデータが存在しないデータを前記復旧対象データとすることを特徴とする請求項1記載のデータ管理プログラム。
【請求項5】
前記退避処理実行手段は、前記退避処理が中止された場合、前記冗長データコピー手段によるコピー処理が終了後、前記退避対象ストレージ装置内のデータの退避処理を再実行することを特徴とする請求項1記載のデータ管理プログラム。
【請求項6】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理装置であって、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段と、
障害が発生した障害ストレージ装置を検出する障害検出手段と、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段と、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを判断し、復旧対象データとする復旧対象データ判定手段と、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段と、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段と、
を有するデータ管理装置。
【請求項7】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理方法であって、
前記コンピュータが、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行し、
障害が発生した障害ストレージ装置を検出し、
前記退避処理中に障害の発生が検出された場合、前記退避処理を中止させ、
前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとし、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択し、
選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする、
ことを特徴とするデータ管理方法。
【請求項1】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理プログラムであって、
前記コンピュータを、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段、
障害が発生した障害ストレージ装置を検出する障害検出手段、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする復旧対象データ判定手段、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段、
として機能させるデータ管理プログラム。
【請求項2】
前記冗長データコピー先選択手段は、前記復旧対象データの総量に対して、前記退避処理対象ストレージ装置以外のストレージ装置内の空き領域が不足している場合、不足しているデータ容量分だけ、前記退避処理対象ストレージ装置内の空き領域を前記冗長データコピー先として選択することを特徴とする請求項1記載のデータ管理プログラム。
【請求項3】
前記冗長データコピー先選択手段は、前記退避処理対象ストレージ装置内に格納されている前記復旧対象データの前記冗長データコピー先を決定後、前記退避処理対象ストレージ装置以外のストレージ装置に格納されている前記復旧対象データの前記冗長データコピー先を決定することを特徴とする請求項1記載のデータ管理プログラム。
【請求項4】
前記復旧対象データ判定手段は、前記障害検出手段で検出された前記障害ストレージ装置以外の正常ストレージ装置に格納されているデータ同士の対応関係を調査し、対応関係にある他のデータが存在しないデータを前記復旧対象データとすることを特徴とする請求項1記載のデータ管理プログラム。
【請求項5】
前記退避処理実行手段は、前記退避処理が中止された場合、前記冗長データコピー手段によるコピー処理が終了後、前記退避対象ストレージ装置内のデータの退避処理を再実行することを特徴とする請求項1記載のデータ管理プログラム。
【請求項6】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理装置であって、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段と、
障害が発生した障害ストレージ装置を検出する障害検出手段と、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段と、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを判断し、復旧対象データとする復旧対象データ判定手段と、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段と、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段と、
を有するデータ管理装置。
【請求項7】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理方法であって、
前記コンピュータが、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行し、
障害が発生した障害ストレージ装置を検出し、
前記退避処理中に障害の発生が検出された場合、前記退避処理を中止させ、
前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとし、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択し、
選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする、
ことを特徴とするデータ管理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2010−66862(P2010−66862A)
【公開日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願番号】特願2008−230661(P2008−230661)
【出願日】平成20年9月9日(2008.9.9)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願日】平成20年9月9日(2008.9.9)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]