(57)【特許請求の範囲】
【請求項１】
順次アクセス・バックアップ・アーカイブからデータを効率的に復元する方法であって、
順次にアクセスされるように構成されたバックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リストであって、バックアップ・アーカイブにデータ・セットが実際に含まれているか未知の状況で提供される、前記候補リストを受け取るステップと、
前記バックアップ・アーカイブから復元されることを望まれているデータ・セットを識別するフィルタ・リストを受け取るステップと、
前記バックアップ・アーカイブを検索するときに無視されるべきデータ・セットを識別する検索リストを、前記候補リスト及び前記検索リストとは別である前記フィルタ・リストから、生成するステップと、
前記バックアップ・アーカイブにおける複数の検索が前記バックアップ・アーカイブを通して一体的に単一のパスで行われるように、前記複数の検索を順次に遂行するステップであって、複数の検索の最初の検索は前記バックアップ・アーカイブの始めに開始し、前記複数の検索の各継続する検索は、前記バックアップ・アーカイブの最後にアクセスされた部分から始まり、（１）データ・セットが前記フィルタ・リストにリストされているにもかかわらず前記検索リストにリストされていないデータ・セットに遭遇したか、（２）前記バックアップ・アーカイブの最後に遭遇したときに停止する、前記複数の検索を順次に遂行するステップと、
前記検索リストにリストされていないデータ・セットに遭遇したとき、もしそのデータ・セットが前記フィルタ・リストにリストされているのであれば前記データ・セットを回復するステップと、
を含む方法。
【請求項２】
前記バックアップ・アーカイブはテープ・ドライブ上に格納される、請求項１に記載の方法。
【請求項３】
各データ・セットは可変量のデータを含む、請求項１又は請求項２に記載の方法。
【請求項４】
検索コマンドを使用して前記複数の検索の各々を開始させるステップを更に含む、請求項１乃至３のいずれかに記載の方法。
【請求項５】
前記検索コマンドは限られた数の検索ストリングを入力として受容する、請求項４に記載の方法。
【請求項６】
前記複数の検索における検索の数は、前記検索コマンドにより入力として受容された検索ストリングの数に依存する、請求項５に記載の方法。
【請求項７】
前記フィルタ・リストにおける識別されたデータ・セットの数は、前記検索コマンドにより入力として受容された検索ストリングの数より大きい、請求項５に記載の方法。
【請求項８】
順次アクセス・バックアップ・アーカイブからデータを効率的に復元する装置であって、
少なくとも１つのプロセッサと、
このプロセッサに結合されている、少なくとも１つのメモリとを含み、
順次にアクセスされるように構成されたバックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リストであって、バックアップ・アーカイブにデータ・セットが実際に含まれているか未知の状況で提供される、前記候補リストを得て、
前記バックアップ・アーカイブから復元されることを望まれているデータ・セットを識別するフィルタ・リストを得て、
前記バックアップ・アーカイブを検索するときに無視されるべきデータ・セットを識別する検索リストを、前記候補リスト及び前記検索リストとは別である前記フィルタ・リストから生成し、
前記バックアップ・アーカイブにおける複数の検索が前記バックアップ・アーカイブを通して一体的に単一のパスで行われるように、前記複数の検索を順次に遂行するが、複数の検索の最初の検索は前記バックアップ・アーカイブの始めに開始し、前記複数の検索の各継続する検索は、前記バックアップ・アーカイブの最後にアクセスされた部分から始まり、（１）データ・セットが前記フィルタ・リストにリストされているにもかかわらず前記検索リストにリストされていないデータ・セットに遭遇したか、（２）前記バックアップ・アーカイブの最後に遭遇したときに停止する、前記複数の検索を順次に遂行し、
前記検索リストにリストされていないデータ・セットに遭遇したとき、もしそのデータ・セットが前記フィルタ・リストにリストされているのであれば前記データ・セットを回復する、
装置。
【請求項９】
前記バックアップ・アーカイブはテープ・ドライブ上に格納される、請求項８に記載の装置。
【請求項１０】
各データ・セットは可変量のデータを含む、請求項８又は９に記載の装置。
【請求項１１】
前記複数の検索の各々に対する検索コマンドを生成するためのコマンド生成モジュールを更に含む、請求項８乃至１０のいずれかに記載の装置。
【請求項１２】
前記検索コマンドは限られた数の検索ストリングを入力として受容する、請求項１１に記載の装置。
【請求項１３】
前記複数の検索における検索の数は、前記検索コマンドにより入力として受容された検索ストリングの数に依存する、請求項１２に記載の装置。
【請求項１４】
前記フィルタ・リストにおける識別されたデータ・セットの数は、前記検索コマンドにより入力として受容された検索ストリングの数より大きい、請求項１２に記載の装置。
【請求項１５】
コンピュータ・システムにロードされて実行されるとき、請求項１乃至７のいずれかに記載された前記方法のステップを前記コンピュータ・システムに遂行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの復元に関し、詳しく云えば、順次アクセス・バックアップ・アーカイブからデータを復元するための装置及び方法に関する。
【背景技術】
【０００２】
一般に、「バックアップ」とは、リカバリ目的のために作成及び保全されるオリジナル・データのコピーを指している。コピーは、オリジナル・データが失われたり、破損した場合に、そのオリジナル・データを復元するために使用される。ほとんどのバックアップは共通の目的を共有するが、データがバックアップされる方法（「データ・リポジトリ・モデル」とも呼ばれる）はかなり異なっていることがある。多くの場合、データ・リポジトリ・モデルは、使用される記憶媒体のタイプ（即ち、バックアップが、磁気テープ、ハード・ディスク、光ディスク等のどれに格納されるか）に少なくとも部分的に基づいている。一旦データがバックアップされると、そのデータを回復するために使用される技術も様々なものが存在する。そのような回復技術は、そのバックアップ・データが最初に記憶され且つ構造化された方法に少なくとも部分的に基づいていることがある。
【０００３】
磁気テープに記憶されたバックアップは、場合によっては、データ・セットがバックアップのどこに記憶されているか又はどのデータ・セットがバックアップに実際に含まれているかを表わす情報（インデックスまたは停留地点のような情報）を欠いている。そのような場合、バックアップからの特定のデータ・セットの復元は、多大な時間を要する資源消費性のプロセスとなることがある。特に、そのような場合におけるデータ・セットの復元は、そのデータ・セットが復元されるべきものであるかどうかを判断するためにバックアップにおける各データ・セットを読み出すことを必要とすることがある。これは、バックアップが少数のデータ・セットしか含まない場合、問題ではないかもしれない。しかし、バックアップが多数のデータ・セットを含む場合、そのデータ・セットの各々を読み出して検査することは、大量の処理時間及び資源を消費することがある。
【０００４】
上記の問題は、バックアップされることを要求されたデータ・セットが実際にバックアップされたデータ・セットを反映しないことがあるという事実によって事態が悪化することがある。その問題は、各データ・セットにおけるデータの量が変動し得るという事実によっても深刻化することがある。従って、検索技術は、所望のデータ・セットまで早送りするためにバックアップを一定サイズ・エントリのアレイとして簡単に扱うことができない。
【０００５】
以上の点を考慮すると、上記の特性を有するバックアップ・アーカイブからデータ・セットをより効率的に復元する装置及び方法が必要となる。更に、既存の記憶コントローラによって支援された検索コマンドを使用して、所望のデータ・セットを効率的に検索する装置及び方法が必要となる。更に、そのような検索を行う時に利用される処理時間及び資源を最小にする装置及び方法が必要となる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、本発明は、順次アクセス・バックアップ・アーカイブからデータを効率的に復元する方法、装置、及びコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第１の態様である方法は、順次にアクセスされるように構成されたバックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リストを受け取るステップと、バックアップ・アーカイブから復元されることを望まれているデータ・セットを識別するフィルタ・リストを受け取るステップと、バックアップ・アーカイブを検索する時に無視されるべきデータ・セットを識別する検索リストを候補リスト及びフィルタ・リストから生成するステップと、バックアップ・アーカイブにおいて複数の検索がバックアップ・アーカイブを通して一体的に単一のパスで行われるように複数の検索を順次遂行するステップとを含み、各検索は、バックアップ・アーカイブの最後にアクセスされた部分から始まり、検索リストにより明示的に無視されてないデータ・セットに遭遇したときに停止する。
【０００８】
望ましくは、バックアップ・アーカイブはテープ・ドライブ上に格納される。望ましくは、各データ・セットは可変量のデータを含む。望ましくは、本方法は、検索コマンドを使用して複数の検索の各々を開始させるステップを含む。望ましくは、検索コマンドは限られた数の検索ストリングを入力として受容する。望ましくは、その複数の検索における検索の数は、検索コマンドにより入力として受容された検索ストリングの数に依存する。望ましくは、フィルタ・リストにおける識別されたデータ・セットの数は、検索コマンドによって入力として受容された検索ストリングの数より大きい。
【０００９】
本発明の第２の態様として、順次アクセス・バックアップ・アーカイブからデータを効率的に復元する装置が提供される。その装置は、順次にアクセスされるように構成されたバックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リストを得るための決定モジュールと、バックアップ・アーカイブから復元されることを望まれているデータ・セットを識別するフィルタ・リストを得るための決定モジュールと、バックアップ・アーカイブを検索するときに無視されるべきデータ・セットを識別する検索リストを候補リスト及びフィルタ・リストから生成するための生成モジュールと、バックアップ・アーカイブにおける複数の検索がバックアップ・アーカイブを通して一体的に単一のパスで行われるように複数の検索を順次に遂行するための検索モジュールとを含み、各検索は、バックアップ・アーカイブの最後にアクセスされた部分から始まり、検索リストにより明示的に無視されてないデータ・セットに遭遇したときに停止する。
【００１０】
望ましくは、バックアップ・アーカイブはテープ・ドライブ上に格納される。望ましくは、各データ・セットは可変量のデータを含む。望ましくは、本装置は、複数の検索の各々に対する検索コマンドを生成するためのコマンド生成モジュールを更に含む。望ましくは、検索コマンドは限られた数の検索ストリングを入力として受容する。望ましくは、その複数の検索における検索の数は、検索コマンドによって入力として受容された検索ストリングの数に依存する。望ましくは、フィルタ・リストにおける識別されたデータ・セットの数は、検索コマンドによって入力として受容された検索ストリングの数より大きい。
【００１１】
本発明の第３の態様として、コンピュータ可読媒体上に格納され、コンピュータ・システムにロードされて実行されるとき、そのコンピュータ・システムに前記方法におけるすべてのステップを遂行させるコンピュータ・プログラム・コードを含む、コンピュータ・プログラムが提供される。
【００１２】
本コンピュータ・プログラムは、順次アクセス・バックアップ・アーカイブからデータを効率的に復元するためのコンピュータ・プログラムとして具現化され得る。そのコンピュータ・プログラムは、コンピュータ使用可能プログラム・コードを具現化されたコンピュータ使用可能媒体に含まれる。コンピュータ使用可能プログラム・コードは、順次にアクセスされるように構成されたバックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リストを得るためのコンピュータ使用可能プログラム・コードと、バックアップ・アーカイブから復元されることを望まれているデータ・セットを識別するフィルタ・リストを得るためのコンピュータ使用可能プログラム・コードと、バックアップ・アーカイブを検索するときに無視されるべきデータ・セットを識別する検索リストを候補リスト及びフィルタ・リストから生成するためのコンピュータ使用可能プログラム・コードと、バックアップ・アーカイブにおける複数の検索がバックアップ・アーカイブを通して一体的に単一のパスで行われるように複数の検索を順次に遂行するためのコンピュータ使用可能プログラム・コードとを含み、各検索は、バックアップ・アーカイブの最後にアクセスされた部分から始まり、検索リストによって明示的に無視されてないデータ・セットに遭遇したときに停止する。
【００１３】
実施例では、順次アクセス・バックアップ・アーカイブからデータを効率的に復元するためのシステムが提供される。そのシステムは、順次にアクセスされるように構成されたバックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リストを得るためのホスト装置であって、バックアップ・アーカイブから復元されることを望まれているデータ・セットを識別するフィルタ・リストを得るように構成され、バックアップ・アーカイブを検索するときに無視されるべきデータ・セットを識別する検索リストを候補リスト及びフィルタ・リストから生成するように構成された、ホスト装置と、バックアップ・アーカイブにおける複数の検索がバックアップ・アーカイブを通して一体的に単一のパスで行われるように複数の検索を順次に遂行するためのコントローラとを含み、各検索は、バックアップ・アーカイブの最後にアクセスされた部分から始まり、検索リストによって明示的には無視されてないデータ・セットに遭遇したときに停止する。
【００１４】
本発明は、当技術分野の現状に応じて、特に、現在利用可能な装置及び方法によって未だに十分には解決されていないその分野における課題及び要請に応じて、開発された。従って、本発明は、順次アクセス・バックアップ・アーカイブからデータを効率的に復元するための装置及び方法を提供するために開発された。本発明の特徴及び利点は、以下の説明及び「特許請求の範囲」の記載から更に十分に明らかになるであろうし、或いは以下に開示される本発明を実践することによって学び得るであろう。
【００１５】
上記事項に関連して、順次アクセス・バックアップ・アーカイブからデータを効率的に復元する方法が本明細書において開示される。選択された実施例では、そのような方法は、順次アクセス・バックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リストを受け取るステップを含む。本方法は、更に、バックアップ・アーカイブから復元されることを望まれているデータ・セットを識別するフィルタ・リストを含む。本方法は、候補リスト及びフィルタ・リストを使用して、バックアップ・アーカイブを検索する時に無視されるべきデータ・セットを識別する検索リストを生成する。更に、本方法は、バックアップ・アーカイブにおける複数の「検索」がバックアップ・アーカイブを通して一体的に単一のパスで行われるようにその複数の検索を順次に遂行する。これらの検索を行う時、各検索は、バックアップ・アーカイブの最後にアクセスされた部分から始まり、検索リストによって明示的には無視されてないデータ・セットに遭遇するときに停止する。
【００１６】
本明細書では、対応するシステム、装置、及びコンピュータ・プログラムも開示され、特許請求される。
【図面の簡単な説明】
【００１７】
【図１】本発明による装置及び方法を実施し得るネットワーク環境の一例を示すハイレベルのブロック図である。
【図２】順次アクセス・バックアップ・アーカイブからデータを効率的に復元するために使用可能な種々のモジュールを示すハイレベルのブロック図である。
【図３】順次アクセス・バックアップ・アーカイブからデータを効率的に復元する方法の一実施例を示すフローチャートである。
【図４】候補リスト、フィルタ・リスト、検索リスト、バックアップ・リスト、及び復元リストに含まれ得るデータ・セットの１つの特定の例を示す図表である。
【図５】図４において識別されたバックアップ・アーカイブを検索するための１つの可能な（しかし、非理想的な）方法を示す概略図である。
【図６】図４において識別されたバックアップ・アーカイブを検索するためのもう１つの可能な（しかし、非理想的な）方法を示す概略図である。
【図７】図４において識別されたバックアップ・アーカイブを検索するための非常に効率的な方法を示す概略図である。
【発明を実施するための形態】
【００１８】
添付図面において概略的に記述及び図示されるように、本発明の構成要素が多種多様の異なる構成で配列及び設計され得るということは容易に理解されるであろう。従って、本発明の実施例に関する以下の詳細な説明は、「特許請求の範囲」に記載されるような本発明の技術的範囲を図面に示されるように限定することを意図するものではなく、単に、本発明に従って現時点で考えられる実施例の一例を示すものである。ここに開示された実施例は、全体を通して同じ部品が同じ参照番号によって指定されているこれらの図面を参照することによって最もよく理解されるであろう。
【００１９】
当業者には明らかなように、本発明は、装置、システム、方法、又はコンピュータ・プログラムとして具体化され得る。更に、本発明は、ハードウェアの実施例、ハードウェアを操作するように構成されたソフトウェアの実施例（ファームウェア、常駐のソフトウェア、マイクロコード等を含む）、或いは一般的に「モジュール」又は「システム」と呼ばれ得るソフトウェアの側面及びハードウェアの側面を結合した実施例の形態を取り得る。更に、本発明は、コンピュータ使用可能なプログラム・コードを格納された任意の実体的な表現媒体において具体化されるコンピュータ使用可能媒体の形態を取り得る。
【００２０】
コンピュータ・プログラムを格納するために、１つ又は複数個のコンピュータ使用可能媒体又はコンピュータ可読媒体の任意の組合せが利用可能である。例えば、コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線、又は半導体システム、装置、もしくはデバイスであってもよいが、それらに限定されない。コンピュータ可読媒体の更に特殊な例（限定的なリスト）は、１つ又は複数個のワイヤを有する電気的接続体、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能リード・オンリ・メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤＲＯＭ）、光学的記憶装置、或いは磁気記憶装置を含み得る。本明細書との関連で、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、又はデバイスによる使用、或いはそれに関連した使用のためのプログラムを含み、格納し、又は搬送し得る任意の媒体であってもよい。
【００２１】
本発明に関するオペレーションを実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のようなオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き的プログラミング言語を含む１つ又は複数個のプログラミング言語の任意の組合せで作成することが可能である。同様に、本発明に関するオペレーションを実行するためのコンピュータ・プログラム・コードは、単一のコンピュータ上に実装され得るし、ネットワークによって接続された複数のコンピュータのような複数のコンピュータにわたって実装され得る。
【００２２】
本発明は、本発明の実施例に従って、方法、装置、システム、及びコンピュータ使用可能媒体のフローチャート図及び／又はブロック図に関連して後述される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組合せがコンピュータ・プログラム命令又はコードによって具現化され得ることは明らかであろう。これらのコンピュータ・プログラム命令は、コンピュータ又は他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャート図及び／又はブロック図のブロックにおいて指定された機能／行為を具現化するための手段を作成するようなマシンを製造するために、汎用コンピュータ、特殊目的コンピュータ、又は他のプログラマブル・データ処理装置のプロセッサに提供され得る。
【００２３】
これらのコンピュータ・プログラム命令もコンピュータ可読媒体に格納され、その格納された命令が、フローチャート図及び／又はブロック図のブロックにおいて指定された機能／行為を具現化する命令を含む製品を製造するよう、特定の態様で機能するべくコンピュータ又は他のプログラマブル・データ処理装置を指示し得る。
【００２４】
コンピュータ・プログラム命令はコンピュータ又は他のプログラマブル・データ処理装置上にロードされ、そのコンピュータ又は他のプログラマブル装置上で実行される命令が、フローチャート及び／又はブロック図のブロックにおいて指定された機能／行為を具現化するためのプロセスを提供するように、コンピュータ支援プロセスを生じさせるための一連の動作ステップをそのコンピュータ又は他のプログラマブル装置上で遂行させる。
【００２５】
図１を参照すると、コンピュータ・ネットワーク・アーキテクチャ１００の一実施例が示される。そのアーキテクチャ１００は、本発明による装置及び方法を具現化するために種々のシナリオを示すために与えられる。アーキテクチャ１００は単に一例として示され、限定することを意図するものではない。実際に、本明細書に示された装置及び方法は、図示されたネットワーク・アーキテクチャ１００の他に種々の異なるコンピュータ、サーバ、記憶システム、及びネットワーク・アーキテクチャに適用可能であろう。
【００２６】
図示のように、コンピュータ・ネットワーク・アーキテクチャ１００は、ネットワーク１０４によって相互接続された１つ又は複数個のコンピュータ１０２ａ、１０２ｂを含む。ネットワーク１０４は、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、イントラネット等を含み得る。或る実施例では、コンピュータ１０２ａ、１０２ｂは、クライアント・コンピュータ及びサーバ・コンピュータの両方を含み得る。一般に、クライアント・コンピュータ１０２ａは、コミュニケーション・セッションを開始し、一方、サーバ・コンピュータ１０２ｂは、クライアント・コンピュータ１０２ａからの要求を待つ。或る実施例では、クライアント・コンピュータ１０２ａ及び／又はサーバ１０２ｂは、１つ又は複数個の内部又は外部の直接接続された記憶システム１１２（例えば、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブ等）に接続し得る。これらのコンピュータ１０２ａ、１０２ｂ、及び直接接続された記憶システム１１２は、ＡＴＡ、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、Fibre Channel 等のようなプロトコルを使用してコミュニケーションを行い得る。コンピュータ１０２ａ、１０２ｂのいずれか又はすべてが、記憶装置１１２においてバックアップされたデータを復元するために、本明細書で開示された装置と方法を利用し得る。
【００２７】
コンピュータ・ネットワーク・アーキテクチャ１００は、或る実施例では、（例えば、ネットワーク接続された記憶装置を使用するとき）ストレージ・エリア・ネットワーク（ＳＡＮ）１０８又はＬＡＮのようなサーバ１０２ｂの背後の記憶ネットワークを含み得る。このネットワーク１０８は、個別のハード・ディスク・ドライブ又はソリッド・ステート・ドライブ１１０ａ、ハード・ディスク・ドライブ又はソリッド・ステート・ドライブのアレイ１１０ｂ、テープ・ドライブ１１０ｃ、テープ・ライブラリ１１０ｄ、ＣＤ−ＲＯＭライブラリ等のような１つ又は複数個の記憶システム１１０にサーバ１０２ｂを接続し得る。ネットワーク１０８がＳＡＮである場合、サーバ１０２ｂ及び貯蔵システム１１０は、Fibre Channel（ＦＣ）のようなネットワーク標準を使用してコミュニケーションを行い得る。コンピュータ１０２ａ、１０２のいずれか又はすべてが、記憶装置１１０においてバックアップされたデータを復元するために本明細書に開示された装置及び方法を利用し得る。
【００２８】
図２を参照すると、選択された実施例では、コンピュータ１０２ａ、１０２ｂ（以下では、ホスト装置１０２と呼ばれる）は、テープ・ドライブ又はテープ・ライブラリのような１つ又は複数個の順次アクセス記憶システム１１０、１１２（図１）に接続し得る。或る実施例では、これらの順次アクセス記憶システムは、ホスト装置１０２上に格納されたデータ又はホスト装置１０２によって生成されたデータをバックアップするために使用される。このデータは、「バックアップ・アーカイブ」と集合的に呼ばれる１つ又は複数個のデータ・セット（一般に、データのファイル又はデータの他の集合体を指すために使用される）を含み得る。バックアップ・アーカイブにおける各データ・セットは、そのデータ・セットを識別するためのヘッダにより先行されるか又はヘッダを含み得る。図２は、順次アクセス記憶装置、この例では、テープ・ドライブ１１０ｃとコミュニケーションを行うホスト装置１０２の一例を示す。このテープ・ドライブ１１０ｃはバックアップ・アーカイブを格納し得る。テープ・ドライブ１１０ｃは順次アクセス記憶装置の単に一例であり、それに限定することを意図するものではない。
【００２９】
或る場合には、バックアップ・アーカイブの内容についてわかっている唯一の情報は、そのアーカイブにどのようなデータ・セットが潜在的にあるのかということである。或る実施例では、この情報は、バックアップ・アーカイブの始めの、格納されたデータ・セットの直前に格納されている。バックアップ・アーカイブに実際にあるデータ・セットは未知である。これは、バックアップを意図されていたかもしれない或るデータ・セットが、少なくとも部分的には、バックアップ・ユーティリティの実行時に利用不可能であったかもしれない。例えば、データ・セットは、アクセス・ロック又はデータ・セットにアクセスする権限の欠如のために、或いは様々のフィルタがデータ・セットのバックアップを排除したかもしれないために、利用不可能であったかもしれない。例えば、フィルタは、或るデータ・セットが最近修正されてない（例えば、最後の日又は週に修正された）場合、或いは、或る指定されたサイズよりも大きい又は小さい場合、そのデータ・セットをバックアップから排除することがある。理由が何であっても、バックアップを意図されたデータ・セットが実際にはバックアップされないことがある。このタイプのバックアップ・アーカイブからデータ・セットを復元しようとするとき、これは１つの問題点を伴う。
【００３０】
選択された実施例では、前述の特性を有するバックアップ・アーカイブからデータを復元するために、１つ又は複数個のモジュールがホスト装置１０２において具現化され得る。これらのモジュールは、ハードウェア、ハードウェアを操作するように構成されたソフトウェア、ハードウェアを操作するように構成されたファームウェア、又はそれの組合せで具体化され得る。本明細書では、これらのモジュールはデータ復元モジュール２００と総称される。選択された実施例では、データ復元モジュール２００は、候補リスト決定モジュール２０２、フィルタ・リスト決定モジュール２０４、検索リスト生成モジュール２０６、検索モジュール２０８、及び分析モジュール２１０の１つ又は複数個を含む。
【００３１】
候補リスト決定モジュール２０２は、バックアップ・アーカイブ内に潜在的に含まれているデータ・セットのリスト（以下、「候補リスト」と呼ばれる）を得るように構成され得る。或る実施例では、候補リストは、バックアップ・アーカイブの始めに格納された情報から得られる。フィルタ・リスト決定モジュール２０４は、復元されることを求められたデータ・セットのリスト（以下、「フィルタ・リスト」と呼ばれる）を得るように構成され得る。実際にはバックアップ・アーカイブにあるデータ・セットが候補リストのサブセットになり得るので、候補リスト及びフィルタ・リストは、バックアップ・アーカイブに含まれていないデータ・セットを識別するために使用され得る。
【００３２】
候補リスト及びフィルタ・リストを使用して、検索リスト生成モジュール２０６は、バックアップ・アーカイブを検索する時に無視されるべきデータ・セットを識別する検索リストを生成する。検索リストは、バックアップ・アーカイブにおけるデータ・セットのリストが未知であっても、復元されるべきではないデータ・セットのリストが予め分かり得るという原理に基づいて生成される。従って、検索リストは、復元されるべきではないデータ・セットのリストを含む。サンプル候補リスト、フィルタ・リスト、及び検索リストが図４に示される。検索リストの効用は、図４及び図７に関連した例において更に詳しく説明される。
【００３３】
一旦検索リストが生成されると、検索モジュール２０８は、複数の検索がバックアップ・アーカイブを通して単一のパスを一緒に遂行するよう、バックアップ・アーカイブにおいて複数の検索を順次遂行する。遂行される各検索は、バックアップ・アーカイブの最後にアクセスされた部分から始まる。更に、各検索は、検索リストによって明示的に無視されてないデータ・セットに遭遇するときに停止する。この技術は、図７に関連して更に詳しく説明される。
【００３４】
検索を行うとき、検索モジュール２０８は、順次アクセス記憶装置、この例では、テープ・ドライブ１１０ｃによって認識及び理解される検索コマンドを生成し得る。検索モジュール２０８に関連したコマンド生成モジュール２１６は、テープ・ドライブ１１０とコミュニケーションを行うために必要な検索コマンドを生成し得る。これらのコマンドはテープ・コントローラ２１２によって受け取られ、テープ・コントローラ２１２は、その後、指定された検索を物理的媒体（即ち、磁気テープ）において遂行する。一旦検索が実行されると、テープ・コントローラ２１２はその結果（即ち、データ・セット）をホスト装置１０２に戻す。一旦その結果が受け取られると、その戻されたデータ・セットが（それをフィルタ・リストにおけるデータ・セットに比較することによって）復元されることを求められたものであるかどうかを、分析モジュール２１０が決定する。それが肯定される場合、データ復元モジュール２００がそのデータ・セットを復元する。
【００３５】
選択された実施例では、テープ・コントローラ２１２は、各データ・セットを個々に読まなければならない代わりに順次アクセス・テープにおいて所与のデータ・セットに対してソフトウェアが検索及びシークすることを可能にする検索コマンドをサポートし得る。この検索コマンドは、限られた数の検索ストリングを入力として受け取り得る。図７の（Ａ）及び（Ｂ）に示されるように、このコマンドは（前述の検索リストと共に）データ・セットがアーカイブのどこにあるのか及び／又はどのデータ・セットがアーカイブに実際に含まれているのか示す情報（即ち、インデックス、中間地点、マーカ等）を欠いたバックアップ・アーカイブをより効率的に検索するために使用され得る。
【００３６】
図３を参照すると、上記特性を有するバックアップ・アーカイブを効率的に検索する方法３００の一実施例が示される。図示のように、方法３００は先ず前述のように候補リスト及びフィルタ・リストを決定する（ステップ３０２及び３０４）。しかる後、方法３００は、候補リスト及びフィルタ・リストから検索リストを生成する(ステップ３０６)。 図４に示されるように、検索リストは、次のような論理演算
検索リスト＝｛not(カード・リストＸＯＲフィルタ・リスト)｝
を使用して生成され得る。
【００３７】
一旦検索リストが生成されてしまうと(ステップ３０６)、方法３００は第１のコマンドを生成し、そのコマンドをテープ・ドライブ１１０ｃに送る(ステップ３０８)。図７の（Ａ）及び（Ｂ）に関連してより詳細に示されるように、このコマンドは検索リストからの検索ストリングで占められ得る。実際に、このコマンドは、検索ストリングの１つによって識別されないバックアップ・アーカイブにおける第１のデータ・セットをテープ・コントローラ２１２に検索させる。テープ・コントローラ２１２がそのようなデータ・セットに遭遇するとき、検索は停止し、コントローラ２１２はそのデータ・セットをホスト装置１０２に戻す。しかる後、方法３００は、このデータ・セットを分析し(ステップ３１０)、そのデータ・セットがフィルタ・リストにおいて識別されるかどうかを決定する（ステップ３１２）。そのデータ・セットがフィルタ・リストにおいて識別される（即ち、復元されることを求められたデータ・セットである）場合、方法３００はそのデータ・セットを復元する(ステップ３１４)。
【００３８】
方法３００の実行中における任意の時点で、フィルタ・リストにおけるすべてのデータ・セットが復元されたということを方法３００が決定する場合（ステップ３１６）、検索するべき残りのデータ・セットがないので、方法３００は終了する。同様に、方法３００は、各検索後にテープ終了（end of tape）に到達したかどうかを決定する（ステップ３１８）。テープ終了に到達した場合、検索するべき更なるデータ・セットがバックアップ・アーカイブにないので、方法３００は終了する。
【００３９】
条件３１６及び３１８のどちらにも遭遇しない場合、方法３００は次の検索コマンドを生成して、そのコマンドをテープ・ドライブ１１０ｃへ送る（ステップ３２０）。このコマンドも検索リストからの検索ストリングに追加され得る。このコマンドは、テープ・コントローラ２１２に、バックアップ・アーカイブの最後にアクセスされた部分から始まる新しい検索を開始させるであろう。しかる後、テープ・コントローラ２１２は、それが遭遇した第１のデータ・セット、即ち、コマンド内の検索ストリングによって識別されたデータ・セットではないデータ・セットを戻す。しかる後、その戻されたデータ・セットは分析され（ステップ３１０）、フィルタ・リストにおいて識別される場合に復元される(ステップ３１４)。方法３００は、検索を行い、フィルタ・リストにおけるすべてのデータ・セットが復元されてしまうか又はテープ終了に到達するまで、上記方法で結果を分析し続する。
【００４０】
図４を参照すると、図２及び図３に示された装置及び方法のオペレーションを示すための特定の例が提供される。この例では、バックアップ・アーカイブ内に潜在的に含まれているデータ・セットを識別する候補リスト（cand_list）が、データ・セット{d1、d2、d3、d4、d5、d6、d7、d8、d9、d12、d13、d14、d16、d18、d22、d27、d28、d32}を含む。バックアップ・アーカイブから復元されることが望ましいデータ・セットを識別するフィルタ・リスト（filt_list）は、データ・セット{d2、d3、d4、d5、d6、d7、d16、d27、d28、d32}を含む。オペレーション{not(cand_list XORfilt_list)}使用して計算され得る検索リスト（srch_list）は、データ・セット{!d1、!d8、!d9、!d12、!d13、!d14、!d18、!d22}を含む。前述ように、検索リストは、バックアップ・アーカイブを検索するときに無視（即ち、スキップ）されるべきデータ・セットを識別する。
【００４１】
前述のように、バックアップ・アーカイブに実際に含まれているデータ・セットは未知であることがある。この例のために、バックアップ・アーカイブは、バックアップ・リスト（back_list）に示されるように、データ・セット{d1、d2、d4、d8、d9、d18、d32}を含むものと仮定する。フィルタ・リスト及びバックアップ・リストを使用して、バックアップ・アーカイブから復元されるデータ・セットは、復元リスト（rest_list）に示されるように、{d2、d4、d32}を含むであろう。実際には、それらのデータ・セットがすべて復元されるまで、復元リストは未知であろう。
【００４２】
図４に示されるサンプル・データを使って、フィルタ・リストにおいて識別されたデータ・セットをバックアップ・アーカイブから復元しようとするためにいくつかの異なる方法が使用可能である。これらの方法は図５及び図７に示される。具体的には、図５の（Ａ）及び（Ｂ）は、バックアップ・アーカイブを検索するための第１の非理想的方法（方法１）を示す。図６の（Ａ）及び（Ｂ）は、バックアップ・アーカイブを検索するための第２の非理想的方法（方法２）を示す。最後に、図７の（Ａ）及び（Ｂ）は、バックアップ・アーカイブを検索するための極めて効率的な方法（方法３）を示す。
【００４３】
図５の（Ａ）及び（Ｂ）を参照すると、方法１は復元されることを求められている特定のデータ・セットのヘッダを検索する検索基準を作成するステップを含む。この方法は２つの理由で低劣なパフォーマンスをもたらす。第１に、検索の最小数は、フィルタ・リストにおけるデータ・セットの数を、常に検索され得るデータ・セットの数によって除したことにより得られる値に等しい。これは、フィルタ・リストにおけるデータ・セットの数が復元リストにおけるデータ・セットの数より大きいことがあるので、必要以上の検索を行わせることがある。第２に、この方法は、復元されるべきデータ・セットを見落とすことがある。
【００４４】
例えば、アプローチ１を使用して、（図４のバックアップ・リスト（back_list）に示されるように）バックアップ・アーカイブ５００を検索することを考察することにする。この例のために、検索コマンドは３つの検索ストリングしかを入力として受容し得ないものと仮定する。図５の（Ａ）及び（Ｂ）に示されるように、この方法を使用すると、検索ストリング（d2、d3、及びd4）を入力として使用する第１の検索（Ｓ１）はテープの始まりにおいて開始し、検索ストリングの１つと一致するデータ・セットに遭遇するときに停止する。この例では、第１の検索（Ｓ１）はデータ・セットd2において停止してそれを復元するであろう。ストリング（d3、d4、及びd5）を入力として使用する第２の検索（Ｓ２）は、データ・セットd2の終りから継続し、データ・セットd4において停止してそれを復元するであろう。ストリング（d5、d6、及びd7）を入力として使用する第３の検索（Ｓ３）は、データ・セットd4の終りから継続するであろう。しかし、バックアップ・アーカイブ５００がd5、d6、又はd7を含まないので、検索Ｓ３は失敗するであろう。これは、それは、テープの始めまでテープが巻き戻されることを必要とするテープの終りに検索Ｓ３を遭遇させるであろう。ストリング（d16、d27、及びd28）を入力として使用するが第４の検索（Ｓ４）はデータ・セットd4から継続するであろうが、バックアップ・アーカイブ５００がd16、d27、又はd28を含まないので、機能しなくなるであろう。この検索は、テープがテープ開始点まで巻き戻されることを必要とするテープ終了点に遭遇するであろう。ストリング（d32）を入力として使用する第５の検索（Ｓ５）は、データ・セットd4から継続し、データ・セットd32において停止してそれを復元するであろう。
【００４５】
図５の（Ａ）に示されるように、方法１の主な欠点は、この方法が、バックアップ・アーカイブ５００内にあり得る又はあり得ないデータ・セットを検索するということである。これは、或るデータ・セットが検索基準で識別されたデータ・セットと一致するかどうかを判断するために、バックアップ・アーカイブ５００全体を検索にスキャンさせなければならない。これの影響は、その後の検索がバックアップ・アーカイブ５００の始めから検索を再開しなければならないということである。これは、恐らくテープの巻き戻しを必要とするであろう。これは、非効率的な方法であり、テープ・ヘッドにテープの同じ部分を何回も通過させることがあり得る。
【００４６】
図６の（Ａ）及び（Ｂ）を参照すると、方法２は、バックアップ・アーカイブ内に置かれ得る任意のデータ・セットのヘッダを検索することを含む。この方法は、幾つかのケースにとっては受容可能であるが、復元されるべきデータ・セットの数（即ち、フィルタ・リストにおけるデータ・セットの数）がバックアップ・アーカイブ５００におけるデータ・セットの数よりもはるかに少ない場合、機能が低下することがあり得る。
【００４７】
例えば、方法２を使用して、バックアップ・アーカイブ５００を検索することを考察する。図６の（Ａ）及び（Ｂ）に示されるように、方法２を使用すると、任意のデータ・セット・ヘッダを検索する第１の検索（Ｓ１）はデータ・セットd1で停止するであろうが、それを復元しないであろう（それは、d1がフィルタ・リストにないためである）。第２の検索（Ｓ２）は、データ・セットd1から検索を続けてデータ・セットd2において停止し、それを復元するであろう（それは、d2がフィルタ・リストにあるためである）。第３の検索（Ｓ３）は、データ・セットd2の終了点から検索を続けてデータ・セットd4において停止し、それを復元するであろう。フィルタ・リストにおけるすべてのデータ・セットが復元されるか或いはテープ終了点が到達するまで、検索（Ｓ４−Ｓ７）はこのように継続するであろう。
【００４８】
方法２は有効ではあるが、データ・セットがフィルタ・リストにあるか又はないかにかかわらずバックアップ・アーカイブ５００内のすべてのデータ・セットにおいて停止するので、非効率的である。この方法におけるデータ・セットの復元は、バックアップ・アーカイブ５００における各データ・セットを、そのデータ・セットが復元されるべきものであるかどうかを判断するために、読み取ることを必要とする。これは、バックアップ・アーカイブ５００が少数のデータ・セットを含む場合には問題でないかもしれない。しかし、バックアップ・アーカイブ５００がフィルタ・リストにおけるデータ・セットの数に関して多くのデータ・セットを含む場合、このようにデータ・セットの各々を読み取り且つ検査することはかなりの処理時間及び資源を消費することがあり得る。最悪の場合、復元されるべきデータ・セットがバックアップ・アーカイブ５００における最後のデータ・セットになり得る。
【００４９】
図７の（Ａ）及び（Ｂ）を参照すると、第３の更に効率的な方法(方法３)は、検索リストにおいて識別されるデータ・セットをスキップしながら、バックアップ・アーカイブ５００内に置かれ得る任意のデータ・セットのヘッダを検索するステップを含む。この方法は、検索がバックアップ・アーカイブ５００を通して単一のパスだけを集合的に行うことを保証すると共に、バックアップ・アーカイブ５００を検索するために必要な検索の数を減らすか又は最小にするであろう。
【００５０】
例えば、検索コマンドが３つの検索ストリングを入力として受容し得ると仮定して、方法３を使ってバックアップ・アーカイブ５００を検索する場合を考察する。図７の（Ａ）及び（Ｂ）に示されるように、検索ストリング（データ・セットのヘッダ＆!d１＆!d８＆!d９）を入力として使用する第１の検索（Ｓ１）は、テープの開始点で始まり、検索ストリングの１つではないいずれかのデータ・セットのヘッダに遭遇するとき停止するであろう。この例では、第１の検索（Ｓ１）は、データ・セットd1を（それが検索ストリングの１つであるため）スキップし、データ・セットd2で停止してそれを復元するであろう。検索ストリング（データ・セットのヘッダ＆!D8＆!D9＆!D12）を入力として使用する第２の検索（Ｓ２）は、データ・セットd2の終了から検索を続け、データ・セットd4で停止してそれを復元するであろう。検索ストリング（データ・セットのヘッダ＆!D8＆!D9＆!D12）を入力として使用する第３の検索（Ｓ３）は、データ・セットd4の終りから継続するであろう。この検索は、データ・セットd8及びd9を（それらが検索ストリングによって識別されるため）スキップし、データ・セットd18で停止するであろう。しかし、d18は、それがフィルタ・リストにないので、復元されないであろう。最後に、検索ストリング（データ・セットのヘッダ＆!D22）を使用する第４の検索（Ｓ４）は、データ・セットd18から検索を継続し、データ・セットd32で停止してそれを復元するであろう。
【００５１】
図７の（Ａ）において示されるように、バックアップ・アーカイブ５００全体はこのより効率的な方法を使用して、合計４つの検索を使って検討され得る。これは、５つの検索を行う方法１及び７つの検索を行う方法２を越えた改良である。従って、方法３は、方法１及び方法２に比べて、バックアップ・アーカイブ５００を検索するために必要な検索の数を最小にするか又は減らす。更に、方法３に関連した検索は、バックアップ・アーカイブ５００を通して単一のパスしか集合的に行わず、それによって、テープを巻き戻す必要をなくする。これは、検索の失敗のためにテープを何回も巻き戻す必要のある方法１を越えた改良である。従って、方法３は、方法１に比べて処理時間を減少させ得る。
【００５２】
図中のフローチャート及びブロック図は、本発明の様々な実施例に従って、システム、方法、及びコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、及びオペレーションを示す。この点において、フローチャート又はブロック図における各ブロックは、指定された論理的機能を具現化するための１つ又は複数個の実行可能な命令を含むモジュール、セグメント、又はコードの部分を表わし得る。或る代替実施態様では、或るのブロックに記された機能は、図に記された順序を外れて生じ得るということに留意されたい。例えば、２つの連続して示されたブロックが、関連する機能によっては、実際には実質的同時に実行され得るし、或いは、いくつものブロックが時には逆の順序で実行され得る。更に、ブロック図及び／又はフローチャートの各ブロック、並びにブロック図及びフローチャートにおけるブロックの組合せが、指定された機能又は行為を遂行する特殊目的のハードウェア・ベースのシステムによって、或いは特殊目的のハードウェア及びコンピュータ命令の組合せによって具現化され得る。
【図１】
0005613252.tif 000002
【図２】
0005613252.tif 000003
【図３】
0005613252.tif 000004
【図４】
0005613252.tif 000005
【図５】
0005613252.tif 000006
【図６】
0005613252.tif 000007
【図７】
0005613252.tif 000008