JP3450786B2 - 異なるデータファイルを調停する方法 - Google Patents
異なるデータファイルを調停する方法Info
- Publication number
- JP3450786B2 JP3450786B2 JP2000056344A JP2000056344A JP3450786B2 JP 3450786 B2 JP3450786 B2 JP 3450786B2 JP 2000056344 A JP2000056344 A JP 2000056344A JP 2000056344 A JP2000056344 A JP 2000056344A JP 3450786 B2 JP3450786 B2 JP 3450786B2
- Authority
- JP
- Japan
- Prior art keywords
- file
- site
- version
- journal
- files
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
タのための分散型ファイルシステムのフィールドに関連
するもので、より詳しくは、分散形計算機システム内部
の異なる記憶場所で存在する可能性があるファイルの異
なったバージョンの調停に関するものである。
に、分散型ファイルシステムを使用することがコンピュ
ータシステムにとってますます共通化されている。この
傾向は、伝統的な集中化されたファイルシステムをディ
スクに密接に連結された単一コンピュータ上で実行する
アプリケーションプログラムのみにアクセス可能な磁気
ディスクに記憶されているデータファイルに置き換える
ものである。コンピュータの機能性が増加し、それらの
コストが低下することに伴い、全体的なコンピュータシ
ステムの性能は、データファイルのコピーが複数の記憶
場所に存在できるようにすることの恩恵を受けてきた。
代の例は、ローカルファイルサーバに接続されたデスク
トップのワークステーションまたはパーソナルコンピュ
ータが関与する。デスクトップコンピュータ上のファイ
ルの記憶は、デスクトップコンピュータ上のプログラム
実行の速い実施を可能にする一方、ファイルサーバ上の
これらのファイルの存在は、データファイルシェアリン
グ、すなわち企業で使用される多くの分散アプリケーシ
ョンプログラムで要求される機能が提供される。
ュータを有しているモバイルユーザや、ワークステーシ
ョンでのユーザおよび組織の中に存在する中央のデータ
リポジトリー(中央データ格納庫)との間でのデータの
同種の調整を可能にする。分散型ファイルシステムにお
いては、一般的に、ある時間でファイルの少なくとも2
つの異なるバージョンが異なる記憶場所にあり、1つの
バージョンのみがシステムの全てのユーザによって使用
されるべき最新の、すなわち正しいバージョンであり得
る。この可能性のため、ファイルシステムの一貫性を保
証するためのメカニズムが分散型ファイルシステムに使
用される。
ージョンがアプリケーションプログラムに提供されるな
らば、システムにおける旧式すなわち正しくないバージ
ョンが存在することがあっても一貫性が保たれる。ファ
イルシステムの一貫性(coherence)を保持することへの
1つのアプローチは、直接的なユーザ制御のファイル転
送である。
である。他の例は、カーミット(Kermit)として知られ
ている公衆ファイル転送プロトコルとワシントン州のト
ラベリングソフトウェア社(Traveling Software, In
c.)のラップリンク(Laplink)として知られている製
品を含む。Laplinkプログラムは、主にポータブルコン
ピュータとデスクトップコンピュータまたは他のポータ
ブルコンピュータのいずれかとの間のファイルを転送す
るために使われる。これらのファイル転送手順の全て
は、ファイル転送プロセス上のコンピュータの重要な制
御をユーザに与える。
システムの一貫性の問題向けに特注されたものでない。
ユーザには、ファイルのバージョン間の競合を予期し、
競合が生じる場合にそのような競合を検出し、現在用い
られていないバージョンをファイルから除去し、およ
び、ファイル更新が必要とされるシステムのポイントに
確実に適宜配布されるようにする実質的な責務が負われ
ている。
ァイルのシャドウイングや即時の更新を用いる。そのよ
うな技術は、ネットワークファイルシステム(NFS)
のようなシステムに使われる。これらの技術を用いてい
るシステムにおいては、ファイル更新は直接に全ての記
憶場所へ同報され、いくつかのケースにおいて、更新さ
れているファイルの使用は全てのコピーが更新されるま
で妨げられる場合もある。この保守的なアプローチは、
一貫性を保持することへの競合の可能性を除去し、主に
ユーザに対して平明(透過性のあるもの)である。しか
しながら、それは同様にシステム性能を下げ、ユーザ制
御の相対的な欠如に関連した他の問題を引き起こす傾向
がある。さらに、その技術は、より幅広いコンピュータ
システムに断続的にしか接続しないモバイルユーザには
それほど適していない。
ンピュータシステム内部のデータファイルのための「特
別な記憶場所」の存在に依存する。例えば、単一のファ
イルサーバが、ファイルの正しいバージョンが得られる
ことができるシステムにおける唯一のポイントであるか
もしれない。したがって、ファイルサーバは全てのファ
イル調停(reconciliation)に関与しなければならな
い。
ロソフト社によって配布されたウインドウズ95オペレ
ーティングシステムに含められる「ブリーフケース」と
して知られているプログラムに具体的に表現される。ブ
リーフケースは、デスクトップのパーソナルコンピュー
タとポータブルコンピュータの間のデータファイルの一
貫性を保持するために使用することができる。
ァイル記憶サイトとして取り扱われ、ポータブルコンピ
ュータはデスクトップコンピュータから得られたファイ
ルのコピーを一時的に保つ「ブリーフケース」として扱
われて、ユーザがオフィス環境に戻った時点で、コピー
すなわち更新されたバージョンがデスクトップコンピュ
ータに返送される。
システムは、その特別な記憶場所が壊れているかまたは
アクセス不可能である場合にファイルを更新する。CO
DAとBayouのようなバージョンベクトルシステムは、
各サイトで昇順のバージョン番号を生成し、新規のバー
ジョン番号を作成または更新する各オブジェクトと関連
させることによって、特別な記憶場所を使用することを
避けている。
サイトのIDと更新のためのそのサイトのバージョン番
号を含む。各最新のオブジェクトは、個々のサイトのバ
ージョン番号のサイトによってインデックス付けされる
ベクトルと関連させられる。
結びつくことができる。すなわち、1つのベクトルの全
てのコンポーネントは他のベクトルの対応するコンポー
ネント以下、その逆、あるいはそれよりも小さいものも
大きいものもある。最後のケースが、矛盾している更新
を検出するために使用される。
のアプローチは、1997年2月4日に発行された米国
特許第5,600,834号(発明者:ハワード)に記載
されており、ケンブリッジ・マサチューセッツの三菱電
機情報技術センターアメリカ社に譲渡された。このファ
イル調停技術には、自動メカニズムおよびユーザ制御の
組合せを使用するものと記載されている。
ルの作成、変更及び削除の履歴が記録されている一組の
ジャーナルファイルを使用しており、各ジャーナルファ
イルは、特定のサイトまたは記憶場所に関係する履歴の
部分を保持する。この明細書中で使用されているよう
に、用語「サイト」は、ハードディスクかフロッピーデ
ィスクのような特定の記憶媒体の上の作業ディレクトリ
とそのサブディレクトリを意味する。
調停プロセスは、明らかにユーザによって遂行されて制
御され、ユーザによって指定されたサイトに存在するフ
ァイルと現行のディレクトリのバージョンを調停するよ
う動作する。そのプロセスは、各ファイルまたはディレ
クトリの単一の最新のバージョンがあるかどうかを判定
するために、ジャーナルファイルの中のサイトディレク
トリとバージョンエントリーを使用する。もし、それが
あるならば、そのバージョンを、調停に関係する他のサ
イトへコピーする。また、プロセスは、ファイルの異な
るバージョンが共通の以前のバージョンから派生したと
思えるシステムの中に存在するとき、これらの存在が示
された競合に対しチェックする。
トでの各々のファイルの生成/変更/削除履歴を復元する
ために、各々のジャーナルにおけるバージョンエントリ
ーのシーケンスを「結合する(merging)」ことによっ
て機能する。
なったジャーナルからのイベントを順序立てて配置する
ために、ジャーナルにおける「タイムスタンプ」として
言及され使用される。
が調停に関連した最新の時間を識別するために使用され
る「既知のサイト」エントリーにおけるタイムスタンプ
も含める。この情報は、間違いがなければジャーナルフ
ァイルの際限のない成長を妨げるためにジャーナルファ
イルからバージョンエントリーを除去するのに時折使用
される。
許5,600,834号の調停プロセスで記述されたよ
うなタイムスタンプの使用は、異なるコンピュータの間
の日時の不完全なトラッキングのため、時折望まれてい
ない結果を引き起こす。
サイトで存在しているファイルの以前のバージョンは、
タイムスタンプが旧式のバージョンをより最近のもので
あるかのように不正に見せかけさせるので、他のサイト
で存在している正しいバージョンの上書きされるかこと
がある。
時間時刻の間調整を行って、他のコンピュータがそのよ
うな調整をまだ行っていなかったときに、起こることが
ある。同様の理由で、タイムスタンプに頼ることは、サ
イト毎の調停時刻を追跡するプロセスの中で同様に問題
を引き起こす可能性がある。
もので、特に、複数のサイトが互いに離隔して配置さ
れ、比較的に遅い長距離通信リンクを介した場合のみし
か互いに通信できない、異なる記憶サイト間に維持され
たファイルを調停して大きなファイルのセットを複写す
ることができる、異なるデータファイルを調停する改良
された方法を提供するものである。
ァイルシステムにおける異なるファイル記憶サイトを調
停する改善された方法が開示される。一組のジャーナル
またはログファイルは、ファイル変更の履歴を異なるサ
イトの各々で追跡するために使用される。ジャーナルフ
ァイルは、対応するサイトの各ファイルと関連させられ
たバージョンエントリーのシーケンスを含む。
応するバージョンのコンテンツを高い確率でユニークに
識別するするためにハッシュコードまたはダイジェスト
を含む。調停プロセスの間に、各ジャーナルの中のバー
ジョンエントリーから得られたハッシュコードのシーケ
ンスは、(1)調停の中で含まれたいずれかのファイル
に競合が存在するかどうか、(2)存在しないのなら
ば、ファイルのバージョンは、最新のバージョンであ
る、ということを判定するために相互に比較される。次
に、最新のバージョンは必要に応じて他のサイトにコピ
ーされ、ジャーナルはコピーしているファイルを反映す
るために更新される。
ードが発生するファイルのコンテンツをユニークに識別
する非常に高い確率で既知のメッセージ・ダイジェスト
・プログラムに従うファイルのコンテンツから計算され
る。ファイルの異なるバージョンが異なるコンテンツを
持つので、それらは同様に異なるコードに結びつく。
た調停プロセスがタイムスタンプの使用から起こってい
る望まれていない上述したような結果をもたらさないよ
うに、ファイルの異なるバージョンを独立して識別す
る。
トに依存せずに独自の昇順バージョン番号を生成するこ
とは、バージョンベクトルを各々の目的のために保持す
る必要がないので、バージョンベクトルアプローチとも
異なる。
トの掛かり合いをファイル調停の中で追跡する。各々の
ジャーナルファイルにおける各々のバージョンエントリ
ーは、他のサイトに関連するジャーナルファイルのいず
れがエントリーのコピーを持つかを示すサイトインジケ
ーターフィールドを含む。
れると、サイトインジケータフィールドは、どのサイト
が調停に関連しているかを示す値に設定され、その結
果、バージョンエントリーのコピーを持つ。
ールドによって示されるように、バージョンエントリー
のコピーを持つとき、間違いなく、いかなる以前のバー
ジョンエントリーも削除されるようにすることが安全で
ある。
ントリーを使用するので、さらにハッシュコードの独自
性を活用してタイムスタンプの使用と関連した問題を回
避することができる。
Pプロトコルを使用して大量データを伝送するために、
ネットワークリンクによって互いに遠隔的に接続された
クライアントサイト及びサーバサイトを含む。
してそれぞれ参照された2つの別々のサイトに存在して
いるファイルのリスト出力を示す。これらのファイル
は、ファイル名によってリストされる。SITE1は、3つ
のユーザファイルfile1.xxx、file2.xxx及びfile3.x
xx、2つの追加のファイルfile5.xxxとfile6.xxxを含
んでいるサブディレクトリsub1.dir及びジャーナルフ
ァイルsite1.jnlを含む。「xxx」値は、ユーザデータ
ファイルとしてファイルを識別するファイル形式拡張子
を表す。
たファイルfile4.xxxを含むという点と、file3.xxxを
持たないという点を除いては、SITE1と同じファイルを
含む。SITE2のジャーナルファイルは、site2.jnlと呼
ばれる。
ル及びディレクトリファイルは、サイトSITE1及びSITE
2が属するコンピュータシステムのユーザによって作
成、リード、変更及び削除される。
のファイル及びディレクトリは、互いにミラーリングさ
れている。例えば、サイトSITE1は、ユーザのワークス
テーションのハードディスク上の領域であってもよく、
サイトSITE2は、ワークステーションのファイルの共有
またはバックアップコピーを保有するのに使用されるフ
ァイルサーバ内の大容量ディスクの領域であってもよ
い。したがって、定期的に、2つのサイトでのユーザフ
ァイルとディレクトリは、両方のサイトがファイル及び
ディレクトリの最新のコピーを持つように、互いに調整
される。
造を示す。図3に示すように、ジャーナルファイルは、
ヘッダ、一つ以上のサイトエントリー及び一つ以上のバ
ージョンエントリーから成る。サイトがサブディレクト
リを持つ場合のように、複数のヘッダがあってもよい
が、サイトエントリーは、最初のヘッダラインの後にの
みある。サイトエントリーは、調停に関連している各サ
イトに存在する。
た各ファイルの各バージョンのために、ジャーナルファ
イルに加えられる。バージョンエントリーは、古くなっ
たときに排除されるので、いかなる与えられた時間でも
ジャーナルファイルにおけるバージョンエントリーも各
ファイルに関連のあるバージョンの履歴だけを表す。
ャーナルファイルに現れるサイトは、<sitename>とラベ
ルされたフィールドで識別される。また、ヘッダは、サ
イトが属するコンピュータシステムのタイプを識別する
ために使用される<systype>とラベルされたフィールド
と、ジャーナルファイルを作成した調停プログラムのバ
ージョンを識別するための<programname>とラベルされ
たフィールドをも含む。
は、いくつかのフィールドを含む。これらは次のように
記述される。
いくつかのフィールドを含む。これらは次のように記述
される。
2に示されたサイトに関する典型的なジャーナルファイ
ルを示す。 SITE1のジャーナル $ <date> <time> SITE2 ?1 $ <date> <time> SITE1 ?2 + f1date f1time file1.xxx dt=aaaaa + f2date f2time file2.xxx dt=bbbbb + f3date f3time file3.xxx dt=ccccc + s1date s1time sub1.dir/ SITE1/sub1.dirのジャーナル +f5date f5time file5.xxx dt=eeeee + f6date f6time file6.xxx dt=fffff
スは、調停に関係する相互に関連付けられた既存のジャ
ーナルファイル10及びディレクトリ11を読み込む。
ステップ12で、各サイトに関連するジャーナルにおけ
るバージョンエントリーは、個々のサイトのファイル及
びディレクトリの最新のバージョンを反映するように更
新される。
テンツが、サイトディレクトリ及びサブディレクトリを
読み込むことによって判断される。新たな「+」バージ
ョンエントリーが、(1)対応するバージョンエントリ
ーを有さない(従って新たに作成されたと推定される)
か、または(2)ジャーナルファイルのファイルまたは
ディレクトリに関する最後のバージョンエントリーに含
まれる日時とは異なった日時を有する(従って変更され
たと推測される)、ファイル及びディレクトリについて
作成される。「+」バージョンエントリーが作成される
方法は、図8を参照して以下に詳細に説明する。
を有し、タイムスタンプが適合すれば、サイトに存在す
るファイルのバージョンはそのファイルに関する最後の
バージョンエントリーと一致する。この場合、新たなバ
ージョンエントリーは作成されない。このようにして、
不必要なダイジェストの再計算が避けられる。ダイジェ
ストの計算はコンピュータ集約的であるため、新たなま
たは変更されたファイルについてのみ新たなダイジェス
トを作成するというこの特徴により、調停プロセスの性
能が高まる。
その削除であることがあり得る。ジャーナル全体を通し
てパスが行われ、既存のバージョンエントリーで命名さ
れた何れかのファイルまたはディレクトリがファイルシ
ステムから削除されているかどうかを判断する。かかる
ファイルの何れについても、削除されたファイルまたは
ディレクトリの名前を含む新たな「−」バージョンエン
トリーが作成され、最後に行われたアクションが対応す
るサイトでのファイルの削除であったことを示す。
と、最新の調整に関係しているサイト及びジャーナルに
記述された他のサイトの両方を含む、既知のサイトの単
一のマスターリストに、これらのジャーナルのサイトエ
ントリーがマージされる。またマスターリストは、新た
なジャーナルで使用されるマスクビットと、各サイトに
関する最後の既知の調整の日時を含む。
サイトエントリーが更新される。まず、最新の調停に関
係する各サイトに関するエントリーが、現在時を含むよ
うに更新される。次に、古いサイト(1ヶ月など長期に
亘ってアクセスされていない)が排除される。その結果
得られる最新の調整に関係しないサイトを含むサイトの
リストは、関係するサイトに関する新たなジャーナルの
全てに最終的に含まれることになる。
ては、特定のジャーナル内でのみ意味があることに注意
すべきである。上記のようにジャーナルがマージされる
と、サイトならびにバージョンエントリーの両方におけ
るマスクビットは、バージョンとサイトとの間の関連を
維持するのに適するように再度マッピングされる。
ットは次のようにサイトに割り当てられる。ジャーナル
に記述された第一のサイトにはマスク値1が与えられ、
第二のサイトにはマスク2が与えられ、第三にはマスク
4が与えられ、第四にはマスク8が与えられ、以下同様
に続く。この割り当ては任意であり、これに代わる実施
の形態において他の方法で行われてもよい。サイトが放
棄された場合には、その対応するマスクビットは他のサ
イトが自由に使用できるようになる。後のサイトはでき
たギャップを自動的に埋めるように上に移動する。
まず、ジャーナルの各ファイル名に関するバージョンエ
ントリーのシーケンスが比較される。この工程は、「マ
キシマム・コモン・サブシーケンス(Maximum common s
ubsequence)」またはMCSアルゴリズムとして知られ
るアルゴリズムを採用している。MCSアルゴリズム
は、各ファイル名に「共通の」バージョンエントリー、
すなわち調停しているサイトに関する全てのジャーナル
ファイルに含まれるバージョンエントリーのサブシーケ
ンスが存在すれば、かかるサブシーケンスを発見する。
この共通のサブシーケンスは、調停プロセスによる更な
るアクションの基礎を形成する。
の後に何れかのジャーナルファイルに現れる最後のバー
ジョンエントリーが存在すれば、かかるエントリーを識
別する。何れのジャーナルファイルも最後の共通のバー
ジョンエントリーの後にデータファイルに関するバージ
ョンエントリーを有していない場合には、ファイルの最
新のバージョンは各サイトに既に存在している。この場
合には、そのファイルに関しては更に調整アクションを
取る必要はない。
があるかどうかをチェックすることである。(1)調整
されるサイトのジャーナルにおけるファイル名について
共通のサブシーケンスが存在しないか、または(2)最
後の共通のバージョンエントリーの後に2つ以上のジャ
ーナルに異なったバージョンエントリーが存在する場合
に、競合が存在する。
のバージョンが最新であるかをハッシュコードから判断
することは不可能である。この場合に、競合するバージ
ョンの1つを独特で識別的な名前を使って名前を変更
し、競合を抹消する。どのバージョンの名前を変更する
かの選択は任意であり、選択するための1つの単純な方
法は早いタイムスタンプを有するバージョンを選ぶこと
である。この名前変更の後に、競合するバージョンの両
方が必要に応じて他のサイトに写され、ユーザは2つの
ファイルを比較して適切な修復アクションを取るように
通知される。
なければ、最後の共通のバージョンエントリーに続くバ
ージョンエントリーを有するサイトに存在するファイル
の最新バージョンは、他のサイトにコピーされる。最新
バージョンは1つのサイトにのみ存在することがしばし
ばある。しかし、コピーが行われる前に複数のサイトに
最新バージョンが存在することがあり得る。
れが存在するサイトの何れかからコピーされて、最新バ
ージョンが存在しないサイトにのみコピーされる。コピ
ーが行われると、ファイルの最新バージョンを受け取る
サイトのジャーナルに新たな「+」バージョンエントリ
ーが添付される。
ム間で、例えばUNIXシステムからWindowsシステムにコ
ピーされる場合がある。これらのシステムは異なった文
字を使って、テキストファイルにおけるテキストのライ
ンの末端を示す。このような場合には、エンド・オブ・
ライン文字は、コピー先のシステムとの適切な互換性を
確保するように、必要に応じてファイルコピー工程中に
変更される。以下に説明するように、テキストファイル
へのこれらの小さな変更は、独自にファイルを識別する
ハッシュコードの能力に影響せず、従ってハッシュコー
ドを変更せずにコピーできる。
ーの後の最後のバージョンエントリーが、ファイルが削
除されたことを示す「−」バージョンエントリーである
場合には、ファイルがまだ存在するサイトからそのファ
イルが削除され、それに応じて「−」バージョンエント
リーがジャーナルに添付される。
無限に増大するのを防ぐために、ジャーナルは再度検査
されて旧式のバージョンエントリーを排除する。(1)
全てのジャーナルに共通の何れかのバージョンエントリ
ーより先であるか、または(2)例えば1ヶ月などの妥
当な古さよりも古い場合に、バージョンエントリーは旧
式になる。
の最後のエントリーであって、従って、これらのファイ
ルに関する他のバージョンエントリーよりも先ではない
古い削除、すなわち「−」エントリーを扱うために行わ
れる。旧式のバージョンエントリーが排除された後に、
更新されたジャーナルが、それに続く調整に使われる更
新されたジャーナルファイル18として書き戻される。
ージョンエントリーが全てのサイトがファイルの所与の
バージョンを見た最新の時点を表すため、特に重要であ
ることに注意すべきである。更に、ジャーナルにおける
最新のバージョンエントリーもまた、どのバージョンが
現在サイトに保存されているかを表すために、特に重要
である。
するMCSアルゴリズムのバージョンが使用され、最新
及び現在存在するバージョンとの適合を優先させる。こ
の重み付けは、全てのサイトを最新のものにしようとす
る前述の調停プロセスにとっては意義のあるものであ
る。しかし、バージョンエントリーの他の重み付けも可
能であり、調停プロセスの他の実施の形態においては好
適な場合もある。
の作成を図8を参照してここで説明する。バージョンエ
ントリーが作成される時点では、日付、時間、名前及び
種類のフィールドに含められる値は既知であり、従っ
て、これらは個々のフィールドに単に挿入されるだけで
ある。
すように作成される。バージョンエントリーが最初に作
成されると、そのマスクは、そのバージョンが作成され
たサイトを除く全てのサイトについて設定され、その1
つのサイト以外の全てのサイトでは知られていないこと
を示す。他のサイトとのこのバージョンの調停が成功す
ると、バージョンの対応するマスクビットをリセットす
ることになり、そのバージョンが追加サイトにおいて知
られていることを示す。
ビットの全てがリセットされると、バージョンは知られ
てあらゆるところに伝えられる。バージョンがあらゆる
ところで知られると、同じファイルに関する全ての以前
のバージョンエントリーは旧式になり、安全なように排
除することができる。
ップ22で作成される。メッセージダイジェストバージ
ョン5(MD5)として知られる手順が、ファイルの内
容を入力として使用して実行される。この入力に基づい
て、MD5は、同じファイルの前後のバージョンを含
む、全てのあり得るファイルの中でファイルを一意に識
別する非常に高い確率を有する、16バイト(128ビ
ット)のダイジェストを計算する。
は、約1040またはほぼ100万から100万の累乗
(one million to the one-millionth power)である多
数の可能なコードによるものである。ハッシュコードを
作成する方法は他にもある。許容できる程度に低い率の
適合ミスを生ずるアルゴリズムを使用することが望まし
い。
ブ・ライン文字はダイジェストの計算において無視され
る。この特徴により、上記のようにファイルが異なった
種類のシステム間でコピーされる時に、これらの文字を
透過性のあるように変更することが可能になる。この特
徴は最適化であり、ダイジェストの計算にこれらの文字
を含めることは代替的な実施の形態においても役立つで
あろう。
ために以下に例を示す。例1は通常で競合がない場合で
ある。例2は競合を示す。例3及び例4はサイトエント
リーの作成と旧式のバージョンエントリーの排除を例示
している。図9ないし図11は、ぞれぞれfile1、file2
及びfile3の以下のシナリオを作り出す変更とコピーの
シーケンスを示す。垂直の矢印は変更を示し、水平の矢
印はコピーを示す。関係のない詳細を省くためにファイ
ルの拡張子は削除し、ファイルの異なったバージョンか
ら計算されるハッシュコードを5ビットの英数字を使っ
て表している。実際には、ハッシュコードは上述のよう
により長いストリングである。
ら): SITE1 SITE2 + file1 jj39z + file1 jj39z + file2 r9t4w + file2 r9t4w + file3 pq9zr + file3 pq9zr
の変更及びサイト2でのfile3の削除を示す最新のサイ
トディレクトリ: SITE1 SITE2 file1 jj39z file1 jj39z file2 kpn33 file2 r9t4w file3 pq9zr
ジャーナルの最初の更新の結果。サイト1でのfile2及
びサイト2でのfile3に関する新たなバージョンエント
リーが付加されている:
ァイルの最新バージョン間の適合は、破線で示されてい
る。file2の新たなバージョン及びfile3の削除は、対応
するバージョンエントリーがこれらのファイルの最新の
共通のエントリーの後に現れているため、削除した。
れに従ってジャーナルを更新した結果: SITE1 SITE2 + file1 jj39z + file1 jj39z + file2 r9t4w + file2 r9t4w + file2 kpn33 + file2 kpn33 + file3 pq9zr + file3 pq9zr - file3 - file3
て、ジャーナルから古いバージョンを排除した結果: SITE1 SITE2 + file1 jj39z + file1 jj39z + file2 kpn33 + file2 kpn33 - file3 - file3
両サイトのfile1のバージョンが不一致に更新されてい
るものとする。 8.file1への競合のある更新の後の新たなサイトの内
容: SITE1 SITE2 file1 d9qlj file1 92w3a file2 kpn33 file2 kpn33
映するように更新した結果で、マージングと競合検出が
続く: SITE1 SITE2 + file1 jj39z ---- + file1 jj39z + file1 d9qlj + file1 92w3a + file2 kpn33 ---- + file2 kpn33 - file3 ---- - file3両サイトで最後の共通
のバージョンには適合しないバージョンが続くfile1に
関して競合が検出される。
を変更した結果としてのサイトの内容: SITE1 SITE2 file1 d9qlj file1#1 92w3a file2 kpn33 file2 kpn33
た新たな独自のファイル名である。ここで、各サイトに
は新たなファイルがある。
イトを一致させた結果: SITE1 SITE2 file1 d9qlj file1 d9qlj file1#1 92w3a file1#1 92w3a file2 kpn33 file2 kpn33
と、旧式のバージョンを排除することができ、その結
果: SITE1 SITE2 + file1 d9qlj + file1 d9qlj + file1#1 92w3a + file1#1 92w3a + file2 kpn33 + file2 kpn33 - file3 - file3
SITE1とSITE2との間の上記の調整を開始点と仮定する
と、各ジャーナルファイルのサイトエントリーは以下の
とおり: site1.jnl: $ date1 time1 SITE1 ?01 $ date1 time1 SITE2 ?02 site2.jnl: $ date1 time1 SITE1 ?01 $ date1 time1 SITE2 ?02
の間で調整が行われる。新たなサイトエントリーは以下
のとおり: site1.jnl: $ date2 time2 SITE1 ?01 $ date1 time1 SITE2 ?02 $ date2 time2 SITE3 ?04 site2.jnl(変更せず) $ date1 time1 SITE1 ?01 $ date1 time1 SITE2 ?02 site3.jnl: $date2 time2 SITE1 ?01 $ date1 time1 SITE2 ?02 $ date2 time2 SITE3 ?04
バージョンを排除する1.例1及び例2ではSITE1及びS
ITE2のみが存在すると仮定した。仮に、例えばサイトマ
ーク?4のSITE3などの他のサイトがあるとすれば、古い
ジャーナルエントリーは排除されず、ジャーナルは継続
したであろう: SITE1(?1) SITE2(?2) SITE3(?4) + file1 jj39z + file1 jj39z + file1 jj39z + file1 d9qlj ?4 + file1 d9qlj ?4 + file1#1 92w3a ?4 + file1#1 92w3a ?4 + file2 r9t4w + file2 r9t4w + file2 r9t4w + file2 kpn33 ?4 + file2 kpn33 ?4 + file3 pq9zr + file3 pq9zr + file3 pq9zr - file3 ?4 - file3 ?4 例えばfile1(jj39z)についての旧式のエントリーは、そ
れに続くエントリー(d9qlj)が全てのサイトではまだ知
られていないため、排除することができない。
い)との間で調整が行われた場合には、適切なファイル
はSITE3にコピーされて、それらのジャーナルはこれを
反映するように更新されるであろう: SITE1 SITE2 SITE3(?4) + file1 jj39z + file1 jj39z + file1 jj39z + file1 d9qlj ?4 + file1 d9qlj + file1 d9qlj + file1#1 92w3a ?4 + file1#1 92w3a + file1#1 92w3a + file2 r9t4w + file2 r9t4w + file2 r9t4w + file2 kpn33 ?4 + file2 kpn33 + file2 kpn33 + file3 pq9zr + file3 pq9zr + file3 pq9zr - file3 ?4 - file3 - file3
ーが全てのサイトにあることが知られているため、SITE
2及びSITE3でジャーナルから排除することができる。 SITE1(?1) SITE2(?2) SITE3(?4) + file1 jj39z + file1 d9qlj ?4 + file1 d9qlj + file1 d9qlj + file1#1 92w3a ?4 + file1#1 92w3a + file1#1 92w3a + file2 r9t4w + file2 kpn33 ?4 + file2 kpn33 + file2 kpn33 + file3 pq9zr - file3 ?4 - file3 - file3 SITE1のジャーナルは、それが次回にSITE1またはSITE3
の何れかと調整されるときに排除されるであろう。
応する改良されたファイル調停プロセスを説明してき
た。開示した調停プロセスは多くの方法で変更が容易で
ある。例えば、バージョンエントリーを更新する場合、
その内容がタイムスタンプによって示されているように
変更されているかどうかに拘わらず、サイトで発見され
る全てのファイル及びディレクトリについて新たなバー
ジョンエントリーを作成することが可能である。この変
更は、コンピュータ集約的であるため、および変更され
ていないファイルについてのダイジェストの不必要な再
計算のために、性能が低下する見返りに幾分か工程を単
純にするであろう。上記のように、特定のダイジェスト
アルゴリズムは、適切な独自のダイジェストを生ずる多
くのアルゴリズムの何れであってもよい。
ョンエントリーは、バージョンエントリーのシーケンス
におけるその位置に関して異なった重み付けを受けるこ
とができる。例えば、ユーザが指定するバージョンエン
トリーには、シーケンスまたはタイムスタンプの何れか
における位置に基づいて完全に無視できるものもある。
かかるアプローチは、例えばサイトがある古い日付まで
あるいはある古い既存のバージョンまでに限って調整さ
れる場合には、役に立つであろう。
は、各サイトのファイル及びディレクトリに直接アクセ
スするためにその工程が実行されているプロセッサの能
力に依拠している。他のメカニズムを採用してファイル
操作を実行してもよい。
に動作するように適合することができる。図12におい
て、分散型ファイルシステム100は、クライアントサ
イトにあるクライアントシステム110と、サーバサイ
トにあるサーバシステム120とを含み、これらは互い
に通信リンク130によって接続されている。クライア
ント及びサーバは、リンク上のTCP/IPプロトコル
を使用して、容易に利用可能な通信ネットワーク、例え
ばインターネットを介して互いに通信することが可能で
ある。
を反映するように意図されたファイル記憶システム11
1及び121を保持している。しかし、特にサイトが互
いに離れており、サイト間に通信リンクがない、例え
ば、クライアントシステム110が、旅行中のユーザが
保有しているラップトップコンピュータである場合にユ
ーザがファイルを更新すると、時が経つにつれて、2つ
のサイトにあるファイルは次第に異なってくる。ある時
点で、記憶システム111及び121を調停する必要が
出てくる。特に、クライアントとサーバが離れたままで
ある間に記憶システムを調停することが望ましい。
うに進む。クライアント110のユーザは、サーバ12
0に接続している間にクライアントシステム上の調停プ
ロセスのクライアントコピー112を開始する。それと
同時に、クライアントは、リンク130上の、UNIX
?rlogin?または?rsh?コマンドなどの呼び出しコマンド
invoke131を使用して、サーバ上の調停プロセスのサ
ーバコピー122を呼び出す。そうすると、調停プロセ
スの2つのコピーが協働することができる。
は、ローカル記憶システム(112、122)上のファ
イルの最新コピーを反映するように、ジャーナルのロー
カルコピー(114、124)を更新する。クライアン
トによって発せられるGETJOURNALコマンド132に応答
して、サーバは更新したジャーナル133をクライアン
トに送信する。クライアントは上述したように、ジャー
ナルを結合する(ジャーナル結合(115))。
成した後、クライアントはGET FILEまたはPUT FILEコマ
ンド134を発して、クライアントとサーバの間で異な
るファイルをコピーする。これは、クライアントにおい
てファイル116を直接更新するとともに、サーバにお
いて遠隔ファイル操作126を使用して反映されたコピ
ーを更新する。更新する毎に、ACK応答135による
承認が行われ、ステップが首尾よく完了したことを示
す。
た後に、クライアントは、承認されうるPUTJOURNALコマ
ンド136を使用して、更新されて結合されたジャーナ
ルをサーバに返送する。更新かつ結合されたジャーナル
はここで、それぞれのローカル記憶システム(118、
128)に書き込まれ(新ジャーナル書き込み)、先行
のコピーを置き換えることが可能である。調停の結果は
ステップ119において報告することができる。
クファイルシステムに依拠しない。その結果、調停は、
タイムスタンプ、アクセス制御、及びシンボリックリン
クなどのファイルシステムの詳細に対してより直接的な
制御を得ることができる。しかし、主な利得は、2つの
要因から導き出される性能向上である。
部分は、変更されたファイルについてローカルサイトを
走査するジャーナル更新プロセスである。遠隔調停にお
いて、クライアント及びサーバはこれを並列して行うこ
とができるため、結合タスクが高速化される。第2に、
より重要なこととして、サーバによる全体の更新がネッ
トワーク接続を介して通信されるコマンドではなく、ロ
ーカルファイルシステムI/Oコマンドのみを使用して
行われることがある。
れたファイル及び更新されたジャーナルなどの比較的少
数の大きなメッセージのみがリンク130を介して交換
される。低レベルのプロトコル実行に関係なく、遠隔調
停プロセスではジャーナルを取り出すために1つの交
換、ジャーナルを配置するために1つの交換、及び交換
された各ファイルについて1つの交換が必要である。さ
らに、リンクは、例えば拡張可逆データ圧縮を使用して
効率的な大量転送について最適化された転送プロトコル
を使用する。
のシーケンス、すなわち、ジャーナルを読み出して更新
し、次にそれを結合し、次にファイルを更新し、最後に
新たなジャーナルを書き込む、として実施される。ま
た、これらのステップを、階層ファイルディレクトリの
各サブディレクトリに順次適用するか、またはファイル
ベースで適用することも可能である。利点として、調停
プロセスが中断する前に行われていた作業を後の使用の
ために保持することができる。
概念から逸脱することなく、上記の方法及び装置に対す
る他の変更やそれらの変形が可能であることが明らかで
あろう。従って、この発明は、特許請求の範囲及び精神
によってのみ限定されるものと理解すべきである。
のサイトが互いに離隔して配置され、比較的に遅い長距
離通信リンクを介した場合のみしか互いに通信できな
い、異なる記憶サイト間に維持されたファイルを調停し
て大きなファイルのセットを複写することができる、異
なるデータファイルを調停する改良された方法を提供す
ることができる。
ル保存サイトのディレクトリリストである。
ル保存サイトのディレクトリリストである。
使用されるジャーナルファイルの構造図である。
ネントの構造図である。
ネントの構造図である。
ネントの構造図である。
チャートである。
ンエントリーが図7の調停プロセス中で作成される工程
の一部のフローチャートである。
ビティを例示したタイムライン図である。
ィビティを例示したタイムライン図である。
ィビティを例示したタイムライン図である。
ントサーバシステムのブロック図である。
トシステム、111ファイル記憶システム、112 ク
ライアントコピー、120 サーバシステム、121
ファイル記憶システム、122 サーバコピー。
Claims (5)
- 【請求項1】 遠隔ネットワークリンクで互いに接続さ
れたクライアントサイト及びサーバサイトに記憶される
異なるデータファイルを調停する方法であって、 それぞれのコンテンツによりデータファイルの対応する
バージョンを一意に識別するハッシュコードを生成する
ステップと、 該生成されたハッシュコードをクライアントジャーナル
ファイル及びサーバジャーナルファイルに記憶し、各ジ
ャーナルファイルのハッシュコードは、データファイル
の異なるバージョンが対応するサイトに記憶された順序
を示すシーケンスで記憶される、ステップと、 クライアントサイトにより、サーバジャーナルファイル
の複写を要求するステップと、 サーバジャーナルファイルをクライアントジャーナルフ
ァイルと結合して、結合されたジャーナルファイルをク
ライアントサイトに生成するステップと、 該結合されたジャーナルファイルからのハッシュコード
のシーケンスを分析して、(1)データファイルのどの
バージョンが現在のバージョンか、(2)現在のバージ
ョンが記憶されているサイト、(3)現在のバージョン
が記憶されていないサイト、を判定するステップと、 データファイルの現在のバージョンを、それが記憶され
ているサイトからそれが記憶されていないサイトに、ネ
ットワークリンクを介して置き換えるステップとを含む
異なるデータファイルを調停する方法。 - 【請求項2】 結合されたジャーナルファイルは、複写
を反映するように更新される、請求項1記載の異なるデ
ータファイルを調停する方法。 - 【請求項3】 更新されたジャーナルファイルは、複写
後に、ネットワークリンクを介してサーバサイトに送信
される、請求項2記載の異なるデータファイルを調停す
る方法。 - 【請求項4】 ファイルは、TCP/IPプロトコルを
使用してネットワークリンクを介して伝送される、請求
項1記載の異なるデータファイルを調停する方法。 - 【請求項5】 上記分析ステップ及び置換ステップは、
各サイトで同時に行われる、請求項1記載の異なるデー
タファイルを調停する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26331399A | 1999-03-05 | 1999-03-05 | |
US09/263313 | 1999-03-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000259474A JP2000259474A (ja) | 2000-09-22 |
JP3450786B2 true JP3450786B2 (ja) | 2003-09-29 |
Family
ID=23001264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000056344A Expired - Fee Related JP3450786B2 (ja) | 1999-03-05 | 2000-03-01 | 異なるデータファイルを調停する方法 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP1035482A2 (ja) |
JP (1) | JP3450786B2 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424266B2 (en) | 2007-10-01 | 2016-08-23 | Microsoft Technology Licensing, Llc | Efficient file hash identifier computation |
US8661428B2 (en) | 2008-04-25 | 2014-02-25 | Vmware, Inc. | Updating a file using differences and file format therefor |
US7591019B1 (en) | 2009-04-01 | 2009-09-15 | Kaspersky Lab, Zao | Method and system for optimization of anti-virus scan |
US9934229B2 (en) * | 2011-10-23 | 2018-04-03 | Microsoft Technology Licensing, Llc | Telemetry file hash and conflict detection |
US9672237B2 (en) | 2013-03-15 | 2017-06-06 | Amazon Technologies, Inc. | System-wide checkpoint avoidance for distributed database systems |
US11030055B2 (en) | 2013-03-15 | 2021-06-08 | Amazon Technologies, Inc. | Fast crash recovery for distributed database systems |
US9501501B2 (en) * | 2013-03-15 | 2016-11-22 | Amazon Technologies, Inc. | Log record management |
US10747746B2 (en) | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
US9760596B2 (en) | 2013-05-13 | 2017-09-12 | Amazon Technologies, Inc. | Transaction ordering |
US9208032B1 (en) | 2013-05-15 | 2015-12-08 | Amazon Technologies, Inc. | Managing contingency capacity of pooled resources in multiple availability zones |
US10303564B1 (en) | 2013-05-23 | 2019-05-28 | Amazon Technologies, Inc. | Reduced transaction I/O for log-structured storage systems |
US9460008B1 (en) | 2013-09-20 | 2016-10-04 | Amazon Technologies, Inc. | Efficient garbage collection for a log-structured data store |
US10216949B1 (en) | 2013-09-20 | 2019-02-26 | Amazon Technologies, Inc. | Dynamic quorum membership changes |
US10223184B1 (en) | 2013-09-25 | 2019-03-05 | Amazon Technologies, Inc. | Individual write quorums for a log-structured distributed storage system |
US9223843B1 (en) | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
US11386067B2 (en) | 2015-12-15 | 2022-07-12 | Red Hat, Inc. | Data integrity checking in a distributed filesystem using object versioning |
CN110188081B (zh) * | 2019-04-22 | 2024-03-01 | 平安科技(深圳)有限公司 | 基于cassandra数据库的日志数据存储方法、装置和计算机设备 |
US10903988B1 (en) | 2019-11-04 | 2021-01-26 | International Business Machines Corporation | Unique instruction identifier that identifies common instructions across different code releases |
CN111209128B (zh) * | 2019-12-20 | 2022-04-12 | 翱捷科技股份有限公司 | 一种嵌入式***及其日志管理方法 |
US11157268B2 (en) | 2020-01-23 | 2021-10-26 | International Business Machines Corporation | Linking copied code |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6098079A (en) * | 1998-04-02 | 2000-08-01 | Mitsubishi Electric Information Technology Center America, Inc. (Ita) | File version reconciliation using hash codes |
US6317754B1 (en) * | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
-
2000
- 2000-03-01 JP JP2000056344A patent/JP3450786B2/ja not_active Expired - Fee Related
- 2000-03-03 EP EP00104717A patent/EP1035482A2/en not_active Withdrawn
Non-Patent Citations (2)
Title |
---|
D.Ratner,P.Reiher,and G.J.Popek,Dynamic version vector maintenance,Technical Report CSD−970022,米国,University of California,1997年,p.1−7,URL,http://ficus−www.cs.ucla.edu/fmg/summary.html |
亀嶋他,世界規模分散ファイルシステムSkinny,情報処理学会研究報告,日本,社団法人情報処理学会,1995年 8月,Vol.95,No.79(95−0S−70),p.1−8 |
Also Published As
Publication number | Publication date |
---|---|
JP2000259474A (ja) | 2000-09-22 |
EP1035482A2 (en) | 2000-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3450786B2 (ja) | 異なるデータファイルを調停する方法 | |
US6098079A (en) | File version reconciliation using hash codes | |
US6694335B1 (en) | Method, computer readable medium, and system for monitoring the state of a collection of resources | |
EP1053523B1 (en) | System and method for website development | |
US6947940B2 (en) | Uniform name space referrals with location independence | |
US6983293B2 (en) | Mid-tier-based conflict resolution method and system usable for message synchronization and replication | |
US7539704B2 (en) | Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database | |
US6044381A (en) | Using distributed history files in synchronizing databases | |
US6792454B2 (en) | System and method for website development | |
US7529778B1 (en) | System and method for providing access to consistent point-in-time file versions | |
US8370311B2 (en) | Using versioning to back up multiple versions of a stored object | |
US5799141A (en) | Real-time data protection system and method | |
US7702641B2 (en) | Method and system for comparing and updating file trees | |
EP1618475A2 (en) | Flashback database | |
EP1422901A1 (en) | Client driven synchronization of file and folder content in web publishing | |
US20080005164A1 (en) | System and method for website development involving journaling and parent maps replacement | |
EP1066571B1 (en) | Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database | |
EP1235146A2 (en) | System and method for website development |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R154 | Certificate of patent or utility model (reissue) |
Free format text: JAPANESE INTERMEDIATE CODE: R154 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080711 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080711 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090711 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090711 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100711 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120711 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |