(57)【特許請求の範囲】
【請求項１】
ＲＡＩＤデータ記憶システム内の複数のドライブのソース・ドライブの一部のコピーを提供する方法であって、前記ソース・ドライブの一部が複数のセグメントを含むものにおいて、
ａ）前記ソース・ドライブを前記複数のドライブのターゲット・ドライブに関連付けるステップと、
ｂ）前記複数のセグメントのコピーを前記ターゲット・ドライブ上に提供するステップとを含み、
前記ステップｂ）がさらに、
サーバから前記複数のセグメントのうちの１つのセグメントが読出しのために要求され、かつ前記ソース・ドライブの読出しを行う場合には、前記ソース・ドライブから前記サーバに前記セグメントを提供するステップ（２６４、２６６、２６８）と、
前記セグメントが読出しのために要求され、かつ前記コピーを提供するステップが開始されて以来、すでにコピー済みでない場合、前記ソース・ドライブから前記サーバに前記セグメントを提供するステップ（２６４、２７０、２７２）と、
前記セグメントが読出しのために要求され、かつ前記コピーを提供するステップが開始されて以来、すでにコピー済みである場合、前記ターゲット・ドライブを読出して前記サーバに前記セグメントのコピーを提供するステップ（２６４、２７０、２７４）と、
前記セグメントが書込のために要求され、かつ前記コピーを提供するステップが開始されて以来、すでにコピー済みである場合には、前記ソース・ドライブを更新するステップ（２６４、２７６、２７８）と、
前記セグメントのコピーがまだ前記ターゲット・ドライブに提供されていない場合には、前記コピーを前記ターゲット・ドライブに提供するステップ（２６４、２７６、２８０）と、
前記セグメントのコピーが提供された場合には、前記コピーが提供されたことを示すステップ（２８２）と、
前記コピーが提供された後に、前記ソース・ドライブ内の前記セグメントを変更するステップ（２８４）とを実行する、
前記複数のセグメントのコピーを提供するステップの間に、前記ソース・ドライブ及び前記ターゲット・ドライブへの入出力を許可する方法。
【請求項２】
前記ステップｂ）が、ｂ１）前記コピーを提供するステップが開始されて以来、前記複数のセグメントの各々がコピーされたか否かを示すステップと、ｂ２）前記コピーを提供するステップが開始されて以来、前記複数のセグメントの各々の変更を追跡するステップとを含む、請求項１記載の方法。
【請求項３】
前記ステップｂ１）が、ｂ１ｉ）前記複数のセグメントの各々に関連付けられ、前記セグメントのコピーが前記ターゲット・ドライブに提供されたか否かを示すメタデータを提供するステップを含む、請求項２記載の方法。
【請求項４】
前記ＲＡＩＤデータ記憶システムが複数のディスクに接続されるキャッシュを含み、前記キャッシュが、前記ソース・ドライブの一部に提供されるデータを含むことができるものにおいて、ｃ）前記コピーを前記ターゲット・ドライブに提供するステップｂ）の開始前に、前記キャッシュ内のデータを前記ソース・ドライブにコミットするステップを含む、請求項１記載の方法。
【請求項５】
ＲＡＩＤデータ記憶システム内の複数のドライブのソース・ドライブの一部のコピーを提供するシステムであって、前記ソース・ドライブの一部が複数のセグメントを含むものにおいて、
前記ソース・ドライブに関連付けられ、前記複数のセグメントのコピーを記憶するターゲット・ドライブと、前記ソース・ドライブ及び前記ターゲット・ドライブに接続され、前記複数のセグメントのコピーを前記ターゲット・ドライブ上に提供するコピー・エンジンと、
前記コピー・エンジンに接続され、前記複数のセグメントのコピーが前記ターゲット・ドライブに提供されたか否かの指示を含むメタデータと、
前記ソース・ドライブ及び前記ターゲット・ドライブに接続され、書込み要求に応答して、前記複数のセグメントのあるセグメントを変更するための書込み要求を横取りする一貫性マシンとを含み、前記一貫性マシンは、
サーバから前記複数のセグメントのうちの１つのセグメントが読出しのために要求され、かつ前記ソース・ドライブの読出しを行う場合には、前記ソース・ドライブから前記サーバに前記セグメントを提供し、
前記セグメントが読出しのために要求され、かつ前記コピーを提供するステップが開始されて以来、すでにコピー済みでない場合、前記ソース・ドライブから前記サーバに前記セグメントを提供し、
前記セグメントが読出しのために要求され、かつ前記コピーを提供するステップが開始されて以来、すでにコピー済みである場合、前記ターゲット・ドライブを読出して前記サーバに前記セグメントのコピーを提供し、
前記セグメントが書込のために要求され、かつ前記コピーを提供するステップが開始されて以来、すでにコピー済みである場合には、前記ソース・ドライブを更新し、
前記セグメントのコピーがまだ前記ターゲット・ドライブに提供されていない場合には、前記コピーを前記ターゲット・ドライブに提供し、
前記セグメントのコピーが提供された場合には、前記コピーが提供されたことを示し、
前記コピーが提供された後に、前記ソース・ドライブ内の前記セグメントを変更させ、
前記コピー・エンジンが前記複数のセグメントのコピーを前記ターゲット・ドライブに提供する間に、前記ソース・ドライブ及び前記ターゲット・ドライブへの入出力を許可するシステム。
【請求項６】
前記メタデータが前記複数のセグメントに対応する複数のエントリを含み、前記エントリが、対応する前記セグメントが前記ターゲット・ドライブにコピーされたか否かを示す、請求項５記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ記憶システムに関し、特に、ＲＡＩＤ（redundant array of inexpensive disks）の一部の即時バックアップを提供する方法及びシステムに関する。
【０００２】
【従来の技術】
データを記憶するために、一部のコンピュータ・システムはＲＡＩＤデータ記憶サブシステムを使用する。例えば、ＲＡＩＤサブシステムは、ネットワーク上のクライアントをサービスするホストまたはサーバに接続される。ＲＡＩＤサブシステムは一般に、制御装置及び複数のディスク・ドライブを含む。制御装置は一般に、ＲＡＩＤサブシステムのオペレーションを制御する。情報が物理的にドライブ上に記憶される。
【０００３】
ＲＡＩＤサブシステム上に記憶され、ホストを介して使用されている情報をコピーすることが望ましい。例えば、ＲＡＩＤサブシステムが故障の場合にデータの可用性を保証するために、１つ以上のドライブ上に記憶されるデータがバックアップされる。バックアップが所望されるドライブは、ソース・ドライブとして知られる。ＲＡＩＤサブシステムのソース・ドライブ上に記憶されるデータの一部をコピーするためにソース・ドライブ上のファイルがコピーされ、閉ざされることが望まれる。コピーの間、ソース・ドライブ上のファイルへの入出力は可能でない。これはコピー・プロシージャの間に、ソース・ドライブ上のデータが変化しないことを保証する。次に、ソース・ドライブ上の所望のファイルが次第に別の位置にコピーされる。この位置は別のドライブであり、ターゲット・ドライブと呼ばれる。一般に、ソース・ドライブの構成もコピーされる。従って、ターゲット・ドライブは、コピー済みファイルを含むディレクトリ及びサブディレクトリを含み得る。ターゲット・ドライブ上のコピーが、ソース・ドライブ上のオリジナルとは別にアクセスされ得る。次に、コピーされるドライブが解放され、ファイルへの入出力が可能になる。
【０００４】
しかしながら、コピー機能を提供する従来の方法は、ソース・ドライブからターゲット・ドライブにファイルをコピーするのに長い時間を要し得る。これは特に、例えばバックアップのためにコピーされる大量のデータが存在する場合に当てはまる。従来のコピー・プロシージャの間、ソース・ドライブはホストを介してアクセスされ得ない。従って、システムのユーザは、コピーされるデータの読出し、変更または他の使用を比較的長い時間阻止される。
【０００５】
【発明が解決しようとする課題】
従って、ＲＡＩＤサブシステム上のデータのコピーをより迅速に生成するシステム及び方法が必要とされる。コピーを生成する方法及びシステムがシステム性能に及ぼす影響が比較的小さいことが望ましい。本発明はこうしたニーズに応えるものである。
【０００６】
【課題を解決するための手段】
本発明は、ＲＡＩＤデータ記憶システム内の複数のドライブのソース・ドライブの一部のバックアップを提供する方法及びシステムを提供する。ソース・ドライブの一部は複数のセグメントを含む。本方法及びシステムは、ソース・ドライブを複数のドライブのターゲット・ドライブに関連付けるステップと、複数のセグメントのコピーをターゲット・ドライブ上に提供するステップとを含む。コピーは、複数のセグメントのコピーを提供するステップの間に、ソース・ドライブ及びターゲット・ドライブへの入出力が可能なように提供される。
【０００７】
ここで開示されるシステム及び方法に従い、本発明はコピーの間に、ユーザがソース・ドライブまたはターゲット・ドライブに読み書きすることを可能にする。従って、ユーザにとってコピー・プロシージャは比較的瞬時に思われる。
【０００８】
【発明の実施の形態】
本発明はＲＡＩＤデータ記憶サブシステムの改善に関する。以下の説明は、当業者が本発明を使用することを可能にするために提供され、また特許出願及びその要求の状況において提供される。当業者であれば、好適な実施例の様々な変更が容易に明らかとなり、ここでの総称的な原理は他の実施例にも当てはまる。従って、本発明はここで示される実施例に制限されるものではなく、ここで述べられる原理及び特徴に従う広い範囲を許容するものである。
【０００９】
図１は、ＲＡＩＤサブシステム２０がデータ記憶装置として使用されるネットワーク１０のブロック図である。明瞭化のために、システム１０及びＲＡＩＤサブシステム２０の一部の機構だけが示される。コンピュータ・システム１０は、ネットワーク・クライアント１４、１６及び１８をサービスするサーバ１２を含む。サーバ１２は、メモリ１５上に存在し、サーバ１２を管理するオペレーティング・システム１３を含む。サーバ１２はまた、データへの高速アクセスのためのキャッシュ１７及びプロセッサ１９を含み、プロセッサ１９はオペレーティング・システム１３及び他のアプリケーション（図示せず）、並びに他のオペレーションを実行する。ＲＡＩＤサブシステム２０はＲＡＩＤ制御装置２１、及びディスク・ドライブ３０、３２、３４及び３６を含む。４つのドライブ３０、３２、３４及び３６が示されるが、別の数のドライブも使用され得る。一般に、バイトまたはバイト・グループが、ドライブ３０、３２、３４及び３６に渡り分散される（これをストライピングと呼ぶ）。ＲＡＩＤ制御装置２１はプロセッサ２２、メモリ２４、及びＲＡＩＤキャッシュ２６を含む。メモリ２４は、ＲＡＩＤ制御装置２１を操作するプログラム命令を記憶する不揮発性メモリを含み得る。クライアント１４、１６または１８が、ＲＡＩＤサブシステム２０内のドライブ３０、３２、３４または３６の１つにより記憶されるデータを使用したい場合、データの一部がキャッシュ１７に取り出される。次に、クライアント１４、１６または１８の１つを操作するユーザが、キャッシュ１７に記憶されるデータを変更または読出し得る。
【００１０】
ＲＡＩＤサブシステム２０を使用することにより、システム１０のための大量のデータが比較的安価に記憶され得る。ドライブ３０、３２、３４及び３６に渡ってデータを分散するすなわちストライピングは、データの高速アクセスを可能にする。更に、ＲＡＩＤ１、ＲＡＩＤ２、ＲＡＩＤ３、ＲＡＩＤ４、ＲＡＩＤ６またはＲＡＩＤ１０を使用することにより耐故障性が達成され得る。従って、ＲＡＩＤサブシステム２０が有用である。
【００１１】
ＲＡＩＤサブシステム２０により記憶されるデータのコピーを作成することが好ましい。例えば、ＲＡＩＤサブシステム２０により記憶されるデータをバックアップすることが望ましい。図２は、ＲＡＩＤサブシステム２０に記憶されるデータのコピーを提供するための従来の方法４０を示す。ステップ４２で、ソース・ドライブ上にコピーされるファイルが閉じられる。例えば、ドライブＡ３０上のデータがコピーされる場合、そのデータを保持するドライブＡ上のファイルが、ステップ４２で閉じられる。従って、孤立したソース・ドライブ上に記憶されるデータのブロックは読み書きできなくなる。これはコピーの間に保持されるデータの一貫したピクチャを可能にする。次にステップ４４で、ソース・ドライブの一部がコピーされる。コピーが完了するとステップ４６で、ソース・ドライブ上のデータのブロック、従ってコピーされるファイルが解放される。すなわち、一旦コピーが完了すると、ソース・ドライブ上のデータが変更または読出し可能になる。このようにして、ソース・ドライブの一部またはソース・ドライブ全体のコピーが提供され得る。
【００１２】
図２に示される従来方法は機能するが、当業者であれば、サーバ１２がコピーの間に、ソース・ドライブからコピーされるファイルへのアクセスを阻止されることが容易に理解できよう。多くのシステムでは、大量のデータをコピーすることが所望される。例えば、ドライブ全体がバックアップされたり、コピーされるファイルが非常に大きなデータベースであったりする。こうしたデータがコピーされる場合、ファイルがかなり長い期間閉じられることになり、この間、サーバ１２はそのファイルをアクセスできない。従って、ユーザはコピーの間にソース・ドライブの読み書きができなくなる。しかしながら、ネットワーク１０のユーザはしばしば、ファイルに記憶されるデータを使用したいと思う。例えば、コピーされるファイルが、１つ以上のクライアント１４、１６または１８及びサーバ１２により、頻繁にアクセスされる大きなデータベースの場合、多くのユーザがコピーの間にこのファイルをアクセスしたいと思うであろう。コピーの間にこのデータへのアクセスを拒絶することは、サーバ１２がクライアント１４、１６及び１８に所望の情報を提供する能力を妨げる。
【００１３】
本発明は、ＲＡＩＤデータ記憶システム内の複数のドライブのソース・ドライブの一部をバックアップするための方法及びシステムを提供する。ソース・ドライブの一部は複数のセグメントを含む。本方法及びシステムは、ソース・ドライブを複数のドライブのターゲット・ドライブに関連付けるステップと、複数のセグメントのコピーをターゲット・ドライブ上に提供するステップとを含む。コピーは、複数のセグメントのコピーを提供するステップの間に、ソース・ドライブ及びターゲット・ドライブへの入出力が可能なように提供される。
【００１４】
本発明は、特定の要素を使用するネットワークに関して述べられるが、当業者であれば、この方法及びシステムが、ネットワーク以外の異なるコンポーネント及び環境を有する他のシステムにおいても、効果的に作用することが容易に理解できよう。本発明はまた、バックアップを提供する状況においても述べられる。しかしながら、本発明は他の目的のためにコピーを提供するためにも使用され得る。更に、本発明はあるドライブの一部または全部のコピーを提供するか、複数のドライブのコピーを提供することができる。
【００１５】
本発明に従う方法及びシステムを詳述するために、図３を参照すると、データのコピーを迅速に提供するために使用されるシステム１００の１実施例が示される。本発明に従う方法及びシステムは、ネットワーク１０及びＲＡＩＤサブシステム２０などの、ＲＡＩＤサブシステムを使用するシステムと共に使用される。システム１００は、一貫性マシン１２０に接続されるコピー・エンジン１１０、及びメタデータ１３０を含む。コピー・エンジン１１０、一貫性マシン１２０、及びメタデータ１３０は、好適にはＲＡＩＤ制御装置２１上に存在する。例えば、メタデータ１３０は好適には、ＲＡＩＤ制御装置２１の不揮発性メモリ２４内に存在する。コピー・エンジン１１０は所望のデータをバックグラウンドでコピーする。コピーが開始されるほとんど直後にコピーされるファイルがサーバによりアクセスされ得る。従って、データのコピーがコピー・エンジン１１０により提供される間、コピーされるファイルがアクセスされて使用され得る。一貫性マシン１２０は、コピー・プロセスまたはデータの使用に悪影響を及ぼすことなく、コピーされるファイルへのデータの読み書きを保証する。メタデータ１３０は、コピーされるデータの変更を追跡するために使用される。
【００１６】
図４は、本発明に従い、ＲＡＩＤサブシステム２０上にデータを迅速にコピーするための方法のハイレベル・フロー図を示す。図４は、図１及び図４を参照しながら述べられる。コピーされるデータは、ＲＡＩＤサブシステム２０内のドライブ３０、３２、３４または３６の一部上に存在する。データのコピー元のドライブ３０、３２、３４または３６は、ソース・ドライブである。データのコピー先のドライブ３０、３２、３４または３６は、ターゲット・ドライブである。好適な実施例では、ターゲット・ドライブは、システム１０により認識される任意のドライブである。ステップ２０２で、ソース・ドライブがターゲット・ドライブに関連付けられる。従って、コピー・エンジン１１０、一貫性マシン１２０、及びメタデータ１３０は、コピーされるデータの位置、並びにデータが提供される位置を理解する。次にステップ２０４で、ソース・ドライブ上のデータがターゲット・ドライブにコピーされる一方、コピーの間にソース・ドライブ及び好適な実施例ではターゲット・ドライブへの入出力を可能にする。好適な実施例では、ステップ２０４は、ソース・ドライブ上のデータをブロック毎にコピーするステップを含む。しかしながら、別の実施例では、コピーされるデータが任意のサイズの断片にセグメント化される。好適な実施例では、ステップ２０４で提供されるデータのコピーが、ほぼコピーが開始した瞬間に存在するデータである。しかしながら、更に別の実施例では、コピーがコピー・プロシージャの間にデータに成される一部のまたは全ての変更を含む。コピー・ステップ２０４は、図２に示される方法４０のステップ４４を使用する従来のコピーよりも、もっと時間がかかるであろう。しかしながら、図４を再度参照すると、コピー・ステップ２０４はサーバ及びユーザにとって極めて高速に思われる。なぜなら、コピーされるデータへのアクセスが非常に迅速に許可されるからである。好適な実施例では、ステップ２０４は、ほとんどコピーの開始直後に、コピーされるデータへのアクセスを可能にする。
【００１７】
図５は、ＲＡＩＤサブシステム２０を含むシステム１０などのシステムにおいて、データのコピーを迅速に提供する本発明に従う方法２１０の詳細フロー図である。図５は、図１及び図５を参照しながら説明される。ステップ２１２で、ソース・ドライブがターゲット・ドライブに関連付けられる。ステップ２１２は、図４の方法２００のステップ２０２に類似する。従って、ソース及びターゲット・ドライブが定義され、ＲＡＩＤサブシステム２０がソース及びターゲット・ドライブを知らさせる。
【００１８】
ステップ２１４で、ソース・ドライブのためのキャッシュ・データが、ソース・ドライブにコミットされる。好適な実施例では、ステップ２１４はキャッシュ１７内のデータ、及びソース・ドライブ上に記憶されるキャッシュ２６内のデータをソース・ドライブにコミットするステップを含む。ステップ２１４の間、ソース・ドライブからコピーされるファイルへの入出力は存在しない。従って、好適な実施例では、ステップ２１４は、キャッシュ・データがコミットされる間、コピーされるデータを含むソース・ドライブ上のファイルを一時的に閉じるステップを含む。一旦キャッシュ・データがコミットされると、ファイルが再度開かれて使用可能になる。従って、好適な実施例では、ステップ２１４は、一旦キャッシュ・データがソース・ドライブにコミットされると、コピーされるデータを含むファイルを開くステップを含む。また、好適な実施例では、ステップ２１４はサーバ１２上のオペレーティング・システム１３を用いて実行される。
【００１９】
次にステップ２１６で、ＲＡＩＤ制御装置２１がコピー・プロセスを開始するように命令される。好適な実施例では、ステップ２１６は、"スナップショット作成"コマンドをＲＡＩＤ制御装置２１に提供するステップを含む。次にステップ２１８で、ソース・ドライブ上のデータがターゲット・ドライブ上にコピーされ、コピーの間、ソース・ドライブ及び好適な実施例ではターゲット・ドライブへの入出力を可能にする。ステップ２１８は、図４の方法２００のステップ２０４に類似する。好適な実施例では、コピー・ステップ２１８は、ＲＡＩＤ制御装置２１上のコピー・エンジン１１０、一貫性マシン１２０、及びメタデータ１３０を用いて実行される。
【００２０】
図６及び図７は、ソース・ドライブの一部のコピーをターゲット・ドライブに提供する間、ソース・ドライブ及び好適な実施例ではターゲット・ドライブへの入出力を可能にする方法２５０の好適な実施例の詳細フロー図である。従って、方法２５０は、図４または図５に示される方法２００または方法２１０のそれぞれステップ２０４または２１８を実行するために使用され得る。方法２５０はデータの"ブロック"に関連して述べられるが、データの任意のセグメントが使用され得る。
【００２１】
方法２５０がステップ２５１で開始後、ステップ２５２で第１のブロックが現ブロックとしてセットされる。ステップ２５４で、この現ブロックがソース・ドライブからターゲット・ドライブにコピーされる。ステップ２５４は好適には、データの構成もターゲット・ドライブにコピーされるように、ブロックをコピーするステップを含む。従って、ディレクトリ、サブディレクトリ、及びファイルのコピーが、ユーザにとってターゲット・ドライブ上の期待される位置に現れるべきである。次にステップ２５６で、そのブロックのためのメタデータ１３０の一部が更新される。好適には、メタデータ１３０は、コピーされる各ブロックのタグを含む。従って、ステップ２５６は好適には、そのブロックがコピーされたことを示すようにタグを更新するステップを含む。次にステップ２５８で、更にコピーすべきブロックが存在するか否かが判断される。存在しない場合、ステップ２５９でコピーが終了する。しかしながら、更にコピーされるブロックが残っている場合、ステップ２６０で、まだコピーされていない次のブロックが現ブロックとしてセットされる。ステップ２５４乃至少なくともステップ２６０は、ソース・ドライブの所望の部分がコピーされるまで繰り返される。また、ステップ２５４乃至ステップ２６０は、好適には、コピー・エンジン１１０によりバックグラウンドで実行される。従って、ステップ２５４乃至ステップ２６０は、ユーザにとって透過的である。
【００２２】
ステップ２５４乃至ステップ２６０によるコピーに加え、ソース及びターゲット・ドライブへの入出力が許可される。従ってステップ２６２で、ソースまたはターゲット・ドライブに対する読出しまたは書込み要求が、横取りされる。好適な実施例では、一貫性マシン１２０がステップ２６２を実行する。次にステップ２６４で、要求が読出し要求か否かが判断される。要求が読出し要求の場合、ステップ２６６で、要求されるブロックがソース・ドライブから読出されるか否かを判断する。肯定の場合、次にステップ２６８で、要求ブロックがソース・ドライブから読出される。ステップ２６６で、読出し要求がソース・ドライブに対するものでないと判断されると、読出し要求はターゲット・ドライブ上に記憶されるコピーに対するものである。次にステップ２７０で、要求ブロックが既にターゲット・ドライブにコピーされたか否かが判断される。好適な実施例では、ステップ２７０は、要求ブロックに対するメタデータ１３０内のタグの状態を判断することにより実行される。ブロックがまだコピーされていない場合、データは変更されずにソース・ドライブ上に存在する。従って、読出されるブロックがコピーされていない場合、ステップ２７２で、読出し要求がソース・ドライブに転送される。従ってステップ２６８で、ブロックがソース・ドライブから読出される。ステップ２７０で、ブロックが既にコピーされたと判断されると、ステップ２７４で、データがターゲット・ドライブから読出される。ステップ２６８、２７２または２７４での読出しの完了後、方法２５０はステップ２６２に戻り、次の要求を横取りする。
【００２３】
ステップ２６４で、要求が読出し要求でないと判断される場合、要求は書込み要求である。従って、要求はソース・ドライブ上のデータを記憶するブロックを変更しようとしている。ステップ２７６で、変更されるブロックが既にターゲット・ドライブにコピーされたか否かが判断される。ブロックがコピーされた場合、ステップ２７８で、ブロックは単に変更される。なぜなら、既にコピーされたブロックの変更はブロックを変更することにより、コピー・プロシージャに悪影響を及ぼさないからである。しかしながら、変更されるブロックがまだターゲット・ドライブにコピーされていないと判断される場合、ステップ２８０で、ブロックがターゲット・ドライブにコピーされる。次にステップ２８２で、ブロックがコピーされたことを示すために、それらのブロックに対するメタデータ１３０内のタグが更新される。次にステップ２８４で、ソース・ドライブ上の所望のブロックが書込まれる。次に方法２５０はステップ２６２に戻り、追加の読出しまたは書込み要求を横取りする。明示的に示されないが、方法２５０の間にエラーが発生した場合、方法２５０は終了する。
【００２４】
図８乃至図１１は、コピーが開始された後の様々な時刻、例えば方法２１０のステップ２１６における、メタデータ１３０、ソース・ドライブ、及びターゲット・ドライブの状態を示す。図８を参照すると、コピー・プロシージャが丁度開始された時刻ｔ０における状態３００が示される。ソース・ドライブ３１０及びターゲット・ドライブ３３０が定義される。メタデータ、すなわちコピーされる６つのブロック３１１乃至３１６のタグ３２０が決定される。ここで各ブロックは、それぞれデータａ、ｂ、ｃ、ｄ、ｅ及びｆを有する。タグ３２０もまた決定される。ブロックａ３１１乃至ブロックｆ３１６に対応するタグ３２１乃至３２６は、０としてセットされる。なぜなら、ブロック３１１乃至３１６のいずれもコピーされていないからである。
【００２５】
図９は、ソース・ドライブ３１０内の第１のブロック３１１が、ターゲット・ドライブ３３０内の第１のブロック３３１にコピーされた時刻ｔ１における、ソース・ドライブ３１０、タグ３２０、及びターゲット・ドライブ３３０の状態３００'を示す。従って、第１のブロック３１１に対するタグ３２１が、１に変更される。この変更は、第１のブロック３１１がコピーされた事実を反映する。残りのブロック３１２乃至３１６はコピーされていないので、対応するタグ３２２乃至３２６は０のままである。
【００２６】
図１０は、第４のブロック３１４への書込み要求が受信され、方法２５０に従い処理された時刻ｔ２（＞ｔ１）における、ソース・ドライブ３１０、タグ３２０及びターゲット・ドライブ３３０の状態３００''を示す。ｔ２＞ｔ１なので、ソース・ドライブ３１０内の第１のブロック３１１は、ターゲット・ドライブ３３０内の第１のブロック３３１にコピーされており、対応するタグ３２１は１である。ソース・ドライブ３１０上の第４のブロック３１４は、書込み要求のために、データｄ'を保持するように変更されている。しかしながら、第４のブロック３１４内のデータが変更される前に、第４のブロック３１４はターゲット・ドライブ３３０上の第４のブロック３３４にコピーされる。従って、ターゲット・ドライブ３３０は、変更前の第４のブロック３３４のデータｄを含む。更に、第４のブロック３１４のタグ３２４は、第４のブロック３１４がターゲット・ドライブ３３０にコピーされたことを反映するように変更される。従って、ソース・ドライブ３１０のコピーが継続するとき、第４のブロック３１４はターゲット・ドライブ３３０に再コピーされる必要がない。代わりに、追加の書込み要求の介入が存在しない場合、第２のブロック３１２、第３のブロック３１３、第５のブロック３１５及び第６のブロック３１６が、順次コピーされる。
【００２７】
図１１は、第４のブロックへの第２の書込み要求が受信され、方法２５０に従い処理された時刻ｔ３（＞ｔ２）における、ソース・ドライブ３１０、タグ３２０及びターゲット・ドライブ３３０の状態３００'''を示す。ソース・ドライブ３１０上の第４のブロック３１４は、書込み要求のために、データｄ''を保持するように変更される。第４のブロック３１４のタグ３２４は、第４のブロック３１４が既にターゲット・ドライブの第４のブロック３３４にコピーされたことを示すので、第４のブロック３１４は再コピーされない。第４のブロック３１４は、代わりにデータｄ''を保持するように変更される。ターゲット・ドライブ３３０のブロック３３４は依然、あらゆる変更前の第４のブロック３１４のデータｄを含む。従って、メタデータ１３０内のタグ３２０はデータの変更を追跡する。コピー・エンジン１１０及び一貫性マシン１２０は、所望の時刻におけるソース・ドライブ３１０の所望の部分のコピーが、ターゲット・ドライブ３３０に提供されることを保証し、また所望の位置への入出力がコピーの間に提供されることを保証する。
【００２８】
システム１０及び方法２００、２１０または２５０を使用することにより、ソース・ドライブの一部または全部のコピーが、実質的に瞬時に提供されるように思われる。ソース・ドライブへの入出力が提供されない唯一の時間は、方法２１０のステップ２１４により、キャッシュ・データがソース・ドライブにコミットされる間である。それ以外では、コピーがバックグラウンドで提供される間、データがソース・ドライブまたはターゲット・ドライブから読出される。更に、ソース・ドライブ及びターゲット・ドライブへの入力が許可され得る。好適な実施例では、変更されるソース・ドライブの一部が、最初にターゲット・ドライブにコピーされるように保証される。従って、コピーが要求されたほぼ瞬間にターゲット・ドライブ上のコピーがソース・ドライブのイメージを保存する。しかしながら、別の実施例では、コピーの間のソース・ドライブの更新が、ターゲット・ドライブに提供されるコピーに反映されても良い。いずれの実施例においても、メタデータ１３０はコピーの間に実施される変更を追跡するために使用される。従って、ＲＡＩＤ制御装置２１はデータの変更を追跡し、一貫性マシン１２０を用いて、ソース・ドライブ上のデータ及びターゲット・ドライブ上のコピーが、期待されるものと矛盾しないように保証する。更に、ステップ２５４乃至ステップ２６０は、コピーされる全てのブロックに対して提供されるように述べられたが、ソース・ドライブ上のブロックの一部だけがコピーされても良い。例えば、ステップ２７６乃至ステップ２８４が、特定の期間内に変化するブロックだけをコピーするために使用され得る。
【００２９】
従って、ソース・ドライブの所望の部分のコピーが迅速に提供され得る。換言すると、サーバ１２及びユーザがほとんど瞬時にコピーをアクセスすることができ、またソース・ドライブ内のデータを変更できる。これはたとえコピーが完了していない場合にも当てはまる。従って、本発明は大きなファイルのコピーが所望されるシステムにおいて格別の有用性を見いだす。コピーの間に入出力が許可され、一貫性が管理されるので、コピーが提供されている時間全体を通じてファイルが閉じられる必要がない。代わりに、キャッシュ１７及びキャッシュ２６内のデータがソース・ドライブにコミットされる間の、ほんの短い時間だけファイルがアクセス不能になる。それ以後は、ユーザはソース・ドライブ上のデータを変更でき、またターゲット・ドライブ上のコピーをアクセスできる。従って、ユーザはかなり長い期間、データへのアクセスを拒否されない。
【００３０】
以上、ＲＡＩＤサブシステム上のデータのコピーを迅速に提供するための方法及びシステムについて開示した。好適な実施例では、コピーがかなり瞬時に提供される。本発明は図示の実施例に従い述べられてきたが、当業者であれば、これらの実施例の変形が存在し、これらの変形が本発明の趣旨及び範囲内に含まれることが容易に理解できよう。従って、多くの変更が当業者により、本発明の趣旨及び範囲から逸れることなく実施され得る。
【００３１】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３２】
（１）ＲＡＩＤデータ記憶システム内の複数のドライブのソース・ドライブの一部のコピーを提供する方法であって、前記ソース・ドライブの一部が複数のセグメントを含むものにおいて、
ａ）前記ソース・ドライブを前記複数のドライブのターゲット・ドライブに関連付けるステップと、
ｂ）前記複数のセグメントのコピーを前記ターゲット・ドライブ上に提供するステップと
を含み、前記複数のセグメントのコピーを提供するステップの間に、前記ソース・ドライブ及び前記ターゲット・ドライブへの入出力を可能にする、方法。
（２）前記ステップｂ）が、
ｂ１）前記コピーを提供するステップが開始されて以来、前記複数のセグメントの各々がコピーされたか否かを示すステップと、
ｂ２）前記コピーを提供するステップが開始されて以来、前記複数のセグメントの各々の変更を追跡するステップと
を含む、前記（１）記載の方法。
（３）前記ステップｂ１）が、
ｂ１ｉ）前記複数のセグメントの各々に関連付けられ、前記セグメントのコピーが前記ターゲット・ドライブに提供されたか否かを示すメタデータを提供するステップを含む、前記（２）記載の方法。
（４）前記ステップｂ）が、
ｂ１）前記複数のセグメントのあるセグメントの読出しが要求され、該セグメントのコピーが前記ターゲット・ドライブ上に提供されていないことが示される場合、前記セグメントを前記ソース・ドライブから提供するステップと、
ｂ２）前記セグメントの読出しが要求され、前記コピーを提供するステップが開始されて以来、前記セグメントが変更されていない場合、前記セグメントを前記ソース・ドライブから提供するステップと、
ｂ３）前記セグメントの読出しが要求され、前記コピーを提供するステップが開始されて以来、前記セグメントが変更されており、変更が所望される場合、前記セグメントを前記ソース・ドライブから提供するステップと、
ｂ４）前記セグメントの読出しが要求され、前記コピーを提供するステップが開始されて以来、前記セグメントが変更されており、変更が所望されない場合、前記セグメントのコピーを前記ターゲット・ドライブから提供するステップと
を含む、前記（１）記載の方法。
（５）前記ステップｂ）が、
ｂ１）前記ソース・ドライブから前記複数のセグメントのあるセグメントが変更され、前記セグメントのコピーがまだ提供されていない場合、前記セグメントのコピーを前記ターゲット・ドライブに提供し、前記セグメントの前記コピーが提供されたことを示し、前記ソース・ドライブ内の前記セグメントを変更するステップと、
ｂ２）前記ソース・ドライブから前記複数のセグメントのあるセグメントが変更され、前記セグメントのコピーが既に提供された場合、前記ソース・ドライブ内の前記セグメントを変更するステップと
を含む、前記（１）記載の方法。
（６）前記ステップｂ）が、
ｂ３）前記セグメントの読出しが要求され、該セグメントのコピーが前記ターゲット・ドライブ上に提供されていないことが示される場合、前記セグメントを前記ソース・ドライブから提供するステップと、
ｂ４）前記セグメントの読出しが要求され、前記コピーを提供するステップが開始されて以来、前記セグメントが変更されていない場合、前記セグメントを前記ソース・ドライブから提供するステップと、
ｂ５）前記セグメントの読出しが要求され、前記コピーを提供するステップが開始されて以来、前記セグメントが変更されており、変更が所望される場合、前記セグメントを前記ソース・ドライブから提供するステップと、
ｂ６）前記セグメントの読出しが要求され、前記コピーを提供するステップが開始されて以来、前記セグメントが変更されており、変更が所望されない場合、前記セグメントのコピーを前記ターゲット・ドライブから提供するステップと
を含む、前記（５）記載の方法。
（７）前記ＲＡＩＤデータ記憶システムが複数のディスクに接続されるキャッシュを含み、前記キャッシュが、前記ソース・ドライブの一部に提供されるデータを含むことができるものにおいて、
ｃ）前記コピーを前記ターゲット・ドライブに提供するステップｂ）の開始前に、前記キャッシュ内のデータを前記ソース・ドライブにコミットするステップを含む、前記（１）記載の方法。
（８）ＲＡＩＤデータ記憶システム内の複数のドライブのソース・ドライブの一部のコピーを提供するシステムであって、前記ソース・ドライブの一部が複数のセグメントを含むものにおいて、
前記ソース・ドライブに関連付けられ、前記複数のセグメントのコピーを記憶するターゲット・ドライブと、
前記ソース・ドライブ及び前記ターゲット・ドライブに接続され、前記複数のセグメントのコピーを前記ターゲット・ドライブ上に提供するコピー・エンジンと、
前記コピー・エンジンに接続され、前記複数のセグメントのコピーが前記ターゲット・ドライブに提供されたか否かの指示を含むメタデータと
を含み、前記コピー・エンジンが前記複数のセグメントのコピーを前記ターゲット・ドライブに提供する間に、前記ソース・ドライブ及び前記ターゲット・ドライブへの入出力を可能にする、システム。
（９）前記メタデータが前記複数のセグメントに対応する複数のエントリを含み、前記エントリが、対応する前記セグメントが前記ターゲット・ドライブにコピーされたか否かを示す、前記（８）記載のシステム。
（１０）前記ソース・ドライブ及び前記ターゲット・ドライブに接続され、書込み要求に応答して、前記複数のセグメントのあるセグメントを変更するための書込み要求を横取りする一貫性マシンを含み、前記一貫性マシンが、
前記セグメントのコピーがまだ前記ターゲット・ドライブに提供されていない場合、前記コピーを前記ターゲット・ドライブに提供するステップと、
前記セグメントのコピーがまだ提供されていない場合、前記コピーが提供されたことを示すステップと、
前記コピーが提供された後、前記ソース・ドライブ内の前記セグメントを変更するステップと
を含む、前記（８）記載のシステム。
（１１）前記要求に応答して、前記セグメントのコピーが提供された場合、前記一貫性マシンが前記ソース・ドライブ内の前記セグメントを変更する、前記（１０）記載のシステム。
（１２）前記一貫性マシンが前記セグメントの読出し要求を横取りし、前記読出し要求に応答して、
前記セグメントのコピーが前記ターゲット・ドライブ上に提供されていないことが示される場合、前記セグメントを前記ソース・ドライブから提供するステップと、
前記コピーを提供するステップが開始されて以来、前記セグメントが変更されていない場合、前記セグメントを前記ソース・ドライブから提供するステップと、
前記コピーを提供するステップが開始されて以来、前記セグメントが変更されており、変更が所望される場合、前記セグメントを前記ソース・ドライブから提供するステップと、
前記コピーを提供するステップが開始されて以来、前記セグメントが変更されており、変更が所望されない場合、前記セグメントのコピーを前記ターゲット・ドライブから提供するステップと
を含む、前記（１１）記載のシステム。
【図面の簡単な説明】
【図１】ＲＡＩＤデータ・サブシステムを含むシステムのブロック図である。
【図２】ＲＡＩＤデータ・サブシステム内のディスク・ドライブからデータをコピーする従来方法のフロー図である。
【図３】ＲＡＩＤサブシステム内のデータのコピーを迅速に提供するための、本発明によるシステムのブロック図である。
【図４】ＲＡＩＤサブシステム内のドライブ上に存在するデータのコピーを迅速に提供する方法のハイレベル・フロー図である。
【図５】ＲＡＩＤサブシステム内のドライブ上に存在するデータのコピーを迅速に提供する方法の詳細なフロー図である。
【図６】ＲＡＩＤサブシステム内のドライブ上に存在するデータのコピーを迅速に提供する方法の好適な実施例の詳細なフロー図である。
【図７】ＲＡＩＤサブシステム内のドライブ上に存在するデータのコピーを迅速に提供する方法の好適な実施例の詳細なフロー図である。
【図８】ソース・ドライブのコピーが形成されるときの、ソース及びターゲット・ドライブのメタデータのブロック図である。
【図９】ソース・ドライブ上の第１のブロックのコピーが形成された直後の、ソース及びターゲット・ドライブのメタデータのブロック図である。
【図１０】コピーされなかったファイルが変更された直後の、ソース及びターゲット・ドライブのメタデータのブロック図である。
【図１１】コピーされたファイルが変更された直後の、ソース及びターゲット・ドライブのメタデータのブロック図である。
【符号の説明】
１０  ネットワーク
１２  サーバ
１３  オペレーティング・システム
１４、１６、１８  クライアント
１５、２４  メモリ
１７、２６  キャッシュ
１９、２２  プロセッサ
２０  ＲＡＩＤサブシステム
２１  ＲＡＩＤ制御装置
３０、３２、３４、３６  ディスク・ドライブ
１００  システム
１１０  コピー・エンジン
１２０  一貫性マシン
１３０  メタデータ
２００、２１０、２５０  方法
３００、３００'、３００''、３００'''  状態
３１０  ソース・ドライブ
３３０  ターゲット・ドライブ
３２０、３２１、３２２、３２３、３２４、３２５、３２６  タグ
【図１】
0003641183.tif 000002
【図２】
0003641183.tif 000003
【図３】
0003641183.tif 000004
【図４】
0003641183.tif 000005
【図５】
0003641183.tif 000006
【図６】
0003641183.tif 000007
【図７】
0003641183.tif 000008
【図８】
0003641183.tif 000009
【図９】
0003641183.tif 000010
【図１０】
0003641183.tif 000011
【図１１】
0003641183.tif 000012