(57)【要約】【課題】複数の仮想ファイラーを重複するネットワークアドレスを有する複数のアドレス空間に参加させること。【解決手段】複数の仮想ファイラー（ｖｆｉｌｅｒ）等の仮想サーバを有するように構成されたファイラー等のサーバが、ネットワークアドレスの重複する可能性のある複数のプライベートネットワークアドレス空間に参加することを可能にする技術。本技術は、あるプライベートアドレス空間内でのサービス要求がファイラーでサポートされる他のプライベートアドレス空間に対して機密性が保たれ且つそれらの空間から区別できるような方法で、適当なｖｆｉｌｅｒを選択することも可能にする。ＩＰ空間は、ファイラーおよびそのストレージオペレーティングシステムが参加する各々の個別のアドレス空間を指している。変換手順にＩＰ空間識別子を適用することにより、入ってきた要求を処理するための正しいｖｆｉｌｅｒの選択と、出てゆく要求を処理するための適当なルーティングテーブルの選択とが可能になる。【選択図】図４
2010050988.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想サーバを有するように構成されたサーバが複数のプライベートネットワークアドレス空間に参加し、それらのアドレス空間内の要求に対してサービスを提供できるようにする方法であって、
仮想サーバの各々に該仮想サーバの１以上のネットワークインタフェースに割り当てられた１以上のアドレスを有するＩＰ空間を関連付けるステップと、
各ネットワークインタフェースに第１のＩＰ空間識別子（ＩＤ）をタグ付けするステップと、
前記仮想サーバに該仮想サーバによって処理される要求についてのルーティング処理を制御する１以上のルーティングテーブルを設けるステップと、
入ってきた要求を処理するために用いられるカレント仮想サーバコンテクストおよび出てゆく要求を処理するために用いられる適当なルーティングテーブルの選択を可能にする変換手順に前記第１のＩＰ空間ＩＤを適用するステップと
からなる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はファイラー等のストレージシステムに関し、詳しくはネットワークアドレスの重複する可能性がある複数のプライベートアドレス空間に参加するように構成された複数の仮想ファイラーを有するファイラーに関する。
【背景技術】
【０００２】
ファイルサーバとは、メモリ、テープ、ディスク等の書き込み可能な持続性記憶装置上での情報の編成に関するファイルサービスを提供するコンピュータである。ファイルサーバまたはファイラーは、情報をディレクトリ及びファイルの階層構造として例えばディスク上に論理的に編成するためのファイルシステムを実施するストレージオペレーティングシステムを含むストレージシステムとして実現される。「ディスク上」の各ファイルは、ファイルの実際のデータ等の情報を記憶するように構成された例えばディスクブロック等のデータ構造の集まりとして実施される。一方、ディレクトリは、他のファイルまたはディレクトリに関する情報を記憶する特別なフォーマットのファイルとして実施される。
【０００３】
更に、ストレージシステムはクライアント／サーバ形態の情報配送に従って動作するように構成され、これにより多数のクライアントがファイルサーバ等のサーバによって実行されているアプリケーションサービスにアクセスできる。この形態の場合、クライアントは、インターネット等の公衆網を介して実施されるポイント・ツー・ポイント接続、共有ローカルエリア・ネットワーク、ワイドエリアネットワーク、または、仮想私設網（ＶＰＮ）等のコンピュータネットワークを介してファイルサーバに「接続」するためのアプリケーションをコンピュータ上で実行している場合がある。各クライアントは、これらのネットワークを介してファイルシステムプロトコルメッセージを（パケットの形で）サーバへ発行することにより、ファイルサーバに対してファイルシステムのサービスを要求することができる。しかしながら、ファイルサーバは（例えばクライアントまたは「ホスト」）コンピュータに直接取り付けられた複数の記憶装置の集まりとして動作するように構成される場合もある。この場合、ユーザはそれらの記憶装置に対してアクセス（すなわち、読み出しまたは書き込み）するためのファイルシステムのサービスを要求する場合もある。
【０００４】
ディスク上でデータを上書きしないファイルシステムの１種は、write-anywhereファイルシステムである。ディスク上のあるデータブロックがディスクからメモリに取得され、新たなデータで「汚される」場合、そのデータブロックはディスク上の新たな位置に記憶され（書き込まれ）、これによって書き込み性能を最適化している。write-anywhereファイルシステムは、データがディスク上に実質的に連続的に配置された最適なレイアウトを最初に仮定する。この最適なディスクレイアウトによって効率的なアクセス動作になり、特にディスクに対するシーケンシャルリード動作について効率的なアクセス動作になる。ファイラー等のストレージシステム上で動作するように構成されたwrite-anywhereファイルシステムの一例は、カリフォルニア州サニーベールにあるネットワークアプライアンス社から入手できるＷｒｉｔｅ  Ａｎｙｗｈｅｒｅ  Ｆｉｌｅ  Ｌａｙｏｕｔ（ＷＡＦＬ（登録商標））である。ＷＡＦＬファイルシステムは、ファイラー及び関連ディスクストレージのプロトコルスタック全体の中で、マイクロカーネルとして実施される。
【０００５】
通常、ディスクストレージは一群の物理的な記憶装置（ディスク）を含む１以上の「ボリューム」として実施され、ディスク空間の全体的な論理的配置を定義している。通常、各ボリュームはそのボリューム独自のファイルシステムに関連している。ファイラーは通常、多数（数千）のユーザを支える大量の記憶装置（例えば６テラバイト等）を有している。この種のストレージシステムは、多くの用途即ち「目的」について一般的に大きすぎ、高価すぎることが多い。１ボリューム（または１ファイルシステム）の典型的な最小記憶容量でさえ約１５０ギガバイト（ＧＢ）もの大きさがあり、ほとんどの目的について一般的に大きすぎるものである。
【０００６】
ユーザは、１つのファイラーを利用するのではなく、特定の目的に適合した複数の小型サーバを購入することも可能である。しかしながら、多数の小型サーバの入手及び維持（通常こちらの方が重要）は１つのファイラーの購入よりもコストがかかる。そのため、多数のサーバを１つのサーバプラットフォーム内に統合し、それらのサーバを論理的に実現することが望まれている。従って、サーバ統合とは、多数の論理サーバあるいは仮想サーバを１つの物理プラットフォーム内に設ける能力として定義される。従来のサーバ統合ソリューションの中には、アプリケーションサービスのようにプロセスの複数のインスタンスを動作させるものがある。他のサーバ統合ソリューションには、実質的に「まとめてラックに収められた」多数の独立したサーバを１つのプラットフォーム内に設けるものがある。１つのプラットフォーム内に実現される仮想サーバの例としては、ウェブサーバ、データベースサーバ、及び、ネームサーバがある。
【０００７】
サーバ統合は、ストレージサービスプロバイダ（ＳＳＰ）の場合に特に有用である。ＳＳＰは、１つの物理的プラットフォーム、即ち「データセンター」内で複数のユーザまたはクライアントに対してデータストレージアプリケーションを「ホスティング」するサービスを提供している。このデータセンターは主としてＳＳＰによって保守され、安全で信頼性の高いストレージサービスをクライアントに提供する。典型的な構成の場合、データセンターは、独立した私設の内部ネットワーク（「イントラネット」）を有する複数の異なるクライアント環境に接続される。各イントラネットは異なるクライアント又はクライアントの部署に関連している場合があるので、物理プラットフォーム内でデータトラフィックを個別に保持しなければならない。
【０００８】
Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ（ＲＦＣ）１９１８は、３２バイトのインターネットプロトコルバージョン４（ＩＰｖ４）アドレス空間の一部を、インターネットアドレス管理機構（ＩＡＮＡ）等の第三者による許可なしに任意のイントラネットに使用することができるものとして規定している。インターネット等を介してプライベートイントラネットの「外側」にある外部ホストコンピュータと通信するためには、プライベートイントラネット上の内部ホストコンピュータは外部ホストの宛先ＩＰアドレスを有するパケット（要求）を送信する。この要求には、更に内部ホストの私設イントラネットのＩＰアドレスを表す発信元ＩＰアドレスも含まれる。このプライベートＩＰアドレスは、ネットワークアドレストランスレーション（ＮＡＴ）デバイスを用いて世界的に認められたＩＰアドレスに変換される。
【０００９】
具体的には、ＮＡＴデバイスは、私設イントラネットから出てゆくあるいは入ってきたすべてのパケットについて、私設イントラネットのＩＰアドレス（及びトランスポート番号）をプライベートではない世界的に一意なＩＰアドレス（及びポート番号）に変換する。ＮＡＴデバイスは、ＩＡＮＡによって適切に割り当てられた世界的に一意なＩＰアドレスのプールを使用する。ほとんどのデータパケットトラフィックがイントラネット内で行なわれることを想定しているため、こうした「グローバル」アドレスの小さなプールでも多数の外部ホストとの接続性を十分に提供することができる。まだ割り当てられていない世界的に一意なＩＰアドレスは不足していて、巨大なネットワークのすべてのホストに使用することはできないので、大多数の現在のネットワークではこの構成が一般的に必要になっている。現在インターネットに接続されている大多数のコンピュータは、ＮＡＴ技術を用いてインターネットサーバと通信している。
【００１０】
ＳＳＰによりサービスの提供を受ける各クライアント環境は、データセンターの異なる仮想サーバ（または仮想サーバの集合）に対応している場合があり、データセンターは、クライアントの統一見解、またはＲＦＣ１９１８準拠のプライベートＩＰアドレス空間等のネットワークリソースの「名前空間」を用いてストレージ処理を実施している。各環境の私設イントラネットは通常、「ファイアウォール」等の中間ネットワークデバイスを通してインターネットに接続される。クライアントは、自分達のストレージリソース（データセンターによってサービスの提供を受ける）をファイアウォールを通して自分達の内部ネットワークに接続することを一般的に好まない。その主な理由は、それらのデバイスが性能に悪影響を及ぼし、機能を制限するからである。そのため、イントラネットはファイアウォールをバイパスしてデータセンターに直接接続されるのが一般的である。このようなＳＳＰ構成の一般的な構成により、ＲＦＣ１９１８に準拠したクライアントのイントラネット（全てのＩＰアドレスがプライベートＩＰアドレスである）から始まりデータセンターで終わる専用ネットワークパスが設けられる。これにより、各クライアントはデータセンター上のストレージリソースにアクセスするときに、プライベートアドレス空間のＩＰアドレスを利用できるようになる。
【００１１】
私設イントラネットの各々は、自分のプライベートＩＰアドレスの名前空間内では一意のＩＰアドレスを保証しているが、プライベート名前空間同士の間にこのような保証は存在しない。各クライアント環境がその私設イントラネットを介してＳＳＰに直接接続されるので、「ホスティング」しているデータセンターは、重複するＩＰアドレスを有する複数の個別のクライアントＩＰアドレス空間に参加してしまい、競合する場合がある。依然としてデータセンターは、各クライアントのイントラネット及び内部アドレス空間内の全てのデータ要求トラフィックについて完全性および機密性を維持しつつ、これらの競合したＩＰアドレスへ宛てた要求に対してもサービスを提供することが望まれている。
【００１２】
さらに、ＳＳＰは自分のサービスを宣伝する必要があり、従ってブロードキャストパケットを発行する必要がある。ブロードキャストパケットは、実際にサービスを提供する過程で発せられる場合もあり、特に名前解決の処理の際に発行される。この場合データセンターは、ある仮想サーバのコンテクストで生成されたブロードキャストパケットがその仮想サーバに関連するクライアントの私設イントラネットを介してのみ転送されることを保証しなければならない。さらに、イントラネットを介してデータセンターで受信されるブロードキャストパケットは、データセンタープラットフォーム内に実現された様々な仮想サーバの間で、そのパケットの発信元と宛先との両方を識別できるものでなければならない。
【００１３】
本発明の上記の利点及び更なる利点は添付の図面とともに下記の説明を参照することによってさらによく理解することができ、図面中で似たような符合は全く同じ要素あるいは機能的に類似した要素を指している。
【図面の簡単な説明】
【００１４】
【図１】本発明に有利に用いられる複数のクライアントおよび１つのサーバを含むコンピュータネットワークを示す略ブロック図である。
【図２】本発明に有利に用いられるネットワークストレージアプライアンスまたはファイラー等のサーバを示す略ブロック図である。
【図３】本発明に有利に用いられるストレージオペレーティングシステムを示す略ブロック図である。
【図４】本発明に有利に用いられるファイラーの一実施形態を示す略図である。
【図５】本発明に有利に用いられるＩＰ空間データベースを示す略ブロック図である。
【図６】本発明による入力パス変換手順に必要なステップのシーケンスを示すフロー図である。
【図７】本発明による出力パス変換手順に必要なステップのシーケンスを示すフロー図である。
【発明の概要】
【課題を解決するための手段】
【００１５】
本発明は、仮想ファイラー（ｖｆｉｌｅｒ）等の複数の仮想サーバを用いて構成されたファイラー等のサーバが、ネットワークアドレスの重複する可能性がある複数のプライベートネットワークアドレス空間に参加することを可能にする技術を含む。そのため、本発明によると、あるプライベートアドレス空間内のサービス要求がファイラーでサポートされる他のプライベートアドレス空間に対して機密性が保たれ且つそれらの空間から区別できるような方法で、適当なｖｆｉｌｅｒを選択することも更に可能になる。ｖｆｉｌｅｒは、マルチプロトコルサーバのインスタンスを確立するための、ファイラーのネットワークリソースおよびストレージリソースの論理的分割である。このネットワークリソースには、ネットワークインタフェースに割り当てられたインターネットプロトコル（ＩＰ）アドレス等のネットワークアドレスが含まれる。
【００１６】
本明細書で説明するように、ＩＰ空間とはファイラーおよびそのストレージオペレーティングシステムが参加する各々の個別のＩＰアドレス空間を意味している。各ｖｆｉｌｅｒは１つのＩＰアドレス空間に関連しており、従って１つのＩＰ空間に属している。好ましくは、ＩＰ空間はファイラーの「フロントエンド」即ちネットワークインタフェースに対して提供される。このコンテクストにおいて、ネットワークインタフェースという用語は、ＩＰアドレスを割り当て可能なインタフェースを意味している。各ネットワークインタフェースには、そのインタフェースをＩＰ空間にバインドするＩＰ空間識別子（ＩＤ）がタグ付けされる。各インタフェースは、そのインタフェースのＩＰ空間内で一意の１以上のＩＰアドレスを有する。また、ＩＰ空間は更に、ルーティングドメインおよび１以上のルーティングテーブルの使用にも関連している。各ｖｆｉｌｅｒにはそのＩＰ空間の中からルーティングテーブルが設けられ、ルーティングテーブルがそのｖｆｉｌｅｒで処理されるあらゆる要求についてのルーティング処理を制御する。
【００１７】
本発明の一態様によると、ある要求に対してサービスを提供するための適当なｖｆｉｌｅｒを選択するために用いられる設定情報は様々なデータ構造に記憶され、これらが協働して静的に割り当てられたアレイ即ちＩＰ空間データ構造の「データベース」を提供する。これらのデータベースには、特に、ネットワークインタフェースに関するインタフェースネットワーク（ｉｆｎｅｔ）構造、インタフェースのＩＰアドレスを表すインタフェースアドレス（ｉｆａｄｄｒ）構造、ｖｆｉｌｅｒコンテクストデータ構造、および、プロセスブロック（ｐｒｏｃ）データ構造が含まれる。ｉｆｎｅｔデータ構造には、そのインタフェースに割り当てられたＩＰアドレスのリスト、それらのアドレスについてのｉｆａｄｄｒ構造を参照するポインタ、および、そのインタフェースのＩＰ空間ＩＤなどの設定情報が含まれる。ｉｆａｄｄｒデータ構造にはそのＩＰアドレスに関するｖｆｉｌｅｒコンテクストを参照するバックリンクポインタが含まれ、一方、ｖｆｉｌｅｒコンテクスト構造にはマルチプロトコルサーバのインスタンスを確立するために必要な設定情報が含まれる。各ｖｆｉｌｅｒコンテクストには、ＩＰ空間ＩＤ、および、そのｖｆｉｌｅｒのＩＰ空間のルーティングテーブルのうちの１つを指すポインタがタグ付けされる。ｐｒｏｃデータ構造は、そのファイラー上で実行されているプロセススレッドのコンテクストを表すものであり、カレントｖｆｉｌｅｒコンテクストを参照するポインタを保持している。
【００１８】
本発明の他の態様では、ＩＰ空間ＩＤは、入ってきた要求を処理するためのカレントｖｆｉｌｅｒ、および、出てゆく要求を処理するための適当なルーティングテーブルの選択を可能にする変換手順に適用される。入ってきた要求を受信するネットワークインタフェースのロジックは、その要求の宛先ＩＰアドレスと共に、そのインタフェースのＩＰ空間ＩＤ及びその他の設定情報を用いて、その要求を処理するためのカレントｖｆｉｌｅｒコンテクストを選択する。出てゆく要求についてルーティング処理が必要な場合、カレントｖｆｉｌｅｒコンテクストに関連するＩＰ空間ＩＤを含む設定情報を用いて適当なルーティングテーブルを選択する。この変換手順は、ｖｆｉｌｅｒの２つのクリティカルパス、即ちｖｆｉｌｅｒで受信する要求が入ってきたパスとｖｆｉｌｅｒで発行された要求が出てゆくパスに対して使用されることが好ましい。
【００１９】
大まかに説明すると、ファイラーのネットワークインタフェースで受信された入ってきた要求は、その要求の宛先ＩＰアドレスとそのインタフェースのＩＰ空間ＩＤとに基いて適当なｖｆｉｌｅｒへ送信される。入力パス上では、そのネットワークインタフェースに関するｉｆｎｅｔ構造を検査し、宛先ＩＰアドレスと一致するＩＰアドレスに関するＩＰアドレスのリストを探す。一致が見つかると、一致したｉｆａｄｄｒ構造へのポインタをたどり、その要求のｖｆｉｌｅｒコンテクストデータ構造を探すのに必要なバックリンクポインタを得る。次いで、このｉｆｎｅｔ構造に格納されたＩＰ空間ＩＤとそのｖｆｉｌｅｒコンテクストのＩＰ空間ＩＤとを比較した後、正しいｖｆｉｌｅｒコンテクストを選択する。
【００２０】
その後、ｖｆｉｌｅｒコンテクストは、カレントｖｆｉｌｅｒコンテクストを参照するｐｒｏｃデータ構造のポインタを設定することによって設定される。正しいｖｆｉｌｅｒコンテクストは、ファイラーでの後続の処理の要求、例えばそのｖｆｉｌｅｒが要求されたストレージリソースに対するアクセスを許可されていることを検証する検査または境界チェック等を制限するように設定される。注意して欲しいのは、各ｖｆｉｌｅｒコンテクストに含まれる認証情報により、その要求が他のｖｆｉｌｅｒのユーザによって処理されることが防止されている点である。
【００２１】
ｖｆｉｌｅｒがルート計算を必要としない出てゆく要求を発行する場合、本明細書で説明する高速パス技術が実施され、性能が向上される。しかしながら、ルート計算が必要な場合、ルーティングテーブルに対してルックアップ処理が実施され、その要求が発行されるべき出力インタフェースが判定される。出力パス上では、カレントｖｆｉｌｅｒコンテクストを用いて正しいルーティングテーブルが選択され、これによってｖｆｉｌｅｒのＩＰ空間のルーティングテーブルが保証される。次いでこの要求が出力インタフェースへ転送される。
【発明を実施するための形態】
【００２２】
図１は、複数のクライアント１１０と、ネットワークストレージアプライアンス等のファイルサーバとを含む本発明に有利に用いられるコンピュータネットワーク１００の略ブロック図である。ファイルサーバまたはファイラー２００は、ディスク等のストレージデバイス上の情報の編成に関するファイルサービスを提供するコンピュータである。クライアント１００は、従来のＣＩＦＳ（Common Internet File System）プロトコル等のファイルシステムプロトコルを有するアプリケーションを実行するように構成された汎用コンピュータでよい。さらにクライアント１１０は、クライアント／サーバモデルの情報配送に従ってファイラー２００と対話することができる。即ち、ネットワーク１００上で例えばＣＩＦＳプロトコルフォーマットにカプセル化されたパケット１２０を交換することにより、各クライアントはファイラーのサービスを要求することができ、また、ファイラーはクライアントから要求されたサービスの結果を返すことができる。当業者であれば、本明細書で説明する新しい技術は、クライアント上で実行されている様々なアプリケーションに従って任意のクライアントにサービスを提供する任意のサーバに適用することが可能であることが分かるであろう。
【００２３】
ファイラー２００は、複数の物理リンク１８０を介してルータやスイッチなどの中間ネットワークノード１５０に接続される。この物理リンクには、例えばギガビットイーサネットリンク、１００ＢＡＳＥ−Ｔイーサネットリンク、１０ＢＡＳＥ−Ｔイーサネットリンクまたはその他同様のリンク等が含まれる。スイッチ１５０は更に、例えばローカルエリアネットワーク（ＬＡＮ）や仮想ＬＡＮ（ＶＬＡＮ）として構成されたネットワーククラウド１３０を介してクライアント１１０に接続される。あるいは、ファイラーはポイント・ツー・ポイント接続やＬＡＮ等の共有媒体からなる通信リンク１４０を介して１以上のクライアントに直接接続することもできる。
【００２４】
図２は、好ましくは従来のＰＣＩ（Peripheral Computer Inter Connect）バスであるシステムバス２１０によって相互接続されたプロセッサ２０２、メモリ２０４、ストレージアダプタ２０６及び１以上のネットワークアダプタ２０８を含むファイラー２００を示す略ブロック図である。このファイラーは、ストレージアダプタ２０６に接続されたディスク２１６上で情報をディレクトリ及びファイルの階層構造として論理的に編成するためのファイルシステムを実行するストレージオペレーティングシステム３００をさらに含む。本明細書で説明する例示的実施形態の場合、ストレージオペレーティングシステム３００は、好ましくはネットワークアプライアンス社から入手できるＮｅｔＡｐｐ  Ｄａｔａ  ＯＮＴＡＰ（登録商標）であり、ＦＡＦＬ（Ｗｒｉｔｅ  Ａｎｙｗｈｅｒｅ  Ｆｉｌｅ  Ｌａｙｏｕｔ）ファイルシステムを実施する。
【００２５】
メモリ２０４は様々なセクションに分配することができ、そのうちの１つは、ストレージオペレーティングシステム３００のネットワークドライバで使用するための複数のデータバッファ２２２として編成されたバッファプール２２０である。本明細書で説明するように、各ネットワークドライバにはバッファ２２２のリストが割り当てられ、このリストがネットワークアダプタ２０８のインタフェース２１８で受信された入ってきたデータ要求をロードするのに用いられる。メモリの他のセクションは記憶場所として編成され、プロセッサ及びアダプタによって、本発明に関するルーティングテーブルを含むソフトウェアプログラムコード及びデータ構造を記憶するためにアドレス指定することができる。さらにプロセッサ及びアダプタは、ソフトウェアコードを実行してデータ構造にアクセスするように構成された処理要素及び／又は論理回路を含む場合がある。ストレージオペレーティングシステム３００は通常、その一部がメモリ内に存在し、処理要素によって実行され、特にファイラー２００によって実施されるサービスを支えるストレージ処理及びネットワーク処理を実施することにより、ファイラーを機能的に編成する。当業者であれば、本明細書で説明する本発明の技術に関するプログラム命令の記憶及び実行に様々なコンピュータ読取可能媒体を含む他の処理手段及び記憶手段も利用できることは明らかであろう。
【００２６】
ネットワークアダプタ２０８は、ファイラー２００を通信リンク１４０に直接接続したり、ファイラー２００を物理リンク１８０を介してスイッチ１５０に接続したりするのに必要な、機械的回路、電気回路及び信号回路を有するネットワークインタフェースカード（ＮＩＣ）を含む場合がある。一実施形態では、この物理リンク及びインタフェースは、集合インタフェースまたは仮想インタフェース（ＶＩＦ）１９０として編成される場合がある。各ＮＩＣは１つのインタフェース２１８を有し、４リンクのＶＩＦの場合、ファイラーは４個のＮＩＣ２０８を有する。あるいは、各ＮＩＣ２０８が４個の「４分の１ポート」インタフェース２１８を有し、４分の１ポートインタフェースの各々がＶＩＦ１９０のリンク１８０に接続される場合もある。他の実施形態では、物理リンク及びインタフェースを集合インタフェースまたはＶＬＡＮではないように構成する場合もある。各インタフェース２１８には、１つのＭＡＣ（Media Access Control）アドレスと共に１以上のＩＰ（Internet Protocol）アドレスを割り当てることができる。しかしながら、物理インタフェース２１８及びそれらに関連するリンク１８０を１つの仮想インタフェース１９０に一体化した場合、全ての物理インタフェースがただ１つのＭＡＣアドレスに応答してしまう。即ち、物理インタフェース２１８は、共通のＭＡＣアドレスが割り当てられた１つの論理インタフェースを有する１つの仮想的な「パイプ」に編成される。
【００２７】
ストレージアダプタ２０６はファイラー上で実行されているストレージオペレーティングシステム３００と協働してクライアントから要求された情報にアクセスすることができ、この情報はディスク２１６等の何らかの書込可能媒体上に記憶されている。ストレージアダプタは、従来の高性能ファイバーチャネルシリアルリンクトポロジー等のＩ／Ｏ相互接続構成を介してディスクに接続された入出力（Ｉ／Ｏ）インタフェース回路を含む。情報はストレージアダプタによって取得され、システムバス２１０を介してネットワークアダプタ２０８へ転送する前に必要であればプロセッサ２０２（又はアダプタ２０６自体）によって処理を施し、その情報をパケット１２０にフォーマットしてクライアント１１０へ返す。
【００２８】
ファイラーに対する情報の記憶は、物理的ストレージディスク２１６の集まりを含む１以上のストレージ「ボリューム」として実施し、ディスク空間の全体的な論理的構成を定義することが好ましい。各ボリュームは通常、そのボリューム独自のファイルシステムに関連している。ディスク２１６に対するアクセスを容易にするため、ストレージオペレーティングシステム３００は、ディスク上で情報をファイル及びディレクトリの階層構造として論理的に編成するファイルシステムを実施する。「ディスク上」の各ファイルはデータ等の情報を記憶するように構成されたディスクブロックの集合として実施されるのに対し、ディレクトリは他のファイル及びディレクトリに関する情報を格納した特別なフォーマットのファイルとして実施される。前述のように、ストレージオペレーティングシステムは、ＷＡＦＬファイルシステムを実施するＤａｔａ  ＯＮＴＡＰオペレーティングシステムであることが好ましい。しかしながら、任意の適当なファイルシステムを用いることが可能であることは明らかであるから、「ＷＡＦＬ」という用語を使用した場合でも、この用語は本発明の教示に適合可能な任意のファイルシステムを広く意味するものと解釈すべきである。
【００２９】
図３は、本発明に有利に用いられるＤａｔａ  ＯＮＴＡＰオペレーティングシステム３００を示す略ブロック図である。このストレージオペレーティングシステムは、ネットワークドライバ（例えばギガビットイーサネットドライバ等）のメディアアクセス層３１０を含む一連のソフトウェア層から構成される。このオペレーティングシステムは更に、ＩＰ層３１２等のネットワークプロトコル層と、その補助的なトランスポート機構であるトランスポートコントロールプロトコル（ＴＣＰ）層３１４及びユーザデータグラムプロトコル（ＵＤＰ）層３１６を含む。ファイルシステムプロトコル層はマルチプロトコルデータアクセスを提供するため、ＣＩＦＳプロトコル３１８、ＮＦＳプロトコル３２０及びハイパーテキストトランスファープロトコル（ＨＴＴＰ）３２２をサポートする。また、ストレージオペレーティングシステム３００は更に、ＲＡＩＤ（Redundant Array of Independent Disks）プロトコル等のディスクストレージプロトコルを実施するディスクストレージ層３２４と、ＳＣＳＩ（Small Computer Systems Interface）プロトコル等のディスクアクセスプロトコルを実施するディスクドライバ層３２６とを含む。
【００３０】
これらのディスクソフトウェア層とネットワーク及びファイルシステムプロトコル層との橋渡しをするのはＷＡＦＬ層３３０であり、好ましくはＷＡＦＬファイルシステムを実施する。ＷＡＦＬファイルシステムのディスク上のフォーマットは、例えば４キロバイト（ｋＢ）のブロックを用いたブロックベースのフォーマットであり、ファイルを表すのにｉｎｏｄｅを使用している。ｉｎｏｄｅとはファイルに関するメタデータ等の情報を記憶するために使用されるデータ構造であり、例えば１２８バイトのデータ構造である。ｉｎｏｄｅに保持されるメタデータには、例えばそのファイルの所有者、ファイルのパーミッション、ファイルのサイズ、ファイルの種類、および、ファイルのディスク上の位置等が含まれる。ＷＡＦＬファイルシステムは、ファイルハンドル、すなわちｉｎｏｄｅ番号を含む識別子を用いてディスクからｉｎｏｄｅを検索する。また、ＷＡＦＬ層３３０は、そのファイルシステムのレイアウトを記述するメタデータを記憶するためにファイルも使用する。これらのメタファイルには、特にｉｎｏｄｅファイルが含まれる。
【００３１】
動作時には、クライアント１１０からの要求は、例えばコンピュータネットワーク１００を介して、従来のＣＩＦＳプロトコルのパケット１２０としてファイラー２００のネットワークアダプタ２０８に転送される。メディアアクセス層３１０のネットワークドライバは、ネットワークアダプタと協働してその要求パケットをデータバッファ２２２にロードし、その入ってきた要求パケットを受信したファイラーの物理インタフェース２１８の名前を用いてそのバッファにマークを付ける。各バッファ２２２はヘッダ部分２２４及びデータ部分２２６からなり、入ってきたパケットはデータ部分にロードされる。ヘッダの内容には（１）バッファの種類、（２）様々なフラグ、及び（３）ファイラーによってマークが付けられた着信インタフェースが含まれ、これらがファイラーによって維持される。入ってきたパケットがロードされた後、バッファ２２２はネットワークプロトコルスタックが実質的に繰り上げられ、例えばファイラーのディスク上に記憶されたデータをフェッチすることによりその要求に対してサービスを提供する、適当なアプリケーションへ配送される。
【００３２】
具体的には、ネットワークドライバ３１０は、そのバッファをＷＡＦＬ層３３０へ転送する前にさらなる処理を行なうため、ネットワークプロトコル層３１２〜３１４またはＣＩＦＳ層３１８上へ渡す。ＷＡＦＬファイルシステムは、要求されたデータ（及びｉｎｏｄｅ）が「コア」内、即ちメモリ２０４内に存在しなければ、要求されたデータ（及びｉｎｏｄｅ）をディスク２１６からロード（検索）するための処理を行なう。その情報がメモリ内に存在しない場合、ＷＦＡＬ層３３０は、ｉｎｏｄｅ番号を用いてｉｎｏｄｅファイル内に索引付けして適当なエントリにアクセスし、論理ボリュームブロック番号（ＶＢＮ）を取得する。次いでＷＡＦＬ層はその論理ＶＢＮをディスクストレージ（ＲＡＩＤ）層３２４に渡し、ディスクストレージ（ＲＡＩＤ）層３２４がその論理番号をディスクブロック番号にマッピングし、ディスクブロック番号をディスクドライバ層３２６の適当なドライバ（例えばＳＣＳＩドライバ等）へ送信する。ディスクドライバは、ディスク２１６のそのディスクブロック番号にアクセスし、要求されたデータブロックをファイラーで処理するためメモリ２０４にロードする。要求をサービスする際、ＣＩＦＳ層３１８は、フェッチされたデータに対してバッファプールの中から別の（応答）バッファ２２２を割り当て、更にその応答を最初の要求に関連付ける。即ち、ＣＩＦＳ層３１８は、入ってきた要求に関連する物理インタフェースを用いてその応答バッファにマークを付ける。
【００３３】
前述のように、ファイラー２００は複数のクライアント１１０に対してファイルサービスを提供するように構成されているため、通常、クライアントから発行された要求に応答してデータを返す。この応答性を向上させるため、本ファイラーは、クライアントから要求を受信するのに使用された物理インタフェース２１８と同じ物理インタフェースを介して実質的に応答を返すという「高速パス」技術を実施する。高速パス技術を実施するためには、ＣＩＦＳ層３１８でバッファヘッダー２２４内に高速パスフラグをアサートし、次いでそのバッファをプロトコルスタック「下方」のＩＰ層３１２へ渡し、ＩＰ層でそのフラグの状態を検査する。高速パスフラグのアサートにより、その特定の応答についてはルート計算を実施する必要のないことがＩＰ層に通知される。従って、その応答バッファを受信する宛先となるファイラー内のインタフェースは、その要求を受信した着信インタフェース２１８である。応答バッファがそのインタフェースへ転送され、要求されたデータがネットワーク１００を介してクライアント１１０へ返される。
【００３４】
ファイラーで受信されたクライアント要求についてデータストレージアクセスを実施するのに必要な上記ストレージオペレーティングシステム層中を通るソフトウェア「パス」は、代替としてハードウェアで実施することも可能である。即ち、本発明の代替の実施形態では、ストレージアクセス要求データパス３５０は、ＦＰＧＡ（Field Programmable Gate Array）またはＡＣＩＣ（Application Specific integrated circuit）内に論理回路として実施することもできる。この種のハードウェアによる実施は、クライアント１１０から発行されたファイルシステム要求パケット１２０に応答してファイラー２００によって提供されるファイルサービスの性能を向上させることができる。さらに本発明の他の実施形態では、プロセッサ２０２からパケット処理及びストレージアクセス処理の負荷のいくらかまたはすべてを軽減させるようにアダプタ２０６、２０６の処理要素を構成し、これによってファイラーによって提供されるファイルサービスの性能を向上させることもできる。本明細書で説明する様々な処理、アーキテクチャ、及び手順は、ハードウェアでもファームウェアでも、あるいはソフトウェアでも実施することができるということは明らかである。
【００３５】
本明細書で使用する場合、「ストレージオペレーティングシステム」という用語は、ストレージシステムにおいてストレージ機能を実施することが可能なコンピュータ実行可能コードを一般的に意味し、例えばファイルシステムセマンティック及びデータアクセス管理を実施するコンピュータ実行可能コードを意味している。この意味において、ＯＮＴＡＰソフトウェアは、マイクロカーネルとして実施され、ＷＡＦＬファイルシステムセマンティックを実施してデータアクセスを管理するためのＷＡＦＬ層を含むこのようなストレージオペレーティングシステムの一例である。このストレージオペレーティングシステムは、ＵＮＩＸ、Ｗｉｎｄｏｗｓ  ＮＴ等の汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施することもできるし、本明細書で説明するストレージアプリケーションあるいは本明細書で説明するような設定可能な機能を有する汎用オペレーティングシステムとして実施することもできる。
【００３６】
さらに当業者であれば、本明細書で説明する本発明の技術は、ストレージシステムとして実施されるスタンドアロンのコンピュータあるいはその一部、または、ストレージシステムを含むスタンドアロンのコンピュータあるいはその一部を含めて、任意の種類の特別な用途（例えばサーバ等）のコンピュータにも汎用コンピュータにも適用可能であることが分かるであろう。サーバは１以上のクライアントにアプリケーションサービスを提供するコンピュータとして定義され、このコンテクストにおいて、仮想サーバはクライアントに提供されるアプリケーションサービスのインスタンスである。また、本発明の教示は、これらに限定はしないが、ネットワークに取り付けられたストレージ環境、ストレージエリアネットワーク、及び、クライアントやホストコンピュータに直接取り付けられたディスクアセンブリ等を含む様々なストレージシステムアーキテクチャに適合させることができる。従って、「ストレージシステム」という用語は、ストレージ機能を実施するように構成された任意のサブシステム及びその他の装置またはシステムに関連する任意のサブシステムだけでなく、それらの構成も含むように広い意味で解釈すべきである。
【００３７】
本発明は、ファイラー等の１つのサーバ内に、仮想ファイラー（ｖｆｉｌｅｒ）等の仮想サーバの複数のインスタンスを作成および維持する能力を提供するアーキテクチャに関するものである。ｖｆｉｌｅｒは、マルチプロトコルサーバのインスタンスを確立するための、ファイラーのネットワークリソースおよびストレージリソースの論理的分割である。各ｖｆｉｌｅｒは、ファイラープラットフォーム上の他のｖｆｉｌｅｒとは完全に独立して維持および実行される。そのため、ストレージの記憶単位及びネットワークインタフェースのネットワークアドレス等の専用ファイラーリソースを自由にグループ分けして「ハード」パーティションに分割することにより、ファイラー内にセキュリティドメインを確立することができる。さらに、ストレージオペレーティングシステム及びファイルシステム等の共通ファイラーリソースは、ｖｆｉｌｅｒ間で共有することができる。ｖｆｉｌｅｒアーキテクチャは、「Architecture for Creating and Maintaining Virtual Filers on a Filer」と題した米国特許出願第（１１２０５６−００２２）号に開示されており、これを参照することにより援用する。
【００３８】
図４は、本発明に有利に用いることができるファイラー４００の一実施形態を示す概略図である。ここで、ファイラーはストレージサービスプロバイダー（ＳＳＰ）として機能し、ファイラープラットフォーム即ち「データセンター」内の複数のユーザまたはクライアントに対してデータストレージアプリケーションのサービスを提供する（「ホスティング」）する。データセンター４００は複数の異なるクライアント環境４１０ａ，ｂに接続されており、クライアント環境の各々は独立した私設内部ネットワーク（「イントラネット」４２０ａ，ｂ）を有している。各クライアント環境４１０はデータセンターの異なるｖｆｉｌｅｒに対応しており、データセンターは、クライアントの統一見解、またはＲＦＣ１９１８準拠のプライベートＩＰアドレス空間等のネットワークリソースの「名前空間」を用いてストレージ処理を実施している。
【００３９】
具体的には、ＳＳＰデータセンターは２つの論理ｖｆｉｌｅｒ  ＶＦ１およびＶＦ２に編成され、ＶＦ１が第１のクライアント環境４１０ａに関連し、ＶＦ２が第２のクライアント環境４０１ｂに関連している。各クライアントの私設イントラネット４２０ａ，ｂは、ネットワークアドレストランスレーション（ＮＡＴ）デバイス４２２ａ，ｂおよび「ファイアウォール」４２４ａ，ｂ等の中間ネットワークデバイスを通してインターネットに接続され、中間ネットワークデバイスがセキュアなイントラネットと「セキュアでない」インターネットとの間のトラフィックを制御している。しかしながら、ファイアウォール（およびＮＡＴ）の利用は一般的に性能を低下させるため、各イントラネット４２０ａ，ｂはクライアントのＲＦＣ１９１８準拠のイントラネットで始まりデータセンター４００で終わる専用ネットワークパス４２６ａ，ｂを介してＳＳＰに直接接続される。これにより、データセンター上のストレージリソースにアクセスするときに、各クライアントはプライベートアドレス空間のＩＰアドレスを利用できるようになる。
【００４０】
各私設イントラネットが自分のプライベートＩＰアドレス名前空間内で一意のＩＰアドレスを保証していても、プライベート名前空間同士の間にこのような保証は存在しない。従って、「ホスティング」しているデータセンター４００は重複するＩＰアドレスを有する複数の個別のクライアントＩＰアドレス空間に参加してしまい、競合する場合がある。依然としてデータセンターは、クライアントのイントラネットおよび内部アドレス空間内ですべてのデータ要求トラフィックの完全性および機密性を維持しつつ、これらの競合するＩＰアドレスに宛てられた要求に対してサービスを提供することが期待されている。
【００４１】
ＩＰ空間
本発明は、複数のｖｆｉｌｅｒを有するように構成されたファイラーが、ネットワークアドレスの重複する可能性がある複数のプライベートネットワークアドレス空間に参加することを可能にする技術に関する。本発明によると、あるプライベートアドレス空間内のサービス要求がファイラーでサポートされる他のプライベートアドレス空間に対して機密性が保たれ且つそれらの空間から区別できるような方法で、適当なｖｆｉｌｅｒを選択することも更に可能になる。本発明では、ＩＰ空間は、ファイラーおよびそのストレージオペレーティングシステムが参加する各々の個別のＩＰアドレス空間を意味している。各ｖｆｉｌｅｒは１つのＩＰアドレス空間に関連しており、従って１つのＩＰ空間に属している。ファイラーの各インタフェースには、そのインタフェースをＩＰ空間に実質的に「バインド」するＩＰ空間識別子（ＩＤ）が「タグ付け」される（割り当てられる）。各ｖｆｉｌｅｒの（および各ＩＰ空間内の）ＩＰアドレスは一意なものでなければならない。
【００４２】
ファイラーは複数のＩＰ空間をサポートすることが好ましく、個々のＩＰ空間はファイラーの「フロントエンド」即ちネットワークインタフェースに実装される。このコンテクストにおいて、ネットワークインタフェースという用語はＩＰアドレスを割り当て可能なインタフェースを意味しており、１以上のＩＰアドレスを割り当てることが可能な「物理的」ＮＩＣと、ＶＩＦ、ＶＬＡＮおよびエミュレーテッドＬＡＮ（ＥＬＡＮ）等の「ソフト」ＮＩＣとが含まれる。デフォルトでは、１つのＩＰ空間、即ちデフォルトＩＰ名前空間しか存在しない。ＩＰアドレスを割り当て可能なあらゆるネットワークインタフェースは、このデフォルトＩＰ空間にまず属する。あるｖｆｉｌｅｒについて指定されたすべてのアドレスは、そのｖｆｉｌｅｒに関するＩＰ空間にバインドされる。ＩＰ空間が指定されない場合には、デフォルトＩＰ空間であるものと仮定される。
【００４３】
図４を参照すると、各ｖｆｉｌｅｒ  ＶＦ１、ＶＦ２は、１以上のＩＰアドレスが割り当てられた１以上のネットワークインタフェース４０８ａ，ｂを有するように構成されている。ｖｆｉｌｅｒの各インタフェースには、ＩＰ空間識別子（ＩＤ）４０６ａ，ｂが割り当てられている。あるインタフェースに割り当てられるＩＰ空間ＩＤは、そのインタフェースに関するＩＰ空間データベース構造に保持される。各ｖｆｉｌｅｒ  ＶＦ１、ＶＦ２は、そのｖｆｉｌｅｒで処理されるすべての要求トラフィックについてルーティング処理を制御する１つのルーティングテーブル（即ち、そのＩＰ空間のルーティングテーブルのうちの１つ）も保持している。ＩＰ空間は更に、ルーティングドメインおよび１以上のルーティングテーブルの使用にも関連している。ＩＰ空間ごとに１つのルーティングテーブルが存在し、複数のｖｆｉｌｅｒで１つのルーティングテーブルを共有することが可能である。任意のルーティングテーブルは、単にそのルーティングテーブルのＩＰ空間に属する（従ってパケットをルーティングすべき）インタフェースを示すことしかできない。
【００４４】
ＩＰ空間データベース
本発明の一態様によると、ある要求に対してサービスを提供するため適当なｖｆｉｌｅｒを選択するのに用いられる設定情報は様々なデータベース構造に格納されており、これらが協働してＩＰ空間データ構造の静的に割り当てられたアレイ即ち「データベース」をメモリ２０４内に提供する。図５は、ネットワークインタフェースに関するインタフェースネットワーク（ｉｆｎｅｔ）データ構造５１０、ネットワークインタフェースのＩＰアドレスを表すインタフェースアドレス（ｉｆａｄｄｒ）データ構造５４０、ネットワークインタフェースの能力の「動的調節可能」な部分を表す仮想ファイラーネットワーク（ｖｆｎｅｔ）データ構造５６０、ｖｆｉｌｅｒコンテクストデータ構造５７０、および、プロセスブロック（ｐｒｏｃ）データ構造５９０を含むＩＰ空間データベース５００を示す略ブロック図である。
【００４５】
各ネットワークインタフェースは、そのインタフェースを記述する設定情報を保持するｉｆｎｅｔデータ構造５１０に関連している。例えば、ｉｆｎｅｔデータ構造５１０には、そのインタフェースのＭＡＣアドレスを保持するＭＡＣフィールド５１２、および、インタフェースの種類を示すタイプフィールド５１４が含まれる。ＩＰリストフィールド５１６はそのインタフェースに割り当てられたＩＰアドレスのリストを保持する。このリストには、それらのＩＰアドレスに関する適当なｉｆａｄｄｒデータ構造５４０を参照するポインタ５１８が含まれる。ｉｆｎｅｔ構造は、そのインタフェースに割り当てられたＩＰ空間ＩＤ５２０を保持するフィールドも含む。他のフィールドには、他のｉｆｎｅｔ構造を参照するｉｆｎｅｔポインタ５２２が保持される。ｉｆｎｅｔデータ構造５１０は、ファンクションコールを介してメディアアクセス層３１０のドライバへのエントリポイントを提供する。
【００４６】
ｉｆｎｅｔ構造は、（１）１つの物理インタフェース、（２）ＶＩＦ等の物理インタフェースの集合、または（３）ＶＬＡＮ等の集合でない複数の物理インタフェースに関連する場合がある。１以上のＮＩＣ上の複数の物理インタフェースは、１つのＩＰアドレスにまとめて関連付けることもできる。物理インタフェースの１つのＶＩＦへの統合は、ＩＥＥＥ８０２．３に規定されている。ただ１つのｉｆｎｅｔデータ構造５１０だけがＶＩＦに関連付けられる。これに対して、１つの物理リンクを介したデータトラフィックの、複数の独立したネットワークに対する複数の異なる要求への分離は、ＶＬＡＮ技術の基礎を提供する。ここで、１つの物理インタフェースは、複数のｉｆｎｅｔデータ構造に対応している。入ってきたパケットの各々には、その入ってきた要求パケットをｉｆｎｅｔデータ構造に関連付けるために用いられるＶＬＡＮ  ＩＤが「タグ付け」される。１つのｉｆｎｅｔデータ構造は、１つのＩＰ空間ＩＤしか有することができない。即ち、ｉｆｎｅｔ構造は異なるＩＰ空間の間で共有することができない。従って、１つのｉｆｎｅｔ構造（または論理インタフェース）は１つのＩＰ空間にしか属することができない。
【００４７】
各ｉｆａｄｄｒ構造５４０は、ネットワークインタフェースに関連する論理ネットワークアドレスに関する情報を格納する。ｉｆａｄｄｒ構造には、ＩＰアドレス等のネットワークアドレスのアドレスファミリーまたは種類を識別するａｆフィールド５４２と、そのｉｆａｄｄｒ構造に関する実際のＩＰアドレスを格納するアドレスフィールド５４４とが含まれる。フィールド５４６は、そのネットワークインタフェースに関する全ての他のｉｆａｄｄｒ構造のリストを保持する。各ｉｆａｄｄｒデータ構造には、そのＩＰアドレスに関するｖｆｉｌｅｒコンテクストを参照するバックリンクポインタ５５０（例えばコアアドレスの）を保持するフィールドも含まれ、これによって、各ｉｆａｄｄｒデータ構造が確実にただ１つのｖｆｉｌｅｒコンテクストに関連付けられる。バックリンクポインタ５５０は、ｖｆｉｌｅｒ設定時にｉｆａｄｄｒ構造にロードされる。
【００４８】
ｖｆｉｌｅｒは、オペレーティングシステムに関するユーザインタフェースの次のコマンドラインインタフェース（ＣＬＩ）コマンドを用いて作成される。
vfiler create [name] [-s IPspace-name] [-i IP address(s)] [path to strage]
このｖｆｉｌｅｒ作成コマンドは、インスタンス、即ちマルチプロトコルサーバのカレントｖｆｉｌｅｒを確立するために必要な設定情報を保持するｖｆｉｌｅｒコンテクストデータ構造５７０を作成するものである。各ｖｆｉｌｅｒコンテクスト５７０の設定情報には、特に、ＩＰ空間ＩＤ５７２と、そのｖｆｉｌｅｒのＩＰ空間についてのルーティングテーブルへのポインタ５７４とが含まれる。
【００４９】
ｖｆｎｅｔリスト５７６は、そのｖｆｉｌｅｒに割り当てられたｖｆｎｅｔ構造（オブジェクト）のリストを保持するものである。このリストには適当なｖｆｎｅｔオブジェクト５６０を参照するポインタ５７８が含まれ、ｖｆｎｅｔオブジェクト５６０の各々が１つのＩＰアドレスに対応している。各ｖｆｎｅｔオブジェクト５６０には、リストの中からそのｖｆｎｅｔ構造を探すために用いられるｖｆｎｅｔ  ＩＤ５６２を保持するフィールドと、他のｖｆｎｅｔオブジェクトを参照するｖｆｎｅｔポインタ５６６を保持するフィールドとが含まれる。ｉｆａｄｄｒポインタフィールド５６４は、ｉｆａｄｄｒ構造５４０に対応するＩＰアドレスが設定されていればその構造５４０を参照するポインタを保持し、そうでなければフィールド５６４のポインタはヌルである。
【００５０】
具体的には、各ｖｆｎｅｔオブジェクトは、任意のネットワークインタフェース（例えばＩＰアドレスをＮＩＣに割り当てる場合はＮＩＣ）に割り当てることができる「流動的」能力を表している。複数のＩＰアドレスをＮＩＣに割り当てる場合、ＮＩＣのこの能力は複数のｖｆｎｅｔオブジェクト間（即ち異なる場合もあるｖｆｉｌｅｒ間）で有効に共有される。１つのｉｆｎｅｔ構造に１つのＩＰアドレスしか関連していない場合、１つのｖｆｎｅｔオブジェクト５６０だけが、即ち１つのｖｆｉｌｅｒだけがそのＮＩＣの能力を使用する。
【００５１】
さらに、ｖｆｉｌｅｒコンテクスト５７０は、特定のプロトコルまたはサブシステムのインスタンスについて必要な全ての情報（グローバル変数等）を含む、複数の「モジュール」データ構造を有する。例えば、ＣＩＦＳモジュールデータ構造５８０は、ドメインコントローラ、ＣＩＦＳプロトコルのアクティブなセッション、及び、ＣＩＦＳプロトコルに関する様々なコントロールブロックに関する情報を含む、ＣＩＦＳプロトコルのインスタンスについて必要な全ての情報を保持する。ＮＦＳプロトコル５８２、ネットワークインフォメーションシステム（ＮＩＳ）サブシステム５８４およびドメインネームサービス（ＤＮＳ）サブシステム等、ｖｆｉｌｅｒに関するプロトコルおよびサブシステムの各々について、同様のモジュールごとのデータ構造が存在する。
【００５２】
ストレージオペレーティングシステムの内部は、ファイラー上で実行されている制御のプロセスまたはスレッドの概念である。ｐｒｏｃデータ構造５９０は、ファイラー上で実行されているそのプロセススレッドのコンテクストを表している。本発明の一態様によると、このプロセスブロック構造は、ファイラー上で実行されているカレントｖｆｉｌｅｒコンテクストで動作しているスレッドの概念を含むように拡張される。そのため、ｐｒｏｃデータ構造５９０はカレントｖｆｉｌｅｒコンテクスト５７０を参照するポインタ５９２を含む。
【００５３】
更に、ＩＰ空間データベース５００のデータ構造内への索引として用いられるキーは、宛先ＩＰアドレスとＩＰ空間との組み合わせである。データベース５００の出力は、（１）例えば入ってきた要求が正当なものである結果としてｖｆｉｌｅｒコンテクスト５７０、または（２）入ってきた要求が不適当なものである結果として失敗を提供する。本技術のこの態様により、インタフェースが異なるＩＰ空間に関連している限り、ファイラーは２つの異なるインタフェース上で同じＩＰアドレスをサポートすることが可能になる。
【００５４】
変換手順
本発明の他の態様では、ＩＰ空間ＩＤは、入ってきた要求を処理するための正しいｖｆｉｌｅｒ、および、出てゆく要求を処理するための適当なルーティングテーブルの選択を可能にする変換手順に適用される。入ってきた要求を受信するネットワークインタフェースのロジック（即ちネットワークコード）は、そのインタフェースのＩＰ空間ＩＤおよびその他の設定情報と共にその要求の宛先ＩＰアドレスを用いて、その要求を処理するための正しいｖｆｉｌｅｒを選択する。出てゆく要求についてルーティング処理が必要な場合、カレントｖｆｉｌｅｒコンテクストに関するＩＰ空間ＩＤを含む設定情報を用いて適当なルーティングテーブルを選択する。この変換手順は、ｖｆｉｌｅｒの２つのクリティカルパス、即ちｖｆｉｌｅｒで受信される要求が入ってきたパスとｖｆｉｌｅｒで発行された要求が出て行くパスとに用いられる。
【００５５】
入力パス
図６は、本発明により入ってきた要求に対して正しいｖｆｉｌｅｒの選択を可能にする入力パス変換手順に必要なステップのシーケンスを示すフロー図である。このシーケンスはステップ６００で開始してステップ６０２へ進み、ここで入ってきた要求（ＮＦＳ、ＣＩＦＳ、ＨＴＴＰ、ＴｅｌＮｅｔパケット等）を物理ファイラーのネットワークインタフェースで受信し、その要求をその要求の宛先ＩＰアドレスとそのインタフェースのＩＰ空間ＩＤとに基いて適当なｖｆｉｌｅｒへ送信する。具体的には、ステップ６０４でメディアアクセス層３１０内の初期化プロセス等のネットワークコードがその要求が適正なＩＰパケット（即ち発信元ＩＰアドレスおよび宛先ＩＰアドレスが正しい）であるか否かを判定する。注意して欲しいのは、各インタフェースおよびその関連ドライバについてプロセス（スレッド）が存在する点である。例えば、ギガビットイーサネット（ＧＢＥ）ドライバに関するプロセスはＧＢＥスレッドである。要求が適正なものでない場合、その要求（パケット）はステップ６０６で破棄され、シーケンスはステップ６３２で終了する。要求が適正なものであれば、その要求に対し、そのパケットを受信しているＧＢＥインタフェースドライバがＩＰ空間「コンテクスト」を定義し、即ちそのインタフェースに関するＩＰ空間ＩＤを記録し、その要求をＩＰ層３１２へ渡す（ステップ６０８）。
【００５６】
次に、ネットワークコードは、その要求が属する上位レベルのプロトコル（ＵＤＰ、ＴＣＰ）を判定する。ここで、このネットワークコードはストレージオペレーティングシステム３００のＩＰ層の内部に存在するｉｐｉｎｐｕｔコード部分を含み、ネットワークインタフェースドライバがその要求を適正なＩＰパケットであると判定すると、ネットワークインタフェースドライバによってそれが「呼び出される」。特に、要求をその高レベルプロトコルへ転送しなければならないｖｆｉｌｅｒコンテクスト内部に関して、判定が行なわれる。この判定の間に、その要求に関する適当なｖｆｉｌｅｒを判定しなければならない。
【００５７】
要求に対して正しいｖｆｉｌｅｒを判定するため、ネットワークコードは入力ネットワークインタフェースに関するｉｆｎｅｔ構造５１０にアクセスし、そのＩＰリスト５１６を検査する（ステップ６１０）。ステップ６１２で、リスト上のＩＰアドレスと要求の宛先ＩＰアドレスとの間に一致するものがあるか否かについて判定を行なう。一致するものがなければ、他のｉｆｎｅｔ構造５１０を参照するポインタ５２２をたどり、そのＩＰリストを宛先ＩＰアドレスに一致するものが見つかるまでサーチする（ステップ６１４）。一致するものが見つかると、ステップ６１６で一致したｉｆａｄｄｒ構造５４０へのポインタ５１８をたどり、要求に対する正しいｖｆｉｌｅｒコンテクストデータ構造５７０を探すのに必要なバックリンクポインタ５５０を得る。しかしながら、場合によっては、入ってきた要求の宛先ＩＰアドレスに一致するＩＰアドレスを有する複数のｉｆａｄｄｒ構造５４０が存在する場合もある。これは、ＳＳＰとして機能するファイラーにとって特別な場合であり、この場合、ｖｆｉｌｅｒに関するプライベートアドレス空間は競合／重複するＩＰアドレスを有する場合がある。そのため、以下で説明するように、入力パスに関する変換手順にはパケットを受信したインタフェースのＩＰ空間ＩＤを用いて更に制限を加え、要求に対する適当なｖｆｉｌｅｒを識別しなければならない。
【００５８】
適当なｉｆｎｅｔおよびｉａｄｄｒ構造を見つけた後、ネットワークコードは、宛先ＩＰアドレスに関するｖｆｉｌｅｒコンテクストデータ構造を見つけるのに必要なだけの十分な情報を有する。次いでＩＰ空間ＩＤを用いて比較処理を実施し、正しいｖｆｉｌｅｒを判定する。具体的には、適当なｉｆｎｅｔデータ構造５１０に格納されたＩＰ空間ＩＤ５２０とｖｆｉｌｅｒコンテクスト５７０に格納されたＩＰ空間ＩＤ５７２とを比較する（ステップ６２０）。そのＩＰ空間データ構造の中から選択された宛先ＩＰアドレスおよびＩＰ空間ＩＤが、入ってきた要求の宛先ＩＰアドレスおよび受信したインタフェースのＩＰ空間ＩＤと一致しなかった場合、ステップ６２４でその要求は破棄され、ステップ６３２でこのシーケンスは終了する。そうでなければ、その要求はそのｖｆｉｌｅｒによって処理される。これによって、ファイラーでの後続の要求の処理についてｖｆｉｌｅｒコンテクストが有効に「設定」される。
【００５９】
詳しくは、ＩＰ層のネットワークコードは、システムコールを発行してｐｒｏｃデータ構造５９０のポインタ５９２をＧＢＥスレッドに設定し、カレントｖｆｉｌｅｒコンテクスト５７０を参照することにより、そのｖｆｉｌｅｒコンテクストを設定する（呼び出す）（ステップ６２６）。次いでＩＰ層はその要求をトランスポート層（例えばＴＣＰ）へ渡し、さらにそれをストレージオペレーティングシステムの多層プロトコルアクセス層（例えばＣＩＦＳ）へ渡す。要求がプロトコルスタック層の「上方」へ渡されるのに従って（ステップ６２８）、ｖｆｉｌｅｒコンテクストもその要求と共に「移動」される。ステップ６３０で正しいｖｆｉｌｅｒコンテクストが呼び出され、例えばそのｖｆｉｌｅｒが要求されたストレージリソースに対するアクセスを許可されているかを検証するのに必要な検査または境界チェック等の後続の処理の要求に制限を与える。
【００６０】
例えば、ＩＰ層コードはＴＣＰ層コードを呼び出し、ＴＣＰ層コードがそのプロトコルコントロールブロック（ＰＣＢ）テーブルを検査して、要求に含まれるポート番号に対してオープンな「ソケット」が存在するか否かを判定する。このポート番号は、例えばＣＩＦＳ層プロトコルなどの特定のプロトコルサーバを識別するために使用される。このＰＣＢテーブルはｖｆｉｌｅｒおよびＩＰ空間ＩＤによって制限が加えられ、これによってカレントｖｆｉｌｅｒがオープンソケットを有しているか否かをＴＣＰ層３１４が判定できるようにしている。オープンソケットを有している場合、ＴＣＰ層はＴＣＰ（ＮＢＴ）層（図３に符号３１５で示す）を介してＮｅｔＢＩＯＳを呼び出し、ＣＩＦＳプロトコルの組み立てを実施する。ＮＢＴ層３１５は、完全に要求を受け取った後、ＣＩＦＳプロトコル層３１８（これもＧＢＥスレッドで動作している）を呼び出す。ＧＢＥプロセスで動作している全てのプロトコルおよびソフトウェアコードは、カレントｖｆｉｌｅｒのコンテクストを用いてｖｆｉｌｅｒごとのデータ構造を見つける。従って、ＣＩＦＳコードを実行する場合、ＣＩＦＳコードはカレントｖｆｉｌｅｒコンテクスト５７０のコンテクストで動作し、特に、カレントｖｆｉｌｅｒのＣＩＦＳモジュール５８０内で動作する。変数を参照する場合、カレントｖｆｉｌｅｒコンテクストのこのＣＩＦＳモジュールの中から検索される。
【００６１】
詳しくは、ｖｆｉｌｅｒコンテクストの呼び出しは、すべての「ｖｆｉｌｅｒごとの」データ構造および関連プロセスを含む。これらのプロセスには、ネットワークから入ってくた要求に基いて、あるいはｖｆｉｌｅｒコンテクストＩＤを含むＷＡＦＬメッセージに基いて、カレントｖｆｉｌｅｒコンテクストを判定するプロセスが含まれる。ＣＩＦＳ認証プロセス等、ｖｆｉｌｅｒの各インスタンスについて作成されるプロセスも、カレントｖｆｉｌｅｒのコンテクストで実行される。例えばＣＩＦＳ認証プロセスは、入ってきた要求の正当性を確認するためにドメインコントローラに接続するとき、ｖｆｉｌｅｒのそのコンテクストで動作する。各ｖｆｉｌｅｒコンテクストに保持された認証情報（例えばＮＩＳ、ＤＮＳ）によって、その要求が他のｖｆｉｌｅｒのユーザによって処理されることが防止される。
【００６２】
他の例としては、ｖｆｉｌｅｒがサーバとして機能し、特定のサーバポートに到着した要求を「ｌｉｓｔｅｎ」することにより、ソケット接続を確立／割り当てする場合を仮定する。割り当てられたソケットはｖｆｉｌｅｒコンテクストを有する。さらに、入ってきた後続の要求が単にそのファイラーに関係しているだけのサーバプロトコル、例えばバックアップ処理を実施するのに使用されるプロトコルにアクセスするものと仮定する。そのプロトコルに関連するポート番号を探してみると（ＰＣＢテーブルを用いて）、そのプロトコルについてのサービスは存在しないという判定になる。この理由は、ｖｆｉｌｅｒコンテクスト内にその特定ポートをｌｉｓｔｅｎするネットワークコードが存在しないからである。要求についてそのｖｆｉｌｅｒコンテクスト内に割り当てられたソケットが存在しないので、その要求は失敗する。入力パス変換手順についてのシーケンスはステップ６３２で終了する。
【００６３】
出力パス
図７は、本発明による出力パス変換手順に必要なステップのシーケンスを示すフロー図であり、この変換手順によって出てゆく要求について適当なルーティングテーブル４０４の選択が可能になる。このシーケンスはステップ７００で開始してステップ７０２へ進み、ここでｖｆｉｌｅｒが出てゆく要求を発行する。ステップ７０４でネットワークコードがその要求にルート計算が必要であるか否かを判定する。ルート計算が必要なければ、ステップ７０６で前述の高速パス技術を実施して性能を向上させる。しかしながら、ルーティング処理が必要である場合は、ＩＰ層のネットワークコードがルーティングテーブルに対してルックアップ処理を実施して、その要求を発行すべきインタフェースを判定する。ステップ７０８で、ｖｆｉｌｅｒコンテクスト５７０のＩＰ空間ＩＤ５７２を用いて正しいルーティングテーブルを選択する。即ち、ＩＰ空間ＩＤを用いていったん正しいｖｆｉｌｅｒが選択された後は、そのｖｆｉｌｅｒコンテクスト５７０のルーティングテーブルポインタ５７４を用いて正しいルーティングテーブル４０４が選択される。
【００６４】
次いでｖｆｉｌｅｒはそのルーティングテーブル４０４内にルックアップ処理を実施して（転送判定に従って）、ファイラー上の出力インタフェースを判定する（ステップ７１０）。上記のように、各ルーティングテーブル４０４にはＩＰ空間が割り当てられているので、ルーティングテーブル更新パケットは適当なルーティングテーブルへ送信しなければならない。１つのＩＰ空間は、複数のルーティングテーブル、即ち「ルーティングドメイン」を有する場合がある。各ｖｆｉｌｅｒがルーティングテーブルを有するので、１つのＩＰ空間が複数のｖｆｉｌｅｒを有する場合がある。１つのＩＰ空間のすべてのルーティングテーブル（ｖｆｉｌｅｒ）は、複数のインタフェースを共有することが可能である。ステップ７１２で、要求をその出力インタフェースに転送し、ネットワーク上へ転送する。そしてこのシーケンスはステップ７１４で終了する。
【００６５】
ブロードキャストパケット
ファイラーがＳＳＰとして機能する場合、そのファイラーは自分のサービスを公表する能力およびブロードキャストパケットを発行する能力を有する必要がある。この場合、データセンター４００は、あるｖｆｉｌｅｒのコンテクストで生成されたブロードキャストパケットを、確実にそのｖｆｉｌｅｒに関連するクライアントの私設イントラネット上だけに転送するようにしなければならない。さらに、あるイントラネットを介してデータセンターで受信されたブロードキャストパケットは、データセンター内に実現された様々なｖｆｉｌｅｒ間で、そのパケットの発信元アドレスと宛先アドレスとの両方を識別する能力を有しなければならない。本発明によると、あるＩＰ空間に宛てたブロードキャストパケットは、そのＩＰ空間内の全てのネットワークインタフェースに「ブロードキャスト」される。これらのブロードキャストパケットは、適当なＩＰ空間内のシステムにのみ制限される。
【００６６】
具体的には、undirected broadcastパケットは、そのＩＰ空間に属するすべてのインタフェースを介して転送される。このとき、ＩＰ空間ＩＤが分かるように、ｖｆｉｌｅｒコンテクストが設定される。そのＩＰ空間ＩＤを用いてｉｆｎｅｔデータ構造５１０のリストを走査（「移動」）し、一致するＩＰ空間ＩＤを探す。次いで、それらの一致するＩＰ空間ＩＤを有するｉｆｎｅｔ構造に対応するインタフェースを介してそのブロードキャストパケットが転送（送出）される。一方、directed boradcastの場合、ｉｆｎｅｔ構造のリストを走査して一致するＩＰアドレスプレフィックスを探し、それらの一致したインタフェースだけを介して複製したブロードキャストパケットを送信する。
【００６７】
前述のように、ＳＳＰデータセンターの各インタフェースには、１つのＩＰ空間が割り当てられる。ＩＰ空間当たり１つのインタフェースを使用することに関する問題点は、ｖｆｉｌｅｒアーキテクチャが、ファイラー上の物理インタフェースの数と同程度の数の異なるプライベートクライアントネットワークに制限されることである。この制限は、ＶＬＡＮタグを付けることによってなくすことも可能である。このＶＬＡＮタグの付加は、データセンターで、異なるクライアントネットワークに対する個別のトラフィックに対して行なわれる。
【００６８】
例えば図１および図４を参照すると、専用ネットワークパス４２６は、クライアントのＲＦＣ１９１８準拠のイントラネット４２０からデータセンター４００に接続されたＶＬＡＮ認識型共用Ｌ２スイッチ（スイッチ１５０に類似したもの）までを接続するように構成される。このＶＬＡＮ認識型共用Ｌ２スイッチは、異なるクライアントパスを介して運ばれてきたトラフィックを異なるＶＬＡＮ上へ転送し、そのトラフィックをＶＬＡＮタグを付けたパケットとして１以上の共用リンク（リンク１８０等）を介してファイラーへ転送する。このトラフィックは、例えば１つの物理インタフェース４０８を介して、ファイラー／データセンターに到着する。
【００６９】
層３１０のＶＬＡＮドライバは、このデータトラフィックパケットの分離して、それらのパケットに付けられたＶＬＡＮ  ＩＤに基いてそれらのパケットを異なるソフトウェアインタフェース（ｉｎｅｔ構造５１０）へ送信する。これらのソフトウェアインタフェース（「ＶＬＡＮ仮想インタフェース」は、異なるＩＰ空間に属している場合がある。これらの仮想インタフェースは、異なるＩＰ空間に割り当てられたＩＰアドレスを有する異なるＶＬＡＮに対応している（および異なるクライアントネットワークに対応している）。ｖｆｉｌｅｒの上位層ソフトウェアがデータトラフィックパケットを生成する場合、それらのパケットには適当なＶＬＡＮ  ＩＤが「タグ付け」され、Ｌ２スイッチによってそのＶＬＡＮ  ＩＤで指定されたＶＬＡＮ上のそれらの宛先のみに制限される。
【００７０】
場合によっては、ｖｆｉｌｅｒは、ルーティングテーブルで指定されていないデフォルトルートを介してパケットを送信することが望ましい場合もある。ルーティングテーブルの特徴は、ファイラーのインタフェースのうちの１つに対応したデフォルトルートである。通常、すべてのＶＬＡＮトラフィックは、強制的に同じデフォルトルートを共用させられる。しかしながら、特に、異なるクライアントおよびそれらの異なる私設イントラネットが同じファイラーを共用するＳＳＰの実装では、すべてのＶＬＡＮが同じデフォルトルートを共用することはできない。本発明の一態様によると、ルーティングテーブル４０４は、１つのＩＰ空間によってサポートされた各ＶＬＡＮに対応するデフォルトルートを用いて変更が施される。これによってｖｆｉｌｅｒは、ルーティングドメインコンテクストともｖｆｉｌｅｒコンテクストとも異なる個別のＩＰ空間コンテクストが可能になる。
【００７１】
ここまで、複数のｖｆｉｌｅｒを有するように構成されたファイラーが、ネットワークアドレスの重複する可能性がある複数のプライベートネットワークアドレス空間に参加することを可能にするための例示的実施形態を図示および説明してきたが、本発明の思想および範囲の中で様々な他の適応および変更が可能であると考えられる。例えば本発明の代替の実施形態として、ｖｆｉｌｅｒは、要求の発信元ＩＰアドレスに基いて、ファイラーのＩＰアドレスで正しく受信された要求を「フィルタ」することも考えられる。この場合、発信元ＩＰアドレスのチェックは、例えばファイラーのＮＩＳドメインまたはＤＮＳドメインレベルで実施される。従って、要求の宛先アドレスを用いて適当なｖｆｉｌｅｒが選択されても、そのｖｆｉｌｅｒは適切な権利またはパーミッションを有していなければ、その要求を受け入れない（処理しない）ことになる。
【００７２】
上記の説明は、本発明の特定の実施形態に関して行なっている。しかしながら、説明した実施形態について、それらの利点のうちのいくらかまたは全部を達成しつつ、様々な変更および修正を施すことが可能であることは明らかである。従って、こうした変更および修正が本発明の真の思想および範囲に含まれるようにすることが付記した特許請求の範囲の目的である。
【００７３】
本発明の例示的実施形態を以下に列挙する。
１．複数の仮想サーバを有するように構成されたサーバが複数のプライベートネットワークアドレス空間に参加し、それらのアドレス空間内の要求に対してサービスの提供を可能にするための方法であって、
仮想サーバの各々に、該仮想サーバの１以上のネットワークインタフェースに割り当てられた１以上のアドレスを有するＩＰ空間を関連付けるステップと、
前記仮想サーバに、該仮想サーバによって処理される要求についてのルーティング処理を制御する１以上のルーティングテーブルを設けるステップと、
前記第１のＩＰ空間ＩＤを、入ってきた要求を処理するために用いられるカレント仮想サーバコンテクストおよび出てゆく要求を処理するために用いられる適当なルーティングテーブルの選択を可能にする変換手順に適用するステップと
からなる方法。
２．前記サーバがファイラーであり、前記仮想サーバが仮想ファイラー（ｖｆｉｌｅｒ）である、１の方法。
３．前記適用するステップが、入力パス変換手順を使用するステップを含む、２の方法。
４．前記使用するステップが、
宛先アドレスを有する入ってきた要求を前記ネットワークインタフェースで受信するステップと、
前記第１のＩＰ空間ＩＰを格納しているインタフェースネットワーク構造に保持されたアドレスのリストの中から、前記入ってきた要求の宛先アドレスに一致するものを探すステップと、
一致が見つかったとき、第２のＩＰ空間ＩＤを格納しているｖｆｉｌｅｒコンテクスト構造を参照するバックリンクポインタを有するインタフェースアドレス構造への前記インタフェースネットワーク構造の第１のポインタをたどるステップと
からなる、３の方法。
５．前記使用するステップが、
前記第１のＩＰ空間ＩＤと前記第２のＩＰ空間ＩＤとを比較するステップと、
前記第１のＩＰ空間ＩＤと前記第２のＩＰ空間ＩＤが一致した場合、前記入ってきた要求を処理するためのカレントｖｆｉｌｅｒコンテクストを選択するステップと、
をさらに含む、４の方法。
６．前記使用するステップが、前記カレントｖｆｉｌｅｒコンテクストを参照するためのプロセスブロックデータ構造の第２のポインタを設定するステップをさらに含み、これによって前記ファイラーでの後続の処理の要求に制限を加える、５の方法。
７．前記後続の処理が、ｖｆｉｌｅｒが要求されたストレージリソースへのアクセスを許可されていることを検証するために必要な検査または境界チェックのうちの１つを含む、６の方法。
８．前記適用するステップが、出力パス変換手順を使用するステップを含む、３の方法。
９．前記使用するステップが、
ｖｆｉｌｅｒから出てゆく要求を発行するステップと、
前記要求にルート計算が必要であるか否かを判定するステップと、
ルート計算が必要である場合、前記カレントｖｆｉｌｅｒコンテクストのルーティングテーブルポインタを用いて前記ｖｆｉｌｅｒの適当なルーティングテーブルを選択して、前記出てゆく要求を処理するステップと
を含む、８の方法。
１０．前記選択するステップが、
前記ルーティングテーブルに対するルックアップ処理を実施するステップと、
前記出てゆく要求が転送されるべき出力インタフェースを判定するステップと、
前記要求を前記出力インタフェースへ転送するステップと、
を含む、９の方法。
１１．複数の仮想サーバを有するように構成されたファイルサーバが複数のプライベートネットワークアドレス空間に参加し、それらのアドレス空間内の要求に対してサービスの提供を可能にするシステムであって、
ネットワークから入ってきた要求を受信するように構成されるとともに、ネットワークを介して出てゆく要求を転送するように構成された少なくとも１つのネットワークインタフェースを含むネットワークアダプタであって、該ネットワークインタフェースがアドレス及び該インタフェースをＩＰ空間にバインドする第１のＩＰ空間識別子（ＩＤ）を有する、ネットワークアダプタと、
仮想サーバによって維持され、該仮想サーバによって処理される要求についてのルーティング処理を制御する複数のルーティングテーブルと、
前記入ってきた要求の宛先アドレスおよび前記第１のＩＰ空間ＩＤを用いて該入ってきた要求を処理するためのカレント仮想サーバを選択するネットワークコードを含むオペレーティングシステムであって、前記出てゆく要求についてルーティング処理が必要である場合、前記ネットワークコードが更に前記カレント仮想サーバのルーティングテーブルポインタを用いて適当なルーティングテーブルを選択するようになっている、オペレーティングシステムと、
前記ネットワークアダプタに接続され、前記オペレーティングシステムを実行するように構成され、これによって、入ってきた要求および出てゆく要求に関する変換手順に従ってネットワークおよびストレージアクセス処理を実施するプロセッサと
からなるシステム。
１２．前記前記ファイルサーバがファイラーであり、前記仮想サーバが仮想ファイラー（ｖｆｉｌｅｒ）である、１１のシステム。
１３．前記オペレーティングシステムがストレージオペレーティングシステムである、１２のシステム。
１４．協働して前記カレントｖｆｉｌｅｒを選択するために用いられる設定情報を格納するＩＰ空間データベースを提供する様々なデータ構造を維持するメモリをさらに含む、１３のシステム。
１５．前記様々なデータ構造が、
前記ネットワークインタフェースに関するインタフェースネットワーク（ｉｆｎｅｔ）構造と、
前記ｉｆｎｅｔ構造に接続され、前記インタフェースのアドレスを表すインタフェースアドレス（ｉｆａｄｄｒ）構造と、
前記ｉｆａｄｄｒ構造に接続されたｖｆｉｌｅｒコンテクスト構造と、
前記ｖｆｉｌｅｒコンテクスト構造に接続されたプロセスブロック（ｐｒｏｃ）構造とを含む、１４のシステム。
１６．前記ｉｆｎｅｔ構造が、前記ネットワークインタフェースに割り当てられたアドレスについてのｉｆａｄｄｒ構造を参照する第１のポインタ、および、前記インタフェースの第１のＩＰ空間ＩＤ等の設定情報を含む、１５のシステム。
１７．前記ｉｆａｄｄｒデータ構造が、前記アドレスに関するｖｆｉｌｅｒコンテクスト構造を参照するバックリンクポインタを含む、１６のシステム。
１８．前記ｖｆｉｌｅｒコンテクスト構造が、第２のＩＰ空間ＩＤおよび前記ルーティングテーブルポインタを含む前記カレントｖｆｉｌｅｒを確立するために必要な設定情報を保持している、１７のシステム。
１９．前記ｐｒｏｃデータ構造が前記ファイラー上で実行されているプロセススレッドのコンテクストを表わし、前記カレントｖｆｉｌｅｒを参照する第２のポインタを保持している、１８のシステム。
２０．複数の仮想ファイラー（ｖｆｉｌｅｒ）を有するように構成されたファイラーが複数のプライベートネットワークアドレス空間に参加し、それらのアドレス空間内の要求に対してサービスを提供できるようにする装置であって、
各ｖｆｉｌｅｒに、該ｖｆｉｌｅｒの１以上のネットワークインタフェースに割り当てられた１以上のアドレスを有するＩＰ空間を関連付けるための手段と、
各ネットワークインタフェースに、第１のＩＰ空間識別子（ＩＤ）をタグ付けするための手段と、
前記ｖｆｉｌｅｒに、該ｖｆｉｌｅｒによって処理される要求についてのルーティング処理を制御する１以上のルーティングテーブルを設けるための手段と、
前記第１のＩＰ空間ＩＤを、入ってきた要求を処理するために用いられるカレントｖｆｉｌｅｒコンテクストおよび出てゆく要求を処理するために用いられる適当なルーティングテーブルの選択を可能にする変換手順に適用するための手段と
からなる装置。
２１．複数の仮想ファイラー（ｖｆｉｌｅｒ）を有するように構成されたファイラーが複数のプライベートネットワークアドレス空間に参加し、それらのアドレス空間内の要求に対してサービスを提供できるようにするための実行可能プログラム命令を保持するコンピュータ読取可能媒体であって、該実行可能プログラム命令が、
各ｖｆｉｌｅｒに、該ｖｆｉｌｅｒの１以上のインタフェースに割り当てられた１以上のアドレスを有するＩＰ空間を関連付けるためのプログラム命令と、
各ネットワークインタフェースに第１のＩＰ空間識別子（ＩＤ）をタグ付けするためのプログラム命令と、
前記ｖｆｉｌｅｒに、該ｖｆｉｌｅｒで処理される要求についてのルーティング処理を制御する１以上のルーティングテーブルを設けるためのプログラム命令と、
前記第１のＩＰ空間ＩＤを、入ってきた要求を処理するために用いられるカレントｖｆｉｌｅｒコンテクストおよび出てゆく要求を処理するために用いられる適当なルーティングテーブルの選択を可能にする変換手順に適用するためのプログラム命令とからなる、コンピュータ読取可能媒体。
【図１】
2010050988.tif 000003
【図２】
2010050988.tif 000004
【図３】
2010050988.tif 000005
【図４】
2010050988.tif 000006
【図５】
2010050988.tif 000007
【図６】
2010050988.tif 000008
【図７】
2010050988.tif 000009