(57)【要約】  転送元マシーンと転送先マシーンの間のデータ転送を提供するシステム及び方法が開示される。本発明の一実施例において、データを転送する方法及びシステムは、第１のオペレーションが第１のメモリから第２のメモリへ第１のファイルをコピーすること、及び第１のメモリから第２のメモリへ第２のファイルをコピーすることを含む。第１のファイルは、第２のファイルのコピーと実質的に同時にコピーされ、第１のオペレーション結果が、第２のメモリにおいて第１のコピーファイル及び第２のコピーファイルとして生じる。第２のオペレーションを実行して、所定の順序で第１のコピーファイル及び第２のコピーファイルを更新する。【特許請求の範囲】
【請求項１】
第１のメモリから第２のメモリへ第１のファイル、且つ前記第１のメモリから前記第２のメモリへ第２のファイルをコピーする第１のオペレーションを実行する処理であって、前記第１のファイルは前記第２のファイルのコピーと実質的に同時にコピーされ、前記第１のオペレーション結果が前記第２のメモリ内の第１のコピーファイル及び第２のコピーファイルに生じる処理と、
前記第１のコピーファイル及び前記第２のコピーファイルを所定の順序で更新する第２のオペレーションを実行する処理、とを含むデータ転送方法。
【請求項２】
前記第１のオペレーションが同期オペレーションを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記２のオペレーションが実質的なリアルタイム複製オペレーションを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１のファイル及び前記第２のファイルが順序とは無関係にコピーされることを特徴とする請求項１に記載の方法。
【請求項５】
前記第１のファイルのコピー処理が、第１のスレッドに関連し、且つ前記第２のファイルのコピーが第２のスレッドに関連することを特徴とする請求項１に記載の方法。
【請求項６】
前記第１のオペレーションに関連する第１の命令が、第１のスレッド又は第２のスレッドによって処理され、前記第２のオペレーションに関連する第２の命令が、前記第２のスレッドによって処理されることができることを特徴とする請求項１に記載の方法。
【請求項７】
前記第１のファイルのコピー処理が、前記第１のメモリ及び前記第２のメモリとの間の第１のコネクションに関連し、前記第２のファイルのコピー処理が、前記第１のメモリ及び前記第２のメモリとの間の第２のコネクションに関連することを特徴とする請求項１に記載の方法。
【請求項８】
プロセッサと、
前記プロセッサに接続し、第１のファイル及び第２のファイルに関連する第１のメモリとを含むデータ転送システムであって、
前記プロセッサは、前記第１のメモリから第２のメモリへ前記第１のファイル、及び前記第１のメモリから前記第２のメモリへ第２のファイルをコピーする第１のオペレーションを実行するためにコンフィギュレーション(構成)され、前記第１のファイルは前記第２のファイルのコピーと実質的に同時にコピーされ、前記第１のオペレーション結果が、前記第２のメモリ内の第１のコピーファイル、及び前記第２のメモリ内の第２のコピーファイルに生じ、前記第１のコピーファイル及び前記第２のコピーファイルを所定の順序で更新する第２のオペレーションを実行するようコンフィギュレーションされることを特徴とするデータ転送システム。
【請求項９】
リアルタイムデータ複製システムに関連するデータを転送する方法であって、
第１及び第２のタイプの命令（コマンド）を処理することができる第１のスレッドを提供する処理と、
前記第１のタイプの命令を処理することができる第２のスレッドを提供する処理と、
前記第１のスレッドによる第１の命令と、前記第２のスレッドによる第２の命令とを実質的に同時に処理する処理であって、前記第１及び第２の命令は前記第１のタイプの命令に関連することを特徴とする方法。
【請求項１０】
前記第１のタイプの命令が同期命令を含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記第２のタイプの命令が非同期命令を含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記第１のスレッド及び前記第２のスレッドによる前記第１及び第２の命令の転送が、前記第１及び第２の命令に関連する順序とは無関係に実行されることを特徴とする請求項９に記載の方法。
【請求項１３】
前記第１のタイプの命令が当該命令に関連した順序を有し、且つその順序が維持されることを特徴とする請求項９に記載の方法。
【請求項１４】
前記第２のスレッドが待ち行列（キュー）の前方に移動することができるかどうかを判断し、前記第１の命令及び前記第２の命令が前記待ち行列に関連することを特徴とする請求項９に記載の方法。
【請求項１５】
前記第１のスレッドが前記第１のタイプの命令に関連する場合は、前記第２のスレッドが待ち行列の前方に移動することができ、前記第１の命令及び前記第２の命令が前記待ち行列に関連することを特徴とする請求項９に記載の方法。
【請求項１６】
前記第１のスレッドが前記第２のタイプのコマンドに関連する場合は、前記第２のスレッドが待ち行列の前方に移動することができず、前記第１の命令及び前記第２の命令が前記待ち行列に関連することを特徴とする請求項９に記載の方法。
【請求項１７】
前記第２のスレッドが前記第２のタイプの命令を処理するために前記第１のスレッドを待っていないならば、前記第２のタイプの命令を処理することができないことを特徴とする請求項９に記載の方法。
【請求項１８】
リアルタイムデータ複製システムに関連したデータ転送のためのシステムであって、
第１及び第２のタイプの命令を処理することができる第１のスレッドを提供するために、また、前記第１のタイプの命令を処理することができる第２のスレッドを提供するためにコンフィギュレーションされたプロセッサであって、前記プロセッサはまた前記第１のスレッドによる第１の命令と、前記第２のスレッドによる第２の命令とを実質的に同時に転送するためにコンフィギュレーションされ、前記第１及び第２の命令は前記第１のタイプの命令に関連し、
前記プロセッサを指令とともに提供するために、前記プロセッサと結合するメモリ、とを備えたシステム。
【請求項１９】
コンピュータ読み出し可能な記憶媒体に組み込まれた、データのためのコンピュータプログラム製品であって、
第１のメモリから第２のメモリへ第１のファイル、及び前記第１のメモリから前記第２のメモリへ第２のファイルをコピーする第１のオペレーションを実行する命令であって、前記第１のファイルが前記第２のファイルのコピーと実質的に同時にコピーされ、前記第１のオペレーション結果が前記第２のメモリ内の第１のコピーファイル及び第２のコピーファイルに生じるコンピュータ命令（インストラクション）と、
前記第１のコピーファイル及び前記第２のコピーファイルを所定の順序で更新する第２のオペレーションを実行するコンピュータ命令（インストラクション）とを含んだコンピュータプログラム製品。
【請求項２０】
コンピュータ読み出し可能な記憶媒体に組み込まれた、リアルタイムデータ複製システムに関連したデータを転送するためのコンピュータプログラム製品であって、
第１及び第２のタイプの命令（コマンド）を処理することができる第１のスレッドを提供するコンピュータ命令（インストラクション）と、
前記第１のタイプの命令を処理することができる第２のスレッドを提供するコンピュータ命令と、
前記第１のスレッドによる第１の命令、及び前記第２のスレッドによる第２の命令を実質的に同時に転送するコンピュータ命令であって、前記第１及び第２の命令は前記第１のタイプの命令に関連するコンピュータ命令とを含んだコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体的にはデータ転送に関し、より詳細に言えば、コピー元（ソース）マシーンからコピー先（ターゲット）マシーンへデータを転送し処理するシステム及びその方法を開示するものである。
【０００２】
（関連出願との相互参照）
本出願は、２００３年５月２７日に出願され、その表題が「リアルタイムのファイルレベル複製におけるオーバラップ型同期実行」である米国仮出願６０／４７３，８４９（アトーニーNo.LEGAP005+）を優先権主張するものであるが、あらゆる目的のために参照によりここに組み入れられる。
【背景技術】
【０００３】
リアルタイムデータ複製は、典型的には２つの主な機能を含む。第１の機能は、複製されるべきデータを有するマシーン（コピー元（ソース）と称する）が、そのデータをまとめて複製することと、第２のコンピュータ（コピー先（ターゲット）と称する）へ転送することを同期させて行う。第２の機能は、データ変更の複製をコピー元からコピー先へリアルタイムで実行できることである。
【０００４】
データ複製を実行する場合、典型的には、コピー先でのデータ破損を防止するために、データ及びコピー元に生じるデータ変更を全くその順序で再生成することが優先される。このようなデータ複製による問題点は、効率性に欠けることである。そこで必要とされるのは、データ破損を防止しながら、データを転送するシステム及び方法を提供することである。
【０００５】
（詳細な説明）
本発明は様々な方法で実行可能であり、プロセス、装置、システム、又はコンピュータ読み出し可能な記憶媒体若しくはコンピュータネットワークなどのコンピュータ読み出し媒体を含んでいて、プログラム命令は光又は電気通信リンク上で送信されることを認識すべきである。開示されたプロセスのステップ順序は、本発明の範囲内で変更され得ることに留意されたい。
【０００６】
本発明の１又はそれ以上の好ましい実施例の詳細な説明が、一例によって、本発明の原理を示す添付図面と一緒に以下に提供される。本発明はそのような実施例との関係で示されるのであるが、実施例に制限されるものではないことを理解すべきである。これとは反対に、本発明の範囲は添付の特許請求の範囲によってのみ制限され、本発明は様々な代替、変形、及び均等を包含する。説明のために、多数の詳細な説明が、本発明の理解を通しての提供のために以下に示される。これらの詳細な説明の幾つか又は全てが無くても、特許請求の範囲に従って本発明を実施することができる。これの明確化にあたり、本発明に関する技術分野で既知の技術要素が詳細には記載されていないとしても、本発明が不必要に不明瞭にされているのではない。
【０００７】
図１は、本発明の実施例に基づくデータ複製システムのブロック図である。本例の場合、コピー元（ソース）マシーン１００を、コピー先（ターゲット）マシーン１０４に接続する。コピー元マシーン１００及びコピー先マシーン１０４が、ＬＡＮ又はＷＡＮなどのネットワーク１０２を介して複数のコネクション（結線）１００Ａ−１００Ｃ、１００Ａ'−１００Ｃ'によって接続されることを示している。
【０００８】
本発明の一実施例によると、コピー元マシーン１００及びコピー先マシーン１０４間の効率的なデータ転送は、データを生み出していることを確認することによって増加し、リアルタイム複製オペレーション中ではあるが非同期オペレーション中では、コピー元マシーン１００で生じるそのとおりの順序のデータ変更が必要となる。したがって、リアルタイム複製オペレーション中ではあるが非同期オペレーション中では、その順序が重要であり続ける。順序に拘束されることなく、複数のコネクション１００Ａ−１００Ｃを用いることができる。
【０００９】
本発明の一実施例によれば、ファイルなどの情報を処理し且つ転送するのにマルチスレッドを実質的に同時に使用することができる。各転送元（ソース）１００に関するスレッド数の一例が１−１６である。ここでは、転送元１００に関連する単一スレッドを主サイトスレッドと称するが、他のスレッドを同期スレッドと称する。
【００１０】
ひとたび同期（sync）が開始すると、その時点で、リアルタイム複製がアクティブになり、その同期中に誰かがデータを変更する場合は、リアルタイム命令は、同期命令とインターリーブし（命令セットを巡回的に配置すること）、そして同期命令と一緒に待ち行列（キュー）に入れられる。例えば、同期フェーズの間、ファイルＡが読み出されて転送先マシーンに転送されるとき、ファイルＡもまた転送元マシーンで変更される。この例の場合、ファイルＡは、転送先マシーン上でのファイルＡに対するいかなる変更がされる前に、まずは転送先マシーンへコピーされることが望ましい。
【００１１】
あらゆる非同期命令に関する順序が保持されるのが望ましいので、主サイトスレッドは、そのサイトに関して遭遇する全ての命令をサービスする、転送先への唯一のスレッドであるのが望ましいであろう。しかしながら、同期スレッドは、SYNC_COPY命令などの同期機能に関連したコマンドのみをサービスするだろう。
【００１２】
同期オペレーション中、どんなリアルタイム複製も生じなければ、カーネルキャッシュ（kernel cache）はSYNC_COPY命令と一緒にファイルされるのが一般的である。この場合、すべてのサイトスレッド（主サイトスレッドはもちろん同期スレッドも）は、他のスレッドによって処理されている又は処理されるべき全てのSYNC_COPY命令をスキップしながら待ち行列（キュー）を減少させ、これはまだ処理されていないSYNC_COPY命令をみつけるまで続くだろう。次に、オペレーションがその命令（完全、増分、比較、属性など）のためにどんなに要求されても、そのスレッドは実行するだろう。仮に、同期スレッドがまだ処理されていない非同期命令に遭遇する場合は、主サイトスレッドがその非同期命令に追いつき、そして非同期命令を処理するまで、待ち状態に突入するだろう。
【００１３】
カーネルキャッシュが生成、書き込み、属性などの非同期命令で充足される場合、同期スレッドはこれらの非同期命令を処理しないだろうし、主サイトスレッドの前に実行することを許可しないだろう。
【００１４】
本発明の一実施例において、スレッドを統制するルールは以下のとおりである。
主サイトスレッドはすべての命令（同期及び非同期）を処理することができる。
【００１５】
同期スレッドは、SYNC_COPY命令を処理することができる。しかしながら、好ましくは、同期オペレーションのための最初又は最後のSYNC_COPY命令は、非同期命令を考慮しないという理由から、同期スレッドによって処理されない。（これらは、同期命令の開始及び終了を表示し、特定のファイル転送と関連しない。）
【００１６】
同期スレッドは、本サイトに関する最初の不完全非同期命令に遭遇するまで、待ち行列（キュー）内で繰り上がることができる。一般的に、主スレッドがSYNC_COPY命令を処理しないならば、同期スレッドは主スレッドの前に移動しない。そのサイトに関するすべての同期スレッドが、非同期命令を処理するための主サイトスレッドに取り組み、且つ待ち状態の同期命令を完了したという場合を除いて、主サイトスレッドは非同期命令を処理しない。
【００１７】
これらのルールはファイルが任意の順序であらましコピーされることができるようにするが、非同期命令に遭遇するときには、すべてのサイトスレッドが継続前の同じポイントに同期するだろう。この振る舞いは、正常なリアルタイム複製のオーバヘッドを増加させる。当該理由のために、サイトスレッド数が同期オペレーション中のみ増加することが好ましく、そして同期オペレーションが終了した後で、あるスレッド（主サイトスレッド）に自動的にリブートするのが好ましいだろう。例えば、本発明の一実施例によれば、同期命令に遭遇することなく５秒経過するとき、主メインスレッドを除く全てのスレッドが閉じる。
【００１８】
図２Ａ−２Ｂは、本発明の一実施例によるデータ転送のためのフローチャートである。本例において、同期オペレーションが開始され、マルチスレッドがオープンにされ、且つ命令（コマンド）が待ち行列(キュー)内で待っているとみなす。図２Ａ−２Ｂに示された例は、マルチスレッドのそれぞれによって実行される方法を示している。
【００１９】
本例において、スレッドはキューから次のコマンドを受け取る（２００）。全ての同期スレッドが転送先マシーンへコンギュレーション（構成）を送信したか否かが判断される（２０２）。転送先マシーンに何を送信しているかを報告するため、同期スレッドが転送先マシーンに接続しようとするとき、このコンフィギュレーションがスレッド経由で転送先マシーンに送信される。すべての同期スレッドがコンフィギュレーションを転送先にまだ送信していないならば、そのスレッドは待ち状態に入っていて、待ち行列エントリーを処理しないし、次のエントリーへの移動もしない（２１２）。ひとたび同期スレッドの全てがコンフィギュレーションを転送先に送信すると、特定の待ち状態エントリーが同期命令であるかどうかが判断される（２０４）。同期命令であるならば、次に、本エントリーを処理する別のスレッドがあるかどうかが判断される（２０６）。本エントリーを処理する別のスレッドがない場合は、このエントリーは処理されたものとしてマークされる（２０８）。次に、本エントリーの処理するためのスレッドが続く（２１０）。例えば、エントリーに関連するファイルが、転送元マシーンから転送先マシーンへ転送される。
【００２０】
待ち行列エントリーが同期命令でない場合（図２Ａの２０４）、このスレッドが主サイトスレッドであれば（２５０）、最後に処理された命令が非同期命令であったかどうかが判断される（２５２）。最後の命令が非同期命令であった場合、すべての同期スレッドが現在エントリーであるかどうかが判断される（２５４）。
【００２１】
同期スレッドすべてが現在エントリーでない場合（２５４）、スレッドは待ち行列に入る。エントリーは処理されないし、スレッドは次のエントリーに移動もしない（２５５）。いったん、すべての同期スレッドが現在エントリーにあるようになると、エントリーは処理されたものとしてマークされ（図２Ａの２０８）、処理が続く（２１０）。最後に処理された命令が非同期命令であって（図２Ｂの２５２）、且つスレッドが主サイトスレッドである（２５０）場合も、エントリーは処理されたものとしてマークされる（図２Ａの２０８）。
【００２２】
スレッドが主サイトスレッドでない場合（２５０）、同期スレッドが主サイトスレッドの前にあるかどうかが判断される（２５６）。同期スレッドが主サイトスレッドの前にある場合、スレッドは待ち状態に置かれ、エントリーは処理されないし、スレッドは次のエントリーへ移動もしない（２５５）。しかしながら、同期スレッドが主サイトスレッドの前にない場合（２５６）、このエントリーは本サイトに関するものではなく、且つ処理もされない。本スレッドは次のエントリーに移動する（２５８）。その後、処理が続く（２６０）。
【００２３】
図３は、本発明の一実施例によるデータ転送ための別のフローチャートである。本例の場合、同期オペレーションが実行されて、第１のファイル及び第２のファイルが転送元マシーンから転送先マシーンへ実質的に同時にコピーされる（３００）。さらに、実質的なリアルタイムオペレーションが実行されて、第１のコピーファイル及び２コピーファイルが所定の順序で更新される。
【００２４】
図４は、本発明の一実施例によるデータ転送のための更に別のフローチャートである。本例の場合、第１及び第２のタイプの命令（コマンド）を処理することができる第１のスレッドが与えられる（４００）。また、第１のタイプの命令（コマンド）を処理することができる第２のスレッドも与えられる（４０２）。第１の命令は、第２のスレッドによって処理される第２の命令と実質的に同時に第１のスレッドによって処理され、第１及び第２の命令は第１のタイプの命令と関連する（４０６）。
【００２５】
先に説明した本発明をその理解を明確にする目的で詳細に説明してきたが、添付の特許請求の範囲内である変更及び修正が行われることはあきらかであろう。本発明の処理及び装置の両方を実行する多くの代替的な方法があることに留意すべきである。したがって、本発明の実施例は、説明としてみなされるべきで限定されるものではないし、本発明はここで与えられた詳細な説明に制限されるものでもない。しかし、添付の特許請求の範囲の範囲及び均等内で修正することが可能である。
【００２６】
本発明は、添付の図面と合わせて発明の詳細な説明によって容易に理解されるだろう。なお、同様な参照番号が同様の構成要素に割当てられている。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施例に基づくデータ複製システムのブロック図である。
【図２Ａ】データを転送する本発明の実施例に基づく方法のフローチャートである。
【図２Ｂ】データを転送する本発明の実施例に基づく方法のフローチャートである。
【図３】データを転送する本発明の実施例に基づく方法の別のフローチャートである。
【図４】データを転送する本発明の実施例に基づく方法の更に別のフローチャートである。
【図１】
2007517271.tif 000002
【図２Ａ】
2007517271.tif 000003
【図２Ｂ】
2007517271.tif 000004
【図３】
2007517271.tif 000005
【図４】
2007517271.tif 000006
【国際調査報告】
2007517271.tif 000007