説明

分散ファイルシステム

【課題】リレー転送による多重化方法において、途中の計算機ノードに滞留したデータを下流に送出することなく、滞留データを削減する。
【解決手段】計算機ノード120は、計算機ノード110と計算機ノード130とに通信可能に接続され、マスターのファイルシステム111の複製であるファイルシステム121と、記憶手段123と、制御手段124とを有する。制御手段124は、マスターのファイルシステム111のデータのうち前回から変更および追加されたデータを含む増分データを計算機ノード110から受信して記憶手段123に記憶すると共にファイルシステム121に反映し、さらに計算機ノード130に送信する。また制御手段124は、計算機ノード130に増分データを送信している最中に、送信中の増分データ以降の複数回分の増分データが記憶手段123に蓄積された場合、複数回分の増分データを1つの増分データにマージする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は分散ファイルシステムに関し、特にネットワークで接続された複数の計算機ノード間でファイルシステムの増分データを転送することによりファイルシステムの多重化を行う分散ファイルシステムに関する。
【背景技術】
【0002】
高信頼型の分散ファイルシステムでは、マスターファイルシステムと同一の内容を持つ複製ファイルシステムを作成し、マスターファイルシステムが格納されている計算機ノードとは別の計算機ノードに複製ファイルシステムを格納する多重化が採用される。このような分散ファイルシステムでは、ファイルに対する更新は、マスターファイルシステムに行うと共に、その更新内容を複製ファイルシステムに対して反映することで、ファイルシステムの多重化を維持する。この分散ファイルシステムでは、マスターおよび複製の何れかが壊れた場合でも、ファイルシステムの内容を他方から復元することができる。また複製ファイルシステムを複数作成しておくことにより、より高い信頼性を確保することができる。
【0003】
マスターとなるデータの複製を複数の計算機ノードに作成する方法の一例が特許文献1の図10に記載されている。特許文献1に記載の技術では、複製データを有する複数の計算機ノードは、数珠繋ぎに接続されている。マスター計算機上のデータの更新にあわせて、複製データを有する複数の計算機ノードのうちの先頭の1つの計算機ノード上の複製データが更新される。次に、この先頭の計算機ノードから2番目の計算機ノードに対してデータが転送され、2番目の計算機ノード上の複製データが更新される。同様の動作が最後尾の計算機ノードまでリレー転送によって繰り返される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−200086号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したリレー転送による多重化方法は、特定の計算機ノードに負荷が集中することを避けることができる。しかし、複製データを有する複数の計算機ノード間の通信に遅延が生じると、計算機ノードの記憶部に下流に送出できないデータが大量に滞留する。この滞留したデータは、下流に送出しない限り削減することは困難である。
【0006】
本発明の目的は、上述した課題、すなわちリレー転送による多重化方法では途中の計算機ノードに滞留したデータは下流に送出しない限り削減することは困難である、という課題を解決する分散ファイルシステムを提供することにある。
【課題を解決するための手段】
【0007】
本発明の一形態にかかる分散ファイルシステムは、
第1のファイルシステムを有する第1の計算機ノードと、上記第1の計算機ノードに通信可能に接続され、上記第1のファイルシステムの複製である第2のファイルシステムを有する第2の計算機ノードと、上記第2の計算機ノードに通信可能に接続され、上記第1のファイルシステムの複製である第3のファイルシステムを有する第3の計算機ノードとを有し、
上記第1の計算機ノードは、変更および追加がある毎または定期的に上記第1のファイルシステムのデータのうち前回から変更および追加されたデータを増分データとして生成する増分データ生成手段と、第1の記憶手段と、上記増分データ生成手段で生成された上記増分データを上記第1の記憶手段に記憶すると共に上記第2の計算機ノードに送信する第1の制御手段とを有し、
上記第2の計算機ノードは、第2の記憶手段と、上記第1の計算機ノードから受信した上記増分データを上記第2の記憶手段に記憶すると共に上記第2のファイルシステムに反映し、さらに上記第3の計算機システムに送信する第2の制御手段とを有し、
上記第3の計算機ノードは、第3の記憶手段と、上記第2の計算機ノードから受信した上記増分データを上記第3の記憶手段に記憶すると共に上記第3のファイルシステムに反映する第3の制御手段とを有し、
上記第2の制御手段は、上記第3の計算機ノードに上記増分データを送信している最中に、上記送信中の上記増分データ以降の複数回分の上記増分データが上記第2の記憶手段に蓄積された場合、上記複数回分の上記増分データを1つの増分データにマージする、といった構成を採る。
【発明の効果】
【0008】
本発明は上述した構成を有するため、途中の計算機ノードに滞留したデータを下流に送出することなく削減することが可能になる。
【図面の簡単な説明】
【0009】
【図1】本発明の第2の実施形態の構成説明図である。
【図2】本発明の第2の実施形態におけるノードのブロック図である。
【図3】本発明の第2の実施形態におけるスナップショット状態遷移図である。
【図4】本発明の第2の実施形態における中間ノード遅延状態時のスナップショット状態遷移図である。
【図5】本発明の第2の実施形態におけるノード離脱時のスナップショット状態遷移図である。
【図6】本発明の第2の実施形態におけるノード復帰時のスナップショット状態遷移図である。
【図7】本発明の第2の実施形態におけるサーバプロセスの処理例を示すフローチャートである。
【図8】本発明の第2の実施形態における先頭ノードのスナップショット制御プロセスの処理例を示すフローチャートである。
【図9】本発明の第2の実施形態における中間ノードのスナップショット制御プロセスの処理例を示すフローチャートである。
【図10】本発明の第2の実施形態における末端ノードのスナップショット制御プロセスの処理例を示すフローチャートである。
【図11】本発明の第2の実施形態における転送要求パケットの説明図である。
【図12】本発明の第2の実施形態におけるノードリストの説明図である。
【図13】本発明の第2の実施形態におけるネクストホップの説明図である。
【図14】本発明の第2の実施形態におけるネクストホップの説明図である。
【図15】本発明の第1の実施形態のブロック図である。
【図16】本発明の第1の実施形態における増分データとそのマージ処理の説明図である。
【発明を実施するための形態】
【0010】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図15を参照すると、本発明の第1の実施形態にかかる分散ファイルシステムは、計算機ノード110と、この計算機ノード110とネットワークを通じて通信可能に接続された計算機ノード120と、この計算機ノード120とネットワークを通じて通信可能に接続された計算機ノード130とを有する。
【0011】
計算機ノード110は、マスターとなるファイルシステム111と、変更および追加がある毎または定期的にファイルシステム111のデータのうち前回から変更および追加されたデータを増分データとして生成する増分データ生成手段112と、記憶手段113と、増分データ生成手段112で生成された増分データを記憶手段113に記憶すると共に計算機ノード120に送信する制御手段114とを有する。
【0012】
増分データ生成手段112は、変更および追加がある毎または定期的にファイルシステム111のイメージであるスナップショットを取得し、今回取得したスナップショットと前回取得したスナップショットとの差分を増分データとして算出するようにしてよい。また増分データは、ファイルシステムを構成するブロックのうち、前回から変更および追加のあったブロックのみを有するものとしてよい。
【0013】
例えば、ファイルシステム111が合計4個のブロックから構成され、n回目、n+1回目、n+2回目に取得したスナップショットが図16に示すような内容になっていたとする。図16において、A0〜D0、A1、A2、B1は各ブロックの内容を示す。すなわち、n回目に取得したスナップショットでは、ブロック1〜4はそれぞれA0〜D0という内容であり、n+1回目のスナップショットでは、ブロック1、2がA0、B0からA1、B1という内容に変わっており、n+2回目では、ブロック1がさらにA2という内容に変わっているとする。このとき、nとn+1との増分データは、A1の内容を有するブロック1と、B1という内容を有するブロック2とを有する。また、n+1とn+2との増分データは、A2という内容を有するブロック1を有する。
【0014】
計算機ノード120は、ファイルシステム111の複製となるファイルシステム121と、記憶手段123と、計算機ノード110から受信した増分データを記憶手段123に記憶すると共にファイルシステム121に反映し、さらに計算機ノード130に送信する制御手段124とを有する。また制御手段124は、計算機ノード130に増分データを送信している最中に、送信中の上記増分データ以降の複数回分の増分データが記憶手段123に蓄積されたことを検出すると、その複数回分の増分データを1つの増分データにマージする機能を有する。
【0015】
制御手段124は、第1の増分データとこの第1の増分データの次に受信した第2の増分データとをマージし、第1および第2の増分データの何れか一方にのみ含まれるブロックと、双方に含まれるブロックについては第2の増分データのブロックのみを含む増分データを生成してよい。例えば図16に示したnとn+1との増分データと、n+1とn+2との増分データとをマージした増分データは、A2の内容を有するブロック1と、B1という内容を有するブロック2とを有する。
【0016】
計算機ノード130は、ファイルシステム111の複製となるファイルシステム131と、記憶手段133と、計算機ノード120から受信した増分データを記憶手段133に記憶すると共にファイルシステム131に反映する制御手段134とを有する。
【0017】
次に本実施形態の動作を説明する。
【0018】
計算機ノード110の増分データ生成手段112は、ファイルシステム111に変更および追加がある毎、または定期的に、ファイルシステム111のデータのうち前回から変更および追加されたデータを増分データとして生成する。制御手段114は、増分データ生成手段112で生成された増分データを記憶手段113に記憶すると共に、計算機ノード120に送信する。
【0019】
計算機ノード120の制御手段124は、計算機ノード110から増分データを受信すると、受信した増分データを記憶手段123に記憶すると共に、ファイルシステム121に反映する。さらに制御手段124は、上記受信した増分データを計算機ノード130に送信する。
【0020】
計算機ノード130の制御手段134は、計算機ノード120から増分データを受信すると、受信した増分データを記憶手段133に記憶すると共に、ファイルシステム131に反映する。
【0021】
上述のように、ファイルシステム111の増分データが、ファイルシステム121、131に反映されることにより、ファイルシステム121、131はファイルシステム111と同じ内容を維持する。
【0022】
また、計算機ノード120と計算機ノード130とを接続する通信ネットワークの混雑等が原因で、増分データの通信に長時間を要すると、計算機ノード120が計算機ノード130に増分データを送信している最中に、新たな増分データが計算機ノード110から計算機ノード120に送信されてきて、記憶手段123に蓄積されていく。制御手段124は、送信中の増分データ以降の複数回分の増分データが記憶手段123に記憶されていることを検出すると、その複数回分の増分データを1つの増分データにマージする。その後、制御手段124は、送信中の増分データの送信が終了すると、記憶手段123から上記マージ後の増分データを読み出して計算機ノード130へ送信する。
【0023】
計算機ノード130の制御手段134は、計算機ノード120から上記マージ後の増分データを受信すると、受信したマージ後の増分データを記憶手段133に記憶すると共に、ファイルシステム131に反映する。
【0024】
このように本実施形態によれば、途中の計算機ノードに滞留したデータを下流に送出することなく削減することが可能になる。例えば、図16に示した例では、nとn+1との増分データと、n+1とn+2との増分データとをマージすることにより、滞留するデータ量を2/3に削減することができる。
【0025】
また本実施形態によれば、下流に送出する増分データの数およびデータ量がマージによって削減されるため、より短時間で末端の計算機ノードまで増分データを届けることができる。これにより、ファイルシステムの多重化を早期に維持することが可能になる。
【0026】
[第2の実施形態]
[本実施形態の特徴]
本実施形態の特徴は、ネットワークで接続されたノード間において、ファイルシステムのスナップショットを効率的にリレー転送して、ファイルシステムの多重化を維持する方式である。
【0027】
[本実施形態が解決しようとする課題]
ファイルシステムの多重化を行うためにファイルシステムの或る時点のイメージとその次の時点のイメージとの増分である増分スナップショット(以下、単にスナップショットと記す)を送信し、ノード間のデータ同期をとる技術は存在した。しかし、中継ノードがスナップショットを送信中に、上位ノードから次々にスナップショットを受信した場合、送信すべきスナップショット数が増加し、その分だけコスト(ディスク容量、スナップショット数、通信数)が増え、効率的ではなく、保存するスナップショット数を減らし効率良く管理する必要があった。
【0028】
[本実施形態による解決手段]
本実施形態では、管理するスナップショットを最大限に少なくし、効率的なスナップショットリレー転送を提供する。また、ネットワークからノードの離脱時および復帰時に、各ノードが動的にノードの親子関係を決定し、同期する。そのため、スナップショットリレーノードを無限にスケールすることが可能となる。具体的には、リレーノード機能種別に、先頭ノード機能、中間ノード機能、末端ノード機能、の3種類を備え、各ノードは親ノードと子ノードのみ通信するモデルを定義する。ノード機能の単位は、ファイルシステムごとに提供する。詳細は後述する。
【0029】
[本実施形態の構成]
本実施形態の構成について説明する。全体の構成は図1を参照する。システムは複数のコンピュータ装置で構成される。コンピュータ装置はスナップショット制御プロセスの制御を行う1つのサーバプロセスを持つ。コンピュータ装置は単数および複数のディスク装置を持つ。ディスク装置には単数および複数のファイルシステムを持つ。1つのファイルシステム上には複数のスナップショットを構成することができる。1つのファイルシステムにつき、1つのスナップショット制御プロセスを持つ。
【0030】
制御情報の受信および、ノード構成は、1台〜y台で構成する。1台の場合は、転送処理を実施しない。2台の場合は、先頭ノードと末端ノード機能のみで構成される。3台以上の場合は、先頭ノードと中間ノード、および末端ノードの機能で構成される。
【0031】
リレーノード機能については、図2を参照する。サーバプロセス210は制御情報を受信する制御情報送受信部211、およびスナップショット制御プロセス情報を管理するスナップショット制御プロセスリスト212を持つ。
【0032】
スナップショット制御プロセス220は、ノード情報を管理するノードリスト221、スナップショットを取得するスナップショット取得部222、スナップショットを確認するスナップショット確認部223、スナップショットを削除するスナップショット削除部224、転送制御情報を送信する制御情報送信部225、およびそれらを管理するスナップショット制御部226を持つ。
【0033】
スナップショットを受信するスナップショット受信部230、スナップショトを送信するスナップショット送信部231は、スナップショット制御プロセスの機能であっても良いし、ファイルシステムなどの外部機能であっても良い。
【0034】
ディスク装置240は、単数および複数のファイルシステム241を持ち、1つのファイルシステム上には複数のスナップショット242を構成することができる。
【0035】
[本実施形態の動作の説明]
■動作シーケンス
1.サーバプロセス
まず図2を参照し、各プロセス機能について説明する。サーバプロセス210は、システム開始時、管理対象ファイルシステム数分スナップショット制御プロセス220を起動する。管理対象ファイルシステムがx個あれば、スナップショット制御プロセス220もx個起動する。管理するスナップショット制御プロセス220のリストをスナップショット制御プロセスリスト212に保存する。
【0036】
スナップショット制御プロセス220が意図せず停止した場合は、プロセスを再起動する。システム停止時、スナップショット制御プロセスリスト212を参照し、起動したx個のスナップショット制御プロセスを停止する。
【0037】
2.スナップショット制御プロセス
2.1.先頭ノードのスナップショット送信シーケンス
次に図2、図3、図7、図8を参照し、先頭ノードの動作シーケンスについて説明する。スナップショット制御プロセス220の各処理はスナップショット制御部226(以降、制御部226)が制御する。
【0038】
制御部226は、定期的に、あるいはファイルシステムに書き込みがあったことを契機に、スナップショット取得部222に対してスナップショット取得要求を命令する。スナップショット取得部222はファイルシステム241に対してスナップショット取得を実行する。
【0039】
スナップショットを取得すると、ファイルシステム241には今回送信分スナップショット(n)が保存され、前回送信分は、前回送信分スナップショット(n-1)として保存される。制御部226は、スナップショット送信部231に対して、子ノードへの今回送信分スナップショット(n)の送信要求を命令する。スナップショット送信部231は、送信要求を受信すると、当該スナップショットを子ノードへ送信する。
【0040】
スナップショット(n)の送信が完了すると、制御部226は制御情報送信部225を経由して、子ノードへの今回分スナップショット(n)の転送要求を送信する。サーバプロセス210の制御情報送受信部211は子ノードからの転送要求結果を受信し、当該スナップショット制御プロセス220の制御部226に結果を伝える。転送要求結果が成功の場合は、次のスナップショット取得転送サイクルに移る。転送要求結果が失敗の場合は、前回送信分スナップショット(n-1)および今回送信分スナップショット(n)を保存する。
【0041】
2.2.中間ノードのスナップショット転送シーケンス
次に図2、図3、図7、図9を参照し、中間ノードの動作シーケンスについて説明する。スナップショット制御プロセス220の各処理はスナップショット制御部226(以降、制御部226)が制御する。
【0042】
スナップショット受信部230はスナップショット(n)を受信すると、ファイルシステム241にスナップショットを適用する。これにより、親ノードと自ノードのファイルシステム241の同期がとられる。
【0043】
次にサーバプロセス210の制御情報送受信部211が、転送要求を受信し、制御部226に伝える。制御部226が転送要求を受信すると、スナップショット確認部223に対して、スナップショット確認要求を命令する。スナップショット確認部223は当該スナップショットが保存されているかどうかファイルシステム241を確認する。保存されていれば、制御部226はスナップショット送信部231にスナップショット送信要求を命令する。この送信要求は非同期で実行され、送信要求命令後は送信完了を待たずに処理を戻す。制御部226はサーバプロセス210の制御情報送受信部211を経由して、転送要求結果を親ノードに送信する。
【0044】
スナップショット(n)の送信が完了すると、制御部226は制御情報送信部225を経由して、子ノードへ今回送信分スナップショット(n)の転送要求を送信する。サーバプロセス210は子ノードからの転送要求結果を受信し、当該スナップショット制御プロセス220の制御部226に結果を伝える。転送要求結果が成功の場合は、制御情報送信部225を経由して、前回送信分スナップショット(n-1)の削除要求を親ノードに命令する。転送要求結果が失敗の場合は、前回送信分スナップショット(n-1)および今回送信分スナップショット(n)を保存する。
【0045】
次に図2、図4、図7、図9を参照し、中間ノードがスナップショット送信中にスナップショットを受信した場合のシーケンスを説明する。サーバプロセス210の制御情報送受信部211が、転送要求を受信し、制御部226に伝える。このときスナップショット送信中に制御部226が転送要求を受信すると、スナップショット確認部223に対して、スナップショット確認要求を命令する。このとき、前回受信分スナップショット(n+1)が存在していなければ、当該の今回受信分スナップショットが保存されていることを確認し、制御部226はサーバプロセス210の制御情報送受信部211を経由し、転送要求結果を親ノードに送信する。前回受信分スナップショット(n+1)が存在していれば、当該の今回受信分スナップショットが保存されていることを確認し、制御部226はスナップショット削除部224に前回受信分スナップショット(n+1)削除要求を命令する。この場合スナップショット(n)を送信中なので、スナップショット削除部224は、前回受信分スナップショット(n+1)と今回受信分スナップショット(n+2)とをマージしたデータで、今回受信分スナップショット(n+2)を置き換え、当該スナップショット(n+1)の削除を実行する。加えて、制御情報送信部225を経由し、前回受信分スナップショット(n+1)の削除要求を親ノードに命令する。処理完了後、制御部226はサーバプロセス210の制御情報送受信部211を経由し、転送要求結果を親ノードに送信する。
【0046】
2.3. 末端ノードのスナップショット受信シーケンス
次に図2、図3、図7、図10を参照し、末端ノードの動作シーケンスについて説明する。スナップショット制御プロセス220の各処理はスナップショット制御部226(以降、制御部226)が制御する。
【0047】
スナップショット受信部230はスナップショット(n)を受信すると、ファイルシステム241にスナップショットを適用する。これにより、親ノードと自ノードのファイルシステム241の同期がとられる。
【0048】
次にサーバプロセス210の制御情報送受信部211が、転送要求を受信し、制御部226に伝える。制御部226が転送要求を受信すると、スナップショット確認部223に対して、スナップショット確認要求を命令する。スナップショット確認部223は当該スナップショットが保存されているかどうかファイルシステム241を確認する。このとき、転送する子ノードが存在しないので、転送処理は実行しない。保存されていれば、制御部226はスナップショット削除部224に前回受信分スナップショット(n-1)削除要求を命令する。スナップショット削除部224は、当該スナップショットの削除を実行する。次に制御情報送信部225を経由し、前回受信分スナップショット(n-1)の削除要求を親ノードに命令する。処理完了後、制御部226はサーバプロセス210の制御情報送受信部211を経由し、転送要求結果を親ノードに送信する。
【0049】
2.4.共通シーケンス
取得転送サイクルとは非同期で、サーバプロセス210の制御情報送受信部211は子ノードから前回送信分スナップショット(n-1)の削除要求を受信する。受信した場合、当該スナップショット制御プロセス220の制御部226に削除要求を命令し、制御部226はスナップショット削除部224に当該スナップショット削除要求を命令する。スナップショット削除部は、当該スナップショットの削除を実行する。当該スナップショットの削除とは、管理情報であるスナップショットを削除するということで、ファイルシステムの実データを削除するということではない。送信中スナップショットが存在した場合は、段落0045にあるようにマージ処理を実行する。
【0050】
取得転送サイクルとは非同期で、サーバプロセス210の制御情報送受信部211はノードステータス変更要求を受信する。受信した場合、当該スナップショット制御プロセス220の制御部226にノードステータス変更要求を命令し、制御部226はノードリスト221の当該ノードステータスを変更する。
【0051】
3.ノード離脱時のシーケンス
図5を参照し、ノード離脱時のシーケンスを説明する。図5の例では中間ノード2から子ノード3への転送中にノード3がノード群から離脱した場合のシーケンスである。スナップショット送信中にノード3がノード群から離脱(例えば、ノードダウン)した場合、送信中スナップショット(n)および前回送信分スナップショット(n-1)を削除しないよう保存し、ノードリストのノード3のステータスを異常状態にする。また、親ノード1に対して当該スナップショット保存およびノード3のステータス変更要求を送信する。
【0052】
このように、前回送信分スナップショット(n-1)および送信中スナップショット(n)の両方を保存する。この2つのスナップショットを保存する理由は、ノード3へスナップショット送信が完了したかどうかノード3離脱時点では不明なためである。離脱したノード3がノード群へ復帰する時に、ノード3の持つ最新のスナップショットは、ノード2、ノード1が保存しておいた2つのスナップショットのいずれかとなり、そのスナップショットを起点に再同期することが可能になる。
【0053】
スナップショット保存後は、サイクル処理を継続する。ノード2は次のプライオリティの子ノードが存在すればスナップショット転送を行う。図5の例では、ノード2に子ノードが存在しないため、ノード2はノード群の末端ノード機能で動作する。
【0054】
4.ノード復帰時のシーケンス
次に図6を参照し、ノード復帰のシーケンスを説明する。図6の例ではノード3がノード2に対して復帰要求を送信した場合のシーケンスである。ノード3は自身の持つ最新スナップショット(n-1)を起点に、ノード2に対し復帰要求を送信する。ノード2は復帰要求を受信すると、保存スナップショット(n-1)を起点に前回受信分スナップショット(n)までの差分同期を実行する。
【0055】
この差分同期とは非同期で、ノード1からノード2へスナップショットが送信され、サイクル処理を実行する。このとき、差分同期実行中は、前回受信分スナップショット(n)は削除対象から外れる。
【0056】
ノード2とノード3との差分同期が完了後、ノード2は中間ノードに昇格、ノード3を末端ノードとしてノード群に加える。また、ノード3のスナップショット(n-1)およびスナップショット(n-2)を削除、親ノード2に対し保存スナップショット(n-1)および保存スナップショット(n-2)の削除要求およびステータス変更要求を送信する。
【0057】
ノード2は、保存スナップショットの削除要求およびステータス変更要求を受信すると、当該スナップショットを削除し、ノード3のステータスを正常に変更する。処理が完了すると、親ノード1に対して当該スナップショットの削除要求およびステータス変更要求を送信する。
【0058】
ノード1は、保存スナップショットの削除要求およびステータス変更要求を受信すると、当該スナップショットを削除し、ノード3のステータスを正常に変更する。このとき、削除処理とは非同期でノード1とノード2間のサイクル処理は継続している。
【0059】
差分同期完了後、ノード2がスナップショット(n+2)の転送要求を受信した場合、当該スナップショットが保存されているかどうかファイルシステムを確認し、保存されていれば、前回受信分スナップショット(n+1)の削除を実行し、親ノード1に対して前回受信分スナップショット(n+1)の削除要求を送信する。処理完了後、ノード3へスナップショット(n+2)を送信する。この送信は非同期で実行され、転送要求の処理結果を親ノード1に返す。
【0060】
送信中のスナップショット(n+2)の送信が完了すると、ノード2からノード3に対してスナップショット(n+2)の転送要求を送信する。ノード3で当該スナップショットが保存されていることを確認し、前回受信分スナップショット(n)を削除する。ノード2への転送要求結果に加えて、ノード3からノード2に対し前回受信分スナップショット(n)の削除要求を送信する。ノード2は転送要求結果を受信すると、親ノード1に対して前回送信分スナップショット(n)の削除要求を送信する。以上の処理を実行し、全ノードで同期がとれた定常状態に戻る。
【0061】
■補足
1.転送要求パケットについて
図11を参照し、転送要求パケットについて説明する。転送要求パケットには次を含む。
コンピュータ装置上で一意なファイルシステム名またはそれを示すIDなど。
転送対象のスナップショット名またはそれを示すIDなど。
送信元ノード名またはIPアドレスなど送信元ノードを示すもの。
既に受信したノードに転送要求することを防止する未送信ノードビット。
【0062】
未送信ノードビットは、ビットがノード順になっており、先頭ノードが転送要求送信時に、送信すべきノードのビットを1にする。中間ノードは転送時に自身のビットを0にして、子ノードへ転送要求を送信する。
【0063】
2.ノードリストについて
図11を参照し、ノードリストについて説明する。各ノードはそれぞれノード群に登録されているノードリストを保持するが、全ノードのステータス管理を行うのではなく、自身の親ノードおよび子ノードのステータスのみ管理する。子ノードに対してデータを送信できなかった場合、ノード群から離脱したとみなし、子ノードのステータスを異常状態にする。親ノードからの通信が異常終了した場合は、親ノードのステータスを異常状態にする。また、ノード群から離脱したノードからのステータス変更要求を受けて、当該ノードのステータスを正常にする。
【0064】
3.ネクストホップについて
図12を参照し、ネクストホップについて説明する。転送要求パケットの未送信ノードビットのサイズ次第でデータ転送可能ノード数が決まる。ネクストホップアドレスを設定している場合は、ノード群の末端ノードは中間ノード機能で動作し、ネクストホップアドレスへスナップショットを転送する。通常、ネクストホップアドレスは次のノード群の仮想IPアドレスを指定する。物理IPアドレスを指定しても良い。次のノード群のネクストホップアドレスを持つノードは中間ノード機能で動作する。
【0065】
図12の場合、先頭ノード1-1のスナップショットをノード1-4まで順に転送し、ノード1-4は中間ノード機能で動作し、ネクストホップアドレスへ転送する。ネクストホップアドレスを持つノード2-1は中間ノード機能で動作し、スナップショットをノード2-4まで順に転送する。ノード2-4は末端ノードとして動作する。
【0066】
次に図13を参照し、ノード異常が発生した場合について説明する。図13は、ノード群の末端ノードが離脱、および次のノード群の先頭ノードが離脱した場合の例である。ノード1-4が離脱しているので、ネクストホップへの転送処理はノード1-4の親にあたるノード1-3が代行する。ノード2-1が離脱しているので、ネクストホップアドレスはノード2-1の子ノードにあたるノード2-2が保持し、処理を代行する。
【0067】
[本実施形態の効果]
1.複数ノードでデータ同期をとることができ、単数または複数ノードに障害が発生した場合も、残りのノードでデータを利用することができる。
2.スナップショット機能を持つあらゆるファイルシステムについて本発明を利用することが出来る。
【0068】
[他の実施形態]
1.スナップショット機能を持つ様々なファイルシステムが本発明の対象となる。
2.転送対象はファイルシステムのスナップショットだけでなく、全ての差分保存機能を持つデータが対象となる。
3.データは暗号化して送信することもできる。
4.データは圧縮して送信することもできる。
5.障害発生後のアプリケーション切り替えにHAクラスタソフトウェアを利用することで、業務停止時間を最小限にすることができる。
【0069】
以上本発明の実施形態について説明したが、本発明は以上の実施形態にのみ限定されず、その他各種の付加変更が可能である。また、本発明の分散ファイルシステムを構成する計算機ノードの制御手段は、コンピュータとプログラムとで実現することができる。プログラムは、磁気ディスクや半導体メモリなどのコンピュータ読み取り可能な記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータ上に第1の実施形態における制御手段などを実現する。
【符号の説明】
【0070】
110、120、130…計算機ノード
111…ファイルシステム(マスター)
112…増分データ生成手段
113、123、133…記憶手段
114、124、134…制御手段
121、131…ファイルシステム(複製)

【特許請求の範囲】
【請求項1】
第1のファイルシステムを有する第1の計算機ノードと、前記第1の計算機ノードに通信可能に接続され、前記第1のファイルシステムの複製である第2のファイルシステムを有する第2の計算機ノードと、前記第2の計算機ノードに通信可能に接続され、前記第1のファイルシステムの複製である第3のファイルシステムを有する第3の計算機ノードとを有し、
前記第1の計算機ノードは、変更および追加がある毎または定期的に前記第1のファイルシステムのデータのうち前回から変更および追加されたデータを増分データとして生成する増分データ生成手段と、第1の記憶手段と、前記増分データ生成手段で生成された前記増分データを前記第1の記憶手段に記憶すると共に前記第2の計算機ノードに送信する第1の制御手段とを有し、
前記第2の計算機ノードは、第2の記憶手段と、前記第1の計算機ノードから受信した前記増分データを前記第2の記憶手段に記憶すると共に前記第2のファイルシステムに反映し、さらに前記第3の計算機システムに送信する第2の制御手段とを有し、
前記第3の計算機ノードは、第3の記憶手段と、前記第2の計算機ノードから受信した前記増分データを前記第3の記憶手段に記憶すると共に前記第3のファイルシステムに反映する第3の制御手段とを有し、
前記第2の制御手段は、前記第3の計算機ノードに前記増分データを送信している最中に、前記送信中の前記増分データ以降の複数回分の前記増分データが前記第2の記憶手段に蓄積された場合、前記複数回分の前記増分データを1つの増分データにマージする
ことを特徴とする分散ファイルシステム。
【請求項2】
前記増分データ生成手段は、変更および追加がある毎または定期的に前記第1のファイルシステムのイメージであるスナップショットを取得し、今回取得したスナップショットと前回取得したスナップショットとの差分を前記増分データとして算出する
ことを特徴とする請求項1に記載の分散ファイルシステム。
【請求項3】
前記増分データ生成手段が生成する前記増分データは、前記第1のファイルシステムを構成するブロックのうち、前回から変更および追加のあったブロックのみを有する
ことを特徴とする請求項1または2に記載の分散ファイルシステム。
【請求項4】
前記第2の制御手段は、前記第2の記憶手段に蓄積される前記複数回分の前記増分データのうち、一番早く受信した増分データを第1の増分データ、該第1の増分データの次に受信した増分データを第2の増分データとするとき、前記第1および第2の増分データの何れか一方にのみ含まれるブロックを含み、双方に含まれるブロックについては前記第2の増分データのブロックのみを含む増分データを、前記第1および第2の増分データをマージした増分データとして生成する
ことを特徴とする請求項1ないし3の何れかに記載の分散ファイルシステム。
【請求項5】
前記第2の制御手段は、前記第2の記憶手段に蓄積される前記複数回分の前記増分データに、前記第2の増分データの次に受信した第3の増分データが含まれる場合、前記第1および第2の増分データをマージした増分データに、さらに前記第3の増分データをマージする
ことを特徴とする請求項4に記載の分散ファイルシステム。
【請求項6】
第1のファイルシステムを有する第1の計算機ノードと、前記第1の計算機ノードに通信可能に接続され、前記第1のファイルシステムの複製である第2のファイルシステムを有する第2の計算機ノードと、前記第2の計算機ノードに通信可能に接続され、前記第1のファイルシステムの複製である第3のファイルシステムを有する第3の計算機ノードとを有し、前記第1の計算機ノードは増分データ生成手段と第1の記憶手段と第1の制御手段とを有し、前記第2の計算機ノードは第2の記憶手段と第2の制御手段とを有し、前記第3の計算機ノードは第3の記憶手段と第13制御手段とを有する分散ファイルシステムが実行する多重化方法であって、
前記第1の計算機ノードの前記増分データ生成手段が、変更および追加がある毎または定期的に前記第1のファイルシステムのデータのうち前回から変更および追加されたデータを増分データとして生成し、
前記第1の計算機ノードの前記第1の制御手段が、前記増分データ生成手段で生成された前記増分データを前記第1の記憶手段に記憶すると共に前記第2の計算機ノードに送信し、
前記第2の計算機ノードの前記第2の制御手段が、前記第1の計算機ノードから受信した前記増分データを前記第2の記憶手段に記憶すると共に前記第2のファイルシステムに反映し、さらに前記第3の計算機システムに送信し、
前記第3の計算機ノードの前記第3の制御手段が、前記第2の計算機ノードから受信した前記増分データを前記第3の記憶手段に記憶すると共に前記第3のファイルシステムに反映し、
前記第2の計算機ノードの前記第2の制御手段が、前記第3の計算機ノードに前記増分データを送信している最中に、前記送信中の前記増分データ以降の複数回分の前記増分データが前記第2の記憶手段に蓄積された場合、前記複数回分の前記増分データを1つの増分データにマージする
ことを特徴とする分散ファイルシステムにおける多重化方法。
【請求項7】
上流側計算機ノードと下流側計算機ノードとに通信可能に接続され、
マスターファイルシステムの複製である複製ファイルシステムと、
記憶手段と、
前記マスターファイルシステムのデータのうち前回から変更および追加されたデータを含む増分データを前記上流側計算機ノードから受信して前記記憶手段に記憶すると共に前記複製ファイルシステムに反映し、さらに前記下流側計算機ノードに送信する制御手段であって、前記下流側計算機ノードに前記増分データを送信している最中に、前記送信中の前記増分データ以降の複数回分の前記増分データが前記記憶手段に蓄積された場合、前記複数回分の前記増分データを1つの増分データにマージする制御手段と
を有することを特徴とする計算機ノード。
【請求項8】
上流側計算機ノードと下流側計算機ノードとに通信可能に接続され、マスターファイルシステムの複製である複製ファイルシステムと、記憶手段とを有するコンピュータを、
前記マスターファイルシステムのデータのうち前回から変更および追加されたデータを含む増分データを前記上流側計算機ノードから受信して前記記憶手段に記憶すると共に前記複製ファイルシステムに反映し、さらに前記下流側計算機ノードに送信する制御手段であって、前記下流側計算機ノードに前記増分データを送信している最中に、前記送信中の前記増分データ以降の複数回分の前記増分データが前記記憶手段に蓄積された場合、前記複数回分の前記増分データを1つの増分データにマージする制御手段
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate