(57)【要約】【課題】可変サイズで、かつ、サイズの上限を設定可能なメモリ領域によってデータの差分転送を実現するクラスタシステムを提供する。【解決手段】稼働系のサーバ（Ａ）１のディスク装置２と、待機系のサーバ（Ｂ）１のディスク装置２とは、フィルタドライバ２１およびミラーリングデーモン２２によってミラーリングディスクを構成する。クラスタソフトウェア２３は、互いの生存を確認し合うための通信を実行する。もし、サーバ（Ａ）１がダウンしてサーバ（Ｂ）１へのフェールオーバが起きると、サーバ（Ｂ）１のフィルタドライバ２１は、このフェールオーバ後の各無変更区間を１要素として無変更区間記録領域３０上にて管理し、サーバ（Ａ）１が復帰したら、この無変更区間記録領域３０にて管理された無変更区間以外の区間のデータを差分データとして転送する。【選択図】      図１
2008140086.tif 000002
【特許請求の範囲】
【請求項１】
各々がディスク装置を備える複数のコンピュータを疎結合したディスクミラーリング構成のクラスタシステムにおいて、
前記複数のコンピュータそれぞれは、
他のコンピュータの故障により単体で稼働する場合に、前記ディスク装置の差分管理情報として、当該単体での稼働を開始した時点からデータの書き込みが行われていない前記ディスク装置上の領域を、データが書き込まれていない領域が連続する各区間を１要素として管理する差分管理手段と、
前記他のコンピュータが復帰した場合に、前記差分管理手段により管理された各区間以外の領域のデータを前記他のコンピュータに転送するデータ復旧手段と、
を具備することを特徴とするクラスタシステム。
【請求項２】
前記差分管理手段は、管理する要素数が上限値を越えた場合に、最も短い区間の要素から削除していく手段を含むことを特徴とする請求項１記載のクラスタシステム。
【請求項３】
前記差分管理手段は、管理する要素の容量が上限値を越えた場合に、最も短い区間の要素から削除していく手段を含むことを特徴とする請求項１記載のクラスタシステム。
【請求項４】
前記差分管理手段は、アドレス順に各区間を整列させるための第１のデータ群と、幅の短い順に各区間を整列させるための第２のデータ群とによって前記要素を管理することを特徴とする請求項１、２または３記載のクラスタシステム。
【請求項５】
前記差分管理手段は、前記第１のデータ群および前記第２のデータ群の一方または両方をツリー構造とすることを特徴とする請求項４記載のクラスタシステム。
【請求項６】
各々がディスク装置を備える複数のコンピュータを疎結合したディスクミラーリング構成のクラスタシステムにおいて、
前記複数のコンピュータそれぞれは、
他のコンピュータの故障により単体で稼働する場合に、前記ディスク装置の差分管理情報として、当該単体での稼働を開始した時点からデータの書き込みが行われた前記ディスク装置上の領域を、データが書き込まれた領域が連続する各区間を１要素として管理する差分管理手段と、
前記他のコンピュータが復帰した場合に、前記差分管理手段により管理された各区間の領域のデータを前記他のコンピュータに転送するデータ復旧手段と、
を具備することを特徴とするクラスタシステム。
【請求項７】
前記差分管理手段は、管理する要素数が上限値を越えた場合に、最も間隔の短い２つの区間を１つの区間に統合することによって要素数を削減する手段を含むことを特徴とする請求項６記載のクラスタシステム。
【請求項８】
前記差分管理手段は、管理する要素の容量が上限値を越えた場合に、最も間隔の短い２つの区間を１つの区間に統合することによって要素数を削減する手段を含むことを特徴とする請求項６記載のクラスタシステム。
【請求項９】
前記差分管理手段は、アドレス順に各区間を整列させるための第１のデータ群と、隣接する区間との間隔が短い順に各区間を整列させるための第２のデータ群とによって前記要素を管理することを特徴とする請求項６、７または８記載のクラスタシステム。
【請求項１０】
前記差分管理手段は、前記第１のデータ群および前記第２のデータ群の一方または両方をツリー構造とすることを特徴とする請求項９記載のクラスタシステム。
【請求項１１】
各々がディスク装置を備える複数のコンピュータを疎結合したディスクミラーリング構成のクラスタシステムのデータ復旧方法であって、
前記複数のコンピュータそれぞれが、
他のコンピュータの故障により単体で稼働する場合に、前記ディスク装置の差分管理情報として、当該単体での稼働を開始した時点からデータの書き込みが行われていない前記ディスク装置上の領域を、データが書き込まれていない領域が連続する各区間を１要素として管理し、
前記他のコンピュータが復帰した場合に、前記管理する各区間以外の領域のデータを前記他のコンピュータに転送する、
ことを特徴とするクラスタシステムのデータ復旧方法。
【請求項１２】
前記管理する要素数が上限値を越えた場合に、最も短い区間の要素から削除していくことを特徴とする請求項１１記載のクラスタシステムのデータ復旧方法。
【請求項１３】
前記管理する要素の容量が上限値を越えた場合に、最も短い区間の要素から削除していくことを特徴とする請求項１１記載のクラスタシステムのデータ復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ディスクミラーリング構成のクラスタシステムにおけるデータレプリケーション技術に関する。
【背景技術】
【０００２】
耐障害性を高めたコンピュータシステムの１つとして、ディスクミラーリング構成のクラスタシステムが存在する。クラスタシステムでは、稼動系のサーバでアプリケーション処理を開始した後、稼働系のサーバと待機系のサーバとの間でクラスタソフトウェアが通信路経由でハートビートと称される所定のパケットを交換し続け、互いの生存を通知し合う。また、稼動系のサーバと待機系のサーバとの間でフィルタドライバとミラーリングデーモンとが連携してミラーリングディスクのデータ同期を常に行う。そして、稼動系のサーバが故障すると、待機系のサーバが、ハートビートの断絶を検出し、同一のアプリケーションを起動させることでアプリケーション処理を継続させる（フェールオーバ）。
【０００３】
しかしながら、稼働系のサーバが復帰した際、クラスタ構成を元に戻すためには待機系のサーバから稼働系のサーバへミラーリングディスクのデータを全コピーする必要があるため、多大な時間がかかってしまう。
【０００４】
このようなことから、データを差分転送することによって全コピーを避けるようにするといった提案などもなされている（例えば特許文献１等参照）。
【特許文献１】特許第３３９９３９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この特許文献１に記載のフォールトトレラントシステムでは、ディスクを例えば５１２バイトずつのブロックに分割し、各ブロックに対応するビットマップを用意する。フェールオーバ以降、待機系のサーバは、自装置で書き込みを行ったブロックに対応するマス目をビットマップ内から探してダーティフラグを立てていく。これにより、稼働系のサーバが復帰した際、待機系のサーバは、ビットマップ内でダーティフラグの立ったマス目に対応するブロックのデータのみを稼働系のサーバに転送すればよい（データの差分転送が実現される）。
【０００６】
しかしながら、この手法では、ミラーリングディスクへの書き込み量が少なくても、ビットマップ用のメモリ領域が固定で必要であったため、専用に固定サイズのメモリ領域を確保しなければならないという問題があった。この問題は、ディスク装置の大容量化が顕著な今日において特に深刻である。
【０００７】
この発明は、このような事情を考慮したものであり、可変サイズで、かつ、サイズの上限を設定可能なメモリ領域によってデータの差分転送を実現可能なクラスタシステムおよびクラスタシステムのデータ復旧方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
この目的を達成するために、この発明のクラスタシステムは、各々がディスク装置を備える複数のコンピュータを疎結合したディスクミラーリング構成のクラスタシステムにおいて、前記複数のコンピュータそれぞれは、他のコンピュータの故障により単体で稼働する場合に、前記ディスク装置の差分管理情報として、当該単体での稼働を開始した時点からデータの書き込みが行われていない前記ディスク装置上の領域を、データが書き込まれていない領域が連続する各区間を１要素として管理する差分管理手段と、前記他のコンピュータが復帰した場合に、前記差分管理手段により管理された各区間以外の領域のデータを前記他のコンピュータに転送するデータ復旧手段とを具備することを特徴とする。
【０００９】
また、この発明のクラスタシステムは、各々がディスク装置を備える複数のコンピュータを疎結合したディスクミラーリング構成のクラスタシステムにおいて、前記複数のコンピュータそれぞれは、他のコンピュータの故障により単体で稼働する場合に、前記ディスク装置の差分管理情報として、当該単体での稼働を開始した時点からデータの書き込みが行われた前記ディスク装置上の領域を、データが書き込まれた領域が連続する各区間を１要素として管理する差分管理手段と、前記他のコンピュータが復帰した場合に、前記差分管理手段により管理された各区間の領域のデータを前記他のコンピュータに転送するデータ復旧手段とを具備することを特徴とする。
【発明の効果】
【００１０】
この発明によれば、可変サイズで、かつ、サイズの上限を設定可能なメモリ領域によってデータの差分転送を実現できる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施形態を説明する。
【００１２】
図１には、本発明の実施形態に係るクラスタシステムの構成例が示されている。このクラスタシステムは、稼働系のサーバ（Ａ）１と待機系のサーバ（Ｂ）１との２台のサーバを疎結合したものである。また、この２台のサーバ１は、各々がディスク装置２を備えており、この２つのディスク装置２でミラーリングディスクを構築している。この２台のサーバ１は、必ずしも同一のハードウェア構成とすることは要しないが、ここでは、同一のハードウェアを持つことを想定する。
【００１３】
このような構成を持つ本クラスタシステムでは、稼働系のサーバ（Ａ）１でアプリケーションプログラム１１の実行を開始する。アプリケーションプログラム１１がディスクドライバ１２経由でディスク装置２に対する書き込みを行うと、アプリケーションプログラム１１とディスクドライバ１２との間に介在させたフィルタドライバ２１が当該書き込みを検知する。フィルタドライバ２１により書き込みが検知されると、ミラーリングデーモン２２が、待機系のサーバ（Ｂ）１側のミラーリングデーモン２２と連携して、当該書き込みをサーバ（Ｂ）１のディスク装置２にも反映させるデータ同期処理を実行する。より具体的には、稼働系のサーバ（Ａ）１では、フィルタドライバ２１から受け取った書き込みデータをミラーリングデーモン２２が相手側に送信し、一方、待機系のサーバ（Ｂ）１では、ミラーリングデーモン２２が相手側から受信した書き込みデータをフィルタドライバ２１がディスク装置２へと書き込む。このフィルタドライバ２１およびミラーリングデーモン２２によって、疎結合された２台のサーバ１のディスク装置２によるミラーリングディスクの構築が実現されている。
【００１４】
また、この２台のサーバ１のそれぞれでは、クラスタソフトウェア２３がさらに動作している。クラスタソフトウェア２３は、互いの生存を通知し合うためのものであり、ハートビートと称される所定のパケットを交換し続ける。これにより、一方のサーバ１が故障を発生させると、このサーバ１からのハートビートが途絶えることから、他方のサーバ１が相手の故障を検知することができる。
【００１５】
もし、稼働系のサーバ（Ａ）１が故障を発生させると（図１（１））、ハートビート切れを待機系のサーバ（Ｂ）１のクラスタソフトウェア２３が検知する（図１（２））。そうすると、待機系のサーバ（Ｂ）１では、ミラーリングデーモン２２がデータ同期処理のための通信を停止し（図１（３））、アプリケーションプログラム１１を起動する（図１（４））。アプリケーションプログラム１１が起動されると、待機系のサーバ（Ｂ）１にてディスクアクセスが開始されるので（図１（５））、フィルタドライバ２１は、無変更区間の管理を開始する（図１（６））。本クラスタシステムは、可変サイズで、かつ、サイズの上限を設定可能なメモリ領域（無変更区間記録領域３０）によってデータの差分転送を実現するために、この無変更区間の管理を行う仕組みを持つものであり、以下、この無変更区間の管理について詳述する。
【００１６】
図２は、この無変更区間の管理を説明するための概念図である。無変更区間とは、フェールオーバー以降にアプリケーションプログラム１１による書き込みが行われていない連続領域をいい、例えば、ミラーリングディスクを構成するディスク装置２が１００Ｍバイトの容量を有していると想定すると、フィルタドライバ２１は、まず、０〜９９，９９９，９９９番地からなるディスク装置２のアドレス区間全体を１つの無変更区間として管理する。この時点では、無変更区間記録領域３０にて管理すべき要素数は、０〜９９，９９９，９９９番地の区間の１つのみである。
【００１７】
その後、アプリケーションプログラム１１によるディスク装置２への書き込みが発生する度に（図２（１））、フィルタドライバ２１は、（その区間が無変更区間として管理されていれば）その区間を管理対象から除外していく（図２（２））。最初の書き込みが発生した直後、無変更区間記録領域３０にて管理すべき要素数は２つとなる。以降、書き込みに応じて無変更区間が細分化され、管理すべき要素数が増加していくことになる。
【００１８】
そして、稼働系のサーバ（Ａ）１が復帰すると、ミラーリングデーモン２２によるデータ同期処理が開始されるが、この際、フィルタドライバ２１は、無変更区間記録領域３０にて管理される無変更区間以外の区間のデータをミラーリングデーモン２２に渡し、相手に送信させることにより、差分転送を実現する。
【００１９】
もし、フェールオーバー後の書き込みがそれ程発生しない間にサーバ（Ａ）１が復帰できたならば、たとえディスク装置２が大容量を有していたとしても、差分転送のために管理しなければならない情報は小量で済む。つまり、本クラスタシステムは、第１に、可変サイズのメモリ領域によってデータの差分転送を実現する。
【００２０】
また、フィルタドライバ２１は、無変更区間記録領域３０の構造として、図３に示すように、アドレス順に各区間を整列させるための第１区間記録領域３１と、幅が短い順に各区間を整列させるための第２区間記録領域３２とを用意する。これらは２分木等のツリー構造を持ち、第１区間記録領域３１で管理される区間（要素）と第２区間記録領域３２で管理される区間（要素）とは、同一の区間同士がポインタにより繋がれている。
【００２１】
フェールオーバー後、サーバ（Ａ）１の復帰が遅れたり、ディスク装置２への書き込みが短時間に頻発したりすると、無変更区間の数が増大し、管理しなければならない情報量が大量となる場合がある。そこで、フィルタドライバ２１は、無変更区間数が上限値を越えたら、第２区間記録領域３２において先頭に位置する、即ちその幅が最も短い区間を第１区間記録領域３１および第２区間記録領域３２から削除する。無変更区間数によってではなく、無変更区間記録領域３０として確保した容量からマージン分を差し引いた容量に達したタイミングで、この削除を行うようにしてもよい。
【００２２】
これにより、差分転送のために管理しなければならない情報の総量が限定される。つまり、本クラスタシステムは、第２に、サイズの上限を設定可能なメモリ領域によってデータの差分転送を実現する。なお、情報の総量を限定すべく無変更区間の削除を行うと、サーバ（Ａ）１が復帰した際の差分転送において、本来であればその必要のない無変更のデータが転送されることになるが、幅が短い区間から削除を行うので、その影響を最小限に止めることができる。
【００２３】
図４および図５は、このクラスタシステムが管理する無変更区間の遷移例を示す図である。
【００２４】
稼働系のサーバ（Ａ）１がダウンした直後、待機系のサーバ（Ｂ）１のフィルタドライバ２１は、無変更区間として、まず、０〜９９，９９９，９９９番地の区間ａの管理を開始する（図４（Ａ））。
【００２５】
その後、２００番地から２００バイトの書き込みが発生すると、フィルタドライバ２１は、この区間ａを、０〜１９９番地の区間ｂと４００〜９９，９９９，９９９番地の区間ｃとに分離する（図４（Ｂ））。続いて、５００番地から５００バイトの書き込みが発生すると、フィルタドライバ２１は、今度は、区間ｃを、４００〜４９９番地の区間ｄと１，０００〜９９，９９９，９９９番地の区間ｅとに分離する（図４（Ｃ））。
【００２６】
さらに、３００〜５００バイトの書き込みが発生したとする。この書き込みは、区間ｄを包含する書き込みであるので、このような場合、フィルタドライバ２１は、区間ｄの削除を行う（図４（Ｄ））。
【００２７】
また、書き込みに伴う無変更区間の更新をこのように重ねて行くと、その数が上限値を越えてしまうことがある。図５（Ｅ）は、無変更区間数が上限値を越えた時点の状態を例示するものである。このような場合、フィルタドライバ２１は、その幅が最も短い区間から削除していく。ここでは、区間ｔが幅が最も短い区間であるものとし、図５（Ｆ）に示すように、フィルタドライバ２１は、この区間ｔを削除する。
【００２８】
次に、図６および図７を参照して、図４および図５に示した無変更区間の遷移に伴う無変更区間記録領域３０（第１区間記録領域３１，第２区間記録領域３２）の遷移について説明する。
【００２９】
まず、フィルタドライバ２１は、第１区間記録領域３１および第２区間記録領域３２の双方ともに、区間ａのみを管理する（図６（Ａ））。また、この区間ａが区間ｂと区間ｃとに分離された際も、区間ｂおよび区間ｃは、アドレス順および幅が短い順のいずれの並びでも区間ｂ→区間ｃの順になるので、フィルタドライバ２１は、これらを第１区間記録領域３１および第２区間記録領域３２の双方で同様に管理する（図６（Ｂ））。
【００３０】
続いて、区間ｃが区間ｄと区間ｅとに分離された際には、アドレス順では区間ｂ→区間ｄ→区間ｅの並びになり、一方、幅が短い順では区間ｄ→区間ｂ→区間ｅの並びになるので、フィルタドライバ２１は、第１区間記録領域３１および第２区間記録領域３２のそれぞれで当該順序通りに並ぶように各区間を管理する（図６（Ｃ））。
【００３１】
また、区間ｄが削除された際には、フィルタドライバ２１は、第１区間記録領域３１および第２区間記録領域３２のそれぞれから区間ｄを削除する（図６（Ｄ））。なお、アドレス順または幅が短い順に各区間をするためのツリー構造の管理手法は、ここで示した２分木を始めとして種々存在するが、この２分木に限らず、いずれの管理手法も適用することが可能である。
【００３２】
そして、このように、アドレス順および幅が短い順の２通りに無変更区間を管理することによって、図７（Ｅ）に示すように、無変更区間数が上限値を越えたために幅が最も短い区間を削除することとなった際、該当する区間ｔが第２区間記録領域３２において先頭に位置しているので、これを即座に削除でき、また、そのリンクを辿って第１区間記録領域３１の区間ｔも簡単に削除できることになる（図７（Ｆ））。
【００３３】
図８は、稼働系のサーバ（Ａ）１がダウンして待機系のサーバ（Ｂ）１にフェールオーバーした後のサーバ（Ｂ）１のフィルタドライバ２１による無変更区間の管理手順を示すフローチャートである。
【００３４】
フィルタドライバ２１は、ディスク装置２に対する書き込みを待機し、書き込みが発生したら（ステップＡ１のＹＥＳ）、書き込み区間と重なる要素（区間）を第１区間記録領域３１から全て検索する（ステップＡ２）。そして、検索された要素全てに対し、フィルタドライバ２１は、その区間が書き込み区間に含まれるかを調べ（ステップＡ３）、含まれる場合は（ステップＡ３のＹＥＳ）、その要素を第１区間記録領域３１および第２区間記録領域３２から削除する（ステップＡ４）。
【００３５】
一方、その区間が書き込み区間に含まれなければ（ステップＡ３のＮＯ）、フィルタドライバ２１は、その区間を書き込み区間と重なる区間分縮め（ステップＡ５）、第２区間記録領域３２の要素を区間幅に適した位置に移動させる（ステップＡ６）。
【００３６】
このように、フィルタドライバ２１が、各無変更区間を１要素として無変更区間の管理を行うので、可変サイズのメモリ領域によってデータの差分転送を実現し、また、アドレス順の第１区間記録領域３１および幅が短い順の第２区間記録領域３２の２通りに無変更区間を管理し、無変更区間数が上限値を越えた際に、その幅が最も短い区間を迅速に削除できるようにすることで、サイズの上限を設定可能なメモリ領域によってデータの差分転送を実現する。
【００３７】
即ち、本クラスタシステムは、可変サイズで、かつ、サイズの上限を設定可能なメモリ領域によってデータの差分転送を実現する。
【００３８】
なお、ここでは、稼働系のサーバ（Ａ）１がダウンして待機系のサーバ（Ｂ）１にフェールオーバーした場合を例に、フィルタドライバ２１による無変更区間の管理について説明したが、このフィルタドライバ２１による無変更区間の管理手法は、サーバ（Ｂ）１ががダウンしてサーバ（Ａ）１が単独動作することになった場合にも当然に有用である。
【００３９】
また、以上では、フィルタドライバ２１が無変更区間を管理する例を説明したが、これと表裏の関係にある手法として、変更区間を１要素として管理するように変形することも容易に可能である。この場合、前述のアドレス順の区間記録領域と共に、隣の要素との距離が近い順の区間記録領域を設けて、変更区間数が上限値を越えた場合に、隣の要素との距離が近い要素の組みからマージしていくようにすればよい。
【００４０】
このように、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施形態に係るクラスタシステムの構成例を示す図
【図２】同実施形態のクラスタシステムが実行する無変更区間の管理を説明するための概念図
【図３】同実施形態のクラスタシステムが無変更区間を管理するために用いる無変更区間記録領域の構造を示す図
【図４】同実施形態のクラスタシステムが管理する無変更区間の遷移例を示す第１の図
【図５】同実施形態のクラスタシステムが管理する無変更区間の遷移例を示す第２の図
【図６】図４および図５に示した無変更区間の遷移に伴う無変更区間記録領域の遷移について説明するための第１の概念図
【図７】図４および図５に示した無変更区間の遷移に伴う無変更区間記録領域の遷移について説明するための第２の概念図
【図８】同実施形態のクラスタシステム上で動作するフィルタドライバによる無変更区間の管理手順を示すフローチャート
【符号の説明】
【００４２】
１…サーバ、２…ディスク装置、１１…アプリケーションプログラム、１２…ディスクドライバ、２１…フィルタドライバ、２２…ミラーリングデーモン、２３…クラスタソフトウェア、３０…無変更区間記録領域、３１，３２…区間記録領域。
【図１】
2008140086.tif 000003
【図２】
2008140086.tif 000004
【図３】
2008140086.tif 000005
【図４】
2008140086.tif 000006
【図５】
2008140086.tif 000007
【図６】
2008140086.tif 000008
【図７】
2008140086.tif 000009
【図８】
2008140086.tif 000010