JP4077172B2 - ファイルレプリケーションシステム、ファイルレプリケーション制御方法及び記憶媒体 - Google Patents

ファイルレプリケーションシステム、ファイルレプリケーション制御方法及び記憶媒体 Download PDF

Info

Publication number
JP4077172B2
JP4077172B2 JP2001131571A JP2001131571A JP4077172B2 JP 4077172 B2 JP4077172 B2 JP 4077172B2 JP 2001131571 A JP2001131571 A JP 2001131571A JP 2001131571 A JP2001131571 A JP 2001131571A JP 4077172 B2 JP4077172 B2 JP 4077172B2
Authority
JP
Japan
Prior art keywords
node
file
request
update
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001131571A
Other languages
English (en)
Other versions
JP2002014861A (ja
Inventor
慶武 新開
直美 吉沢
賢輔 塩沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001131571A priority Critical patent/JP4077172B2/ja
Publication of JP2002014861A publication Critical patent/JP2002014861A/ja
Application granted granted Critical
Publication of JP4077172B2 publication Critical patent/JP4077172B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【発明の属する技術分野】
本発明は、複数のコンピュータ間にファイルの複製を動的に配置し、負荷分散をはかり性能向上を実現すると共に信頼性を向上させるファイルレプリケーション技術に関する。
【従来の技術】
従来、ネットワークで接続されている複数の計算機システム(ノード)間に同一のデータを動的に配置し、信頼性を向上させる方式として、ファイルレプリケーション技術が知られている。
ファイルレプリケーションでは、各ノードはあるノード上のファイルが更新されたタイミングでファイルの更新内容を知り、予め定義された他のノード群に変更されたデータのみを伝播してゆくことによってファイルを更新させる。
更新内容の伝播の仕方としては、更新命令の完了がユーザプログラムに通知された時点で、他ノードへの伝播が完了していることを保証する同期型と、システム内に変更内容を蓄積し、適当なタイミングで他ノードへ伝播する非同期型の伝播が知られている。このうち非同期型の場合は、応答性が良く処理性能は高いが、更新命令の完了がユーザプログラムに通知された時点で、他ノードに更新内容が伝わっている保証はない。
一方従来のファイルレプリケーション方式では、各ノードが保持するデータの同一性あるいは一貫性が保証されていないため以下の問題が発生する。
まず非同期型の場合、複数のノードが関連する異なるファイルを順に更新した場合、更新の伝播の順序性が保証されない。その為、参照だけを行うノードだけからみていても、新旧入り交じった一貫性の無いデータが見えてしまうという本質的な欠点を抱えている。
また複数のノードが同じファイルをほぼ同時に更新(実時間ではかなりずれている場合を含む)すると、各ノードが異なったデータを保持することになり、結果的にファイルが破壊される。
このデータの破壊については、非同期伝播を用いた場合のみならず同期型伝播を採用してた場合においても、2つのノードがほぼ同じ時刻に更新した場合にはファイルが破壊されることがある。例えば同じファイルの重複する領域をノードAとノードBの2つのノードがほぼ同じ時刻に更新した場合、ノードAとBが異なるデータを保持する結果になることがある。この場合、その後の処理においては各ノードは自身が保持する互いに異なるデータに基づいて処理を続行するのことになるので、最終的には矛盾した処理がノードAとノードBで行われることになる。
この為、従来のファイルレプリケーション方式では、スタティックに決まる1つのノードにのみファイルの更新処理を許し、他ノードに対しては参照のみを許すという制約を与えていた。この方式によるものとしては、特開平9−91185号「分散コンピューティングシステム」がある。ここで提案されている方式では、自ノードのデータを更新あるいは参照できることを示すWrite トークンと、自ノードのデータを参照のみできることを示すReadトークンを用意し、Write トークン保持ノードが存在する時には、他のノードのいずれもRead/Writeトークンを保持していないように制御し、かつ更新要求を全て同期型で行うことで、同時更新に伴う矛盾を解消している。
【発明が解決しようとする課題】
しかし上記公報に開示されている方式では、ファイルの更新が常に同期型で行われるため、応答性の問題を持つ。また、同じファイルを同時にアクセスする複数のノードが存在し、かつその中に1つ以上がファイルの更新を行うものであった場合、自ノードのデータをアクセスする為に必要となるトークンの取り戻し処理をアプリケーションプログラムがIO要求を発行する度に行わなければならず、オーバヘッドが非常に大きくなってしてしまう。
また、この方式を含め従来のレプリケーション方式では、アクセスは常に自ノードが保持しているデータに対して行われることを前提としているため、新規ノードを系に組込む場合、新たに組込まれたノードは関連する全てのファイルのデータを系内の他のノードから自ノードに一括して取込んだ後でないとデータの一貫性が保証されない。この為、新規ノードは系に加わっても直には業務に移れない、新規参入ノードへのデータ取込み中既存系の更新が止まる、即ち長時間通常業務が停止するという欠点を持っていた。
本発明は、最新データを保持しているノードを特定し、そのノードにRead/Write要求を伝播してファイルアクセスを依頼することにより、新規ノード参入時の稼動中業務への影響を最小化することが出来るファイルレプリケーションシステムを提供することを課題とする。
また非同期型の伝播においても複数ノードでの同時更新が可能な高速レプリケーションを実現するファイルレプリケーションシステムを提供することを課題とする。
更に本発明では、非同期に送られる更新要求のファイルへの反映を、Write 要求のノード内順序性を示す更新番号とそのWrite 要求が前提とする他のノードの更新番号からなる依存ベクタを用いて制御することで、系縮退時でもファイル更新の論理的順序性を保証するファイルレプリケーションシステムを提供することを課題とする。
【課題を解決するための手段】
図1は本発明によるノードの原理図である。
本発明によるノード1は、他のノードとネットワークによって接続され、該他のノードとの共用ファイル6を保持することを前提としており、IO要求インタセプト部2及びトークン管理手段3を備える。
トークン管理手段3は、上記共用ファイル6に対するアクセス要求を管理する。
IO要求インタセプト手段2は、自ノード内で生じた共用ファイル6に対するアクセス要求に対し、上記トークン管理手段に該共有ファイルへのアクセス許可を求め、許可が得られると共用ファイル6へアクセスする。
上記トークン管理手段3は、上記IO要求インタセプト手段2からのアクセス許可に対し、既に他のノードが上記共用ファイルに対する更新許可を保持する時、該更新許可を保持するノードを上記IO要求インタセプト手段に通知し、上記IO要求インタセプト手段は、上記アクセス許可が得られない時、該更新許可を保持するノードに上記共用ファイルへのアクセス処理を依頼する。
これにより、各ノード1は共用ファイル6へのアクセスを、最新のデータを保持しているノードのデータに対して行え、また各ノードからは一貫性の有るデータが見える。
ノード1は、また上記共用ファイル6への更新時に更新内容を他の更新との依存関係を示す情報と共に他のノードへ伝播する変更データ通知手段4と、上記依存関係を示す情報に基づいて、更新の順序性保証をしつつ上記更新内容を上記共用ファイルに反映させる受信データ処理手段5を更に備える構成とすることも出来る。
この構成により、ファイルの更新内容が更新順と前後して到着しても、共用データ6は、順序性が保証された更新が行われる。
更にノード1は、新規参入時に自ノードの保持する共用ファイル6のデータの復元処理を行う系構成管理手段を更に備える構成とすることも出来る。この構成の場合、上記ファイルの復元処理中に、自ノード内で上記共用ファイルに対するアクセス要求が生じた時、上記IO要求インタセプト手段2は、上記共用ファイル6を共用している他のノードにアクセス処理を依頼する。
これの構成により、新規参入したノードは共用ファイルの更新処理の完了を待たずに他の処理に移れる。
【発明の実施の形態】
以下に本発明に於ける一実施形態について図面を参照しながら説明する。
本実施形態のファイルレプリケーションシステムは、複数のノードがネットワークに接続されて系を構成し、系内の各ノードがファイルを共用する構成を前提としている。
まず本実施形態での系の構成について説明する。
図2は本実施形態での系及び系の再構成を説明する図である。
本実施形態で系とは、同一のファイル群(以下各系で共用している1乃至複数のファイル(群)をオブジェクトグループという)を共用しているノードのグループを指す。例えば図2では、オブジェクトグループa,dを共用しているノードA、C、E及びFで構成される系a、オブジェクトグループbを共用しているノードA、B、及びDで構成される系b、オブジェクトグループcを共用しているノードG、H及びIで構成される系cの3つの系が構成されている。
この系内のノードの内、1つのノードが系内の共用ファイルへアクセスするためのRead/Write トークンを管理している。このトークンを管理するノードには、系を構成する際に、予め決められているノードがなるか、特定の条件、例えば最小ネットワークアドレスを持つものが動的に選ばれる。
また新規のノードが系に加わったり、構成要素となっているノードやネットワークの障害等で系の縮退が生じた時、系の再構成が行われる。例えば、図2の場合系aではノードEの障害によりノードE及びFがネットワークから脱落して残りのノードによる系の再構成が行われている。また系cでは、ノードJがJoinコマンドによって新規に系に加わったことにより系の再構成が行われる。この系の再構成の際には、新規参加ノードの共用ファイルの一貫性(consistency)保証のため等価性回復処理が行われる。
尚ノードの系からの離脱は、障害などによって生じるものの他、離脱を行うノードが系内の他のノードにメッセージを送信して自律的に行うものが有る。
図3は本発明に於けるノード間の基本動作を説明する図である。
図3(a)は、オブジェクトグループに対してアクセスする際の、ノード間の処理を示す図で、同図では同一の系にノードA〜Eの5つのノードあり、そのうちノードAがトークン管理ノードとする。各ノードはユーザプログラムからオブジェクトグループ内のファイルに対するアクセス要求が生じると、ノードAにRead/Writeトークンの獲得要求を発行する。
これに対しノードAは、他のノードに既にWrite トークンを渡していなければ、要求されたトークンを与える。またもし既にWrite を他のノードに渡していれば、トークン獲得失敗通知と共にWrite トークンを保持しているノードを通知する。トークン獲得失敗を通知されたノードは、ファイルへのRead/Write要求をこの通知されたノード対して依頼し、Write トークンを保持しているノードは、ファイルの順序性を保つようにこれらの要求を処理してゆく。同図の場合ノードB、CがRead要求(参照要求)を、ノードDがWrite 要求(更新要求)を発行した時点でWrite トークンはEが保持しているので、ノードAは各ノードからのトークン獲得要求に対して、獲得失敗と共にノードEがWrite トークンを保持していることを通知する。これに対して各ノードはノードEに対してファイルへのRead/Write要求を発行し、ノードEはファイルの順序性を保持しながらこれらの要求に対しファイルへのRead/Writeを行う。
この様に本発明では、共用ファイルへのアクセス要求が生じたノードに対しWrite トークン保持ノードの通知という形で、その共用ファイルに対する最新のデータを保持するノードが通知される。よって、共用ファイルをアクセスするノードは常に最新のデータに対してアクセスすることが出来る。
また各ノードは、トークンの獲得に失敗してもトークンを獲得できるまで待つことなく処理を続行できる。更に複数のノードによる同一のファイルに対する同時アクセスを可能としている。この為、高い反応性を持つシステムを構築することができる。
またファイルへの変更処理は、他のノードで発生した更新要求に対する処理もWrite トークンを持つ1つのノードが行うので、各ノードからは一貫性のあるデータが見える。
更に同時に生じたアクセス要求を処理する際、それぞれに対するトークンの回収処理を行う必要が無く、オーバヘッドを小さくすることが出来る。
次に本発明に基づいたシステムに於ける系への新規参入時の処理について説明する。
図3(b)は、系に新たに加わったノードの系内の他のノードからとの処理を表す図である。
本発明では、各ノードはデータの最新性を示す情報を保持しており、新規参入ノードはこの情報を比較して、自己が系から離脱している間にデータが更新された時のみ復元処理を行う。また新規ノードはデータの復元処理中に、ユーザプログラムを起動し通常業務に入る。そしてユーザプログラムからファイルへのアクセス要求が発生した場合には、系内の他のノードにRead/Write要求を発行し、ファイルへのアクセス処理を依頼する。図3(b)では、系に新規参入したノードDはファイルの復元処理の完了を待たずにユーザプログラムを起動して、ファイルの復元処理中にユーザプログラムからオブジェクトグループ内のファイルへのアクセス要求が生じると、このアクセス要求をWrite トークンを保持してるノードEに依頼している。
この様に本発明では、新規ノードはファイルの復元処理の完了を待たずに、ファイルへのアクセスを行うことが出来るので、系への参入後直ちにユーザプログラムを起動して通常処理を開始することが出来る。
以下に上記基本原理を実現するための一実施形態について図面を参照しながら説明する。
図4は本実施形態の系を構成する複数のノードの内の1つの構成を示すブロック図である。
システム内の複数のディスク装置上に置かれるオブジェクトグループを共用する各ノード10は、系構成管理部11、IO要求インタセプト部12、トークン管理部13、変更データ通知部14及び受信データ処理部15が配置される構成となっている。これらの各構成要素は、各ノード内でメモリ上に展開されるプログラムによって実現される。また処理速度を得る為、一部をハードウエアにより実現する構成としてもよい。また、ノード10のローカルディスク装置18には、同一の系内で共用している共用ファイル19及び系構成の為の定義情報である環境定義・状態情報20を記憶している。
尚これらの構成要素の内、IO要求インタセプト部12はオペレーションシステム(OS)の一部として動作し、ユーザプログラム17が発行した入出力命令を受取り、OS内のファイルシステムにこの入出力命令を伝える役割をする。
尚、本実施形態では、IO要求インタセプト部12をOSのファイルシステム16と分離した構成としているが、ファイルシステム16内に含める構成とすることも可能である。また他の構成要素は、OS内の要素として構成としてもよいし、アプリケーションプログラムとしてOS上に実装する構成としてもよい。
以下、各構成要素について詳細に説明する。
[系構成管理部]
系構成管理部11は、ノード起動時や系再構成時における系構成状態の監視、対象ファイルや伝播モードについての設定、ノード障害などに伴う系の縮退や新規ノードの参入等系の状態管理、系再構成時の他ノードとの同期(同期回復)、新規参入ノードの初期同期(等価性回復)、ノードの状態の監視及びオペレータとのインタフェース処理を司どる部分である。
また系構成管理部11は、Joinコマンドにより系に加わりLeave コマンドにより系から脱退するまで、後述する系を構成するノードのノード障害監視処理を行う。
システム立ち上げの一環としてファイルレプリケーションシステムを実現するプログラムが起動されると、まず環境定義・状態ファイルが読み込まれ、対象とするオブジェクトグループに属する複数のファイル群、そのオブジェクトグループを配置するノード群、及び更新データの伝播モードについての情報を得る。
この環境定義・状態ファイルは、各オブジェクトグループ毎に構成された系状態テーブルによって構成されている。
図5は系状態テーブルの構成例を示す図である。
各系状態テーブルは、オブジェクトグループ毎にそのオブジェクトグループの構成等の情報を記録したテーブルである。各系状態テーブルにはそのテーブルに情報が記憶されているオブジェクトグループを識別するオブジェクトグループ番号、系のバージョン番号、自己が前回整然停止したかどうかを表示する整然停止フラグ、系を構成する各ノードを特定する複数のノード番号とそのノードが前回整然停止したかどうかを示すフラグとからなる複数の配列で構成されるノード定義部、このオブジェクトグループに属する各ファイルを特定するオブジェクトグループ定義部及びこのオブジェクトグループに属するファイルの更新データ伝播モード(同期,半同期,非同期:これらの詳細については後述する)を指定する情報によって構成されている。尚「整然停止」とは、例えば正月休み等でサービスを休止する時に、系内のノードが同期を取って同時にそのオブジェクトグループに対する処理を停止する系からの離脱の仕方を指す。
尚図5中の*部分の情報は、初期値はユーザが設定し、以降系構成管理部11が必要に応じて変更する情報である。また*が記されていない部分は、ユーザは設定を行わず系構成管理部11のみが設定、変更する情報であることを示している。
環境定義・状態情報20は、複数の系状態テーブルからなる構成であり、複数のオブジェクトグループそれぞれに対して設定を行うことが可能である。よって、オブジェクトグループ毎に異なるノード群や更新データの伝播モードを設定することが出来る。例えば、図2において、ノードAは、オブジェクトグループa、b及びdの3つのオブジェクトグループに対する系状態テーブルを持ち、それぞれに異なったノード群(オブジェクトグループa及びdにはノードC、D、E及びF、オブジェクトグループbにはノードB、C及びD)と転送方式(同期,非同期,半同期)を設定することが出来る。そして、データの重要度に応じて、例えば、最も重要なオブジェクトグループaには同期モード、重要度の低いcには非同期モード、その中間のオブジェクトグループbには半同期モード等のそれぞれのオブジェクトグループ毎に異なった設定を行うことが出来る。
環境設定部は、この環境定義・状態情報20を読み込んで、メモリ上に内部制御表を各オブジェクトグループ毎に展開し、各構成要素にユーザが指定した設定を伝える。
この内部制御表は、ユーザが設定したオブジェクトグループの情報を保持するノードのメモリ上に展開されるテーブルで、例えば、図6の様な構成を取る。
図6の内部制御表は、各オブジェクトグループを特定するオブジェクトグループ番号、更新データのデータ伝播モード(同期,非同期,半同期)、状態フラグ、オブジェクトグループ定義部、ノード定義部、及び更新伝播送信キューと実反映遅延キューのエントリを示すポインタを記録している。このうちオブジェクトグループ定義部は、系状態テーブルのオブジェクトグループ定義部と同様、そのオブジェクトグループに属するファイル群を特定する先頭ファイルパス名の集合を保持しており、この中に特定されたパス名で始まるファイル群がこのオブジェクトグループに属することを示す。またノード定義部内のノード番号とstatusからなる配列は、このオブジェクトグループを配置するノード群とその状態(動作中,Join中等)を示している。尚更新伝播送信キューと実反映遅延キューについては後述する。
また状態フラグは、オブジェクトグループに属するファイルへのアクセス可否や、等価性回復中、系再構成中等の状態を表示するフラグの集合で、図4に示した各構成要素はこの状態フラグの対応ビットの1/0を切換えることよりこれらの状態を表示して他の構成要素に通知する。尚初期状態では、既に他のノードが系を作り、ファイルが更新されている可能性があるのでオブジェクトグループに属するファイルは全てアクセス不可の状態として設定される。
初期処理が完了すると、系構成管理部11はオペレータからオブジェクトグループに対する操作指令が投入されるのを待つ。
1)Joinコマンド投入
オペレータはオブジェクトグループに対する活性化を指示する場合、Joinコマンドを投入する。
このJoinコマンドが投入されると、系構成管理部11は、他のノードとメッセージをやり取りしてJoinコマンドと共に指定されたオブジェクトグループに対する系に加わる。またJoinコマンドに単独での系生成を許可することを示すsingle指定がされていた場合、もしこのオブジェクトグループに対して系が構成されていなければ新たな系を生成する。
図7は、Joinコマンド投入時の系構成管理部11による処理を示すフローチャートである。
Joinコマンドが投入されると、系構成管理部11は、まずJoinコマンドと共に指定されたオブジェクトグループを共用している他のノードに順にメッセージを送り(ステップS11)、返答を各ノードから受信する(ステップS12)。
各ノードからの返答から、対象としているオブジェクトグループに対して既に系を作っているものでないかどうかを調べ、その結果既に系を作成しているという返答が他ノードからあれば(ステップS13、YES)、そのノードにJOIN要求を送り既存系への参入処理を依頼する(ステップS14)。
この参入依頼に対し、ノードから参入失敗を通知する応答がされた場合(ステップS15、YES)、Join失敗をオペレータに通知し(ステップS16)、処理を終了する。また参入失敗の通知がなければ(ステップS15、NO)、後述の参入処理(ステップS17)を行った後、オペレータに成功応答を返す(ステップS18)。
またステップS12の各ノードからの応答から、そのオブジェクトグループに対して未だ系を作っているノードがいないと判断され(ステップS13、NO)、かつJoinコマンドのオプションでsingleが指定されていた場合(ステップS19、YES)、このノードは自身のみで系を作る。
この際、系構成管理部11は、まず、系状態テーブル内の情報を調べる。その結果、系状態テーブル中の整然停止フラグに整然停止が表示され自身が認識している最終の系状態が整然停止であると判断される時(ステップS20、YES)、一定時間受信待機し(ステップS21)、前回整然停止した時に共に系を構成していた他のノードが新規系への参入を依頼してくるのを待つ。そしてJOIN要求により系への参入を依頼してきたノードに対し、順次後述する図9のJOIN要求受け付け処理を行い、自己の系のバージョン番号を送信する。
この結果、全てのノードからREADY要求が到着したら(ステップS22、YES)、READY要求に対する応答として、COMPLETE応答を全ノードに返す(ステップS23)。また全てのノードからREADY要求が到着しなければ(ステップS22、NO)、READY要求に対する応答としてCONT応答をノードに返し(ステップS24)、更にREADY要求の到着を待つ。
ステップS23でREADY要求に対する応答を送信した後、あるいはステップS20で系状態テーブル内の整然停止フラグが前回の停止が整然停止でないことを示していた場合(ステップS20、NO)、環境定義・状態情報20の対応する系状態テーブルに記録されている系のバージョン番号をインクリメント(+1)して更新する(ステップS25)。そして、内部制御表の状態フラグをアクセス可能表示に変更して(ステップS26)、IO要求インタセプト部12に対応するオブジェクトグループへのアクセスが可能となったことを知らせる。そしてJoinコマンドに対する応答として処理完了をオペレータに通知して(ステップS27)処理を終了する。
またステップS19で、Joinコマンドのオプションとしてsingle指定がされていなかった場合には(ステップS19、NO)、Joinコマンドに対する応答としてオペレータにエラーを通知し(ステップS28)、処理を終了する。
2)参入処理
図8は、図7のステップS17の系構成管理部11の動作を示すフローチャートである。
JOIN要求による参入依頼に対し、参入失敗でなければ依頼先のノードから応答として系のバージョン番号が送信されてくる。この時系構成管理部11は、まず現在系を構成するノード情報から内部制御表の依頼元ノードに対応するstatusをJoin中表示に更新し(ステップS31)、次に応答で通知された既存系が保持しているバージョン番号と参入しようとしている自ノードが保持しているバージョン番号を比較する(ステップS32)。その結果、2つのバージョン番号が異なる場合には、自ノードが系から脱落している間にオブジェクトグループ内のファイルに対し変更が加えられた可能性があることを示しているので、整然停止表示をリセットし(ステップS41)、等価性回復処理を起動する(ステップS42)。また2つの系のバージョン番号が一致していても系状態テーブルの整然停止フラグが非整然停止を表示していた場合には(ステップS32、一致:ステップS33、NO)、自己のファイルは最新のデータのものでないので、やはりステップS42の等価性回復処理を起動する。そしてステップS42の等価性回復処理の起動後は、処理の終了を待たずに応答値として送信されてきた系のバージョン番号を系状態テーブルに設定し(ステップS43)た後、内部制御表の状態フラグをオブジェクトグループに対するアクセスが可能の表示に変更し(ステップS40)、処理を終了する。
また送信されてきた系のバージョン番号と系状態テーブル内に記憶されている系のバージョン番号が一致しており(ステップS32、一致)、かつ系状態テーブルの整然停止フラグが整然停止を表示しているなら(ステップS33、YES)、自ノードが保持しているオブジェクトグループのファイルは最新のデータものなのでファイルの更新は必要ない。よって後述するステップS42の等価性回復処理は行われず、ステップS34として系のバージョン番号を更新後、定期的にREADY要求を送り(ステップS35)、全ノードの参入が完了するのを待合わせる。
その結果READY要求に対する応答がCONT応答であれば(ステップS36、CONT)、一定時間後にREADY要求を再送し(ステップS37)、同じ処理を繰り返す。またREADY要求の応答がCOMPLETE応答であればステップS36、COMPLETE)、前回整然停止した時のノードが全て依頼元にREADY要求を行ったことになるので、応答で返される系を構成しているアクティブノードについての情報から、内部制御表のノード定義部の各ノードのstatusを動作中表示に変更する(ステップS38)。
この後、系状態テーブルの整然停止表示をリセットし(ステップS39)、内部制御表の状態フラグをオブジェクトグループがアクセス可能表示に変更し(ステップS40)、処理を終了する。
3)JOIN要求受付処理
図9は、JOIN要求受付処理時の系構成管理部11の動作を示すフローチャートである。
このJOIN要求受付処理は、図7のステップS14の新規参入依頼時に発行されたJOIN要求や、ステップS21の受信待機時に受け付けたJOIN要求に対する処理を示したものである。
JOIN要求を行ったノードから受け付けたノードの系構成管理部11は、JOIN要求と共に通知された依頼ノードの系のバージョン番号と系状態テーブル内の自身の系のバージョン番号とを比較する(ステップS51)。その結果両方のバージョン番号が一致しており(ステップS51、一致)、また整然停止フラグを参照して整然停止後の整然立ち上げ中なら(ステップS52、YES)、ステップS53としてJOIN要求に対する応答して自己の現在のバージョン番号を返答して処理を終了する。
JOIN要求と共に通知された情報から、2つの系のバージョン番号が一致しなかったり(ステップS51、不一致)、一致しても整然停止後の系への参加でないのならば(ステップS52、NO)、次に内部制御表のノード定義部を参照し、既にJoin中のノードが存在するかどうかを調べる(ステップS54)。その結果、既にJoin中のノードが存在していれば、応答として失敗を通知して(ステップS59)、処理を終了する。またJoin中のノードが他に存在しなければ(ステップS54、NO)、このJOIN要求により参入してきたノードに対応する内部制御表内のstatusを稼動中(アクティブ)、JOIN中(新規参入処理中)の表示に設定し(ステップS55)た後、他のアクティブな全ノードにJoin通知を送る(ステップS56)。そしてこのJoin通知に対する応答が全て返ってきた後に(ステップS57、YES)、系のバージョン番号を更新し(ステップS58)、JOIN要求に対する応答として現在の系のバージョン番号を返答して(ステップS53)、処理を終了する。
4)Join通知
図10は、図9のステップS56で送信されたJoin通知を受取ったアクティブなノードの系構成管理部11が行う処理を示すフローチャートである。
Join通知を受信すると、系構成管理部11は、ステップS61として内部制御表の、Join通知により通知された参入依頼をしているノードに対応するstatusを稼動中、Join中表示に設定する。そしてステップS62として、Join通知に対する応答後、系状態テーブル内の系のバージョン番号を更新して(ステップS63)処理を終了する。
5)等価性回復処理
図11は、図8のステップS42で起動される等価性回復処理の系構成管理部11の動作を示すフローチャートである。
等価性回復処理は、新規参入ノードが系から離脱している際に古くなった自己のファイル内のデータを復元する為の処理である。
等価性回復処理が起動されると、まず系構成管理部11は内部制御表のノード定義部を参照して、系内のアクティブなノードの1つからオブジェクトグループ内の全ファイルのファイル名を取得する(ステップS71)。
次にステップS72として内部制御表の状態フラグを等価性回復中表示に設定した後、ステップS73系内のアクティブなノードにステップS71で得たファイル名を指定して転送要求を行う。この転送を等価性回復転送と呼ぶ。
このファイル転送に対する応答がエラーであったならば、転送要求先を他のアクティブなノードに変更して再度ファイル転送要求を行う(ステップS75)。
ファイル転送要求に対して、要求先のノードから、正常応答を得たら(ステップS74、正常)、ステップS75として転送ファイルを受信し、これを受信データ処理部15に自身のファイルにデータの反映を依頼する(ステップS77)。この時通常のファイル更新に伴う更新データの伝播と、等価性回復処理での転送データの順序性は変更データ通知部14及び受信データ処理部15を介して保証されるので、等価性回復処理中にファイルを更新しても更新結果が失われることはない。
転送ファイルの受信及び自ファイルへの反映をステップS71で得た全てのファイルに対して行い(ステップS78、NO)、全ファイルへの処理が完了したならば(ステップS78、YES)、ステップS79として全アクティブノードに等価性回復処理の完了を通知し、全アクティブノードからの応答を待った後(ステップS80)、内部制御表上の等価性回復処理中をリセットし(ステップS81)、処理を終了する。尚ステップS73〜78の等価性回復転送によるファイル転送は1つのノードに全ファイルの転送を要求してもよいし、複数のノードに分散して要求してもよい。
6)等価性回復転送
図12は、等価性回復処理を行っているノードから、図11のステップS73で送信される等価性回復転送要求を受信したノードの系構成管理部11が行う処理を示すフローチャートである。
等価性回復転送を要求されたノードは、ステップS91としてまずトークン管理ノードにWrite トークンの獲得を要求する。その結果、Write トークンを獲得できなければ(ステップS92、NO)、要求先のノードにエラー応答をして(ステップS93)処理を終了する。
またWrite トークンを獲得できれば(ステップS92、YES)、ステップS93として要求元のノードに正常を応答した後、ステップS95として要求されたファイルデータを変更データ通知部14を介して順次要求元のノードに転送し、処理を終了する。
7)等価性回復完了メッセージ
図13は、等価性回復処理が完了した最新のデータにファイルの復元がなされたノードが、図11のステップS79で送信した等価性回復完了メッセージを受信した系内のアクティブなノードが行う処理を示すフローチャートである。
等価性回復完了メッセージを受信したノードは、ステップS96として内部制御表内の送信元ノードに対応するstatusに表示されているJOIN中の表示をリセット後、ステップS97としてメッセージの送信元ノードに応答を返して処理を終了する。
この図13の処理により、新規参入してきたノードは系内の他のアクティブノードから系への参入処理が完了したものとみなされる。
8)Join再試行メッセージ
Join中に系の再構成が発生すると、このJoin再試行メッセージがJoin中のノードに送られる。この要求を受けた系構成管理部11は、系への新規参入処理を最初からやり直す。
9)停止処理
ノードを停止させる場合、オペレータは系からの離脱を指示するleave コマンドを投入して系から離脱する。尚ここでの停止とは、ノードが系から離脱することを示しており、ノードが複数の系に属している場合、メンテナンス等でノードを完全に止めるためには各系に対してleave コマンドを投入して全ての系から離脱しなければならない。
ノードの停止をleave コマンドでオペレータから通知されると、系構成管理部11は以下の処理を行う。
a)整然停止
整然停止は、系を構成している全ノードが同期して一斉に停止し系そのものが停止するもので、正月休みやシステムの再構築等の場合にシステム全体を休止させるために行われる。オペレータは整然停止を行う場合、オプションでall を指定したleave コマンドを投入する。
b)非整然停止
非整然停止は、そのノードのみを停止させるものであり、非整然停止したノードのみ系から離脱し、他のノードによって系は存続する。オペレータは非整然停止を行う場合、オプションでall を指定しないでleave コマンドを投入する。
図14は、オペレータがleave コマンドを投入して、ノードの停止を指示した時の系構成管理部11の処理を示すフローチャートである。
leave コマンドが投入されると、系構成管理部11は、まずステップS101として内部制御表の状態フラグをアクセス不可表示に変更し、図4の他の構成要素に(具体的にはIO要求インタセプト部12に)対応するオブジェクトグループに属するファイルへのアクセスを禁止する。
次に系構成管理部11は、ステップS102として変更データ通知部14にSYNC要求を行い、キューに保持され遅延している更新要求の全ノードへの反映を依頼する。
全ノードへの変更データの反映が完了し、変更データ通知部14から完了が通知されると(ステップS103、YES)、leave コマンドにall 指定が無い場合には(ステップS104、NO)、非整然停止なので処理を終了する。
またステップS104でall 指定がある場合には、整然停止を行うため、ステップS105として整然停止開始メッセージを系内の全ノードへ一定時間送信し、整然停止開始メッセージに対する応答が全ノードから返信されるのを待つ(ステップS106)。そして全ノードから応答があると(ステップS106、NO)、整然停止を行ったオブジェクトグループに対応する系状態テーブル内の整然停止フラグを整然停止にセットして(ステップS107)、処理を終了する。
10)ノード障害認識
障害等による他のノードの離脱は、例えば分散システムで一般的に行われている自己の存在を他ノードに通知するメッセージ(I'm alive メッセージ)を送信し合うグループコミュニケーションシステムにおいて、メッセージが途絶えたり、応答が返ってこない等の場合に、系内の他のノードによって認識される。系内の他ノードの離脱を認識したノードは、系の再構成を系内の他のアクティブなノードに要求する。
図15は、系内の他ノードの離脱を認識したノードの系構成管理部11の処理を示すフローチャートである。
現在系を構成しているノードの障害を認識すると、系構成管理部11はまずステップS111として、内部制御表の状態フラグを系再構成中を表示するよう設定し、変更データ通知部14にメッセージを他のノードに送るのを一時抑止させる。
次に系構成管理部11は、ステップS112として、系の再構成要求メッセージを系内の全アクティブノードに送信して他のノードの系構成管理部11とやり取りし、系の再構成の合意を得る。この時、もしJoin中のノードを除く過半数のノードから合意が取れなければ(ステップS113、NO)、状態フラグをアクセス禁止の表示にセットして(ステップS114)、対応するオブジェクトグループ内のファイルへのアクセスを禁止した後、ステップS111でセットした系再構成中の表示をリセットして(ステップS115)、処理を終了する。
またステップS113で、系の再構成要求に対してJoin中のノードを除く過半数のノードから合意が取れると(ステップS113、YES)、系状態テーブル内の系のバージョン番号を更新し(ステップS116)、ノード定義部の各ノードのstatusを変更して合意の取れた過半数のノードを新しいアクティブなノードとして内部制御表に設定して(ステップS117)、最新の系状態を表すように更新する。
この後、変更データ通知部14にRESET要求を送り(ステップS118)、応答を待つ(ステップS119)。変更データ通知部14から応答があったら(ステップS119、YES)、更新伝播送信キュー内の変更内容の他ノードへの伝播完了を通知するRESETCOMPをアクティブな全ノードの系構成管理部11に送り、全ノードからRESETCOMPに送られてくるのを待つ(ステップS121)。
全ノードからRESETCOMPが送られてきたら(ステップS121、YES)、伝播中であったファイルの更新要求が全て自ノードに到着したことになるので、ステップS122として受信データ処理部15にRESET要求を送り、系から切り離されたノードに関する送信、受信の後始末を依頼し処理完了通知を待つ(ステップS123)。
受信データ処理部15から処理の完了が通知されると(ステップS123、Y)、ステップS111でセットした系再構成中の表示をリセットして(ステップS124)、処理を終了し、通常処理を再開させる。
尚Join中のノードには、Join再試行要求を送り、最初から系への新規参入処理をやり直させる。
[IO要求インタセプト部]
IO要求インタセプト部12は、ユーザプログラム17が発行したファイルへのアクセス要求を受取り、OS内のファイルシステムにこのアクセス要求を伝える部分で、ユーザプログラム17がファイルに対する入出力要求を発行すると、IO要求インタセプト部12に制御が渡る。
IO要求インタセプト部12は要求されたファイルの名前が全ての内部制御表に設定されているいずれのパス内にも属していないなら、直ちにOSのファイルシステムに制御を渡す。そしてファイルシステムから戻された応答をユーザプログラム17に返す。
またもしそのファイルが、複数の内部制御表の内のオブジェクトグループ定義部内に定義されているいずれかのパスに属するものであるならば、要求されたファイルへのアクセス要求がオブジェクトグループに属するものと見なし、以下の処理を行う。
1)アクセス不可表示が内部制御表にある場合
オブジェクトグループへのアクセスは禁止されているので、ユーザプログラム17にエラーを応答する。
2)等価性回復中の場合
稼動中の他ノードにFORCE指定のRead要求若しくはWrite 要求を送り、ファイルへのアクセスを依頼する。系内の他のノード(Join中を除く)は、最新データのファイルを保持しているので、Read/Write要求に対して応答データを送信してきた場合には、このデータは一貫性が保証されているものなのでこれをユーザプログラム17に返す。またRead/Write要求に対して失敗を応答されたら、別の稼動中ノードに対して同様の処理を繰り返す。
3)等価性回復中でない場合
a)Write 系要求
要求されたファイルのWrite トークン獲得をトークン管理部13に依頼する。トークン管理部13から獲得成功を応答された場合、OSのファイルシステムを呼び、自身のファイルに対しデータの更新処理行った後、変更内容を変更データ通知部14に渡して他ノードへの反映を行う。
トークン管理部13からWrite トークン獲得失敗を応答されたら、トークン管理ノードから応答時に通知されたWrite トークン保持ノードにWrite 要求を送り処理を依頼する。またWrite トークン保持ノードからWrite 要求に対して処理失敗(トークン変化)を応答されたら、トークン獲得からやり直す。
尚自ノードのファイルを更新する際の待合わせ処理や、他ノードの受信データ処理部15に送るWrite 要求に付加するデータなど、IO要求インタセプト部12で行われる順序性保証処理は後述する。
b)Read系要求
要求されたファイルのReadトークン獲得をトークン管理部13に依頼する。トークン管理部13から獲得成功を通知されたら、OSのファイルシステムを介し自ノードのファイルからデータを読み、ユーザプログラム17に応答する。
トークン管理部13からReadトークン獲得失敗を応答されたら、応答時に通知されたノード(Write トークン保持ノード)にRead要求を送る。成功応答が要求先のノードからあれば、渡されたデータをユーザプログラム17に返す。また失敗(トークン変化)を応答されたらトークン獲得からやり直す。
尚他ノードで行われた更新の待合わせなど、順序性保証に伴う処理は後述する。
尚Read/Writeトークンの獲得/解放はユーザプログラム17からのRead/Write要求発行単位で行う構成にする他、オーバヘッドを減らすためファイルのOpen/Close単位に行う構成にしても良い。この場合、ユーザプログラムがファイルをオープンした時点で上記トークン処理が行われ、クローズが発行されるまでトークンが保持される。またトーク獲得不可をオープン時に通知された場合、以降のIO要求はWrite トークンを保持しているノードに転送される。
また、トークン解放を自発的に行うのではなく、ファイル処理が完了するとトークンを必要としていないことを表示しておき、他ノードがトークンを必要とするタイミングまで解放を遅らせる構成とすることも出来る。尚、Write 時及びRead時には後述する順序性保証処理も行われる。
図16は、IO要求インタセプト部による処理を示すフローチャートである。
ユーザプログラム17からファイルへのアクセス要求が発行されるとIO要求インタセプト部12はまず内部制御表を参照し、要求されたファイルのファイル名とオブジェクトグループ定義部内のパス名を比較する(ステップS131)。その結果一致しなければ(ステップS131、不一致)、要求されたファイルはオブジェクトグループに属していないので、OSのファイルシステムの制御を渡し(ステップS132)、ファイルへの処理を依頼する。そしてファイルシステムからの応答をユーザプログラムに返して(ステップS133)、処理を終了する。
ステップS131でファイル名が内部制御表内のいずれかのパスに属するものであるのならば(ステップS131、一致)、そのファイルはオブジェクトグループに属するものであるので対応する内部制御表の状態フラグを調べる。その結果アクセス不可が表示されていれば(ステップS135、YES)、ステップS134としてユーザプログラム17にエラー応答を行い処理を終了する。
また状態フラグに等価性回復中表示がされていた場合には(ステップS136、YES)、ステップS150として稼動中の他ノードにオプションでFORCE指定をしたRead/Write要求を送り、応答を待つ(ステップS151)。その結果失敗を応答されたら(ステップS152、失敗)、ステップS153として別のアクティブなノードにFORCE指定のRead/Write要求を送り、応答を待つ。またRead/Write要求を送ったノードから成功応答があると(ステップS152、成功)、ステップS154として応答データをユーザプログラム17に応答して処理を終了する。
状態フラグに、アクセス不可と等価性回復中のいずれもが表示されていない時(ステップS135及び136、NO)、IO要求インタセプト部12は、アクセス要求がRead要求であった時(ステップS137、Read)、ステップS144として要求されたファイルのReadトークン獲得をトークン管理部13に依頼する。
その結果トークン管理部13からトークンの獲得成功を通知されたら(ステップS145、YES)、OSのファイルシステムを介し自ノードのファイルからデータを読みだし(ステップS146)、これをユーザプログラムへ返答(ステップS147)後、トークンを自発的に解放する構成の場合トークン管理部13にトークンを解放を依頼してから処理を終了する。またトークン管理部13からReadトークンの獲得失敗を応答された場合には(ステップS145、NO)、ステップS148として失敗と共に通知されたWrite トークン保持ノードにRead要求を送信し、応答を待つ。その結果Write トークン保持ノードから、成功を通知された場合には(ステップS149、成功)、渡されたデータをユーザプログラム17に応答後(ステップS147)、処理を終了する。またWrite トークン保持ノードから、失敗を通知された場合には(ステップS149、失敗)、ステップS144のReadトークン獲得依頼から処理をやり直す。尚ステップS146のデータ読みだし時に読み出し対象となっているファイルの転送モードが非同期若しくは半同期モードである場合、実反映遅延キューを参照して最新のデータがキューイングされていればそちらを読み出す。この点については順序性保証の項で詳細に説明する。
またステップS137でアクセス要求がWrite 要求であった場合には(ステップS137、Write)、ステップS138として要求されたファイルのWrite トークン獲得をトークン管理部13に依頼する。
その結果トークン管理部13からトークン獲得成功を応答されたならば(ステップS139、YES)、ステップS140としてOSのファイルシステムを呼び出して自身のファイルに対するWrite 処理を依頼し、ステップS141としてデータの変更内容を変更データ通知部14に渡して他ノードへの反映を依頼した後、トークン解放を自発的に行う構成の場合トークン管理部13にトークンの解放を依頼して処理を終了する。またトークン管理部13からWrite トークン獲得失敗を応答された場合には(ステップS139、NO)、ステップS142として応答時に通知されたWrite トークン保持ノードにWrite 要求を送り、応答を待つ。その結果失敗を応答されたならば(ステップS143、失敗)、ステップS138のWrite トークン獲得からやり直す。また成功を応答されたならば(ステップS143、成功)、後述する順序性保証処理による更新内容の自ファイルへの反映を考慮しつつ処理を終了する。尚ステップS140で、ファイルに対する処理を依頼する際、対象ファイルの伝播モードが非同期若しくは半同期モードである場合、変更内容は実反映遅延キューにキューイングして順序性保証を考慮した処理が行われる。この点については順序性保証の項で詳細に説明する。
[トークン管理部]
トークン管理部13は、ファイルアクセス権限を管理する部分で、系を構成する全ノードが同じ情報を保持するように制御を行う。尚実装を簡単にする為、系を構成するいずれか1つのノード(例えばネットワークアドレスが一番小さいノード)をトークン管理ノードとし、トークン管理ノードのトークン管理部13をサーバとして系全体の全トークン状態を保持、管理する構成とし、他のノードのトークン管理部13は、クライアントとして自ノードが保持しているトークンのみを管理する構成とするのが一般的である。
トークン管理ノードのトークン管理部13は、メモリ上にトークン制御表を構成し、このトークン制御表により系内に存在する全ノードを管理する。
図17は、トークン制御表の構成例を示す図である。
同図では、トークン制御表はリストデータ構造を取っており、各オブジェクトグループに属するファイル毎に1つ対応するトークン制御表が生成される。トークン制御表はトークンがオブジェクトグループ内のどのファイルに対してのものであるかを示すファイル識別子、トークンの種類(Read/Write)を示すトークン状態、トークンを保持しているノードを指定する保持ノード番号及び次の制御表の一を示すポインタが記憶されている。このうちトークン識別子にはトークン管理部13が対応する制御表を検索するためのタグとなるもので、対応するファイルのファイル名等が用いられる。リストの検索を速くするためにファイル識別子にハッシュ関数を適用し、得られた値が同じものが一つのキューを構成するように構成される。
トークン管理ノードのトークン管理部13は、自ノードのIO要求インタセプト部12や他ノードのトークン管理部13からトークンに対する処理要求があるとこのトークン制御表を検索し、要求されたファイルのトークンの状況を調べる。またトークンを生成したり解放する時は、新たなトークン制御表をリストデータに加えたり、対応するトークン制御表をリストデータから削除する。
また系を再構成した場合には、各ノードが保持する最終のトークン保持情報から系全体のトークン状態を復元する。
図18はトークン管理ノードのトークン管理部13の処理を示すフローチャートである。
トークン管理部13は、他ノードのトークン管理部13や自ノードのIO要求インタセプト部12からトークンに対する処理要求を受取ると、以下の様に処理する。
トークン管理部13は、他ノードのトークン管理部13や自ノードのIO要求インタセプト部12から処理要求を受取とるとまず、要求内容を判断する(ステップS155)。その結果、Write トークン獲得要求であるのならば、ステップS156として図19のWrite トークン獲得要求処理を行い、Readトークン獲得要求であるのならば、ステップS157として図20のReadトークン獲得要求処理を行い、トークン解放要求若しくはトークン回収要求であるのならば、ステップS158として、トークン解放/回収要求処理を行ったのち、処理を終了する。
図19は、図18のステップS156のWrite トークン獲得要求処理時のトークン管理部13の処理動作を示すフローチャートである。
トークン管理部13は、Write トークン獲得要求処理ではまずトークン制御表を参照して、Write トークン獲得要求を行っているノードがWrite トークンを保持しているかどうかを調べる(ステップS161)。その結果、保持していた場合(ステップS161、YES)、トークン獲得成功を要求元ノードに応答し(ステップS168)、処理を終了する。また要求元のノードがWrite トークンを保持していない場合(ステップS161、NO)、次に要求元以外のノードが要求されているファイルへのWrite トークンを保持しているかどうかを判断する。その結果Write トークンを保持しているノードがある場合(ステップS162、YES)、Write トークン獲得不可をWrite トークンを保持しているノードのノード番号と共に応答し(ステップS163)、処理を終了する。
またWrite トークンを保持しているノードが存在しない場合には(ステップS162、NO)、他ノードが要求されているファイルのReadトークンを保持しているか判断する。その結果Readトークンを保持しているノードが存在しなければ(ステップS164、NO)、トークン制御表を操作して要求元ノードにWrite トークンを渡し(ステップS168)、トークン獲得成功を要求元ノードに応答して処理を終了する。またReadトークンを保持しているノードが存在すれば(ステップS165、YES)、ステップS166としてReadトークンを保持してる全てのノードにトークン回収を指示し、全Readトークン保持ノードから回収完了を通知されるのを待ち(ステップS166、NO)、全てのReadトークンの回収が完了した後(ステップS166、YES)、要求元ノードにWrite トークンを渡し(ステップS167)、トークン獲得成功を要求元ノードに応答して(ステップS168)処理を終了する。
図20は、図18のステップS157のReadトークン獲得要求処理時のトークン管理部13の処理動作を示すフローチャートである。
Readトークン獲得要求処理では、トークン管理部13はまずトークン制御表を参照して、Readトークン獲得要求を行っているノードが、Readトークン若しくはWrite トークンを保持しているかどうか調べる(ステップS171)。その結果どちらかのトークンを保持していた場合(ステップS171、YES)、トークン獲得成功を要求元ノードに応答し(ステップS175)、処理を終了する。また要求元のノードがReadトークン、Write トークン共に保持していない場合(ステップS171、NO)、次に要求元以外のノードが要求されているファイルへのWrite トークンを保持しているかどうかを判断する。その結果Write トークンを保持しているノードがある場合(ステップS172、YES)、Readトークン獲得不可をWrite トークンを保持しているノードのノード番号と共に応答し(ステップS173)、処理を終了する。
またWriteトークンを保持しているノードが存在しない場合には(ステップS172、NO)、トークン制御表を操作して要求元ノードにReadトークンを渡し(ステップS173)、ステップS174としてトークン獲得成功を要求元ノードに応答して処理を終了する。
図21は、図18のステップS158トークン解放/回収要求処理時のトークン管理部13の処理動作を示すフローチャートである。
トークン解放要求は、トークンが不要となったノードが行うもので、系内の全ノードに更新データの伝播が完了した時等に発行される。尚不要になったトークンの解放を自発的に行わない構成の場合、トークン解放要求を受けた時点ではトークン保持ノード側のトークン管理部13はトークン返却可能を表示しておくのみで復帰する。この場合、Write トークン獲得要求処理やReadトークン獲得要求処理では、トークン管理ノードのトークン管理部13はWrite トークン保持ノードに対してもトークン回収を指示する。そして、トークンを保持しているノードからトークン回収完了を通知された場合にはトークンを獲得できたとして処理を行い、回収不可を通知された場合にWrite トークンを保持しているノードが存在すると見なして処理を行う。
またトークン回収要求は、Write トークン獲得要求処理時にトークン管理ノードのトークン管理部13がRead/Writeトークンを保持しているノードに対して発行する要求である。Write トークンに対する回収要求は、トークン保持ノードが不要になったトークンを自発的に返却しない構成の場合にのみ発行される。
トークン解放要求若しくはトークン回収要求を受けたトークン管理部13は、ステップS181として指定されたトークンを直ちに解放し、解放に成功したことをトークン管理ノードのトークン管理部13に応答して(ステップS182)処理を終了する。
図22は、不要になったトークンを自発的に返却しない構成の場合に発行されるWrite トークン回収要求を受けたWrite トークン保持ノードが行う処理を示すフローチャートである。
Write トークン回収要求を受けると、そのノードのトークン管理部13は、Write トークンを解放できる状態にあるかどうかを判断する(ステップS191)。その結果、該当ファイルへの書込み処理が完了しておらず、Write トークンを解放できない状態にある場合(ステップS191、NO)、Write トークン回収要求を送信してきたトークン管理ノードのトークン管理部13にWrite トークン解放失敗を応答し(ステップS196)、処理を終了する。
またWrite トークンを解放可能な状態である時は(ステップS191、YES)、まずステップS192としてFSYNC指定で変更データ通知部14を呼び、更新伝播送信キューにキューイングされている自己が行ったファイルの変更や他ノードから依頼されているファイルの変更内容を全て、系内の全ノードへの伝播を依頼し、完了応答を待つ(ステップS193、NO)。
そして全ノードから応答があり、変更データ通知部14から伝播完了を通知されると(ステップS193、YES)、ステップS194としてWrite トークンを解放した後、トークン管理ノードのトークン管理部13にトークン解放成功を応答して(ステップS195)、処理を終了する。
[変更データ通知部]
変更データ通知部14は、IO要求インタセプト部12または受信データ処理部15からファイルの更新データを受取り、ファイルの変更内容の他ノードへの反映をスケジュールする部分である。
変更データ通知部14は、通知されたファイルが属するオブジェクトグループの系状態テーブルに設定されている伝播モード(同期,非同期,半同期)に従い、以下の様に処理する。
尚、同期、半同期、非同期はユーザがオブジェクトグループ単位に信頼性要件に従って選択するものであるが、おおよそ以下の様な特性をもつ。
同期:ユーザプログラム17が発行したファイルのへの書込み要求の完了がユーザプログラム17に通知された時点で、ファイルへの更新データが他のノード全てに伝播されている保証が与えられる。従って、全ノードが壊れない限り、データが失われることはない。
半同期:ユーザプログラム17が発行したWrite 命令に対する処理の完了がユーザプログラム17に通知された時点で、更新結果が過半数のノードに伝播している保証が与えられる。従って、半分以上のノードが同時に壊れない限り、データが失われることはない。すなわち、ノード障害に伴う系の縮退では過半数以上のノードで新しい系を作成するので、データが失われることはない。
非同期:ユーザプログラム17が発行したWrite 命令に対する処理の完了がユーザプログラム17に通知された時点で、更新結果が他のノードに伝播している保証はない。従って、ノード障害が発生すると、完了した筈の更新結果が失われることがある。但し本実施形態のシステムでは、この場合でも更新の順序性は保証されるので、新旧のデータが入り交じって見えることはない。
1)同期モード伝播時の処理
オブジェクトグループを構成するアクティブな全ノードに変更内容を転送し、全ノードから受信応答が戻ったところで、要求元に復帰する。
2)半同期モード伝播時の処理
オブジェクトグループを構成するアクティブな全ノードに変更内容を転送し、過半数のノードから受信応答が全て戻ったところで要求元に復帰する。尚Write トークンは全てのノードへの伝播が完了するまでは解放しない。
3)非同期モード伝播時の処理
変更内容をメモリ上にターゲットノード単位でキューイングし、適当なタイミングで転送する。
ここで、適当なタイミングとは以下のいずれかの状態が発生した時を指す。
1)系構成管理部11からSYNC要求を受け付けた時。すべての更新データを全ノードに伝播させる。
2)トークン管理部13からWrite トークンを返却する前に、FSYNC指定で呼ばれ、対象ファイルに対する変更内容を全ノードに伝播させる。
3)システムが判断した適当なタイミング。例えば一定時間立った時、あるいはキューイングされたデータが一定以上になった時。
図23は変更データ通知部14による処理を示すフローチャートである。
変更データ通知部14は、他の構成要素から呼び出されると、まず自己を呼び出した相手を判断する(ステップS201)。その結果、IO要求インタセプト部12若しくは受信データ処理部15により呼び出されたのであれば、ステップS202のIO要求インタセプト部/受信データ処理部呼び出し処理を行う。また呼び出し元が系構成管理部11であり、要求内容がSYNC要求であるのならば(ステップS203、SYNC)、ステップS204のSYNC要求処理を行い、また要求内容がRESET要求であるのならばステップS205のRESET要求処理を行う。またトークン管理部13からFSYNC要求によって呼ばれた場合には、ステップS206のFSYNC要求処理を行って処理を終了する。
図24は、図23のステップS202のIO要求インタセプト部/受信データ処理部呼び出し処理の動作処理を示すフローチャートである。
IO要求インタセプト部/受信データ処理部呼び出し処理に入ると、変更データ通知部14は、呼び出し元から通知された更新要求のオブジェクトグループ番号から対応するオブジェクトグループの内部制御表を見つけ、伝播モードを調べる(ステップS211)。 次にステップS212として更新要求を更新伝播キューの最後につないでキューイングする。そして、ステップS211で調べた伝播モードが非同期方式であったならば(ステップS213、非同期)、処理を終了し、呼び出し元に復帰する。
伝播モードが同期方式か半同期方式の場合(ステップS213、同期/半同期)、内部制御表の状態フラグに系再構成中が表示されていた場合には、系の再構成が完了して状態フラグの表示が消えるのを待ち合わせた後(ステップS214)、ステップS215として系内の全アクティブノードに更新要求を送信する。
更新要求送信後、更新伝播送信キュー内のack 待ちベクタの更新要求を送信したノードに対応するビットを立て(ステップS216)、応答を待つ。そして伝播モードが半同期の場合には(ステップS217、半同期)、ack ベクタの過半数がオフになり、更新要求を送信したノードの受信データ処理部15の過半数から受信完了の応答があるまで待ち合わせ(ステップS218)、処理を終了して、要求元に復帰する。
また伝播モードが同期であった場合には(ステップS217、同期)、ステップS219としてack 待ちベクタが全てオフになるのを待合わせ、トークンを自発的に返却する構成の場合トークンを解放した後に処理を終了し、要求元に復帰する。
図25は、図23のステップS204のSYNC要求処理時の変更データ通知部14の動作処理を示すフローチャートである。このSYNC要求処理は、更新伝播送信キュー内にキューイングされている変更要求を全て系内の他ノードに伝播させて更新伝播送信キューにキューイングされている更新要求を全て掃き出させるもので、系構成管理部11からSYNC要求により呼ばれた時に行われる。
SYNC要求処理に入ると、変更データ通知部14は、まずステップS221として内部制御表内の更新伝播送信キューのエントリを用いて更新伝播送信キューの先頭要素を読み出す。
図26は、更新伝播送信キューの構成例を示す図である。
更新伝播送信キューは、更新要求をキューイングするバッファで、内部制御表内の更新伝播送信キューエントリによって先頭要素の位置が示されるリスト構造を持つ。リスト構造の1つの要素は1つの更新要求に対応しており、変更データ通知部14は更新要求が生じると、更新伝播送信キューの最後に新規の要素を繋ぎ、処理が完了すると対応する要素を削除する。
リストデータの1つの要素は、次の要素の位置を示すポインタ、更新を行うファイルが属するオブジェクトグループのオブジェクトグループ番号、この更新要求を他ノードに送信したかどうかを示す送信済みフラグ、各ノード毎の応答状態を示すack 待ちベクタ、更新対象ファイルのファイル名とそのファイル中での更新位置をするオフセット、更新データの大きさを示す長さ、更新要求を行ったノードのノード番号を示す要求ノード番号、更新番号、依存ベクタ、更新内容を示す更新データによって構成される。これらのうち更新番号及び依存ベクタは後述する順序性保証処理で用いられるもので、順序性保証の項で詳細に説明する。
ステップS221で読み出した要素の送信済みフラグが未送信を表示していたならば(S222、NO)、ステップS223としてこの要素の更新要求を系内の全アクティブノードに送信し、送信したノードに対応するack ベクタのビットを立てる(ステップS224)。また読み出した要素の送信済みフラグが送信済みを表示しており、この送信要求が他ノードに伝播中のものであったならば(ステップS222、YES)、その要素はスキップする。
そして次の更新伝播送信キュー内の次の要素を読みだし(ステップS225、YES:ステップS226)、ステップS222〜S224の処理を繰り返す。
キュー内の全要素に対して処理が完了すると(ステップS225、YES)、更新伝播送信キューの全要素のack 待ちベクタが0にリセットされ、更新要求を送った全てのノードから受信完了の応答があるのを待ってから(ステップS227)、処理を終了して要求元に復帰する。
図27は、図23のステップS205のRESET要求処理時の変更データ通知部14の動作処理を示すフローチャートである。RESET要求は、障害発生時に伝播途中であった要求を全ノードに伝播させ、新しい系の同期を取るなどの目的で用いられる。このRESET要求処理は、他ノードのノード障害を認識した系構成管理部11に、RESET要求によって呼び出された変更データ通知部14が行う処理である。RESET要求処理では更新伝播送信キュー及び実反映遅延キューにキューイングされている更新要求を全て他ノードに伝播して更新内容を全他ノードに反映させる。
RESET要求処理に入ると、変更データ通知部14は、ステップS231として図26に示したSYNC要求処理と同様の処理を行い更新伝播送信キューにキューイングされている変更要求を全て系内の他ノードに伝播して変更内容を通知する。
次にステップS232として、内部制御表内の実反映遅延キューのエントリから位置を調べ、実反映遅延キューの先頭要素を読み出す。
ステップS232で読み出した要素の送信済みフラグが未送信を表示していたならば(S233、NO)、ステップS234としてこの要素の更新要求を系内の全アクティブノードに送信し、送信したノードに対応するack ベクタのビットを立てる(ステップS235)。また読み出した要素の送信済みフラグが送信済みを表示しており、この送信要求が他ノードに伝播中のものであったならば(ステップS233、YES)、その要素はステップS234及び235をスキップする。
そして次の実反映遅延キュー内の次の要素を読みだし(ステップS236、NO:ステップS237)、ステップS233〜S235の処理を繰り返す。
キュー内の全要素に対して処理が完了すると(ステップS236、YES)、実反映遅延キューの全要素のack 待ちベクタが0にリセットされ、更新要求を送った全てのノードから受信完了の応答があるのを待ってから(ステップS238)、処理を終了して要求元に復帰する。
図28は、図23のステップS206のFSYNC要求処理時の変更データ通知部14の動作処理を示すフローチャートである。このFSYNC要求処理は、変更データ通知部14が系構成管理部11からファイル名を指定してFSYNC要求されて実行されるもので、Writeトークンを解放する目的などで、更新伝播送信キュー内にキューイングされている変更要求の内指定されたファイルに対するもの全てを系内の他ノードに伝播させて更新伝播送信キューから掃き出させるものである。
FSYNC要求処理に入ると、変更データ通知部14は、まずステップS241として内部制御表内の更新伝播送信キューのエントリを用いて更新伝播送信キューの先頭要素を読み出す。
ステップS241で読み出した要素内のファイル名と指定されたファイル名と比較し同一のものであり(ステップS242、YES)、また送信済みフラグが未送信を表示していたならば(S243、NO)、ステップS244としてこの要素の更新要求を系内の全アクティブノードに送信し、送信したノードに対応するack ベクタのビットを立てる(ステップS245)。また要素内のファイル名が指定されたものと異なったり(ステップS242、NO)、ファイル名は同じであっても読み出した要素の送信済みフラグが送信済みを表示しており、この送信要求が他ノードに伝播中のものであったならば(ステップS243、YES)、その要素はスキップする。
そして次の更新伝播送信キュー内の次の要素を読みだし(ステップS246、YES:ステップS247)、ステップS242〜S245の処理を繰り返す。
キュー内の全要素に対して処理が完了すると(ステップS246、YES)、更新伝播送信キューのステップS245でビットを立てたack 待ちベクタが0にリセットされ、更新要求を送った全てのノードから受信完了の応答があるのを待ってから(ステップS248)、処理を終了して要求元に復帰する。
その後変更データ通知部14は、適当なタイミングで実反映遅延キューを先頭からスキャンし、まだ他ノードに伝播されていない先頭から特定数の変更要求を全アクティブノードに転送する。
[受信データ処理部]
受信データ処理部15は、他ノードからデータを受信し、自ノードへの反映処理を行う部分である。
受信データ処理部15が他ノードから受取るデータには、Read/Write要求、RESET要求及び等価性回復転送データの4種類があり、受信データ処理部15はそれぞれに応じた処理を行う。
図29は、受信データ処理部15の動作処理を示すフローチャートである。
受信データ処理部15は、他ノードから要求を受信すると、まずその内容を判断する(ステップS251)。その結果更新要求であれば、ステップS252の更新要求処理を行う。また自ノードがWrite トークンを保持しており、他ノードからRead要求若しくはWrite 要求が送信されてきたのであれば、ステップS253のRead/Write要求処理を行う。また、他ノードが離脱したノードを検出してRESET要求を送信してきたのならば、ステップS254のRESET要求処理を行う。また、自ノードが等価性回復中で、等価性回復転送要求をしたノードから等価性回復転送データを送信してきたのならば、ステップS255の等価性回復転送データ処理を行う。
図30は、図29のステップS252の更新要求処理における受信データ処理部15の処理を示すフローチャートである。
更新要求処理に入ると、受信データ処理部15は、受信した更新データに対応するオブジェクトグループの内部制御表を参照し、このオブジェクトグループの伝播モードと等価性回復中であるかどうかを調べる。その結果伝播モードが同期モードあるいは半同期モードであるか(ステップS261、YES)、非同期モードであっても状態フラグに等価性回復中が表示されていた場合(ステップS261、NO:ステップS262、YES)、OSファイルシステムを介して、自ノードの対応ファイルに変更データを直ちに反映させ(ステップS263)、処理を終了する。
また転送モードが非同期モードであり(ステップS261、NO)、また等価性回復中でなかった場合には(ステップS262、NO)、ステップS262として受信した変更要求を実反映遅延キューの最後尾に繋ぎ、順序性保証を考慮して変更要求を自ファイルへ反映させる。尚順序性保証については後述する。
図31は、実反映遅延キューの構成例を示す図である。
実反映遅延キューは、非同期モードによる更新要求をキューイングするバッファで、内部制御表内の実反映遅延キューエントリによって先頭要素の位置が示されるリスト構造を持つキュー部分21と受信済みベクタ22によって構成される。キュー部分21の1つの要素は1つの更新要求に対応しており、受信データ処理部15は、非同期モードのオブジェクトグループ内のファイルに対する更新要求を受信すると、実反映遅延キューの最後に新規の要素を繋ぎ、処理が完了すると対応する要素を削除する。
キュー部分21の1つの要素は、基本的に更新伝播送信キューの要素と同じ構成で、次の要素の位置を示すポインタ、更新を行うファイルが属するオブジェクトグループのオブジェクトグループ番号、この更新要求を他ノードに送信したかどうかを示す送信済みフラグ、各ノード毎の応答状態を示すack 待ちベクタ、更新対象ファイルのファイル名とそのファイル中での更新位置をするオフセット、更新データの大きさを示す長さ、更新要求を行ったノードのノード番号を示す要求ノード番号、更新番号、依存ベクタ、更新内容を示す更新データによって構成される。
これらのうち更新番号及び依存ベクタは後述する順序性保証処理で用いられるもので、順序性保証の項で詳細に説明する。また送信済みフラグ及びack 待ちベクタは、系構成管理部11からRESET要求を受けた時にのみ用いられる。
また受信済みベクタ22は、系内のノード分の要素を備え受信した更新要求内の依存ベクタ最新の依存ベクタが記録される。尚この点についても、順序性保証の項で詳細に説明する。また受信済みマトリックスについても順序性保証の項で説明する。
図32は、図29のステップS253のRead/Write要求処理における受信データ処理部15の処理を示すフローチャートである。
Read/Write要求処理に入ると受信データ処理部15の処理は、受信したRead要求若しくはWrite 要求にオプションでFORCEが指定されているかどうかによって処理が異なる。
受信したRead/Write要求が、等価性回復中のノードからのものであり、FORCEオプションの指定されたものである時は(ステップS271、YES)、ステップS272としてトークン管理部13に要求処理に必要なReadトークン若しくはWrite トークンの獲得を依頼する。その結果獲得に成功すれば(ステップS273、YES)、ステップS274に処理を移し、獲得に失敗すれば(ステップS273、NO)、ステップS278として要求元ノードにエラー応答を行った後処理を終了する。
また受信したRead/Write要求が、FORCEオプションの指定の無いものである時は(ステップS271、NO)、自ノードがWrite トークンを保持していない時は(ステップS279、NO)、ステップS278として要求元ノードにエラー応答を行った後処理を終了する。また自ノードがWrite トークンを保持している時は(ステップS279、YES)、ステップS274に処理を移す。
ステップS274では、内部制御表を参照し、Read/Write要求の対象となっているオブジェクトグループの伝播モードを調べる。その結果同期モードあるいは半同期モードであった場合には(ステップS274、同期/半同期)、OSのファイルシステムに依頼して、要求された処理を行い(ステップS276)、結果を要求もとノードに応答して処理を終了する。尚ステップS276において、Write 要求に対する処理の場合、自ファイルへの書込み処理の他、変更内容の他ノードへの伝播を変更データ通知部14に依頼する。
ステップS274で、Read/Write要求の対象となっているオブジェクトグループの伝播モードが非同期であるならば(ステップS274、非同期)、後述する順序性保証の項で述べる順序性保証の為の処理を考慮しつつ、IO要求インタセプト部12によるRead/Write要求処理に準じた処理を行い、結果を要求元ノードに返し(ステップS277)、処理を終了する。
図33は、図29のステップS254のRESET要求処理における受信データ処理部15の処理を示すフローチャートである。
RESET要求処理に入ると、受信データ処理部15は、ステップS281として内部制御表内の実反映遅延キューのエントリから位置を調べ、実反映遅延キューの先頭要素を読み出す。そしてその要素が、系から離脱したノードからの更新要求を待っているものであるならば(ステップS282、YES)、ステップS283としてその更新要求を実反映遅延キューから削除して解放する。また他のノードからの更新要求であったならばそのまま残しておく(ステップS282、NO)。
そして次の実反映遅延キュー内の次の要素を読みだし(ステップS284、NO:ステップS285)、ステップS282〜284の処理を繰り返し、キュー内の全要素に対して処理が完了すると(ステップS284、YES)、処理を終了する。
図34は、図29のステップS255の等価性回復データ処理における受信データ処理部15の処理を示すフローチャートである。
等価性回復データ処理に入ると、受信データ処理部15は、ステップS291としてファイルシステムを呼び出し、受信した等価性回復転送データの自ノードのファイルへの反映を依頼し、完了応答を待った後(ステップS292)、処理を終了する。
[順序性保証]
本システムでは、ファイルの更新を行うと更新内容は更新要求として系内の他ノードに伝播されてゆく。伝播モードとしては、同期、非同期、半同期の3つのモードがあり、このうち同期モード及び半同期モードによる伝播以外の時は、系の縮退時に完了した筈のファイルの更新の結果が失われてしまう可能性がある。この為、系縮退時に一部データが失われ、結果として新旧データが入り乱れる事態が生じる。半同期モードではしかもファイルへの更新データが他のノードに更新された順番に届くとは限らない。
本実施形態では、非同期モード時、受信した更新データを実反映遅延キューにキューイングしてゆき、実反映遅延キュー内の更新データの自ファイルへの反映を更新番号と依存ベクタによって管理することによって、順序性保証を行い、系縮退時に新旧データが入り乱れることを防止する。
この更新番号と依存ベクタは、例えば内部制御表内に設定される。内部制御表は、オブジェクトグループ毎に展開されるので、この構成の場合、更新番号と依存ベクタもオブジェクトグループ毎に持つことになる。従ってオブジェクトグループを互いに関係があるファイルのみで定義すれば、互いに無関係な更新間の順序性保証は行われず、オーバヘッドを削減することが出来る。
1)更新番号
更新番号は、系内で発生するファイル更新のノード内に閉じた順序性を表す為に単調に増加する番号でありノード毎、オブジェクトグループ毎に用意する。IO要求インタセプト部12はユーザプログラムからWrite 要求を受ける度にこの更新番号をインクリメントして更新する。
2)依存ベクタ
依存ベクタは、他ノードの更新番号を含むベクタで、「更新番号で示される更新要求が依存する」他ノードが行った更新を特定する。依存ベクタは、オブジェクトグループ毎に用意され、そのオブジェクトグループに属するノード数分の要素をもつ。
各要素の内、自ノードに対応する部分には、常に自ノードの更新番号より1つ小さい値が設定される。依存ベクタは、更新データの伝播時に、更新番号共に更新データに付加されて伝播される。
Write トークンの獲得に失敗してWrite処理を他ノードに依頼する場合、IO要求インタセプト部12がWrite要求に更新番号と依存ベクタを付加し、これを依頼先のノードに送信する。Write 要求によるファイルの更新内容は、Write 要求を受けたノード経由で更新伝播時に系内の全ノードに通知される。
またRead要求を依頼されたノードは、応答も依存ベクタを付加する。
図35は、Write 要求及びRead要求の応答に付加される依存ベクタの例を示す図である。
同図上段は3つのノードで系が構成されている場合に、Write 要求ノード2からノード1にWrite 要求を行う場合を示す図であり、下段はRead要求に対する応答を行う場合を示している。
ノード2のIO要求インタセプト部12は、ユーザプログラム17からWrite 要求を受けると、内部制御表内の更新番号及び依存ベクタ内の自己に対応する部分をインクリメントし(同図の場合更新番号を9−>10、依存ベクタを(10、8、6)−>(10、9、6)に変更)、これを更新番号と共にWrite 要求に付加してノード1に送る。またRead要求の応答の場合にはこれらの更新は行わず、内部制御表に設定されている依存ベクタをそのまま付加して送信する。
ノード1では、Write 要求の場合受信した更新データを更新番号及び依存ベクタと共に実反映遅延キューにキューイングすると共に、内部制御表内の依存ベクタと各要素毎に受信済みベクタ22内のベクタと受信した依存ベクタとを比較(ノード2の部分は更新番号と比較)、受信したベクタの方が大きければこれを新たな値として内部制御表にセットする。
また図35下段は、Read要求の応答に対しては、単に内部制御表の内の依存ベクタと応答に付加していた依存ベクタとを要素毎に比較し、受信したベクタの方が大きければこれを新たな値として内部制御表にセットする。
依存ベクタは、他ノードから送信されてきた更新要求や、Write 要求で通知された更新データを実ファイルに反映してもよいかどうかを受信データ処理部15が判断するのに使用する。受信データ処理部15は、依存ベクタ内の要素全てのより小さい更新番号の更新要求を各ノードから全て受取済の場合には、実ファイルに反映してよいと判断して更新を行う。
尚受信した更新要求より先行する更新に対する更新要求にまだ到着していないものが存在する場合、系再構成時の破棄に備え、その未着の更新内容が送られて来るまで受信した更新内容を実反映遅延キューに保持しておき、実ファイルへの反映を遅らせる。これにより、更新内容が前後して届いた場合に系の再構成が生じても、データが破壊されることはない。
図36は、受信データ処理部15が行う依存ベクタによる判断処理を説明する図である。
同図はノード3の実反映遅延キューの状態を示したもので、キューには受信順にノード1からの更新番号12の更新要求(同図中1/12)、ノード1からの更新番号13の更新要求(同図中1/13)及びノード2からの更新番号12の更新要求(同図中2/12)が実反映遅延キューにキューイングされている。また受信済みベクタ22から、既に反映済みの更新データとして更新番号がノード1及び2は更新番号10まで、ノード3は更新番号5までの更新データが自ファイルに反映されていることが判る。
この状態を初期状態T0とし、次の状態T1としてノード2から更新番号の11の更新要求(依存ベクタ(10,10,5))がノード3に到着したとする。これにより、ノード2からの更新要求は更新番号が12まで全て揃ったことになるので(受信済みベクタ22から更新番号10以前のものは既に反映済み)、受信済みベクタ22を(10,10,5)から(10,12,5)と変更すると共に反映可能となった2/11の更新データを自ファイルに反映させる。しかし、2/12の更新データに関しては、2/12の更新データの依存ベクタと受信済みベクタ22の値とを比較すると、ノード1の部分の値が2/12の更新要求の方が大きいので、これは自ファイルには反映させずに実反映遅延キュー内に保持しておく。
また次のT3の状態として、ノード1から更新番号11の要求(要求1/11(10,11,5)が到着したとする。これによりノード1からの更新要求は更新番号13まで全てノード3に到着したことになるので、受信済みベクタ22を(10,12,5)から(13,12,5)に変更すると共に、反映可能となった要求1/11,1/12,1/13,2/11を全て実ファイルに反映させ、これらを実反映遅延キューから削除する。
またRead要求を処理する場合では、実反映遅延キュー対応するデータが退避されていればそちらを優先して読みだし、要求元に送る。この際、応答する依存ベクタもキューイングされているデータに付加されているものを返す。
この様に処理することにより更新要求が実際の更新順から前後して届いても、受信データ処理部15は、順序性保ったデータの更新を行うことが出来る。
尚、実反映遅延キューからデータを返す処理を不要にして制御を単純化するために、Write 要求を受取った受信データ処理部15が、Write 要求に付加された依存ベクタからそのWrite 要求に依存関係の有るデータが自ノードに全て到着するのを待合わせる構成としても良い。この場合Write 要求された更新データの自ファイルへの反映とWrite トークンの解放をそのWrite トークンのもとで行い、更新を依存するデータが全ノードに到着したことを確認出来るまで遅らせる。この点については後述する。
この構成の場合、自ノードのデータをRead使用とする場合には、Write トークンの解放を介して、依存するデータが自ノードに反映済みとなるので、Read要求の処理で実反映遅延キューからデータを取り出し応答するという処理が不要となる。ただしこの場合でも、系再編成によりデータの順序性が崩れることを防ぐため、実反映遅延キューを介して、実ファイルのへ反映を遅らせる処理は依然必要となる。
3)依存ベクタの更新タイミング
依存ベクタは以下のタイミングで更新される。
a)他ノードからWrite 要求が送られてきた時
受信データ処理部15は自ノードの依存ベクタの要求元ノードに対応する要素に送られてきた更新番号を設定する。
b)IO要求インタセプト部12が他ノードにRead要求を送り、応答としてReadデータをもらった時
受信データ処理部15は、応答と共に送られてきた依存ベクタと自身が内部制御表内に保持する依存ベクタとを要素毎に比較し、大きい値を内部制御表内に設定する。Read要求を受けたときは受信データ処理部15は、Read要求を受けた時点の依存ベクタを応答に付加して返す。
上記の様に依存ベクタを伝播することで、複数のノード間に跨がるデータ間の依存性を表現することが出来る。例えば、a(ノード1)->b(ノード2)->c(ノード3)で表現される依存関係がある更新要求の場合、ノード3から送られてきた更新要求cは更新要求a、bの更新が伝播するまで不揮発化が延ばされる。
図37は、依存関係のある更新要求の順序性の保証を示す図である。
同図は同一のオブジェクトグループに属するファイルfa、fb及びfcの3のファイルに対し3つのノード1、2及び3によってRead/Write要求が発生した場合の依存ベクタによるを示したもので、t0〜t5の順でファイルに対する更新が行われた場合、t0、t2、t4の3つの状態で発生した更新要求に付加される依存ベクタには、(0,0,0)<(1,0,0)<(1,1,0)の関係が有るので、各ノードに更新要求が順不同で届いてもファイルには順番に反映される。
4)参照要求時
ユーザプログラム17からのRead要求に対し、他のノードにRead要求を依頼して応答結果を得る場合、IO要求インタセプト部12は、受取ったデータに付加されている依存ベクタで示された受信データに依存関係が有る更新要求を全て受信するまで、ユーザプログラム17に参照結果を渡さない。
この様にユーザプログラム17に応答を返すのを遅らせて、同期を取ることにより、系の再構成を跨がってこのノードが生き続けた場合に、ユーザプログラム17が参照したデータが失われてユーザプログラム17の誤動作を防ぐことが出来る。
尚処理を単純にするため、他ノードにRead要求に対する応答を返す場合、受信データ処理部15で、自ノードがそれまでに行った変更が過半数のノードに伝わるのを待ってから応答を返すという構成にすることも出来る。この構成の場合には、他ノードにRead要求の応答結果を返す時にはその応答結果が依存する更新要求が系内の過半数のノードに必ず反映済みであることが保証される。よって、更新要求a(ノード1)−>更新要求b(ノード2)−>更新要求c(ノード3)の様な間接的な依存関係がある更新に対しても、ノード2がノード1からReadデータを受信した時点で、更新要求aが過半数のノードに伝播していることになるので、ノード3がノード2からRead結果を受信した時点では依存関係にある更新要求aが過半数に伝播していることが保証されることになる。
更に、図31に示す受信済みマトリックスを導入して、WRITEトークンの回収をWRITEトークンで保護された更新と依存関係の有る更新要求が全ノードに伝わるまで遅らせる最適化を行う構成とすることも可能である。
この構成の場合、更新要求は依存関係を持つ更新要求が系内の全ノードに伝播されるまで更新伝播送信キューに繋がれたままとなる。拠って、Read要求に対し更新伝播送信キューに繋がっていないデータを返す場合には、依存するデータが既に系内の全ノードに伝わっている保証がとれる。
従って、他ノードからのRead要求に対し、要求を依頼されたノードは更新伝播送信キューにあるデータを応答とするときのみ、その応答としたデータに対応する依存ベクタを応答すればよく、更新伝播送信キューにないデータを応答とする場合には、依存ベクタなしを応答することができる。依存ベクタなしを応答されたREAD要求ノードは依存関係に変更がないので自身の依存ベクタを更新したり、依存ベクタで規定される更新要求が到着するのを待ち合わせる必要がなくなる。
図31に示す受信済みマトリックスは、ノード毎に存在するマトリックスで、他ノードの受信済みベクタを要素として持ち、自ノードが認識している他ノードの進行状況を示す。上記したWRITEトークンの回収をWRITEトークンで保護された更新と依存関係の有る更新要求が全ノードに伝わるまで遅らせる構成の場合、WRITEトークン保持ノードは、この受信済みマトリクスから、依存関係の有る更新が全ノードに伝達されたことを認識する。
各ノードは一定時間毎に、系内の全ての他ノードに対し自身の受信済みマトリックスをメッセージとして広報し、このメッセージを受信したノードは自身の受信済みマトリックスを更新する。受信マトリクスの更新方法は対応する受信済みベクタに対し、依存ベクタの更新方法で説明したのと同じ方法を適用すればよい。
5)データ更新時
他ノードにWrite 要求を依頼した場合、IO要求インタセプト部12は応答で通知される依存ベクタ(更新伝播送信キューに存在する同一ファイルに対する更新の最終要求を示す依存ベクタ)からそれ以前の更新における更新データが全て到着するのを待合わせ、その後自身のデータも更新する。
Write 要求は自身がそれ以前に行ったRead/Write要求に依存している。このうち、自身のWrite データは上記待合わせ処理により自身で反映済みで有ることが保証される。
また、参照データに関しては4)で述べた処理により、受取ったデータが依存するデータが全て自ノードに反映済みであることが保証される。従って、Write 要求時点で更新要求のデータが依存する他の更新データが自ノードでのファイルに反映済みである保証が得られている。尚更新データを他ノードからの伝播を待たず自ノードに反映しておくのは4)で述べたのと同じ理由で系再編を跨がって動作を続けるユーザプログラム17の誤動作を防止するためである。
一方更新データの自ノードへの反映を先に行うと、同じファイルに対する古い伝播が後で到着したり、その更新が前提とする更新が系再編で失われることがある。この事態を防ぐために応答で通知された依存ベクタの中の最大のものを使い、依存関係のある更新データを待合わせる必要がある。
図38は他ノードのWrite 要求を処理する時において、更新伝播送信キューに同じファイルに対する更新要求が存在していた場合の処理を説明する図である。
更新伝播送信キューが同図の状態で、ファイルfaに対するWrite 要求を受けると、受信データ処理部15は同じファイルfaに対する最遅の更新要求(要求2/12)に対応する(11,12,6)を依存ベクタとして応答する。もし、更新伝播遅延キューに同じファイルに対する要求が存在しなければ、依存ベクタ無しを応答する。
図39は、本実施形態における上記ファイルレプリケーション制御をコンピュータプログラムにより実現した場合の各ノードの構成を示す図である。
各ノードは図39の様にCPU31、ROM、RAMによる主記憶装置32、補助記憶装置33(図4のローカルディスク装置に対応)、ディスプレイ、キーボード等の入出力装置(I/O)34、LANやWAN、一般回線等により他ノードとネットワーク接続を行うモデム等のネットワーク接続装置35及びディスク、磁気テープなどの可搬記録媒体37から記憶内容を読み出す媒体読取り装置36を有し、これらが互いにバス38により接続される構成を備えている。
また図39の情報処理システムでは、媒体読取り装置36により磁気テープ、フロッピーディスク、CD−ROM、MO等の記録媒体37に記憶されているプログラム、データを読み出し、これを主記憶装置32またはハードディスク33にダウンロードする。そして本実施形態による各処理は、CPU31がこのプログラムやデータを実行することにより、ソフトウエア的に実現することが可能である。
また、このノードでは、フロッピーディスク等の記録媒体37を用いてアプリケーションソフトの交換が行われる場合がある。よって、本発明は、ファイルレプリケーションシステムやファイルレプリケーション制御方法に限らず、コンピュータにより使用されたときに、上述の本発明の実施の形態の機能をコンピュータに行わせるためのコンピュータ読み出し可能な記録媒体37として構成することもできる。
この場合、「記録媒体」には、例えば図40に示されるように、CD−ROM、フロッピーディスク(あるいはMO、DVD、リムーバブルハードディスク等であってもよい)等の媒体駆動装置47に脱着可能な可搬記録媒体46や、ネットワーク回線43経由で送信される外部の装置(サーバ等)内の記憶手段(データベース等)42、あるいは情報処理装置41の本体44内のメモリ(RAM又はハードディスク等)44等が含まれる。可搬記録媒体46や記憶手段(データベース等)42に記憶されているプログラムは、本体44内のメモリ(RAM又はハードディスク等)45にロードされて、実行される。
【発明の効果】
本発明によれば、共用ファイルへのアクセス要求が生じたノードに対し、その共用ファイルに対する最新のデータを保持するノードが通知される。よって、共用ファイルをアクセスするノードは常に最新のデータに対してアクセスすることが出来る。また各ノードは同一のデータを参照することになるので、各ノードからは一貫性の有るデータが見える。
また各ノードは、トークンの獲得に失敗してもトークンを獲得できるまで待つことなく処理を続行できる。更に複数のノードによる同一のファイルに対する同時アクセスを可能としている。この為、高い反応性を持つシステムを構築することができる。
ータが見える。
更に更新内容を他ノードに非同期で伝送しても、全ノードから同じデータが見える。
また更新データには更新の順序性、依存性を示す情報が付加されており、この情報に基づいてファイルの更新が行われるので、途中で系の再構成が生じても、データ更新の順序性が壊れることはない。また動作中の他ノードから矛盾したデータが見えることはない。
更に、1乃至複数のファイル毎に更新内容の伝播方式や伝播させるノードを設定できるので、業務の性格や性能要件に基づいて設定を行える。
また、新規ノードの参加時において、最新データの復元処理中に生じたアクセス要求を最新データを保持している他のノードに送ることにより、復元処理の完了を待たずに新規参加ノードの業務を開始することが出来る。更に、この時、系内で復元処理と平衡して現在系に加わっているノードの業務を続行できる。
又共用ファイルに対する処理を、該共用ファイルを共用する他ノードと同期して停止する整然停止を行った場合、共用ファイルへの処理を再開する際、他ノードと同期して再開することにより共用ファイルに対するデータの復元処理を行う必要が無い。
【図面の簡単な説明】
【図1】本発明の原理図である。
【図2】系の構成を示す図である。
【図3】本発明における基本原理を示す図である。
【図4】本実施形態の系を構成するノードの構成を示すブロック図である。
【図5】系状態テーブルの構成例を示す図である。
【図6】内部制御表の構成例を示す図である。
【図7】 Joinコマンド投入時の系構成管理部による動作処理を示すフローチャートである。
【図8】参入処理時の系構成管理部の動作処理を示すフローチャートである。
【図9】JOIN要求受付処理時の系構成管理部の動作処理を示すフローチャートである。
【図10】 Join通知を受取ったノードの系構成管理部が行う処理を示すフローチャートである。
【図11】等価性回復処理の系構成管理部の動作処理を示すフローチャートである。
【図12】等価性回復転送要求を受信したノードの系構成管理部が行う動作処理を示すフローチャートである。
【図13】等価性回復完了メッセージを受信したノードの系構成管理部が行う動作処理を示すフローチャートである。
【図14】 leave コマンドを投入された時の時の系構成管理部の動作処理を示すフローチャートである。
【図15】系内の他ノードの離脱を認識したノードの系構成管理部の処理動作を示すフローチャートである。
【図16】IO要求インタセプト部による処理動作を示すフローチャートである。
【図17】トークン制御表の構成例を示す図である。
【図18】トークン管理ノードのトークン管理部の処理動作を示すフローチャートである。
【図19】 Write トークン獲得要求処理時のトークン管理部の処理動作を示すフローチャートである。
【図20】 Readトークン獲得要求処理時のトークン管理部の処理動作を示すフローチャートである。
【図21】トークン解放/回収要求処理時のトークン管理部の処理動作を示すフローチャートである。
【図22】不要になったトークンを自発的に返却しない構成の場合に発行されるWrite トークン回収要求を受けたWrite トークン保持ノードが行う動作処理を示すフローチャートである。
【図23】変更データ通知部による動作処理を示すフローチャートである。
【図24】IO要求インタセプト部/受信データ処理部呼び出し処理の変更データ通知部の動作処理を示すフローチャートである。
【図25】SYNC要求処理時の変更データ通知部の動作処理を示すフローチャートである。
【図26】更新伝播送信キューの構成例を示す図である。
【図27】RESET要求処理時の変更データ通知部の動作処理を示すフローチャートである。
【図28】FSYNC要求処理時の変更データ通知部の動作処理を示すフローチャートである。
【図29】受信データ処理部の動作処理を示すフローチャートである。
【図30】更新要求処理における受信データ処理部の動作処理を示すフローチャートである。
【図31】実反映遅延キューの構成例を示す図である。
【図32】 Read/Write要求処理における受信データ処理部の処理を示すフローチャートである。
【図33】RESET要求処理における受信データ処理部の動作処理を示すフローチャートである。
【図34】等価性回復データ処理における受信データ処理部の動作処理を示すフローチャートである。
【図35】 Write 要求及びRead要求の応答に付加される依存ベクタの例を示す図である。
【図36】受信データ処理部が行う依存ベクタによる判断処理を説明する図である。
【図37】依存関係のある更新要求の順序性の保証を示す図である。
【図38】 Write 要求を自ノードで処理する時において、実反映遅延キューに同じファイルに対する更新要求が存在していた場合の処理を説明する図である。
【図39】ノードとなる計算機システムの環境図である。
【図40】記憶媒体の例を示す図である。
【符号の説明】
A〜J ノード
11 系構成管理部
12 IO要求インタセプト部
13 トークン管理部
14 変更データ通知部
15 受信データ処理部
21 キュー部分
22 受信済みベクタ
31 CPU
32 主記憶装置
33 補助記憶装置
34 入出力装置
35 ネットワーク接続装置
36 媒体読取り装置
37 可搬記憶媒体
38 バス
41 情報処理装置
42 記憶手段
43 ネットワーク回線
44 情報処理装置本体(コンピュータ)
45 メモリ
46 可搬記録媒体

Claims (23)

  1. 複数のノードがネットワークに接続され、該各ノード上に共用ファイルを配置するファイルレプリケーションシステムにおいて、
    前記複数のノード内の1つである第1のノードは、
    前記共用ファイルに対する読み出し若しくは書き込み要求が生じた時、前記複数のノード内の1つである第2のノードに該共用ファイルに対する読み出し若しくは書き込みの許可を求める第1のトークン管理手段と、
    自ノード内で生じた共用ファイルに対する読み出し若しくは書き込み要求を受け付け、該読み出し若しくは書き込み要求に対し前記第1のトークン管理手段に前記読み出し若しくは書き込みの許可獲得をし、該許可が得られない時、前記共用ファイルに対する更新許可を持つノードに該共用ファイルへの読み出し若しくは書き込み処理を依頼するIO要求インタセプト手段と、
    を備え、
    前記第2のノードは、
    他ノードからの共用ファイルに対する読み出し若しくは書き込みの許可要求に対し、別のノードに該共用ファイルに対する更新許可を与えている時、該読み出し若しくは書き込み許可要求に対する応答として該更新許可を与えているノードを通知する第2のトークン管理手段を備えることを特徴とするファイルレプリケーションシステム。
  2. ネットワークによって接続され、他のノードとの共用ファイルを保持するノードにおいて、
    前記共用ファイルに対する読み出し若しくは書き込み要求を管理するトークン管理手段と、
    自ノード内で生じた共用ファイルに対する読み出し若しくは書き込み要求に対し、前記トークン管理手段に該共ファイルへの読み出し若しくは書き込み許可を求めるIO要求インタセプト手段と、
    を備え、
    前記トークン管理手段は、前記IO要求インタセプト手段からの読み出し若しくは書き込み要求に対し、既に他のノードが前記共用ファイルに対する更新許可を保持する時、該更新許可を保持するノードを前記IO要求インタセプト手段に通知し、前記IO要求インタセプト手段は、前記読み出し若しくは書き込み許可が得られない時、該更新許可を保持するノードに前記共用ファイルへの読み出し若しくは書き込み処理を依頼することを特徴とするノード。
  3. 新規参入時に自ノードの保持する共用ファイルのデータの復元処理を行う系構成管理手段を更に備え、前記ファイルの復元処理中に、自ノード内で前記共用ファイルに対する読み出し若しくは書き込み要求が生じた時、前記IO要求インタセプト手段は、前記共用ファイルを共用している他のノードに読み出し若しくは書き込み処理を依頼することを特徴とする請求項2に記載のノード。
  4. 前記共用ファイルへの更新時に更新内容を他の更新との依存関係を示す情報と共に他のノードへ伝播する変更データ通知手段と、前記依存関係を示す情報に基づいて、更新の順序性を保証しつつ前記更新内容を前記共用ファイルに反映させる受信データ処理手段を更に備えることを特徴とする請求項2又は3に記載のノード。
  5. 1乃至複数の共用ファイル毎に更新内容の伝播方式についての情報を保持する系状態情報保持手段を更に備え、前記変更データ通知手段は、前記系状態情報保持手段内の情報に基づいて前記更新内容を伝播することを特徴とする請求項4に記載のノード。
  6. 前記伝播方式は前記共用ファイルを共用する全てのノードに前記更新内容が伝播されるのを保証する同期方式、前記共用ファイルを共用する半数のノードに前記更新内容が伝播されるのを保証する半同期方式、及び前記共用ファイルを共用するノードへの前記更新内容の伝播を確認しない非同期方式のいずれか1つであることを特徴とする請求項5に記載のノード。
  7. 前記系状態情報保持手段は、前記1乃至複数の共用ファイル毎に該共用ファイルを共用するノードについての情報をも保持することを特徴とする請求項5又は6に記載のノード。
  8. 複数のノードがネットワークに接続され、該ノードが共用ファイルをする構成のシステムにおけるファイルレプリケーション制御方法であって、
    前記共用ファイルに対する読み出し若しくは書き込みを行うアクセス要求ノードは、
    ノードが前記共用ファイルに対する最新のデータを自己が保持する時、自己の共用ファイルに読み出し若しくは書き込みを行い
    前記最新のデータを他ノードが保持する時、前記共用ファイルに対する読み出し若しくは書き込みを該最新のデータを保持する他ノードに依頼することを特徴とするファイルレプリケーション制御方法。
  9. 前記共用ファイルへの更新許可は1つのノードにのみ与えられ、前記アクセス要求ノードは共用ファイルに読み出し若しくは書き込みする時に、他ノードが前記共用ファイルへの更新許可を保持している時、該更新許可を保持しているノードに前記共用ファイルへの読み出し若しくは書き込み処理を依頼することを特徴とする請求項8に記載のファイルレプリケーション制御方法。
  10. 前記更新許可を保持しているノードは、自己の更新が依存する更新が全ノードに伝わった後、該更新許可の解放を行うことを特徴とする請求項9に記載のファイルレプリケーション制御方法。
  11. 前記共用ファイルへの更新を行ったノードは、更新内容を他ノードに非同期で伝播し、前記更新内容が伝播中に他ノードで生じた共用ファイルへの読み出し若しくは書き込み要求を前記更新を行ったノードが処理することを特徴とする請求項8乃至10のいずれか1つに記載のファイルレプリケーション制御方法。
  12. 前記共用ファイルへの更新内容は順序性を保証して反映されることを特徴とする請求項8乃至11のいずれか1つに記載のファイルレプリケーション制御方法。
  13. 他の更新との順序関係を示す依存情報を前記更新内容と共に他ノードに伝播することを特徴とする請求項12に記載のファイルレプリケーション制御方法。
  14. 前記更新内容を受信したノードは、前記依存情報に基づき、該更新内容に先行する更新内容を受信した後で、該更新内容を自己の共用ファイルへ反映させることを特徴とする請求項13に記載のファイルレプリケーション制御方法。
  15. 前記共用ファイルへの更新内容の他ノードへの伝播の方式を1乃至複数の前記共ファイル単位で指定することを特徴とする請求項8乃至14のいずれか1つに記載のファイルレプリケーション制御方法。
  16. 前記共用ファイルへの更新内容を伝播するノードを1乃至複数の前記共ファイル単位で指定することを特徴とする請求項8乃至15のいずれか1つに記載のファイルレプリケーション制御方法。
  17. 新規参入時に自ノードの保持する共用ファイルのデータの復元処理を行い、該復元処理完了前にユーザプログラムを稼動させることを特徴とする請求項8乃至16のいずれか1つに記載のファイルレプリケーション制御方法。
  18. 前記復元処理によるデータの送信は、前記共用ファイルへの更新要求に対する処理と順序性を保証して行われることを特徴とする請求項17に記載のファイルレプリケーション制御方法。
  19. 前記復元処理完了前に生じた前記共用ファイルへの読み出し若しくは書き込み要求に対する処理を、前記共用ファイルを共用している他のノードに依頼することを特徴とする請求項17又は18に記載のファイルレプリケーション制御方法。
  20. 共用ファイルに対する処理を、該共用ファイルを共用する他ノードと同期して停止する整然停止を行ったノードは該整然停止を行ったことを記憶し、該共用ファイルへの処理を再開する際、他ノードと同期して再開することにより該共用ファイルに対するデータの復元処理を行わないことを特徴とする請求項8乃至19に記載のファイルレプリケーション制御方法。
  21. 複数のノードがネットワークに接続される構成のシステムにおけるファイルレプリケーション方法であって、
    第1のノードはファイルに読み出し若しくは書き込みする時に、トークン獲得を要求し、
    前記要求に対し前記第1のノードがトークンを獲得できない時は該トークンを保持している第2のノードを前記第1のノードに通知し、
    前記第1のノードは、前記獲得できない事を通知された時、前記第2のノードに前記ファイルへの読み出し若しくは書き込みを依頼する
    ことを特徴とするファイルレプリケーション方法。
  22. ネットワークにより他ノードと接続されるノードを構成するコンピュータにより使用された時、
    前記各ノードが共用する共用ファイルに対する読み出し若しくは書き込みを行う時、前記共用ファイルに対する最新のデータを自己が保持するときは自己の共用ファイルを読み出し若しくは書き込みし、
    前記最新のデータを他ノードが保持するときは、前記共用ファイルに対する書き込みを該最新のデータを保持する他ノードに依頼することを前記コンピュータに行わせるためのプログラムを記憶した前記コンピュータが読み出し可能な記録媒体。
  23. ネットワークにより他ノードと接続されるノードを構成するコンピュータにより使用された時、
    前記各ノードが共用する共用ファイルに対する読み出し若しくは書き込みを行う時、前記共用ファイルに対する最新のデータを自己が保持するときは自己の共用ファイルに対して読み出し若しくは書き込みを行い
    前記最新のデータを他ノードが保持するときは、前記共用ファイルに対する読み出し若しくは書き込みを該最新のデータを保持する他ノードに依頼することを前記コンピュータに行わせるためのプログラム。
JP2001131571A 2000-04-27 2001-04-27 ファイルレプリケーションシステム、ファイルレプリケーション制御方法及び記憶媒体 Expired - Fee Related JP4077172B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001131571A JP4077172B2 (ja) 2000-04-27 2001-04-27 ファイルレプリケーションシステム、ファイルレプリケーション制御方法及び記憶媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000126797 2000-04-27
JP2000-126797 2000-04-27
JP2001131571A JP4077172B2 (ja) 2000-04-27 2001-04-27 ファイルレプリケーションシステム、ファイルレプリケーション制御方法及び記憶媒体

Publications (2)

Publication Number Publication Date
JP2002014861A JP2002014861A (ja) 2002-01-18
JP4077172B2 true JP4077172B2 (ja) 2008-04-16

Family

ID=26590911

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001131571A Expired - Fee Related JP4077172B2 (ja) 2000-04-27 2001-04-27 ファイルレプリケーションシステム、ファイルレプリケーション制御方法及び記憶媒体

Country Status (1)

Country Link
JP (1) JP4077172B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389309B2 (en) * 2003-02-28 2008-06-17 Microsoft Corporation Method for managing file replication in applications
US20050289152A1 (en) * 2004-06-10 2005-12-29 Earl William J Method and apparatus for implementing a file system
US20060117018A1 (en) * 2004-11-30 2006-06-01 Microsoft Corporation Method and system for caching remote files locally
JP2009193502A (ja) 2008-02-18 2009-08-27 Hitachi Ltd 計算機システム、ストレージ装置、及び、処理代替方法
JP5215141B2 (ja) * 2008-11-25 2013-06-19 三菱電機株式会社 電力系統監視制御システム
JP2010198200A (ja) * 2009-02-24 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> プロファイル情報管理装置、プロファイル情報管理方法、及びプログラム
JP5983484B2 (ja) 2013-03-21 2016-08-31 富士通株式会社 情報処理システム、情報処理装置を制御する制御プログラム及び情報処理システムの制御方法
CN105989123A (zh) 2015-02-13 2016-10-05 阿里巴巴集团控股有限公司 一种数据同步方法、装置和系统

Also Published As

Publication number Publication date
JP2002014861A (ja) 2002-01-18

Similar Documents

Publication Publication Date Title
US20010039548A1 (en) File replication system, replication control method, and storage medium
US9747301B2 (en) Distributed file system using consensus nodes
US8706833B1 (en) Data storage server having common replication architecture for multiple storage object types
US7769722B1 (en) Replication and restoration of multiple data storage object types in a data network
ES2881606T3 (es) Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada
US7266718B2 (en) Computer system for recovering data based on priority of the data
US11481139B1 (en) Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity
US9274906B2 (en) Implementing failover processes between storage stamps
US9495381B2 (en) Geographically-distributed file system using coordinated namespace replication over a wide area network
US7650477B2 (en) Method for changing a remote copy pair
US7130974B2 (en) Multi-site remote-copy system
US8285824B2 (en) Storage system and data replication method that refuses one or more requests for changing the first logical configuration information until the first storage apparatus and second storage apparatus are synchronized
US9846704B2 (en) Distributed file system using consensus nodes
US7778975B2 (en) Mirroring method, mirroring device, and computer product
US9069597B2 (en) Operation management device and method for job continuation using a virtual machine
JPH11120103A (ja) 管理オブジェクトによるネットワーク管理システム
US20070220072A1 (en) Computer-readable recording medium containing database copying program, and database copying apparatus and method
JP2007115007A (ja) ストレージ装置のリストア方法及びストレージ装置
US6226694B1 (en) Achieving consistency and synchronization among multiple data stores that cooperate within a single system in the absence of transaction monitoring
US7290100B2 (en) Computer system for managing data transfer between storage sub-systems
JPH0822409A (ja) ネットワークにおける配布情報管理システム
EP1480130B1 (en) Method and apparatus for moving data between storage devices
JP4077172B2 (ja) ファイルレプリケーションシステム、ファイルレプリケーション制御方法及び記憶媒体
US20050278382A1 (en) Method and apparatus for recovery of a current read-write unit of a file system
JPH11232159A (ja) ファイル管理方法およびファイル管理のためのプログラムを記憶した媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080131

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110208

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110208

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120208

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130208

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130208

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140208

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees