JP4779012B2 - 瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法 - Google Patents

瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法 Download PDF

Info

Publication number
JP4779012B2
JP4779012B2 JP2008508993A JP2008508993A JP4779012B2 JP 4779012 B2 JP4779012 B2 JP 4779012B2 JP 2008508993 A JP2008508993 A JP 2008508993A JP 2008508993 A JP2008508993 A JP 2008508993A JP 4779012 B2 JP4779012 B2 JP 4779012B2
Authority
JP
Japan
Prior art keywords
data
volume
file
storage
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008508993A
Other languages
English (en)
Other versions
JP2008539521A (ja
Inventor
ランゴ,ジェイソン,アンセル
チョ,ヨン,エウン
イーストハム,ポール,クリストパー
ツェン,リン
マンレイ,ステフェン,エル
エドワーズ,ジョン,ダブリュー,ジュニア
イングリッシュ,ロバート,エム
アカオイ,エマニュエル
Original Assignee
ネットアップ,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ネットアップ,インコーポレイテッド filed Critical ネットアップ,インコーポレイテッド
Publication of JP2008539521A publication Critical patent/JP2008539521A/ja
Application granted granted Critical
Publication of JP4779012B2 publication Critical patent/JP4779012B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Radio Relay Systems (AREA)
  • Hardware Redundancy (AREA)

Description

[発明の分野]
本発明はファイルシステムに関し、詳しくは、オン・デマンドで復元可能な不在ブロックを有する1以上のファイルを有するボリュームを含むファイルシステムに関する。
[発明の背景]
ストレージシステムは一般に、必要に応じて情報を入れたり、取り出したりすることが可能な1以上の記憶装置を備える。ストレージシステムは、とりわけ、当該システムによって提供されるストレージサービスを支援するストレージ・オペレーションを実施することにより、当該システムを機能的に編成するストレージ・オペレーティング・システムを含む。ストレージシステムは、種々のストレージ・アーキテクチャにしたがって実施することができ、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及び、クライアント又はホストコンピュータに直接取り付けられたディスクアセンブリのようなストレージ・アーキテクチャにしたがって実施される場合がある。記憶装置は通常、ディスクアレイとして編成されたディスクドライブであり、ここで、「ディスク」という用語は通常、内蔵型の回転磁気媒体記憶装置を意味する。この文脈におけるディスクという用語は、ハード・ディスク・ドライブ(HDD)やダイレクト・アクセス・ストレージ・デバイス(DASD)と同じ意味で使用される。
ディスクアレイ上での情報の格納は、ディスク空間の全体的論理配置を規定する、複数の物理ディスクからなる1以上のストレージボリュームとして実施されることが好ましい。ボリューム内のディスクは通常、1以上のグループに編成され、各グループは、RAID(Redundant Array of Independent Disks)として運用される場合がある。大半のRAID実施形態は、RAIDグループ内の所与の数の物理ディスクにわたってデータストライプを冗長書き込みし、そのストライプ状データに対する冗長情報(パリティ)を適切に記憶することにより、データ記憶の信頼性/完全性を向上させる。各RAIDグループの物理ディスクは、ストライプ状データを格納するように構成されたディスク(すなわち、データディスク)と、そのデータに関するパリティを格納するように構成されたディスク(すなわち、パリティディスク)とを含む。その後、ディスクが故障したときに、そのパリティを読み出すことで、失われたデータを復元することが可能になる。「RAID」という用語、およびその種々の実施形態は既知のものであり、D. A. Patterson、G. A. Gibson、及びR. H. Katzによる「A Case for Redundant Arrays of Inexpensive Disks (RAID)」、1988年6月、データ管理に関する国際会議論文(SIGMOD)、に開示されている。
ストレージシステムのストレージ・オペレーティング・システムは、ディスク上に格納される情報をディレクトリ、ファイル、及びブロックの階層構造として論理編成するための、ファイルシステムのような高レベルモジュールを実施する場合がある。例えば、ディスク上の各ファイルは、そのファイルの実際のデータのような情報を記憶するように構成された一組のデータ構造(すなわち、ディスクブロック)として実施される場合がある。データブロックは、ファイルシステム内においてユーザデータの格納にも、メタデータの格納にも使用される場合がある。こうしたデータブロックは、ボリュームブロック番号(vbn)空間の中で編成される。ファイルシステムは、vbn空間内におけるブロックの使用と中身をコントロールし、データブロックをvbn空間の中で論理ボリュームとして編成する。必須ではないが、各論理ボリュームは、その論理ボリューム独自のファイルシステムに関連する場合がある。ファイルシステムのサイズをnブロックとした場合、ファイルシステムは通常、ゼロからn−1までの連続した範囲のvbnから構成される。
既知のタイプのファイルシステムの1つは、ディスク上でデータを上書きしないwrite−anywhereファイルシステムである。データブロックからストレージシステムのメモリにデータブロックを取得(読み出し)し、新たなデータで「汚す」場合、書き込み性能を最適化するために、以後、そのデータブロックは、ディスク上の新たな位置に格納される。また、write−anywhereファイルシステムは、データがディスク上に実質的に連続的に配置されるように、最適に近いレイアウトを維持するように最適化される場合がある。この最適なディスクレイアウトにより、ディスクに対する効率的なアクセス・オペレーションが可能となり、特に、シーケンシャル読み出しオペレーションの場合に効率的なアクセス・オペレーションが可能となる。ストレージシステム上で動作するように構成されたwrite−anywhereファイルシステムの一例は、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているWrite Anywhere File Layout(FAFL)ファイルシステムである。
ストレージ・オペレーティング・システムは更に、RAIDシステムのようなストレージモジュールを実施し、入出力(I/O)処理にしたがって、ディスクに対する情報の記憶、及び読み出しを管理する場合がある。また、RAIDシステムは、ストレージシステムにおけるパリティ操作にも責任を負う。なお、ファイルシステムは、自分のvbn空間内のデータディスクしか「参照」することができない。パリティディスクは、ファイルシステムから隠され、したがって、RAIDシステムからしか参照することができない。RAIDシステムは通常、すべてのRAIDグループのすべてのディスクにわたってディスクブロックが連結されるように、RAIDグループを1つの大きな物理ディスク(すなわち、物理ボリューム)に編成する。そして、ファイルシステムによって管理される論理ボリュームは、RAIDシステムによって管理される物理ボリューム「上に配置」(上に分散)される。
ストレージシステムは、情報配送のクライアント/サーバモデルにしたがって動作するように構成され、それによって、多くのクライアントが、システム上に格納されたディレクトリ、ファイル、及びブロックにアクセスすることができる場合がある。このモデルでは、クライアントは、例えば、ポイント・ツー・ポイントリンク、共有ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはインターネットのような公共ネットワーク上で実施される仮想私設ネットワークを介してストレージシステムに接続するために、データベース・アプリケーションのようなコンピュータ上で実行されるアプリケーションを含む場合がある。各クライアントは、それらのネットワークを介してファイルシステム・プロトコル・メッセージ(パケットの形をしている)をストレージシステムに対して発行することにより、ファイルシステムのサービスを要求することができる。従来のコモン・インターネット・ファイル・システム(CIFS)プロトコルやネットワーク・ファイル・システム(NFS)プロトコルといった複数のファイルシステムプロトコルをサポートすることにより、ストレージシステムの利便性は向上する。
クライアント要求に応じてファイルのブロックをアクセスするとき、ファイルシステムはvbnを指定する。vbnは、ファイルシステムとRAIDシステムの境界において、物理ボリュームのRAIDグループ内の特定ディスク(ディスク、dbn)上のディスクブロック番号(dbn)に変換される。なお、クライアント要求は通常、特定のファイルオフセットに送られ、ファイルシステムは、そのファイルオフセットをファイルブロック番号(fbn)に変換する。ファイルブロック番号(fbn)は、特定ファイル内のブロックオフセットを表わす。例えば、ファイルシステムが4KBブロックを使用する場合、あるファイルのfbn6は、そのファイル内の24KBから始まり、28KBまでのデータブロックを表わし、28KBの所からfbn7が始まる。ファイルシステムは、fbnを適当なvbnに変換する。vbn空間内、およびdbn空間内の各ブロックは通常固定であり、例えば、4Kバイト(KB)のサイズを有する。したがって、dbn空間においてディスク上に格納される情報と、vbn空間においてファイルシステムによって編成される情報との間には、通常、一対一の対応がある。RAIDシステムによって指定される(disk、dbn)位置は更に、ストレージ・オペレーティング・システムのディスクドライバシステムによって、指定されたディスク上の複数のセクタに変換される(例えば、RAIDヘッダを有する4KBブロックは、512バイト、または520バイトの8個、または9個のディスクセクタに変換される)。
次に、要求されたブロックがディスクから読み出され、メモリのバッファ・キャッシュに、そのファイルのバッファ・ツリーの一部として格納される。バッファ・ツリーとは、バッファ・キャッシュに格納され、ファイルシステムによって管理されるファイルのブロックの内部表現である。簡単に言えば、バッファ・ツリーは、そのファイルのルート(トップレベル)にinodeを有する。inodeは、ファイルに関するメタデータのような情報の格納に使用されるデータ構造である。一方、データブロックは、ファイルの実際のデータの格納に使用される構造である。inodeに格納される情報には、例えば、ファイルの所有者、ファイルのアクセス・パーミッション、ファイルのサイズ、ファイルタイプ、およびそのファイルのデータブロックのディスク上の位置を示すリファレンスなどが挙げられる。ファイルデータの位置を示すリファレンスは、ポインタによって提供され、ファイルに含まれるデータの量によっては、ポインタは、間接ブロックを参照し、更に、データブロックを参照する場合がある。ファイルシステムとRAIDシステムの間においてディスク上のデータをアクセスするときの効率を上げるために、各ポインタは、vbnとして実施される場合もある。
RAIDシステムは、基礎となる物理ディスクのジオメトリに関する情報(例えば、各ディスクにおけるブロック数)を、ディスク上に格納されたRAIDラベル上に保持する。RAIDシステムは、書き込みアロケーション・オペレーションを実施する際に使用されるvbnからdisk、dbnへのマッピングを作成し、管理するために、そのジオメトリ情報をファイルシステムに提供し、読み出しオペレーションの際に、vbnをディスク位置に変換する。アクティブ・マップ、スナップマップ、空間マップ、及び概要マップのようなブロック・アロケーション・データ構造は、write−anywhereファイルシステムのようなファイルシステム内におけるブロックの使用状況を表わす。これらのマッピングデータ構造は、ジオメトリとは無関係であり、ファイルシステムの書き込みアロケータによって論理ボリュームの既存のインフラストラクチャとして使用される。ブロック・アロケーション・データ構造の例については、2002年6月27日に刊行されたBlake Lewis他による「Instant Snapshot」と題する米国特許出願公開公報第US2002/0083037A1号に記載されており、この出願は、参照により本明細書に援用される。
write−anywhereファイルシステムは通常、ファイルシステムにおけるイベント(例えば、ファイル内のブロックが汚されることなど)に応答して、論理ボリューム中のブロックの書き込みアロケーションを実施する。書き込みアロケーションを行うとき、ファイルシステムは、ブロック・アロケーション・データ構造を使用して、汚れたブロックの書き込み先となる、自分のvbn空間内にある空きブロックを選択する。パリティディスクの使用を最適化するために、選択されるブロックは通常、各RAIDグループについて複数のディスクにわたって同じ位置にあるものが選択される。例えば、パリティ・アップデート・オペレーションのオーバラッピングを可能にするために、位置的ブロックのストライプは、特にRAIDグループによって異なる場合がある。書き込みアロケーションを行うとき、ファイルシステムは、各ディスクの小さな部分(各ディスク内の深さ方向に並ぶ数ブロックに対応するもの)を走査し、実質的に、1つのRAIDグループにつき複数のストライプを規定する。具体的には、ファイルシステムは、書き込みアロケーションの際に、vbnからディスク、dbnへのマッピングを使用して、1つのRAIDグループにつき、同じストライプ上にある複数のvbnを選択する。
ストレージシステムの動作中に、ボリューム(または、ファイルやディレクトリのような他のデータコンテナ)は損傷を受けることがあり、例えば、基礎となる記憶装置に対する物理的ダメージ、ストレージシステム上で実行されているストレージ・オペレーティング・システムにおけるソフトウェア・エラー、またはボリューム上のデータを変更する不適切に実行されたアプリケーション・プログラム等によって損傷を受けることがある。そのような状況では、管理者は、そのボリュームを即座にマウントし、エキスポートし、出来る限り迅速にそのボリュームをクライアントからアクセスできるようにしたい場合がある。そのためには、そのボリューム(かなり大きい場合もある)中のデータを可能な限り早く復元しなければならない。ボリューム中のデータの復元は、例えば、記憶装置がRAID構成で使用されている場合、記憶されたパリティ情報を使用してデータを復元することよりなされることが多い。その際、復元は、オン・ザ・フライで実施される場合があり、その結果、データにアクセスできない時間は、実質的に識別できないくらいになる場合がある。
状況によっては、データの復元が不可能な場合もある。その場合、管理者には幾つかの選択肢がある。その1つは、従来の完全復元オペレーションを開始し、他のストレージシステムに格納されたある時点におけるイメージから、ボリュームの直接コピーを実施することである。大抵の場合、アプリケーション一貫性を確保するために、通常動作を開始する前に、ボリュームデータとメタデータを全てコピーしなければならない。データの完全コピーを完了するまでに要する時間は、多くの場合、ビジネスとして重要なアプリケーションを動作させる機会を失う点で、犠牲を払う。ただし、例えばテラバイトといった相当な量のデータを転送するために要する時間は数日にわたることもあるため、そのような「力づく」のデータコピーは能率が悪い。同様の欠点は、テープデバイスや他のオフラインデータ記憶装置からのデータの復元にも存在する。管理者がボリュームを即座にマウントし、エキスポートすることを可能にするもう1つの選択肢は、ボリュームの中身がホール(穴)であるホール充填ボリュームを生成することである。この文脈において、ホールとは、ゼロのブロック全体、またはボリュームのバッファツリー構造内に格納された他の所定のポインタ値を意味する。そのようなホールの使用の一例は、Vijayan Rajanによる「WRITABLE READ-ONLY SNAPSHOTS」と題する米国特許出願第10/412,478号に記載されており、その内容は、参照により本明細書に援用される。
ホール充填環境では、クライアントから要求があるまで、実際のデータが外部記憶装置から読み出されることはない。ただし、そのようなホール充填技術の顕著な欠点は、ボリュームのディスク上に適当な数のゼロ充填ブロックを生成するために、反復書き込みオペレーションを必要とすることである。つまり、データの読み出しのために追加の読み出しオペレーションを必要とするデータコンテナを実施するためにホールを使用した場合、ファイル、および/またはボリュームのバッファ・ツリー全体を作成中にディスクに書き込まなければならない。必要な書き込みオペレーションを実施するために必要となる時間は、実質的に、そのボリューム、またはファイルのサイズによって左右される。したがって、ホール充填ボリュームの作成は、ボリュームに対する迅速なデータアクセスを必要とすることから、現実的でないことが多い。
ボリュームを迅速に取り戻す(復元する)ことが必要とされるストレージ環境は、通常、ニア・ライン・ストレージサーバの使用を必要とする。本明細書において、「ニア・ライン・ストレージサーバ」という用語は一般に、長期アーカイブのために、1以上の一次ストレージシステムから転送されたデータを格納するように構成された二次ストレージシステムを意味する。ニア・ライン・ストレージサーバは、各一次ストレージシステムによって提供されるデータストレージ(例えば、ボリューム)のバックアップを提供するために、そのようなストレージ環境において使用される場合がある。その結果、ニア・ライン・ストレージサーバは通常、バルクデータ復元オペレーションを実施するように最適化されるが、個々のデータアクセス要求に対するサービスを提供するときには、性能低下を受ける。後者の状況は、一次ストレージシステムが故障に遭い、一次ストレージシステムのボリュームが損傷し、クライアントがそのボリュームのデータをアクセスするために、データアクセス要求をサーバへ送らなければならなくなったときに発生する。また、この状況では、そのようなデータアクセスを可能にするために、ニア・ライン・ストレージサーバに関連する適当なネットワークアドレスを有するようにクライアントを再設定しなければならない。
[発明の概要]
本発明は、二次ストレージシステム(外部記憶装置)からデータをオン・デマンドで復元するために使用される、ストレージシステムのファイルシステム内の散在ボリュームをインスタンス化するシステム、および方法を提供することによって、従来技術の欠点を克服する。本明細書に記載されるように、散在ボリュームは、ストレージシステムに接続されたディスク上に(すなわち、ローカルボリューム上に)ローカルに格納されていない少なくとも1つのブロック(すなわち、不在ブロック)を有する1以上のファイルを格納する。データブロック(または、ホール環境におけるゼロのブロック)を即座に読み出さないことにより、最小限の書き込みオペレーションしか必要とせずに、散在ボリュームを生成し、迅速にエキスポートすることができる。不在ブロックの欠落データは、代替の(大抵はリモートの)外部記憶装置に格納され、例えば、リモート・フェッチ・オペレーションを使用して取得される。復元されたボリュームが有効化された後、そのボリュームは、新たな書き込みオペレーションを含むいかなるファイルオペレーションについても、アクセス可能になる。受信した書き込みオペレーションは、新たなブロックを割り当て、その新たに割り当てられたブロックを参照するようにブロックポインタを変更することにより、普通に処理される。

ブロックポインタが以前に不在としてマーキングされていた場合、そのブロックポインタは、リモートに格納された古いデータがアップデータされたときに上書きされる。その結果、ストレージシステムは、そのデータをリモートに取得する必要がなくなる。
例示的実施形態として、散在ボリュームは、外部記憶装置上のデータを指し示す特殊なポインタを使用するボリューム・インフラストラクチャ・メタデータを使用して初期化される。一実施形態では、特殊なポインタ(ABSENTポインタ)を使用して、データの読み出しに特殊な読み出しオペレーションが必要であることを分かるようにする場合がある。そのようなABSENTポインタの使用は、「瞬時」の完全復元であるかのような錯覚をクライアントのようなユーザに与え、それによって、従来の完全復元オペレーションに伴う長い待ち時間を回避する。その後、そのデータは「オン・デマンドで復元」することができる。本明細書では、この用語は、データ要求が発行されるのを待ってから、ストレージシステム、及びネットワークリソースを消費して、データを取得することを意味する。そのようなデータ復元は、クライアントがストレージシステムに対して発行するデータアクセス要求に応答して達成され、または、例えばバックグラウンドプロセスの実行中にデータ要求を生成する当該システムの復元モジュールによって達成される。
本発明の1つの特徴は、復元が開始された後は、例えば、散在ボリュームに対する新たな変更(書き込みオペレーション)の受け入れを含むあらゆる処理について、散在ボリュームを利用できる点にある。そのような書き込みオペレーションは散在ボリュームに書き込まれ、ABSENTポインタはいずれも、何らかの新たなポインタによって上書きされ、それによって、読み出しオペレーションを受信したときに、データを外部記憶装置から取得するのではなく、散在ボリュームから取得しなければならないことを示すことができる。したがって、特定ブロックにSPARSE(散在)というラベルが付されていて、書き込みオペレーションがそのブロックに対するものであった場合、そのブロックはもはや、SPARSEというラベルを持たなくなる。後続の読み出しオペレーションはいずれも、新たに書き込まれたデータを返すことになり、リモート・フェッチ・オペレーションを必要としない。
本発明の一態様によれば、復元モジュールは、散在ボリュームをスキャンし、ABSENTポインタを有するブロックを探すように構成された新規の要求発生器として実施される。そのようなブロックを探すとき、要求発生器は、リモート・フェッチ・オペレーションを開始し、各ABSENTポインタによって参照される欠落データを外部記憶装置から取得する。次に、取得されたデータは、散在ボリュームに入れるために、書き込みアロケーションされる。欠落データを有する散在ボリュームを埋める動作は、ファイルシステム上に不在ブロックがなくなるまで、マルチフェイズ計画シーケンスに関連して行われることが望ましい。例えば、それらのフェイズは、inodeファイル、特殊なデータコンテナ、ディレクトリ、及びファイルを含む。代替実施形態において、それらのフェイズは、inodeファイル、特殊なデータコンテナ、ディレクトリ、及びファイルである場合がある。特殊なデータコンテナは、例えば、特殊なディレクトリのような、隠しメタデータコンテナ、またはファイルシステムメタデータコンテナからなる。この時点で、散在ボリュームは、完全に復元された独立したローカルボリュームに変わる。また、要求発生器は、そのキャッシュをクライアントが現在必要としていない取得データによって汚さないようにするために、ストレージシステムのバッファ・キャッシュをバイパスする特殊なロードパスを使用するように構成される場合がある。さらに、要求発生器は、一連のリモート・フェッチ・オペレーションに関連するデータ読み出しを改善するために、先読み機能を実施する場合がある。
本発明の他の態様によれば、ストレージシステムのポンプモジュールは、要求発生器に対するフロー制御を提供する。散在ボリューム中の欠落したデータを求める未処理の要求の数が所定の閾値に達すると、ポンプモジュールは、要求発生器を調節し、要求発生器が生成する要求の数を低速化させるか、または要求の生成を一時的に中断させる。ポンプモジュールは更に、優先順位決定ポリシーを実施する場合があり、例えば、利用可能なシステムリソースが限られているときに欠落データを求めて生成された要求よりも、クライアントが発行した要求に優先順位を与えるような優先順位決定ポリシーを実施する場合がある。
有利なことに、故障したローカルボリュームを迅速に復元するために、ストレージシステムの散在ボリュームは、インスタンス化される場合がある。その目的のために、要求発生器とポンプモジュールは協働し、ストレージシステムに物理的に記憶されていないデータに対する効率的アクセスを可能にする。データアクセス要求に応じる前に、ローカルボリューム全体のコピーを転送する必要はない。また、それらの新規のモジュールによれば、欠落ブロックを最終的に全て散在ボリューム上に確実に復元することができ、そのボリュームを効率的な方法で完全に独立したボリューム状態にすることができる。
本発明の他の利点は、復元オペレーションの最中にも、リモート外部記憶装置へのバックアップオペレーションを再開できることである。その結果、新たなクライアントアップデートをバックアップすることができ、その結果、万が一、二次災害復元オペレーションを開始しなければならない場合でも、後で復元することが可能になる。
本発明の上記の利点、及び他の利点は、添付の図面と併せて下記の説明を読むことで明らかになるであろう。図中、同じ符号は、同一の構成要素、または機能的に類似の構成要素であることを意味する。
[例示的実施形態の詳細な説明]
A.ネットワーク環境
図1は、本発明とともに有利に使用されるストレージシステム120aを含む環境100を示す略ブロック図である。ストレージシステムは、ディスクアレイ160のディスク130のような記憶装置上での情報の編成に関するストレージサービスを提供するコンピュータである。ストレージシステム120aは、システムバス125によって相互接続されたプロセッサ122、メモリ124、ネットワークアダプタ126、及びストレージアダプタ128を含む。ストレージシステム120aは、ストレージ・オペレーティング・システム200を更に含み、ストレージ・オペレーティング・システム200は、ファイルシステムのような高レベルモジュールを実施し、情報をディレクトリ、ファイル、および仮想ディスクと呼ばれる特殊なタイプのファイル(以後、「ブロック」)の階層構造としてディスク上に論理編成する。
図示の実施形態において、メモリ124は、ソフトウェア・プログラム・コードを記憶するために、プロセッサ、及びアダプタによってアドレス指定可能な複数の記憶場所を有する。メモリの一部は、本発明に関連する特定のデータ構造を記憶するためにバッファ・キャッシュ170として更に編成される。さらに、プロセッサ、及びアダプタは、そのソフトウェア・コードを実行し、データ構造を操作するように構成された処理要素、及び/又は論理回路を含む。ストレージ・オペレーティング・システム200は、その一部が通常、メモリに常駐し、それらの処理要素によって実行され、とりわけ、ストレージシステムにより実行されるストレージ・オペレーションを実施することにより、システム120aを機能的に編成する。当業者には明らかなように、本明細書に記載する本発明の技術に関連するプログラム命令の記憶、及び実行には、他の処理手段や、種々のコンピュータ読み取り可能媒体を含む他の記憶手段を使用してもよい。
ネットワークアダプタ126は、コンピュータネットワーク140を介してストレージシステム120aをクライアント110に接続するために必要とされる機械的、電気的、及び信号的回路を含む。コンピュータネットワーク140は、ポイント・ツー・ポイント接続であってもよいし、ローカル・エリア・ネットワーク(LAN)やワイド・エリア・ネットワーク(WAN)のような共有媒体であってもよい。例えば、コンピュータネットワーク140は、イーサネット(R)・ネットワークやファイバ・チャネル(FC)・ネットワークとして実施される場合がある。クライアント110は、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)のような所定のプロトコルにしたがって、データフレーム、またはデータパケットをやりとりすることにより、ネットワーク140を介してストレージシステムと通信することができる。
クライアント110は、アプリケーション112を実行するように構成された汎用コンピュータであってもよい。さらに、クライアント110は、情報配送のクライアント/サーバモデルにしたがって、ストレージシステム120aと通信する場合がある。すなわち、クライアントがストレージシステムのサービスを要求すると、ストレージシステムは、ネットワーク140を介してパケット150をやりとりすることにより、クライアントによって要求されたサービスの結果を返すことができる。クライアントは、ファイルやディレクトリの形をした情報にアクセスする場合、TCP/IP上で実施されるコモン・インターネット・ファイル・システム(CIFS)プロトコルやネットワーク・ファイル・システム(NFS)プロトコルのようなファイルベースのアクセスプロトコルを有するパケットを発行する場合がある。あるいは、クライアントは、ブロックの形をした情報にアクセスする場合、「SCSI over TCP(iSCSI)」プロトコルや、「SCSI over FC(FCP)」プロトコルのようなブロックベースのアクセスプロトコルを有するパケットを発行する場合がある。
ストレージアダプタ128は、システム120a上で実行されるストレージ・オペレーティング・システム200と協働し、ユーザ(またはクライアント)によって要求された情報を取得する。この情報は、ビデオテープ、光学媒体、DVD、磁気テープ、バブルメモリ、電気的ランダムアクセスメモリ、及びMEMSのような書き込み可能なストレージデバイス媒体、及びその他、データやパリティ情報を記憶するように構成された任意の同様の媒体のような、書き込み可能なストレージデバイス媒体の任意のタイプのアタッチド・アレイに格納することができる。ただし、本明細書に例示されるように、情報は、アレイ160のHDD、及び/又はDASDのようなディスク130に記憶することが好ましい。ストレージアダプタは、従来の高性能FCシリアルリンク・トポロジのようなI/O相互接続構成を介してディスクに接続するための入出力(I/O)インタフェース回路を含む。
アレイ160上での情報の格納は、一群の物理的ストレージディスク130を含む1以上のストレージ「ボリューム」として実施されることが好ましく、それらのディスクストレージ130が協働して、ボリューム上のボリュームブロック番号(vbn)空間の全体的論理配置を決定する。

各論理ボリュームは一般に、必須ではないが、そのボリューム独自のファイルシステムを有する。論理ボリューム/ファイル内のディスクは通常、1以上のグループに編成され、各グループは、RAID(Redundant Array of Independent Disks)として運用される場合がある。RAID−4レベル実施形態のような大半のRAID実施形態は、RAIDグループ内の所与の数の物理ディスクにわたってデータストライプを冗長書き込みし、そのストライプ状データに関するパリティ情報を適切に記憶することにより、データ記憶の信頼性/完全性を向上させる。RAID実施形態の一例は、RAID−4レベル実施形態である。ただし、当然ながら、他のタイプ、及び他のレベルのRAID実施形態を本明細書に記載する本発明の原理にしたがって使用することも可能である。
さらに、第2のストレージシステム120bがネットワーク140に相互接続される。第2のストレージシステム120bは、ニア・ライン・ストレージサーバとして構成される場合がある。ストレージシステム120bは通常、ストレージシステム120aと同様のハードウェアを備える。ただし、ストレージシステム120bは、当該ストレージシステムをニア・ライン・ストレージサーバとして使用するための改変されたストレージ・オペレーティング・システムを実行する。代替実施形態として、環境100は、複数のさらに別のストレージシステム(本明細書では、まとめて120と記す)を有する場合がある。
B.ストレージ・オペレーティング・システム
ディスク130へのアクセスを可能にするために、ストレージ・オペレーティング・システム200は、write−anywhereファイルシステムを実施する。write−anywhereファイルシステムは、仮想化モジュールと協働し、ディスク130によって提供される記憶空間を仮想化する。ファイルシステムは、情報を名前付きのディレクトリ、及びファイルの階層構造としてディスク上に論理編成する。ディスク上の各ファイルは、データのような情報を格納するように構成された一組のディスクブロックとして実施される一方、ディレクトリは、特殊なフォーマットのファイルとして実施され、その中に他のファイルやディレクトリの名前、及びそれらへのリンクを格納する。仮想化モジュールにより、ファイルシステムは、情報をブロックの階層構造としてディスク上に更に論理編成することができ、それを名前付き論理ユニット番号(LUN)としてエキスポートすることができる。
例示的実施形態として、ストレージ・オペレーティング・システムは、カリフォルニア州、サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているNetApp Data ONTAPオペレーティングシステムとして実施されることが好ましい。このオペレーティングシステムは、Write Anywhere File Layout(FAFL)ファイルシステムを実施する。ただし、当然ながら、任意の適当なストレージ・オペレーティング・システムを本明細書に記載する本発明の原理にしたがって使用するために拡張し、使用してもよい。したがって、「WAFL」という用語を使用した場合でも、この用語は、本発明の教示に適合する任意のファイルシステムを指すものとして、広い意味で解釈しなければならない。
図2は、本発明とともに有利に使用されるストレージ・オペレーティング・システム200を示す略ブロック図である。ストレージ・オペレーティング・システムは、統合ネットワーク・プロトコルスタックを形成するように編成された一連のソフトウェア層を含み、詳しくは、ストレージシステムに格納された情報をクライアントがブロックアクセスプロトコルとファイルアクセスプロトコルを使用してアクセスするためのデータパスを提供するマルチプロトコルエンジンを含む。プロトコルスタックは、IP層212、並びにそれを支持する搬送機構であるTCP層214、及びユーザ・データグラム・プロトコル(UDP)層216のようなネットワークプロトコル層に対するインタフェースを提供する、ネットワークドライバ(例えば、ギガビットイーサネットドライバ)のメディアアクセス層210を含む。ファイルシステムプロトコル層は、マルチプロトコルファイルアクセスを提供し、その目的のために、ダイレクト・アクセス・ファイル・システム(DAFS)プロトコル218、NFSプロトコル220、CIFSプロトコル222、及びハイパー・テキスト・トランスファ・プロトコル(HTTP)プロトコル224を含む。VI層226は、VIアーキテクチャを実施し、DAFSプロトコル218に必要とされるRDMAのようなダイレクト・アクセス・トランスポート(DAT)機能を提供する。
iSCSIドライバ層228は、TCP/IPネットワークプロトコルを介したブロック・プロトコル・アクセスを提供する一方、FCドライバ層230は、ストレージシステムに対するブロックアクセス要求の送受信、及び応答の送受信を提供する。FCドライバ、及びiSCSIドライバは、ブロックに対するFC固有のアクセスコントロール、及びiSCSI固有のアクセスコントロールを提供し、したがって、ストレージシステム上のブロックにアクセスするときに、iSCSIとFCPのいずれか一方への、あるいはいiSCSIとFCPの両方へのLUNのエキスポートを管理する。さらに、ストレージ・オペレーティング・システムは、I/Oオペレーションにしたがってボリューム/ディスクに対する情報の記憶、及び読み出しを管理するRAIDシステム240として実施されるストレージモジュール、及び、例えばSCSIプロトコルのようなディスクアクセスプロトコルを実施するディスクドライバシステム250を含む。
ストレージ・オペレーティング・システム200は、ファイルシステム280に対するインタフェースを提供するNRVプロトコル層295をさらに含む。ネットワーク・アプライアンス・リモート・ボリューム(NRV)・プロトコルは一般に、ディスク上にローカルに格納されていないデータブロックをリモートフェッチするために使用される。ただし、本明細書に記載するように、本発明の原理によれば、NRVプロトコルは、散在ボリューム中の不在ブロックをフェッチするためのストレージシステム間通信にも使用される場合がある。なお、代替実施形態では、NRVプロトコルの代わりに、NFSプロトコルや他の所有権のあるブロック・フェッチ・プロトコルのような従来のファイル/ブロックレベルプロトコルも、本発明の教示の範囲内で、使用される場合がある。
本発明によれば、後で詳しく説明するように、ストレージ・オペレーティング・システム200の要求発生器296は、ディスク上にローカルに格納されていないデータブロック、すなわち、ストレージシステム120aのローカルボリューム上に格納されていないデータブロックをシステム的に取得するために使用される。一方、ポンプモジュール298は、それらのデータブロックの読み出しを調節するために使用される場合がある。本明細書では、要求発生器296とポンプモジュール298が、個別のソフトウェアモジュールとして図示説明されているが、それらは、代わりに、ストレージ・オペレーティング・システム中の単一のモジュールとして一体化させてもよい。また、要求発生器とポンプモジュールは、ハードウェアで実施しても、ソフトウェアで実施しても、ファームウェアで実施してもよく、また、それらの如何なる組み合わせによって実施してもよい。
ディスクソフトウェア層を統合ネットワークプロトコルスタック層に橋渡するのは、ファイルシステム280によって実施される仮想化システムである。ファイルシステム280は、例えば、vdiskモジュール290、及びSCSIターゲットモジュール270として実施される仮想化モジュールと通信する。vdiskモジュール290は、ファイルシステム280の上に層として形成され、ユーザ(例えば、システム管理者)がストレージシステムに対して発行したコマンドに応答して、ユーザ・インタフェース(UI)275のような管理インタフェースによるアクセスを可能にする。SCSIターゲットモジュール270は、FCドライバ230、iSCSIドライバ228と、ファイルシステム280との間に配置され、ブロック(LUN)空間とファイルシステム空間との間の仮想化システムの変換層として機能する。その際、LUNは、ブロックとして表わされる。UI275は、それらの種々の層、及びシステムに対する管理者、又はユーザによるアクセスが可能となるような態様で、ストレージ・オペレーティング・システムの上に配置される。
ファイルシステムは、例えば、ディスクのような記憶装置に格納された情報にアクセスするための論理ボリューム管理機能を提供するメッセージベースのシステムである。すなわち、ファイルシステム280は、ファイルシステム・セマンティックを提供するだけでなく、通常ならばボリューム・マネージャに関連する機能も提供する。そのような機能には、(1)ディスクの集合化、(2)ディスクの記憶帯域幅の集合化、(3)ミラーリング、及び/又はパリティ(RAID)のような信頼性保証が挙げられる。ファイルシステム280は、WAFLファイルシステム(以後、「write−anywhereファイルシステム」)を実施する場合がある。このファイルシステムは、例えば、4キロバイト(KB)ブロックを使用し、インデックス・ノード(「inode」)を使用してファイル、及びファイル属性(例えば、作成時刻、アクセス・パーミッション、サイズ、及びブロック位置など)を識別するオン・ディスク・フォーマット表現を有する。ファイルシステムは、ファイルを使用して、ファイルシステムのレイアウトを表わすメタデータを記憶する。そのようなメタデータファイルには、とりわけ、inodeファイルがある。ディスクからinodeを読み出すために、ファイルハンドル、すなわち、inode番号を含む識別子が使用される。
簡単に言えば、write−anywhereファイルシステムのinodeは全て、inodeファイルの中に編成される。ファイルシステム(fs)infoブロックは、ファイルシステム上の情報のレイアウトを指定するためのものであり、ファイルシステムのすべての他のinodeを含むファイルのinodeを含む。各論理ボリューム(ファイルシステム)はfsinfoブロックを有し、fsinfoブロックは、例えばRAIDグループ内の固定位置に記憶されることが好ましい。ルートfsinfoブロックのinodeは、inodeファイルのブロックを直接参照(指し示す)場合もあれば、inodeファイルの間接ブロックを参照し、さらに、その間接ブロックが、inodeファイルのブロックを直接参照する場合もある。inodeファイルの各直接ブロックの中にはinodeが埋め込まれ、各inodeは、間接ブロックを参照し、さらに、その間接ブロックが、ファイルのデータブロックを参照する場合がある。
動作時には、クライアント110からの要求は、コンピュータネットワーク140を介してパケット150としてストレージシステム120aに転送され、そこで、その要求はネットワークアダプタ126により受信される。(層210、又は層230の)ネットワークドライバは、そのパケットを処理し、必要に応じて、それをネットワークプロトコル層、及びファイルアクセス層に渡して更なる処理を施した後、それをwrite−anywhereファイルシステム280に渡す。ここで、ファイルシステムは、要求されたデータが「コア内」になければ、すなわち、バッファ・キャッシュ170内になければ、要求されたデータをディスク130からロード(読み出し)するためのオペレーションを生成する。このオペレーションは例えば、ファイルシステム280のLoad_Block()関数284として実施される場合がある。

情報がキャッシュ内になければ、ファイルシステム280は、inode番号を使用してinodeファイル内を検索し、適当なエントリにアクセスし、論理vbnを取得する。そして、ファイルシステムは、その論理vbnを含むメッセージ構造をRAIDシステム240に渡す。論理vbnは、ディスク識別子、及びディスクブロック番号(ディスク、dbn)にマッピングされ、ディスクドライバシステム250の適当なドライバ(例えば、SCSI)に送信される。ディスクドライバは、指定されたディスク130からそのdbnをアクセスし、要求されたデータブロック(複数の場合もあり)をバッファ・キャッシュ170にロードし、ストレージシステムによって処理する。要求が完了すると、ストレージシステム(及び、オペレーティング・システム)は、ネットワーク140を介してクライアント110に返答を返す。
ファイルシステム280は通常、ディスクから1以上のブロックを読み出すためのLoad_Block()関数284を備える。これらのブロックは、読み出し要求に応答して読み出される場合もあれば、例えばファイルに対する先読みアルゴリズムによって読み出される場合もある。後で詳しく説明するように、ファイルのバッファツリー内の要求されたブロックの中に、特殊なABSENT(不在)値(不在ブロックを意味する)を有するものがあれば、Load_Block()関数284は、例えばNRVプロトコルを使用してその不在ブロックを適当な外部記憶装置から読み出すためのフェッチ・オペレーションを開始する。ブロック(何らかのデータブロックを含む)を読み出した後、Load_Block()関数284は、要求されたデータを返す。NRVプロトコルの詳細については、Jason Lango 他による「ARCHITECTURE FOR SUPPORT OF SPARSE VOLUMES」と題する、上で参照した米国特許出願に記載されている。ただし、リモート外部記憶装置からデータを読み出すことが可能なものであれば、例えば、NFSプロトコルを含めて、任意の他の適当なファイルベース、又はブロックベースのプロトコルを本発明とともに有利に使用することが可能である。また、ファイルシステムは、例えば、ファイルを最初にアクセスするときにinode、及びファイル・ジオメトリを読み出すためのLoad_Inode()関数292をさらに含む場合がある。
また、クライアント要求がストレージシステムにおいて受信されたときにデータストレージアクセスを実施するために必要となる上記のストレージ・オペレーティング・システム層の中を通るソフトウェアパスは、代わりに、ハードウェアで実施してもよい。すなわち、本発明の代替実施形態では、ストレージアクセス要求データパスは、フィールド・プログラマブル・ゲート・アレイ(FPGA)や特定用途向け集積回路(ASIC)の中に実現される論理回路として実施される場合がある。この種のハードウェア実施形態によれば、クライアント110により発行された要求に応答してストレージシステム10によって提供されるストレージサービスの性能を向上させることができる。また、本発明のさらに別の実施形態では、アダプタ126、128の処理要素は、プロセッサ122からパケット処理オペレーションやストレージアクセスオペレーションの負荷の一部、または全部を取り除くように構成され、それによって、システムにより提供されるストレージサービスの性能を向上させる場合がある。当然ながら、本明細書に記載する種々の処理、アーキテクチャ、及び手順は、ハードウェアで実施しても、ファームウェアで実施しても、ソフトウェアで実施してもよい。
本明細書では、「ストレージ・オペレーティング・システム」という用語は、ストレージシステムにおいてストレージ機能を、例えばデータアクセスを管理する機能を実施するためのコンピュータ実行可能コードを意味し、ファイルサーバの場合、このコードは、ファイルシステム・セマンティックを実施する場合がある。その意味で、ONTAPソフトウェアは、マイクロカーネルとして実施されるそのようなストレージ・オペレーティング・システムの一例であり、WAFLファイルシステムセマンティックを実施し、データアクセスを管理するためのWAFL層を有している。ストレージ・オペレーティング・システムは、UNIXやWindows NTのような汎用オペレーティングシステム上で動作するアプリケーションとして実施してもよいし、あるいは、機能設定機能を備えた汎用オペレーティングシステムにおいて、その機能を本明細書に記載するストレージ・アプリケーションにあわせて設定したものであってもよい。
さらに、当業者には明らかなように、本明細書に記載する本発明のシステム、及び方法は、ストレージシステム120として実施され、又は、ストレージシステム120を含むように実施される、スタンドアロンのコンピュータ、及びその一部を含めて、いかなるタイプの特殊目的(例えば、ファイルサーバ、ファイラ、またはマルチプロトコル・ストレージ・アプライアンス)のコンピュータ、及び汎用コンピュータにも適用できるものと考えられる。本発明とともに有利に使用されるマルチプロトコル・ストレージ・アプライアンスの一例は、2002年8月8日に出願された「MULTI-PROTOCOL STORAGE APPLIANCE THAT PROVIDES INTEGRATED SUPPORT FOR FILE AND BLOCK ACCESS PROTOCOLS」と題する米国特許出願第10/215,917号に記載されている。さらに、本発明の教示は、種々のストレージシステムアーキテクチャに適合させることができ、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及びクライアント又はホストコンピュータに直接取り付けされたディスクアセンブリに適合させることができる。したがって、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置またはシステムに関連する任意のサブシステムだけでなく、それらの構成も含むものとして広い意味で解釈しなければならない。
C.ファイルシステムの編成
例示的実施形態として、write−anywhereファイルシステムでは、ファイルは、ディスク130に格納されるように構成されたinodeデータ構造として表現される。図3は、inode300を示す略ブロック図である。inode300は、メタデータ部310、及びデータ部350を有することが好ましい。各inode300のメタデータ部310に格納される情報は、ファイルを表わし、したがって、そのファイルのタイプ(例えば、通常、ディレクトリ、仮想ディスク)312、そのファイルのサイズ314、そのファイルのタイムスタンプ(例えば、アクセス、及び/又は変更)316、及びそのファイルの所有者、すなわちユーザ識別子(UID318)、及びグループID(GID320)を含む。ただし、各inodeのデータ部350の中身は、タイプフィールド312に規定されたファイル(inode)のタイプに応じて、異なる解釈をされる場合がある。例えば、ディレクトリinodeのデータ部350は、ファイルシステムによってコントロールされるメタデータを有する一方、通常inodeのデータ部は、ファイルシステムデータを有する。後者の場合、データ部350は、そのファイルに関連するデータの表現を含む。
具体的には、通常のオン・ディスクinodeのデータ部350は、ファイルシステムデータ、又はポインタを含む場合があり、後者は、そのファイルシステムデータの格納に使用されるディスク上の4KBデータブロックを参照する。ディスク上のデータをアクセスするときのファイルシステムとRAIDシステム240の間の効率を高めるために、各ポインタは、論理vbnであることが望ましい。inodeのサイズが限られている場合(例えば、128バイト)、64バイト以下のサイズのファイルシステムデータは、その全部が、そのinodeのデータ部の中に表現される。ただし、ファイルシステムデータのサイズが64バイトよりも大きく、かつ64KB以下である場合、そのinode(第1レベルinode)のデータ部は、最大で16個のポインタを有し、各ポインタが、ディスク上の4KBブロックを参照する。
また、データのサイズが64KBよりも大きく、且つ64メガバイト(MB)以下である場合、inode(例えば、第2レベルinode)のデータ部350における各ポインタは、最大で1024個のポインタを有する間接ブロック(例えば、第1レベルブロック)を参照し、各ポインタが、ディスク上の4KBデータブロックを参照する。64MBよりも大きなサイズのファイルシステムデータの場合、inode(例えば、第3レベルinode)のデータ部350における各ポインタは、最大で1024個のポインタを有する二重間接ブロック(例えば、第2レベルブロック)を参照し、各ポインタが、間接ブロック(例えば、第1レベルブロック)を参照する。さらに、その間接ブロックは、1024個のポインタを有し、各ポインタが、ディスク上の4KBデータブロックを参照する。ファイルをアクセスするときに、ファイルの各ブロックは、ディスク130からバッファ・キャッシュ170へロードされる場合がある。
オン・ディスクinode(又は、ブロック)をディスク130からバッファ・キャッシュ170へロードするとき、それに対応するコア内構造が、そのオン・ディスクinodeに埋め込まれる。例えば、点線で囲まれたinode300(図3)は、オン・ディスクinode構造のコア内表現を示している。このコア内表現は、そのオン・ディスク構造にメモリ上のデータ(ただし、ディスク上にはない)の管理に必要な補足的情報を加えたものを格納するための、メモリブロックである。補足的情報は、例えば、ダーティビット360を含む場合がある。例えば、書き込みオペレーションによる命令にしたがってinode(またはブロック)内のデータが更新/変更された後、変更されたデータは、ダーティビット360を使用して、汚れたデータとしてマーキングされ、その後、そのinode(ブロック)はディスク上に「フラッシュ」(書き込み)することができるようになる。inode、及びinodeファイルを含む、WAFLファイルシステムのコア内フォーマット構造、及びオンディスクフォーマット構造については、1998年10月6日に発行されたDavid Hitz 他による「METHOD FOR MAINTAINING CONSISTENT STATES OF A FILE SYSTEM AND FOR CREATING USER-ACCESSIBLE READ-ONLY COPIES OF A FILE SYSTEM」と題する、上で援用した米国特許第5,819,292号に開示、及び記載されている。
図4は、本発明とともに有利に使用されるファイルのバッファ・ツリーの一実施形態を示す略ブロック図である。バッファ・ツリーは、バッファ・キャッシュ170の中にロードされ、write−anywhereファイルシステム280によって管理されるファイル(例えば、ファイル400)のブロックの内部表現である。埋め込みinodeのようなルート(トップレベル)inode402は、間接(例えば、レベル1)ブロック404を参照する。なお、ファイルのサイズによっては、更に別のレベルの間接ブロック(例えば、レベル2やレベル3)が存在する場合もある。間接ブロック(及び、inode)は、そのファイルの実際のデータの格納に使用されるデータブロックを最終的に参照するポインタ405を有する。すなわち、ファイル400のデータはデータブロックに格納され、それらのデータブロックの位置が、そのファイルの間接ブロックに格納される。各レベル1間接ブロック404は、1024個ものデータブロックを参照するポインタを有する場合がある。ファイルシステムの「write−anywhere」な性質によれば、それらのブロックは、ディスク130上のどこに置かれる場合もありうる。
基礎となる物理ボリュームをストレージシステムの1以上の仮想ボリューム(vvol)に割り当てるファイルシステムレイアウトが与えられる。そのようなファイルシステムレイアウトの一例は、John K. Edwards他により出願され、ネットワーク・アプライアンス・インコーポレイテッドに譲渡された「EXTENSION OF WRITE ANYWHERE FILE SYSTEM LAYOUT」と題する米国特許出願第10/836,817号に記載されている。基礎となる物理ボリュームは、ストレージシステムの例えばRAIDグループのような1以上のディスクグループからなる集合体である。集合体は、その集合体独自の物理ボリュームブロック番号(pvbn)空間を有し、そのpvbn空間内においてブロックアロケーション構造のようなメタデータを管理する。各vvolは、そのvvol独自の仮想ボリュームブロック番号(vvbn)空間を有し、そのvvbn空間内においてブロックアロケーション構造のようなメタデータを管理する。各vvolは、コンテナファイルに関連するファイルシステムであり、コンテナファイルは、vvolによって使用されるすべてのブロックを有する、集合体内のファイルである。また、各vvolは、データブロック、及び、他の間接ブロック又はデータブロックを指し示すブロックポインタを含む。
一実施形態として、pvbnは、vvolに格納されたファイル(例えば、ファイル400)のバッファツリー内で、ブロックポインタとして使用される。この「ハイブリッド」vvol実施形態は、親間接ブロック(例えば、inode、又は間接ブロック)にpvbnを挿入することしか必要としない。論理ボリュームの読み出しパス上において、「論理」ボリューム(vol)infoブロックは、1以上のfsinfoブロックを参照する1以上のポインタを有し、さらに、各fsinfoブロックが、inodeファイル、及びそれに対応するinodeバッファ・ツリーを指し示す。ブロックの適当な位置を見付けるためのpvbn(vvbnではなく)にしたがって、vvol上の読み出しパスも、一般に同じである。この文脈において、vvolの読み出しパス(及び、対応する読み出し性能)は、物理ボリュームのものと実質的に同じである。pvbnからディスク、dbnへの変換は、ストレージ・オペレーティング・システム200のファイルシステム/RAIDシステム境界において行われる。
例示するデュアルvbnハイブリッド(「フレキシブル」)vvol実施形態では、pvbnとそれに対応するvvbnとの両方が、ファイルのバッファ・ツリー内の親間接ブロックに挿入される。すなわち、他のブロック、例えば、レベル1(L1)間接ブロックやレベル0(L0)ブロックのような他のブロックへのポインタ有する大半のバッファ・ツリー構造では、各ブロックポインタについて、pvbnとvvbnが、ペアとして記憶される。図5は、本発明とともに有利に使用されるファイル500のバッファ・ツリーの一実施形態を示す略ブロック図である。埋め込みinodeのようなルート(トップレベル)inode502は、間接(例えば、レベル1)ブロック504を参照する。なお、ファイルのサイズによっては、更に別のレベル(例えば、レベル2やレベル3)の間接ブロックが存在する場合もある。間接ブロック(及び、inode)は、ファイルの実際のデータの格納に使用されるデータブロック506を最終的に参照するpvbn/vvbnポインタ対構造508を有する。
pvbnは、集合体のディスク上の位置を参照する一方、vvbnは、vvolのファイル内の位置を参照する。間接ブロック504内のブロックポインタ508のようなpvbnを使用は、読み出しパスにおける効率を提供する一方、vvbnブロックポインタの使用は、必要なメタデータに対する効率的なアクセスを提供する。すなわち、ファイルのブロックを開放するとき、ファイル内の親間接ブロックは、直ぐに利用可能なvvbnブロックポインタを有し、それによって、pvbnからvvbnへの変換を行うための所有者マップに対するアクセスに要する待ち時間を回避することができ、それでも、読み出しパス上において、pvbnを利用することができる。
上記のように、inodeファイルのサイズによっては(例えば、64バイトよりも大きなデータの場合)、各inodeは、自分のデータ部の中に、それらが他のブロックへのブロックポインタとして機能する64バイトを有する場合がある。従来のハイブリッドボリュームでは、それらの64バイトは、16個のブロックポインタ、すなわち、16個の4バイトブロックポインタとして実施される。例示するデュアルvbnフレキシブルボリュームの場合、inodeの64バイトは、8対の4バイトブロックポインタとして実施され、各対が、vvbn/pvbn対になっている。また、従来のボリューム、すなわち、ハイブリッドボリュームの各間接ブロックは、最大で1024個の(pvbn)ポインタを有する場合がある。一方、デュアルvbnフレキシブルボリュームの各間接ブロックは、最大で510(pvbn/vvbn)対のポインタを有する。
さらに、1以上のポインタ508は、それらのポインタ(複数の場合もあり)によて参照されるオブジェクト(複数の場合もあり)(例えば、間接ブロックやデータブロック)が、ローカルに記憶されていない(すなわち、そのボリューム上に記憶されていないこと)こと、したがって、それらのポインタを別の外部記憶装置からフェッチしなければならないことを示す特殊なABSENT(不在)値を有する場合がある。例示的実施形態として、Load_Block()関数は、各ポインタの中身を解釈し、要求されたブロックがABSENTであれば、例えばNRVプロトコルを使用して、そのデータの適当な要求(例えば、リモート・フェッチ・オペレーション)の外部記憶装置への送信を開始する。
図6は、本発明とともに有利に使用される集合体600の一実施形態を示す略ブロック図である。LUN(ブロック)602、ディレクトリ604、qtree606、及びファイル608は、デュアルvbnフレキシブルvvolのようなvvol610の中に格納され、さらに、集合体600の中に格納される。集合体600は、例えば、少なくとも1つのRAIDプレックス650により表現されるRAIDシステムの最上部に層として形成され(ストレージ構成がミラーリングであるか否かに応じて)、各プレックス650は、少なくとも1つのRAIDグループ660を含む。各RAIDグループは、例えば1以上のデータ(D)ディスク、及び少なくとも1つのパリティ(P)ディスクのような複数のディスク630を更に含む。
集合体600は、従来のストレージシステムの物理ボリュームに似ている一方、vvolは、その物理ボリューム内のファイルに似ている。すなわち、集合体600は、1以上のファイルを含む場合があり、各ファイルはvvol610を含み、vvolによって消費される記憶空間の合計は、物理ボリューム全体のサイズよりも物理的に小さい(又はそれに等しい)。集合体は、「物理的」pvbn空間を使用して、物理ボリュームのディスクによって提供されるブロックの記憶空間を規定する一方、(ファイル内の)各埋め込みvvolは、「論理的」vvbn空間を使用して、例えばファイルのようなそれらのブロックを編成する。各vvbn空間は、ファイル内の位置に対応する独立した一組の数値であり、それらの位置は、ディスク上のdbnに変換される。vvol610もまた論理ボリュームであるため、vvol610は、自分のvvbn空間内に、独自のブロックアロケーション構造(例えば、アクティブマップ、空間マップ、及び概要マップ)を有する。
コンテナファイルは、vvolによって使用されるすべてのブロックを有する、集合体中のファイルである。コンテナファイルは、vvolをサポートする(集合体の)内部機能であり、例えば、1つのvvolあたり1つのコンテナファイルが存在する。ファイルアプローチにおける純粋な論理ボリュームと同様に、コンテナファイルもまた、vvolによって使用されるすべてのブロックを有する、集合体中の隠しファイル(ユーザがアクセスすることのできない)である。集合体は、WAFL/fsid/ファイルシステムファイルやストレージラベルファイルのようなvvolのサブディレクトリを保持する隠しメタデータルートディレクトリを含む。
具体的には、物理的ファイルシステム(WAFL)ディレクトリは、集合体中の各vvolについてサブディレクトリを有し、サブディレクトリの名前は、vvolのファイルシステム識別子(fsid)になっている。各fsidサブディレクトリ(vvol)は、少なくとも2つのファイル、すなわち、ファイルシステムファイルとストレージラベルファイルを有する。ストレージラベルファイルは、例えば、従来のRAIDラベルに格納されているものと同様のメタデータを有する4kBファイルである。言い換えれば、ストレージラベルファイルは、RAIDラベルに似たものであり、したがって、例えば、vvolの名前、vvolの世界的に一意な識別子(uuid)及びfsid、vvoがオンラインであるか、作成中であるか、又は破壊中であるか等のvvolの状態に関する情報を有する。
図7は、集合体700のオン・ディスク表現を示す略ブロック図である。例えばRAIDシステム240のようなストレージ・オペレーティング・システム200は、集合体700を作成するために、pvbnの物理ボリュームを組み立てる。pvbn1、及びpvbn2は、集合体に関する「物理的」volinfoブロック702を有する。volinfoブロック702は、fsinfoブロック704へのブロックポインタを有し、各fsinfoブロック704は、集合体のスナップショットを表わす場合がある。各fsinfoブロック704は、inodeファイル706へのブロックポインタを含む。inodeファイル706は、所有者マップ710、アクティブマップ712、概要マップ714、及び空間マップ716、並びに他の特殊なメタデータファイルのような複数のファイルのinodeを含む。inodeファイル706は、ルートディレクトリ720、及び「隠し」メタデータルートディレクトリ730を更に含み、後者は、ユーザが内部のファイルを見ることができないvvolに関連するファイルを有する名前空間を含む。この隠しメタデータルートディレクトリは、ファイルシステムファイル740、及びストレージラベルファイル790を有するWAFL/fsid/ディレクトリ構造をさらに含む。なお、集合体中のルートディレクトリ720は空であり、集合体に関連するファイルはすべて、隠しメタデータルートディレクトリ730の中に編成される。
ファイルシステムファイル740は、コンテナマップとして編成されたレベル1ブロックを有するコンテナファイルとして実施されるだけでなく、vvol750として実施される種々のファイルシステムを参照するブロックポインタを更に含む。集合体700は、それらのvvol750を特殊な予約されたinode番号に維持する。各vvol750は、とりわけ、ビットマップアロケーションビットマップ構造に使用される自分のvvol空間の中に、特殊な予約されたinode番号を更に有する。上記のように、ブロックアロケーションビットマップ構造、例えば、アクティブマップ762、概要マップ764、及び空間マップ766が、各vvolに配置される。
具体的には、各vvol750は、集合体と同じinodeファイル構造/内容を有する。ただし、隠しメタデータルートディレクトリ780の中に、所有者マップ、WAFL/fsid/ファイルシステムファイル、及びストレージラベルファイルディレクトリ構造は存在しない。その目的のために、各vvol750は、1以上のfsinfoブロック800を指し示すvolinfoブロック752を有し、各fsinfoブロック800は、そのvvolのアクティブファイルシステムとともに、スナップショットを表わす場合がある。さらに、各fsinfoブロックは、inodeファイル760を指し示し、上記のような例外を除き、集合体と同じinode構造/中身を有する。各vvol750は、そのvvol独自のinodeファイル760、及び対応するinode番号を有する独立したinode空間を有し、さらに、独自のルート(fsid)ディレクトリ770、及び他のvvolとは無関係にエキスポートすることが可能なファイルのサブディレクトリを有する。
集合体の隠しメタデータルートディレクトリ730内に格納されるストレージラベルファイル790は、従来のRAIDラベルと同様の働きをする小さなファイルである。RAIDラベルは、ボリューム名のようなストレージシステムに関する物理的情報を有し、その情報は、ストレージラベルファイル790にロードされる。例えば、ストレージラベルファイル790は、関連するvvol750の名前792、vvolのオンライン/オフライン状態794、関連vvolの状態情報796(ボリュームが作成中であるか、破壊中であるか)を含む。
D.散在ボリューム
本発明は、二次記憶装置(外部記憶装置)からオン・デマンドでデータを復元するために使用される、ストレージシステムのファイルシステム内の散在ボリュームをインスタンス化するシステム、及び方法を提供することにより、従来技術の欠点を克服する。本明細書に記載するように、散在ボリュームは、ストレージシステムに接続されたディスク上にローカルに格納されていない(すなわち、ローカルボリューム上に格納されていない)少なくとも1つのデータブロック(すなわち、不在ブロック)を有する1以上のファイルを含む。データブロック(または、ホール環境におけるようなゼロのブロック)を記憶しないことにより、最小限の書き込みオペレーションで散在ボリュームを生成し、迅速にエキスポートすることができる。不在ブロックの欠落データは、代わりに、(場合によってはリモートの)外部記憶装置に格納され、例えば、リモート・フェッチ・オペレーションを使用して読み出される。
散在ボリュームは、不在ブロックを有するファイルが含まれていることを示す、ボリューム(vvol)中のオン・ディスク構造の特殊なマーキングによって識別される。図8は、オン・ディスク構造を示す略ブロック図である。このオン・ディスク構造は、例えば、fsinfoブロック800であってもよい。


fsinfoブロック800は、PCPI(Permanent Consistency Point Image)ポインタ805、散在ボリュームフラグフィールド810、及びそのinodeファイルのinode815を有し、代替実施形態では、更に別のフィールド820を有する場合がある。PCPIポインタ805は、ファイルシステムに関連するPCPI(スナップショット)へのポインタのデュアルdbn(vvbn/pvbn)対である。散在ボリュームフラグフィールド810は、fsinfoブロックによって表わされるvvolが、散在するものであるか否かを識別する。図示の実施形態では、フィールド810においてフラグがアサートされ、そのボリュームが散在するものであることを示している。散在ボリュームフラグフィールド810は、fsinfoブロックに関連するvvolのタイプを識別するタイプフィールドとして実施される場合がある。inodeファイル815のinodeは、fsinfoブロックに関連するファイルシステムのinodeファイル760(図7)へのルートレベルポインタを含むinodeを含む。
データブロックや間接ブロックのような、散在ボリューム中の特定ブロック(複数の場合もあり)が、そのボリュームを提供するストレージシステム上に置かれていないことを示すために、ファイルの適当なブロックポインタ(複数の場合もあり)は、特殊なABSENT(不在)値(複数の場合もあり)によってマーキングされる。この特殊なABSENT値は、ファイルシステムに対し、そのデータを別のソース、すなわち、外部記憶装置、(例えばニア・ライン・ストレージ・サーバ120b)から取得すべきことを更に警告する。データアクセス要求に応答し、ファイルシステム280のLoad_Block()関数284は、ファイルの適当なブロックポインタが、ABSENTとしてマーキングされているか否かを判定し、マーキングされていた場合、要求されたデータをフェッチするために、ストレージシステムからリモートの外部記憶装置へリモート・フェッチ(読み出し)・オペレーションを送信する。このフェッチ・オペレーションは、例えば、外部記憶装置に格納されたファイルの1以上のファイルブロック番号(fbns)を要求するものである。なお、本明細書の説明は、単一の外部記憶装置を例として記載しているが、本発明の原理は、単一の散在ボリュームが複数の外部記憶装置によりサポートされ、各外部記憶装置がその散在ボリュームの全部、又は一部をサポートするような環境にも適用することができる。したがって、本明細書の教示を単一の外部記憶装置に限定されるものとして解釈してはならない。
外部記憶装置は、要求されたデータを自分の所有する記憶装置から読み出し、そのデータをストレージシステムに返す。ストレージシステムは、データアクセス要求を処理し、返されたデータを自分のメモリに格納する。次に、ファイルシステムは、書き込みアロケーション手順の間に、メモリに格納されたデータをローカルディスクに「フラッシュ」(書き込み)する。これは、「ダーティ」としてマーキングされているデータに応答して実施されるか、または、そのデータを書き込みアロケーションしなければならないことをファイルシステムに伝える他の記述に応答して実施される場合がある。この手順の例示的write−anywhereポリシーによれば、ファイルシステムは、ファイルの間接ブロック(複数の場合もあり)にポインタ値(ABSENT値ではなく)を割り当てることにより、ローカルボリューム内にローカルに格納されたデータの位置(複数の場合もあり)を識別する。したがって、データアクセスのために、リモート・フェッチ・オペレーションはもはや必要とされない。
本発明とともに有利に使用される書き込みアロケーション手順の一例は、John K. Edwardsによる「EXTENSION OF WRITE ANYWHERE FILE LAYOUT WRITE ALLOCATION」と題する米国特許出願第10/836,090号に記載されており、この出願は、参照により本明細書に援用される。簡単に言えば、vvol内のブロックを書き込みアロケーションするとき、ブロックアロケーションは、フレキシブルvvolと集合体の両方に対して並列に進められ、その際、書き込みアロケータプロセス282は、集合体中の実際のpvbn、及びvvol中のvvbnを選択する。書き込みアロケータは、集合体のアクティブマップや空間マップのようなブロックアロケーションビットマップ構造を調節し、選択されたpvbnを記録するとともに、vvolの同様の構造を調節し、選択されたvvbnを記録する。vvolのvvid(vvol識別子)、及びvvbnは、集合体中の所有者マップ710の中の選択されたpvbnによって決まるエントリに挿入される。また、選択されたpvbnは、宛先vvolのコンテナマップ(図示せず)の中にも挿入される。最後に、間接ブロック、または割り当てられたブロックのinodeファイル親を、その割り当てられたブロックへの1以上のブロックポインタで更新する。更新オペレーションの内容は、vvol環境によって異なる。デュアルvbnハイブリッドvvol環境の場合、pvbnとvvbnの両方がブロックポインタとして、間接ブロック、またはinodeに挿入される。
図9は、散在ボリュームに対するデータアクセス要求(例えば、読み出し要求)に応じる手順900のステップの詳細を示すフロー図である。手順はステップ905から開始され、ステップ910へ進み、そこで、ストレージシステムは、クライアントからデータアクセス要求を受信する。ステップ915において、ファイルシステムは、そのデータアクセス要求を処理し、例えば、その要求を一組のファイルシステム・プリミティブ・オペレーションに変換する。次に、ステップ917において、適当なファイル・ジオメトリ、及びinodeデータがロードされる。これは、Load_Inode()292関数を使用して行うことができる。この関数の詳細については、Jason Lango 他による「SYSTEM AND METHOD FOR CREATING AND USING SPARSE VOLUMES」と題する上で援用した米国特許出願第(代理人文書番号第112056−0196号)、及びJason Lango 他による「ARCHITECTURE FOR SUPPORT OF SPARSE VOLUMES」と題する米国特許出願第(代理人文書番号第112056−00199号)に記載されている。一般に、ストレージシステムは、ABSENTブロックを有するファイル(又は、他のデータコンテナ)を復元するときに予約すべき適当な量の空間を、ファイルシステム・ジオメトリ、及びinodeデータから識別することができる。
ステップ920において、ファイルシステムは、ロードすべき1以上のブロックを識別し、ステップ925において、Load_Block()関数を実行し、識別されたブロックのうちの1以上をロードする。ステップ930では、ブロック(複数の場合もあり)がABSENTとしてマーキングされているか否かの判定がなされる。この判定は、例えば、ブロックを参照するブロックポインタを検査することによって行われる場合がある。ブロックが不在でなければ、手順はステップ935へと分岐し、そこでそのブロックをディスクから読み出し、次いで、ステップ940において、データアクセス要求を実施する。読み出し要求の場合、読み出し性能には、読み出されたデータをクライアントへ返すことも含まれる。そして、手順はステップ965において終了する。
一方、ブロックが不在であれば(ステップ930)、手順はステップ945へと続き、そこで、リモートデータアクセス(フェッチ)要求を外部記憶装置に送信し、要求されたブロック(複数の場合もあり)をフェッチする。このフェッチ要求は、本明細書に記載されたNRVプロトコルのような、ストレージ・オペレーティング・システムのフェッチモジュールによって発行することができる。上記のように、複数の外部記憶装置が、1つの散在ボリュームとともに使用される場合がある。複数の外部記憶装置を備えた環境の例の場合、散在設定メタデータファイル732に格納されたメタデータによって、使用すべき適当な外部記憶装置が識別される。外部記憶装置は、リモートデータアクセス要求を受信すると、ステップ950において、要求されたデータを返す。ステップ955では、外部記憶装置から読み出されたデータを用いて、データアクセス要求を実施する。次に、ステップ960において、書き込みアロケーションを実施し、読み出されたデータを1以上のローカル記憶装置に格納する。そして、手順はステップ965において終了する。
E.オン・デマンド復元(ROD)
例示的実施形態において、散在ボリュームは、外部記憶装置に格納されたデータを指し示すポインタ(例えば、ABSENTポインタ)を利用するボリューム・インフラストラクチャ・メタデータを使用して初期化される。このようなABSENTポインタの使用は、「瞬時」の完全な復元であるかのような錯覚をクライアントのようなユーザに与え、それによって、従来の完全復元オペレーションに要する長い待ち時間を回避する。次に、データは、「オン・デマンドで復元」される場合がある。本明細書では、この用語は、データ要求の発行を待ってから、ストレージシステム・リソースを消費して、データを取得することを意味する。このようなデータ復元は、クライアントがストレージシステムに対して発行したデータアクセス要求に応答して実施してもよいし、または、例えば、バックグラウンド処理中に、そのデータの要求(「要望」)を生成する、システムの復元モジュールによって実施してもよい。本発明によれば、故障したローカルボリュームを迅速に復元するために、散在ボリュームはインスタンス化される場合がある。なお、散在ボリュームの復元がいったん開始されれば、その散在ボリュームは、例えば新たな変更(書き込みオペレーション)のようなすべてのファイルシステムオペレーションで利用することが可能になる。オン・デマンド復元が開始された後は、散在ボリュームに対していかなるオペレーションを行ってもよい。例えば、散在ボリュームに対し、バックアップオペレーションが開始される場合がある。
図10は、故障したローカルボリュームを散在ボリュームを使用して迅速に復元する手順1000の詳細なステップを示すフロー図である。手順はステップ1005から開始され、ステップ1010へ進み、そこで、ストレージシステムのローカルボリュームが故障していることが判定される。故障したボリュームは、ストレージシステムの複数のボリュームのうちのいずれのボリュームであってもよい。ステップ1015では、管理者が散在ボリュームに関連する特定の情報(例えば、ボリューム名)をUI275を介してシステムに入力することにより、または自動的なプロセスにより、散在ボリュームがインスタンス化(作成)される。ステップ1020において、ストレージシステムは、その散在ボリュームを初期化するために必要なボリューム・インフラストラクチャ・メタデータを外部記憶装置からフェッチする。通常、外部記憶装置は、故障したボリュームに関するこのメタデータの最新のコピーを有することになるが、このメタデータは、PCPI、またはスナップショットから復元した方が望ましい場合もある。フェッチされたボリューム・インフラストラクチャ・メタデータは、現在のファイルシステムのバージョン、そのボリュームのトータルサイズ(inode数、及び/又はブロック数)、ルートファイルシステムディレクトリ(root_dir)の中身、及び、例えばvolinfoデータ構造やfsinfoデータ構造の中にあるファイルシステム固有のメタデータなどを含む。なお、ステップ1025においてABSENTポインタが入れられた(初期化された)inodeファイルのブロックの一部のブロックから明らかなように、散在ボリュームのファイルシステムデータは不在である。
ステップ1030において、散在ボリュームのインフラストラクチャが作成された後、そのボリュームは、いかなるクライアントアクセスについても利用可能になる。なお、ローカルボリュームの故障の後、クライアントは、復元された(散在)ボリュームが、以前キャッシュされたバージョンの「古くなった」データではなく、有効なデータで動作していることを確認するために、復元された(散在)ボリュームをアンマウントし、再マウントしなければならない場合がある。クライアントが発行した要求に対し、任意のファイルシステムデータ、及びメタデータを含むデータの復元は、図9を参照して上で説明したような方法で達成することができる。そのようなデータの復元(読み出し)には、ファイル識別(ファイルID)番号、ファイルハンドル、およびオフセット値のような論理的ファイル情報だけを、ストレージシステム(一次)と、外部記憶装置(二次)との間で転送すれば足りる。次に、外部記憶装置は、要求されたデータをストレージシステムに返し、ストレージシステムは、そのデータに対する書き込みアロケーションを実施する。その結果、上で説明した書き込みアロケーション手順にしたがって、pvbn、及びvvbnを含む「新たな」ブロックアロケーション情報が、散在ボリュームに対して作成される。したがって、システム間で何らかの書き込みアロケーションファイル(inodeマップ、概要マップ、アクティブマップなど)を転送する必要はない。そして、手順はステップ1035で終了する。
下記の例は、散在ボリュームがインスタンス化された後、故障したローカルボリュームを迅速に復元するために、クライアントシステムがデータをオン・デマンドでアクセスする方法を説明するものである。クライアントが、ストレージシステム120aによって提供される自分のディレクトリから、「document.doc」というファイルをアクセスしたいものと仮定する。ファイルシステムは、ルートディレクトリにアクセスし、そのファイルを従来の方法で探す。ファイルシステムが、そのファイルのバッファ・ツリー内において何らかの不在ブロックに遭遇した場合、それらのブロックは、本明細書に記載されるように、外部記憶装置から復元される。例えば、document.docが、「・・・/users/client/・・・」ディレクトリにあり、それらがいずれも、散在ボリューム上に存在しないものと仮定する。ファイルシステム280は、「client/」ディレクトリを見付けるために、NRVモジュール295と協働し、「users/」ディレクトリに入れるために必要なデータを外部記憶装置から取得するためのフェッチ要求を発行し、次いで、document.docファイルを置くために、「users/」ディレクトリを入れる。なお、「client/」ディレクトリは埋められるが、「users/」ディレクトリの中に見付かった他のディレクトリは、埋められることはなく、後で必要になるまで不在のままにされる(したがって、残りのディレクトリのために空間が予約される)。次に、document.docのファイルID、およびファイルハンドルを使用して、一次は、本発明にしたがってそのファイルを二次から復元することができる。一次ストレージシステムは、要求されたファイルの特定のブロック(複数の場合もあり)だけをフェッチし、ファイル全体をフェッチしないことも可能である。これが発生するのは、マイクロソフトWINDOWS環境においてファイルのサムネイルを求めるクライアント要求に応じるときである。
要求発生器
クライアント要求に応答して散在ボリューム上の不在データを復元するだけでなく、そのボリュームの中身全体を可能な限り迅速に復元し、かつ、ファイルサービスの中断を最小限に抑えることが望ましい場合がある。ボリューム全体の復元が望ましい理由は、リモートの外部記憶装置に対する各クライアントアクセスは、読み出し遅延を生じるからである。ボリュームデータがすべてローカルに復元されると、この遅延はもはや存在しなくなる。また、外部記憶装置が利用不可能になった場合、一次ストレージシステム上にまだ復元されていないデータは失われる場合がある。この脆弱性の窓は、ストレージ・オペレーティング・システム200の復元モジュールをバックグラウンドプロセスとして実施することによって低減することができる。なお、外部記憶装置が利用不可能になった場合でも、一次ストレージシステムは、外部記憶装置が利用可能になり、オン・デマンド復元プロセスが再開されるまで、データアクセスオペレーションに対するサービスを提供し続けることができる。一次ストレージシステムは、すでに復元されたデータに対する書き込みオペレーションや読み出しオペレーションを処理することができるようになる。
本発明の一態様によれば、復元モジュールは、散在モジュールをスキャンし、ABSENTポインタを有するブロックを探すように構成された新規な要求発生器296として実施される。そのようなブロックを見付けると、要求発生器は、リモート・フェッチ・オペレーションを発行し、各ABSENTポインタによって参照される欠落ブロックを外部記憶装置から取得する。次に、散在ボリュームに入れるために、取得されたデータは、書き込みアロケーションされる。欠落ブロックを有する散在ボリュームにデータを入れる処理は、マルチ・フェイズ・計画シーケンスにしたがって、ファイルシステム中の不在ブロックが無くなるまで行うことが好ましい。この時点で、散在ボリュームは、完全に復元された独立したローカルボリュームに変わる。
図11は、本発明による要求発生器を動作させる手順1100を示すフロー図である。この手順はステップ1105から開始され、ステップ1110へ進み、そこでボリュームが散在ボリュームであるか否かの判定がなされる。例示的実施形態として、この判定は、上記のようにファイルシステム280によって実施されることが好ましく、そのボリュームのfsinfoブロック800の散在ボリュームフラグフィールド810に置かれた特殊なインジケータ、又はフラグによって実施されることが好ましい。ボリュームが散在するものではない場合、手順はステップ1155で終了する。一方、ボリュームが散在ボリュームであった場合、手順はステップ1112へ進み、そこでファイルシステムは要求発生器と協働し、不在ブロックを探すために散在ボリュームの中を「探索」する。このとき、要求発生器は例えば、ファイルシステムのスキャナプロセス286を実施し、ボリューム全体を探索する。具体的には、スキャナは、inodeファイルのinodeのような最上位レベルのinodeから開始して、ファイルシステムの最後のファイルまで、その計画されたシーケンスをトラバースする。ステップ1115において、ファイルシステムの最初のファイルに所望のファイル識別子(ID)を設定することにより、スキャナは、計画されたシーケンスの最初のファイルに対して初期化される。なお、図示のWAFLファイルシステムにおいて、最初のファイルのIDは、すでに復元の済んだはずの特定のファイルシステムファイル(root_dir、アクティブマップ、など)に属する場合があり、したがって、最初の実際のファイルのファイルIDは、ゼロ(又は1)よりも大きな値になる場合がある。
ステップ1120において、スキャナは、ファイルのバッファ・ツリーのブロックをスキャンし、ステップ1125において、ABSENTポインタを有するブロックがあるか否かを、すなわち、ファイルの幾つかのブロックが不在であることが示されている否かを判定する。ブロックがABSENTポインタを有していない場合、ステップ1128において、それが、散在ボリューム中の最後のファイルであるか否かを判定する。最後のファイルであれば、手順はステップ1155で終了する。最後のファイルでなければ、例えば、ステップ1130においてファイルID番号をインクリメントすることにより、スキャナは次のファイルへと移る。そして、手順はステップ1120へと戻る。
一方、ステップ1125において不在ブロックに遭遇した場合、スキャナは、要求発生器に信号を送り、不在ブロックのデータを外部記憶装置に積極的に要求させる。他の実施形態において、スキャナは、そのデータを対象とする従来の読み出し要求を発行する場合がある。この読み出し要求は、要求発生器を呼び出すことなく、フェッチオペレーションを開始させる。ステップ1135において、要求発生器は、リモートデータアクセス(フェッチ)要求を外部記憶装置に対して発行し、要求したデータブロックをフェッチする。外部記憶装置は、リモートデータアクセス要求を受信すると、ステップ1140において、要求されたデータを返す。
次に、ステップ1145において、読み出したデータを散在ボリュームの1以上の記憶装置に格納するために、読み出したデータに対して書き込みアロケーションを実施する。通常の書き込みアロケーションの実行中に、そのファイルのバッファ・ツリーの残りの部分が作成される。次に、ステップ1128において、そのファイルが散在ボリューム中の最後のファイルであるか否かが判定される。最後のファイルであれば、手順はステップ1155で終了する。最後のファイルでなければ、ステップ1130において、スキャナは、ファイルIDをインクリメントすることによって次のファイルへ移り、ステップ1120へ戻って、そのファイルのブロックをスキャンする。このプロセスは、すべての不在ブロックの復元が完了するまで継続され、または、手順が手動で停止されるまで継続される。散在ボリューム中の最後のファイルに到達する前に、ファイルシステムは、散在ボリューム指示フィールドなどによって、最後の不在ブロックの復元が完了したことを知らされる場合がある。その場合、ファイルシステムは処理を終了する。
図12は、散在ボリュームをスキャンするときにスキャナによってトラバースされる計画シーケンスの一実施形態を示すフロー図である。ここで、スキャナは、欠落データを有する散在ボリュームを埋めるために、例えば、マルチフェイズ計画シーケンスをトラバースする場合がある。手順1200はステップ1205から開始され、ステップ1210へ進み、そこでスキャナは要求発生器と協働し、inodeファイルのブロックを復元する。その後、ステップ1215において、ディレクトリを復元し、次に、ステップ1220においてファイルを復元する。当業者には分かるように、ファイルシステムが出来る限り早く矛盾の無い状態に到達できるようにするために、inodeファイルとディレクトリは最初に復元される。そして、手順はステップ1225で終了する。
また、要求発生器は、ストレージシステム120Aのバッファ・キャッシュ170をバイパスする特殊なロードパスを使用するように構成され、それによって、クライアントが現在必要としていない取得データがバッファ・キャッシュ170に入らないようにする。

例えば、ファイルシステム280は、NRVプロトコルモジュール295と協働し、クライアントがアプリケーション112のために現在アクセスしている可能性があるファイルを復元するが、迅速で絶え間ないアクセスを可能にするために、それらのファイルをキャッシュしなければならない場合があり、要求発生器296は、クライアントが現在必要としていないファイルの復元を更に要求する場合がある。したがって、ローカルボリュームに対する書き込みアローケーションの後、それらのファイルをバッファ・キャッシュ170に格納しておく必要はない。さらに、重要なことに、クライアント要求を補助的な外部記憶装置のキャッシュに格納しておく必要はない。なぜなら、日付の復元が済めば、一次ストレージシステムは、二次上のクライアント要求をアクセスする必要はもはやないからである。
この特殊なロードパスを実施する1つの方法は、バッファ・キャッシュ中にある要求発生器によって生成されたデータを不要なものとしてマーキングし、そのデータがディスクに書き込まれた後、直ぐにそのデータをキャッシュから取り除くことができるようにすることである。不要なデータのマーキングは、LRU(Least Recently Used)アルゴリズムに変更を加えたものによって実施することができる。データを不要なものとしてマーキングする場合、そのデータを格納しているキャッシュブロック(バッファ)は、LRUスタックの末尾ではなく先頭に置かれ、そのキャッシュブロックが、再使用される最初のバッファになるようにする。あるいは、不要なキャッシュをすべてバイパスする新たなロードパス伝送リンクを作成してもよい。ただし、この代替策は、ハードウェアの変更を必要とする。当業者には分かるように、本発明の範囲内で、キャッシュ汚染を防止するための他の方法を使用することも可能である。
また、要求発生器296は、一連のリモート・フェッチ・オペレーションに関連するデータの取得を改良するために、先読み機能を実施する場合がある。要求発生器によって有利に使用される先読みアルゴリズムについては、Robert L. Fairによる「ADAPTIVE FILE READAHEAD TECHNIQUE FOR MULTIPLE READ STREAMS」と題する同時係属の米国特許出願第10/721,596号、及びRobert L. Fairによる「ADAPTIVE FILE READAHEAD BASED ON MULTIPLE FACTORS」と題する米国特許出願第10/753,608号に記載されており、これらの特許出願はいずれも、参照により本明細書に援用される。要求発生器は、ファイルシステム280と協働し、後続のフェッチオペレーションによって要求される可能性があるブロックを読み出すための推測的先読みオペレーションを実施する。例えば、一連のブロックを読み出すための読み出し要求に応答して、ファイルシステムは先読みオペレーションを実施し、その一連のブロックの後に続くブロックが要求発生器によってまだ要求されていなくても、それら後続のブロックを読み出すための先読みオペレーションを実施する場合がある。これは、例えば、一連の不在ブロックを読み出すときに有用な場合がある。
さらに別の実施形態として、ストレージ・オペレーティング・システム上で実行される複数の要求発生器を使用して、データ復元の効率を高めることも可能である。その際、各要求発生器は、散在ボリューム中のブロックの一部だけを担当する。例えば、2つの要求発生器は、1つのタスクを等しい部分に分割し、第1の要求発生器は、一連のアドレスのうちの最初の半分を担当し、第2の要求発生器は、次の半分を担当する場合がある。当業者には分かるように、複数の要求発生器の代替構成には多数の構成が考えられ、それらの変形構成もまた、本発明の範囲、及び保護対象に含まれる。
ポンプモジュール
本発明の他の実施形態によれば、ポンプモジュール298は、要求発生器296によって生成された要求、及びクライアント110によって発行された要求の処理を調節するためのフロー制御を提供する。フロー制御が必要になることがある理由は、スキャナ、及び要求発生器は、外部記憶装置からブロックをフェッチし、復元するために要する時間よりも実質的に高速に、ファイルシステムのブロックを求めるアクセス要求を発行、及び生成することが出来るからであり、その主たる理由は、フェッチオペレーションや復元オペレーションが、ネットワーク遅延やディスクアクセス遅延(データが二次外部記憶装置のキャッシュ上にない場合があるため)、あるいは他の外部遅延による影響を強く受けるからである。したがって、そのようなフェッチオペレーションや復元オペレーションは、システム性能の「ボトルネック」になることがあり、その結果、未処理のデマンド、及び要求の「バックログ(残務)」が発生することがある。
散在ボリューム中の欠落データを求める未処理のデマンド、及び要求の数が、所定の閾値に達すると、ポンプモジュール298は、要求発生器296を調節し、要求発生器が生成する要求の数を低速化させるか、または一時的に中断させる。ポンプモジュールはさらに、優先順位決定ポリシーを実施する場合がある。優先順位決定ポリシーは、例えば、
空きのシステムリソースが限られているときに、クライアントが発行した要求に対し、欠落ブロックを求めて生成された要求よりも高い優先順位を与えるものである。
図13は、ポンプモジュールを使用してフロー制御を実施するための手順1300を示すフロー図である。手順はステップ1305から開始され、ステップ1310へ進み、そこで、クライアントからのデータアクセス要求を監視する。例えば、そうした要求のサイズ、及び数をポンプモジュールによって記録する。ステップ1315において、ポンプモジュールはさらに、要求発生器によって生成されたデータアクセス要求(デマンド)を監視する。ステップ1320において、要求発生器からの要求/デマンドの数が所定の閾値(例えば、要求発生器にとって許容される要求の最大数)に達すると、ステップ1325において、ポンプモジュールは要求発生器を調節し、生成される要求の数を低速化、すなわち減少させる。この文脈における「調節」は、多数の方法で実施することができ、例えば、復元トラフィックの速度(例えば、最大100kB/秒)を調節し、またはスキャナを一時的に停止させ(後で処理を再開できるようになるまで)、スキャナの減速させることによって達成することができる。
また、ポンプモジュールは、要求発生器により生成された要求、及びクライアントにより発行されたデータアクセス要求に関する優先順位決定手段としての機能をさらに有する場合がある。オン・デマンド復元オペレーションの実行中に通常オペレーションであるかのように見せかけるために、要求発生器は、遅延過多のファイルアクセス時間を有するクライアントをそのままにして、復元に利用可能な帯域幅を消費してはならない。この状況を確実に回避するために、ポンプモジュールは、クライアントからの要求に対し、要求発生器からの要求に与えられる優先順位よりも高い優先順位を与える。具体的には、要求発生器が、ステップ1320においてまだ最大閾値に達していない場合、又は、ステップ1325において調節された場合、ステップ1330においてポンプモジュールは、要求発生器が、クライアントデータアクセス要求のための空きリソースを制限する形でリソースを過剰使用(消費)しているか否かを判定する。過剰使用している場合、ステップ1335において、ポンプモジュールは、クライアントデータアクセス要求に優先権を与える。これは例えば、要求発生器を保留状態してから、ステップ1310へ戻り、要求を更に監視することによってなされる。貴重なリソースが大量に消費されてはいなかった場合、要求発生器は引き続き無視され、手順はステップ1310へ戻る。要求のタイプによっては、異なるレベルの優先順位が与えられる場合もある。例えば、特殊なファイルシステムコマンドには、高い優先順位が与えられ、先読みには低い優先順位が与えられる場合がある。
本発明の一実施形態において、ポンプモジュールは、ある種のキューとして機能するように編成された複数のスレッドとして実施され、そのキューを通して全てのデータフェッチ要求が、二次フローへと送られる場合がある。ポンプモジュールは、例えば、例示的なNRVプロトコルを使用して、実際のフェッチ要求を生成する場合がある。各スレッドは、一度に1つの要求を処理し(すなわち、生成し、送信し)、次の要求を処理する前に、その要求に対する応答を待つように命じられる。さらに、複数のスレッドを使用することにより、要求を順不同で完了させることが可能になる。これは、当該技術分野におけるいわゆるリーキー・バケット・アルゴリズムと呼ばれるものに似ている。さらに、所定数のスレッドが使用可能であれば、要求発生器は、ポンプモジュールに対して要求を発行することができる。例えば、ポンプモジュールは、千個のスレッドを有するように構成される場合があり(すなわち、要求キューの長さが千である)、それによって、クライアントが発行した要求に対しては実質的に無制限のサービスを提供できるが、要求発生器が発行した要求に対しては、少なくとも10個のスレッドが空いていないと、サービスを提供できないという制限を有する場合がある。したがって、クライアント要求が何も発行されなければ、要求発生器は、任意のある時点において最大で90個の要求を送信することができる。
なお、本発明の教示は、まばらに構成されたボリュームとともに使用することもできる。例えば、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているwrite−anywhereファイルレイアウト(WAFL)ファイルシステムのように、ファイルシステムによっては、まばらに構成されたデータコンテナを生成する機能を有するものがあり、まばらに構成されたデータコンテナは、コンテナ作成時にディスクに完全には書き込まれない。

本明細書では、データコンテナという用語は通常、ファイルシステム、ディスクファイル、ボリューム、または論理番号(LUN)などのデータを格納するための記憶単位を意味する。論理番号は、例えば独自の一意の識別子によってアドレス指定することができる。ディスク上のまばらに構成されたデータコンテナのデータ内容を収容するために必要とされる記憶空間は、まだ使用されていない。まばらに構成されたデータコンテナの詳細については、Vijajan Rajan他による「SYSTEM AND METHOD FOR RECLAIMING UNUSED SPACE FROM A THINLY PROVISIONED DATA CONTAINER」と題する米国特許出願第10/966,605号に記載されている。
オン・デマンド復元環境において、まばらに構成されたデータコンテナの使用は、災害復旧時に、一次ストレージシステムに使用される場合がある。一次ボリュームの総量のうちの一部についてしか物理記憶を持たないまばらに構成された一次データコンテナを使用することにより、管理者は、二次のトータルサイズの物理記憶を調達する必要はなくなるが、使用されることになるファイル/データコンテナに必要とされる空間の大きさだけは、決めることができる。
もう一度まとめると、本発明は、ストレージシステムのようなコンピュータの散在ボリュームに対するオン・デマンド復元(ROD)オペレーションを実施するシステム、及び方法に関する。散在ボリュームは、コンテナ内部に格納された1以上のファイルが、データを得るために特殊な読み出し処理を必要とするデータコンテナ、すなわちボリュームである。本発明によれば、ローカル記憶装置が故障したときに、ローカル記憶装置の使用を迅速に復旧するために、散在ボリュームを使用する場合がある。ボリュームは不在ブロックを有し、その後、そのデータが、オン・デマンドで復元される。データの復元は、クライアントデータアクセス要求を受信したときに達成され、または、要求発生器によって達成される。また、上記のように、要求発生器は、ポンプモジュールによって調節される場合がある。さらに、上記のように、散在ボリュームの復元が開始された後、そのボリュームは、全てのデータアクセスオペレーションについて使用可能になり、その結果、例えば、書き込みオペレーションを実施したり、バックアップオペレーションを開始したりすることができるようになる。
上記の説明は、本発明の特定の幾つかの実施形態に関するものである。しかしながら、当然ながら、記載した実施形態の利点の一部、または全部を維持したまま、記載した実施形態に対し他の改変、及び変更を施すことも可能である。例えば、当然ながら、本発明の教示は、コンピュータ上で実行されるプログラム命令を有するコンピュータ読み取り可能媒体を含むソフトウェアでも、ハードウェアでも、ファームウェアでも実施することができ、また、それらの組み合わせとして実施してもよい。したがって、本明細書の説明は、例として捉えるべきものであり、本発明の範囲を制限するものではない。添付の特許請求の範囲の目的は、そうした改変や変更も本発明の真の思想、及び範囲に含めることにある。
本発明一実施形態による例示的ネットワーク環境を示す略ブロック図である。 本発明の一実施形態による例示的ストレージ・オペレーティング・システムを示す略ブロック図である。 本発明の一実施形態による例示的inodeを示す略ブロック図である。 本発明の一実施形態による例示的バッファ・ツリーを示す略ブロック図である。 本発明とともに有利に使用されるファイルのバッファ・ツリーの一実施形態を示す略ブロック図である。 本発明の一実施形態による例示的集合体を示す略ブロック図である。 本発明の一実施形態による例示的オン・ディスク・レイアウトを示す略ブロック図である。 本発明の一実施形態による例示的fsinfoブロックを示す略ブロック図である。 本発明の一実施形態によるデータアクセス要求を処理する手順のステップの詳細を示すフロー図である。 本発明の一実施形態による故障したボリュームを復元する手順のステップの詳細を示すフロー図である。 本発明の一実施形態による要求発生器を動作させる手順のステップの詳細を示すフロー図である。 本発明の一実施形態によるスキャナによりトラバースされる計画されたシーケンスのステップの詳細を示すフロー図である。 本発明の一実施形態によるポンプモジュールにおいてフロー制御を実施するための手順のステップの詳細を示すフロー図である。

Claims (10)

  1. 第1の記憶装置とともに使用される方法であって、
    第1のストレージシステムに接続された第1の記憶装置に記憶された故障したボリュームを検出するステップであって、前記故障したボリュームのバックアップコピーが、故障前に第2のストレージシステムに接続された第2の記憶装置に記憶されている、第1のストレージシステムに接続された第1の記憶装置に記憶された故障したボリュームを検出するステップを検出するステップと、
    たなボリュームを作成するステップであって、ファイルシステムのバージョン、故障したボリュームのトータルサイズ、及びルートファイルシステムディレクトリの中身のうちの少なくとも1つを含む新たなボリュームのためのインフラストラクチャメタデータ前記第2のストレージシステムからフェッチし、1以上のブロックのデータが、前記第2の記憶装置に置かれていることを示す前記1以上のブロックへのポインタを新たなボリュームに入れることにより、新たなボリュームを前記インフラストラクチャメタデータで初期化することを含む、新たなボリュームを作成するステップと
    前記故障したボリュームを前記新たなボリュームに置き換えるステップと、
    前記1以上のブロックのデータを前記新たなボリュームの中に復元するステップであって、前記第2のストレージシステムに対しフェッチ要求を発行し、前記第2の記憶装置から前記1以上のブロックのデータをフェッチすることを含む、前記1以上のブロックのデータを前記新たなボリュームの中に復元するステップ
    を含み、前記新たなボリュームに対するデータアクセスオペレーションは、前記1以上のブロックのデータを前記新たなボリュームの中に復元する前に可能にされる、方法。
  2. 前記フェッチ要求は、前記1以上のブロックのデータをアクセスするためのクライアント要求に応答して発行される、請求項1に記載の方法。
  3. 前記フェッチ要求は、前記1以上のブロックを探すように構成された要求発生器によって発行される、請求項1に記載の方法。
  4. リモート・バックアップ・ボリュームへの前記新たなボリュームのバックアップ・オペレーションを開始することを更に含む、請求項1〜3のうちのいずれか一項に記載の方法。
  5. 第1の記憶装置とともに使用されるシステムであって、
    第1の記憶装置に記憶された第1のボリュームを有する第1のストレージシステムであって、前記第1の記憶装置が、第1のストレージシステムに接続され、第1のストレージシステムと、
    記第1のボリュームのバックアップ・コピーを有するように構成された第2のストレージシステムであって、前記バックアップ・コピーが、第2のストレージシステムに接続された第2の記憶装置に記憶される、第2のストレージシステム
    を含み、
    前記第1のストレージシステムは、前記第1のボリュームの故障に応答し、前記第1の記憶装置に記憶される散在ボリュームを作成するように構成され前記第1のストレージシステムは、ファイルシステムのバージョン、前記第1のボリュームのトータルサイズ、及びルートファイルシステムディレクトリの中身のうちの少なくとも1つを含む前記散在ボリュームのためのインフラストラクチャメタデータを前記第2のストレージシステムからフェッチし、前記第2のストレージシステムに記憶されたバックアップ・コピー上のデータを指す複数のポインタを前記散在ボリュームに入れることにより、前記散在ボリュームを前記インフラストラクチャメタデータで初期化し、前記第2のストレージシステムに対しフェッチ要求を発行し、前記第2のストレージシステムから前記データをフェッチすることにより、前記データを前記散在ボリュームに復元するように構成され
    前記散在ボリュームに対するデータアクセスオペレーションは、前記データを前記散在ボリュームに復元する前に可能にされる、システム。
  6. 前記フェッチ要求は、前記データに対するクライアント要求に応答して発行される、請求項5に記載のシステム。
  7. 前記フェッチ要求は、要求発生器によって発行され、前記要求発生器は、ABSENTポインタを有するブロックを探し、ABSENTポインタを有するブロックを特定すること応答して、欠落データを前記第2のストレージシステムから取得するためのリモート・フェッチ・オペレーションを開始する、請求項6に記載のシステム。
  8. 前記第1のストレージシステムは、前記要求発生器のフロー制御を実施するためのポンプモジュールを備えるように更に構成される、請求項7に記載のシステム。
  9. 前記ポンプモジュールは、クライアントが発行した要求に対し、前記要求発生器によって発行された要求よりも高い優先順位を与える優先順位決定ポリシーを実施する、請求項8に記載のシステム。
  10. 前記第1のボリュームは複数のオブジェクトを含み、該オブジェクトは、LUN、ディレクトリ、qtree、特殊なデータコンテナ、又はファイルからなる、請求項5〜9のうちのいずれか一項に記載のシステム。
JP2008508993A 2005-04-25 2006-04-24 瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法 Expired - Fee Related JP4779012B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67443005P 2005-04-25 2005-04-25
US60/674,430 2005-04-25
PCT/US2006/015442 WO2006116293A2 (en) 2005-04-25 2006-04-24 System and method for restoring data on demand for instant volume restoration

Publications (2)

Publication Number Publication Date
JP2008539521A JP2008539521A (ja) 2008-11-13
JP4779012B2 true JP4779012B2 (ja) 2011-09-21

Family

ID=37036819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008508993A Expired - Fee Related JP4779012B2 (ja) 2005-04-25 2006-04-24 瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法

Country Status (6)

Country Link
EP (1) EP1882223B1 (ja)
JP (1) JP4779012B2 (ja)
AT (1) ATE440324T1 (ja)
DE (1) DE602006008605D1 (ja)
IL (1) IL186952A (ja)
WO (1) WO2006116293A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080282047A1 (en) 2007-05-08 2008-11-13 Hitachi, Ltd. Methods and apparatus to backup and restore data for virtualized storage area
US7801001B2 (en) 2007-10-25 2010-09-21 Microsoft Corporation Media disc reliability
US8825685B2 (en) * 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
US20150212898A1 (en) * 2014-01-30 2015-07-30 Attix5 Uk Limited Data migration method and systems
US10977134B2 (en) * 2014-08-19 2021-04-13 Netapp Inc. Restoration process to restore corrupted data of a volume
JP6021120B2 (ja) 2014-09-29 2016-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データをストリーム処理する方法、並びに、そのコンピュータ・システム及びコンピュータ・システム用プログラム
US11593229B2 (en) * 2020-09-23 2023-02-28 Netapp, Inc. Data protection methods and systems for a networked storage environment
US11816007B1 (en) * 2022-05-25 2023-11-14 Netapp, Inc. On-demand serverless disaster recovery

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974544A (en) * 1991-12-17 1999-10-26 Dell Usa, L.P. Method and controller for defect tracking in a redundant array
US20030182253A1 (en) * 2002-03-19 2003-09-25 Chen Raymond C. System and method for restoring a single file from a snapshot

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284030B2 (en) * 2002-09-16 2007-10-16 Network Appliance, Inc. Apparatus and method for processing data in a network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974544A (en) * 1991-12-17 1999-10-26 Dell Usa, L.P. Method and controller for defect tracking in a redundant array
US20030182253A1 (en) * 2002-03-19 2003-09-25 Chen Raymond C. System and method for restoring a single file from a snapshot

Also Published As

Publication number Publication date
WO2006116293A3 (en) 2007-02-22
DE602006008605D1 (de) 2009-10-01
JP2008539521A (ja) 2008-11-13
ATE440324T1 (de) 2009-09-15
EP1882223B1 (en) 2009-08-19
IL186952A (en) 2012-04-30
EP1882223A2 (en) 2008-01-30
WO2006116293A2 (en) 2006-11-02
IL186952A0 (en) 2008-02-09

Similar Documents

Publication Publication Date Title
US7809693B2 (en) System and method for restoring data on demand for instant volume restoration
US7334095B1 (en) Writable clone of read-only volume
EP1743264B1 (en) Cloning technique for efficiently creating a copy of a volume in a storage system
US7334094B2 (en) Online clone volume splitting technique
US8296260B2 (en) System and method for managing data deduplication of storage systems utilizing persistent consistency point images
US8990539B2 (en) Extension of write anywhere file system layout
US7574464B2 (en) System and method for enabling a storage system to support multiple volume formats simultaneously
JP4787315B2 (ja) データコンテナの中身をクラスタの複数のボリュームにわたってストライピングするためのストレージシステム・アーキテクチャ
EP1877903B1 (en) System and method for generating consistent images of a set of data objects
US20070067256A1 (en) System and method for verifying and restoring the consistency of inode to pathname mappings in a filesystem
US7243207B1 (en) Technique for translating a pure virtual file system data stream into a hybrid virtual volume
JP4779012B2 (ja) 瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法
US7783611B1 (en) System and method for managing file metadata during consistency points

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110202

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110502

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110607

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110704

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140708

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees