(57)【要約】ストレージシステムによって提供される暫定的に設けられたデータコンテナから未使用空間を返還要求するシステム、及び方法。ホスト側エージェントは、開放可能なデータコンテナのブロックを検出し、そのデータコンテナに関連するストエージシステムに対し、新規なパンチ穴コマンドを送信する。パンチ穴コマンドに応答して、ストレージシステムは、適当なブロックを割り当てる。
2008517383.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムによって提供される暫定的に設けられたデータコンテナから未使用空間を返還請求する方法であって、
前記暫定的に設けられたデータコンテナ上でもはや使用されていない１組又は複数組のブロックを判定するステップと、
前記暫定的に設けられたデータコンテナ上でもはや使用されていない１組又は複数組のブロックを指定するパンチ穴コマンドを前記ストレージシステムに送信するステップと、
前記パンチ穴コマンドの受信に応答して、前記パンチ穴コマンドで指定された１組又は複数組のブロックの割当てを解除するステップと
からなる方法。
【請求項２】
前記データコンテナは仮想ディスクからなる、請求項１に記載の方法。
【請求項３】
前記パンチ穴コマンドは、ベンダ固有のＳＣＳＩコマンドである、請求項１に記載の方法。
【請求項４】
前記パンチ穴コマンドは、オペレーションコードフィールド、範囲数フィールド、及び１又は複数の範囲識別子フィールドを含む、請求項１に記載の方法。
【請求項５】
前記範囲識別子フィールドは、論理ブロックアドレスフィールド、及び範囲長フィールドを含む、請求項４に記載の方法。
【請求項６】
前記パンチ穴コマンドは、オペレーションコードフィールド、ビットマップサイズフィールド、論理ブロックアドレスフィールド、及びビットマップフィールドを含む、請求項１に記載の方法。
【請求項７】
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを判定するステップは、クライアント上のファイルシステムに問合せをするステップを含む、請求項１に記載の方法。
【請求項８】
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを判定するステップは、
ファイルシステム上のファイルを前記データコンテナの上に重ねて割り当てるステップと、
前記割り当てられたファイルをロックするステップと、
前記割り当てられたファイルを記憶する前記ファイルシステム上のブロックを識別するステップと、
前記割り当てられたファイルを記憶する前記識別されたブロックを、前記データコンテナ上でもはや使用されていない１組又は複数組のブロックとして識別するステップと
からなる、請求項１に記載の方法。
【請求項９】
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを判定するステップは、前記データコンテナを使用する非ファイルシステムアプリケーションに問合せをするステップを含む、請求項１に記載の方法。
【請求項１０】
前記非ファイルシステムアプリケーションは、データベースシステムを含む、請求項９に記載の方法。
【請求項１１】
ストレージシステムによって提供される暫定的に設けられたデータコンテナから未使用空間を返還請求するシステムであって、
前記暫定的に設けられたデータコンテナ上でもはや使用されていない１組又は複数組のブロックを判定する手段と、
前記暫定的に設けられたデータコンテナ上でもはや使用されていない１組又は複数組のブロックを識別するパンチ穴コマンドを前記ストレージシステムに送信する手段と、
前記パンチ穴コマンドの受信に応答して、前記パンチ穴コマンドで指定された１組又は複数組のブロックの割当てを解除する手段と
からなる方法。
【請求項１２】
前記データコンテナは仮想ディスクからなる、請求項１１に記載の方法。
【請求項１３】
前記パンチ穴コマンドは、ベンダ固有のＳＣＳＩコマンドである、請求項１１に記載のシステム。
【請求項１４】
前記パンチ穴コマンドは、オペレーションコードフィールド、範囲数フィールド、及び１又は複数の範囲識別子フィールドを含む、請求項１４に記載のシステム。
【請求項１５】
前記範囲識別子フィールドは、論理ブロックアドレスフィールド、及び範囲長フィールドを含む、請求項１４に記載のシステム。
【請求項１６】
前記パンチ穴コマンドは、オペレーションコードフィールド、ビットマップサイズフィールド、論理ブロックアドレスフィールド、及びビットマップフィールドを含む、請求項１１に記載のシステム。
【請求項１７】
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを判定する手段は、クライアント上のファイルシステムに問合わせをする手段を更に含む、請求項１１に記載のシステム。
【請求項１８】
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを判定する手段は、
ファイルシステム上のファイルを前記データコンテナの上に重ねて割り当てる手段と、
前記割り当てられたファイルをロックする手段と、
前記割り当てられたファイルを記憶する前記ファイルシステム上のブロックを識別する手段と、
前記割り当てられたファイルを記憶する前記識別されたブロックを、前記データコンテナ上でもはや使用されていない１組又は複数組のブロックとして識別する手段と
を更に含む、請求項１１に記載のシステム。
【請求項１９】
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを判定する手段は、前記データコンテナを使用する非ファイルシステムアプリケーションに問合せをする手段を更に含む、請求項１１に記載のシステム。
【請求項２０】
前記非ファイルシステムアプリケーションは、データベースシステムを含む、請求項１９に記載のシステム。
【請求項２１】
ストレージシステムによって提供される暫定的に設けられたデータコンテナから未使用空間を返還請求するシステムであって、前記暫定的に設けられたデータコンテナを有するストレージシステムのクライアント上で実行されるホスト側エージェントを含み、該ホスト側エージェントは、前記クライアントによってもはや使用されていないデータコンテナのブロックを判定し、前記ストレージシステムにパンチ穴コマンドを送信するように構成され、前記パンチ穴コマンドは、前記クライアントによってもはや使用されていないデータコンテナのブロックを指定する、システム。
【請求項２２】
前記ホスト側エージェントは、前記クライアントによってもはや使用されていないデータコンテナのブロックを判定するために、前記クライアント上のファイルシステムに問合わせをするように更に構成される、請求項２１に記載のシステム。
【請求項２３】
前記ホスト側エージェントは、前記クライアントによってもはや使用されていないデータコンテナのブロックを判定するために、非ファイルシステムアプリケーションに問合せをするように更に構成される、請求項２１に記載のシステム。
【請求項２４】
ストレージシステムによって提供される暫定的に設けられたデータコンテナから未使用空間を返還要求するためのコンピュータ読取可能媒体であって、前記コンピュータ読取可能媒体が、
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを判定するステップと、
前記データコンテナ上でもはや使用されていない１組又は複数組のブロックを指定するパンチ穴コマンドを前記ストレージシステムに送信するステップと、
前記パンチ穴コマンドの受信に応答して、前記パンチ穴コマンドで指定された１組又は複数組のブロックの割当てを解除するステップと
を実施するプログラム命令を含む、コンピュータ読取可能媒体。
【請求項２５】
ストレージシステムによって提供される暫定的に設けられたデータコンテナから未使用空間を返還請求するシステムであって、前記ストレージシステム上で実行されるストレージオペレーティングシステムを含み、該ストレージオペレーティングシステムは、ホスト側エージェントからパンチ穴コマンドを受信するように構成され、前記パンチ穴コマンドで指定された１又は複数の範囲のブロックの割当てを解除するように更に構成される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明はストレージシステムに関し、特に、ストレージシステム上に暫定的に設けられたデータコンテナから未使用空間を返還要求することに関する。
【背景技術】
【０００２】
発明の背景
ストレージシステムは、メモリ、テープ、ディスクのような書き込み可能な永久記憶装置上での情報の編成に関するストレージサービスを提供するコンピュータである。ストレージシステムは一般に、ストレージ・エリア・ネットワーク（ＳＡＮ）環境、又はネットワーク・アタッチド・ストレージ（ＮＡＳ）環境内に展開される。ＮＡＳ環境内で仕様される場合、ストレージシステムは、情報を例えばディスク上にディレクトリやファイルの階層構造として論理編成するファイルシステムを実施するオペレーティングシステムを有するファイルサーバとして実施される場合がある。「ディスク上」の各ファイルは、そのファイルの実際のデータのような情報を記憶するように構成された、例えばディスクブロックのような、一連のデータ構造として実施される場合がある。一方、ディレクトリは、他のファイルやディレクトリに関する情報を格納する特殊なフォーマットのファイルとして実施される場合がある。本明細書で使用される場合、ファイルとは、固定量、又は可変量のデータ記憶空間を有する任意の論理的記憶コンテナであるものとして規定され、利用可能な記憶空間の比較的大きなプールの中から割り当てられた記憶空間である場合がある。したがって、本明細書で使用される場合、ファイルという用語は、特に断わりがない限り、コンテナやオブジェクト、あるいは一連の固定データ記憶装置の集合に直接対応しない任意の他の記憶物体を意味する可能性がある。ファイルシステムとは一般に、ファイルを一時的に、又は永久的に記憶するための固定記憶空間の割当てを含めて、そのようなファイルの管理を行うコンピュータシステムである。
【０００３】
また、ストレージシステムは、クライアント／サーバモデルの情報配送にしたがって動作するように構成され、それによって多数のクライアントシステム（クライアント）は、ストレージシステム上に記憶されたファイルのような共有リソースにアクセスすることができる。ファイルの共有は、ＮＡＳシステムの特徴である。ＮＡＳシステムが有効化される理由は、ファイルやファイルシステムへのセマンティックレベルのアクセスが可能であるからである。ＮＡＳシステム上での情報の記憶は通常、イーサネット(R)のような地理的に分散配置された相互接続通信リンクの集まりを含むコンピュータネットワーク上に展開され、それによってクライアントは、ファイラ上の情報（ファイル）に遠隔的にアクセスすることができる。クライアントは通常、トランスミッション・コントロール・プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）のような所定のプロトコルにしたがって個々のデータフレーム、又はデータパケットを交換することによってストレージシステムと通信する。
【０００４】
クライアント／サーバモデルの場合、クライアントは、ポイント・ツー・ポイント接続、共有ローカルエリア・ネットワーク、ワイドエリアネットワーク、又はインターネットのような公共ネットワーク上で実施される仮想私設ネットワークのようなコンピュータ・ネットワークを介してストレージシステムに「接続」するためのアプリケーションをコンピュータ上で実行する。ＮＡＳシステムは一般に、ファイルベースのアクセスプロトコルを使用する。そのため、各クライアントは、データがディスク上に格納されている特定の場所、例えばブロックに関わらず、アクセスすべき１以上のファイルを指定するファイルシステム・プロトコル・メッセージを、ネットワークを介してファイルシステムに発行（パケットの形で）することによって、ストレージシステムにサービスを要求する場合がある。従来のコモン・インターネット・ファイルシステム（ＣＩＦＳ）プロトコル、ネットワーク・ファイル・システム（ＮＦＳ）プロトコル、及びダイレクト・アクセス・ファイルシステム（ＤＡＦＳ）プロトコルといった複数のファイルシステムプロトコルをサポートすることにより、クライアント間のネットワーキングのためのストレージシステムの利便性を向上させることができる場合がある。
【０００５】
ＳＡＮは、ストレージシステムと該ストレージシステムが有する記憶装置との間に直接接続を確立することが可能な高速ネットワークである。つまり、ＳＡＮは、ストレージバスに対する拡張とみなされる場合があり、そのため、ストレージシステムのオペレーティングシステムは、ブロックベースのアクセスプロトコルを使用して、「拡張バス」を介して、記憶された情報にアクセスすることができる。この文脈において、拡張バスは一般に、「ＳＣＳＩプロトコル  ｏｖｅｒ  ＦＣ（ファイバチャネル）又はＴＣＰ／ＩＰイーサネット」のようなブロックアクセスプロトコルを使用して動作するように構成されたＦＣ又はイーサネット媒体として実施される。
【０００６】
ＳＡＮ構成、又はデプロイメントによれば、記憶装置をアプリケーションサーバのようなストレージシステムから切り離すことができ、アプリケーションサーバレベルにおいて或る程度の情報記憶の共有が可能となる。ただし、ＳＡＮが単一のサーバにしか使用されない環境もある。ＳＡＮデプロイメントによっては、情報をデータベースの形で編成するものもあれば、ファイルベースの編成を使用するものもある。情報がファイルとして編成される場合、情報の要求元のクライアントは、ファイルマッピングを保持し、ファイルセマンティックを管理するが、その要求アドレス（及びサーバ応答）は、例えば論理ユニット番号（ＬＵＮ）を使用し、ディスク上でのブロックアドレス指定に換算して、情報をアドレス指定する。
【０００７】
ＳＡＮ環境によっては、ストレージシステムは、例えばファイバチャネルやｉＳＣＳＩのようなブロックベースのプロトコルを使用して、仮想ディスク（ｖｄｉｓｋ）をクライアントにエキスポートする場合がある。ｖｄｉｓｋの一例は、普通のファイルに由来するボリューム上の特殊なファイルタイプであって、ディスクのエミュレーションを可能にするエキスポート制限、及び動作制限を有する特殊ファイルタイプである。ｖｄｉｓｋについては、「STORAGE VIRTUALIZATION BY LAYERING VIRTUAL DISK OBJECTS ON A FILE SYSTEM」と題するＶｉｊａｙａｎ  Ｒａｊａｎ他による米国特許出願第１０／２１６，４５３号に記載され、参照によりその内容は本明細書に援用される。これらのブロックベースのプロトコル、並びにエキスポートされたファイル／ｖｄｉｓｋは、ストレージシステムのクライアントにとって物理的なディスクのように見える。
【０００８】
例えば、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているｗｒｉｔｅ  ａｎｙｗｈｅｒｅ  ｆｉｌｅ  ｌａｙｏｕｔ（ＷＡＦＬ）ファイルシステムのように、ファイルシステムによっては、データコンテナの生成時にデータコンテナがディスクに完全には書き込まれない、暫定的に設けられたデータコンテナを生成する機能を有するものがある。本明細書で使用される場合、データコンテナという用語は通常、ファイルシステム、ディスクファイル、ボリューム、又は論理番号（ＬＵＮ）のようなデータを保持するための記憶単位を指し、記憶単位は例えば、その記憶単位が有する一意の識別子によってアドレス指定される。ディスク上に暫定的に設けられたデータコンテナのデータ内容を保持するために必要な記憶空間は、まだ使用されていない。暫定的に設けられたデータコンテナはしばしば、ＷＡＦＬファイルシステム環境で使用され、例えばｖｄｉｓｋを最初に生成するときに使用される。ユーザ又は管理者は、指定サイズ、例えば１０ギガバイト（ＧＢ）のｖｄｉｓｋを作成する場合がある。このサイズは、ｖｄｉｓｋの最大アドレス指定可能空間に相当する。システム性能を向上させるために、ファイルシステムは通常、ｖｄｉｓｋ全体をその生成時にディスクに書き込むことはしない。むしろ、ファイルシステムはそのｖｄｉｓｋに相当する暫定的に設けられたデータコンテナ（すなわち、ファイル）を生成する。この暫定的に設けられたデータコンテナは、ｖｄｉｓｋをデータで埋める際の後続の書き込み処理によって埋められる（書き込まれる）。なお、ここでの説明は、ファイルシステムの基礎となる暫定的に設けられたデータコンテナに関するものであるが、他の暫定的に設けられる実施形態を使用してもよい。したがって、暫定的に設けられたデータコンテナをサポートする基礎ファイルシステムの使用は、単なる例であるものと考えるべきである。
【０００９】
図１は、暫定的に設けられたデータコンテナの一例のバッファツリー（ｉｎｏｄｅ構造）１００を示す略ブロック図である。このバッファツリー（ｉｎｏｄｅ）構造１００は、例えば、ｖｄｉｓｋが最初にファイルシステムによって暫定的に設けられるときに作成される。典型的な暫定的に設けられたデータコンテナでは、ｉｎｏｄｅ１０５しか、実際にディスクに書き込まれない。残りのデータコンテナは、そのデータコンテナを格納するディスク上に書き込まれることはなく、また、物理的に記憶されることもない。データコンテナ１００は完全なｉｎｏｄｅ１０５を有するが、間接ブロック１１０、１２０やファイルデータブロック１２５（影で描かれている）を格納していない。つまり、これらの影のブロック（すなわち、１１０、１２０、１２５）は、データコンテナの作成時に作成されるのではないが、それでもデータコンテナがデータで埋められときに、ディスクに書き込まれることになる。暫定的に設けられるデータコンテナの生成時にｉｎｏｄｅをディスクに書き込むだけで、ディスクアクセスの回数を減らすことができるため、かなりの時間を節約できる。また、データコンテナの中身を保持するために必要とされるディスク上の記憶空間しか使用されない。例えば、ファイルシステムは、暫定的に設けられたデータコンテナ全体を確実にディスクに書き込めるようにするために、適当な空間予約を行うことになる。空間予約技術については、「SYSTEM AND METHOD FOR RESERVING SPACE TO GUARANTEE FILE WRITABILITY IN A FILE SYSTEM SUPPORTING PERSISTENT CONSISTENCY POINT IMAGES」と題するＰｅｔｅｒ  Ｆ．Ｃｏｒｂｅｔｔ他による米国特許出願第１０／４２３，３９１号に記載されている。
【００１０】
図２は、元のｉｎｏｄｅ１０５を有する暫定的に設けられたデータコンテナの中にその一部が格納されたバッファツリー（ｉｎｏｄｅ）構造２００の一例を示す略ブロック図である。ここで、データコンテナに対する幾つかの書き込み処理の結果、間接ブロック２１０、２２０、及び例示的ファイルデータブロック２２５はデータで占められている。書き込み処理を継続すると、更に別のデータブロック、例えば、図３のバッファツリー（ｉｎｏｄｅ）構造３００に示したようなファイルデータブロック３２５はデータで占められることになる。最終的に、データコンテナがデータで完全に占められると（図示せず）、間接ブロック４２０や、関連ファイルデータブロック（図示せず）のようなブロックを含む全てのブロックが、図４のｉｎｏｄｅ構造４００の略ブロック図に示したように完成されることになる。このとき、暫定的に設けられたデータコンテナは完全にデータで閉められ、各ブロックは、ディスク上の実際のブロックに関連付けられる。
【００１１】
暫定的に設けられたデータコンテナ、すなわち暫定的に設けられたＬＵＮを備えたストレージシステムを使用する既知の環境は、暫定的に設けられたＬＵＮの上にホスト側ファイルシステムを重ね合わせなければならない。そのような１つの環境において、ホスト（又は、ストレージシステムのクライアント）は、エキスポートされたＬＵＮをストレージとして利用し、そのＬＵＮのブロック上に構造化された記憶空間、すなわちファイルシステムを保持するためのファイルシステムを有する。ただし、留意すべき欠点は、ホスト側ファイルシステムは、ＬＵＮ内のブロックの消去や割当て解除に関するステータスをストレージシステムに知らせないことである。ファイルシステムは通常、ファイルが消去されるときに適当なメタデータエントリを記録するが、ＬＵＮの一部のブロックがもはや使用されていないことをシステムに知らせるステータスメッセージをストレージシステムに送らない。したがって、必要に応じて更に別のブロックを割り当てることによって、そのＬＵＮは、ダイナミックに成長する（最大で、アドレス指定可能なブロックの最大数まで）ことがあり、ホスト側ファイルシステムにおいてファイルが消去されたときに、ブロックの割当て解除をしない。例えば仮に、１００ＧＢの最大サイズのＬＵＮが生成された後、そこに５０ＧＢのファイルが書き込まれた場合、ＬＵＮは５０ＧＢの空間をストレージシステム上に割り当てることになる。その後仮に、ホスト側ファイルシステムにおいてその５０ＧＢのファイルが消去されると、ファイルシステムは、適当なメタデータエントリを記録し、そのファイルシステムポインタを開放する。ただし、たとえその５０ＧＢがＬＵＮ内で未使用空間になったとしても、ＬＵＮはストレージシステム上のその５０ＧＢの空間を占有したままとなる。
【発明の開示】
【課題を解決するための手段】
【００１２】
発明の概要
ストレージシステムの論理ユニット番号（ＬＵＮ）のような暫定的に設けられたデータコンテナから未使用の記憶空間を返還要求するためのシステム、及び方法を提供することにより、従来技術の欠点を克服する。ストレージシステムのクライアント（ホスト）上でホスト側エージェントを実行する。ホスト側エージェントは、ホスト側ファイルシステムからどのブロックが開放されているかを検出し、新規のパンチ穴コマンドをストレージシステムに送り、ストレージシステムに、データコンテナ内の特定範囲のブロックの割当てを解除させる。その結果、データコンテナのサイズを縮小することが可能になる。このエージェントは、クライアントとストレージシステムとの間の従来のデータ経路を介してストレージシステムに、例えば「ＦＣＰ接続を介したベンダ固有のＳＣＳＩコマンド」のようなパンチ穴コマンドを送る。
【００１３】
代替実施形態として、このエージェントは、ホスト側ファイルシステムにファイルを繰り返し割当て、そのファイルをロックし、ストレージシステム上の基礎データコンテナのどのブロックがそのロックされたファイルを構成しているかを判定する。次にエージェントは、新規のパンチ穴コマンドをストレージシステムに送り、ロックされたファイルに関連するブロックの割当てを解除させる。この処理を繰り返し実施することにより、ファイルは確実にデータコンテナの異なるブロックに記憶され、エージェントは、データコンテナの全ての未使用ブロックを確実に開放させる。
【００１４】
本発明の上記の利点、及び他の利点は、添付の図面と併せて下記の説明を参照すると、より深く理解できるであろう。図中、同じ参照符号は、同一の構成要素、又は機能的に類似の構成要素を意味する。
【００１５】
Ａ．ストレージアプライアンス
本発明は、一実施形態として、記憶装置上に記憶された情報に対するファイルプロトコルによるアクセスとブロックプロトコルによるアクセスの両方を統合的態様で提供するストレージアプライアンス上で実施される。この文脈において、ストレージアプライアンスという用語は、ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントやストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントのユーザ（システム管理者）やクライアントのための、再利用可能な空間を含む、ストレージサービス管理の単純化や、ストレージ再構成の容易化といった機能を有するコンピュータを意味する。ストレージアプライアンスは、ファイルシステムを通じてＮＡＳサービスを提供する一方、ストレージアプライアンスは、論理ユニット番号（ＬＵＮ）エミュレーションを含むＳＡＮ仮想化を通じてＳＡＮサービスも提供することができる。本明細書の説明は、ストレージアプライアンスに関するものとなっているが、本発明の原理は、いかなるストレージシステムにも適用することができる。したがって、ストレージアプライアンスの使用は、単なる例と考えなければならない。
【００１６】
図５は、ディスク５３０のような記憶装置上での情報の編成に関するストレージサービスを提供するように構成されたストレージアプライアンス５００を示す略ブロック図である。図示のストレージアプライアンス５００は、プロセッサ５２２、メモリ５２４、並びに、システムバス５２３によって相互接続された複数のネットワークアダプタ５２５、５２６、５２８を含むストレージシステムとして実施される。このマルチプロトコルストレージアプライアンスは、情報を名前付きディレクトリ、ファイル、及び仮想ディスク（ｖｄｉｓｋ）ストレージオブジェクトの階層構造としてディスク５３０上に論理編成する仮想化システム（及び、特に、ファイルシステム）を提供するストレージオペレーティングシステム６００を更に含む。
【００１７】
ＮＡＳ系ネットワーク環境のクライアントはファイルの記憶観点を有する一方、ＳＡＮ系ネットワーク環境のクライアントはブロック、又はディスクの記憶観点を有する。その目的のために、ストレージアプライアンス５００は、論理ユニット番号（ＬＵＮ）、又はｖｄｉｓｋオブジェクトの生成によって、ＳＡＮクライアントにディスクを提供（エキスポート）する。ｖｄｉｓｋオブジェクト（以後「ｖｄｉｓｋ」）は、仮想化ファイルシステムによって実施される特殊なファイルタイプであり、ＳＡＮクライアントから見た場合、エミューレートディスクとして解釈される。その後、ストレージアプライアンスは、後で詳しく説明するエキスポート管理によって、それらをｖｄｉｓｋをＳＡＮクライアントからアクセスできるようにする。
【００１８】
図示の実施形態において、メモリ５２４は、プロセッサやアダプタによってアドレス指定可能な、本発明に関連するソフトウェアプログラムコードやデータ構造を記憶する複数の記憶場所を有する。また、プロセッサやアダプタは、そうしたソフトウェアプログラムコードを実行し、データ構造を操作するように構成された処理要素、及び／又は論理回路を含む。ストレージオペレーティングシステム６００の幾つかの部分は通常、メモリ上に置かれ、処理要素によって実行され、とりわけ、アプライアンスによって実施されるストレージサービスを支援する種々の記憶処理を実施することにより、ストレージアプライアンスの機能を構成する。当業者には明らかなように、本明細書に記載する本発明のシステム、及び方法は、他の処理手段や、種々のコンピュータ読み取り可能媒体を含む他の記憶手段を使用して実施してもよい。
【００１９】
ネットワークアダプタ５２５は、ポイント・ツー・ポイントリンク、ワイドエリアネットワーク、公衆回線（インターネット）上で実施される仮想私設ネットワーク、又は、共有ローカルエリアネットワーク（以後、例示的イーサネットネットワーク５６５と呼ぶ）を介して、ストレージアプライアンスを複数のクライアント５０６ａ，ｂに接続する。したがって、ネットワークアダプタ５２５は、ストレージアプライアンスを従来のイーサネットスイッチ５７０のようなネットワークスイッチに接続するために必要となる機械的、電気的、及び信号的回路を有するネットワークインタフェースカード（ＮＩＣ）を含む場合がある。ＮＡＳ系ネットワーク環境の場合、クライアントは、マルチプロトコルアプライアンス上に記憶された情報をファイルとしてアクセスする。クライアント５６０は、トランスミッション・コントロール・プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）のような所定のプロトコルにしたがって、データフレームやデータパケットをやりとりすることにより、ネットワーク５６５を介してストレージアプライアンスと通信する。
【００２０】
クライアント５６０は、ＵＮＩＸオペレーティングシステム（Ｒ）やＷｉｎｄｏｗｓ（Ｒ）オペレーティングシステムのような種々のオペレーティングシステム上でアプリケーションを実行するように構成された汎用コンピュータであってもよい。クライアントシステムは一般に、ＮＡＳ系ネットワークを介して情報をアクセスする場合（ファイルやディレクトリの形で）、ファイルベースのアクセスプロトコルを使用する。したがって、各クライアント５６０は、ネットワーク５６５を介してアプライアンスにファイルアクセスプロトコルメッセージ（パケットの形をしている）を発行することによって、ストレージアプライアンス５００にサービスを要求する。当業者には明らかなように、他のタイプのオペレーティングシステム上で動作する他のクライアントも、他のファイルアクセスプロトコルを使用して、この統合マルチプロトコルストレージアプライアンスと通信する場合がある。
【００２１】
図示のように、クライアント（ホスト）５６０ｂは、１又は複数のアプリケーション５９２との間のインタフェースを提供するファイルシステム５９０を有する。図示のように、ホスト側ファイルシステム５９０は、ストレージシステムによって提供されるデータコンテナの上に重ねられたファイルシステムを実施する。例えば、ストレージシステムは、ホスト側ファイルシステム５９０がデータの記憶に使用するＬＵＮをエキスポートする場合がある。図示の実施形態において、また、クライアント５６０ｂ上では、新規なホスト側エージェント５９４ｂも実行される。本発明によれば、暫定的に設けられたデータコンテナのエージェント５９４ブロックは、後で詳しく説明するように、新規なパンチ穴コマンドをストレージシステムに送信することによって、返還要求することができる。あるいは、クライアント５６０ａ上で実行される非ファイルシステムアプリケーション５９６は、データベースシステムや、他のシステムを含む場合がある。本発明の代替実施形態によれば、クライアント５６０ａ上では、新規なエージェント５９４も実行される。
【００２２】
また、ストレージネットワーク「ターゲット」アダプタ５２６は、マルチプロトコルストレージアプライアンス５００をクライアント５６０に接続し、クライアント５６０は、記憶された情報をブロック、又はディスクとしてアクセスするように更に構成される。ＳＡＮ系ネットワーク環境の場合、ストレージアプライアンスは、図示のファイバチャネル（ＦＣ）ネットワーク５８５に接続される。ＦＣは、ＳＡＮデプロイメントにおいて主に見られる、プロトコルや媒体の適合性を記載したネットワーク規格である。ネットワークターゲットアダプタ５２６は、アプライアンス１００を従来のＦＣスイッチ５８０のようなＳＡＮネットワークスイッチに接続するために必要とされる機械的、電気的、信号的回路を有するＦＣホストバスアダプタ（ＨＢＡ）を含む場合がある。ＦＣ  ＨＢＡは、ＦＣアクセスを可能にする他に、ストレージアプライアンスのファイバチャネルネットワーク処理の負荷を軽減することもできる。
【００２３】
クライアント５６０は一般に、ＳＡＮ系ネットワークを介して情報にアクセスする場合（ブロック、ディスク、又はｖｄｉｓｋの形で）、スモールコンピュータシステムインタフェース（ＳＣＳＩ）プロトコルのようなブロックベースのアクセスプロトコルを使用する。ＳＣＳＩは、ディスク５３０のような種々の周辺装置をストレージアプライアンス５００に取り付けるための標準的で、デバイスに依存しないプロトコルを備えた周辺機器入出力インタフェースである。ＳＣＳＩ用語として、ＳＡＮ環境で動作するクライアント５６０のうち、データの要求やコマンドを発行するものは、「イニシエータ（Initiator）」と呼ばれる。したがって、マルチプロトコルストレージアプライアンスは、要求／応答プロトコルにしたがってイニシエータから発行された要求に応答するように構成された「ターゲット」である。ＦＣプロトコルによれば、イニシエータ、及びターゲットは、全世界的な名前（ＷＷＮ）を含む終点アドレスを有する。ＷＷＮは、８バイトの数値からなる一意の識別であり、例えば、ノード名やポート名である。
【００２４】
ストレージアプライアンス５００は、「ＳＣＳＩ  ｏｖｅｒ  ＴＣＰ（ｉＳＣＳＩ）」プロトコルや「ＳＣＳＩ  ｏｖｅｒ  ＦＣ（ＦＣＰ）」プロトコルのような、ＳＡＮデプロイメントにおいて使用される種々のＳＣＳＩ系プロトコルをサポートする。したがって、イニシエータ（以後、クライアント５６０）は、ネットワーク５６５、５８５を介してｉＳＣＳＩメッセージやＦＣＰメッセージを発行することにより、ターゲットにサービスを要求し、ディスク上に格納された情報にアクセスする。当業者には明らかなように、クライアントは、他のブロックアクセスプロトコルを使用して、この統合マルチプロトコルストレージアプライアンスにサービスを要求する場合もある。複数のブロックアクセスプロトコルをサポートすることによって、マルチプロトコルストレージアプライアンスは、異種ＳＡＮ環境にあるｖｄｉｓｋ／ＬＵＮに対する統一的で整然としたアクセス手段を提供する。
【００２５】
ストレージアダプタ５２８は、ストレージアプライアンス上で実行されているストレージオペレーティングシステム６００と協働し、クライアントから要求された情報にアクセスする。この情報は、ディスク５３０上に記憶されている場合もあれば、情報を記憶するように構成された他の同様の媒体に記憶されている場合もある。ストレージアダプタは、従来の構成のＦＣシリアルリンクトポロジのようなＩ／Ｏ相互接続構成を介して、ディスクに接続されるＩ／Ｏインタフェース回路を有する。情報は、ストレージアダプタによって読み出され、必要であればプロセッサ５２２（又は、アダプタ５２８自体）によって処理された後、システムバス５２３を介してネットワークアダプタ５２５、５２６へと転送され、そこで、その情報は、パケット、又はメッセージに成形され、クライアントへ返送される。
【００２６】
アプライアンス５００上での情報の記憶は、好ましくはディスク空間全体の論理的構成を規定する１又は複数のストレージボリューム（例えば、ＶＯＬ１〜２  ５５０）として実施され、ストレージボリュームは一群の物理的ストレージディスク５３０を含む。ボリューム内のディスクは、ＲＡＩＤ（Redundant Array of Independent Disks）の１又は複数のグループとして編成される。ＲＡＩＤ実施形態は、ＲＡＩＤグループ内の所与の数の物理的ディスクにわたってデータを「ストライプ」状に書き込み、そのストライプ状のデータに関する適当な冗長情報を記憶することにより、データ記憶の信頼性／完全性を向上させる。この冗長情報により、記憶装置が故障した場合でも、失われたデータの復元が可能となる。当業者には明らかなように、本発明にしたがって、ミラーリングのような他の冗長技術を使用してもよい。
【００２７】
具体的には、各ボリューム５５０は、ＲＡＩＤグループ５４０、５４２、及び５４４として編成された物理ディスク５３０のアレイから構成される。図示のＲＡＩＤ４レベル構成によれば、各ＲＡＩＤグループの物理ディスクは、ストライプ状のデータ（Ｄ）を記憶するように構成されたディスクと、そのデータのパリティ（Ｐ）を記憶するように構成されたディスクとを含む。なお、他のＲＡＩＤレベル構成（例えば、ＲＡＩＤ５）も、本発明の教示にしたがって使用することが可能である。例示的実施形態として、最少数である一台のパリティディスクと１台のデータディスクを使用する場合がある。
【００２８】
Ｂ．ストレージオペレーティングシステム
ディスク５３０へのアクセスを容易にするために、ストレージオペレーティングシステム６００は、ディスク５３０によって提供される記憶空間を「仮想化」する仮想化システムのｗｒｉｔｅ−ａｎｙｗｈｅｒｅファイルシステムを実施する。このファイルシステムは、情報を名前付きディレクトリやファイルオブジェクト（以後「ディレクトリ」及び「ファイル」）の階層構造としてディスク上に論理編成する。ディスク上の「各ファイル」は、データのような情報を記憶するように構成された一連のブロックとして実施される一方、ディレクトリは、他のファイルやディレクトリの名前はそれらへのリンクを記憶する特殊形式のファイルとして実施される場合がある。仮想化システムによれば、更に、情報を名前付きｖｄｉｓｋの階層構造としてディスク上に論理編成することができ、名前付きファイルやディレクトリに対するファイルベース（ＮＡＳ）アクセスを可能にすることにより、記憶装置に対するＮＡＳとＳＡＮによる統合的記憶方法を提供する一方、更に、ファイルベースのストレージプラットフォーム上の名前付きｖｄｉｓｋに対するブロックベース（ＳＡＮ）アクセスも更に可能となる。ファイルシステムは、ＳＡＮデプロイメントにおける基礎的な物理記憶装置の管理の複雑さを単純化する。
【００２９】
上記のように、ｖｄｉｓｋは、普通のファイル（正規のファイル）に由来するボリューム上の特殊なファイルタイプであって、ディスクのエミュレーションを可能にするエキスポート制限、及び処理制限を有する特殊なファイルタイプである。ｖｄｉｓｋは、例えばＮＦＳプロトコルやＣＩＦＳプロトコルを使用して作成可能なファイルとは違い、例えばユーザインタフェース（ＵＩ）によりストレージアプライアンス上に特殊なタイプのファイル（オブジェクト）として作成される。図示のように、ｖｄｉｓｋは、データを保持するための特殊なファイルｉｎｏｄｅと、セキュリティ情報のような属性を保持するための少なくとも１つの関連ストリームｉｎｏｄｅとを含むマルチｉｎｏｄｅオブジェクトである。特殊ファイルｉｎｏｄｅは、エミューレトディスクに関連するアプリケーションデータのようなデータを記憶するためのメインコンテナとして機能する。ストリームｉｎｏｄｅは、例えば、リブート動作を超えたＬＵＮやエキスポートの持続を可能にする属性であり、更に、ＳＡＮクライアントに関して、ｖｄｉｓｋを単一のディスクオブジェクトとして管理することを可能にする。本発明とともに使用するのに都合がよいｖｄｉｓｋ、及び関連ｉｎｏｄｅの一例は、「STORAGE VIRTUALIZATION BY LAYERING VDISKS ON A FILE SYSTEM」と題する米国特許出願第１０／２１６４５３号に記載されている。この文献は、参照によりその内容全体が本明細書に援用される。
【００３０】
本発明の一実施形態によれば、ｖｄｉｓｋが生成されるとき、ｖｄｉｓｋは通常、暫定的に設けられたデータコンテナとして作成される。ただし、ストレージオペレーティングシステムは更に、新たに生成されたｖｄｉｓｋの「穴」を埋めるために、適当な量の記憶空間を予約する。この空間予約技術によれば、データコンテナを完全に埋めるための十分な空間の存在がディスク上に確保される。例示的空間予約ポリシー及び技術の詳細については、「SYSTEM AND METHOD FOR RESERVING SPACE TO GUARANTEE FILE WRITABILITY IN A FILE SYSTEM SUPPORTING PERSISTENT CONSISTENCY POINT IMAGES」と題するＰｅｔｅｒ  Ｆ．Ｃｏｒｂｅｔｔ他による米国特許出願第１０／４２３３９１号に記載されている。
【００３１】
図示の実施形態において、ストレージオペレーティングシステムは、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているＮｅｔＡｐｐ  Ｄａｔａ  ＯＮＴＡＰオペレーティングシステムであることが好ましい。このオペレーティングシステムは、Ｗｒｉｔｅ  Ａｎｙｗｈｅｒｅ  Ｆｉｌｅ  Ｌａｙｏｕｔ（ＷＡＦＬ）ファイルシステムを実施する。ただし、本明細書に記載する発明の原理にしたがって使用するように拡張することで、ｗｒｉｔｅ  ｉｎ−ｐｌａｃｅファイルシステムを含む任意の適当なストレージオペレーティングシステムを使用することができる。したがって、「ＷＡＦＬ」という用語を使用した場合であっても、この用語は、本発明の教示に適合する任意のファイルシステムを意味するものとして広い意味で解釈しなければならない。
【００３２】
本明細書で使用される場合、「ストレージオペレーティングシステム」という用語は通常、データアクセスを管理するコンピュータ上で動作するコンピュータ実行可能コードを意味し、マルチプロトコルストレージアプライアンスの場合、このコードは、マイクロカーネルとして実施されるＤａｔａ  ＯＮＴＡＰストレージオペレーティングシステムのようなデータアクセスセマンティックを実施する。ストレージオペレーティングシステムは、ＵＮＩＸやＷｉｎｄｏｗｓ  ＮＴのような汎用オペレーティングシステム、あるいは本明細書に記載するようなストレージアプリケーションのために構成された、機能設定が可能な汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施してもよい。
【００３３】
さらに、当業者には明らかなように、本明細書に記載する本発明のシステム及び方法は、ストレージシステムとして実施され、又はストレージシステムを含むスタンドアロンのコンピュータ、又はその一部を含めて、いかなるタイプの特殊な目的（例えばストレージサービスを提供するアプリケーション）にも、いかなるタイプの汎用コンピュータにも適用することができる。さらに、本発明の教示は、種々のストレージシステムアーキテクチャに適合させることができ、限定はしないが例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及びクライアント又はホストコンピュータに直接取り付けられたディスクアセンブリのようなアーキテクチャに適合させることができる。したがって、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置又はシステムに関連する任意のサブシステムの他にも、そのような構成を含むものとして広い意味で解釈しなければならない。
【００３４】
図６は、本発明とともに使用するのに都合がよいストレージオペレーティングシステム６００を示す略ブロック図である。ストレージオペレーティングシステムは、統合ネットワークプロトコルスタック形成するように編成された一連のソフトウェア層を含み、より一般的に言えば、マルチプロトコルストレージアプライアンスに記憶された情報にブロックアクセスプロトコルとファイルアクセスプロトコルを使用してアクセスするためのデータ経路をクライアントに提供するマルチプロトコルエンジンを含む。プロトコルスタックは、ＩＰ層６１２、及びそれを支えるトランスポート機構、並びにＴＣＰ層６１４及びユーザデータグラムプロトコル（ＵＤＰ）層６１６のような、ネットワークプロトコル層に対するインタフェースとして機能するネットワークドライバ（例えば、ギガビットイーサネットドライバ）のメディアアクセス層６１０を含む。ファイルシステムプロトコル層は、マルチプロトコルファイルアクセスを提供し、その目的のために、ＤＡＦＳプロトコル６１８、ＮＦＳプロトコル６２０、ＣＩＦＳプロトコル６２２、及びハイパーテキストプロトコル（ＨＴＴＰ）プロトコル６２４を含む。仮想インタフェース（ＶＩ）層６２６は、ＶＩアーキテクチャを実施し、ＤＡＦＳプロトコル６１８による要求に応じて、ＲＤＭＡのようなダイレクトアクセストランスポート（ＤＡＴ）機能を提供する。
【００３５】
ｉＳＣＳＩドライバ層６２８は、ＴＣＰ／ＩＰネットワークプロトコル層を介したブロックプロトコルアクセスを提供する一方、ＦＣドライバ層６３０は、ＦＣ  ＨＢＡ５２６と協働し、統合ストレージアプライアンスとの間でブロックアクセス要求を送受信する。ＦＣドライバ、及びｉＳＣＳＩドライバは、ＦＣ固有のアクセス制御やｉＳＣＳＩ固有のアクセス制御をＬＵＮ（ｖｄｉｓｋ）に提供し、したがって、ｉＳＣＳＩとＦＣＰのいずれか一方へのｖｄｉｓｋのエキスポート、あるいは、マルチプロトコルストレージアプライアンス上の単一のｖｄｉｓｋにアクセスする場合は、ｉＳＣＳＩとＦＣＰの両方へのｖｄｉｓｋのエキスポートを管理する。さらに、ストレージオペレーティングシステムは、ＲＡＩＤプロトコルのようなディスクストレージプロトコルを実施するディスクストレージ層６４０、及びＳＣＳＩプロトコルのようなディスクアクセスプロトコルを実施するディスクドライバ層６５０を含む。
【００３６】
これらのディスクソフトウェア層を統合ネットワークプロトコルスタック層に橋渡しするのが、仮想化システム６５５である。仮想化システム６５５は、例えばｖｄｉｓｋモジュール６７０及びＳＣＳＩターゲットモジュール６６０として実施される仮想化モジュールと協働するファイルシステム６６５によって実施される。なお、ｖｄｉｓｋモジュール６７０、ファイルシステム６６５、及びＳＣＳＩターゲットモジュール６６０は、ソフトウェアで実施しても、ハードウェアで実施しても、ファームウェアで実施してもよく、それらの組み合わせで実施してもよい。ｖｄｉｓｋモジュール６７０は、ファイルシステム６５５の上に層として形成され（かつ、ファイルシステムと交信し）、ブロックベースのＳＣＳＩターゲットモジュールからファイルシステムによって管理されるブロックへのデータ経路を提供する。実際には、ｖｄｉｓｋモジュール６７０は、とりわけ、システム管理者によりユーザインタフェースを通して発行された複雑な一連のｖｄｉｓｋ（ＬＵＮ）コマンドを実行することにより、ＳＡＮデプロイメントデプロイメントを管理する。こうしたｖｄｉｓｋコマンドは、ｖｄｉｓｋを実施するためにファイルシステム６６５及びＳＣＳＩターゲットモジュール６６０と交信する原始的なファイルシステム処理（「プリミティブ」）に変換される。
【００３７】
次に、要求に応答して、ＳＣＳＩターゲットモジュール６６０は、アクセス要求の中で指定されたＬＵＮへの論理ブロックアクセスを特殊なｖｄｉｓｋファイルタイプへの仮想ブロックアクセスに変換し、ｖｄｉｓｋをＬＵＮに変換する。例えばＳＣＳＩターゲットモジュールは、ＦＣドライバ６３０やｉＳＣＳＩドライバ６２８とファイルシステム６６５との間に配置され、それによってＳＡＮブロック（ＬＵＮ）空間とファイルシステム空間との間に、仮想化システム６５５の変換層を提供し、ＬＵＮはｖｄｉｓｋとして表現される。さらに、図示の実施形態において、ＳＣＳＩターゲットモジュール６６０は、ホスト側エージェントから新たに受信したパンチ穴コマンドを解釈し、ファイルシステム６６５及びｖｄｉｓｋモジュール６７０に関する、もはや使用されていないブロックの割当て解除を実施する。後で詳しく説明するように、この新規のパンチ穴コマンドは、暫定的に設けられたデータコンテナの上に重ねられた構造的記憶の量が減少するのに応じて、そこに現在割り当てられているブロックの数の削減を許可する。
【００３８】
ファイルシステム６６５は、例えば４キロバイト（ｋＢ）のブロックを使用するブロックベースのディスク上ファイルフォーマット表現を有し、ｉｎｏｄｅを使用してファイルを表現する上記のＷＡＦＬファイルシステムを実施する。広く言えば、ファイルシステムの全てのｉｎｏｄｅが、ｉｎｏｄｅファイルとして編成される。ファイルシステム（ｆｓ）情報ブロックは、ファイルシステムにおける情報のレイアウトを指定するもので、ファイルシステムの他の全てｉｎｏｄｅを含むファイルのｉｎｏｄｅを含む。各ボリュームはｆｓｉｎｆｏブロックを有し、ｆｓｉｎｆｏブロックは、ファイルシステムの例えばＲＡＩＤグループ内の固定位置に記憶されることが望ましい。ルートｆｓｉｎｆｏブロックのｉｎｏｄｅは、ｉｎｏｄｅファイルのブロックを直接参照する（指し示す）場合もあれば、そのｉｎｏｄｅファイルの間接ブロックを参照してから、そのｉｎｏｄｅファイルの直接ブロックを参照する場合もある。ｉｎｏｄｅファイルの各直接ブロックの中には、ｉｎｏｄｅが埋め込まれる。各ｉｎｏｄｅは間接ブロックを参照してから、ファイル又はｖｄｉｓｋのデータブロックを参照する場合がある。
【００３９】
なお、マルチプロトコルストレージアプライアンスにおいて受信されたクライアント要求に対してデータストレージアクセスを実施するために必要とされる、上に記載したストレージオペレーティングシステム層を通るソフトウェア「経路」は、ハードウェアで実施してもよい。すなわち、本発明の代替実施形態では、オペレーティングシステム層（仮想アシステム６５５を含む）を通るストレージアクセス要求データ経路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）や、特定用途向けＩＣ（ＡＳＩＣ）の中に埋め込まれた論理回路として実施してもよい。この種のハードウェア実施形態によれば、クライアント５６０によって発行されるファイルアクセス又はブロックアクセスの要求に応答してアプライアンス５００により提供されるストレージサービスの性能を向上させることができる。
【００４０】
暫定的に設けられたデータコンテナからの未使用空間の返還要求
本発明は、暫定的に設けられたデータコンテナから未使用空間を返還要求するシステム、及び方法に関する。本発明によれば、ストレージシステム上に格納された暫定的に設けられたデータコンテナは、そのデータコンテナの上に重ねて設けられた構造的記憶、例えばホスト側ファイルシステムが減少したときに、そのデータコンテナに割り当てられたブロックの数を減らすことが可能となる。一実施形態として、ストレージシステムのクライアント上実行されるホスト側エージェントは、その上に重ねて設けられた構造的記憶によってもはや使用されていないために返還を要求できる適当なブロックを判定する。次に、このエージェントは新規なパンチ穴コマンドを生成し、クライアントとストレージシステムの間の従来のデータ経路を使用して、それをストレージシステムに送る。例えば、このパンチ穴コマンドは、ベンダ固有のＳＣＳＩコマンドとして実施することができる。ただし、代替実施形態として、パンチ穴コマンドは、他の技術を使用して実施してもよい。非ファイルシステムアプリケーションを使用するクライアントの場合、ホスト側エージェントは、アプリケーションと連動し、記憶空間を使用するホスト側アプリケーションによって使用されていないために、返還要求することが可能なデータコンテナの適当なブロックを判定する。次いでこのエージェントは、適当なパンチ穴コマンドを生成し、それをストレージシステムに送る。
【００４１】
図７Ａは、本発明の一実施形態による新規なパンチ穴コマンド構造７００Ａのフォーマットを示す略ブロック図である。上記のように、パンチ穴コマンドは、図示のように、ベンダ固有のＳＣＳＩコマンドとして実施される。ただし、パンチ穴コマンドは、他の方法で実施してもよく、例えば、他のプロトコル仕様として実施してもよい。パンチ穴コマンド構造７００Ａは、オペレーションコードフィールド７０５と、範囲数フィールド７１０と、制御フィールド７１５と、論理ブロックアドレスフィールド７２５及び範囲長フィールド７３０を含む第１の範囲フィールド７２０とを含み、代替実施形態では、さらに別のフィールド７３５を含む場合もある。オペレーションコードフィールド７０５は、このコマンドをパンチ穴コマンドとして識別する。範囲数フィールド７１０は、このコマンドに含まれる範囲値の数を指定する。制御フィールド７１５は、ストレージシステムに制御情報を渡すために使用される。第１の範囲フィールド７２０は、２つのサブフィールド、すなわち、論理ブロックアドレスフィールド７２５と範囲長フィールド７３０を含む。論理ブロックアドレスフィールド７２５は、割当てられるブロックの範囲の開始点を指定する一方、範囲長フィールド７３０は、割当て解除されるブロックの数を指定する。図示の実施形態では、第１の範囲フィールド７２０のような範囲フィールドは、範囲数フィールド７１０で指定された範囲の数と同じ数だけ存在する。パンチ穴コマンド７００Ａは、フィールド７２５で指定された論理ブロックアドレスからそれぞれ始まり、フィールド７３０で指定されたブロック数の間だけ継続する１又は複数のブロック範囲を識別する。
【００４２】
同様に、図７Ｂは、本発明の代替実施形態によるパンチ穴コマンド７００Ｂのフォーマットを示す略ブロック図である。パンチ穴コマンド構造７００Ｂは、オペレーションコードフィールド７０５、ビットマップサイズフィールド７４０、制御フィールド７１５、論理ブロックアドレスフィールド７４５、及びビットマップフィールド７５０を含み、代替実施形態では、更に別のフィールド７３５を含む場合がある。オペレーションコードフィールド７０５は、このコマンドをパンチ穴コマンドとして識別する。ビットマップサイズフィールド７４０は、ビットマップフィールド７５０に格納されるビットマップのサイズを指定する。制御フィールド７１５は、ストレージシステムに制御情報を渡すために使用される。論理ブロックアドレスフィールド７４５は、開始ブロックアドレスを指定する。ビットマップフィールド７５０は、各ビットが１つのブロックを表わすビットマップを格納する。この代替実施形態では、ストレージシステムは、ビットマップ中のビットのオフセットをコマンドに含まれる論理ブロックアドレスに加えることにより、どのブロックの割当てを解除すべきかを判定する。ビットがセットされている場合、対応するブロックの割当ては解除される。上記のように、これらの例示的コマンド構造７００Ａ、Ｂは、単なる例に過ぎない。新規なパンチ穴コマンドは、当業者にとって明らかな他の構造を使用して実施することもできる。
【００４３】
図８は、本発明の一実施形態による、暫定的に設けられたデータコンテナから未使用空間を返還要求するための手順８００のステップを詳細に示すフロー図である。本明細書では、データコンテナは例えば、論理ユニット番号（ＬＵＮ）として記載される。ただし、本発明の原理にしたがって、任意の適当なデータコンテナを使用することができる。したがって、ＬＵＮという用語を制限の意味に解釈すべきではなく、任意の適当なデータコンテナを使用することができる。手順８００はステップ８０５で始まり、ステップ８１０まで続き、そこで、ストレージシステムのクライアント上で実行されるエージェントは、ＬＵＮ上でもはや使用されていないブロックがあるか否かを判定する。この判定は例えば、ホスト側エージェントがファイルシステムに問い合わせをすることによって行われ、あるいはファイルシステムメタデータを検査し、ファイルシステム内のまだ開放されていないブロックを判定することによって行われる。あるいは、非ファイルシステムアプリケーションを使用するクライアント上でホスト側エージェントが実行される実施形態では、ホスト側エージェントは、アプリケーションに問い合わせをするか、及び／又は、該エージェントが有する構造化されたストレージメタデータを分析することによって、ＬＵＮ上にもはや使用されていないブロックがあるか否かを判定することができる。
【００４４】
ＬＵＮ上でもはや使用されていない多数のブロックが識別されると、エージェントは、新規なパンチ穴コマンドを生成し、そのコマンドをそのＬＵＮに向けて送信する（ステップ８１５）。生成されたパンチ穴コマンドは、開放すべきブロックの適当な範囲を識別する。パンチ穴コマンドは通常、クライントとストレージシステムとの間の従来のデータ経路を介して送信される。例えば、クライアントがＦＣＰを使用してストレージシステムと普通に通信する場合、エージェントは、パンチ穴コマンドを生成し、それをＦＣＰプロトコルを使用して送信する。これに応答し、ストレージシステムは、ＬＵＮ上の識別された範囲のブロックを開放し、ストレージシステムによって再使用すべき基礎ブロックの割当てを解除する。これらのブロックは通常、それらがファイルシステムによって再使用可能であることを示すように適当なファイルシステムメタデータを更新することによって、その割当てが解除される。さらに、上位階層における間接ブロックのポインタのような、ブロックを指し示すポインタがクリアされる。ステップ８２５において、ストレージシステムは、そのコマンドが無事に実行されたことを示す確認、又は適当なエラーコードを含む応答メッセージを返信する。そして手順は、ステップ８３０で完了する。
【００４５】
代替実施形態として、エージェントは、解放することが可能なブロックの識別に関して、比較的積極的である。図９は、本発明の代替実施形態による暫定的に設けられたデータコンテナから未使用空間を返還要求する手順９００のステップを詳細に示すフロー図である。手順９００はステップ９０５で始まり、ステップ９１０まで続き、そこでエージェントは、ホスト側ファイルシステム上にファイルを割り当てる。これは、所定サイズのファイルを生成する従来のファイルシステム処理コマンドを使用して行うことができる。ステップ９１５では、エージェントは、割り当てられたファイルをロックし、そのファイルに対して何も処理が行われないようにする。このロックは、従来のホスト側ファイルシステムコマンドを使用して生成することができる。ステップ９２０において、エージェントは、例えば、ファイルシステム内における特定ファイルの位置を判定する従来のファイルシステム処理を使用することにより、どのデータコンテナに、割り当てられたファイルが記憶されているかを判定する。ステップ９２５において、エージェントは、割りあてられたファイルが存在するブロック範囲を識別するパンチ穴コマンドを作成し、それをストレージシステムに送信する。次に、エージェントは、ステップ９３０で割り当てられたファイルを解放し、その後、手順はステップ９３５で終了する。割り当てられたファイルを開放することによって、ホスト側ファイルシステムは、そのファイルに以前使用されていたブロックがもはや使用されていないことを示すように、適当なポインタを更新する。同様に、パンチ穴コマンドがストレージシステムによって処理された結果、ストレージシステムのデータコンテナの基礎となるブロックもまた開放され、ストレージシステムによって再使用することができるようになる。
【００４６】
もう一度まとめると、本発明は、ストレージシステム上の暫定的に設けられたデータコンテナにおける未使用空間を返還要求するためのシステム、及び方法を提供する。ホスト側エージェントは、例えばホスト側ファイルシステムに問合せをすることによって、あるいはファイルを作成し、作成されたファイルが格納されるブロックを判定することによって、データコンテナに対する割当てを解除することが可能な、クライアントの構造化されたストレージのブロックを判定する。次にエージェントは、データコンテナ上の割当てを解除すべきブロックを指定する新規なパンチ穴コマンドを生成し、そのパンチ穴コマンドをデータコンテナを提供しているストレージシステムに送信する。パンチ穴コマンドの受信に応答して、ストレージシステムは、データコンテナ上の識別されたブロック（又はブロック範囲）の割当てを解除し、データコンテナが消費する記憶空間を少なくし、それによって、そのデータコンテナに記憶されるデータ量に応じて、そのデータコンテナをダイナミックに拡大縮小できるようにする。
【００４７】
上記の説明は、本発明の特定の実施形態に関するものである。ただし、当然ながら、そうした実施形態の利点の一部又は全部を維持したまま、記載した実施形態に対して他の変形や変更を施すことも可能である。例えば、本発明の教示は、コンピュータ上で実行されるプログラム命令を含むコンピュータ読み取り可能媒体を含めて、ソフトウェアで実施することも、ハードウェアで実施することも、ファームウェアで実施することもでき、あるいはそれらの組み合わせで実施することも可能であるものと考えられる。また、本明細書の説明は、ファイルシステムの上下に暫定的に設けられたデータコンテナに関するものとなっているが、他の暫定的に設けられた実施形態を使用することも可能である。したがって、暫定的に設けられたデータコンテナをサポートする基礎ファイルシステムの使用は、単なる例とみなすべきである。したがって、本明細書の説明は、単なる例であるものと解釈され、本発明の範囲を制限するものではない。したがって、添付の特許請求の範囲の目的は、そうした変形や変更も本発明の真の思想、及び範囲の中に収めることにある。
【図面の簡単な説明】
【００４８】
【図１】暫定的に設けられたデータコンテナの例を示す略ブロック図であり、データコンテナのｉｎｏｄｅを示している。
【図２】本発明の一実施形態による、部分的にデータで占められた暫定的に設けられたデータコンテナを示す略ブロック図である。
【図３】本発明の一実施形態による、部分的にデータで占められた暫定的に設けられたデータコンテナを示す略ブロック図である。
【図４】本発明の一実施形態による、データで占められたデータコンテナを示す略ブロック図である。
【図５】本発明の一実施形態による、ストレージシステムを示す略ブロック図である。
【図６】本発明の一実施形態による図５のストレージシステムとともに使用される例示的ストレージオペレーティングシステムを示す略ブロック図である。
【図７Ａ】本発明の一実施形態による、例示的パンチ穴コマンドのフォーマットを示す略ブロック図である。
【図７Ｂ】本発明の一実施形態による、例示的パンチ穴コマンド構造のフォーマットを示す略ブロック図である。
【図８】本発明の一実施形態による、暫定的に設けられたデータコンテナにおける未使用空間を返還要求する手順のステップの詳細を示すフロー図である。
【図９】本発明の一実施形態による、暫定的に設けられたデータコンテナにおける未使用空間を返還要求する手順のステップの詳細を示すフロー図である。
【図１】
2008517383.tif 000003
【図２】
2008517383.tif 000004
【図３】
2008517383.tif 000005
【図４】
2008517383.tif 000006
【図５】
2008517383.tif 000007
【図６】
2008517383.tif 000008
【図７Ａ】
2008517383.tif 000009
【図７Ｂ】
2008517383.tif 000010
【図８】
2008517383.tif 000011
【図９】
2008517383.tif 000012
【国際調査報告】
2008517383.tif 000013
2008517383.tif 000014
2008517383.tif 000015