(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0008】
データミラー型クラスタシステムでは、ミラーリングする業務データをネットワークを利用してデータ転送する必要があり、このデータ転送時間はネットワークの回線帯域や転送速度などに大きく依存する。したがって、関連する技術では、ネットワーク資源が限られた状況等ではデータ転送にかかる時間がボトルネックとなってしまい、適切にミラーリングを行うことができない場合があるという問題がある。
【0009】
本発明は、このような問題に鑑み、適切にミラーリングを行うことが可能なクラスタシステム、クラスタノード、クラスタ制御方法及びクラスタ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係るクラスタシステムは、第1及び第2のクラスタノードを備えたクラスタシステムであって、前記第1のクラスタノードは、第1の同期データを記憶する第1の同期データ記憶部と、第1のスナップショットデータを記憶する第1のスナップショット記憶部と、前記第1の同期データを更新データに更新する第1の同期データ更新部と、前記第1のスナップショットデータに基づいて、前記更新データから転送情報を生成する転送情報生成部と、前記生成された転送情報を前記第2のクラスタノードへ送信する転送情報送信部と、を備え、前記第2のクラスタノードは、第2の同期データを記憶する第2の同期データ記憶部と、第2のスナップショットデータを記憶する第2のスナップショット記憶部と、前記第1のクラスタノードから送信された転送情報を受信する転送情報受信部と、前記第2のスナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成する更新データ生成部と、前記第2の同期データを前記更新データに更新する第2の同期データ更新部と、を備えるものである。
【0011】
本発明に係るクラスタノードは、同期データを記憶する同期データ記憶部と、スナップショットデータを記憶するスナップショット記憶部と、前記同期データを更新データに更新する同期データ更新部と、前記スナップショットデータに基づいて、前記更新データから転送情報を生成する転送情報生成部と、前記生成された転送情報を他のクラスタノードへ送信する転送情報送信部と、を備えるものである。
【0012】
本発明に係るクラスタノードは、同期データを記憶する同期データ記憶部と、スナップショットデータを記憶するスナップショット記憶部と、他のクラスタノードから送信された転送情報を受信する転送情報受信部と、前記スナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成する更新データ生成部と、前記同期データを前記更新データに更新する同期データ更新部と、を備えるものである。
【0013】
本発明に係るクラスタ制御方法は、第1及び第2のクラスタノードを備えたクラスタシステムにおけるクラスタ制御方法であって、前記第1のクラスタノードは、第1の同期データ記憶部に第1の同期データを記憶し、第1のスナップショット記憶部に第1のスナップショットデータを記憶し、前記第1の同期データを更新データに更新し、前記第1のスナップショットデータに基づいて、前記更新データから転送情報を生成し、前記生成された転送情報を前記第2のクラスタノードへ送信し、前記第2のクラスタノードは、第2の同期データ記憶部に第2の同期データを記憶し、第2のスナップショット記憶部に第2のスナップショットデータを記憶し、前記第1のクラスタノードから送信された転送情報を受信し、前記第2のスナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成し、前記第2の同期データを前記更新データに更新するものである。
【0014】
本発明に係るクラスタ制御プログラムは、同期データ記憶部に同期データを記憶し、スナップショット記憶部にスナップショットデータを記憶し、前記同期データを更新データに更新し、前記スナップショットデータに基づいて、前記更新データから転送情報を生成し、前記生成された転送情報を他のクラスタノードへ送信する、処理をクラスタノードに実行させるためのものである。
【0015】
本発明に係るクラスタ制御プログラムは、同期データ記憶部に同期データを記憶し、スナップショット記憶部にスナップショットデータを記憶し、他のクラスタノードから送信された転送情報を受信し、前記スナップショットデータに基づいて、前記受信された転送情報から前記更新データを生成し、前記同期データを前記更新データに更新する、処理をクラスタノードに実行させるためのものである。
【発明の効果】
【0016】
本発明によれば、適切にミラーリングを行うことが可能なクラスタシステム、クラスタノード、クラスタ制御方法及びクラスタ制御プログラムを提供することができる。
【発明を実施するための形態】
【0018】
(実施の形態の概要)
上記のように、データミラー型クラスタシステムでは、ネットワーク資源が限られた状況ではデータ転送にかかる時間がボトルネックとなる。このため、運用上のトラブルの発生や、SLA(Service Level Agreement)が満たせないなどによりデータミラー型クラスタシステムの適用に敷居が高くなってしまう問題点がある。
【0019】
昨今は「ビックデータ」や、「大容量補助記憶装置の低価格化」のため、ますますデータ転送量が増加する傾向がある。データ転送量削減のためデータ転送を効率化する既存の技術として圧縮技術や重複技術が利用されているが、今後のデータ増加傾向も鑑みて、さらに効率的なデータ転送技術が必要とされている。
【0020】
そのため、一般的な重複排除の仕組みを利用しつつ、データミラー型クラスタとしての利点を生かした、効率的かつ無駄のないデータ転送を行う必要がある。データミラー型クラスタシステムではデータ同期が必要となるが、ネットワーク性能に大きく依存するため、単純な書き込みデータの逐次転送では限界がある。圧縮を利用したデータ転送においても重複は排除されないため、無駄なデータ転送が発生してしまう。
【0021】
そこで、実施の形態では、
図1のようにクラスタシステムを構成する。
図1に示すように、実施の形態に係るクラスタシステム100は、クラスタノード110及び120を備えている。
【0022】
クラスタノード(第1のクラスタノード)110は、同期データ記憶部111、スナップショット記憶部112、同期データ更新部113、転送情報生成部114、転送情報送信部115を備えている。同期データ記憶部111は、同期データを記憶する記憶部であり、スナップショット記憶部112は、スナップショットデータを記憶する記憶部である。同期データ更新部113は、同期データ記憶部111の同期データを更新データに更新する。転送情報生成部114は、スナップショット記憶部112のスナップショットデータに基づいて、更新データから転送情報を生成する。転送情報送信部115は、生成された転送情報をクラスタノード120へ送信する。
【0023】
クラスタノード(第2のクラスタノード)120は、同期データ記憶部121、スナップショット記憶部122、同期データ更新部123、更新データ生成部124、転送情報受信部125を備えている。同期データ記憶部121は、同期データを記憶する記憶部であり、スナップショット記憶部122は、スナップショットデータを記憶する記憶部である。転送情報受信部125は、クラスタノード110から送信された転送情報を受信する。更新データ生成部124は、スナップショット記憶部122のスナップショットデータに基づいて、受信された転送情報から更新データを生成する。同期データ更新部123は、同期データ記憶部121の同期データを、生成した更新データに更新する。
【0024】
実施の形態では、スナップショットを保持することができる機構を備えたクラスタシステムとすることで、更新データを過去データとなるスナップショットにまでさかのぼって照合し、重複排除することが可能なため、不要なデータ転送を行わずに、データ転送量を削減することができる。転送するデータの絶対量を減らすことでデータ転送の効率化を図ることができるため、データ同期のタイミングが遅延したり、同期に失敗する恐れがあるという問題を解消し、適切にミラーリングを行うことが可能となる。
【0025】
なお、上記の特許文献1には、差分データを蓄積するデータミラー型クラスタシステムが記載され、特許文献2には、ファイルのリストア処理時間を短縮するストレージ装置が記載され、特許文献3には、重複排除技術を用いたデータバックアップ方法が記載されている。しかしながら、いずれの特許文献にも、実施の形態のようにスナップショットのような「過去の任意」の時点におけるデータを用いてミラーリングを行くクラスタシステムについては記載されていない。
【0026】
(実施の形態1)
以下、図面を参照して実施の形態1について説明する。
図2は、本実施の形態に係るクラスタシステム1の構成を示している。クラスタシステム1は、データミラー型クラスタシステムであり、
図2に示すように、ネットワーク50を介して通信可能に接続されたノード10とノード20を備えている。この例では、ノード10を現用系ノード、ノード20を待機系ノードとして説明する。
【0027】
図2のような構成により、ノード20にて障害前までのデータを利用して業務継続が可能となるデータミラー型クラスタが構成される。なお、ここでは、
図2の各ブロックの構成例を用いて説明するが、後述する本実施の形態に係る動作が実現できれば、その他の構成であってもよい。
【0028】
ノード10及び20における各構成は、ハードウェア又はソフトウェア、もしくはその両方によって構成され、1つのハードウェア又はソフトウェアから構成してもよいし、複数のハードウェア又はソフトウェアから構成してもよい。
【0029】
ノード10及び20の各機能(各処理)を、CPUやメモリ等を有するコンピュータにより実現してもよい。例えば、記憶装置にクラスタ制御を行うためのクラスタ制御プログラム(クラスタ制御ソフトウェア)を格納し、記憶装置に格納されたプログラムをCPU(コンピュータ)で実行することにより、
図2の各機能を実現してもよい。
【0030】
これらのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0031】
ノード(第1のクラスタノード)10は、アプリケーション処理部11、クラスタウェア処理部12、ファイルシステム13、データ記憶制御部14、書き込み履歴記憶部15、マスタ記憶部16、スナップショット記憶部17、送受信部18を備えている。
【0032】
アプリケーション処理部11は、業務プログラムであるアプリケーションを実行し、業務に必要な処理を行う。アプリケーション処理部11は、ノード10が現用系である間、アプリケーションを実行し、現用系から待機系に切り替わると、アプリケーションを停止する。
【0033】
クラスタウェア処理部12は、クラスタウェアを実行し、HAクラスタを構成するために必要な処理を行う。クラスタウェア処理部12は、ノード10のハードウェア及びソフトウェアを監視し、ノード10に障害が発生した場合、現用系から待機系への切り替え処理を行い、アプリケーションの実行をノード10からノード20へ切り替える。
【0034】
ファイルシステム13は、アプリケーション処理部11から各記憶部のデータへのアクセスを可能とする。アプリケーション処理部11からの書き込み要求はファイルシステム13を経てデータ記憶制御部14から書き込み履歴記憶部15へと渡る。
【0035】
データ記憶制御部14は、各記憶部に記憶するデータを制御する。データ記憶制御部14は、後述するように、書き込み履歴記憶部15にデータの書き込みが行われると、マスタ記憶部16及びスナップショット記憶部17を参照し、ノード20へ送信する転送データを送受信部18から送信する。例えば、データ記憶制御部14は、書き込み履歴記憶部15を介してマスタ記憶部16の同期データを更新する同期データ更新部と、スナップショット記憶部17のスナップショットデータに基づいて、更新データから転送データを生成する転送データ生成部を含むとも言える。
【0036】
書き込み履歴記憶部15は、ノード10のブロック書き込み履歴を記憶する。マスタ記憶部16は、ノード10のマスタとなるデータを記憶する。例えば、マスタ記憶部16は、同期データ(マスタデータ)を記憶する同期データ記憶部であるとも言える。スナップショット記憶部17は、マスタ記憶部16の特定の時点における複製データを記憶する。
【0037】
送受信部18は、ネットワーク50を介してノード20との間でデータ送受信を行う。送受信部18は、後述するように、ノード20のデータ記憶制御部24へ、書き込み履歴記憶部15に書き込まれたデータを示す転送データを送信する。
【0038】
ノード(第2のクラスタノード)20は、アプリケーション処理部21、クラスタウェア処理部22、ファイルシステム23、データ記憶制御部24、書き込み履歴記憶部25、マスタ記憶部26、スナップショット記憶部27、送受信部28を備えている。ノード20の各ブロックは、基本的にノード10と同様である。
【0039】
アプリケーション処理部21は、アプリケーションを実行し、ノード20が待機系である間、アプリケーションを停止しておき、待機系から現用系に切り替わると、アプリケーションの実行を開始する。クラスタウェア処理部22は、クラスタウェアを実行し、現用系であるノード10に障害が発生した場合、待機系から現用系への切り替え処理を行い、アプリケーションの実行をノード10からノード20へ切り替える。ファイルシステム23は、アプリケーション処理部21から各記憶部のデータへのアクセスを可能とする。
【0040】
データ記憶制御部24、各記憶部に記憶するデータを制御し、後述するように、送受信部28がノード10から転送データを受信すると、マスタ記憶部26及びスナップショット記憶部27を参照し、生成された書き込みデータを書き込み履歴記憶部25へ書き込む。これによりノード10とノード20間は業務で利用するデータが同期される。例えば、データ記憶制御部24は、スナップショット記憶部27に基づいて、ノード10より受信する転送データから更新データを生成する更新データ生成部と、書き込み履歴記憶部25を介してマスタ記憶部26の同期データを更新する同期データ更新部とを含むとも言える。
【0041】
書き込み履歴記憶部25は、ノード20のブロック書き込み履歴を記憶する。マスタ記憶部26は、ノード20のマスタとなるデータを記憶する。例えば、マスタ記憶部26は、同期データ(マスタデータ)を記憶する同期データ記憶部であるとも言える。スナップショット記憶部27は、マスタ記憶部26の特定の時点における複製データを記憶する。
【0042】
送受信部28は、ネットワーク50を介してノード10との間でデータ送受信を行う。送受信部28は、後述するように、ノード10の書き込み履歴記憶部15に書き込まれたデータを示す転送データを、ノード10から受信する。
【0043】
次に、
図3を用いて、本実施の形態に係るノードにおけるスナップショット生成動作について説明する。
図3はノード10の例を示している。この例では、マスタ記憶部16及びスナップショット記憶部17は、同じファイル形式である。マスタ記憶部16には、マスタファイル30にブロック31単位でデータの書き込み/読み出しが行われ、スナップショット記憶部17には、スナップショットファイル40にブロック41単位でデータの書き込み/読み出しが行われる。また、書き込み履歴記憶部15は、マスタ記憶部16のファイル形式に対応した書き込み履歴テーブル32に、マスタファイル30のブロック31ごとにデータを記憶する。
【0044】
まず、アプリケーション処理部11がファイルシステム13にデータの書き込みを要求すると、データ記憶制御部14は、ファイルシステム13から書き込みデータ(更新データ)を受け取り、受け取った書き込みデータを書き込み履歴記憶部15に記録する(S100)。データ記憶制御部14は、マスタ記憶部16上のブロック位置とデータ列とを対応付ける書き込み履歴テーブル32に、書き込みデータを追記する。
【0045】
続いて、データ記憶制御部14は、追記された書き込み履歴テーブル32のサイズが上限に達した時、または任意のタイミングでマスタ記憶部16へ反映処理を行う。その際、書き込みデータをマスタ記憶部16へ書き込む前に、まず、データ記憶制御部14は、マスタ記憶部16上の上書きされるデータをスナップショット記憶部17へと退避する(S101)。すなわち、データ記憶制御部14は、マスタ記憶部16のマスタファイル30から、書き込みデータのブロック位置に記憶されているデータを読み出し、スナップショット記憶部17のスナップショットファイル40における対応するブロック位置へ、読み出したデータを書き込む。なお、スナップショット記憶部17は、複数世代分のスナップショットファイル40を作成し記憶していてもよい。
【0046】
その後、データ記憶制御部14は、マスタ記憶部16へ書き込み履歴記憶部15のデータを反映する(S102)。すなわち、データ記憶制御部14は、書き込み履歴記憶部15に追記された書き込みデータを読み出し、マスタ記憶部16のマスタファイル30(同期データ)における対応するブロック位置へ、読み出したデータを書き込む。
【0047】
スナップショット(スナップショットファイル40)は、データミラー型クラスタを構成する各ノード上で同様の動作にて作成する。すなわち、待機系のノード20においても、データ記憶制御部24が、アプリケーション処理部21もしくは現用系のノード10から書き込みデータを取得すると、上記のS100〜S102と同様に、書き込み履歴記憶部25にデータを追記し、マスタ記憶部26のデータをスナップショット記憶部27のスナップショットに書き込み、マスタ記憶部26にデータを上書きする。
【0048】
次に、
図4フローチャートを用いて、本実施の形態に係る現用系のノード10の動作概要について説明する。まず、データ記憶制御部14は、同期すべき書き込みデータ(更新データ)を書き込み履歴記憶部15より取得する(S110)。なお、書き込み履歴記憶部15の書き込みデータは、
図3で説明したように、マスタ記憶部16に書き込まれる。続いて、データ記憶制御部14は、マスタ記憶部16およびスナップショット記憶部17のデータを参照し、S110で取得した書き込みデータと重複するデータを検索する(S111)。
【0049】
S111において、マスタ記憶部16およびスナップショット記憶部17に重複するデータ(同一データ)が見つからなかった場合、書き込みデータは新規の書き込みデータであるため、データ記憶制御部14は、新規の書き込みデータとしてそのままのデータ(転送データ)をノード20のデータ記憶制御部24へ転送する(S112)。すなわち、データ記憶制御部14は、書き込みデータを含む転送データを生成し、生成した転送データをノード20へ送信する。
【0050】
一方、S111において、マスタ記憶部16またはスナップショット記憶部17のいずれかに重複するデータ(同一データ)が見つかった場合、データ記憶制御部14は、書き込みデータに代えて、マスタ記憶部16またはスナップショット記憶部17の保持位置を示す同一データ保持位置情報(ポインタ)のみのデータ(転送データ)をノード20のデータ記憶制御部24へ転送する(S113)。すなわち、データ記憶制御部14は、書き込みデータのポインタ情報を含む転送データを生成し、生成した転送データをノード20へ送信する。
【0051】
次に、
図5のフローチャートを用いて、本実施の形態に係る待機系のノード20の動作概要について説明する。まず、データ記憶制御部24は、ノード10のデータ記憶制御部14から転送データを受信する(S120)。続いて、データ記憶制御部24は、S120で受信した受信データが新規の書き込みデータまたは重複データ(ポインタ)であるか否かを判定する(S121)。新規の書き込みデータか重複データかの判定は、データの内容で判定してもよいし、新規の書き込みデータか重複データかを示すフラグをノード10で設定して、このフラグにより判定してもよい。
【0052】
S121において、受信データが新規の書き込みデータである場合、データ記憶制御部24は、受信データをそのまま書き込み履歴記憶部25へ記憶する(S122)。すなわち、データ記憶制御部24は、書き込みデータを含む転送データから書き込みデータを生成し、生成した書き込みデータを書き込み履歴記憶部25へ書き込む。
【0053】
一方、S121において、受信データが重複データ(ポインタ)である場合、データ記憶制御部24は、受信データ内のポインタ情報によりマスタ記憶部26、およびスナップショット記憶部27を検索し(S123)、検索結果により書き込みデータを復元して、復元された完全な書き込みデータを書き込み履歴記憶部25へ記憶する(S124)。すなわち、データ記憶制御部24は、ポインタ情報を含む転送データから書き込みデータを生成し、生成した書き込みデータを書き込み履歴記憶部25へ書き込む。
【0054】
S122またはS124のあと、書き込み履歴記憶部25の書き込みデータは、
図3で説明したように、マスタ記憶部26に書き込まれる。
【0055】
ここで、本実施の形態と比較するため、
図6を用いて比較例の動作を説明する。
図6は、上記特許文献3に記載された関連する重複排除技術の動作を示している。
【0056】
初回のファイル書き込み時、ホスト装置201が、ファイル202(データブロック[A][B][C][A][D])を記憶装置204へ蓄積しようとしている。ホスト装置201からファイル202を受信した制御装置203は、データブロック[A]が冗長的である(重複している)ことを認識し、データブロック[A][B][C][D]を記憶装置204へ蓄積する。この時、冗長であるとされたファイル202中のデータブロック[A]は、記憶装置204に記憶された1回目のデータブロック[A]のアドレスを指し示すポインタ情報として記憶される。
【0057】
2回目以降のファイル書き込みではホスト装置201が、ファイル205(データブロック[A][B][C][A][E])を記憶装置204へ蓄積しようとしている。ホスト装置201からファイル205を受信した制御装置203は、データブロック[A][B][C]が既に記憶装置204に記憶されていることを認識し、データブロック[E]のみを記憶装置204へ蓄積する。ファイル205のデータブロック[A][B][C][A]は、記憶装置204に既に記憶されているデータブロック[A][B][C]のアドレスを指し示すポインタ情報として記憶される。
【0058】
次に、
図7を用いて、本実施の形態に係るクラスタシステムにおける重複排除動作の具体例について説明する。まず、ノード10においてデータ記憶制御部14は、書き込み履歴記憶部15に記憶されているファイル301(データブロック[A][B][C][D][E])を読み出す(S200)。
【0059】
続いて、データ記憶制御部14は、マスタ記憶部16及びスナップショット記憶部17を検索し、マスタ記憶部16のファイル302(データブロック[E][F])よりデータブロック[E]が重複し、スナップショット記憶部17のファイル303(データブロック[D][G])よりデータブロック[D]が重複していることを認識する(S201)。
【0060】
続いて、データ記憶制御部14は、この検索結果から転送データ304を作成する(S202)。このとき、冗長とされたデータブロック[D][E]に対応する、マスタ記憶部16及びスナップショット記憶部17にすでに記憶されている箇所へのそれぞれのアドレスを指すポインタ情報を、データブロック[D][E]に代えて転送データ304に含める。続いて、データ記憶制御部14は、待機系ノード20のデータ記憶制御部24へ転送データ304を送信する(S203)。
【0061】
続いて、ノード20において、データ記憶制御部24は、ノード10から転送データ304を受信し、受信した転送データ304に基づき、マスタ記憶部26及びスナップショット記憶部27を検索する(S204)。データ記憶制御部24は、転送データ304のポインタ情報に基づき、データブロック[D][E]のデータをマスタ記憶部26のファイル312(データブロック[E][F])と、スナップショット記憶部27のファイル313(データブロック[D][G])から取得し、ポインタ情報をデータブロック[D][E]に復元する(S205)。続いて、データ記憶制御部24は、書き込み履歴記憶部25へ復元したファイル311(データブロック[A][B][C][D][E])を書き込む(S206)。
【0062】
図6及び
図7を用いて、本実施の形態の効果を説明する。
図6に示した比較例の重複排除技術では、記憶装置204のデータブロック[E]の冗長性まで検出できるが、
図7のようにスナップショット記憶部を利用する本実施の形態によれば、すでに上書きされてしまっている過去に存在したデータブロック[D]も排除することが可能となり、送信データがより削減される。
【0063】
すなわち、本実施の形態では、スナップショット記憶部を保持することより、現在のマスタ記憶部のデータに限らず、さらに過去のデータにまでさかのぼって重複を排除することが可能となる。スナップショット記憶部には、マスタ記憶部からはすでに上書きされ存在しなくなってしまっているデータも存在しており、それによりデータブロック[D]も転送する必要がなくなるため、さらなる転送データ量の削減が可能となる。これにより、ノード間の同期の遅延や失敗を防ぐことができるため、適切にミラーリングを行うことができる。
【0064】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0065】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0066】
この出願は、2014年10月23日に出願された日本出願特願2014−215994を基礎とする優先権を主張し、その開示の全てをここに取り込む。