(57)【要約】      （修正有）【課題】データを含まない仮想ボリューム部分の転送と保存をなくすことによって効果的に仮想ボリュームをバックアップする。【解決手段】仮想ボリュームを仮想ファイルシステム内の仮想ファイルとして表わすことにより、仮想ボリューム内の空のデータスペースを不必要にバックアップすることを避ける。ストレージシステムはストレージシステム制御モジュールのみならず、多数の仮想ボリュームと仮想ファイルシステムを含む。多数の仮想ボリューム内の各仮想ボリュームは仮想ファイルシステム内の仮想ファイルとして表わされ、各仮想ファイルは仮想ボリューム内に実際に保存されるデータを表わす。ストレージシステム制御モジュールは選択した仮想ボリュームをバックアップするのを容易にする。ストレージシステムの仮想ファイルシステムにアクセスするステップと選択した仮想ボリュームに対応する仮想ファイルを読み出すステップを含む。【選択図】図１
2010231770.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステム制御モジュール、一つ以上の仮想ボリューム及び仮想ファイルシステムを含む、ストレージシステムを備え、前記仮想ボリュームはそれぞれ前記仮想ファイルシステム内の仮想ファイルとして表わされ、該仮想ファイルはそれぞれ前記仮想ボリューム内に実際に保存されるデータを表わす、システムであって、
前記ストレージシステム制御モジュールは選択した仮想ボリュームのバックアップ操作を容易にするように構成され、選択した仮想ボリュームの該バックアップ操作は、
前記ストレージシステムの前記仮想ファイルシステムにアクセスするステップと、
前記選択した仮想ボリュームに対応する前記仮想ファイルを読み出すステップと、
からなり、
前記ストレージシステム制御モジュールは更に、選択した仮想ボリュームのリストア操作を容易にするように動作可能であり、選択した仮想ボリュームの該リストア操作は、
前記ストレージシステムの前記仮想ファイルシステムにアクセスするステップと、
前記選択した仮想ボリュームを表わす仮想ファイルを生成するステップと、
からなる
ことを特徴とするシステム。
【請求項２】
各仮想ボリュームは論理ブロックアドレス（ＬＢＡ）によりアドレス指定される、
ことを特徴とする請求項１のシステム。
【請求項３】
選択した仮想ボリュームの前記リストア操作は更に、前記仮想ファイルが生成中の間に該選択した仮想ボリュームへの読み出し／書き込みアクセスを禁止するステップからなる、
ことを特徴とする請求項１のシステム。
【請求項４】
前記仮想ファイルシステム内の各仮想ファイルはブロックリストを備える、
ことを特徴とする請求項１のシステム。
【請求項５】
各仮想ボリュームはファイルブロックに分割され、前記仮想ファイルを表わす前記ブロックリストはデータを含む該ファイルブロックを備える、
ことを特徴とする請求項４のシステム。
【請求項６】
前記仮想ファイルシステム内の各仮想ファイルは更にブロック割り当てテーブル（ＢＡＴ）を備え、該ＢＡＴは前記ファイルブロックリスト内に含まれる各ファイルブロックに対するオフセットを含む、
ことを特徴とする請求項５のシステム。
【請求項７】
前記システムは更に、前記バックアップ及びリストア操作を実行するためにＮＦＳプロトコルの要求を前記ストレージシステムに送信するバックアップサーバを備える、
ことを特徴とする請求項６のシステム。
【請求項８】
正常、バックアップ、リストア中を含むグループから選択される、前記仮想ファイルシステム内の各仮想ファイルの状態を示す仮想ファイルテーブルを更に備える、
ことを特徴とする請求項７のシステム。
【請求項９】
選択した仮想ボリュームの前記バックアップ操作は更に、該選択した仮想ボリュームへの書き込みアクセスを禁止するステップからなる、
ことを特徴とする請求項１のシステム。
【請求項１０】
ユーザからバックアップ又はリストア要求を受信するユーザインタフェースを提供する管理サーバを更に備える、
ことを特徴とする請求項１のシステム。
【請求項１１】
選択した仮想ボリュームの前記バックアップ操作は更に、前記仮想ボリュームのスナップショットを取得するステップからなり、該スナップショットの使用により前記仮想ファイルが生成される、
ことを特徴とする請求項１のシステム。
【請求項１２】
各仮想ボリュームは各セクタを特定する論理ブロックアドレス（ＬＢＡ）によりアドレス指定される、
ことを特徴とする請求項１１のシステム。
【請求項１３】
前記仮想ファイルシステム内の各仮想ファイルはブロックリストを備える、
ことを特徴とする請求項１１のシステム。
【請求項１４】
各仮想ボリュームはファイルブロックに分割され、前記仮想ファイルを表わす前記ブロックリストはデータを含む該ファイルブロックを備える、
ことを特徴とする請求項１３のシステム。
【請求項１５】
前記仮想ファイルシステム内の各仮想ファイルは更にブロック割り当てテーブル（ＢＡＴ）を備え、該ＢＡＴは前記ファイルブロックリスト内に含まれる各ファイルブロックに対するオフセットを含む、
ことを特徴とする請求項１４のシステム。
【請求項１６】
前記バックアップ及びリストア操作はＮＦＳプロトコルを使用して実行される、
ことを特徴とする請求項１５のシステム。
【請求項１７】
正常、バックアップ、リストア中を含むグループから選択され、前記仮想ファイルシステム内の各仮想ファイルの状態を示す仮想ファイルテーブルを更に備える、
ことを特徴とする請求項１６のシステム。
【請求項１８】
管理サーバとバックアップサーバを更に備え、前記管理サーバはユーザからバックアップ又はリストア要求を受信して前記バックアップサーバに該要求を転送する、
ことを特徴とする請求項１１のシステム。
【請求項１９】
複数の前記仮想ボリューム内の各仮想ボリュームに対する前記ＬＢＡ、前記ＬＢＡの割り当て情報、及びスナップショット割り当て情報、を含む仮想ボリュームテーブルを更に備える、
ことを特徴とする請求項１２のシステム。
【請求項２０】
更にアプリケーションサーバを備え、選択した仮想ボリュームの前記バックアップ操作が実行される時、前記アプリケーションサーバは該選択した仮想ボリュームのスナップショットが維持されているならば前記選択した仮想ボリュームに関する読み出し及び書き込みアクセスを許可する、
ことを特徴とする請求項１９のシステム。
【請求項２１】
ストレージシステム制御モジュール、一つ以上の仮想ボリューム及び仮想ファイルシステムを備える、ストレージシステムによって遂行される方法であって、前記仮想ボリュームはそれぞれ前記仮想ファイルシステム内の、前記仮想ボリューム内に実際に保存されるデータをそれぞれ表わす仮想ファイルとして表わされ、前記方法は、選択した仮想ボリュームのバックアップ操作を遂行するステップと、選択した仮想ボリュームのリストア操作を遂行するステップからなり、
選択した仮想ボリュームの前記バックアップ操作は、
前記ストレージシステムの前記仮想ファイルシステムにアクセスするステップと、
前記選択した仮想ボリュームに対応する前記仮想ファイルを読み出すステップと、
からなり、
選択した仮想ボリュームの前記リストア操作は、
前記ストレージシステムの前記仮想ファイルシステムにアクセスするステップと、
前記選択した仮想ボリュームを表わす仮想ファイルを生成するステップと、
からなる
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は一般的にコンピュータストレージシステム内のディスクボリュームとファイルを管理するための方法と装置に関連し、具体的にはシン・プロビジョニング・ボリュームをポータブルな仮想ディスクファイルとしてエクスポーズすることにより、それらのバックアップ及びリストアを遂行する方法と装置に関連する。
【背景技術】
【０００２】
０００２    最近のコンピュータストレージシステムのある種のものは、ホストコンピュータには固定容量ディスクボリュームと認識されるものの、その実際のストレージ容量はデータがボリュームに書き込まれる際に動的に割り当てられる、“仮想ボリューム”或いは“シン・プロビジョニング・ボリューム”を備えることが可能である。ストレージ容量の割り当ての単位は、ストレージシステム内の一つ以上のディスクドライブのセグメントである“ディスクブロック”である。ストレージシステムは仮想ボリュームの各部分とディスクブロック間のマッピングを管理する。ホストコンピュータが仮想ボリュームの一部を読み出し、その部分にディスクブロックが未だ何も割り当てられていない場合には、ストレージシステムはその部分が“０”で満たされているかのように“０”を返送する。ディスクブロックは必要に応じて割り当てられるので、ストレージボリュームの無データ領域にディスク容量を割り当てる必要性をなくすことでディスクドライブの容量を有効に使用できる。更に、そのようなストレージシステムの容量は多数の仮想ボリュームによって柔軟に共有され得る。管理者は、ボリュームが生成される時点では各ボリュームに必要な容量を正確に予測する必要がなく仮想ボリュームは申告したサイズに基づいてではなく、実際にデータを保存するのに使用される容量に従って容量を消費するので、それによって非常に大きな仮想ボリュームを生成することができる。動的な容量割り当ての裏付けとなる基本的な技術概念はＵＳ特許６，７２５，３２８号に開示されており、その引用をもって本明細書の記載に代えるものとする。
【０００３】
０００３    シン・プロビジョニングを実現するために使用できる別な技術として、しばしば仮想計算機によってアクセスされる“仮想ディスク”がある。仮想ディスクは仮想計算機が認識するディスクボリューム内のすべてのブロックを含むファイルである。仮想ディスクファイルフォーマットのあるものはディスクボリュームの使用済みの部分のみを含むことができる。仮想ディスクファイルフォーマットの一つの例が“ＶＭウェアオープンＶＭＤＫ仕様の応用”（http://download3.vmware.com/vmworld/2006/dvt9699.pdf）に開示されており、その引用をもって本明細書の記載に代えるものとする。別な例が“仮想ハードディスクイメージフォーマット仕様書”（http://download.microsoft.com/download/f/f/e/ffef50a5-07dd-4cf8-aaa3-442c0673a029/Virtual％20Hard％20Disk％20Format％20Spec_10_18_06.doc）に開示されており、その引用をもって本明細書の記載に代えるものとする。“オープン仮想計算機フォーマット仕様書”（http://www.vmware.com/pdf/ovf_spec_draft.pdf）はその引用をもって本明細書の記載に代えるものであるが、そこに開示された標準フォーマットを定義することによって仮想ディスクファイルの相互運用を実現する取り組みがなされつつある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
０００４    多数の小さなデータファイルの形式でディスクボリューム内に保存されるデータをバックアップするために、ホストコンピュータ（バックアップサーバ）はボリュームベースのバックアップ操作を遂行する。換言すれば、ホストコンピュータは各ファイルに対するファイルシステムプロセスのオーバヘッドをなくすために、単純にボリュームイメージ全体を読み出す。もしホストコンピュータが仮想ボリュームのボリュームベースのバックアップを遂行するならば、ホストコンピュータは、ボリュームのどの部分がディスクブロックを指定したか認識しないので、何もディスクブロックを指定していない部分を含むボリューム全体を読み出さなければならない。当業者には当然のことながら、何もディスクブロックを指定していない部分の転送と保存は、かかる部分は何もデータを含まず、従ってバックアップされる必要がないので、システムリソースの浪費となる。もし割り当てられない部分のサイズが大であれば、ネットワーク帯域、バックアップストレージ容量及び時間の相当量が無意味に消費される。
【０００５】
０００５    従って、何らデータを含まない仮想ボリューム部分の転送と保存をなくすことにより仮想ボリュームのバックアップを有効に実現するシステムと方法が必要になる。
【課題を解決するための手段】
【０００６】
０００６    本発明の手法は仮想ボリュームバックアップに関連する上記及び他の問題の一つ以上を実質的に取り除く方法とシステムに向けられる。
【０００７】
０００７    本発明の一態様によれば、ストレージシステム制御モジュール、管理サーバ、バックアップサーバのみならず一つ以上の仮想ボリュームと仮想ファイルシステムを含むストレージシステムが提供される。各仮想ボリュームは仮想ファイルシステム内の仮想ファイルとして表わされ、ここで各仮想ファイルは仮想ボリューム内に実際に保存されるデータを表わしており、ストレージシステム制御モジュールは選択された仮想ボリュームのバックアップ操作を容易にするように構成され、この操作は、ストレージシステムの仮想ファイルシステムにアクセスするステップと、選択した仮想ボリュームに対応する仮想ファイルを読み出すステップを含む。ストレージシステム制御モジュールは更に、選択した仮想ボリュームのリストア操作を容易にするように構成され、この操作は、ストレージシステムの仮想ファイルシステムにアクセスするステップと、選択した仮想ボリュームを表わす仮想ファイルを生成するステップを含む。
【０００８】
０００８    本発明の更なる態様は、ストレージシステム制御モジュール、一つ以上の仮想ボリューム及び仮想ファイルシステムを含むストレージシステムが遂行する方法を含む。ここで各仮想ボリュームは仮想ファイルシステム内の仮想ファイルとして表わされる。各仮想ファイルは仮想ボリューム内に実際に保存されるデータを表わす。この方法は選択した仮想ボリュームのバックアップ操作を遂行するステップを含み、この操作はストレージシステムの仮想ファイルシステムにアクセスするステップ、選択した仮想ボリュームに対応する仮想ファイルを読み出すステップを含む。この方法は更に、選択した仮想ボリュームのリストア操作を遂行するステップを含み、この操作はストレージシステムの仮想ファイルシステムにアクセスするステップ、及び選択した仮想ボリュームを表わす仮想ファイルを生成するステップを含む。
【０００９】
０００９    本発明に関連する更なる態様が後続する説明の中で述べられ、一部は説明から自明となり、或いは本発明の実施から修得されるであろう。本発明の態様は以下の詳細な説明及び付随する請求項で特に指摘した要素及び種々の要素と態様の組み合わせにより実現でき、達成できる。
【００１０】
００１０    当然のことながら前述の説明も後述の説明も典型的で説明のためのものに過ぎず、いかなる方法であれ請求される発明またはその出願を限定するために意図したものでない。
【００１１】
００１１    付随する図面は、本明細書に組み込まれその一部を構成し、本発明の実施例を典型的に示すものであり、説明の記述と相俟って本発明の技術の原理を説明し図示する役目を果たす。具体的には以下の通りである。
【図面の簡単な説明】
【００１２】
【図１】００１２    図１は本発明の方法と装置が適用可能なコンピュータシステムの例の概観を示す。
【図２ａ】００１３    図２ａは仮想ボリュームの典型的な実施例の説明図である。
【図２ｂ】００１３    図２ｂは仮想ボリュームの典型的な実施例の説明図である。
【図３】００１４    図３は仮想ファイルシステムの典型的な実施例の説明図である。
【図４ａ】００１５    図４ａは仮想ファイルの典型的なフォーマットを示す。
【図４ｂ】００１５    図４ｂは仮想ファイルの典型的なフォーマットを示す。
【図５】００１６    図５はディスクブロックテーブルの典型的な構造を示す。
【図６】００１７    図６は仮想ボリュームテーブルの典型的な構造を示す。
【図７】００１８    図７は仮想ファイルテーブルの典型的な構造を示す。
【図８】００１９    図８はファイルイメージテーブルの典型的な構造を示す。
【図９】００２０    図９はシステム全体に及ぶ設定を含むフォーマットテーブルの典型的な構造を示す。
【図１０】００２１    図１０はストレージシステム制御プログラム１０２０１の典型的なプロセスフローを示す。
【図１１】００２２    図１１は管理要求の典型的なプロセスフローの詳細を示す。
【図１２】００２３    図１２は典型的なボリュームＩ／Ｏ要求のプロセス詳細を示す。
【図１３】００２４    図１３は典型的なＮＦＳ  ＲＥＡＤＤＩＲ操作のプロセス詳細を示す。
【図１４】００２５    図１４は典型的なＮＦＳ  ＬＯＯＫＵＰ操作のプロセス詳細を示す。
【図１５】００２６    図１５は典型的なＮＦＳ  ＧＥＴＡＴＴＲ操作のプロセス詳細を示す。
【図１６】００２７    図１６は典型的なＮＦＳ  ＲＥＮＡＭＥ操作のプロセス詳細を示す。
【図１７】００２８    図１７は典型的なファイルイメージ生成のプロセス詳細を示す。
【図１８】００２９    図１８は典型的なＮＦＳ  ＲＥＡＤ操作のプロセス詳細を示す。
【図１９】００３０    図１９は典型的なＮＦＳ  ＲＥＭＯＶＥ操作のプロセス詳細を示す。
【図２０】００３１    図２０は典型的なＮＦＳ  ＣＲＥＡＴＥ操作のプロセス詳細を示す。
【図２１】００３２    図２１は典型的なＮＦＳ  ＷＲＩＴＥ操作のプロセス詳細を示す。
【図２２】００３３    図２２は“リストア中”状態での１バイト書き込みの典型的なプロセス詳細を示す。
【図２３】００３４    図２３は“ヘッダリストア済み”状態での１バイト書き込みの典型的なプロセス詳細を示す。
【図２４】００３５    図２４は“ＢＡＴリストア済み”状態での１バイト書き込みの典型的なプロセス詳細を示す。
【図２５】００３６    図２５は“ブロックリストア済み”状態での１バイト書き込みの典型的なプロセス詳細を示す。
【図２６】００３７    図２６は第２の実施例での仮想ボリュームテーブルの典型的な構造を示す。
【図２７】００３８    図２７は第２の実施例での典型的なボリュームＩ／Ｏ要求のプロセス詳細を示す。
【図２８】００３９    図２８は典型的なＮＦＳ  ＲＥＮＡＭＥ操作のプロセスの一部を示す。
【図２９】００４０    図２９は本発明のシステムが実装可能なコンピュータプラットフォームの典型的な実施例を示す。
【発明を実施するための最良の形態】
【００１３】
００４１    以下の詳細な説明に於いて、付随する図面が参照され、図中では同一の機能要素は同様な数字で表わされる。前述の付随する図面は本発明の原理に合致する特定の実施例や実装を、説明の目的で示すものであって限定する目的でない。これらの実装は当業者が本発明を実施できるように十分詳細に記述されており、当然のことながら他の実装も利用可能であり本発明の範囲や精神を逸脱せずに構造変更及び／又は種々の要素の置換が可能である。従って以下の詳細な説明は限定的な意味で解釈されるべきでない。更に、記述される本発明の種々の実施例は汎用コンピュータ上で走行するソフトウェアの形態で或いは専用のハードウェア、又はソフトウェアとハードウェアの組み合わせの形態で実装可能である。
【００１４】
第１の実施例
００４２    本実施例では、ストレージシステム内の仮想ボリュームはＳＣＳＩプロトコルを用いたファイバーチャンネルネットワークを介してアプリケーションサーバによってアクセスされる。仮想ボリューム内のデータの位置は各セクタを特定する論理ブロックアドレス（ＬＢＡ）によってアドレス指定される。仮想ボリュームに対応する仮想ファイルはＮＦＳプロトコルを用いてローカルエリアネットワーク（ＬＡＮ）を介してバックアップサーバによってアクセスされる。仮想ファイルが読み出し中の時、即ち仮想ボリュームがバックアップ中の時、ストレージシステムはアプリケーションサーバが仮想ボリュームにデータを書き込むことを禁止する。仮想ファイルが書き込み中の時、即ち仮想ボリュームがリストア中の時、ストレージシステムはホストコンピュータがボリュームとの間でデータを読み書きすることを禁止する。ホストコンピュータの一つ（バックアップサーバ）は仮想ファイルを読み書きするのみならずＧＥＴＡＴＴＲ、ＣＲＥＡＴＥ、ＲＥＮＡＭＥ、等のようなファイル操作を送信することにより仮想ファイルと仮想ボリュームの状態も管理する。
【００１５】
システム構造
００４３    図１は本発明の方法と装置が適用可能なコンピュータシステムの例の概観を示す。コンピュータシステムはストレージシステム１０１００、ストレージエリアネットワーク（ＳＡＮ）１０００３を介してストレージシステムのファイバーチャンネルインタフェース１０１０１に接続されるアプリケーションサーバ１００００、バックアップサーバ１０００１、及び管理サーバ１０００２を含む。バックアップサーバと管理サーバはローカルエリアネットワーク（ＬＡＮ）１０００４を介してストレージシステムのＬＡＮインタフェース１０１０２に接続される。バックアップサーバはファイル操作を送信することによりストレージシステムがエクスポーズした仮想ファイルシステムにアクセスする。管理サーバは、管理者が仮想ボリュームを生成及び削除したり、ストレージシステムの任意の他の構成を変更できるように、システムの管理者にユーザインタフェースを提供する。
【００１６】
００４４    ストレージシステム１０１００はディスクコントローラ１０１０４により制御されるディスクドライブ１０１０６を持つ。ディスクドライブの容量は仮想ボリュームに割り当てられるディスクブロックに分割される。ＣＰＵ１０１０３はメモリ１０１０５内のストレージシステム制御プログラム１０２０１を実行する。ストレージシステム制御プログラムはアプリケーションサーバから送信されるＩ／Ｏ要求、バックアップサーバから送信されるＮＦＳ操作、及び管理サーバから送信される管理要求を処理する。メモリ１０１０５は管理情報を含む数種のテーブル１０２０２−１０２０６を含む。
【００１７】
００４５    図２ａと２ｂは仮想ボリュームを図示する。仮想ボリューム２０００１は固定長ボリュームとしてアプリケーションサーバにエクスポーズされるが、ディスクドライブ１０１０６内のディスクブロック２０００３はボリュームの全領域に割り当てられるわけではない。データが仮想ボリュームに書き込まれると（２０００２）、１つ以上のディスクブロックが割り当てられる（２０００４）。本実施例では、ディスクブロックのサイズは一つの仮想ボリューム内では一定であるが、仮想ボリューム間では異ならせることができる。図２ｂに示すように、仮想ボリュームの位置はボリューム内の各セクタ２０００５に対して指定されるＬＢＡによりアドレス指定される。更に、ボリューム内の位置はディスクブロックのサイズと同等サイズである各セグメント２０００６に対して指定されるボリュームブロック番号によってアドレス指定できる。この位置はファイルブロックのサイズと同等サイズである各セグメント２０００７に対して指定されるファイルブロック番号によってもアドレス指定でき、このことは後述する。
【００１８】
００４６    図３は仮想ファイルシステムを図示する。仮想ファイルシステム３００００内の唯一のディレクトリは、ストレージシステム内の仮想ボリュームに対応する仮想ファイルのエントリ３０００１を含む、ルート（／）である。仮想ファイルシステムはＮＦＳプロトコルに於いてバックアップサーバによってアクセス可能である。
【００１９】
００４７    仮想ボリュームが仮想ファイルによって表わされる時、全ボリュームは仮想ファイル内でサイズが一定である多数のセグメント（“ファイルブロック”）に分割される。ファイルブロックのサイズはディスクブロックのサイズとは異なっていても良い。更に、仮想ファイル間で異なっていても良い。仮想ファイルは、ファイルブロックに何もデータが保存されていないならばファイルブロックを含まない。
【００２０】
００４８    図４ａと４ｂは仮想ファイルのフォーマットの例を示す。仮想ファイル３０００１はヘッダ４０００１、ブロック割り当てテーブル（ＢＡＴ）４０００２、ブロックリスト４０００３、及びフッタ４０００４の４つの部分を含む。ヘッダは、仮想ファイル内に保存されるファイルブロック数４００１０、各ファイルブロックのサイズ４００１１、及び仮想ファイルが表わす仮想ボリュームのサイズ４００１２、を含む仮想ファイルに関するいくつかの管理情報を含む。ＢＡＴは以下に述べるブロックリストに含まれる各ファイルブロックに対するオフセット４０００５を含む。オフセットはファイルの開始からファイルブロックに先行するファイルブロックヘッダポイントまでオフセットされるバイトである。ファイルブロックがファイル内に含まれていないならば、オフセットは無効とマークされる。ブロックリストはファイルブロックヘッダ４０００６とファイルブロック４０００７のリストである。ファイルブロックヘッダの詳細を図４ｂに示す。ビットマップ４０００８はファイルブロック内のどのセクタが有効かを示す。例えば、ファイルブロックとセクタのサイズがそれぞれ８ＫＢと５１２Ｂであるならば、ファイルブロックは８つのセクタを含むことができる。しかしながら、あるセクタは、ディスクブロックが仮想ボリューム内のセクタに何も割り当てられないために、無効になる可能性がある。一つの実施例では、ビットマップ中の各ビットはファイルブロック内のセクタの有効性を示す。ビットマップはパッドビット４０００９を後ろにつけることができ、その結果ブロックヘッダのサイズをセクタのサイズにそろえることができる。
【００２１】
００４９    図５はディスクブロックテーブル１０２０２の構造例を示す。ストレージシステムがサポートする各ディスクブロックサイズ５０００１に対して、すべてのフリーディスクブロック５０００２、即ち任意の仮想ボリュームに割り当てられていないすべてのディスクブロック、が記録される。フリーディスクブロックが仮想ボリュームに割り当てられると、そのブロックはこのテーブルから取り除かれる。このブロックは、ボリュームから解放されれば再びこのテーブルに記録される。
【００２２】
００５０    図６は仮想ボリュームテーブル１０２０３の構造例を示す。各仮想ボリュームに対して、テーブルは仮想ボリュームＩＤ６０００１、ボリュームサイズ６０００２、及びボリュームに割り当てられるディスクブロックのサイズ６０００３を示す。このテーブルは更に、ボリューム内の各ＬＢＡ６０００４に対して、ＬＢＡに割り当てられるディスクブロック６０００５、ＬＢＡを含むボリュームブロック番号６０００６、ＬＢＡを含むファイルブロック番号６０００７も含む。
【００２３】
００５１    図７は仮想ファイルテーブルの構造例を示す。各仮想ファイルに対して、テーブルはファイルを表わす仮想ボリュームのＩＤ７０００１、ファイルのＮＦＳファイルハンドル７０００２、ファイルの状態７０００３、仮想ファイルの元の名前７０００４、仮想ファイルの現在名７０００５、仮想ファイルのサイズ７０００６、ファイル内に含まれるファイルブロック数７０００７、ファイル内のＢＡＴ領域のサイズ７０００８、ファイルブロックのサイズ７０００９、ファイルブロックヘッダのサイズ７００１０、及びファイル内のブロックリスト領域のサイズ７００１１を示す。ファイルの状態値は以下の一つにすることができる、即ち正常、バックアップ、リストア中、ヘッダリストア済み、ＢＡＴリストア済み、ブロックリストア済み、或いはリストア済み、である。仮想ファイルの元の名前はボリューム生成又はボリュームリストア（ファイル生成）時点で特定される。仮想ファイルの現在名は元の名前であるか又は、元の名前の後ろに“−ｂａｃｋｕｐ”が続いたものである。後者はこのボリュームがバックアップ中又はリストア済みであることを示す。
【００２４】
００５２    図８はファイルイメージテーブルの構造例を示す。各仮想ファイルに対して、テーブルはＮＦＳファイルハンドル８０００１、ヘッダイメージ８０００２、ＢＡＴイメージ８０００３、仮想ボリュームの各ファイルブロック番号に対するブロックヘッダイメージ８０００４、及びフッタイメージ８０００５を示す。これらのイメージ欄８０００２−８０００５は、代わりにディスクブロック内に保存されるファイルブロックを除いた、仮想ファイルの内容を保存する。
【００２５】
００５３    図９はシステム全体に及ぶ設定を含むフォーマットテーブルの構造例を示す。ディスクブロックサイズのデフォルト値９０００１及びファイルブロックサイズのデフォルト値９０００２はそれぞれ仮想ボリュームのディスクブロックサイズのデフォルト値及び仮想ファイルのファイルブロックサイズのデフォルト値を規定する。仮想ボリュームセクタサイズ９０００３及び仮想ファイルセクタサイズ９０００４はそれぞれ仮想ボリュームと仮想ファイルのセクタサイズを規定する。仮想ファイルヘッダサイズ９０００５、仮想ファイルフッタサイズ９０００６、及びＢＡＴエントリサイズ９０００７は仮想ファイルフォーマットの定義を含む。ＢＡＴエントリサイズ以外のすべてのサイズ値は本実施例では仮想ボリュームセクタサイズの倍数でなければならない。
【００２６】
プロセスフロー
００５４    図１０はストレージシステム制御プログラム１０２０１のプロセスフローを示す。ストレージシステム制御プログラムはアプリケーションサーバ、バックアップサーバ、或いは管理サーバから要求を受信する（１０００１）。もしプログラムが管理サーバから管理要求（１００００２）、アプリケーションサーバからボリュームＩ／Ｏ要求（１００００４）、或いはバックアップサーバからファイル操作（１００００６）を受信したならば、プログラムはそれぞれの要求を処理する（１０００３、１０００５、１０００７）。本実施例では、プログラムは以下のＮＦＳ操作、即ちＧＥＴＡＴＴＲ、ＲＥＡＤ、ＷＲＩＴＥ、ＲＥＮＡＭＥ、ＬＯＯＫＵＰ、ＣＲＥＡＴＥ、ＲＥＭＯＶＥ、及びＲＥＡＤＤＩＲを受け入れる。プログラムが他の要求を受信するならば、エラーを返送する（１００００８）。しかしながら他の情報を転送する他の要求を受け入れたり、それらに対するダミー応答を返送することは可能である。
【００２７】
００５５    図１１は管理要求の詳細プロセスフロー（１００００３）を示す。もし受信した要求がフォーマットテーブル内に値を取得するか設定する要求であるならば（１１０００１、１１０００３）、ストレージシステム制御プログラムはフォーマットテーブルに保存される情報を送信するか設定する（１１０００２、１１０００４）。もしプログラムが、ボリュームサイズ、ボリュームのディスクブロックサイズ、ボリュームを表わす仮想ファイルの元の名前、及びファイルブロックサイズを指定するボリューム生成要求を受信するならば（１００００５）、プログラムは仮想ボリュームを生成し（１１０００６）、ボリュームに仮想ボリュームＩＤを指定し、ボリュームを表わす仮想ファイルにファイルハンドルを生成し、それら及び要求内で指定された情報を仮想ボリュームテーブルと仮想ファイルテーブルに記録する（１１０００７、１１０００８）。もしディスクブロックサイズ及び／又はファイルブロックサイズが要求内で指定されていないならば、フォーマットテーブル内に記録されたデフォルト値が使用される。最初に、仮想ボリュームテーブル内の各ＬＢＡに対するすべてのディスクブロック割り当て６０００５は無効とマークされる。更に、ディスクブロックサイズとファイルブロックサイズに基づいて、ディスクブロック番号とファイルブロック番号がボリューム内の各ＬＢＡに対する仮想ボリュームテーブル内に記録される。仮想ファイルテーブルでは、ファイル状態と現在の仮想ファイル名はそれぞれ“正常”及び元のファイル名の値に設定される。ＢＡＴサイズは（ボリュームサイズ）＊（フォーマットテーブルのＢＡＴエントリサイズ）／（ファイルブロックサイズ）の式で計算することができる。ブロックヘッダサイズは（ファイルブロックサイズ）／（フォーマットテーブルのファイルセクタサイズ）の式で計算でき、ファイルセクタサイズに対して調整される。これらの値も又仮想ファイルテーブルに記録される。もしストレージ制御プログラムがボリューム削除要求を受信したならば（１１０００９）、プログラムは仮想ボリュームを削除してボリュームに割り当てられたすべてのディスクブロックを解放する（１１００１０）。プログラムは更に仮想ボリュームテーブル、仮想ファイルテーブル及びファイルイメージテーブル内のボリュームのエントリも削除する（１１００１１、１１００１２）。
【００２８】
００５６    図１２はボリュームＩ／Ｏ要求の詳細プロセスを示す。このシン・プロビジョニングを実現するプロセスフローのステップは仮想ファイルの状態をチェックするステップを除いては公知である。本実施例では単純化のため、ボリュームＩ／Ｏ要求は仮想ボリュームのセクタ内のデータを読み書きする。もしストレージシステム制御プログラムが仮想ボリュームに対する書き込み要求を受信し（１２０００１）、ボリュームを表わす仮想ファイルの状態が“正常”である（１２０００２）ならば、要求は受け入れられる。もし指定されたＬＢＡに何もディスクブロックが割り当てられていない（１２０００３）、即ちＬＢＡに対する割り当て情報６０００５が無効であるならば、ストレージシステム制御プログラムはＬＢＡ及び同じディスクブロック番号を持つ他のＬＢＡにディスクブロックを割り当て（１２０００４）、仮想ボリュームテーブルに情報を記録する（１２００１１）。最後に、プログラムは、指定されたＬＢＡによりアドレス指定されたディスクブロックの一部内に受信したデータを書き込む（１２０００５）。そうでない場合、もし要求が読み出し要求で（１２０００６）ファイル状態が“バックアップ”又は“正常”であるならば（１２０００７）、要求は受け入れられる。もし何もディスクブロックがＬＢＡに割り当てられないならば（１２０００８）、ストレージシステム制御プログラムはアプリケーションサーバに“０”を返送する（１２００１０）。そうでない場合は、プログラムは指定されたＬＢＡによりアドレス指定された、割り当てられたディスクブロックの一部からデータを読み出し、アプリケーションサーバに返送する（１２０００９）。
【００２９】
００５７    図１３はＮＦＳ  ＲＥＡＤＤＩＲ操作の詳細プロセスを示す。もし操作がルートディレクトリを指定する（１３０００１）ならば、ストレージシステム制御プログラムはルートディレクトリのディレクトリエントリとして仮想ファイルテーブル内の現在の仮想ファイル名のリストを返送する（１３０００２）。
【００３０】
００５８    図１４はＮＦＳ  ＬＯＯＫＵＰ操作の詳細プロセスを示す。もし操作が仮想ファイルテーブル内に記録された現在の仮想ファイル名を指定する（１４０００１）ならば、ストレージシステム制御プログラムはファイルのファイルハンドルを返送する（１４０００２）。
【００３１】
００５９    図１５はＮＦＳ  ＧＥＴＡＴＴＲ操作の詳細プロセスを示す。もし操作が仮想ファイルテーブル内に記録された現存するファイルハンドルを指定する（１５０００１）ならば、ストレージシステム制御プログラムはファイルの状態をチェックして（１５０００２）返送する。もし状態が“バックアップ”であるならば（１５０００２）、即ちファイルイメージがバックアップされるように準備が整っているならば、ストレージシステム制御プログラムは仮想ファイルテーブル内に記録された仮想ファイルのサイズ７０００６を返送する（１５０００４）。そうでない場合は、プログラムは仮想ボリュームテーブルを参照することで、仮想ファイルが表わしている仮想ボリュームのサイズを返送する（１５０００３）。
【００３２】
００６０    図１６はＮＦＳ  ＲＥＮＡＭＥ操作の詳細プロセスを示す。ＲＥＮＡＭＥ操作はバックアッププロセスの始めと終わりを制御するために使用される。更に、リストアプロセスの終わりを制御するためにも使用される。もし操作が元の名前をそのバックアップ名にリネームするように、又はバックアップ名をその元の名前にリネームするように指示する（１６０００１−１６０００４）ならば、要求は受け入れられる。もし指定された古いファイルの状態が“正常”、“バックアップ”、又は“リストア済み”でない（１６０００５）ならば、指定されたファイルはリストア中である。この場合、ストレージシステム制御プログラムはリストアプロセスを中断してボリュームに割り当てられた全ディスクブロックを解放する（１６０００６）。もしファイルが元の名前にリネームされる（１６０００７）ならば、即ち現在の状態が“バックアップ”又は“リストア済み”であり、そのファイルイメージが生成されているならば、ストレージシステム制御プログラムはファイルイメージテーブル内の指定されたファイルのエントリを削除し（１６００１１）、仮想ファイルテーブル内のファイル状態を“正常”に設定する（１６００１２）。そうでない場合、プログラムは指定されたファイルの仮想ファイルイメージを生成し（１６０００８）、ファイル状態を“バックアップ”に設定する（１６０００９）。最後に、ストレージシステム制御プログラムは現在の仮想ファイル名を指定された新たな名前に設定する（１６００１０）。
【００３３】
００６１    図１７はファイルイメージ生成（１６０００８）の詳細プロセスを示す。先ず、ストレージシステム制御プログラムは指定されたファイルに対してファイルイメージテーブル内にエントリを生成する（１７０００１）。ステップ１７０００２−１７００１０は仮想ファイルの各ファイルブロックに対するオフセットを計算して記録する。最初にストレージシステム制御プログラムは処理される必要があるファイルブロック番号（Ｂｎ）と使用済みファイルブロック数（Ｕｎ）を０に設定する（１７０００２）。プログラムは更にオフセット（Ｏｓ）の初期値を（フォーマットテーブル内に記録された仮想ファイルヘッダのサイズ＋仮想ファイルテーブル内に記録されたＢＡＴサイズ）に設定する（１７０００３）。ファイルブロック番号（Ｂｎ）のそれぞれに対し、もしファイルブロック内に含まれる任意のＬＢＡに何もディスクブロックが割り当てられていないならば（１７０００４）、ストレージシステム制御プログラムはファイルイメージテーブル内のファイルブロックＢｎのオフセットとヘッダを無効とマークする（１７０００５）。そうでない場合、プログラムは仮想ボリュームテーブル内の割り当て情報に基づいてファイルイメージテーブル内のファイルブロックヘッダのイメージを生成し記録する（１７０００６）。次いで、プログラムはファイルイメージテーブル内のファイルブロックのオフセットとしてＯｓを記録し（１７０００７）、ファイルブロックサイズとブロックヘッダサイズをＯｓに加算し、Ｕｎをインクリメントすることで次のオフセット（Ｏｓの新たな値）を計算する（１７０００８）。これらのステップは仮想ボリュームに指定されたファイルブロック番号のそれぞれに対して繰り返される（１７０００９、１７００１０）。最後に、ストレージシステム制御プログラムは使用済みファイルブロック数（Ｕｎ）、ブロックリストサイズ（Ｕｎ＊（ファイルブロックサイズ＋ファイルヘッダサイズ））、及び仮想ファイルテーブル内の仮想ファイルサイズ（仮想ファイルヘッダサイズ＋ＢＡＴサイズ＋ブロックリストサイズ＋仮想ファイルフッタサイズ）を記録し（１７００１１）、ファイルイメージテーブル内に仮想ファイルのヘッダ及びフッタイメージを生成する（１７００１２）。
【００３４】
００６２    図１８はＮＦＳ  ＲＥＡＤ操作の詳細プロセスを示す。もし指定のファイルハンドルが仮想ファイルテーブル内に存在し、ファイルの状態が“バックアップ”であるならば（１８０００１、１８０００２）、ストレージシステム制御プログラムは操作内で指定のオフセット（Ｏｓ）とバイト数（Ｂｔ）によりアドレス指定される各バイトに対してディスクブロック又はファイルイメージテーブルから指定されるバイトを読み出す（１８０００３−１８００１０、１８００１２−１８００１９）。もしＯｓが仮想ファイルの範囲外を指示するならば（１８０００４）、ストレージシステム制御プログラムは何も読み出さない。もしＯｓが仮想ファイルヘッダ（１８０００５）、ＢＡＴ（１８０００６）或いは仮想ファイルフッタ（１８０００７）のバイトを指示するならば、ストレージシステム制御プログラムはファイルイメージテーブル内のファイルヘッダイメージ（１８００１２）、ＢＡＴイメージ（１８００１３）或いはファイルフッタイメージ（１８０００８）のそれぞれから指定のバイトを読み出す。イメージ内の読み出し対象バイトはＯｓから仮想ファイルフォーマット内の先行する構造のサイズを引き算することでアドレス指定できる。例えば、フッタイメージ内のバイトは（Ｏｓ−ファイルヘッダのサイズ−ＢＡＴのサイズ−ブロックリストのサイズ）で求められるオフセットによりアドレス指定できる。Ｏｓがブロックリスト内のファイルブロックヘッダのバイトを指示する（１８００１４）ならば、即ち（Ｏｓ−ファイルヘッダのサイズ−ＢＡＴのサイズ）％(ブロックヘッダのサイズ＋ファイルブロックのサイズ)＜ブロックヘッダのサイズであるならば、ストレージシステム制御プログラムはファイルイメージテーブルによりアドレス指定されたファイルブロックヘッダイメージから指定のバイトを読み出す（１８００１６）。そうでない場合は、プログラムは指定されたバイトを含むセクタがディスクブロックを含むか否かをチェックする（１８００１７）。セクタのＬＢＡを計算するために、ストレージシステム制御プログラムはバイト即ちＢＡＴ内に記録されたそのオフセット（Ｏｓ’）はＯｓより小さくＯｓは（Ｏｓ’＋ブロックヘッダのサイズ＋ファイルブロックのサイズ）よりも小さいバイト、を含むファイルブロックを特定する。ファイルブロックに含まれるＬＢＡは仮想ボリュームテーブル内のファイルブロック番号によって特定することができる。これらＬＢＡのうち、Ｎ＝Ｍ／(仮想ボリュームセクタのサイズ)、Ｍ＝（（Ｏｓ−ヘッダのサイズ−ＢＡＴのサイズ）％（ブロックヘッダのサイズ＋ファイルブロックのサイズ）−ブロックヘッダのサイズ）である、Ｎ番目のＬＢＡは指定のバイトを含む。ＬＢＡ内のオフセットバイトはＭ％(仮想ボリュームセクタのサイズ)として計算できる。
【００３５】
００６３    もしディスクブロックが割り当てられているならば、即ち上記で特定したＬＢＡの割り当て情報が仮想ボリュームテーブル内で無効でないならば、ストレージシステム制御プログラムはＬＢＡに割り当てられるディスクブロックから指定のバイトを読み出す（１８００１９）。そうでない場合は、プログラムはそのバイト内に含まれるデータとして“０”を使用する（１８００１８）。これらのステップは操作内で指定される各バイトに対して繰り返される（１８０００９、１８００１０）。最後にストレージシステム制御プログラムは読み出したデータを返送する（１８００１１）。
【００３６】
００６４    図１９はＮＦＳ  ＲＥＭＯＶＥ操作の詳細プロセスを示す。仮想ファイルテーブル内に指定のファイルハンドルが存在し、ファイルの状態が“正常”ならば（１９０００１、１９０００２）、ストレージシステム制御プログラムは指定の仮想ファイルによって表わされた仮想ボリューム内のすべてのディスクブロックを解放しボリュームを削除する（１９０００３）。ストレージシステム制御プログラムは更に、仮想ボリュームテーブル内のボリューム、仮想ファイルテーブル及びファイルイメージテーブルのエントリも削除する（１９０００４、１９０００５）。
【００３７】
００６５    図２０はＮＦＳ  ＣＲＥＡＴＥ操作の詳細プロセスを示す。ＣＲＥＡＴＥ操作はリストアプロセスの開始を制御するために使用される。本実施例では、生成対象の仮想ファイルの名前は“−ｂａｃｋｕｐ”を後ろにつけなければならず（２００００１）、リネームされる時に任意の他の仮想ファイルの名前と同一になってはいけない（２０００１０）。もし指定のファイル名が仮想ファイルテーブル中に現在のファイル名として存在し（２００００２）、その状態が“正常”でなく（２００００３）、ＣＲＥＡＴＥ操作のモードが任意の現存ファイルが生成対象のファイルと同じ名前を持つことを禁ずることを示すＧＵＡＲＤＥＤでないならば（２００００４）、ストレージシステム制御プログラムはファイルの状態を“リストア中”に設定する（２００００５）。現存する仮想ボリュームがリストア済みになると、ボリュームに割り当てられるすべてのディスクブロックは解放され、ディスクブロック内に保存されるデータは消失する（２００００７）。ストレージシステム制御プログラムは仮想ボリュームのサイズを０に設定し、仮想ボリュームテーブル内の割り当て情報をクリアする（２００００８）。もしＥＸＣＬＵＳＩＶＥモードが指定される（２００００９）ならば、仮想ボリュームテーブルに記録されるディスクブロックサイズ及び仮想ファイルテーブルに記録されるファイルブロックサイズの現在値は修正されない。そうでない場合、即ちＵＮＣＨＥＣＫＥＤモードが指定される場合は、デフォルト値が設定される（２０００１６、２０００１７）。仮想ファイルテーブル内のディスクブロック及びファイルブロック番号と仮想ファイルテーブル内のＢＡＴサイズとブロックヘッダサイズも又デフォルト値に基づいて再設定される。
【００３８】
００６６    もし生成対象のファイルが現存するいかなる仮想ボリュームも表わさない新たなファイルであれば、ストレージシステム制御プログラムはサイズが０の新たな仮想ボリュームを生成し、それに対して仮想ボリュームＩＤを指定する（２０００１１）。プログラムは更に、仮想ボリュームテーブル及び仮想ファイルテーブル内にエントリも生成し、更にＮＦＳ操作内で指定される情報とデフォルト値に基づいて生成したボリュームに関する情報も記録する（２０００１２−２０００１７）。最後に、ストレージシステム制御プログラムはファイルイメージテーブル内にボリュームのエントリを生成する（２０００１８）。
【００３９】
００６７    図２１はＮＦＳ  ＷＲＩＴＥ操作の詳細プロセスを示す。本実施例では、単純にするために、リストアプロセスに於いてデータはファイルの始めからファイルの終わりまで連続的にファイルに書き込まれる。即ち、図４ａに示すようにファイルはヘッダ、ＢＡＴ、ブロックリスト、及びフッタの順に書き込まれる。ブロックリストエントリ内で、ファイルブロックに先行して先ずブロックヘッダが書き込まれる。もしデータが書き込まれるのが連続的でないならば、データバッファリングのような公知の技術を使用してそれらを処理することが可能である。更に、本実施例では、書き込み対象ファイルは有効な仮想ファイルフォーマットになっているものと仮定している。もしフォーマットが無効であるならば、チェックサムやディジタル署名のような公知の技術を使用して無効を検知することができる。もし指定されたファイルハンドルが仮想ファイルテーブル内に存在し（２１０００１）、ファイルの状態が“正常”でも“バックアップ”でもない（２１０００２）のであれば、操作は受け入れられる。ＮＦＳ  ＲＥＡＤ操作と同様に、ストレージシステム制御プログラムは操作内で指定されるオフセット（Ｏｓ）とバイト数（Ｂｔ）によりアドレス指定される各バイトに対して処理する（２１０００３）。更にファイルイメージテーブル又はディスクブロック内に書き込まれる位置はＲＥＡＤ操作の説明に於いて述べたのと同様の計算によって特定することができる。ファイル状態に基づいて（２１０００４、２１０００６、２１０００８、２１００１０）、各バイトはそれぞれ異なった処理をされる（２１０００５、２１０００７、２１０００９、２１００１１）。
【００４０】
００６８    図２２は“リストア中”状態での１バイト書き込みの詳細プロセスを示す。指定のバイトがファイルイメージテーブル内のヘッダイメージに書き込まれる（２２０００１）。もしヘッダ全体が書き込まれる（２２０００２）ならば、ストレージシステム制御プログラムはヘッダから仮想ボリュームサイズ、ファイルブロックサイズ及び、使用済みファイルブロック数を抽出しそれらを仮想ボリュームテーブル及び仮想ファイルテーブル内に記録する。更に、抽出した値に基づいて仮想ファイルテーブル内のＢＡＴサイズ、ファイルブロックサイズ、ブロックヘッダサイズ、ブロックリスト、及び仮想ファイルサイズ、のみならず仮想ボリュームテーブル内のファイルブロック番号を計算し記録する（２２０００３−２２０００５）。最後に、プログラムはファイル状態を“ヘッダリストア済み”に設定する（２２０００６）。
【００４１】
００６９    図２３は“ヘッダリストア済み”状態での１バイト書き込みの詳細プロセスを示す。指定のバイトがファイルイメージテーブル内のＢＡＴイメージに書き込まれる（２３０００１）。もしＢＡＴ全体が書き込まれる（２３０００２）ならば、ストレージシステム制御プログラムはファイル状態を“ＢＡＴリストア済み”に設定する（２３０００３）。
【００４２】
００７０    図２４は“ＢＡＴリストア済み”状態での１バイト書き込みの詳細プロセスを示す。ＲＥＡＤ操作の説明に於いて述べた計算によってＯｓはファイルブロックヘッダ、ファイルブロック、或いは仮想ボリュームセクタ内の、ファイルブロック番号、ＬＢＡ、及びオフセットバイトに変換できる。ストレージシステム制御プログラムは指定のバイトのファイルブロック番号を特定する。ストレージシステム制御プログラムは、もしブロック番号Ｎ（２４０００１）とＯｓがファイルブロックヘッダ内のバイトを指示していることを見出したならば（２４０００２）、ファイルイメージテーブル内のブロックヘッダイメージにそのバイトを書き込む（２４００１１）。そうでない場合は、プログラムは、ファイルブロック内にそのバイトを含むセクタを特定し、ファイルブロックヘッダ内のビットマップを参照することによりセクタが有効か否かチェックする（２４０００３）。もしセクタが無効であれば、そのバイトも又無効であり、書き込まれる必要がない。そうでない場合は、ストレージシステム制御プログラムは指定のバイトを含むＬＢＡを計算する（２４０００４）。ＬＢＡに何もディスクブロックが割り当てられていない（２４０００５）ならば、プログラムは仮想ボリュームのディスクブロックサイズに等しいサイズのフリーディスクブロックを選択し、そのディスクブロックをそのＬＢＡ又はディスクブロック番号が同一である他のＬＢＡに割り当てて、仮想ボリュームテーブル内に割り当て情報を記録する（２４０００６、２４０００７）。プログラムは割り当てたディスクブロックにバイトを書き込み（２３０００８）、すべてのファイルブロックが書き込まれれば（２４０００９）、ファイル状態を“ブロックリストア済み”に設定する（２４００１０）。
【００４３】
００７１    図２５は“ブロックリストア済み”状態での１バイト書き込みの詳細プロセスを示す。指定のバイトがファイルイメージテーブル内のフッタイメージに書き込まれる（２５０００１）。もしフッタ全体が書き込まれたならば（２５０００２）、ストレージシステム制御プログラムはファイル状態を“リストア済み”に設定する（２５０００３）。本実施例では、フッタは何も情報を持たない。しかしながら、それが何か有用な情報を含んでいるならば、フッタ全体が書き込まれた後にそれを抽出することができる。ファイル状態が“リストア済み”に設定された後、バックアップサーバは仮想ファイルを“−ｂａｃｋｕｐ”のない元の名前にリネームすることができ、ＲＥＮＡＭＥ操作の説明の中で述べたように仮想ボリュームをアプリケーションサーバからアクセス可能にする。
【００４４】
００７２    上で示すように、仮想ボリュームは仮想ファイルシステム内の仮想ファイルとしてエクスポーズされる。仮想ボリュームのボリュームベースのバックアップはディスクブロックが何も割り当てられていないボリュームセグメントを読み出すことなく仮想ファイルを読み出すことにより遂行できる。バックアップとリストアプロセスはバックアップサーバから仮想ファイルを含む仮想ファイルシステムにＮＦＳ操作を送信することにより制御される。仮想ファイルのフォーマットが仮想ディスクファイルフォーマットであるならば、本発明は仮想ボリュームを仮想ディスクファイルに変換したりその逆を行ったりするために使用することができる。更に、この変換は、そのすべてのＬＢＡがディスクブロックを持つ仮想ボリュームと考えられる、通常の物理ボリュームに適用することができる。本実施例では、仮想ボリュームと仮想ファイルは単一のストレージシステムにより提供される。しかしながらネットワークにより接続され管理テーブル内に記録された情報を交換する、別個の２つのストレージシステムとして実装することも可能である。そのような場合、一方のストレージシステムは仮想ボリュームを提供し、他方は仮想ファイルシステムを提供する。更に、ＨＴＴＰ、ＷｅｂＤＡＶ、及びＣＩＦＳのような数種のプロトコルが仮想ファイルにアクセスするために使用できる。更に、操作内で指定されるオフセットとバイト数がセクタにそろえられるならば、１バイトの代わりに仮想ボリュームセクタの単位でＲＥＡＤ及びＷＲＩＴＥ要求を処理することが可能である。
【００４５】
第２の実施例
００７３    本実施例では、仮想ボリュームがバックアップ中である時、アプリケーションサーバは仮想ボリューム内のデータを読み書きすることができる。仮想ボリュームのスナップショットがストレージシステムにより維持され、仮想ファイルがスナップショットに基づいて生成される。第１の実施例との相違点を以下に述べる。
【００４６】
００７４    図２６は本実施例での仮想ボリュームテーブルの構造例を示す。仮想ボリューム内の各ＬＢＡに対して、ＬＢＡの割り当て情報６０００５に加えて、そのスナップショットの割り当て情報（２６０００２）及び書き込みフラグ（２６０００１）が示されており、ここで書き込みフラグは、その値が“ＴＲＵＥ”の場合にはスナップショットが生成された後にＬＢＡが書き込まれるかどうか指示するものである。
【００４７】
００７５    図２７は第２の実施例でのボリュームＩ／Ｏ要求の詳細プロセスを示す。本実施例ではステップ２７０００１−２７０００６が図１２に付加される。もしストレージシステム制御プログラムが仮想ボリュームへの書き込み要求を受信し、その仮想ファイルの状態が“バックアップ”であるならば（２７０００１）、ストレージシステム制御プログラムは、フラグはこの書き込み要求とスナップショットが以前の書き込み要求によって生成が完了する前にＬＢＡが書き込まれることを示すので、指定のＬＢＡの書き込みフラグがＴＲＵＥの場合に（２７０００２）仮想ボリュームの割り当てられたディスクブロックにデータを書き込む。そうでない場合は、ストレージシステム制御プログラムはＬＢＡの書き込みフラグをＴＲＵＥに設定する（２７０００３）。もしＬＢＡがディスクブロックに割り当てられていれば（２７０００４）、ストレージシステム制御プログラムはＬＢＡ及びディスクブロック番号が同一の他のＬＢＡのスナップショットを取得するためにフリーディスクブロックを割り当て、仮想ボリュームテーブル内に割り当て情報２６０００２を記録する（２７０００５）。プログラムは更に、スナップショットが元のボリュームイメージを維持するように、データを仮想ボリュームのディスクブロックに書き込む前にスナップショットの割り当てられたディスクブロックにＬＢＡ内の元のデータをコピーする（２７０００６）。
【００４８】
００７６    図２８はＮＦＳ  ＲＥＮＡＭＥ操作のプロセスの一部を示す。本実施例では、図１６のステップ１６０００７と１６０００８の間にステップ２８０００１が挿入される。更にステップ２８０００２が１６００１１と１６００１２の間に挿入される。ステップ２８０００１に於いて、ストレージシステム制御プログラムはすべての割り当て情報６０００５を仮想ボリュームテーブル内のスナップショット割り当て情報２６０００２にコピーする。そのことにより元の仮想ボリュームと同じイメージを含む初期スナップショットイメージが生成される。ステップ２８０００２に於いて、仮想ファイルのイメージが削除される時、スナップショットに割り当てられるすべてのディスクブロックを解放し、すべての書き込みフラグとスナップショット割り当て情報をクリアすることによってスナップショットも削除される。
【００４９】
００７７    他の要求のプロセスフローでは、すべてのファイル操作は第１の実施例の割り当て情報６０００５の代わりに仮想ボリュームテーブル内のスナップショット割り当て情報２６０００２を参照する。ストレージシステム制御プログラムは、仮想ボリュームに割り当てられたすべてのディスクブロックを解放する時に仮想ボリュームのスナップショットに割り当てられたすべてのディスクブロックを解放する。更に、プログラムはすべての割り当て情報６０００５をクリアにする時にすべてのスナップショット割り当て情報２６０００２と書き込みフラグ２６０００１をクリアする。
【００５０】
００７８    本実施例では、仮想ボリュームのスナップショットは維持され、その結果アプリケーションサーバは、バックアップ中に仮想ボリュームとの間でデータを読み書きすることができる。
【００５１】
典型的なコンピュータプラットフォーム
００７９    図２９は本発明の手法の実施例が実装可能なコンピュータ／サーバシステム２９００の実施例を示す。システム２９００はコンピュータ／サーバプラットフォーム２９０１、周辺デバイス２９０２及びネットワークリソース２９０３を含む。
【００５２】
００８０    コンピュータプラットフォーム２９０１はコンピュータプラットフォーム２９０１の種々の部位に渡って情報を通信するデータバス２９０４又は他の通信メカニズム、及び情報を処理し他の計算や制御業務を遂行するためのバス２９０１と接続されるプロセッサ２９０５を含むことができる。コンピュータプラットフォーム２９０１は更に、プロセッサにより実行される命令のみならず種々の情報を保存するためにバス２９０４に接続される、ランダムアクセスメモリ（ＲＡＭ）又は他の動的ストレージデバイスのような揮発性ストレージ２９０６も含む。揮発性ストレージ２９０６は更に、プロセッサ２９０５による命令の実行の間に一時的な変数や他の中間情報を保存するためにも使用可能である。コンピュータプラットフォーム２９０１は更に、種々のシステム構成パラメータのみならず基本入出力システム(ＢＩＯＳ)のようなプロセッサ２９０５に対する静的情報や命令を保存するためのバス２９０４に接続されるリードオンリーメモリ（ＲＯＭ又はＥＰＲＯＭ）又は他の静的なストレージデバイス２９０７を含むことができる。磁気ディスク、光ディスク、又は半導体フラッシュメモリデバイスのような永続性ストレージデバイス２９０８が情報や命令を保存するために提供され、バス２９０１に接続される。
【００５３】
００８１    コンピュータプラットフォーム２９０１は、コンピュータプラットフォーム２９０１のシステム管理者又はユーザに情報を表示するために、陰極線管（ＣＲＴ）、プラズマディスプレイ、又は液晶ディスプレイ（ＬＣＤ）のようなディスプレイ２９０９をバス２９０１を介して接続することができる。英数字やその他のキーを含む入力デバイス２９１０がプロセッサ２９０５に情報とコマンド選択を通信するためにバス２９０４に接続される。別のタイプのユーザ入力デバイスとして、プロセッサ２９０４との間で方向情報とコマンド選択を通信しディスプレイ２９０９上のカーソルの動きを制御するための、マウス、トラックボール、又はカーソル方向キーのようなカーソル制御デバイス２９１１がある。この入力デバイスは一般的に、このデバイスが平面内の位置を指定することができるように第１の軸（例えばｘ)と第２の軸(例えばｙ)の２軸に２自由度を持つ。
【００５４】
００８２    コンピュータプラットフォーム２９０１に対して追加又はリムーバブルなストレージ容量を提供するために、コンピュータプラットフォーム２９０１にバス２９０４を介して外部ストレージデバイス２９１２を接続することができる。コンピュータシステム２９００の実施例では、他のコンピュータシステムとのデータ交換を容易にするために外部リムーバブルストレージデバイス２９１２が使用可能である。
【００５５】
００８３    本発明はここで記述した技術を実装するためのコンピュータシステム２９００の利用に関連する。一つの実施例では本発明のシステムはコンピュータプラットフォーム２９０１のような計算機上に存在することができる。本発明の一つの実施例によれば、ここで記述した技術は、揮発性メモリ２９０６内に含まれる一つ以上の命令の一つ以上のシーケンスを実行するプロセッサ２９０５に応答してコンピュータシステム２９００が遂行する。そのような命令は永続性ストレージデバイス２９０８のような他のコンピュータ読み取り可能媒体から揮発性メモリ２９０６へと読み込むことができる。揮発性メモリ２９０６内に含まれる命令シーケンスの実行はプロセッサ２９０５にここで記述したプロセスステップを遂行させる。別の実施例では本発明を実装するために、ソフトウェア命令の代わりに或いはソフトウェア命令と組み合わせて配線接続された回路を使用することも可能である。このように、本発明の実施例はいかなるハードウェア回路とソフトウェアの任意の特定の組み合わせにも限定されない。
【００５６】
００８４    ここで使用される“コンピュータ読取可能媒体”という用語は、プロセッサ２９０５に実行のために命令を提供することに関与する任意の媒体のことを示す。コンピュータ読取可能媒体はここで記述した任意の方法及び／又は技術を実行する命令を伝えることができる計算機読取可能媒体のほんの一例である。そのような媒体は不揮発性媒体及び揮発性媒体を含むがこれらに限定されない多くの形態をとることができる。不揮発性媒体は、例えばストレージデバイス２９０８のような、光又は磁気ディスクを含む。揮発性媒体は揮発性ストレージ２９０６のような、動的メモリを含む。
【００５７】
００８５    コンピュータ読取可能媒体の一般的な形態は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、或いは任意の他の磁気媒体、ＣＤ−ＲＯＭ、任意の他の光媒体、パンチカード、紙テープ、任意の他の穴パターンを持つ物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、フラッシュドライブ、メモリカード、任意の他のメモリチップ又はカートリッジ、或いはコンピュータが読み取ることができる任意の他の媒体を含む。
【００５８】
００８６    一つ以上の命令の一つ以上のシーケンスをプロセッサ２９０５に実行のために伝える折に種々の形態のコンピュータ読取可能媒体が関与できる。例えば、命令は最初はリモートコンピュータから磁気ディスクに伝えることができる。もう一つの方法として、リモートコンピュータは命令をその動的メモリにロードし、モデムを使用して電話線を通してその命令を送信することができる。コンピュータシステム２９００に局在するモデムは電話線上のデータを受信し、データを赤外線信号に変換する赤外線トランスミッタを使用することができる。赤外線検出器は赤外線信号中に伝えられたデータを受信することができ、適切な回路がデータをデータバス２９０４上に乗せることができる。バス２９０４はデータを揮発性ストレージ２９０６に伝え、そこからプロセッサ２９０５は命令を取り出して実行する。揮発性メモリ２９０６が受信する命令は、状況に応じてプロセッサ２９０５により実行される前か後のどちらかで永続性ストレージ２９０８に保存されても良い。命令はこの技術分野で公知の多様なネットワークデータ通信プロトコルを使用してインターネットを介してコンピュータプラットフォーム２９０１へとダウンロードすることもできる。
【００５９】
００８７    コンピュータプラットフォーム２９０１は更に、データバス２９０４に接続されるネットワークインタフェースカード２９１３のような、通信インタフェースを含むこともできる。通信インタフェース２９１３はローカルネットワーク２９１５に接続されるネットワークリンク２９１４への双方向のデータ通信接続を提供する。例えば、通信インタフェース２９１３は電話線の対応するタイプにデータ通信接続を行うための統合サービスディジタルネットワーク（ＩＳＤＮ）カード又はモデムとすることができる。別な例として、通信インタフェース２９１３は互換ＬＡＮにデータ通信接続を行うためのローカルエリアネットワーク・インタフェースカード（ＬＡＮ  ＮＩＣ）とすることができる。公知の８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇやＢｌｕｅｔｏｏｔｈのような無線リンクも又ネットワークの実装に使用可能である。任意のそのような実装に於いて、通信インタフェース２９１３は種々のタイプの情報を表わすディジタルデータストリームを伝える電気的、電磁気的、光学的信号を送受信する。
【００６０】
００８８    ネットワークリンク２９１３は通常、一つ以上のネットワークを介して他のネットワークリソースに対してデータ通信を行う。例えば、ネットワークリンク２９１３はローカルネットワーク２９１５を介してホストコンピュータ２９１６、又はネットワークストレージ／サーバ２９１７に接続することができる。更に、或いはそれに代わって、ネットワークリンク２９１４はゲートウェイ／ファイアウォール２９１７を介してインターネットのような広域ネットワーク又はグローバルネットワーク２９１８に接続することができる。このようにして、コンピュータプラットフォーム２９０１は、リモートネットワークストレージ／サーバ２９１９のような、インターネット２９１８上のどこにでも存在するネットワークリソースにアクセスすることができる。一方、コンピュータプラットフォーム２９０１は更にローカルエリアネットワーク２９１５及び／又はインターネット２９１８上のどこにでも存在するクライアントがアクセスすることもできる。ネットワーククライアント２９２０と２９２１はプラットフォーム２９０１と同様のコンピュータプラットフォームを基にして自らを実装することができる。
【００６１】
００８９    ローカルネットワーク２９１５もインターネット２９１８も、ディジタルデータストリームを伝える電気的、電磁気的、又は光学的信号を使用する。コンピュータプラットフォーム２９０１との間でディジタルデータを伝える、種々のネットワークを通る信号及びネットワークリンク２９１４上にあり通信インタフェース２９１３を通る信号は情報を運ぶ搬送波の典型的な形態である。
【００６２】
００９０    コンピュータプラットフォーム２９０１はインターネット２９１８及びＬＡＮ２９１５、ネットワークリンク２９１４及び通信インタフェース２９１３を含む種々のネットワークを介してプログラムコードを含む、メッセージを送信したり、データを受信することができる。インターネットの例では、システム２９０１は、ネットワークサーバとして動作時に、インターネット２９１８、ゲートウェイ／ファイアウォール２９１７、ローカルエリアネットワーク２９１５及び通信インタフェース２９１３を介してクライアント２９２０及び／又は２９２１上で走行するアプリケーションプログラムに対して要求されたコード又はデータを伝達することもあるであろう。同様にシステムは他のネットワークリソースからコードを受信することができる。
【００６３】
００９１    受信したコードは受信した時点でプロセッサ２９０５により実行され、及び／又は後の実行のために永続性ストレージデバイス２９０８又は揮発性ストレージデバイス２９０６それぞれ内に、或いは他の不揮発性ストレージ内に保存される。このようにして、コンピュータシステム２９０１は搬送波の形式でアプリケーションコードを得ることができる。
【００６４】
００９２    本発明は何ら特定のファイアウォールシステムに限定されるものでないことはいうまでもない。本発明のポリシーベースのコンテンツ処理システムは三つのファイアウォール動作モード、特にＮＡＴ、ルート及びトランスペアレントモードのどれでも使用できる。
【００６５】
００９３    最後に、当然のことながらここで記述されたプロセスと技術は本質的にいかなる特定の装置にも関係しておらず、コンポーネントの任意の適切な組み合わせにより実装可能である。更に、種々のタイプの汎用デバイスがここで記述された技術に従って使用可能である。更にここに記述された方法のステップを遂行するのに専用の装置を構築するのが有利だと判明する場合もあり得る。本発明は特定の例に関連して記述されてきたが、この例はあらゆる点で制限的であるよりも説明に役立つように意図されている。当業者は、ハードウェア、ソフトウェア、及びファームウェアの多くの異なる組み合わせが本発明を実施するのに適切であると認識するであろう。例えば、記述されたソフトウェアはアセンブラー、Ｃ／Ｃ＋＋、ｐｅｒｌ、ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ等のような広範囲のプログラミング又はスクリプト言語で実装できる。
【００６６】
００９４    更に、本発明の他の実装が、ここで開示された本発明の明細書の検討と実施から、当業者には明らかになるであろう。記述された実施例の種々の態様及び／又はコンポーネントはシン・プロビジョニング・ボリュームを、それらをポータブルな仮想ディスクファイルとしてエクスポーズすることにより、バックアップとリストアを遂行する方法と装置の中で、単独で又は任意の組み合わせで使用できる。明細書と例は典型的なものとしてのみ考慮されるものと意図されており、本発明の真の範囲や精神は以下の特許請求の範囲により示される。
【図１】
2010231770.tif 000003
【図２ａ】
2010231770.tif 000004
【図２ｂ】
2010231770.tif 000005
【図３】
2010231770.tif 000006
【図４ａ】
2010231770.tif 000007
【図４ｂ】
2010231770.tif 000008
【図５】
2010231770.tif 000009
【図６】
2010231770.tif 000010
【図７】
2010231770.tif 000011
【図８】
2010231770.tif 000012
【図９】
2010231770.tif 000013
【図１０】
2010231770.tif 000014
【図１１】
2010231770.tif 000015
【図１２】
2010231770.tif 000016
【図１３】
2010231770.tif 000017
【図１４】
2010231770.tif 000018
【図１５】
2010231770.tif 000019
【図１６】
2010231770.tif 000020
【図１７】
2010231770.tif 000021
【図１８】
2010231770.tif 000022
【図１９】
2010231770.tif 000023
【図２０】
2010231770.tif 000024
【図２１】
2010231770.tif 000025
【図２２】
2010231770.tif 000026
【図２３】
2010231770.tif 000027
【図２４】
2010231770.tif 000028
【図２５】
2010231770.tif 000029
【図２６】
2010231770.tif 000030
【図２７】
2010231770.tif 000031
【図２８】
2010231770.tif 000032
【図２９】
2010231770.tif 000033
【外国語明細書】
2010231770000001.pdf