(57)【要約】クラスタシステム（１００）のクラスタノード（１１０）は、同期データ記憶部（１１１）とスナップショット記憶部（１１２）、同期データを更新データに更新する同期データ更新部（１１３）、スナップショットデータに基づいて更新データから転送情報を生成する転送情報生成部（１１４）、転送情報を送信する転送情報送信部（１１５）を備える。クラスタノード（１２０）は、同期データ記憶部（１２１）をスナップショット記憶部（１２２）、転送情報を受信する転送情報受信部（１２５）、スナップショットデータに基づいて転送情報から更新データを生成する更新データ生成部（１２４）、同期データを更新データに更新する同期データ更新部（１２３）を備える。これにより、適切にミラーリングを行うことが可能なクラスタシステムを提供する。
2016063461.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のクラスタノードを備えたクラスタシステムであって、
前記第１のクラスタノードは、
第１の同期データを記憶する第１の同期データ記憶手段と、
第１のスナップショットデータを記憶する第１のスナップショット記憶手段と、
前記第１の同期データを更新データに更新する第１の同期データ更新手段と、
前記第１のスナップショットデータに基づいて、前記更新データから転送情報を生成する転送情報生成手段と、
前記生成された転送情報を前記第２のクラスタノードへ送信する転送情報送信手段と、
を備え、
前記第２のクラスタノードは、
第２の同期データを記憶する第２の同期データ記憶手段と、
第２のスナップショットデータを記憶する第２のスナップショット記憶手段と、
前記第１のクラスタノードから送信された転送情報を受信する転送情報受信手段と、
前記第２のスナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成する更新データ生成手段と、
前記第２の同期データを前記更新データに更新する第２の同期データ更新手段と、
を備える、クラスタシステム。
【請求項２】
前記転送情報生成手段は、前記第１のスナップショットデータに含まれる前記更新データと同じデータを示すポインタ情報を前記転送情報とする、
請求項１に記載のクラスタシステム。
【請求項３】
前記転送情報生成手段は、前記第１のスナップショットデータに前記更新データと同じデータが含まれない場合、前記更新データを前記転送情報とする、
請求項２に記載のクラスタシステム。
【請求項４】
前記第１の同期データ記憶手段は、前記第１の同期データを含む第１のマスタデータを記憶する第１のマスタ記憶手段を備え、
前記第１のスナップショットデータは、所定のタイミングにおける前記第１のマスタデータであり、
前記第２の同期データ記憶手段は、前記第２の同期データを含む第２のマスタデータを記憶する第２のマスタ記憶手段を備え、
前記第２のスナップショットデータは、所定のタイミングにおける前記第２のマスタデータである、
請求項１乃至３のいずれか一項に記載のクラスタシステム。
【請求項５】
前記転送情報生成手段は、前記第１のスナップショットデータ及び前記第１のマスタデータに基づいて、前記更新データから前記転送情報を生成し、
前記更新データ生成手段は、前記第２のスナップショットデータ及び前記第２のマスタデータに基づいて、前記受信された転送情報から前記更新データを生成する、
請求項４に記載のクラスタシステム。
【請求項６】
同期データを記憶する同期データ記憶手段と、
スナップショットデータを記憶するスナップショット記憶手段と、
前記同期データを更新データに更新する同期データ更新手段と、
前記スナップショットデータに基づいて、前記更新データから転送情報を生成する転送情報生成手段と、
前記生成された転送情報を他のクラスタノードへ送信する転送情報送信手段と、
を備える、クラスタノード。
【請求項７】
同期データを記憶する同期データ記憶手段と、
スナップショットデータを記憶するスナップショット記憶手段と、
他のクラスタノードから送信された転送情報を受信する転送情報受信手段と、
前記スナップショットデータに基づいて、前記受信された転送情報から更新データを生成する更新データ生成手段と、
前記同期データを前記更新データに更新する同期データ更新手段と、
を備える、クラスタノード。
【請求項８】
第１及び第２のクラスタノードを備えたクラスタシステムにおけるクラスタ制御方法であって、
前記第１のクラスタノードは、
第１の同期データ記憶手段に第１の同期データを記憶し、
第１のスナップショット記憶手段に第１のスナップショットデータを記憶し、
前記第１の同期データを更新データに更新し、
前記第１のスナップショットデータに基づいて、前記更新データから転送情報を生成し、
前記生成された転送情報を前記第２のクラスタノードへ送信し、
前記第２のクラスタノードは、
第２の同期データ記憶手段に第２の同期データを記憶し、
第２のスナップショット記憶手段に第２のスナップショットデータを記憶し、
前記第１のクラスタノードから送信された転送情報を受信し、
前記第２のスナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成し、
前記第２の同期データを前記更新データに更新する、
クラスタ制御方法。
【請求項９】
同期データ記憶手段に同期データを記憶し、
スナップショット記憶手段にスナップショットデータを記憶し、
前記同期データを更新データに更新し、
前記スナップショットデータに基づいて、前記更新データから転送情報を生成し、
前記生成された転送情報を他のクラスタノードへ送信する、
処理をクラスタノードに実行させるためのクラスタ制御プログラムが格納された非一時的なコンピュータ可読媒体。
【請求項１０】
同期データ記憶手段に同期データを記憶し、
スナップショット記憶手段にスナップショットデータを記憶し、
他のクラスタノードから送信された転送情報を受信し、
前記スナップショットデータに基づいて、前記受信された転送情報から更新データを生成し、
前記同期データを前記更新データに更新する、
処理をクラスタノードに実行させるためのクラスタ制御プログラムが格納された非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタシステム、クラスタノード、クラスタ制御方法及びクラスタ制御プログラムに関し、特に、ミラーリングを行うクラスタシステム、クラスタノード、クラスタ制御方法及びクラスタ制御プログラムに関する。
【背景技術】
【０００２】
複数のノード（コンピュータ）を結合することで冗長化構成を構築するクラスタシステムが知られている。特に、一部のハードウェアやソフトウェアに障害が発生してもシステム全体で安定して動作するように可用性を高めたシステムは、ＨＡ（High Availability：高可用性）クラスタシステムと呼ばれている。ＨＡクラスタシステムは、複数のノードで構成されており、各ノードで障害を監視し、当該ノードに異常が発生した場合に当該ノードで起動していた業務（アプリケーション）を他のノードで再開する系切り替えを実施する。【０００３】
ＨＡクラスタシステムでは、業務データの引き継ぎ方法として、共有ストレージを利用した方式（共有ディスク型クラスタシステム）と、業務データをＨＡクラスタシステム構成サーバ間で同期し、各サーバのローカルディスクに同一データを保持する形式（データミラー型クラスタシステム）がある（例えば、特許文献１や非特許文献１参照）。データミラー型クラスタシステムは、共有ストレージ装置が不要な構成であり、データの冗長性も確保できるためコストパフォーマンスのよいＨＡクラスタシステムの構成が可能である。【０００４】
データミラー型クラスタシステムでは、現用系ノードの記憶装置にデータが書き込まれると、書き込まれたデータを現用系ノードから待機系ノードに転送し、待機系ノードの記憶装置にも同じ内容が書き込まれる。これにより、常に現用系ノードと待機系ノードの記憶装置内のデータが互いに同じとなるようにミラーリングを行っている。【０００５】
なお、データの書き込みやバックアップに関連する技術として、例えば、特許文献２や３が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２４９６５２号公報
【特許文献２】特開２００８−３３５２７号公報
【特許文献３】特開２００９−２０５２０１号公報
【非特許文献】
【０００７】
【非特許文献１】日本電気株式会社、“ＣＬＵＳＴＥＲＰＲＯ  Ｘ−特長／機能”、[online]、インターネット<URL:http://jpn.nec.com/clusterpro/clp/function.html#func5_mirror>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
データミラー型クラスタシステムでは、ミラーリングする業務データをネットワークを利用してデータ転送する必要があり、このデータ転送時間はネットワークの回線帯域や転送速度などに大きく依存する。したがって、関連する技術では、ネットワーク資源が限られた状況等ではデータ転送にかかる時間がボトルネックとなってしまい、適切にミラーリングを行うことができない場合があるという問題がある。【０００９】
本発明は、このような問題に鑑み、適切にミラーリングを行うことが可能なクラスタシステム、クラスタノード、クラスタ制御方法及びクラスタ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るクラスタシステムは、第１及び第２のクラスタノードを備えたクラスタシステムであって、前記第１のクラスタノードは、第１の同期データを記憶する第１の同期データ記憶部と、第１のスナップショットデータを記憶する第１のスナップショット記憶部と、前記第１の同期データを更新データに更新する第１の同期データ更新部と、前記第１のスナップショットデータに基づいて、前記更新データから転送情報を生成する転送情報生成部と、前記生成された転送情報を前記第２のクラスタノードへ送信する転送情報送信部と、を備え、前記第２のクラスタノードは、第２の同期データを記憶する第２の同期データ記憶部と、第２のスナップショットデータを記憶する第２のスナップショット記憶部と、前記第１のクラスタノードから送信された転送情報を受信する転送情報受信部と、前記第２のスナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成する更新データ生成部と、前記第２の同期データを前記更新データに更新する第２の同期データ更新部と、を備えるものである。【００１１】
本発明に係るクラスタノードは、同期データを記憶する同期データ記憶部と、スナップショットデータを記憶するスナップショット記憶部と、前記同期データを更新データに更新する同期データ更新部と、前記スナップショットデータに基づいて、前記更新データから転送情報を生成する転送情報生成部と、前記生成された転送情報を他のクラスタノードへ送信する転送情報送信部と、を備えるものである。【００１２】
本発明に係るクラスタノードは、同期データを記憶する同期データ記憶部と、スナップショットデータを記憶するスナップショット記憶部と、他のクラスタノードから送信された転送情報を受信する転送情報受信部と、前記スナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成する更新データ生成部と、前記同期データを前記更新データに更新する同期データ更新部と、を備えるものである。【００１３】
本発明に係るクラスタ制御方法は、第１及び第２のクラスタノードを備えたクラスタシステムにおけるクラスタ制御方法であって、前記第１のクラスタノードは、第１の同期データ記憶部に第１の同期データを記憶し、第１のスナップショット記憶部に第１のスナップショットデータを記憶し、前記第１の同期データを更新データに更新し、前記第１のスナップショットデータに基づいて、前記更新データから転送情報を生成し、前記生成された転送情報を前記第２のクラスタノードへ送信し、前記第２のクラスタノードは、第２の同期データ記憶部に第２の同期データを記憶し、第２のスナップショット記憶部に第２のスナップショットデータを記憶し、前記第１のクラスタノードから送信された転送情報を受信し、前記第２のスナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成し、前記第２の同期データを前記更新データに更新するものである。【００１４】
本発明に係るクラスタ制御プログラムは、同期データ記憶部に同期データを記憶し、スナップショット記憶部にスナップショットデータを記憶し、前記同期データを更新データに更新し、前記スナップショットデータに基づいて、前記更新データから転送情報を生成し、前記生成された転送情報を他のクラスタノードへ送信する、処理をクラスタノードに実行させるためのものである。【００１５】
本発明に係るクラスタ制御プログラムは、同期データ記憶部に同期データを記憶し、スナップショット記憶部にスナップショットデータを記憶し、他のクラスタノードから送信された転送情報を受信し、前記スナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成し、前記同期データを前記更新データに更新する、処理をクラスタノードに実行させるためのものである。
【発明の効果】
【００１６】
本発明によれば、適切にミラーリングを行うことが可能なクラスタシステム、クラスタノード、クラスタ制御方法及びクラスタ制御プログラムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態に係るクラスタシステムの概要構成を示す構成図である。
【図２】実施の形態１に係るクラスタシステムの構成を示す構成図である。
【図３】実施の形態１に係るクラスタノードの動作を説明するための説明図である。
【図４】実施の形態１に係るクラスタノードの動作を示すフローチャートである。
【図５】実施の形態１に係るクラスタノードの動作を示すフローチャートである。
【図６】比較例の動作を説明するための説明図である。
【図７】実施の形態１に係るクラスタシステムの動作を説明するための説明図である。
【発明を実施するための形態】
【００１８】
（実施の形態の概要）
上記のように、データミラー型クラスタシステムでは、ネットワーク資源が限られた状況ではデータ転送にかかる時間がボトルネックとなる。このため、運用上のトラブルの発生や、ＳＬＡ（Service Level Agreement）が満たせないなどによりデータミラー型クラスタシステムの適用に敷居が高くなってしまう問題点がある。
【００１９】
昨今は「ビックデータ」や、「大容量補助記憶装置の低価格化」のため、ますますデータ転送量が増加する傾向がある。データ転送量削減のためデータ転送を効率化する既存の技術として圧縮技術や重複技術が利用されているが、今後のデータ増加傾向も鑑みて、さらに効率的なデータ転送技術が必要とされている。
【００２０】
そのため、一般的な重複排除の仕組みを利用しつつ、データミラー型クラスタとしての利点を生かした、効率的かつ無駄のないデータ転送を行う必要がある。データミラー型クラスタシステムではデータ同期が必要となるが、ネットワーク性能に大きく依存するため、単純な書き込みデータの逐次転送では限界がある。圧縮を利用したデータ転送においても重複は排除されないため、無駄なデータ転送が発生してしまう。
【００２１】
そこで、実施の形態では、図１のようにクラスタシステムを構成する。図１に示すように、実施の形態に係るクラスタシステム１００は、クラスタノード１１０及び１２０を備えている。
【００２２】
クラスタノード（第１のクラスタノード）１１０は、同期データ記憶部１１１、スナップショット記憶部１１２、同期データ更新部１１３、転送情報生成部１１４、転送情報送信部１１５を備えている。同期データ記憶部１１１は、同期データを記憶する記憶部であり、スナップショット記憶部１１２は、スナップショットデータを記憶する記憶部である。同期データ更新部１１３は、同期データ記憶部１１１の同期データを更新データに更新する。転送情報生成部１１４は、スナップショット記憶部１１２のスナップショットデータに基づいて、更新データから転送情報を生成する。転送情報送信部１１５は、生成された転送情報をクラスタノード１２０へ送信する。
【００２３】
クラスタノード（第２のクラスタノード）１２０は、同期データ記憶部１２１、スナップショット記憶部１２２、同期データ更新部１２３、更新データ生成部１２４、転送情報受信部１２５を備えている。同期データ記憶部１２１は、同期データを記憶する記憶部であり、スナップショット記憶部１２２は、スナップショットデータを記憶する記憶部である。転送情報受信部１２５は、クラスタノード１１０から送信された転送情報を受信する。更新データ生成部１２４は、スナップショット記憶部１２２のスナップショットデータに基づいて、受信された転送情報から更新データを生成する。同期データ更新部１２３は、同期データ記憶部１２１の同期データを、生成した更新データに更新する。
【００２４】
実施の形態では、スナップショットを保持することができる機構を備えたクラスタシステムとすることで、更新データを過去データとなるスナップショットにまでさかのぼって照合し、重複排除することが可能なため、不要なデータ転送を行わずに、データ転送量を削減することができる。転送するデータの絶対量を減らすことでデータ転送の効率化を図ることができるため、データ同期のタイミングが遅延したり、同期に失敗する恐れがあるという問題を解消し、適切にミラーリングを行うことが可能となる。
【００２５】
なお、上記の特許文献１には、差分データを蓄積するデータミラー型クラスタシステムが記載され、特許文献２には、ファイルのリストア処理時間を短縮するストレージ装置が記載され、特許文献３には、重複排除技術を用いたデータバックアップ方法が記載されている。しかしながら、いずれの特許文献にも、実施の形態のようにスナップショットのような「過去の任意」の時点におけるデータを用いてミラーリングを行くクラスタシステムについては記載されていない。
【００２６】
（実施の形態１）
以下、図面を参照して実施の形態１について説明する。図２は、本実施の形態に係るクラスタシステム１の構成を示している。クラスタシステム１は、データミラー型クラスタシステムであり、図２に示すように、ネットワーク５０を介して通信可能に接続されたノード１０とノード２０を備えている。この例では、ノード１０を現用系ノード、ノード２０を待機系ノードとして説明する。
【００２７】
図２のような構成により、ノード２０にて障害前までのデータを利用して業務継続が可能となるデータミラー型クラスタが構成される。なお、ここでは、図２の各ブロックの構成例を用いて説明するが、後述する本実施の形態に係る動作が実現できれば、その他の構成であってもよい。
【００２８】
ノード１０及び２０における各構成は、ハードウェア又はソフトウェア、もしくはその両方によって構成され、１つのハードウェア又はソフトウェアから構成してもよいし、複数のハードウェア又はソフトウェアから構成してもよい。
【００２９】
ノード１０及び２０の各機能（各処理）を、ＣＰＵやメモリ等を有するコンピュータにより実現してもよい。例えば、記憶装置にクラスタ制御を行うためのクラスタ制御プログラム（クラスタ制御ソフトウェア）を格納し、記憶装置に格納されたプログラムをＣＰＵ（コンピュータ）で実行することにより、図２の各機能を実現してもよい。
【００３０】
これらのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００３１】
ノード（第１のクラスタノード）１０は、アプリケーション処理部１１、クラスタウェア処理部１２、ファイルシステム１３、データ記憶制御部１４、書き込み履歴記憶部１５、マスタ記憶部１６、スナップショット記憶部１７、送受信部１８を備えている。
【００３２】
アプリケーション処理部１１は、業務プログラムであるアプリケーションを実行し、業務に必要な処理を行う。アプリケーション処理部１１は、ノード１０が現用系である間、アプリケーションを実行し、現用系から待機系に切り替わると、アプリケーションを停止する。
【００３３】
クラスタウェア処理部１２は、クラスタウェアを実行し、ＨＡクラスタを構成するために必要な処理を行う。クラスタウェア処理部１２は、ノード１０のハードウェア及びソフトウェアを監視し、ノード１０に障害が発生した場合、現用系から待機系への切り替え処理を行い、アプリケーションの実行をノード１０からノード２０へ切り替える。
【００３４】
ファイルシステム１３は、アプリケーション処理部１１から各記憶部のデータへのアクセスを可能とする。アプリケーション処理部１１からの書き込み要求はファイルシステム１３を経てデータ記憶制御部１４から書き込み履歴記憶部１５へと渡る。
【００３５】
データ記憶制御部１４は、各記憶部に記憶するデータを制御する。データ記憶制御部１４は、後述するように、書き込み履歴記憶部１５にデータの書き込みが行われると、マスタ記憶部１６及びスナップショット記憶部１７を参照し、ノード２０へ送信する転送データを送受信部１８から送信する。例えば、データ記憶制御部１４は、書き込み履歴記憶部１５を介してマスタ記憶部１６の同期データを更新する同期データ更新部と、スナップショット記憶部１７のスナップショットデータに基づいて、更新データから転送データを生成する転送データ生成部を含むとも言える。
【００３６】
書き込み履歴記憶部１５は、ノード１０のブロック書き込み履歴を記憶する。マスタ記憶部１６は、ノード１０のマスタとなるデータを記憶する。例えば、マスタ記憶部１６は、同期データ（マスタデータ）を記憶する同期データ記憶部であるとも言える。スナップショット記憶部１７は、マスタ記憶部１６の特定の時点における複製データを記憶する。
【００３７】
送受信部１８は、ネットワーク５０を介してノード２０との間でデータ送受信を行う。送受信部１８は、後述するように、ノード２０のデータ記憶制御部２４へ、書き込み履歴記憶部１５に書き込まれたデータを示す転送データを送信する。
【００３８】
ノード（第２のクラスタノード）２０は、アプリケーション処理部２１、クラスタウェア処理部２２、ファイルシステム２３、データ記憶制御部２４、書き込み履歴記憶部２５、マスタ記憶部２６、スナップショット記憶部２７、送受信部２８を備えている。ノード２０の各ブロックは、基本的にノード１０と同様である。
【００３９】
アプリケーション処理部２１は、アプリケーションを実行し、ノード２０が待機系である間、アプリケーションを停止しておき、待機系から現用系に切り替わると、アプリケーションの実行を開始する。クラスタウェア処理部２２は、クラスタウェアを実行し、現用系であるノード１０に障害が発生した場合、待機系から現用系への切り替え処理を行い、アプリケーションの実行をノード１０からノード２０へ切り替える。ファイルシステム２３は、アプリケーション処理部２１から各記憶部のデータへのアクセスを可能とする。
【００４０】
データ記憶制御部２４、各記憶部に記憶するデータを制御し、後述するように、送受信部２８がノード１０から転送データを受信すると、マスタ記憶部２６及びスナップショット記憶部２７を参照し、生成された書き込みデータを書き込み履歴記憶部２５へ書き込む。これによりノード１０とノード２０間は業務で利用するデータが同期される。例えば、データ記憶制御部２４は、スナップショット記憶部２７に基づいて、ノード１０より受信する転送データから更新データを生成する更新データ生成部と、書き込み履歴記憶部２５を介してマスタ記憶部２６の同期データを更新する同期データ更新部とを含むとも言える。
【００４１】
書き込み履歴記憶部２５は、ノード２０のブロック書き込み履歴を記憶する。マスタ記憶部２６は、ノード２０のマスタとなるデータを記憶する。例えば、マスタ記憶部２６は、同期データ（マスタデータ）を記憶する同期データ記憶部であるとも言える。スナップショット記憶部２７は、マスタ記憶部２６の特定の時点における複製データを記憶する。
【００４２】
送受信部２８は、ネットワーク５０を介してノード１０との間でデータ送受信を行う。送受信部２８は、後述するように、ノード１０の書き込み履歴記憶部１５に書き込まれたデータを示す転送データを、ノード１０から受信する。
【００４３】
次に、図３を用いて、本実施の形態に係るノードにおけるスナップショット生成動作について説明する。図３はノード１０の例を示している。この例では、マスタ記憶部１６及びスナップショット記憶部１７は、同じファイル形式である。マスタ記憶部１６には、マスタファイル３０にブロック３１単位でデータの書き込み／読み出しが行われ、スナップショット記憶部１７には、スナップショットファイル４０にブロック４１単位でデータの書き込み／読み出しが行われる。また、書き込み履歴記憶部１５は、マスタ記憶部１６のファイル形式に対応した書き込み履歴テーブル３２に、マスタファイル３０のブロック３１ごとにデータを記憶する。
【００４４】
まず、アプリケーション処理部１１がファイルシステム１３にデータの書き込みを要求すると、データ記憶制御部１４は、ファイルシステム１３から書き込みデータ（更新データ）を受け取り、受け取った書き込みデータを書き込み履歴記憶部１５に記録する（Ｓ１００）。データ記憶制御部１４は、マスタ記憶部１６上のブロック位置とデータ列とを対応付ける書き込み履歴テーブル３２に、書き込みデータを追記する。
【００４５】
続いて、データ記憶制御部１４は、追記された書き込み履歴テーブル３２のサイズが上限に達した時、または任意のタイミングでマスタ記憶部１６へ反映処理を行う。その際、書き込みデータをマスタ記憶部１６へ書き込む前に、まず、データ記憶制御部１４は、マスタ記憶部１６上の上書きされるデータをスナップショット記憶部１７へと退避する（Ｓ１０１）。すなわち、データ記憶制御部１４は、マスタ記憶部１６のマスタファイル３０から、書き込みデータのブロック位置に記憶されているデータを読み出し、スナップショット記憶部１７のスナップショットファイル４０における対応するブロック位置へ、読み出したデータを書き込む。なお、スナップショット記憶部１７は、複数世代分のスナップショットファイル４０を作成し記憶していてもよい。
【００４６】
その後、データ記憶制御部１４は、マスタ記憶部１６へ書き込み履歴記憶部１５のデータを反映する（Ｓ１０２）。すなわち、データ記憶制御部１４は、書き込み履歴記憶部１５に追記された書き込みデータを読み出し、マスタ記憶部１６のマスタファイル３０（同期データ）における対応するブロック位置へ、読み出したデータを書き込む。
【００４７】
スナップショット（スナップショットファイル４０）は、データミラー型クラスタを構成する各ノード上で同様の動作にて作成する。すなわち、待機系のノード２０においても、データ記憶制御部２４が、アプリケーション処理部２１もしくは現用系のノード１０から書き込みデータを取得すると、上記のＳ１００〜Ｓ１０２と同様に、書き込み履歴記憶部２５にデータを追記し、マスタ記憶部２６のデータをスナップショット記憶部２７のスナップショットに書き込み、マスタ記憶部２６にデータを上書きする。
【００４８】
次に、図４フローチャートを用いて、本実施の形態に係る現用系のノード１０の動作概要について説明する。まず、データ記憶制御部１４は、同期すべき書き込みデータ（更新データ）を書き込み履歴記憶部１５より取得する（Ｓ１１０）。なお、書き込み履歴記憶部１５の書き込みデータは、図３で説明したように、マスタ記憶部１６に書き込まれる。続いて、データ記憶制御部１４は、マスタ記憶部１６およびスナップショット記憶部１７のデータを参照し、Ｓ１１０で取得した書き込みデータと重複するデータを検索する（Ｓ１１１）。
【００４９】
Ｓ１１１において、マスタ記憶部１６およびスナップショット記憶部１７に重複するデータ（同一データ）が見つからなかった場合、書き込みデータは新規の書き込みデータであるため、データ記憶制御部１４は、新規の書き込みデータとしてそのままのデータ（転送データ）をノード２０のデータ記憶制御部２４へ転送する（Ｓ１１２）。すなわち、データ記憶制御部１４は、書き込みデータを含む転送データを生成し、生成した転送データをノード２０へ送信する。
【００５０】
一方、Ｓ１１１において、マスタ記憶部１６またはスナップショット記憶部１７のいずれかに重複するデータ（同一データ）が見つかった場合、データ記憶制御部１４は、書き込みデータに代えて、マスタ記憶部１６またはスナップショット記憶部１７の保持位置を示す同一データ保持位置情報（ポインタ）のみのデータ（転送データ）をノード２０のデータ記憶制御部２４へ転送する（Ｓ１１３）。すなわち、データ記憶制御部１４は、書き込みデータのポインタ情報を含む転送データを生成し、生成した転送データをノード２０へ送信する。
【００５１】
次に、図５のフローチャートを用いて、本実施の形態に係る待機系のノード２０の動作概要について説明する。まず、データ記憶制御部２４は、ノード１０のデータ記憶制御部１４から転送データを受信する（Ｓ１２０）。続いて、データ記憶制御部２４は、Ｓ１２０で受信した受信データが新規の書き込みデータまたは重複データ（ポインタ）であるか否かを判定する（Ｓ１２１）。新規の書き込みデータか重複データかの判定は、データの内容で判定してもよいし、新規の書き込みデータか重複データかを示すフラグをノード１０で設定して、このフラグにより判定してもよい。
【００５２】
Ｓ１２１において、受信データが新規の書き込みデータである場合、データ記憶制御部２４は、受信データをそのまま書き込み履歴記憶部２５へ記憶する（Ｓ１２２）。すなわち、データ記憶制御部２４は、書き込みデータを含む転送データから書き込みデータを生成し、生成した書き込みデータを書き込み履歴記憶部２５へ書き込む。
【００５３】
一方、Ｓ１２１において、受信データが重複データ（ポインタ）である場合、データ記憶制御部２４は、受信データ内のポインタ情報によりマスタ記憶部２６、およびスナップショット記憶部２７を検索し（Ｓ１２３）、検索結果により書き込みデータを復元して、復元された完全な書き込みデータを書き込み履歴記憶部２５へ記憶する（Ｓ１２４）。すなわち、データ記憶制御部２４は、ポインタ情報を含む転送データから書き込みデータを生成し、生成した書き込みデータを書き込み履歴記憶部２５へ書き込む。
【００５４】
Ｓ１２２またはＳ１２４のあと、書き込み履歴記憶部２５の書き込みデータは、図３で説明したように、マスタ記憶部２６に書き込まれる。
【００５５】
ここで、本実施の形態と比較するため、図６を用いて比較例の動作を説明する。図６は、上記特許文献３に記載された関連する重複排除技術の動作を示している。
【００５６】
初回のファイル書き込み時、ホスト装置２０１が、ファイル２０２（データブロック［Ａ］［Ｂ］［Ｃ］［Ａ］［Ｄ］）を記憶装置２０４へ蓄積しようとしている。ホスト装置２０１からファイル２０２を受信した制御装置２０３は、データブロック［Ａ］が冗長的である（重複している）ことを認識し、データブロック［Ａ］［Ｂ］［Ｃ］［Ｄ］を記憶装置２０４へ蓄積する。この時、冗長であるとされたファイル２０２中のデータブロック［Ａ］は、記憶装置２０４に記憶された１回目のデータブロック［Ａ］のアドレスを指し示すポインタ情報として記憶される。
【００５７】
２回目以降のファイル書き込みではホスト装置２０１が、ファイル２０５（データブロック［Ａ］［Ｂ］［Ｃ］［Ａ］［Ｅ］）を記憶装置２０４へ蓄積しようとしている。ホスト装置２０１からファイル２０５を受信した制御装置２０３は、データブロック［Ａ］［Ｂ］［Ｃ］が既に記憶装置２０４に記憶されていることを認識し、データブロック［Ｅ］のみを記憶装置２０４へ蓄積する。ファイル２０５のデータブロック［Ａ］［Ｂ］［Ｃ］［Ａ］は、記憶装置２０４に既に記憶されているデータブロック［Ａ］［Ｂ］［Ｃ］のアドレスを指し示すポインタ情報として記憶される。
【００５８】
次に、図７を用いて、本実施の形態に係るクラスタシステムにおける重複排除動作の具体例について説明する。まず、ノード１０においてデータ記憶制御部１４は、書き込み履歴記憶部１５に記憶されているファイル３０１（データブロック［Ａ］［Ｂ］［Ｃ］［Ｄ］［Ｅ］）を読み出す（Ｓ２００）。
【００５９】
続いて、データ記憶制御部１４は、マスタ記憶部１６及びスナップショット記憶部１７を検索し、マスタ記憶部１６のファイル３０２（データブロック［Ｅ］［Ｆ］）よりデータブロック［Ｅ］が重複し、スナップショット記憶部１７のファイル３０３（データブロック［Ｄ］［Ｇ］）よりデータブロック［Ｄ］が重複していることを認識する（Ｓ２０１）。
【００６０】
続いて、データ記憶制御部１４は、この検索結果から転送データ３０４を作成する（Ｓ２０２）。このとき、冗長とされたデータブロック［Ｄ］［Ｅ］に対応する、マスタ記憶部１６及びスナップショット記憶部１７にすでに記憶されている箇所へのそれぞれのアドレスを指すポインタ情報を、データブロック［Ｄ］［Ｅ］に代えて転送データ３０４に含める。続いて、データ記憶制御部１４は、待機系ノード２０のデータ記憶制御部２４へ転送データ３０４を送信する（Ｓ２０３）。
【００６１】
続いて、ノード２０において、データ記憶制御部２４は、ノード１０から転送データ３０４を受信し、受信した転送データ３０４に基づき、マスタ記憶部２６及びスナップショット記憶部２７を検索する（Ｓ２０４）。データ記憶制御部２４は、転送データ３０４のポインタ情報に基づき、データブロック［Ｄ］［Ｅ］のデータをマスタ記憶部２６のファイル３１２（データブロック［Ｅ］［Ｆ］）と、スナップショット記憶部２７のファイル３１３（データブロック［Ｄ］［Ｇ］）から取得し、ポインタ情報をデータブロック［Ｄ］［Ｅ］に復元する（Ｓ２０５）。続いて、データ記憶制御部２４は、書き込み履歴記憶部２５へ復元したファイル３１１(データブロック［Ａ］［Ｂ］［Ｃ］［Ｄ］［Ｅ］)を書き込む（Ｓ２０６）。
【００６２】
図６及び図７を用いて、本実施の形態の効果を説明する。図６に示した比較例の重複排除技術では、記憶装置２０４のデータブロック［Ｅ］の冗長性まで検出できるが、図７のようにスナップショット記憶部を利用する本実施の形態によれば、すでに上書きされてしまっている過去に存在したデータブロック［Ｄ］も排除することが可能となり、送信データがより削減される。
【００６３】
すなわち、本実施の形態では、スナップショット記憶部を保持することより、現在のマスタ記憶部のデータに限らず、さらに過去のデータにまでさかのぼって重複を排除することが可能となる。スナップショット記憶部には、マスタ記憶部からはすでに上書きされ存在しなくなってしまっているデータも存在しており、それによりデータブロック［Ｄ］も転送する必要がなくなるため、さらなる転送データ量の削減が可能となる。これにより、ノード間の同期の遅延や失敗を防ぐことができるため、適切にミラーリングを行うことができる。
【００６４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００６５】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００６６】
この出願は、２０１４年１０月２３日に出願された日本出願特願２０１４−２１５９９４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００６７】
１      クラスタシステム
１０    ノード
１１    アプリケーション処理部
１２    クラスタウェア処理部
１３    ファイルシステム
１４    データ記憶制御部
１５    書き込み履歴記憶部
１６    マスタ記憶部
１７    スナップショット記憶部
１８    送受信部
２０    ノード
２１    アプリケーション処理部
２２    クラスタウェア処理部
２３    ファイルシステム
２４    データ記憶制御部
２５    書き込み履歴記憶部
２６    マスタ記憶部
２７    スナップショット記憶部
２８    送受信部
３０    マスタファイル
３１    ブロック
３２    履歴テーブル
４０    スナップショットファイル
４１    ブロック
５０    ネットワーク
１００  クラスタシステム
１１０  クラスタノード
１１１  同期データ記憶部
１１２  スナップショット記憶部
１１３  同期データ更新部
１１４  転送情報生成部
１１５  転送情報送信部
１２０  クラスタノード
１２１  同期データ記憶部
１２２  スナップショット記憶部
１２３  同期データ更新部
１２４  更新データ生成部
１２５  転送情報受信部
２０１  ホスト装置
２０２  ファイル
２０３  制御装置
２０４  記憶装置
２０５  ファイル
３０１〜３０３、３１１、３１２  ファイル
３０４  転送データ
【図１】
2016063461.tif 000003
【図２】
2016063461.tif 000004
【図３】
2016063461.tif 000005
【図４】
2016063461.tif 000006
【図５】
2016063461.tif 000007
【図６】
2016063461.tif 000008
【図７】
2016063461.tif 000009
【国際調査報告】
2016063461.tif 000010
2016063461.tif 000011
2016063461.tif 000012
2016063461.tif 000013