(57)【特許請求の範囲】
【請求項１】
ソース・データをターゲット・データに移行する方法であって、
（ａ）移行マネージャにより、移行マップを使用して移行するソース・データを受信するターゲット・データを決定するステップと、
（ｂ）前記ターゲット・データにまだ移行されていないソース・データにアプリケーション・データを書き込むための書き込み要求を受信するステップと、
（ｃ）前記書き込み要求に対して、前記アプリケーション・データが書き込まれる前記ソース・データを示す情報を生成するステップと、
（ｄ）前記アプリケーション・データを前記ソース・データに書き込むステップと、
（ｅ）前記移行マネージャにより、前記移行マップにおいてまだ移行されていないとして指示されるソース・データをターゲット・データに移行するための移行要求を発行するステップと、
（ｆ）移行機能により、ソース・データをターゲット・データにミラーリングするための移行操作の一部として、前記移行要求を前記移行マネージャから受信するステップと、
（ｇ）前記移行機能により、前記移行要求の一部として移行するために要求された前記ソース・データが、１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記移行要求を再試行するための指示を前記移行マネージャに戻すステップと、
（ｈ）前記移行機能により、前記移行要求に対して前記ソース・データを前記ターゲット・データに移行し且つ当該移行されたソース・データが、１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記移行要求を再試行するための指示を前記移行マネージャに戻すステップとを含む方法。
【請求項２】
前記アプリケーション・データを書き込むための前記書き込み要求がアプリケーションからのものである、請求項１に記載の方法。
【請求項３】
前記アプリケーション及び前記移行マネージャがユーザ・アドレス・スペースで実行し、前記移行機能がカーネル・アドレス・スペースで実行する、請求項２に記載の方法。
【請求項４】
１つの書き込み要求に対して生成された前記情報が、保留中又は完了したとして当該書き込み要求の状況を示し、移行する前記ソース・データが前記ターゲット・データに転送される前に、移行するために要求された前記ソース・データが、保留状況を有する１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記再試行するための指示が戻される、請求項１に記載の方法。
【請求項５】
１つの書き込み要求に対して生成された前記情報が、保留中又は完了したとして当該書き込み要求の状況を示し、移行する前記ソース・データが前記ターゲット・データに転送された後に、移行するために要求された前記ソース・データが、保留又は完了状況を有する１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記再試行するための指示が戻される、請求項１に記載の方法。
【請求項６】
１つの書き込み要求に対して生成された前記情報における前記状況を、当該情報に示された前記ソース・データに前記アプリケーション・データを書き込むことに応答して完了したと設定するステップを更に含む、請求項５に記載の方法。
【請求項７】
移行する前記ソース・データを前記ターゲット・データに転送する前と、移行する前記ソース・データを前記ターゲット・データに転送した後との両方で、移行するために要求された前記ソース・データが、１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記再試行するための指示が戻される、請求項１に記載の方法。
【請求項８】
前記情報が、保留中又は完了したとして前記書き込み要求の状況を示し、前記方法が、ソース・データをターゲット・データに移行した後、完了状況を有する書き込み要求に対して生成された前記情報を除去するステップを更に含む、請求項１に記載の方法。
【請求項９】
移行する前記ソース・データを前記ターゲット・データに書き込むことに応答して、当該書き込まれたソース・データに先行するソース・データに対する書き込み要求に対して生成された前記情報を除去するステップを更に含む、請求項８に記載の方法。
【請求項１０】
前記再試行するための指示を戻すステップが、
前記移行要求に対する応答において、前記移行要求が完了していないことを指示するステップと、
前記移行要求を再試行するよう指示する再試行コードを、前記移行要求に対する前記応答に含めるステップとを含む、請求項１に記載の方法。
【請求項１１】
前記移行要求が、読み取り要求及び読み取りバッファを含み、
前記移行要求に対する前記応答において、前記移行要求が完了していないことを指示するステップは、前記要求されたデータのすべてが前記読み取りバッファに含まれていないことを指示するステップを含み、
前記再試行コードが、前記読み取り要求に応答して戻される前記読み取りバッファの所定位置に含まれる、請求項１０に記載の方法。
【請求項１２】
ソース・データをターゲット・データに移行するシステムであって、
ソース・ストレージ・ロケーションと、
ターゲット・ストレージ・ロケーションと、
メモリと、
前記ソース・ストレージ・ロケーション、前記ターゲット・ストレージ・ロケーション及び前記メモリと通信可能である回路とを備え、
前記回路が、
（ａ）移行マネージャにより、移行マップを使用して移行するソース・データを受信するターゲット・データを決定するステップと、
（ｂ）前記ターゲット・データにまだ移行されていないソース・データにアプリケーション・データを書き込むための書き込み要求を受信するステップと、
（ｃ）前記書き込み要求に対して、前記アプリケーション・データが書き込まれる前記ソース・データを示す情報を生成するステップと、
（ｄ）前記アプリケーション・データを前記ソース・データに書き込むステップと、
（ｅ）前記移行マネージャにより、前記移行マップにおいてまだ移行されていないとして指示されるソース・データをターゲット・データに移行するための移行要求を発行するステップと、
（ｆ）移行機能により、ソース・データをターゲット・データにミラーリングするための移行操作の一部として、前記移行要求を前記移行マネージャから受信するステップと、
（ｇ）前記移行機能により、前記移行要求の一部として移行するために要求された前記ソース・データが、１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記移行要求を再試行するための指示を前記移行マネージャに戻すステップと、
（ｈ）前記移行機能により、前記移行要求に対して前記ソース・データを前記ターゲット・データに移行し且つ当該移行されたソース・データが、１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記移行要求を再試行するための指示を前記移行マネージャに戻すステップとを実行可能にさせるシステム。
【請求項１３】
前記アプリケーション・データを書き込むための前記書き込み要求がアプリケーションからのものである、請求項１２に記載のシステム。
【請求項１４】
前記アプリケーション及び前記移行マネージャがユーザ・アドレス・スペースで実行し、前記移行機能がカーネル・アドレス・スペースで実行する、請求項１３に記載のシステム。
【請求項１５】
１つの書き込み要求に対して生成された前記情報が、保留中又は完了したとして当該書き込み要求の状況を示し、移行する前記ソース・データが前記ターゲット・データに転送される前に、移行するために要求された前記ソース・データが、保留状況を有する１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記再試行するための指示が戻される、請求項１２に記載のシステム。
【請求項１６】
１つの書き込み要求に対して生成された前記情報が、保留中又は完了したとして当該書き込み要求の状況を示し、移行する前記ソース・データが前記ターゲット・データに転送された後に、移行するために要求された前記ソース・データが、保留又は完了状況を有する１つの書き込み要求に対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記再試行するための指示が戻される、請求項１２に記載のシステム。
【請求項１７】
前記回路が、１つの書き込み要求に対して生成された前記情報における前記状況を、当該情報に示された前記ソース・データに前記アプリケーション・データを書き込むことに応答して完了したと設定するステップを更に実行可能にさせる、請求項１６に記載のシステム。
【請求項１８】
移行する前記ソース・データを前記ターゲット・データに転送する前と、移行する前記ソース・データを前記ターゲット・データに転送した後との両方で、移行するために要求された前記ソース・データが、１つの書き込みに対して生成された前記情報に示されたソース・データとオーバーラップするという決定に応答して、前記再試行するための指示が戻される、請求項１２に記載のシステム。
【請求項１９】
前記情報が、保留中又は完了したとして前記書き込み要求の状況を示し、前記回路が、ソース・データをターゲット・データに移行した後、完了状況を有する書き込み要求に対して生成された前記情報を除去するステップを更に実行可能にさせる、請求項１２に記載のシステム。
【請求項２０】
前記回路が、移行する前記ソース・データを前記ターゲット・データに書き込むことに応答して、当該書き込まれたソース・データに先行するソース・データに対する書き込み要求に対して生成された前記情報を除去するステップを更に実行可能にさせる、請求項１９に記載
【請求項２１】
前記再試行するための指示を戻すステップが、
前記移行要求に対する応答において、前記移行要求が完了していないことを指示するステップと、
前記移行要求を再試行するよう指示する再試行コードを、前記移行要求に対する前記応答に含めるステップとを含む、請求項１２に記載のシステム。
【請求項２２】
前記移行要求が、読み取り要求及び読み取りバッファを含み、
前記移行要求に対する前記応答において、前記移行要求が完了していないことを指示するステップは、前記要求されたデータのすべてが前記読み取りバッファに含まれていないことを指示するステップを含み、
前記再試行コードが、前記読み取り要求に応答して戻される前記読み取りバッファの所定位置に含まれる、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソース・データをターゲット・ソースに移行する方法及びシステムに関する。
【背景技術】
【０００２】
データのミラー・コピーを確立及び維持するため、又は、データを、移行後にデータがアクセスされるターゲット・ロケーションの新しいロケーションに転送するため、データベース・ファイル、ディレクトリ又はデータの任意のグループのようなストレージ・エレメントを、ソース・ストレージ・ロケーションからターゲット・ストレージ・ロケーションに移行することができる。オンライン又はビジネス・データベース・システムの転送のような多くの大規模データ転送は、ネットワークを介して移行するのにかなりの量の時間がかかる場合がある。更に、移行中、システムは、トランザクションが継続するのを可能にする必要がある場合がある。様々なハードウェア及びソフトウェア・ソリューションは、データが移行されている間、ソース・ロケーション及びターゲット・ロケーションの両方に更新情報を転送する機構を備える。移行操作は、一般に、ソース・データに対する読み取り要求と、その後のターゲットに対する書き込み要求の発行とを含む。ソース・データがターゲット・データに移行されている間、移行システムは、アプリケーションからのソース・データに対する書き込み要求が開始されるときに発生することがある潜在的な競合に対処しなければならない。例えば、古いソース・データが書き込まれている間に、新しいソース・データが受信されると、当該新しいソース・データをターゲット・ロケーションに移行することができない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この潜在的な競合に対する１つの既知の解決策は、保留中の書き込み又は移行が完了するまで、介入するアプリケーション書き込み及び移行操作のいずれをも発生しないように、アプリケーション・データの書き込み又は移行が完了するまで、ソース・データへのアクセスを直列化することにある。このことは、現在の書き込み又は移行操作によりロックが解除されることを待機する要求に完了を戻すことを遅らせる。従って、データが移行されている間、直列化は、ソース・データがターゲット・データへの書き込みを完了するまで、ソース・データへの書き込みを阻止する。更に、ブロックに対して更新が発生していれば、その更新が完了するまで、その同じブロックに対する移行操作は遅延される。直列化に関連した遅延は、ソース・データへの書き込み操作と、ソース・データからターゲット・データへの移行との両方の性能を低下させることがある。
【課題を解決するための手段】
【０００４】
本発明は、ソース・データをターゲット・データに移行する方法及びシステムを提供する。ターゲット・データにまだ移行されていないソース・データにアプリケーション・データを書き込むための書き込み要求を受信する。書き込み要求に対して、アプリケーション・データが書き込まれるソース・データを示す情報を生成する。アプリケーション・データをソース・データに書き込む。ソース・データをターゲット・データに移行するための移行要求を受信する。移行するように要求されたソース・データが、１つの書き込み要求に対して生成された情報に示されたソース・データとオーバーラップするという決定に応答して、移行要求を再試行するための指示を戻す。
【０００５】
次に図面を参照する。図中、同一の符号は、対応する部分を表す。
【発明を実施するための最良の形態】
【０００６】
以下の説明では、本明細書の一部を形成し、本発明の幾つかの実施形態を示す添付図面を参照する。当然のことながら、本発明の範囲から逸脱することなく、他の実施形態を用いることができ、構造上の変更及び操作上の変更を行うことができる。
【０００７】
図１は、メモリ４を含むコンピュータ・システム２を示す。コンピュータ２におけるプロセス及びスレッドは、カーネル・アドレス・スペース６又はユーザ・アドレス・スペース８において実行する。カーネル・アドレス・スペース６において実行するプロセスは、ユーザ・アドレス・スペース８において実行するプロセスよりも高い優先順位で実行することができる。ファイル・システム・マネージャ１０は、ユーザ・アドレス・スペース８において実行する移行マネージャ１２及びアプリケーション１４により発行された読み取り及び書き込み要求を処理するために、カーネル・アドレス・スペース６において実行する。移行マネージャ１２は、ソース・データ１６のブロックをソース・ストレージ１８からターゲット・ストレージ２２のターゲット・データ２０のブロックに移行するための操作を開始する。ファイル・システム・マネージャ１０は、移行操作を呼び出すコマンドで、移行マネージャ１２により指定されたデータの移行操作を実行するための移行機能２４を実行する。
【０００８】
ソース・ストレージ１８及びターゲット・ストレージ２２は、同一のストレージ・デバイス又はシステムに、或いは、分離したストレージ・デバイス又はシステムに実装することができる。ソース・ストレージ１８及びターゲット・ストレージ２２は、当分野で既知の任意のストレージ・デバイスから構成することができる。このような１つのストレージ・デバイス又は複数の相互接続デバイスは、新磁気ディスク制御機構（ＲＡＩＤ）、ＪＢＯＤ（Just a Bunch of Disks）、直接アクセス・ストレージ・デバイス（ＤＡＳＤ）、磁気テープ・ストレージ・デバイス、単一又は複数のストレージ・ユニット（例えば、テープ・ライブラリ）などとして構成されている。コンピュータ２は、接続２６ａ及び２６ｂを介して、ソース・ストレージ１８及びターゲット・ストレージ２２に接続する。接続２６ａ及び２６ｂは、ストレージとホストとの間の当分野で既知の任意のインターフェースから構成することができる。かかるインターフェースは、（例えば、イーサネット（Ｒ）、無線、ファイバ・チャネルなどの）ネットワーク接続から構成したり、ホスト２のエンクロージャに対し内部又は外部に存在する、（例えば、アドバンスド・テクノロジー・アタッチメント（ＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、ＳＣＳＩ（Small Computer System Interface）などの）他のデータ転送インターフェースから構成することができる。
【０００９】
移行マップ２８は、移行マップ２８において指示された対応するターゲット・データ単位にソース・データ単位が転送されるように、ソース・データ１６のデータ単位がターゲット・データ２０の単位にどのように対応するかに関する情報を提供する。移行マネージャ１２は、移行マップ２８を用いることにより、移行されているソース・データ単位を受信するであろうターゲット・データ単位を決定する。ソース・データ１６は、データベース、大容量ファイル、データ・セット、論理ディレクトリ、論理ボリューム、ファイル・システム、プログラム、マルチメディア・ファイルなどから構成することができる。
【００１０】
介入書き込みリスト３０は、移行マネージャ１２により開始されたデータ移行操作の一部として、ターゲット・データ２０に移行されているソース・データ１６の単位に対してアプリケーション１４から受信された各書き込み要求に対するエントリを含む。図２は、アプリケーション１４からの書き込み要求に対して介入書き込みリスト３０のエントリ５０に維持された情報を示す。エントリ５０は、書き込みが命令されるソース・データ１６の開始点を指示するソース開始アドレス５２と、書き込みバイト長５４とを含む。ソース開始アドレス５２及び書き込みバイト長５４の両方は、ソース・データ１６のうち更新を受ける要求されたデータ又は単位を示す。状況フィールド５６は、書き込み要求が保留中であるか、又は完了したかを示す。
【００１１】
図３は、移行を受けるソース・データ１６に対するアプリケーション１４の１つからの書き込み要求を処理するために、ファイル・システム・マネージャ１０により実行される操作を示す。図３の操作は、移行機能２４を実行するファイル・システム・マネージャ１０により、実行することができる。移行機能２４は、移行を受けるソース・データに対して操作を実行するとき、ファイル・システム・マネージャ１０により呼び出される。（ブロック１００において）アプリケーション１４からソース・データ１６に対する書き込み要求を受信し、（ブロック１０２において）アプリケーション１４からの書き込みデータが、まだ移行されていないとして移行マップ２８において指示されるいずれかのソース・データとオーバーラップしなければ、（ブロック１０４において）ファイル・システム・マネージャ１０は、アプリケーション１４から受信した書き込みデータをソース・データ１６及び対応するターゲット・データ２０の両方に書き込む。さもなければ、すなわち、アプリケーション１４からの書き込みデータが、まだ移行されていないとして移行マップ２８において指示されるソース・データ１６とオーバーラップすれば、（ブロック１０６において）ファイル・システム・マネージャ１０は、受信した書き込み要求に対するエントリ５０（図２）を介入書き込みリスト３０に追加して、そのエントリ５０に書き込むために要求されたソース・データを示す情報、すなわち、書き込むデータのソース開始アドレス５２及び書き込みバイト長５４と、最初は保留中である状況５６とを維持する。（ブロック１０８において）アプリケーション１４から受信した書き込みデータをソース・データ１６に書き込み、（ブロック１１０において）介入書き込みリスト３０のエントリ５０の状況５６、すなわち、介入するアプリケーション書き込み要求に関する情報を、ソース・データ１６に対する書き込みデータの書き込みの完了に応答して完了したと設定する。
【００１２】
図４は、移行操作を実行するために移行マネージャ１２により実行される操作を示す。（ブロック１５０において）ソース・データをターゲット・データに移行する操作を開始すると、（ブロック１５２において）移行マネージャ１２は、移行マップ２８を処理することにより、対応するターゲット・データ２０に移行すべきソース・データ１６の１つ以上の単位を決定する。（ブロック１５４において）移行マネージャ１２は、移行要求を発行する。この移行要求は、ファイル・システム・マネージャ１０に、決定した単位をソース・データ１６から対応するターゲット・データ２０へ移行させるためのものである。（ブロック１５６において）移行要求の応答を受信する場合、（ブロック１５８において）移行が成功したら、（ブロック１６０において）移行マネージャ１２は、ソース・データ単位が書き込まれ、対応するターゲット・データ２０に首尾良く移行されたことを示すように移行マップ２８を更新する。（ブロック１５８において）移行が成功しなかったら、（ブロック１６２において）移行を再試行すべきか否かを決定する。移行を再試行すべきであれば、制御をブロック１５４に戻して、首尾良く移行しなかったソース・データ１６に対する移行要求を再発行する。さもなければ、すなわち、移行を再試行しなければ、（ブロック１６４において）何らかの追加のエラー処理を実行する。
【００１３】
特定の実施形態では、移行マネージャ１２は、読み取りコマンド及び読み取りバッファ、例えば、図５の読み取りバッファ１７０をファイル・システム・マネージャ１０に発信することにより、移行操作を開始することができる。読み取りバッファを発信する際、移行マネージャ１２は読み取りバッファ１７０へのポインタを発信するであろう。ファイル・システム・マネージャ１０は、移行機能２４を実行して、移行マネージャ１２からの読み取りを特別の移行コマンドとして処理することにより、要求されたソース・データ１６を読み取り、読み取ったソース・データをターゲット・ストレージ２２の対応するターゲット・データ２０に書き込む。移行マネージャ１２は、特定のデータ又はストレージが移行状態にあるということを、ＩＯＣＴＬのようなアウトオブバンド機構を介して、ファイル・システム・マネージャ１０に最初に警告することができる。ＩＯＣＴＬは、移行を受けるデバイス又はデータを参照するオープン・ファイル記述子と、ソース・ストレージ１８又はソース・データ１６がＩ／Ｏコマンドでアドレス指定されるときにファイル・システム・マネージャ１０がデータを移行するために実行する移行機能２４とを指定することができる。
【００１４】
移行機能２４は、移行マネージャ１２が供給した読み取りバッファ１７０（図５）が、要求されたすべてのデータを含まないことを示す移行マネージャ１２からの読み取りコマンドに対する応答を戻すことにより、移行操作が完了しなかったことを示すことができる。移行マネージャ１２に移行操作を再試行させるため、移行機能２４は、移行操作を再試行するよう移行マネージャ１２に指示する移行再試行コード１７２を、移行マネージャ１２が供給した読み取りバッファ１７０に配置することができる。従って、移行機能２４は、要求されたすべてのデータが読み取りバッファ１７０に含まれていないことを示す情報と、読み取りバッファ１７０に配置される移行再試行コード１７２との組み合わせを供給することにより、移行操作を再試行するよう移行マネージャ１２に指示する。移行機能２４は、移行再試行コード１７２が配置された読み取りバッファ１７０のロケーションを上書きし、他の認識されたエラー・コードを読み取りバッファ１７０に書き込むことにより、異なるエラー・コードを読み取りバッファ１７０に供給することができる。従って、読み取りが完了しなかったと通知されると、移行マネージャ１２は、処理すべき、移行再試行コード１７２又は他のエラー・コードを検索することができる。
【００１５】
図６は、移行マネージャ１２からの読み取り要求により開始できる移行要求を処理するためにファイル・システム・マネージャ１０が呼び出す、移行機能２４においてエンコードされた操作を示す。この読み取り要求は、移行すべきソース・データ１６を指示するとともに、このソース・データ１６を書き込むべき箇所である、移行マップ２８において指示される対応するターゲット・データ２０を指示することができる。代替的に、移行機能２４は、移行マップ２８を処理することにより、指示されたソース・データ１６を移行すべき箇所である、対応するターゲット・データ２０を決定することができる。（ブロック２００において）移行機能２４は、移行を受けるソース・データ１６に対する移行マネージャ１２からの移行要求を処理する。特定の実施形態では、この要求は、読み取りバッファ１７０と一緒に、移行を受けるソース・データ１６に対する読み取り要求を含むことができる。（ブロック２０２において）移行するように要求されたソース・データ１６が、保留中の状況５６を有する介入書き込みリスト３０のいずれかのエントリ５０（図２）とオーバーラップすれば、（ブロック２０４において）移行機能２４は、読み取り操作を再試行すべきことを示す応答を戻す。特定の実施形態では、移行再試行コード１７２を読み取りバッファ１７０にエンコードし、読み取りバッファ１７０に書き込まれたデータが、要求されたすべてのデータよりも少なかったことを示すメッセージを戻すことにより、この再試行要求を実装することができる。このことは、移行されるソース・データ１６がデータの最新バージョンであること、及び、いずれかの新しいアプリケーション・データが適用された後にソース・データが移行されることを保証する。
【００１６】
（ブロック２０２において）ソース・データ１６が、介入書き込みリスト３０のエントリ５０に指示されるように、アプリケーション１４からソース・データ１６に書き込まれているデータのいずれともオーバーラップしなければ、（ブロック２０６において）ソース・データ１６は、移行マップ２８において指示された対応するターゲット・データ２０のロケーションに書き込まれる。（ブロック２０８において）移行すべきソース・データ１６が、状況５６（図２）にかかわらず、すなわち、保留中であるか完了したかにかかわらず、介入書き込みリスト３０のいずれかのエントリとオーバーラップすれば、その移行が再試行される。その理由は、移行されるソース・データ１６に対してアプリケーション１４からの保留中の書き込み要求が保留中であるか、又は、その移行が発生していた間に完了した可能性があるからである。次に、移行機能２４又は他の何らかのプロセスは、（ブロック２１０において）完了した状況５６を有する介入書き込みリスト３０のすべてのエントリを除去することにより、介入書き込みリスト３０についてクリーンアップ操作を実行する。移行機能２４は、ブロック２０４に進んで、（例えば、移行再試行コード１７２を読み取りバッファ１７０にエンコードし、読み取りバッファ１７０に書き込まれたデータが要求されたすべてのデータよりも少なかったことを示すメッセージを戻すことにより）読み取り操作を再試行すべきことを示す応答を戻す。読み取り操作の再試行に応答して、（ブロック２１０において）完了した状況５６を有する介入書き込みリスト３０のすべてのエントリを除去する。その理由は、以前に完了した介入書き込み要求が、再試行される移行操作に対して不整合データの書き込み又は競合の原因となるおそれがないからである。
【００１７】
（ブロック２０８において）書き込まれるソース・データ１６が、介入書き込みリスト３０のエントリ５０において指示されているアプリケーション１４からの書き込み要求のいずれともオーバーラップしなければ、移行は成功し、（ブロック２１２において）移行機能２４（又は他の何らかのプロセス）は、完了した状況５６（図２）を有する介入書き込みリスト３０のすべてのエントリ５０を除去し、移行マップ２８において書き込まれるソース・データに先行するデータに書き込むエントリ５０をも除去する。次に、（ブロック２１４において）移行機能２４は、移行要求の完了を戻す。移行要求が読み取り要求から開始された実施形態では、移行機能２４は、要求されたすべてのデータを読み取りバッファ１７０が含むことを示す応答を移行マネージャ１２に戻すであろう。
【００１８】
前述の実施形態の場合、データを移行する際、いかなるロックも必要とされない。その結果、移行を受けるソース・データ１６に対するアプリケーション１４からの書き込み又は移行マネージャ１２からの移行操作は、ロック又は直列化を用いずに完了することができる。このことは、ロック又は直列化を用いる場合に発生することがある、アプリケーション書き込み要求及び移行操作の両方の遅延を回避する。ロック及び直列化を用いる代わりに、前述の特定の操作の場合、アプリケーション１４からの介入書き込み要求が競合又は不整合データの移行を生じさせる可能性があれば、移行操作は再試行される。
【００１９】
＜追加の実施形態の詳細＞
前述の操作は、ソフトウェア、ファームウェア、ハードウェア又はそれらの任意の組み合わせを生成するための標準のプログラミング技術又はエンジニアリング技術或いはその両方を用いる、方法、装置又は製品として実装することができる。本明細書で用いる「製品」とは、ハードウェア・ロジック（例えば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）など）又は、磁気ストレージ・メディア（例えば、ハード・ディスク・ドライブ、フレキシブルディスク、テープなど）のようなコンピュータ可読メディア、光ディスク・ストレージ（例えば、ＣＤ−ＲＯＭ、光ディスクなど）、揮発性及び不揮発性メモリ・デバイス（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、ファームウェア、プログラマブル・ロジックなど）に実装されるコード又はロジックを意味する。コンピュータ可読メディア内のコードはプロセッサによりアクセスされ実行される。好適な実施形態が実装されるコードに伝送メディアを介して、又はネットワーク上のファイル・サーバから更にアクセスすることができる。このような場合では、コードが実装される製品は、ネットワーク伝送回線のような伝送メディア、無線伝送メディア、スペースを伝播する信号、電波、赤外線信号などを含むことができる。従って、「製品」は、コードが実装されるメディアを含むことができる。更に、「製品」は、コードが実装され処理され実行されるハードウェア及びソフトウェア・コンポーネントの組み合わせを含むことができる。本発明の範囲から逸脱することなく、この構成に多くの変更を行うことができ、製品が、当分野で既知の情報伝送メディアのいずれをも含むことができるということを当業者が認識することもちろんである。
【００２０】
前述の操作は、回路により実行することができる。ここで、「回路」とは、ハードウェア又はソフトウェア又はそれらの組み合わせを意味する。説明した実施形態の操作を実行する回路は、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）などのようなハードウェア・デバイスを含むことができる。回路は、メモリのようなコンピュータ可読メディア内のコード、及び集積回路のようなプロセッサ・コンポーネントをも含むことができ、コードは、説明した実施形態の操作を実行するためにプロセッサにより実行される。
【００２１】
特定の実施形態では、前述の操作が、ファイル・システム・マネージャ１０、移行機能２４及び移行マネージャ１２のようなコンポーネントにより実行されるものとして説明した。代替実施形態では、前述の操作を、前述のコンポーネントとは異なるコンポーネント、又は追加のコンポーネントにより実行することができる。更に、カーネル・アドレス・スペース６又はユーザ・アドレス・スペース８内のコンポーネットにより実行されるものとして説明した前述の操作を、説明したものとは異なる優先順位を有する別のアドレス・スペースで実行することができる。
【００２２】
図３、図４及び図６の図示の操作は、特定の順序で発生する特定のイベントを示している。代替実施形態では、特定の操作を異なる順序で実行するか、変更するか、又は除去することができる。更に、前述のロジックにステップを追加でき、説明した実施形態に依然として適合させることができる。更になお、本明細書で説明した操作は連続的に発生することができる。又は、特定の操作を並行して処理することができる。その上、単一の処理装置又は分散型処理装置により操作を実行することができる。
【００２３】
本発明の様々な実施形態に関する以上の記述は、例示及び説明を目的として与えられたものであり、網羅的であること又は開示された形態に本発明を限定することを意図するものではない。前述の教示に照らして、多くの修正及び変形が可能である。本発明の範囲は、本明細書の詳細な記述により限定されるものではなく、むしろ、特許請求の範囲により限定されるものである。前述の細目、例及びデータは、本発明の構成要素の製造及び使用に係る十分な説明を提供している。
【図面の簡単な説明】
【００２４】
【図１】実施形態が実装されるコンピュータ環境を示す図である。
【図２】介入書き込みリストに維持されている情報を示す図である。
【図３】移行されているソース・データに対する書込み要求を処理する操作を示す流れ図である。
【図４】データを移行する操作を示す流れ図である。
【図５】データを移行する際に用いられる読み取りバッファを示す図である。
【図６】移行要求を処理する操作を示す流れ図である。
【図１】
0004738413.tif 000002
【図２】
0004738413.tif 000003
【図３】
0004738413.tif 000004
【図４】
0004738413.tif 000005
【図５】
0004738413.tif 000006
【図６】
0004738413.tif 000007