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