(57)【要約】【課題】ボリュームのバックアップイメージがＤＣＡストレージシステム中において復元されるときに、ストレージ容量の浪費を緩和するための方法および装置を提供する。【解決手段】バックアップオペレーションおよび復元オペレーションが、動的チャンク割付け（ＤＣＡ）機能を有するストレージシステムにおいて可能にされる。ＤＣＡストレージシステムにおいては、物理ストレージ域のチャンクは、ボリュームのセグメントをターゲットとする書込みコマンドが受け取られるまではボリュームのセグメントに割り付けられない。ＤＣＡストレージシステムにおけるボリュームの復元オペレーション中に、ボリュームのバックアップイメージが復元されるときのストレージ容量の浪費は、ボイドデータにすぎない復元データのセグメントに対する物理ストレージ域の割付けを防止することによって緩和される。【選択図】図１Ａ
2008130080.tif 000002
【特許請求の範囲】
【請求項１】
情報システムにおけるバックアップおよび復元の方法であって、
１つまたは複数のディスクドライブを有するストレージ装置と、前記１つまたは複数のディスクドライブ上の物理ストレージ域を独立に割り付けることができる複数のセグメントに論理的に分割されているボリュームを記憶するために提供するためのコントローラとを設けるステップと、
前記ボリュームのどのセグメントに物理ストレージ域が割り付けられているかを示す情報を前記ストレージ装置中に保持するステップと、
書込みコマンドが、データを指定されたセグメントに記憶するために受け取られるとき、また前記指定されたセグメントに物理ストレージ域が現在割り付けられていないときに、前記ボリュームの前記指定されたセグメントに前記１つまたは複数のディスクドライブからの物理ストレージ域を割り付けるステップと、
ある時点において前記情報のコピーを記憶するステップと、
前記時点における状態に前記ボリューム中の前記データの復元を管理する際に使用するために前記情報の前記コピーを取り出すステップと
を含む方法。
【請求項２】
前記時点において前記ボリュームに記憶された前記データのコピーをバックアップ媒体に記憶するステップと、
前記ボリュームのどのセグメントに前記時点において物理ストレージ域が割り付けられているかを決定するための前記情報の前記コピーを使用し、前記時点において物理ストレージ域が割り付けられている、前記ボリュームのこれらのセグメントだけを取り出すことにより、前記時点における前記状態まで前記ボリュームに記憶される前記データを復元するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
物理ストレージ域が割り付けられていない前記セグメントについて記憶されたデフォルトデータパターンを含む、前記ボリュームのコピーを前記時点において記憶するステップと、
前記ボリュームに記憶される前記データを前記時点における前記状態へと復元するステップに先立って前記ストレージ装置中の前記情報を前記時点において作成される前記情報の前記コピーで置き換えるステップと、
前記ストレージ装置において１つまたは複数の書込みコマンドとして前記ボリュームの前記コピーを受け取るステップと、
前記ストレージ装置中の前記情報の前記コピーを使用して、前記１つまたは複数の書込みコマンドが、復元されるべきデータを含むか、あるいは前記デフォルトデータパターンのデータを含むかを決定して、前記デフォルトデータパターンを記憶するための前記ボリュームに物理ストレージ域を割り付けることを防止するステップと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ストレージ装置中に保持される前記情報をクリアして、前記ボリュームに割り付けられた任意の物理ストレージ域を解放するステップと、
前記情報の前記コピーをバックアップコンピュータへと取り出すステップと、
前記時点において前記ボリュームのどのセグメントに物理ストレージ域が割り付けられているかを決定するための前記情報の前記コピーを使用して前記バックアップコンピュータにより前記ボリュームに記憶される前記データを前記時点における前記状態へと復元し、前記時点に物理ストレージ域が割り付けられたこれらのセグメントだけについて復元データを前記ストレージ装置に送るステップと
をさらに含む、請求項２に記載の方法。
【請求項５】
前記ストレージ装置と通信して前記ボリュームからのデータをバックアップ媒体にバックアップするためのバックアップコンピュータを設けるステップと、
前記ストレージ装置をバックアップモードに設定するステップと、
前記ストレージ装置におけるバックアップコンピュータから物理ストレージ域が割り付けられていない、前記ボリュームのセグメントからのデータを要求する読取りコマンドを受け取るステップと、
前記ストレージ装置によって非データ転送状態で応答するステップと
をさらに含み、前記バックアップコンピュータが、前記時点において前記ボリュームに記憶される前記データの前記コピーにボイドデータを記憶することを回避する、請求項１に記載の方法。
【請求項６】
前記ストレージ装置に加えてバックアップストレージ装置を設けるステップと、
前記ストレージ装置および前記バックアップストレージ装置と通信するバックアップコンピュータを設けるステップと、
前記バックアップコンピュータによって前記時点における前記情報をコピーするステップと
をさらに含み、前記時点における前記ボリュームに記憶される前記データをコピーするために、前記バックアップコンピュータが、前記情報の前記コピーと、前記時点における前記ボリューム上の前記データのコピーとをバックアップストレージ装置上のバックアップ媒体に記憶する、請求項１に記載の方法。
【請求項７】
前記ストレージ装置に加えて、バックアップストレージ装置を設けるステップと、
前記情報の前記コピーを前記バックアップストレージ装置中のバックアップ媒体、および／または前記ストレージ装置中のロケーションに記憶するステップと
をさらに含む、請求項１に記載の方法。
【請求項８】
複数のディスクドライブ上に分散される複数の物理ブロックの連結として割り付けられる前記各物理ストレージ域を設けるステップ
をさらに含む、請求項１に記載の方法。
【請求項９】
情報システムにおけるバックアップおよび復元の方法であって、
１つまたは複数のディスクドライブを有するストレージ装置と、前記１つまたは複数のディスクドライブ上の物理ストレージ域を独立に割り付けることができる複数のセグメントに論理的に分割されているボリュームを記憶するために提供するためのコントローラとを設けるステップと、
前記ボリュームのどのセグメントに物理ストレージ域が割り付けられているかを示す情報を前記ストレージ装置中に保持するステップと、
書込みコマンドが、指定されたセグメントにデータを記憶するために受け取られるとき、また前記指定されたセグメントに物理ストレージ域が現在割り付けられていないときに、前記ボリュームの前記指定されたセグメントに前記１つまたは複数のディスクドライブからの物理ストレージ域を割り付けるステップと、
ある時点における前記ボリュームのコピーをバックアップ媒体に記憶して、前記時点において物理ストレージ域が割り付けられていない、前記ボリュームの前記セグメントについて記憶されるボイドデータを含むバックアップイメージを作成するステップと、
前記情報をクリアし、前記バックアップイメージを取り出し、前記バックアップイメージ中の、ボイドデータを含むセグメントを検出し、ボイドデータを含まない前記セグメントについてだけ新しい物理ストレージ域を割り付けることにより、前記時点における状態に前記ボリュームを復元するステップと
を含む方法。
【請求項１０】
物理ストレージ域が割り付けられていない前記セグメントのうちの１つからのデータを要求する読取りコマンドに応答するときに前記ボリュームについてのボイドデータについて使用されるデフォルトデータパターンを示すデフォルトデータパターンテーブルを提供するステップと、
前記ボリュームを復元する間に前記バックアップイメージからの書込みデータを前記テーブル中の前記デフォルトデータパターンと比較して、セグメントについて物理ストレージ域を割り付けるべきかどうかを決定するステップと
をさらに含む、請求項９に記載の方法。
【請求項１１】
オールゼロまたはオール０ｘＦＦ（１６進数）を前記ボイドデフォルトデータパターンとして使用するステップと、
前記書込みデータがボイドデータであるかどうかを決定する際に使用するためのＬＳＩ回路を設けるステップと
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ストレージ装置に加えてバックアップストレージ装置を設けるステップと、
前記ストレージ装置および前記バックアップストレージ装置と通信するバックアップコンピュータを設けるステップと、
前記バックアップコンピュータを使用して、前記時点における前記ボリュームの前記コピーを前記バックアップストレージ装置上にある前記バックアップ媒体に記憶するステップと
をさらに含む、請求項９に記載の方法。
【請求項１３】
複数のディスクドライブ上に分散される複数の物理ブロックの連結として前記各物理ストレージ域を設けるステップ
をさらに含む、請求項９に記載の方法。
【請求項１４】
１つまたは複数のストレージデバイスとコントローラとを含むストレージ装置であって、前記コントローラは、前記ストレージ装置と通信するホストコンピュータから受け取られるデータを記憶するためのボリュームを提示するように構成され、
前記ストレージ装置は、データが前記ボリュームに記憶されるときに、前記１つまたは複数のストレージデバイスから前記ボリュームに物理ストレージ域を割り付けるための動的容量割付け機能を有し、
前記ボリュームは、複数のセグメントに論理的に分割され、前記コントローラは、ターゲットとされるセグメントを対象とする書込みコマンドが、前記コントローラによって受け取られ、物理ストレージ域がすでに前記ターゲットとされるセグメントに割り付けられていないときに、前記１つまたは複数のストレージデバイスから前記ターゲットとされるセグメントに物理ストレージ域を割り付けるように構成され、
前記ストレージ装置は、前記ボリュームのどのセグメントに物理ストレージ域が割り付けられているかを示すテーブルをさらに含むストレージ装置と、
時点における前記テーブルのコピーを読み取り、前記テーブルの前記コピーをバックアップ媒体に記憶するための、前記ストレージ装置と通信するバックアップコンピュータと
を備え、前記バックアップコンピュータは、前記ボリューム中の前記データの前記時点における状態への復元を管理する際に使用するための前記テーブルの前記コピーを取り出すように構成される、情報システム。
【請求項１５】
前記各物理ストレージ域は、複数のディスクドライブ上に分散される複数の物理ブロックの連結として割り付けられる、請求項１４に記載のシステム。
【請求項１６】
バックアップストレージデバイスをさらに含み、前記バックアップコンピュータは、さらに前記ボリューム中に含まれるデータのコピーを前記バックアップストレージデバイスにバックアップコピーとして記憶するように構成される、請求項１４に記載のシステム。
【請求項１７】
前記バックアップコンピュータは、前記データの前記コピーを読み取り、前記ストレージ装置に書き込むことにより、前記時点における前記状態に前記ボリュームを復元するように構成され、
前記ストレージ装置は、前記テーブルの前記コピーを使用して、前記ボリュームの復元中に前記バックアップストレージデバイスによって書き込まれる前記データの前記コピーが有効なデータであるかどうかを決定するように構成される、請求項１６に記載のシステム。
【請求項１８】
前記バックアップコンピュータは、前記テーブルの前記コピーを使用して、バックアップオペレーション中に前記ストレージ装置から受け取られるデータが、有効なデータであるかどうかを決定するように構成される、請求項１６に記載のシステム。
【請求項１９】
前記バックアップコンピュータは、前記バックアップコピーを使用して前記バックアップコピーを前記バックアップデバイスから読み取り、前記バックアップコピーを前記ストレージ装置に書き込むことにより、前記ボリュームを復元するように構成され、
前記ストレージ装置は、前記ボリュームを復元することの開始に先立って前記ボリュームについての前記テーブルをクリアするように構成される、請求項１８に記載のシステム。
【請求項２０】
前記ストレージ装置は、前記セグメントについてのデータが前記バックアップコンピュータから受け取られるときに、復元されている前記ボリュームのセグメントについて物理ストレージ域を割り付けることにより前記ボリュームの復元中に前記バックアップコンピュータから受け取られるデータを記憶するように構成される、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にストレージシステムに関する。
【背景技術】
【０００２】
ストレージボリューム中における物理ブロックの浪費を低減させるために、（「動的容量割付け(dynamic capacity allocation)」または「シンプロビジョニングストレージシステム(thin provisioning storage system)」とも称される）動的チャンク割付け(dynamic chunk allocation)（ＤＣＡ）機能を利用したストレージシステムが、開発されてきている。ＤＣＡ技術の下では、論理ボリュームは、データを記憶するための１つまたは複数のホストコンピュータによる使用のために割り付けられるが、ストレージの物理ブロックは、最初そのボリュームには割り付けられてはいない。その代わりに、ストレージシステムが、それに物理ストレージ容量がまだ割り付けられていないボリュームの区域を対象とするホストからの書込みコマンドを受け取るときに、ストレージシステムは、使用可能な物理ストレージ域のプール（すなわち、ストレージチャンクプール(storage chunk pool)）から、（一般にストレージ「チャンク」と呼ばれる）物理ストレージ空間の区域を割り付ける。ストレージ容量のチャンクは、ハードディスクドライブなど１つまたは複数のストレージデバイス上のストレージ空間の１つまたは複数の物理ブロックから構成される物理ストレージ域である。割り付けられた物理ストレージ域が、シンプロビジョニングされた(thin-provisioned)ボリュームの一部分についてすでに存在するときに、これは、データが、ホストコンピュータによって少なくとも１回はボリュームのその部分にすでに書き込まれていることを示す。一部の実施形態においては、大きなボリューム容量がユーザに対して提示されるので、シンプロビジョニングされたボリュームは、その最初の状態においては１タイプの仮想ボリュームと考えることもできるが、実際の物理ストレージ空間は、このボリュームについてはまだ割り付けられてはいない。
【０００３】
物理ブロックは、データの書込みが実際に行われるときに割り付けられるにすぎないので、ＤＣＡストレージは、ストレージシステム中の物理ブロックの浪費を低減させることができる。ストレージシステムがシンプロビジョニングされたボリュームのある種の範囲またはセグメントに対する書込みコマンドを受け取らない場合には、次いで物理データブロックは、実際にはボリュームのこれらの部分には割り付けられない。これは、ボリュームが作成されるときに、ボリュームがある量の物理ストレージ空間を有するものとして割り付けられる従来のストレージシステムとは異なる。したがって、動的容量割付け機能を組み込んでいない従来のストレージシステムは通常、たとえデータがこれらのブロックに記憶されていないとしても、システム中におけるボリュームに割り付けられた大量の未使用の物理データブロック（すなわち、浪費される物理ブロック）を有する。
【０００４】
２００４年、２月２３日に出願された「Automated On-Line Expansion Method for Storage Device」という名称のＹｏｓｈｉｋｉ  Ｋａｎｏ等に対する米国特許出願公開第２００４０１６２９５８号の開示は、参照によって本明細書に組み込まれており、ボリュームの区域が、書込みコマンドを受け取るときにストレージチャンクをボリュームに動的に割り付ける自動化されたオンライン容量拡張機能を含むそのようなストレージシステムを開示している。しかし、この先行技術は、ＤＣＡストレージシステムにおけるそのようなシンプロビジョニングされたボリューム中のデータを保護する際に使用するためのどのようなバックアップまたは復元の方法も開示してはいない。したがって以下でさらに詳細に説明されるように、バックアップイメージを使用してストレージシステムへとデータを復元するときに浪費ストレージチャンクをストレージシステム中において割り付けることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
よく知られているように、記憶済みデータの定期的バックアップが、ディスク故障、大惨事などの場合にデータを保護するために必須になっている。データが失われ、または消去されるとき、あるいはストレージデバイスが故障するときには、失われたデータは、一般的にある以前の時点において作成されたバックアップイメージからデータを復元することにより、回復される。一般的に、ボリュームレベルのバックアップを実施するときに、バックアップコンピュータは、バックアップされているボリュームからデータを読み取り、そのデータをテープまたは他のバックアップ媒体に対して書き込む。バックアッププロセス中に、バックアップコンピュータは、このようにして読み取られたデータをバックアップ媒体に書き込みながら、ボリュームを先頭から末尾まで読み取る。しかし、この従来のバックアップ技法が、ＤＣＡ機能を利用するストレージシステム上のボリュームに適用されるときに、バックアッププログラムは、物理ストレージ空間がそれらの区域にまだ割り付けられていないボリュームの区域（セグメント）からデータを読み取ろうと試みる。それに応じて、ストレージシステムは、バックアップコンピュータが、物理ストレージ空間がそれにまだ割り付けられていないボリュームの各セグメント上のデータを読み取ろうとするときに、一般的にデフォルトボイドデータパターン(default void data pattern)で応じる。シンプロビジョニングされたボリュームが、非常に大きく、物理ストレージ域に割り付けられた容量の小さなパーセンテージしか使用していない場合には、大量のバックアップされたデータは、このデフォルトのデータパターンである可能性がある。したがって、ボリュームのバックアップイメージ上では、通常、全体のボリュームイメージが、従来のバックアップソフトウェアを使用したデータバックアップ中に記憶されるので、大量のバックアップされたデータは、浪費空間となる可能性がある。
【０００６】
さらに、このバックアップボリュームイメージが、ボリュームレベルの復元オペレーション中において使用されるときに、バックアップコンピュータは、バックアップ媒体からデータを読み取り、そのデータをＤＣＡストレージシステム中の復元されたボリュームに書き込む。バックアップコンピュータは、従来先頭から末尾までボリュームを書き込むことによりボリュームを復元する。したがって、全体のバックアップイメージを使用してボリュームを再構築し、これは、バックアップコンピュータが、ボリューム中におけるすべての割り付けられたアドレスブロックに対して書込みコマンドを発行し、それによって、たとえそれらのブロックがデフォルトのデータパターンのヌルデータで満たされるとしてもボリュームにブロックを割り付け、それが大量の物理ストレージ空間の不必要な浪費をもたらし得るので、動的チャンク割付け機能の目的を駄目にしてしまう。
【課題を解決するための手段】
【０００７】
本発明は、ストレージシステムについてのデータのバックアップおよび復元のための方法および装置に関する。本発明は、物理ストレージ域がボリュームの指定された部分にすでに割り付けられていない場合に、ボリュームに対する書込みコマンドが受け取られるときに、物理ストレージ空間のチャンクが割り付けられる動的チャンク割付け（ＤＣＡ）機能を有するストレージシステムと共に使用するために適している。本発明の実施形態は、ボリュームのバックアップイメージがＤＣＡストレージシステム中において復元されるときに、ストレージ容量の浪費を緩和するための方法および装置を提供する。本発明のこれらおよび他の特徴および利点は、好ましい実施形態についての以降の詳細な説明を考慮すれば、当業者には明らかになろう。
【０００８】
以上に与えられた一般的な説明に併せて、添付図面と、以下で与えられる好ましい実施形態についての詳細な説明は、現在企図されている本発明の最良の態様の好ましい実施形態の原理を例証し、説明する役割を果たすものである。
【発明を実施するための最良の形態】
【０００９】
本発明の以降の詳細な説明においては、本開示の一部分を構成する添付図面に対する参照が行われ、これらの図面は、例証、および限定することなく本発明を実行することができる特定の実施形態として示される。図面中において、同様な番号は、いくつかの図面全体を通して実質的に同様なコンポーネントを説明している。さらに、それらの図面、前述の解説、および以下の説明は、例示的で説明的なものにすぎず、本発明または本出願の範囲をいかなる方法によっても限定することを意図してはいない。
【００１０】
例示の実施形態においては、本発明のシステムは、ホストコンピュータと、バックアップコンピュータと、バックアップストレージ装置と、動的チャンク割付け機能を有するストレージシステムとから構成される。これらの実施形態においては、動的チャンク割付け（ＤＣＡ−「動的容量割付け」とも称される）機能を有するストレージシステムは、ＤＣＡストレージシステムと称することができる。ＤＣＡストレージシステムは、（「シンプロビジョニングされたボリューム」または「ＤＣＡボリューム」とも称される）１つまたは複数の論理ボリュームを含み、これは、コンピュータによって書き込まれるデータと、未使用のストレージチャンクを保持するためのチャンクプールと、未使用のストレージチャンクを管理するためのチャンクプール管理テーブルと、割り付けられたストレージチャンクを管理するためのチャンクテーブルとをボリュームに記憶することができる。
【００１１】
ＤＣＡストレージシステム中のボリュームが最初に作成されるときに、そのボリュームは、ストレージチャンクがそれに割り付けられておらず、あるいはもしかすると指定された最小数のチャンクしかそれに割り付けられていない。ボリュームは、チャンクを独立に割り付けることができる複数のセグメントに論理的に分割される。セグメントは、１つまたは複数の論理ブロックアドレス(logical block address)（ＬＢＡ）によって識別されて、コンピュータが個々のセグメントからデータを読み取り、個々のセグメントにデータを書き込むことができるようにすることができる。ＤＣＡストレージシステムが、そのボリュームをターゲットにする、ホストコンピュータからの書込みコマンドを受け取るときに、ＤＣＡストレージシステムは、書込みコマンドが、物理ストレージ域がストレージデバイス上ですでに割り付けられているボリュームのセグメントを対象にしているか否かを決定する。物理ストレージ域（すなわち、ストレージのチャンク）が、書込みコマンドのターゲットであるボリュームのセグメントについてすでに割り付けられている場合、次いでＤＣＡストレージシステムは、書込みデータを割り付けられた物理ストレージ域に記憶することができる。しかし、書込みコマンドが、ストレージ空間がまだ割り付けられていないボリュームのセグメントを対象とする場合には、次いでＤＣＡストレージシステムは、書込みコマンドによってターゲットとされるボリュームのその部分に物理ストレージ空間を割り付けなければならない。したがって、ＤＣＡストレージが、物理ストレージがまだそれに割り付けられていないボリュームの一部分をターゲットとする書込みコマンドを受け取るときには、１つまたは複数のチャンクが、チャンクプールから割り付けられる。チャンク割付けに続いて、次いでＤＣＡストレージシステムは、書込みコマンドに関連する書込みデータを新しく割り付けられたストレージチャンクに記憶する。またＤＣＡストレージシステム中のチャンクテーブルもアップデートされ、ボリュームについてのセグメントステータスを保持する。しかし、物理ストレージ域がまだそれらに割り当てられていないボリュームの大部分が、しばしば残ることもある。ボリュームのバックアップイメージが復元されるときに、ボリューム中に浪費物理ブロック（すなわち浪費されるチャンク）を生成することを禁止するために、本発明の３つの実施形態のうちのどれでも使用することができる。
【００１２】
第１の実施形態−チャンクが最初に割り付けられていない場合に書込みコマンドを回避すること
第１の実施形態の下では、ＤＣＡストレージシステムは、チャンクテーブルインポート／エクスポートプログラムと、モード選択プログラムと、動的チャンク割付けプログラム中における「モードチェック」ステップを有する。バックアップコンピュータは、チャンクテーブルインポート／エクスポートプログラムを呼び出すことにより、ある時点においてチャンクテーブルのコピーをダウンロードし、バックアップストレージ装置にそのチャンクテーブルを記憶する。次に、バックアップオペレーション中に、バックアップコンピュータは、ボリューム中のすべてのデータをバックアップストレージ装置にバックアップして、チャンクテーブルのその時点のコピーに対応するボリューム中におけるデータの時点バックアップイメージを作成する。バックアップストレージ装置は、ＤＣＡストレージシステムから取得されるチャンクテーブルのコピーと、バックアップ装置に記憶されるバックアップイメージとの間の関係を保持する。次いで、復元オペレーションの場合にはバックアップコンピュータは、チャンクテーブルのコピーをストレージ装置にアップロードし、バックアップイメージを復元する前にストレージ装置上で動的チャンク割付けプログラム中の「復元モード」を選択する。ストレージ装置は、チャンクテーブルのアップロードされたコピーをボリュームについての現行のチャンクテーブルとして使用し、バックアップコンピュータは、バックアップイメージをＤＣＡストレージへ復元することを開始する。ＤＣＡストレージが、バックアップコンピュータから書込みコマンドを受け取るときにモードチェックステップは、復元モードが選択されている間にチャンクテーブルをチェックする。チャンクテーブルが、ターゲットとされる書込み位置にチャンクが割り付けられていないことを示す場合に、次いでＤＣＡストレージは、その書込みコマンドを回避する。復元オペレーションが完了されるときに、バックアップコンピュータは、ＤＣＡストレージを「標準モード」にリセットする。
【００１３】
第２の実施形態−ボイドデータが、復元されているバックアップイメージ中で検出されるときにチャンク割付けを回避すること
第２の実施形態においては、ＤＣＡストレージシステムは、動的チャンク割付けプログラム中に「ボイドデータ」検出ステップを含んでいる。復元オペレーションの場合には、バックアップコンピュータは、バックアップイメージを復元する。ＤＣＡストレージシステムは、復元されるべきデータ（すなわち、バックアップイメージの一部分であるデータ）を含む書込みコマンドを受け取る。動的チャンク割付けプログラム中のデフォルトボイドデータ検出ステップは、書込みコマンド中のデータをチェックして、データが、（「ヌルデータ」または「デフォルトデータパターン」とも称される）ボイドデータパターンであるかどうかを決定する。チェックされたデータが、デフォルトデータイメージを保持するテーブルに含まれるパターンとその受け取られたデータを比較することなどにより、デフォルトボイドデータパターンであると決定される場合、次いでＤＣＡストレージ装置は、復元されたボリュームのその部分（すなわち、書込みコマンドによって指定される１つ（または複数）のセグメント）についてのチャンク割付けを回避する。
【００１４】
第３の実施形態−セグメントにチャンクが割り付けられていないときにはバックアップコンピュータにデータ転送がない
第３の実施形態においては、ＤＣＡストレージシステムは、モード選択プログラムと非データ転送ステップを含んでいる。ＤＣＡストレージ装置は、バックアップオペレーションを開始する前に「バックアップモード」に設定される。バックアップモードにおいては、ＤＣＡストレージシステムは、ストレージチャンクがそれにまだ割り付けられていないボリュームのセグメント上で読取りが行われるときにバックアップコンピュータに対する非データ転送状態で応じる。次いで復元オペレーション中に、データは、バックアップイメージに記憶されたボリュームのセグメントだけに復元される。これらの実施形態のすべては、以下でさらに詳細に論じられる。
【００１５】
第１の実施形態−システムコンフィギュレーション：
図１Ａは、本発明の方法を適用することができる情報システム概要の一例を示している。情報システムは、データネットワーク５０を経由してストレージ装置１００にデータを記憶することができる１つまたは複数のホストコンピュータ１０または他のデバイスを含んでいる。ホストコンピュータ１０は、ストレージ装置１００に対して書込みコマンドおよび読取りコマンドを発行することができる。したがって、ホストコンピュータ１０によって生成されるデータは、記憶するためにストレージ装置１００へと書き込むことができ、ストレージ装置１００中のデータは、ホストコンピュータ１０へと読み出すことができる。少なくとも１つのバックアップコンピュータ３０が、データネットワーク５０を経由してストレージ装置１００に接続され、またデータネットワーク５０を経由してバックアップストレージ装置３００にも接続される。
【００１６】
ストレージ装置１００は、ハードディスクドライブ(hard disk drive)（ＨＤＤ）１０１や、光ドライブ、ソリッドステートストレージなど他の等価的なストレージデバイスなど、１つまたは複数のストレージデバイスと通信を行うストレージコントローラ１５０を含んでいる。ストレージコントローラ１５０は、ＨＤＤ１０１に記憶されるデータを保護するためのＲＡＩＤアルゴリズムまたは他のアレイアルゴリズムを適用することができる。ストレージ装置１００は、１つまたは複数のチャンクプール１１０を提供するように構成され、各チャンクプールは、１つまたは複数のＨＤＤ１０１から構成される。ストレージ装置１００は、データを記憶するためにホストコンピュータ１０が使用するための１つまたは複数のボリューム１１１を提供することができる。本実施形態においては、ストレージ装置１００は、動的チャンク割付けプログラム１６０（図１Ｂ）を有し、したがってボリューム１１１は、ボリュームが作成されるときに最初に全体のボリューム１１１について割り付けられていない物理ストレージ空間を表す、図１中の点線として示される。このようにして、ホストコンピュータ１０は、ボリューム１１１が指定されたサイズを有するものとして認識することができるが、ストレージのチャンクは、ボリューム１１１に最初に割り付けられている必要はない。図２に関して以下でさらに論じられるように、ストレージチャンク１９０は、ＨＤＤ１０１中の１つまたは複数の物理ブロックから構成される。ホストコンピュータ１０から転送される書込みデータを記憶するために、動的チャンク割付けプログラム１６０は、ストレージチャンク１９０が書込みコマンドによってターゲットとされるボリューム１１１のセグメントについてまだ割り付けられていない場合に、ストレージコントローラ１５０がホストコンピュータ１０から書込みコマンドを受け取るときに、適切な数のストレージチャンク１９０をボリューム１１１に割り付ける。
【００１７】
少なくとも１つのバックアップストレージ装置３００は、１つまたは複数のバックアップデバイス３５０と１つまたは複数のバックアップ媒体３９０を含んでいる。バックアップデバイス３５０がテープデバイスであり、バックアップ媒体３９０がテープである場合の実施形態においては、バックアップストレージ装置３００は、使用されていないときにテープ媒体をホールドすることができる１つまたは複数のストレージスロット（図示されず）と、テープデバイスとストレージスロットとの間でテープ媒体を移送する機械メカニズム（図示せず）を有することができる。テープデバイスとテープ媒体との代わりに、光ディスクやＨＤＤなど、他のタイプのバックアップストレージ媒体３９０を本発明の一部の実施形態においては使用することができる。
【００１８】
上記のように、ホストコンピュータ１０と、バックアップコンピュータ３０と、ストレージ装置１００と、バックアップストレージ装置３００は、データネットワーク５０を経由して通信するために接続される。この実施形態におけるデータネットワークは、ファイバチャネル(Fibre Channel)（ＦＣ）を使用する。しかし、イーサネット（登録商標）など他のネットワークタイプも使用することができる。ネットワークスイッチおよびハブは、情報システムの諸要素を接続するために使用することができる。図１Ａにおいては、複数のファイバチャネルスイッチ(Fibre Channel switch)（ＦＣＳＷ）５５が、情報システムの諸要素を接続するためにデータネットワーク５０中に組み込まれるが、他の接続装置も使用することができる。ホストコンピュータ１０、バックアップコンピュータ３０、ストレージ装置１００、およびバックアップストレージ装置３００は、データネットワーク５０に接続するためにそれぞれ１つまたは複数のＦＣインターフェース（Ｉ／Ｆ）１５、３５、１５５および３５５を含んでいる。
【００１９】
ホストコンピュータ１０と、バックアップコンピュータ３０と、ストレージ装置１００とは、管理ネットワーク９０を経由して通信するために接続することもできる。この実施形態中の管理ネットワーク９０は、イーサネット（登録商標）を使用することができるが、他のネットワークタイプを使用することもできる。ネットワークスイッチおよびハブ（図示せず）は、諸システム要素を接続するためにネットワーク９０中に含めることができる。ホストコンピュータ１０、バックアップコンピュータ３０およびストレージ装置１００は、管理ネットワーク９０への接続を可能にするために、それぞれ１つまたは複数のイーサネット（登録商標）Ｉ／Ｆ１９、３９および１５９を有する。
【００２０】
各ホストコンピュータ１０は、プログラムおよびデータを記憶するためのメモリ１２と、メモリ１２に記憶されるプログラムを実行するためのＣＰＵ１１と、データネットワーク５０との通信を可能にするためのＩ／Ｆ１５と、管理ネットワーク９０との通信のためのＩ／Ｆ１９とを含むことができる。少なくとも１つのアプリケーションプログラム１３をメモリにロードし、ストレージ装置１００に記憶されるべき書込みデータを生成するためにＣＰＵ１１によって実行することができる。
【００２１】
バックアップコンピュータ３０は、プログラムおよびデータを記憶するためのメモリ３２と、メモリ３２に記憶されるプログラムを実行するためのＣＰＵ３１と、データネットワーク５０に接続するためのＩ／Ｆ３５と、管理ネットワーク９０に接続するためのＩ／Ｆ３９とを含むことができる。少なくとも１つのバックアップ／復元プログラム３３が、メモリ３２にロードされ、ＣＰＵ３１によって実行される。
【００２２】
図１Ｂは、ストレージ装置１００の追加の機能を示しており、このストレージ装置は、１つまたは複数のストレージチャンク１９０から構成される１つまたは複数のストレージボリュームを提供するためのストレージコントローラ１５０と通信する１つまたは複数のＨＤＤ１０１を含んでいる。各チャンク１９０は、１つまたは複数のＨＤＤ１０１中の１つまたは複数の物理ブロックから構成される物理ストレージ域である。冗長なデータをデータの信頼性を改善するためにＨＤＤ１０１に記憶することができることが好ましい。１つまたは複数のボリューム１１１（この実施形態は、ストレージ装置１００中に１つのボリューム１１１を示している）は、チャンクプール１１０からの１つまたは複数のチャンク１９０から構成される。ストレージコントローラ１５０は、プログラムおよびデータを記憶するためのメモリ１５２と、メモリ１５２に記憶されるプログラムを実行するためのＣＰＵ１５１と、データネットワーク５０に接続するためのＩ／Ｆ１５５と、管理ネットワーク９０に接続するためのＩ／Ｆ１５９とを含んでいる。ストレージコントローラ１５０はまた、ＨＤＤ１０１に接続するためのＩ／Ｆ１５６も含んでいる。Ｉ／Ｆ１５６は、ＳＡＴＡ  ＨＤＤがＨＤＤ１０１として使用される場合には、ＳＡＴＡインターフェースとすることができ、あるいは実装されるＨＤＤのタイプに応じてＦＣ、ＳＣＳＩ、ＳＡＳまたは他の適切なインターフェースとすることができる。プログラムおよびデータ構造は、メモリ１５２にロードする（または他のコンピュータ読取り可能媒体上に記憶する）ことができ、以下でもっと詳細に説明されるように、本発明の態様を達成するためにＣＰＵ１５１によって実行または使用することができる。
【００２３】
ＤＣＡストレージシステムについての好ましい実施形態においては、ストレージコントローラ１５０は、新しいチャンクを割り付ける必要があるときには、ストレージチャンク１９０をボリューム１１１にチャンクプール１１０から割り付けるために動的チャンク割付けプログラム１６０を実行する。しかし、ストレージをボリュームに動的に割り付けるために他の手段に到達することもできることが考えられる。したがって、本発明は、動的チャンク割付けのための特定の方法だけには限定されない。
【００２４】
ストレージコントローラ１５０は、ホストコンピュータ１０からの読取りコマンド(READ command)、書込みコマンド(WRITE command)、または容量読取りコマンド(READ CAPACITY command)に応答するための応答プログラム１６３と、ストレージチャンクがそれに割り付けられていないボリュームのセグメントを対象とする読取りコマンドに応答するためのデフォルトデータパターンを保持するためのデフォルトデータパターンテーブル１６７と、チャンクプール１１０中の使用された、または未使用のストレージチャンクを管理するためのチャンクプール管理テーブル１６８を含むこともできる。本発明は、ボリューム１１１ごとにチャンク割付けステータスを追跡するためにコントローラ１５０によって保持することができるチャンクテーブル１６９を使用し、すなわち以下でさらに説明されるように各ボリューム１１１は、ボリュームのどのセグメントにチャンクが割り付けられているかを示すチャンクテーブル１６９をそのために保持することができる。また、チャンクテーブルインポート／エクスポートプログラム１６１を一部の実施形態に含めて、バックアップコンピュータなどのコンピュータに対するチャンクテーブルのエクスポート、およびコンピュータからのチャンクテーブルのインポートを可能にすることもできる。さらに、バックアップモード、復元モード、標準モードなどのモードのうちから選択するためにモード選択プログラム１６２を提供することができ、その結果、コントローラは、以下でさらに説明されるある種のファンクションを実施することができるようになる。
【００２５】
図２は、本発明のチャンク１９０をどのようにして構築することができるかについての一例を示している。ストレージチャンク１９０は、１つまたは複数のＨＤＤ１０１中の１つまたは複数の物理ブロック２０１から構成される。例示の実施形態においては、チャンクは、単一の割り付けられた物理ストレージ域を形成するために連結された４つの異なるＨＤＤ１０１上の４つの物理データブロック２０１から構成される。この実施形態においては、例えば各物理ブロック２０１が５１２バイトのデータを保持することができる場合、そのときには１つのストレージチャンク１９０は、２０４８バイトを保持することができるようになる。もちろん、他のチャンクサイズが使用されてもよい。さらに、各チャンクには、他とは独立にチャンクを識別するための固有のＩＤをコントローラ１５０によって与えることができる。ＤＣＡストレージシステムの一部の実施形態においては、ストレージチャンクのサイズは、特定のストレージシステムにおいてチャンクごとに同じサイズであり、ボリューム１１１は、チャンクサイズと一致するサイズのセグメントに分割され、すなわちボリュームセグメントのサイズは、１つのチャンクのサイズに等しい。さらに、複数のＨＤＤが、ＲＡＩＤコンフィギュレーションなどのアレイグループに配置される場合には、次いで一部のＨＤＤを使用してデータを記憶することができるが、別のＨＤＤを使用してチャンクについてのパリティデータを保持することもできる。多数のそのようなチャンクコンフィギュレーション構成は、前記を考慮すれば当業者には明らかであろう。
【００２６】
図３は、チャンクプール管理テーブル１６８を示している。チャンクプール管理テーブル１６８は、３つの行、すなわち「チャンク番号(Chunk Number)」行１６８０１と、「被割付け(IsAllocated)」行１６８０２と、「ボリューム番号(Volume Number)」行１６８０３とから構成される。チャンク番号行１６８０１は、各ストレージチャンク１９０を識別するための固有のチャンク番号を記憶する。「被割付け」行１６８０２は、特定のチャンクがボリュームに対して割り付けられているか否かを示すステータスをチャンクごとに記憶する。ボリューム番号行１６８０３は、チャンクが割り付けられているときにチャンクがどのボリュームに対して割り付けられているかを示すボリューム番号を記憶する。最初に、チャンクプール１１０中のチャンクが、ボリュームにまだ割り付けられていない場合が存在し得る。これが起こるときには、行１６８０２および行１６８０３中のセルのすべては最初にヌル(NULL)である。
【００２７】
図４は、ボリューム１１１についてのチャンクテーブル１６９を示している。チャンクテーブル１６９は、ボリューム１１１のどのセグメントに物理ストレージ域（チャンク）が割り付けられているかを示すストレージ装置１００中に保持される情報である。チャンクテーブル１６９は、３つの行、すなわち「セグメント番号(Segment Number)」行１６９０１と、「被割付け」行１６９０２と、「チャンク番号(Chunk Number)」行１６９０３とから構成される。セグメント番号行１６９０１は、ボリューム１１１のセグメントを識別するためのセグメント番号を記憶する。セグメントの指定された容量サイズは、ストレージチャンクの容量サイズに等しいことが好ましく、その結果、チャンクをボリュームのセグメントに割り当てることができるようになる。「被割付け」行１６９０２は、チャンクが、ボリューム１１１の特定のセグメントについて割り付けられているか否かについてのステータスを記憶する。チャンク番号行１６９０３は、チャンクがボリューム中の特定のセグメントに割り付けられているときのチャンクのチャンク番号を記憶する。最初に、チャンクが、ボリュームに割り付けられていない可能性があり、この場合には、行１６９０２および行１６９０３中のすべてのセルはヌルである。
【００２８】
図５は、ボリューム１１１、ならびに書込みコマンド１９２と、チャンク１９０と、チャンクプール１１０との間の関係を示している。ボリューム１１１は、論理的に複数のセグメント１９３に分割される。この実施形態においては、各セグメント１９３は、２０４８バイトとして指定され、各チャンクは、図２に示されるような２０４８バイトの物理ストレージを含んでいる。ストレージコントローラ１５０はまた、他とは独立にセグメントを識別するための固有のＩＤを各セグメント１９３に与える。これは、例示されるような、あるいは他の識別プロセスによって０からＮまで順次にセグメントを番号付けすることにより、達成することができる。各セグメントは、１つまたは複数の論理ブロックアドレス(Logical Block Address)（ＬＢＡ）によって識別可能であることが好ましい。したがって、示される例においては、セグメント「０」は、ＬＢＡ「０」〜「３」を含み、セグメント「１」は、ＬＢＡ「４」〜「７」を含み、セグメント「２」は、ＬＢＡ「８」〜「１１」を含むことになり、以下同様である。セグメント中の各ＬＢＡは、そのセグメントに割り付けられたチャンク中の物理ブロックに相関付けることができる。これにより、書込みコマンド１９２は、書込みデータを記憶するための１つまたは複数のＬＢＡを指定することができるようになる。図５は、図６〜８に関連して以下にさらに詳細に説明されることになる。さらに、２０４８バイトのセグメントおよびチャンクが本実施例においては使用されるが、本発明は、特定のセグメントまたはチャンクのサイズだけに限定されるものではない。例えば、各チャンクは、５１２バイトのたった１つの物理ブロック２０１から構成することができ、各セグメントもまた５１２バイトとすることができ、その場合にはセグメント当たりに１つのＬＢＡだけが存在するはずである。非常に多数の他の変形形態も可能である。
【００２９】
図６および７は、ホストコンピュータ１０から受け取られる容量読取りコマンド、書込みコマンド、および読取りコマンドに応じてストレージコントローラによって実行されるプロセスを示すものである。上記のように、ボリューム１１１には、一般的にどのようなチャンクも最初に割り付けられていなくてもよい。しかし、ホストコンピュータ１０は、ストレージ装置１００から応答プログラム１６３を経由して容量情報を取得することができる。ストレージコントローラ１５０中の応答プログラム１６３は、ホストコンピュータ１０から容量読取りコマンドを受け取る結果としてホストコンピュータ１０に対して容量情報で応答する。さらに、コマンドが書込みコマンドである場合、コントローラ１５０は、図６に記述される応答プログラムステップ６１０〜６１２と、図７に記述される動的チャンク割付けプログラム１６０のファンクションを実行する。さらに、コマンドが読取りコマンドである場合には、ストレージコントローラは、図６のステップ６２０〜６９９に記述される応答プログラム１６３のプロセスを実行する。応答プログラム１６３中のプロセスフロー中におけるストレージコントローラ１５０によって実行される個々のステップは、図６に記述され以下で説明される。
【００３０】
容量読取りコマンド
ステップ６００：コントローラ１５０は、コンピュータからコマンドを受け取る。
【００３１】
ステップ６０２：コマンドが容量読取りコマンドである場合、次いでプロセスは、ステップ６０４へと進む。
【００３２】
ステップ６０４：コントローラ１５０は、その要求を発行したコンピュータに対して容量情報で応答する。
【００３３】
書込みコマンド
次に、書込みコマンドを受け取るときに実行されるプロセスが、図５、６および７を参照して説明される。図７は、書込みコマンドが受け取られるときにコントローラ１５０中の動的チャンク割付けプログラム１６０によって実行されるプロセスフローを示している。図８はまた、考察する目的のための書込みコマンド１９２の一実施例を示している。図８に示される実施例においては、書込みコマンド１９２は、論理ブロックアドレス（ＬＢＡ）１９２１と、いくつかのブロック（ＢＬＫ）１９２２と、第１のブロックのデータ１９２３と、第２のブロックのデータ１９２４とを含んでいる。したがって、この場合には、ホストコンピュータ１０は、１０２４バイトのデータ（２ブロックのデータ１９２３，１９２４）をＬＢＡ９および１０上に書き込むことを希望するはずである。
【００３４】
ステップ６１０：コマンドが書込みコマンドである場合、次いでプロセスは、ステップ６１２へと進む。コマンドが書込みコマンドでない場合には、次いでプロセスは、以下で論じられるように、読取りコマンドに応答するためのステップ６２０へと進む。
【００３５】
ステップ６１２：応答プログラム１６３は、図７に記述されるプロセスを実行し、以下で説明されるような動的チャンク割付けプログラム１６０に書込みコマンドを渡す。
【００３６】
ステップ７００：コントローラは、書込みコマンドからＬＢＡ１９２１とＢＬＫ（ブロック数）１９２２を取得する。図５および８に示される場合には、ＬＢＡは９であり、ＢＬＫは２である。
【００３７】
ステップ７０２：コントローラは、「Ｓ」および「Ｂ」を計算し、ここで「Ｓ」は、書込みコマンドによって指定されるＬＢＡに対応するセグメント番号であり、「Ｂ」は、セグメント中の物理ブロック位置である。この実施例においては、物理ブロックサイズは５１２バイトであり、セグメントサイズおよびチャンクサイズは、２０４８バイトである。したがって、「Ｓ」は、２ビット右シフトによって計算され、「Ｂ」は、２ビットマスクによって計算される。ＬＢＡ＝９では、次いでこの場合には「Ｓ」は２であり、「Ｂ」は１である。図５に示されるように、ボリューム１１１のセグメント「２」は、書込みコマンドのＬＢＡによって指定され、セグメント「２」の物理ブロック「１」は、セグメント「２」に書き込まれるべき第１のブロックとして指定される。
【００３８】
ステップ７１０：プロセスは、モード設定をチェックして、モードが「標準」であるか、「復元」であるかを決定する。モードは、通常の書込みオペレーションでは、「標準」であり、本発明の下の一部の復元オペレーション中には「復元」とすることができる。モードが標準である場合、次いでプロセスは、ステップ７２０へと進む。そうでなくてモードが「復元」である場合には、プロセスは、ステップ７１２へと進む。この場合には、モードは「標準」であり、それ故に、プロセスは、ステップ７０４へと進む。「復元」モードについての場合は、以下で復元プロセスの説明中に論じられる。
【００３９】
ステップ７０４：プロセスは、「Ｓ」と呼ばれるセグメントに、ボリューム１１１についてチャンクテーブル１６９を参照することによりすでにストレージチャンクが割り付けられているかどうかをチェックする。指定されたセグメントに、ストレージチャンク１９０がそのためにまだ割り付けられていない場合、次いでプロセスはステップ７２０へと進み、そうでなければプロセスは、ステップ７５０へと進む。図５の実施例においては、セグメント２にはまだチャンクが割り付けられていないことが仮定されることになる。
【００４０】
ステップ７２０：プロセスは、チャンクプール１１０からセグメント１９３に対してチャンク１９０を割り付ける。自由なチャンクがない場合に起こり得るように、チャンク割付けが失敗する場合、次いでエラーが、ホストコンピュータ１０に対して応答される。本実施例においては、チャンク番号「１００００」が、ボリューム１１１中のセグメント「２」に対して割り付けられる。
【００４１】
ステップ７２２：チャンクプール管理テーブル１６８が、アップデートされる。この場合には、チャンク番号「１００００」が、ボリューム１１１中のセグメント番号「２」に対して割り付けられるので、アップデートされたチャンクプール管理テーブル１６８が、図３に示されるように現れ、チャンク番号１００００が、ボリューム番号１１１に対して割り付けられていることを示す。
【００４２】
ステップ７２４：次いでボリューム１１１についてのチャンクテーブル１６９が、アップデートされて、新しいチャンクが、ボリューム１１１に対して割り付けられていることが示される。アップデートされたチャンクテーブル１６９は、図４に示されるように現れることになり、このチャンクテーブル中ではセグメント番号２には、チャンク番号１００００が割り付けられているものとして示される。
【００４３】
ステップ７５０：プロセスは、書込みコマンド１９２に含まれる第１の５１２バイトのデータ１９２３を割り付け済みのチャンク１００００中のブロックのうちの１つに記憶する。この場合には、「Ｂ」は「１」に等しく、それ故に第１の５１２バイトのデータは、図５に示されるように、ストレージチャンク１００００中の第２のブロック（ブロック「１」）に記憶される。
【００４４】
ステップ７５２：書込みコマンド中に含まれる次のブロックを記憶するために、プロセスは、ＬＢＡに１を加え、ＢＬＫから１を差し引く。
【００４５】
ステップ７５４：プロセスは、ＢＬＫがゼロに等しいかどうかをチェックする。ＢＬＫがゼロである場合、次いでプロセスは、ステップ７９０へと進む。ＢＬＫがゼロに等しくない場合には、次いでプロセスは、ステップ７０２へと戻る。この場合には、ＢＬＫが最初に「２」に等しかったのでＢＬＫはゼロではなく、したがってＢＬＫは、今や「１」に等しい。
【００４６】
ステップ７０２：プロセスは、「Ｓ」および「Ｂ」をもう一度計算する。この場合には、「Ｓ」は２であり、「Ｂ」は２である。
【００４７】
ステップ７１０：動的割付けプログラム１６０は、モードをチェックして、モードが、「標準」であるか、または「復元」であるかを決定する。この場合に、モードは、「標準」であるので、プロセスは、ステップ７０４へと進む。
【００４８】
ステップ７０４：プロセスは、チャンクが、指定されたセグメントについてすでに割り付けられているかどうかをチェックする。この場合には、セグメント２は、すでにそれについてチャンクが割り付けられており（チャンク１００００）、したがってプロセスは、ステップ７５０へと進む。
【００４９】
ステップ７５０：与えられた実施例においては、「Ｂ」は２であり、それ故に第２の５１２バイトの書込みデータ１９２４は、図５に示されるようにチャンク１００００（物理ブロック番号「２」）中の第３のブロックに記憶される。
【００５０】
ステップ７５２：プロセスはＬＢＡに１を加え、ＢＬＫから１を差し引く。
【００５１】
ステップ７５４：プロセスは、ＢＬＫがゼロに等しいかどうかをチェックする。この場合には、ＢＬＫは今ではゼロになっており、したがってプロセスは、ステップ７９０へと進む。
【００５２】
ステップ７９０：プロセスは、書込みコマンドが正常に完了したことを示す応答をホストコンピュータ１０に送る。
【００５３】
読取りコマンド
次に読取りコマンドが受け取られるときにコントローラによって実行されるプロセスが、図６および９を参照して説明される。図９Ａは、ＬＢＡ１９６１とブロック数（ＢＬＫ）１９６２を含む読取りコマンド１９６−Ａの第１の実施例を示している。図９Ａの実施例において、ホストコンピュータは、ＬＢＡ「９」上の５１２バイトのデータ（１ブロックのデータ）を読み取ることを希望する。
【００５４】
ステップ６２０：コマンドが読取りコマンドである場合、次いでプロセスは、ステップ６２２へと進む。プロセスが読取りコマンドでない場合には、次いでプロセスは、ステップ６９９において終了する。
【００５５】
ステップ６２２：プロセスは、読取りコマンドからＬＢＡ１９６１とＢＬＫ（ブロック数）１９６２を取得する。この場合に、ＬＢＡは「９」であり、ＢＬＫは「１」である。
【００５６】
ステップ６２４：プロセスは、「Ｓ」と「Ｂ」とを計算し、ここで「Ｓ」は、ボリューム１１１中におけるセグメント１９３のセグメント番号であり、「Ｂ」は、セグメント中における物理ブロック位置である。この実施形態においては、物理ブロックサイズは、５１２バイトであり、セグメントサイズおよびチャンクサイズは、２０４８バイトである。「Ｓ」は、２ビット右シフトによって計算され、「Ｂ」は、２ビットマスクによって計算される。したがってこの実施例においては、「Ｓ」は「２」に等しく、「Ｂ」は「１」に等しい。
【００５７】
ステップ６２６：プロセスは、チャンクテーブル１６９を参照することにより、チャンクが、そのセグメントについて割り付けられているかどうかを決定する。チャンクが割り付けられている場合、次いでプロセスは、チャンクテーブル１６９を参照することにより、セグメントに対応するチャンクの所在を見出す。チャンクがまだ割り付けられていない場合には、次いでプロセスは、ステップ６５０へと進む。この場合には、図４が現行のチャンクテーブル１６９であると仮定すると、そのときにはセグメント２は、それに対してチャンク「１００００」がチャンクプール１１０からすでに割り付けられている。
【００５８】
ステップ６２８：プロセスは、識別されたチャンク中の物理ブロックに記憶されるデータを転送する。この場合には、「Ｂ」は、「１」に等しく、したがってチャンク「１００００」中における第２のブロック中のデータは、読取りコマンドに応じてホストコンピュータへと戻される。
【００５９】
ステップ６３０：プロセスは、読取りコマンド中のＬＢＡに１を加え、読取りコマンド中のＢＬＫから１を差し引く。
【００６０】
ステップ６３２：プロセスは、ＢＬＫがゼロに等しいかどうかをチェックする。ＢＬＫがゼロに等しい場合、次いでプロセスは、ステップ６９０へと進む。ＢＬＫがまだゼロに等しくない場合には、次いでプロセスは、ステップ６２４へと戻って、次のブロックのデータを読み取る。この場合には、ＢＬＫは、ゼロに等しい。
【００６１】
ステップ６９０：プロセスは、読取りコマンドが正常に完了していることをホストコンピュータに対して応答する。
【００６２】
次に、図９Ｂは、読取りコマンド１９６−Ｂの別の実施例を示している。この場合には、ホストコンピュータは、ＬＢＡ「０」上の５１２バイトのデータ（１ブロックのデータ）を読み取ることを希望する。
【００６３】
ステップ６２０：コマンドが読取りコマンドである場合、次いでプロセスは、ステップ６２２へと進み、そうでなければプロセスは、ステップ６９９へと進む。
【００６４】
ステップ６２２：プロセスは読取りコマンド１９６−ＢからＬＢＡ１９６１とブロック数（ＢＬＫ）１９６２とを取得する。この場合には、ＬＢＡは「０」であり、ＢＬＫは１である。
【００６５】
ステップ６２４：プロセスは、「Ｓ」と「Ｂ」とを計算する。この場合には、セグメント「Ｓ」は０であり、物理ブロック「Ｂ」は０である。
【００６６】
ステップ６２６：プロセスは、チャンクテーブル１６９を参照することにより、チャンクがセグメント「０」にすでに割り付けられているかどうかを決定する。チャンクがまだ割り付けられていない場合、次いでプロセスは、ステップ６５０へと進む。この場合には、図４が現行のチャンクテーブル１６９であることを仮定すると、次いでチャンクテーブル１６９は、ストレージチャンクがセグメント「０」にまだ割り付けられていないことを示す。
【００６７】
ステップ６５０：チャンクが、指定されたセグメントについて割り付けられていないので、コントローラは、デフォルトデータパターンテーブル１６７に記憶されるデフォルトボイドデータパターンを転送する。
【００６８】
ステップ６３０：プロセスは、ＬＢＡに１を加え、ＢＬＫから１を差し引く。
【００６９】
ステップ６３２：プロセスは、ＢＬＫがゼロであるかどうかをチェックする。この場合には、ＢＬＫはゼロに等しく、したがってプロセスは、ステップ６９０へと進む。
【００７０】
ステップ６９０：コントローラは、読取りコマンドが完了していることを示す応答を要求しているコンピュータに送る。したがって、上記のように、ホストコンピュータが、チャンクがまだ割り付けられていないＬＢＡ上のデータを読み取ろうとする場合には、ストレージ装置１００は、デフォルトデータパターンテーブル１６７によって指定されるように、デフォルトデータパターン中のボイドパターン（すなわち、ヌルデータ）で応答する。
【００７１】
バックアッププロセス
図１０は、バックアップコンピュータ３０中のバックアップ／復元プログラム３３の実行によって遂行されるバックアッププロセスフローを示している。第１の実施形態においては、バックアップコンピュータ３０は、ボリューム１１１をバックアップストレージ装置３００中のバックアップ媒体３９０にバックアップする。図１１は、バックアッププロセスの概念図とバックアップされたデータの構成を示している。この実施例においては、バックアップ媒体３９０がテープ媒体である場合、テープ媒体は、すでにテープデバイス上にマウントされているものと仮定される。
【００７２】
ステップ１０００：データは、バックアップが開始される時点において存在するので、バックアッププロセスは、ボリューム１１１中のデータのある時点におけるバックアップイメージを取得するために開始される。これは、定期的なベースで、あるいはユーザや管理者の指示などによる他の何らかのトリガリングイベント(triggering event)によって行うことができる。
【００７３】
ステップ１００２：プロセスは、ストレージ装置１００中のチャンクテーブルインポート／エクスポートプログラム１６１に対して「エクスポートチャンクテーブル」コマンドを発行して、バックアップされるべき、ボリューム１１１についてのチャンクテーブル１６９のコピー１９８を取得する。
【００７４】
ステップ１００４：プロセスは、指定されたボリューム１１１についてのチャンクテーブルコピー１９８をストレージ装置１００からダウンロードする。
【００７５】
ステップ１００６：プロセスは、ダウンロード済みのチャンクテーブルコピー１９８をバックアップストレージ装置３００上のバックアップ媒体３９０に書き込む。
【００７６】
ステップ１０５０：次いでプロセスは、ボリューム中の第１のＬＢＡからボリューム中の最後のＬＢＡまでボリュームを読み取ることにより、ボリューム１１１のコピーをバックアップする準備をする。したがって最初にボリュームについての第１のＬＢＡは、ゼロであり、ＢＬＫは、最大の（最後の）ＬＢＡに等しい。
【００７７】
ステップ１０５２：プロセスは、読取りコマンドを使用してストレージ装置１００中のボリュームからデータを読み取る。
【００７８】
ステップ１０５４：プロセスは、ボリュームデータを受け取り、ボリュームデータをバックアップストレージ装置３００上のバックアップ媒体３９０に書き込み、それによってバックアップイメージ１９９を作成する。図１１にも示されるように、図４に示されるチャンクテーブル１６９が現行のチャンクテーブルであることを仮定すると、次いでボリューム１１１の第１の２つのセグメント（セグメント「０」および「１」）では、チャンクがこれらのセグメントについてはまだ割り付けられていないので、ストレージ装置１００は、テーブル１６７のデフォルトボイドデータパターンをバックアップコンピュータ３０へと戻す。しかし、セグメント２では、チャンク１００００はこのセグメントに割り付けられているので、ストレージ装置１００は、チャンク１００００に記憶されたデータを戻す。
【００７９】
ステップ１０５６：プロセスは、ＬＢＡに１を加え、ブロック読取りごとにＢＬＫから１を差し引く。
【００８０】
ステップ１０５８：プロセスは、ＢＬＫがもうゼロに等しいかどうかをチェックする。ＢＬＫがゼロでない場合、次いでプロセスは、ステップ１０５２へと戻る。
【００８１】
ステップ１０９０：プロセスは、ＢＬＫがゼロに等しくなると終了し、バックアップ媒体３９０上のバックアップイメージ１９９が完了される。バックアップストレージ装置は、ＤＣＡストレージシステムから取得される時点チャンクテーブルコピー１９８と、時点バックアップイメージ１９９との間の関係を保持する。この実装形態においては、これらは、同じバックアップ媒体３９０上に記憶される。さらに、知られているように、非常に多数のそのようなバックアップイメージと、対応するチャンクテーブルコピーは、ボリューム１１１をバックアップするための規則的なタイムスケジュールに基づいて、あるいはいくつかの異なる時点におけるボリューム１１１をバックアップするための、ユーザまたは管理者からの指示によって作成することができる。
【００８２】
復元プロセス
図１２は、ストレージ装置１００にボリューム１１１を復元することが必要なときに、バックアップコンピュータ３０上でバックアップ／復元プログラム３３の実行により実行される復元プロセスを示すものである。第１の実施形態において、バックアップコンピュータ３０は、バックアップ媒体３９０に含まれるバックアップイメージ１９９をボリューム１１１に復元する。バックアップ媒体３９０がテープである場合には、正しいテープ媒体３９０は、バックアップストレージ装置３００中のテープデバイスにすでにマウントされていることが仮定される。
【００８３】
ステップ１２００：復元オペレーションは、保存されたバックアップイメージ１９９を使用してボリューム１１１をストレージ装置１００に復元するために開始される。復元プロセスは、バックアップイメージ１９９とチャンクテーブルコピー１９８が作成された時点におけるデータの状態までボリューム１１１中のデータを復元する。
【００８４】
ステップ１２０２：プロセスは、バックアップストレージ装置３００上のバックアップ媒体３９０からチャンクテーブルコピー１９８を読み取る。
【００８５】
ステップ１２０４：プロセスは、ストレージ装置１００中のチャンクテーブルインポート／エクスポートプログラム１６１に対して、「インポートチャンクテーブル」コマンドを発行する。
【００８６】
ステップ１２０６：プロセスは、チャンクテーブルコピー１９８をストレージ装置１００へと送り、このストレージ装置は、インポートされたチャンクテーブルコピーをボリューム１１１についての現行のチャンクテーブル１６９として設定する。これは、ストレージ装置中の以前に割り付けられたチャンクを解放し、インポートされたチャンクテーブルコピーを使用して、復元プロセス中にボリュームのうちのどのセグメントにチャンクが割り付けられるべきかを決定することになる。
【００８７】
ステップ１２０８：プロセスは、コマンドをモード選択プログラム１６２に対して発行することにより、ストレージ装置１００を「復元」モードに設定する。復元モードにおいては、以下で論じられるバックアップモードにおけるように、ホストコンピュータ１０は、モードが「標準」モードにスイッチバックされるまでボリューム１１１にアクセスすることができない。
【００８８】
ステップ１２５０：バックアップ／復元プログラム３３は、ボリュームを全体に渡って復元するので、開始するＬＢＡは、ゼロであり、ＢＬＫは、ボリューム中のＬＢＡの最大値に等しい。
【００８９】
ステップ１２５２：プロセスは、バックアップストレージ装置３００上のバックアップ媒体３９０上でバックアップイメージ１９９から復元データを読み取る。
【００９０】
ステップ１２５４：プロセスは、上記のように１つまたは複数の書込みコマンドを使用して、ストレージ装置１００中のボリューム１１１に復元データを書き込む。
【００９１】
ステップ１２５６：復元されるブロックごとに、プロセスは、ＬＢＡに１を加え、ＢＬＫから１を差し引く。
【００９２】
ステップ１２５８：プロセスは、ＢＬＫが、ゼロに等しくなっているかどうかをチェックする。ＢＬＫがゼロに等しくない場合、次いでプロセスは、ステップ１２５２へと戻って、次のブロックを記憶する。
【００９３】
ステップ１２６０：ひとたびＢＬＫがゼロに等しくなると、これは、全ボリュームが復元されていることを示し、プロセスは、コマンドをモード選択プログラム１６２に対して発行して、モードを標準モードに戻して設定する。
【００９４】
次に、第１の実施形態における復元オペレーション中のストレージ装置１００において実行されるプロセスが説明される。
【００９５】
既存のボリューム１１１中のチャンクは（もしある場合には）、インポートエクスポートチャンクテーブルプログラム１６１が、バックアップコンピュータ３０からチャンクテーブルコピー１９８をインポートするためのインポートチャンクテーブルコマンドを受け取るときに解放される。
【００９６】
既存のチャンクテーブル１６９は、チャンクテーブルコピー１９８が、バックアップコンピュータ３０からインポートされるときにインポートされたチャンクテーブルコピー１９８によって置き換えられ、ストレージ装置１００は、このインポートされたチャンクテーブルコピー１９８をボリューム１１１についての現行のチャンクテーブル１６９として設定する。
【００９７】
次に、復元モードにおいてバックアップコンピュータ３０から書込みコマンドを受け取るときにストレージ装置の動的チャンク割付けプログラム１６０によって実行されるプロセスが、図７を参照して説明される。ステップ７００〜７０２は、上記と同じである。
【００９８】
ステップ７１０：動的割付けプログラム１６０は、モードをチェックして、モードが「標準」であるか、または「復元」であるかを決定する。この場合には、モードは「復元」であるので、プロセスはステップ７１２へと進む。
【００９９】
ステップ７１２：プロセスは、ステップ７０２中で計算されるセグメント番号「Ｓ」に対応するセグメントについてのチャンクテーブル１６９中の「被割付け」セル１６９０２を参照することにより、書込みコマンド中で指定されるセグメントは、それに対してチャンクが割り付けられているべきかどうかをチェックする。セルがヌルでない場合（すなわち、セルが、チャンクがそのセグメントについて割り付けられているべきことを示す場合には）、次いでプロセスは、ステップ７２０へと進み、ステップ７２０〜７５０について上記のようにして書込みコマンドに含まれるデータを記憶する。他方、被割付けセルがヌルである（チェックされない）場合には、次いでそれは、ボリューム１１１がバックアップされていた時点におけるボリューム１１１中のセグメントについてチャンクが割り付けられていなかったことを意味し、それ故に書込みコマンド中に含まれるデータは、デフォルトデータパターンにすぎず、したがって復元される必要はない。これが該当するときには、プロセスは、書込みデータを保存せず、その代わりに、ステップ７５２へと進んで、上記のようにして次のＬＢＡを処理する。さらに、セグメント中の一部のブロックがそれに記憶されるデータを有しており、セグメント中の他のブロックが有していない場合など、セグメントが、有効データと非有効データの両方を有する場合には、非有効データ（デフォルトデータパターン）は、有効データと共に割り付けられたチャンク中に復元される。
【０１００】
したがって、第１の実施形態においては、ストレージ装置１００に戻してインポートされる時点チャンクテーブルコピーを使用して、ボリューム１１１の復元を管理する。ストレージ装置が、復元モードに設定されるときに、バックアップコンピュータからの書込みコマンド中のデータは、書込みコマンドが、バックアップイメージが作成されたときにチャンクがそれに割り付けられなかったセグメントを対象とする場合に記憶されない。これにより、復元されたボリューム１１１へのデフォルトデータパターンを保存することが回避され、それによって不必要な割付けとストレージ空間の浪費とが回避される。さらに上記の第１の実施形態においては、チャンクテーブルは、バックアップコンピュータ３０にエクスポートされ、バックアップイメージと共にバックアップ媒体３９０に記憶される。しかし、別の実装形態においては、チャンクテーブルコピー１９８は、バックアップ媒体３９０に対してチャンクテーブルコピーをエクスポートする代わりに、あるいはエクスポートすることに追加してストレージ装置１００に識別情報と共に記憶することができる。したがって、第１の実施形態のこの変形形態においては、バックアップオペレーション中にチャンクテーブル１６９をエクスポートする代わりに、チャンクテーブルの時点コピーが、バックアップ／復元プログラム３３によって与えられる識別情報と共に記憶され、チャンクテーブルは、ストレージ装置１００中に保持される。次いで、復元オペレーション中に、バックアップコンピュータからチャンクテーブルをインポートする必要がある代わりに、チャンクテーブルの指定された時点のコピーがストレージ装置によって復元される。バックアップ／復元プログラム３３は、識別情報をストレージ装置１００に対して供給して、どのチャンクテーブルコピーを復元すべきかを指定する。
【０１０１】
第２の実施形態
第２の実施形態は、図１Ａに関する上記と同じシステムコンフィギュレーションを使用することができる。したがって、ファンクションの違いだけについて説明することにする。図１３は、第２の実施形態における動的チャンク割付けプログラム１６０によって実行されるプロセスフローを示している。第２の実施形態においては、デフォルトデータパターンテーブル１６７は、例えばオールゼロデータパターン(all-zero data pattern)を保持することができる。とは言え、他の任意のデフォルトデータパターンを適用することもできる。さらに、各ボリュームが、それ自体のデフォルトデータパターンテーブル１６７を有することもでき、あるいは複数のボリュームが、同じデフォルトデータパターンテーブル１６７を共用することもできる。
【０１０２】
第２の実施形態においては、ＤＣＡストレージ装置１００は、動的チャンク割付けプログラム中に「ボイドデータ」（デフォルトデータ）検出ステップを含んでいる。復元オペレーション中に、バックアップコンピュータがバックアップイメージを復元するときに、ＤＣＡストレージ装置１００は、第１の実施形態に関して上記されるように、復元データを伴う書込みコマンドを受け取る。しかし、チャンクテーブルの復元バージョンをチェックする代わりに、動的チャンク割付けプログラム中のデフォルトデータ検出ステップは、データそれ自体をチェックして、データがデフォルトボイドデータパターンであるかどうかを決定する。チェックされたデータがデフォルトデータパターンに等しい場合、次いでＤＣＡストレージは、復元されたボリュームのそのセグメントについてのチャンク割付けを回避する。
【０１０３】
第２の実施形態においてボリューム１１１のバックアップ中に実行されるプロセスは、チャンクテーブル１６９のエクスポートすること、および記憶することに関連したステップがスキップされる（すなわち、図１０におけるステップ１００２、１００４および１００６が実行されない）点を除いて第１の実施形態において述べられたプロセスと類似している。バックアップオペレーションの残りは、ステップ１０５０〜１０９０について上記されるように実行される。したがって、図１７に示されるように、第２の実施形態においては、ボリューム１１１のバックアップイメージ１９９は特定の時点について作成され、バックアップイメージは、チャンクがそれらに割り当てられていないセグメントについてのデフォルトボイドデータを含んでいる。
【０１０４】
さらに、第２の実施形態における復元オペレーション中に、チャンクテーブルの時点コピーが、ストレージ装置１００へと逆にインポートされ、あるいはモードを復元に設定することは必要ではない（すなわち、図１２中のステップ１２０２〜１２０８は、復元オペレーション中に実行されない）。バックアップコンピュータによって実行される復元オペレーションの残りは、図１２に関して上記されるように実行される。したがって、第２の実施形態において使用されるバックアップ／復元プログラム３３は、従来のソフトウェアから修正される必要はない。
【０１０５】
第２の実施形態においては、復元オペレーション中に、バックアップコンピュータ３０は、バックアップストレージ装置３００からバックアップイメージ１９９を読み取り、第１の実施形態の図１２に関して上記されるように復元データをストレージ装置１００に書き込む。書込みコマンドが、第２の実施形態における動的チャンク割付けプログラム１６０によってバックアップコンピュータから受け取られるときに、復元オペレーション中にストレージ装置１００によって実行される処理は、図１３に記述される。図１３は、図７に関して上記されるこれらのステップと類似したステップ７００〜７０４および７２０〜７９０を含んでおり、もう一度非常に詳細に論じる必要はない。しかし、第２の実施形態においては、ステップ７１０および７１２が削除され、追加ステップ１３１０が含められる。復元オペレーション中にストレージ装置１００において実行されるプロシージャは、以降のようである。
【０１０６】
ボリューム１１１について存在するチャンクテーブル１６９は、復元されているボリューム１１１のバージョンに対応しないこともある。したがって、第２の実施形態では、ボリューム１１１についての復元オペレーションが開始されるときに、既存のチャンクテーブル１６９は、クリアされ、次いでボリュームが復元されるときに再入力される。したがって、「クリアチャンクテーブル」コマンドに続いて、ボリューム１１１に現在割り付けられているどのようなチャンクも解放され、クリアされたチャンクテーブル１６９は、最初にチャンクがボリューム１１１に割り付けられていないことを示す。
【０１０７】
ステップ７００：コントローラは、バックアップコンピュータから受け取られた書込みコマンドからＬＢＡおよびＢＬＫ（ブロック数）を取得する。
【０１０８】
ステップ７０２：コントローラは、「Ｓ」および「Ｂ」を計算し、ここで「Ｓ」は、書込みコマンドによって指定されたＬＢＡに対応するセグメント番号であり、「Ｂ」は、セグメント中の物理ブロック位置である。復元中に、バックアップコンピュータは、一般的に第１のセグメントで開始されるボリューム１１１を復元し、ボリューム中の最後のセグメントまで順次にセグメントを書き込むことになる。しかしながら、本発明は、復元のこの順序だけには限定されないことに注意すべきである。
【０１０９】
ステップ７０４：プロセスは、ボリューム１１１についての新しいチャンクテーブル１６９を参照することにより、「Ｓ」と呼ばれるセグメントに、ストレージチャンクがすでに割り付けられているかどうかをチェックする。指定されるセグメントには、まだそれについてストレージチャンク１９０が割り付けられていない場合、次いでプロセスはステップ１３１０へと進み、そうでない場合には、プロセスはステップ７５０へと進む。
【０１１０】
ステップ１３１０：プロセスは、書込みコマンド中のデータがデフォルトデータパターンテーブル中のデフォルトデータパターンと同等であるかどうかをチェックする。データが、デフォルトデータパターンと同等である場合、次いでデータは、保存される必要はなく、プロセスは、ステップ７５２へと進む。データがデフォルトデータパターンと同等でない場合には、次いでプロセスは、ステップ７２０〜７５０へと進み、新しいチャンクをボリューム１１１に割り付け、チャンクプール管理テーブルおよびチャンクテーブルをアップデートし、次いで書込みデータを割り付けられたチャンクに記憶する。ステップ７５２〜７９０は、第１の実施形態において上記されるものと同じである。
【０１１１】
したがって、この実施形態においては、書込みコマンド中のデータがデフォルトデータパターンテーブル１６７中のデフォルトデータパターンと同等である場合には、チャンク割付けが回避される。第１の実施形態と第２の実施形態との間の違いは、以下のようである。
【０１１２】
バックアップ
第２の実施形態においては、バックアップ／復元プログラム３３は、バックアップイメージ１９９を作成するときにチャンクテーブルのコピーをダウンロードする必要はない。またバックアップ／復元プログラム３３は、チャンクテーブルをバックアップ媒体に書き込む必要もない。したがって、チャンクテーブルインポート／エクスポートプログラム１６１は、必要とされない。
【０１１３】
復元
第２の実施形態においては、復元オペレーション中に、バックアップ／復元プログラム３３は、バックアップ媒体からチャンクテーブルを読み取る必要はなく、またチャンクテーブルをストレージ装置１００に送る必要もない。またバックアップ／復元プログラム３３は、ストレージ装置１００のモードを（すなわち、「標準」と「復元」との間で）変更する必要もない。したがって、モード選択プログラム１６２は、必要とされない。
【０１１４】
さらに、図１７に示されるような第２の実施形態の好ましいコンフィギュレーションにおいては、復元オペレーション中に、復元データは、データストリーム中のデータパターンをチェックすることができる大規模集積(large scale integrated)（ＬＳＩ）回路２２９を対象とすることができる。ＬＳＩ回路２２９は、ソフトウェアによってデータについての従来のビットごとの比較を実施する必要なしに、デフォルトデータパターンについてチェックするための高速なハードウェアベースの手段を可能にする。デフォルトデータパターンが、オールゼロまたはオール０ｘＦＦ（１６進数）である場合、次いでＬＳＩ回路２２９は、書込みデータ中に含まれるデータが、書込みデータとデフォルトデータパターン（例えば、ゼロまたは０ｘＦＦ）との間でＸＯＲを行うことにより（すなわち、排他的論理和ファンクションを適用することにより）このデフォルトデータパターンと一致するかどうかを速やかに決定することができる。ＸＯＲオペレーションの結果が、ブロック内で０でない場合、次いでブロックは、デフォルトボイドパターンではなく、したがって復元されるべき有効なデータである。このようにして、復元オペレーションの性能および効率は、ＣＰＵ１５１上で実行されるソフトウェアを使用する代わりに、復元データの有効性をチェックするためにＬＳＩ回路２２９（ハードウェア）を使用することによって改善される。
【０１１５】
第３の実施形態
第３の実施形態においては、ＤＣＡストレージシステムは、モード選択プログラム１６２と「非データ転送」プログラムとを含んでいる。これらの実施形態においては、ＤＣＡストレージ装置１００は、バックアップオペレーションを開始する前に「バックアップモード」に設定される。バックアップモードにおいては、ＤＣＡストレージ装置１００は、読取りが、ストレージチャンクがまだそれに割り付けられていないボリュームのセグメント上で行われるときに、非データ転送状態でバックアップコンピュータに対して応答する。次いで復元オペレーション中に、データは、バックアップイメージに記憶されたボリュームのセグメントに対してのみ復元される。図１４は、第３の実施形態についての応答プログラム１６３におけるプロセスフローを示しているが、図１５および１６は、バックアップ／復元プログラム３３のプロセスフローを示しており、図１５は、バックアップオペレーションを示し、図１６は復元オペレーションを示している。さらに、図１８は、第３の実施形態のバックアップオペレーションの概念図を示している。
【０１１６】
バックアップ
図１４に示されるように、第３の実施形態においては、応答プログラム１６３は、読取りコマンドが受け取られ、ストレージ装置が「バックアップ」モードにあるときに、追加のステップ１４６０および１４６２を含んでいる。応答プログラムによって実行されるプロセスの残りは、図６に関して上記されるものと同じである。それ故に、これらのステップの説明は、もう一度詳細に繰り返す必要はない。したがって、第３の実施形態においては、ボリューム１１１のバックアップが行われるべきときに、ストレージ装置１００は、バックアップ／復元プログラム３３からモード選択プログラム１６２までの命令によってバックアップモードに設定される。次いでバックアップコンピュータは、読取りコマンドを使用してボリューム１１１からバックアップされるべきデータを読み取る。それ故に、ステップ６００〜６２６は、上記されるものと同じである。ステップ６２６に到達すると、プロセスは、チャンクが指定されたセグメントについて割り付けられているかどうかを決定する。チャンクが割り付けられている場合、プロセスは、上記のようにステップ６２８〜６３２を実行し、バックアップイメージ１９９に記憶するために要求されるデータをバックアップコンピュータに送る。他方、チャンクが割り付けられていない場合には、次いでプロセスはステップ１４６０へと進む。
【０１１７】
ステップ１４６０：プロセスは、モードが標準モードであるか、またはバックアップモードであるかをチェックする。モードが標準モードである場合、次いでこれは読取りコマンドがバックアップイメージを作成するためのものでないことを意味し、プロセスは、ステップ６５０へと進んで、読取りコマンドを送ったコンピュータにデフォルトボイドデータパターンを転送する。他方、モードがバックアップに設定される場合には、次いでプロセスは、ステップ１４６２へと進む。
【０１１８】
ステップ１４６２：ストレージシステムの応答は、バックアップコンピュータに対する非データ転送状態である。次いでプロセスは、ステップ６３２へと進み、上記されるように完了する。したがってバックアップ中に、デフォルトボイドデータパターンは、チャンクが割り付けられていないセグメントについてはバックアップコンピュータに送られず、バックアップイメージ１９９は、図１８に示されるようにチャンクが割り付けられているセグメントについてのデータを含んでいるだけである。
【０１１９】
図１５は、第３の実施形態におけるバックアップ／復元プログラム３３中のバックアッププロセスフローを示している。第３の実施形態において実行されるプロセスは、第１の実施形態についての図１０に関して上記されるプロセスに類似している。それ故に、同じであるステップについては、もう一度非常に詳細に説明する必要はない。ステップ１０００〜１００６において、バックアップコンピュータは、バックアップを作成するための時点においてストレージ装置１００からチャンクテーブルのコピーを要求し、チャンクテーブルコピー１９８をバックアップストレージ装置３００上のバックアップ媒体３９０に対して書き込む（図１８も参照されたい）。
【０１２０】
ステップ１５０８：バックアップ／復元プログラム３３は、モード選択プログラム１６２に対してコマンドを発行することによりストレージ装置１００をバックアップモードに設定する。次いでバックアップコンピュータは、ステップ１０５０〜１０５２について上記されるような、ボリューム１１１のセグメントを順次に読み取ることなどにより、読取りコマンドを使用してボリューム１１１からデータを読み取る。
【０１２１】
ステップ１５５３：読取りコマンドに対する応答が、非データ転送状態である場合、次いでＬＢＡについて記憶されるべきデータは存在せず、バックアップ／復元プログラム３３は、そのＬＢＡについてどのようなデータも記憶することなく、ステップ１０５６へと進む。他方、データが戻される場合には、次いでデータは、ステップ１０５４〜１０５８について上記されるようなバックアップ媒体に記憶される。
【０１２２】
ステップ１５６０：ひとたび全ボリューム１１１が読み取られ、バックアップイメージ１９９に記憶されると、プロセスは、コマンドをモード選択プログラム１６２に発行することにより、ストレージ装置１００を標準モードに戻して設定し、バックアッププロセスは完了する。したがって、第３の実施形態のバックアッププロセスは、ボリューム１１１に割り付けられているボリューム１１１のチャンクだけをバックアップし、どのようなデフォルトデータもバックアップイメージ１９９に保存しない（図１８も参照されたい）。このプロセスは、バックアップ媒体３９０上にストレージ容量を保存し、またバックアップ効率および復元効率も増大させる。
【０１２３】
復元
図１６は、ボリューム１１１を復元するときの第３の実施形態におけるバックアップ／復元プログラム３３中のプロセスフローを示すものである。実行されるプロセスは、以下に記述される態様において第１の実施形態とは異なる。
【０１２４】
ステップ１２００および１２０２は、図１２に関して上記される第１の実施形態における復元オペレーションに関して同じものである。保存されたバックアップイメージ１９９を使用してボリューム１１１をストレージ装置１００に復元するために、復元オペレーションは開始される。プロセスは、バックアップストレージ装置３００上のバックアップ媒体３９０からチャンクテーブルコピー１９８を読み取る。
【０１２５】
ステップ１６０５：プロセスは、ストレージ装置１００中のチャンクテーブルインポート／エクスポートプログラム１６１に対して「クリアチャンクテーブル」コマンドを発行する。ストレージ装置１００中のチャンクテーブル１６９は、クリアされ、ボリューム中のチャンクは、インポート／エクスポートチャンクテーブルプログラム１６１が、クリアチャンクテーブルコマンドを受け取るときに解放される。したがって、第３の実施形態においては、チャンクテーブルコピー１９８は、ストレージ装置１００にインポートされない。そうではなくて、チャンクテーブルコピー１９８は、バックアップコンピュータ３３に保持され、それを使用して、バックアップコンピュータ３０からの復元オペレーションを管理し、ストレージ装置１００中のチャンクテーブル１６９は、クリアされ、その結果、ボリューム１１１が復元されるときにそのチャンクテーブルを使用し再入力することができるようになる。
【０１２６】
ステップ１２５０：以上のステップ１２５０について説明されるように、ＬＢＡは最初はゼロであり、ＢＬＫは、最大のＬＢＡに等しい。
【０１２７】
ステップ１６５２：セグメント番号（「Ｓ」）は、２ビット右シフトを使用することにより、ＬＢＡから計算される。
【０１２８】
ステップ１６５４：プロセスは、バックアップコンピュータメモリ３２に記憶されるチャンクテーブルコピー１９８を参照して、計算されたセグメント「Ｓ」についてチャンクが割り付けられているかどうかを決定する。現行のセグメント「Ｓ」に対応するチャンクテーブルコピー１９８の「被割付け」セルが、チャンクがそのセグメントに対してまだ割り付けられていないことを示す場合、次いでプロセスは、ステップ１６７０へとスキップする。他方、チャンクテーブルコピー１９８の「被割付け」セルが、チャンクがそのセグメントについて割り付けられていることを示す場合には、プロセスは、ステップ１６６０へと進んで、対応するデータを復元する。
【０１２９】
ステップ１６６０：プロセスは、バックアップストレージ装置３００上のバックアップ媒体３９０からデータを読み取る。この場合には、セグメントは、チャンクがそれに割り付けられており、あるいは割り付けられていないので、読み取り、復元することができるデータのサイズは、実施形態の例に従って２０４８バイト（すなわち、１セグメント、セグメント当たり４ブロック、およびセグメント当たり５１２バイト）である。
【０１３０】
ステップ１６６２：復元データは、ストレージ装置１００に書き込まれ、このストレージ装置は、図６および７に関して以上に記述されるように、標準の書込みコマンドに従って新しいチャンクを割り付け、データを記憶する。
【０１３１】
ステップ１６７０：プロセスは、現行のＬＢＡに対してセグメント当たりのブロック（４）を加え、現行のＢＬＫからセグメント当たりのブロック（４）を差し引く。
【０１３２】
ステップ１２７２：プロセスは、ＢＬＫがゼロになっているかどうかをチェックする。そうである場合、次いでボリューム復元は完了しており、プロセスは、ステップ１２９０において終了する。そうでない場合には、次いでプロセスは、ステップ１６５２へと戻る。
【０１３３】
前記から、本発明は、容量が使用されるときにストレージ容量を割り付けることができるストレージシステム中におけるボリュームについてのバックアップ機能および復元機能を提供することを理解することができる。さらに、特定の実施形態がこの明細書中に示され説明されてきているが、同じ目的を達成することが予測される任意の構成も、開示される特定の実施形態に代わって使用することができることが、当業者には理解されよう。本開示は、本発明の任意またはすべての適応形態または変形形態をカバーすることを意図しており、以上の説明は、例示の様式で行われており、限定する様式では行われていないことを理解されたい。したがって、本発明の範囲は、添付の特許請求の範囲を参照して、そのような特許請求の範囲に権利が与えられる全範囲の等価形態と一緒に、適切に決定されるべきである。
【図面の簡単な説明】
【０１３４】
【図１Ａ】本発明の方法を適用することができるハードウェアアーキテクチャの一例を示す図である。
【図１Ｂ】本発明のストレージ装置の例示の一構成を示す図である。
【図２】ＤＣＡストレージシステムにおいてどのようにしてストレージチャンクを構成することができるかの一例を示す図である。
【図３】チャンクプール管理テーブルを示す図である。
【図４】ボリュームについてのチャンクテーブルを示す図である。
【図５】ボリューム、ならびに書込みコマンドと、ボリュームと、ストレージチャンクと、チャンクプールとの間の関係とを示す図である。
【図６】ストレージ装置における応答プログラム中のプロセスフローを示す図である。
【図７】動的チャンク割付けプログラム中のプロセスフローを示す図である。
【図８】書込みコマンドの一例を示す図である。
【図９Ａ】読取りコマンドの一例を示す図である。
【図９Ｂ】読取りコマンドの一例を示す図である。
【図１０】第１の実施形態のバックアップ／復元プログラム中におけるバックアッププロセスフローを示す図である。
【図１１】第１の実施形態におけるバックアッププロセスの概念図と、バックアップ媒体上のチャンクテーブルおよびバックアップイメージの構成とを示す図である。
【図１２】第１の実施形態のバックアップ／復元プログラム中の復元プロセスフローを示す図である。
【図１３】本発明の第２の実施形態における動的チャンク割付けプログラム中のプロセスフローを示す図である。
【図１４】第３の実施形態についての応答プログラム中のプロセスフローを示す図である。
【図１５】第３の実施形態についてのバックアップ／復元プログラム中のバックアップのためのプロセスフローを示す図である。
【図１６】第３の実施形態のバックアップ／復元プログラム中の復元のためのプロセスフローを示す図である。
【図１７】本発明の第２の実施形態についての好ましいシステムコンフィギュレーションを示す図である。
【図１８】第３の実施形態のバックアップオペレーションの概念図である。
【図１Ａ】
2008130080.tif 000003
【図１Ｂ】
2008130080.tif 000004
【図２】
2008130080.tif 000005
【図３】
2008130080.tif 000006
【図４】
2008130080.tif 000007
【図５】
2008130080.tif 000008
【図６】
2008130080.tif 000009
【図７】
2008130080.tif 000010
【図８】
2008130080.tif 000011
【図９Ａ】
2008130080.tif 000012
【図９Ｂ】
2008130080.tif 000013
【図１０】
2008130080.tif 000014
【図１１】
2008130080.tif 000015
【図１２】
2008130080.tif 000016
【図１３】
2008130080.tif 000017
【図１４】
2008130080.tif 000018
【図１５】
2008130080.tif 000019
【図１６】
2008130080.tif 000020
【図１７】
2008130080.tif 000021
【図１８】
2008130080.tif 000022
【外国語明細書】
2008130080000001.pdf