説明

ファイラー上に仮想ファイラーを作成及び維持するアーキテクチャ

【課題】サーバ内に複数の仮想サーバを作成、及び維持する。
【解決手段】仮想ファイラー(vfiler)等の仮想サーハ゛の複数のインスタンスをファイラー等の1つのサーハ゛内に作成及び維持するための能力を提供するアーキテクチャ。vfilerは、マルチフ゜ロトコルサーハ゛のインスタンスを確立するための、ファイラーフ゜ラットフォームのネットワークリソース及びストレーシ゛リソースの論理的分割である。割り当てられたリソース及び共有リソースに対するアクセス制御を保証するため、各vfilerには各々のアクセスフ゜ロトコルについて独自のセキュリティト゛メインがさらに割り当てられる。ファイルシステムによってvfiler境界チェックが実施され、要求のあったファイラーフ゜ラットフォーム上に格納されたファイルについてカレントvfilerが特定のストレーシ゛リソースへのアクセスが可能であるか判定される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はサーバアーキテクチャに関し、詳しくは1つの物理サーバプラットフォーム内で複数の論理サーバのインスタンス化を可能にするアーキテクチャに関する。
【背景技術】
【0002】
ファイルサーバとは、メモリ、テープ、ディスク等の書き込み可能な持続性記憶装置上での情報の編成に関するファイルサービスを提供するコンピュータである。ファイルサーバまたはファイラーは、情報をディレクトリ及びファイルの階層構造として例えばディスク上に論理的に編成するためのファイルシステムを実施するストレージオペレーティングシステムを含むストレージシステムとして実現される。「ディスク上」の各ファイルは、ファイルの実際のデータ等の情報を記憶するように構成された例えばディスクブロック等のデータ構造の集まりとして実施される。一方、ディレクトリは、他のファイルまたはディレクトリに関する情報を記憶する特別なフォーマットのファイルとして実施される。
【0003】
更に、ストレージシステムはクライアント/サーバ形態の情報配送に従って動作するように構成され、これにより多数のクライアントがファイルサーバ等のサーバによって実行されているアプリケーションサービスにアクセスできる。この形態の場合、クライアントは、インターネット等の公衆網を介して実施されるポイント・ツー・ポイント接続、共有ローカルエリア・ネットワーク、ワイドエリアネットワーク、または、仮想私設網(VPN)等のコンピュータネットワークを介してファイルサーバに「接続」するためのアプリケーションをコンピュータ上で実行している場合がある。各クライアントは、これらのネットワークを介してファイルシステムプロトコルメッセージを(パケットの形で)サーバへ発行することにより、ファイルサーバに対してファイルシステムのサービスを要求することができる。しかしながら、ファイルサーバは(例えばクライアントまたは「ホスト」)コンピュータに直接取り付けられた複数の記憶装置の集まりとして動作するように構成される場合もある。この場合、ユーザはそれらの記憶装置に対してアクセス(すなわち、読み出しまたは書き込み)するためのファイルシステムのサービスを要求する場合もある。
【0004】
ディスク上でデータを上書きしないファイルシステムの1種は、write-anywhereファイルシステムである。ディスク上のあるデータブロックがディスクからメモリに取得され、新たなデータで「汚される」場合、そのデータブロックはディスク上の新たな位置に記憶され(書き込まれ)、これによって書き込み性能を最適化している。write-anywhereファイルシステムは、データがディスク上に実質的に連続的に配置された最適なレイアウトを最初に仮定する。この最適なディスクレイアウトによって効率的なアクセス動作になり、特にディスクに対するシーケンシャルリード動作について効率的なアクセス動作になる。ファイラー等のストレージシステム上で動作するように構成されたwrite-anywhereファイルシステムの一例は、カリフォルニア州サニーベールにあるネットワークアプライアンス社から入手できるWrite Anywhere File Layout(WAFL(登録商標))である。WAFLファイルシステムは、ファイラー及び関連ディスクストレージのプロトコルスタック全体の中で、マイクロカーネルとして実施される。
【0005】
通常、ディスクストレージは一群の物理的な記憶装置(ディスク)を含む1以上の「ボリューム」として実施され、ディスク空間の全体的な論理的配置を定義している。通常、各ボリュームはそのボリューム独自のファイルシステムに関連している。WAFLファイルシステムの場合、物理ボリュームの名前空間の中に、論理サブボリュームの性質を持つ「qtree」と呼ばれる特別なディレクトリが作成される。各ファイルシステムオブジェクト(ファイルまたはディレクトリ)は唯1つのqtree及び複数のquotaに関連しており、セキュリティプロパティ及びその他の事項はqtree毎に割り当てることができる。各ボリュームはそのボリューム独自のファイルシステム識別子(ID)を有しており、ボリューム内の各qtreeはそのqtree独自のqtreeIDを有している。
【0006】
ファイラーは通常、多数(数千)のユーザを支える大量の記憶装置(例えば6テラバイト等)を有している。この種のストレージシステムは、多くの用途即ち「目的」について一般的に大きすぎ、高価すぎることが多い。1ボリューム(または1ファイルシステム)の典型的な最小記憶容量でさえ約150ギガバイト(GB)もの大きさがあり、ほとんどの目的について一般的に大きすぎるものである。
【0007】
ユーザは、1つのファイラーを利用するのではなく、特定の目的に適合した複数の小型サーバを購入することも可能である。しかしながら、上述のように1ボリュームの典型的な最小記憶容量は約150GBであるから、記憶装置の細分性に関する問題は依然として存在する。また、多数の小型サーバの入手は1つのファイラーの購入よりもコストがかかる場合もある。さらに、多数の小型サーバを維持及び管理するコストは通常、1つのファイラーを維持及び管理するコストよりも実質的に大きいものである。従って、多数のサーバを1つのファイラープラットフォーム内に統合し、それらのサーバを論理的に実現することが望まれている。従って、サーバ統合とは、複数の論理サーバあるいは仮想サーバを1つの物理サーバプラットフォーム内に設ける能力として定義される。1つのプラットフォーム内に実現可能な仮想サーバの例としては、ウェブサーバ、データベースサーバ、メールサーバ、及び、ネームサーバが挙げられる。
【0008】
従来のサーバ統合ソリューションは、1つのプラットフォーム内に実質的に「まとめてラックに納められた」複数の独立したサーバを提供するものである。このソリューションの一例は、EMC社から入手可能なCelerraアーキテクチャである。Celerraアーキテクチャは、データムーバまたはファイルサーバのインスタンスの概念を利用しており、様々な他のデータムーバに対して論理的に配分および割り当て可能なストレージリソースを有するSymmetrixストレージデバイスのフロントエンドとして機能する。各データムーバは、そのデータムーバ独自のネットワークハードウェアの集合と、そのデータムーバ独自のオペレーティングシステムのコピーを動作させるためのそのデータムーバ独自のプロセッサとを有している。
【0009】
他の統合サーバソリューションは、サーバの複数のインスタンスを1つの物理プラットフォーム上で実行するように構成される。例えばIBM社の仮想マシン(VM)オペレーティングシステムは、メインフレームコンピュータシステム上で動作し、サーバの複数のインスタンスをそのコンピュータシステム上で実行できるようにする。各VMは、独自のファイルシステム及びストレージリソースを有する1つのオペレーティングシステム全体を完全にインスタンス化したものである。従って、メインフレーム上で動作しているVM間でファイルシステムやストレージリソースを共有することはない。そうではなく、コンピュータシステムのストレージリソースは、そのコンピュータ上に実現されたVMのインスタンスに配分され、専用のものになる。
【0010】
サーバプロセスの複数のインスタンスの実行に対応したサーバ統合ソリューションの他の例としては、Sambaがある。Sambaは、UNIXオペレーティングシステムプラットフォーム上で動作するオープンソースのWindows互換サーバである。Sambaサーバは、システムのアプリケーション層で実行され、UNIXプラットフォーム上で動作するWindows互換サーバの複数のインスタンスを提供する。Sambaは、1つの物理プラットフォーム上で複数のサーバを実行するための、比較的一般的な「サーバプロセス複製」に基くアプローチの一例である。
【0011】
最後に、サーバ統合を実施する最も簡単な方法は、統合されている全てのサービス(即ちファイルサーバ用のストレージ)ユニットをリネームして各々のサービスユニットがそれらの間で一意に定まるようにし、全てのサービス(ストレージ)ユニットのサービスを提供する1インスタンスの統合サーバを構成することである。本明細書では、以後この方法を「サーババンドリング」と呼ぶ。
【0012】
プロセス・ベースの、及びサーババンドリング・ベースのサーバ統合ソリューションは通常、プラットフォーム上で動作しているサーバインスタンスの各々について異なるセキュリティ特性を提供しない。例えば、Sambaは、Windows互換(例えばNT)サーバの全てのインスタンスについて、Sambaのプラットフォームインフラストラクチャの非複製部分に関する1セットのセキュリティ特性(即ちセキュリティドメイン)しか持たない。セキュリティドメインの一例は、Windows NT(登録商標)ドメインセキュリティである。NTドメインセキュリティは、あるドメインの全てのユーザ及びサーバが権限を有するユーザ識別子及びグループ識別子(「セキュリティオブジェクト」)並びにオペレーティングシステムのリソースなどを含む同じセキュリティ情報を共有することによる抽象概念である。
【0013】
概して、このセキュリティ情報は、Windows NTで保護されたサブシステムによって、セキュリティアカウントマネージャ(SAM)データベースに保持される。SAMデータベースは、UNIXサーバ上の/etc/passwdデータベース及び/etc/groupデータベースの組み合わせと同等のものであり、そのサーバにローカルなユーザ及びグループだけを保持している。この/etc/passwd、/etc/groupといった表記は、UNIXプラットフォーム上で使用されるパスワードファイル及びグループファイルへのパスを指す設定ディレクトリを示している。あるセキュリティドメインにアカウントを有するユーザは、そのドメイン内の任意のサーバから自分のアカウントにログオンしてアクセスすることが可能である。通常、1つのサーバは、(各アクセスプロトコルについて)一度に1つのセキュリティドメインにしか属することができない。マルチプロトコルサーバーは、各アクセスプロトコルについて1セキュリティドメインと同程度の数のセキュリティドメインに属することが可能である。例えばマルチプロトコルファイラーは、CIFS(Common Internet File System)アクセスのためにNTドメインに属するとともに、NFS(Network File System)アクセスのためにNIS(Network Information System)ドメインにも属する場合がある。上記のように、UNIX環境も異なるサーバについて異なるセキュリティオブジェクトを有する場合がある。
【0014】
Windows(登録商標) networkingの一態様は、ユーザがサーバ上の1単位のストレージを参照するための方法を定義したUNC(Uniform Naming convertion)パスの概念である。UNCパスは、先頭に「\\」の文字列を付けて、ネットワーク上のリソース名を指し示すものである。例えば、UNCパスは、サーバ名、共有名及びパス記述子を含み、シェア等の1単位のストレージをまとめて参照する。シェアとは、ファイルシステム上のディレクトリ等の共有ストレージリソースである。
【0015】
複数のセキュリティドメインに対応するために用いられる複数の独立サーバを有する環境の場合、すべてのシェア(及び共有名)は異なるものでなければならない。しかしながら、それらの複数のサーバをサーバに対するエイリアス名を用いて1つのサーバプラットフォームに統合した場合(Sambaやサーババンドリング等のサーバプロセス複製により)、何らかのエイリアスサーバ名を介してアクセスしたときにすべての共有リソースが見えてしまう場合があるので、シェアに対するUNCパスの中のサーバ名を変更しなければならない場合がある。言い換えると、各サーバがサーバ独自のシェアの集合を有していても、ユーザは自分のデータにアクセスするためにそれらのシェアのUNCパス定義を変更しなければならない場合がある。
【0016】
例えば、第1のNTサーバ(NT1)及びそのクライアントがセキュリティドメイン1に関連し、第2及び第3のNTサーバ(NT2、NT3)及びそれらのクライアントがセキュリティドメイン2に関連しているような3つ(3)のNTサーバを編成するものと仮定する。即ち、NT2及びNT3のクライアント(ユーザ)はセキュリティドメイン2内の同じセキュリティデータベースを共有するものとする。セキュリティドメイン2のユーザがNT3上のあるシェア(proj1)を参照する場合、そのユーザは認証のためにまずセキュリティドメイン2に加入し、その後、そのサーバに接続し、そのサーバを共有する。ユーザによって指定されるこのUNCパスの表記の例は、
\\NT3\data\proj1
というようなものになる。
【0017】
次に、サーバNT1〜3及びそれらに取り付けられたリソースの1つをサーバプラットフォームに統合するものと仮定する。この場合、特定ドメインのクライアントが自分のデータを参照する方法に関して問題が生じる。すなわち、各クライアントがproj1と呼ばれるシェアを有し、それらのシェア全てが1つのプラットフォーム内に統合された場合、それらのシェアを区別する方法が存在しなければならない。サーバのストレージリソースに対するデータのマイグレーション(移行)や再構成はクライアントシステムに対して透過的ではなく、実際には、この問題を解決するために、クライアントシステムは自分のデータに対するパス記述子を変更しなければならない場合も多い。こうしたアプローチは、クライアントシステムに代わるアクションが必要になるので、一般的に望ましくない。さらに、ストレージリソースを1以上のサーバに統合した場合、ユーザがそれらのサーバのリソースにアクセスするときにそれらのサーバが同じセキュリティドメインに存在しないこともあり得る。
【0018】
VMサーバ及びデータムーバサーバによるサーバ統合技術は、物理的システムリソースの分割、及びオペレーティングシステムオブジェクトの複製に基くものであり、複数のセキュリティドメインからサーバを統合することができないことや、サービス(ストレージ)ユニットのリネームが必要になることといった上記2つの制限の影響を受けることはない。しかしながら、これらの技術には他の制限がある。通常、このようなサーバ統合ソリューションのオペレーティングシステムは、ネットワークインタフェースカード等の物理的ハードウェアデバイスや、ハードウェアデバイスをうまく定義した集まり等を表すソフトウェアオブジェクトを含む。ハードウェアデバイスの集まりを表すソフトウェアオブジェクトの一例は、オペレーティングシステム上で動作しているアプリケーションによって利用可能な記憶ディスクの集合に対して空間の割り当てを行なうファイルシステムである。
【0019】
VMタイプまたはデータムーバタイプのシステムの場合、通常これらのハードウェアを表すソフトウェアオブジェクトの静的割り当ては、システムのハードウェアリソースのサブセットをVM/データムーバ(仮想サーバ)の1つのインスタンスに関連付けることにより実施される。各仮想サーバに対するリソースの割り当てにより、ハードウェアリソースを表すソフトウェアオブジェクトが仮想サーバに直接割り当てられるので、ハードウェアリソースは特定の仮想サーバに直接関連付けられている。この直接割り当て方法はリソース管理の柔軟性を制限するものであり、特に仮想サーバ間でのリソースの「論理的」割り当てに関して柔軟性を制限する。また、この方法は、すべての分割及びサイズ決定を統合時に行なわなければならず、統合サーバの発展に応じて後から容易にそれらを変更することができないので、サーバ統合の革新的成長を妨げるものである。
【0020】
サーバ統合は、ストレージサーバプロバイダ(SSP)の場合に特に有用である。SSPは、1つの物理的なプラットフォーム、即ち「データセンター」を用いて、データストレージアプリケーションのサービスを複数のユーザまたはクライアントに提供(「ホスティング」する。このデータセンターは主としてSSPによって保守され、安全で信頼性の高いストレージサービスをクライアントに提供する。典型的な構成の場合、データセンターは、独立した私設の内部ネットワーク(「イントラネット」)を有する複数の異なるクライアント環境に接続される。各イントラネットは異なるクライアント又はクライアントの部署に関連している場合があるので、物理的プラットフォーム内でデータトラフィックを個別に保持しなければならない。
【0021】
従って、本発明は、複数のセキュアな仮想サーバを1つの物理的ファイラープラットフォーム内にインスタンス化することを可能にし、柔軟性の高い物理リソースの分割を可能にするアーキテクチャに関するものである。
【0022】
さらに本発明は、複数のセキュアな仮想サーバを1つの物理的ファイラープラットフォーム内にインスタンス化することを可能にし、SSP環境での使用に適し、高レベルのセキュリティをユーザに提供するアーキテクチャに関するものである。
【0023】
さらに本発明は、災害復旧、データマイグレーションまたはロードバランシング等に使用するため、異なる物理プラットフォーム上のサーバの効率的なマイグレーション及び再インスタンス化を可能にする形態で記憶されたデータ及びすべての設定情報を有するサーバのカプセル化を可能にするアーキテクチャにも関連する。
【発明の概要】
【課題を解決するための手段】
【0024】
本発明は、仮想ファイラー(vfiler)等の仮想サーバの複数のインスタンスをファイラープラットフォーム等の1つのサーバ内に十分な柔軟性及び細分性で作成及び維持するための能力を提供するアーキテクチャに関する。vfilerは、マルチプロトコルサーバのインスタンスを確立するための、ファイラーのネットワーク及びストレージリソースの論理的分割である。各vfilerは、プラットフォーム上の他のvfilterから独立して維持及び実行される。ストレージユニットやネットワークインタフェースのネットワークアドレス等の専用ファイラーリソースをグループ化及び分割し、ファイラー内にセキュリティドメインを確立することができる。さらに、ストレージオペレーティングシステム及びファイルシステム等の共通ファイラーリソースをvfiler間で共有することができる。
【0025】
具体的には、各vfilerには、ボリュームやqtree等の専用の個別単位のストレージリソースと、インターネットプロトコルアドレス等のネットワークアドレスとが割り当てられる。また、各vfilerは、そのクライアントシステムに代わって共通ファイルシステムに共用アクセスすることが可能である。従って、例えばクライアントの共有ファイルシステムへのアクセスに関するセキュリティオブジェクトの解釈は、vfilerによって異なる場合がある。これに対処するため、各vfilerに、特にvfilerに一意の個別のセキュリティドメインに関する情報を含むvfilerコンテクストデータ構造を設け(サポートされているアクセスプロトコル毎に)、これによってvfilerに割り当てられた共有リソースに対するアクセスの制御を可能にする。
【0026】
本発明の一態様によると、ストレージオペレーティングシステムのファイルシステムによってvfiler境界チェックが実施され、ファイラー上で実行されている現在のvfilerが要求されたプラットフォーム上のファイルの特定のストレージリソースにアクセス可能であることが検証される。このvfiler境界チェックは、要求されたファイルのiノードから得た、そのファイルに関する記憶単位(qtreeまたはボリューム)などの設定情報に基いて行なわれる。具体的には、複数ステージの検証手順に従ってファイルシステム識別子及びqtree識別子を確認し、それらの識別子が現在のvfilerに割り当てられたストレージリソースの要素であることを確認する。一単位のストレージのアクセスの要求がある毎に、これらの識別子を用いてvfiler境界チェックが実施され、要求を行なっているvfilerがそのストレージリソースに対するアクセスを許可されているか否かが判定される。このチェックにより、要求を行なっているvfilerが要求したストレージリソースに対するアクセスを許可されていないことが判明した場合、その要求は直ちに拒否される。そうでない場合には、その要求は許可され、ファイルシステムはその要求を処理するための処理を行う。
【0027】
有利なことに、この新規なvfilerアーキテクチャによると、仮想サーバ及びそれらの各々のデータアプリケーションの1つのファイラ上への統合だけでなく、すべてのサーバネットワーク及びストレージリソースのカプセル化も容易になる。サーバ統合は、各々がセキュリティドメインに関連付けられたvfilerの作成(サポートされているアクセスプロトコルの各々について1つ)によって行なわれる。これらのセキュリティドメイン間には共通の要素がまったくなく、これによって個別の独立したvfilerが同じファイラープラットフォーム内に提供される。本発明のこの態様は、ファイラ上で複数のクライアント組織のデータアプリケーションを扱うストレージサービスプロバイダの場合、特に有用である。各クライアント組織は、自分のvfilerだけにしかアクセスすることができず、他の組織と同じ物理ファイラーを共有していることにはまったく気づかない。従って、この新規なアーキテクチャによると、各クライアント組織について専用のファイラーは不要になる。
【0028】
さらに、ストレージリソースがvfiler毎に割り当てられるため、vfiler間でのストレージリソースのマイグレーションがユーザに対して透過的になる。これによって、クライアントはデータを参照するための方法(例えばパス記述子)を変更する必要もなくなる。さらに、基礎とするファイルシステムを共有しているため、vfilerに対するストレージユニットの割り当てを柔軟にすることができ、優れた細分性にすることができる。即ち、1つのボリュームを複数のvfilerで共有することができ、さらに、1つのファイラは任意の複数のボリューム上に1以上のボリューム及び/又は1以上のqtreeを有することができる。
【0029】
本発明の上記の利点及び更なる利点は添付の図面とともに下記の説明を参照することによってさらによく理解することができ、図面中で似たような符合は全く同じ要素あるいは機能的に類似した要素を指している。
【図面の簡単な説明】
【0030】
【図1】複数のクライアント及び1つのサーバを含む本発明に有利に用いられるコンピュータネットワークを示す略ブロック図である。
【図2】本発明に有利に用いられるネットワークストレージアプライアンスまたはファイラー等のサーバを示す略ブロック図である。
【図3】本発明に有利に用いられるストレージオペレーティングシステムを示す略ブロック図である。
【図4】複数の仮想ファイラー(vfiler)を有する本発明によるファイラーの一実施形態を示す略図である。
【図5】本発明によるvfilerコンテクストデータ構造を示す略ブロック図である。
【図6】本発明に有利に用いられるソフトウェアデータオブジェクト構造を示す略ブロック図である。
【図7】本発明によるvfiler境界チェックを実施するために使用される様々なデータ構造を示す略ブロック図である。
【図8】本発明の境界チェックに関する複数ステージの検証手順に含まれるステップの流れを示すフロー図である。
【発明を実施するための形態】
【0031】
図1は、複数のクライアント110と、ネットワークストレージアプライアンス等のファイルサーバとを含む本発明に有効に使用されるコンピュータネットワーク100の略ブロック図である。ファイルサーバまたはファイラー200は、ディスク等のストレージデバイス上の情報の編成に関するファイルサービスを提供するコンピュータである。クライアント100は、従来のCIFS(Common Internet File System)やNFS(Network File System)プロトコル等のファイルシステムプロトコルを有するアプリケーションを実行するように構成された汎用コンピュータでよい。さらにクライアント110は、クライアント/サーバモデルの情報配送に従ってファイラー200と対話することができる。即ち、ネットワーク100を介して例えばCIFS及びNFSプロトコルフォーマットにカプセル化されたパケット120を交換することにより、各クライアントはファイラーのサービスを要求することができ、ファイラーはクライアントから要求されたサービスの結果を返すことができる。当業者であれば、本明細書で説明する新しい技術は、サーバ上のサーバアプリケーションと通信するクライアント上で実行されている様々なアプリケーションに従って任意のクライアントにサービスを提供する任意のサーバに適用することが可能であることが分かるであろう。
【0032】
ファイラー200は、複数の物理リンク180を介してルータやスイッチなどの中間ネットワークノード150に接続される。この物理リンクには、例えばギガビットイーサネットリンク、100BASE−Tイーサネットリンク、10BASE−Tイーサネットリンクまたはその他同様のリンク等が含まれる。スイッチ150は更に、例えばローカルエリアネットワーク(LAN)や仮想LAN(VLAN)として構成されたネットワーククラウド130を介してクライアント110に接続される。あるいは、ファイラーはポイント・ツー・ポイント接続やLAN等の共有媒体からなる通信リンク140を介して1以上のクライアントに直接接続することもできる。
【0033】
図2は、従来のPCI(Peripheral Computer Inter Connect)バス等のシステムバス210によって相互接続されたプロセッサ202、メモリ204、ストレージアダプタ206及び1以上のネットワークアダプタ208を含むファイラー200を示す略ブロック図である。このファイラーは、ストレージアダプタ206に接続されたディスク216上で情報をディレクトリ及びファイルの階層構造として論理的に編成するためのファイルシステムを実行するストレージオペレーティングシステム300をさらに含む。本明細書で説明する例示的実施形態の場合、ストレージオペレーティングシステム300は、好ましくはネットワークアプライアンス社から入手できるNetApp Data ONTAP(登録商標)であり、FAFL(Write Anywhere File Layout)ファイルシステムを実施する。
【0034】
メモリ204は様々なセクションに分配することができ、そのうちの1つはストレージオペレーティングシステム300のネットワークドライバによって使用するために複数のデータバッファ222として編成されたバッファプール220である。本明細書で説明されるように、各ネットワークドライバはバッファ222のリストに割り当てられ、ネットワークアダプタ208のインタフェース218で受信されたデータ要求をロードするために使用される。メモリの他のセクションは、本発明に関するソフトウェアプログラムコード及びデータ構造を記憶するため、プロセッサ及びアダプタによってアドレス指定可能な記憶場所として編成することができる。従って、プロセッサ及びアダプタは、そのソフトウェアコードを実行し、データ構造にアクセスするように構成された処理要素及び/又は論理回路を含む。ストレージオペレーティングシステム300は、その一部が通常メモリ内に存在し、処理要素によって実行され、特にファイラー200によって実施されるサービスを支えるストレージ及びネットワーク操作を呼び出すことにより、そのファイラーを機能的に編成する。当業者であれば、本明細書で説明する新しい技術に関するプログラム命令の記憶及び実行には、様々なコンピュータ読取可能媒体を含めて他の処理手段及び記憶手段も利用できることが分かるであろう。
【0035】
ネットワークアダプタ208は、物理リンク180を介してファイラー200をスイッチ150に接続するのに必要な機械的回路、電気回路及び信号回路を有するネットワークインタフェースカード(NIC)を含む場合がある。一実施形態では、この物理リンク及びインタフェースは、集合インタフェースまたは仮想インタフェース(VIF)190として編成される。各NICは1つのインタフェース218を有し、4リンクのVIFの場合、ファイラーは4個のNIC208を有する。あるいは、各NIC208が4個の「4分の1ポート」インタフェース218を有し、各々の4分の1ポートインタフェースがVIF190のリンク180に接続されるようにすることもできる。他の実施形態では、物理リンク及びインタフェースを集合インタフェースまたはVLANではないように構成することもできる。各インタフェース218には、1つのMAC(Media Access Control)アドレスと共に1以上のIP(Internet Protocol)アドレスを割り当てることができる。しかしながら、物理インタフェース218及びそれらに関連するリンク180を1つの仮想インタフェース190に一体化した場合、全ての物理インタフェースがただ1つのMACアドレスに応答してしまう。即ち、物理インタフェース218は、共通のMACアドレスが割り当てられた1つの論理インタフェースを有する1つの仮想的な「パイプ」に編成される。
【0036】
ストレージアダプタ206はファイラー上で実行されているストレージオペレーティングシステム300と協働してクライアントから要求された情報にアクセスすることができ、この情報はディスク等の何らかの記憶媒体上に記憶されている。ストレージアダプタは、従来の高性能ファイバーチャネルシリアルリンクトポロジー等のI/O相互接続構成を介してディスクに接続された入出力(I/O)インタフェース回路を含む。情報はストレージアダプタによって取得され、必要であればシステムバス210を介してネットワークアダプタ208へ転送する前にプロセッサ202(又はアダプタ206自体)によって処理を施し、その情報をパケット120にフォーマットしてクライアント110へ返す。
【0037】
ファイラーに対する情報の記憶は物理的ストレージディスク216の集まりを含む1以上のストレージ「ボリューム」として実施し、ディスク空間の全体的な論理的構成を定義することが好ましい。各ボリュームは通常、そのボリューム独自のファイルシステムに関連している。ディスク216に対するアクセスを容易にするため、ストレージオペレーティングシステム300は、ディスク上で情報をファイル及びディレクトリの階層構造として論理的に編成するファイルシステムを実施する。「ディスク上」の各ファイルはデータ等の情報を記憶するように構成されたディスクブロックの集合として実施されるのに対し、ディレクトリは他のファイル及びディレクトリに関する情報を格納した特別なフォーマットのファイルとして実施される。前述のように、ストレージオペレーティングシステムは、WAFLファイルシステムを実施するData ONTAPオペレーティングシステムであることが好ましい。しかしながら、任意の適当なファイルシステムを用いることが可能であることは明らかであるから、「WAFL」という用語を使用した場合でも、この用語は本発明の教示に適合可能な任意のファイルシステムを広く意味するものと解釈すべきである。
【0038】
図3は、本発明に有利に用いられるData ONTAPオペレーティングシステム300を示す略ブロック図である。このストレージオペレーティングシステムは、ネットワークドライバ(例えばギガビットイーサネットドライバ等)のメディアアクセス層310を含む一連のソフトウェア層から構成される。このオペレーティングシステムは更に、IP層312等のネットワークプロトコル層と、その補助的なトランスポート機構であるトランスポートコントロールプロトコル(TCP)層314及びユーザデータグラムプロトコル(UDP)層316を含む。ファイルシステムプロトコル層はマルチプロトコルデータアクセスを提供するため、CIFSプロトコル318、NFSプロトコル320及びハイパーテキストトランスファープロトコル(HTTP)322をサポートする。また、ストレージオペレーティングシステム300は更に、RAID(Redundant Array of Independent Disks)プロトコル等のディスクストレージプロトコルを実施するディスクストレージ層324と、SCSI(Small Computer Systems Interface)プロトコル等のディスクアクセスプロトコルを実施するディスクドライバ層326とを含む。
【0039】
これらのディスクソフトウェア層とネットワークプロトコル層/ファイルシステムプロトコル層との橋渡しをするのはWAFL層330であり、好ましくはWAFLファイルシステムを実施する。WAFLファイルシステムのディスク上のフォーマットは、例えば4キロバイト(kB)のブロックを用いたブロックベースのフォーマットであり、ファイルを表すのにinodeを使用している。inodeとはファイルに関するメタデータ等の情報を記憶するために使用されるデータ構造であり、例えば128バイトのデータ構造である。inodeに保持されるメタデータには、例えばそのファイルの所有者、ファイルのパーミッション、ファイルのサイズ、ファイルの種類、ファイルに関する記憶単位、及び、そのファイルのディスク上の位置等が含まれる。WAFLファイルシステムは、ファイルハンドル、すなわちinode番号を含む識別子を用いてディスクからinodeを検索する。また、WAFL層330は、そのファイルシステムのレイアウトを記述するメタデータを記憶するためにファイルも使用する。これらのメタファイルには、特にinodeファイルが含まれる。
【0040】
動作時には、クライアント110からの要求は、例えばコンピュータネットワーク100を介して従来のCIFSまたはNFSプロトコルのパケット120としてファイラー200のネットワークアダプタ208に転送される。メディアアクセス層310のネットワークドライバは、ネットワークアダプタと協働してその要求パケットをデータバッファ222にロードし、その入ってきた要求パケットを受信したファイラーの物理インタフェース218の名前を用いてそのバッファにマークを付ける。各バッファ222はヘッダ部分224及びデータ部分226からなり、入ってきたパケットはデータ部分にロードされる。ヘッダの内容には(1)バッファの種類、(2)様々なフラグ、及び(3)ファイラーによってマークが付けられた着信インタフェースが含まれ、これらがファイラーによって維持される。入ってきたパケットがロードされた後、バッファ222はネットワークプロトコルスタックが実質的に繰り上げられ、例えばファイラーのディスク上に記憶されたデータをフェッチすることによりその要求をサービスする、適当なアプリケーションへ配送される。
【0041】
具体的には、ネットワークドライバ310は、そのバッファをWAFL層330へ転送する前にさらなる処理を行なうため、ネットワークプロトコル層312〜314またはCIFSまたはNFS層318、320上へ渡す。WAFLファイルシステムは、要求されたデータ(及びinode)が「コア」内、即ちメモリ204内に存在しなければ、要求されたデータ(及びinode)をディスク216からロード(検索)するための処理を行なう。その情報がメモリ内に存在しない場合、WFAL層330は、inode番号を用いてinodeファイル内に索引付けして適当なエントリにアクセスし、論理ボリュームブロック番号(VBN)を取得する。次いでWAFL層はその論理VBNをディスクストレージ(RAID)層324に渡し、ディスクストレージ(RAID)層324がその論理番号をディスクブロック番号にマッピングし、ディスクブロック番号をディスクドライバ層326の適当なドライバ(例えばSCSIドライバ等)へ送信する。ディスクドライバは、ディスク216のそのディスクブロック番号にアクセスし、要求されたデータブロックをファイラーで処理するためメモリ204にロードする。要求をサービスする際、CIFSまたはNFS層318、320は、フェッチされたデータに対してバッファプールの中から別の(応答)バッファ222を割り当て、更にその応答を最初の要求に関連付ける。即ち、CIFSまたはNFS層は、入ってきた要求に関連する物理インタフェースを用いてその応答バッファにマークを付ける。
【0042】
前述のように、ファイラー200は複数のクライアント110に対してファイルサービスを提供するように構成されているため、通常、クライアントから発行された要求に応答してデータを返す。この応答性を向上させるため、本ファイラーは、クライアントから要求を受信するのに使用された物理インタフェース218と同じ物理インタフェースを介して実質的に応答を返すという「高速パス」技術を実施する。高速パス技術を実施するためには、CIFSまたはNFS層318でバッファヘッダー224内に高速パスフラグをアサートし、次いでそのバッファをプロトコルスタック「下方」のIP層312へ渡し、IP層でそのフラグの状態を検査する。高速パスフラグのアサートにより、その特定の応答についてはルート計算を実施する必要のないことがIP層に通知される。従って、その応答バッファを受信する宛先となるファイラー内のインタフェースは、その要求を受信した着信インタフェース218である。応答バッファがそのインタフェースへ転送され、要求されたデータがネットワーク100を介してクライアント110へ返される。
【0043】
ファイラーで受信されたクライアント要求についてデータストレージアクセスを実施するのに必要な上記ストレージオペレーティングシステム層中を通るソフトウェア「パス」は、代替としてハードウェアで実施することも可能である。即ち、本発明の代替の実施形態では、ストレージアクセス要求データパス350は、FPGA(Field Programmable Gate Array)またはACIC(Application Specific integrated circuit)内に論理回路として実施することもできる。この種のハードウェアによる実施は、クライアント110から発行されたファイルシステム要求パケット120に応答してファイラー200によって提供されるファイルサービスの性能を向上させることができる。さらに本発明の他の実施形態では、プロセッサ202からパケット処理及びストレージアクセス処理の負荷のいくらかまたはすべてを軽減させるようにアダプタ206、206の処理要素を構成し、これによってファイラーによって提供されるファイルサービスの性能を向上させることもできる。本明細書で説明する様々な処理、アーキテクチャ、及び手順は、ハードウェアでもファームウェアでも、あるいはソフトウェアでも実施することができるということは明らかである。
【0044】
本明細書で使用する場合、「ストレージオペレーティングシステム」という用語は、ストレージシステムにおいてストレージ機能を実施することが可能なコンピュータ実行可能コードを一般的に意味し、例えばファイルシステムセマンティック及びデータアクセス管理を実施するコンピュータ実行可能コードを意味している。この意味において、ONTAPソフトウェアは、マイクロカーネルとして実施され、WAFLファイルシステムセマンティックを実施してデータアクセスを管理するためのWAFL層を含むこのようなストレージオペレーティングシステムの一例である。このストレージオペレーティングシステムは、UNIX、Windows NT等の汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施することもできるし、本明細書で説明するストレージアプリケーションあるいは本明細書で説明するような設定可能な機能を有する汎用オペレーティングシステムとして実施することもできる。
【0045】
さらに当業者であれば、本明細書で説明する本発明の技術は、ストレージシステムとして実施されるスタンドアロンのコンピュータあるいはその一部、または、ストレージシステムを含むスタンドアロンのコンピュータあるいはその一部を含めて、任意の種類の特別な用途(例えばファイルサービスアプライアンス等)のコンピュータにも汎用コンピュータにも適用可能であることが分かるであろう。サーバは1以上のクライアントにアプリケーションサービスを提供するコンピュータとして定義され、このコンテクストにおいて、仮想サーバはクライアントに提供されるアプリケーションサービスのインスタンスである。また、本発明の教示は、これらに限定はしないが、ネットワークに取り付けられたストレージ環境、ストレージエリアネットワーク、及び、クライアントやホストコンピュータに直接取り付けられたディスクアセンブリ等を含む様々なストレージシステムアーキテクチャに適合させることができる。従って、「ストレージシステム」という用語は、ストレージ機能を実施するように構成された任意のサブシステム及びその他の装置またはシステムに関連する任意のサブシステムだけでなく、それらの構成も含むように広い意味で解釈すべきである。
【0046】
Vfiler
本発明は、複数の仮想ファイラ(vfiler)等の仮想サーバを1つのファイラ等のサーバ内に作成及び維持するための能力を提供するアーキテクチャを含む。vfilerは、マルチプロトコルサーバのインスタンスを確立するための、ファイラープラットフォームのネットワーク及びストレージリソースの論理的分割である。各vfilerは、プラットフォーム上の他のファイラーとは完全に独立して維持及び実行される。そのため、ストレージの記憶単位及びネットワークインタフェースのネットワークアドレス等の専用ファイラーリソースを自由にグループ分けして「ハード」パーティションに分割することにより、ファイラー内にセキュリティドメインを確立することができる。さらに、ストレージオペレーティングシステム及びファイルシステム等の共通ファイラーリソースは、vfiler間で共有することができる。
【0047】
具体的には、各vfilerには、特定量の専用の個別の単位のストレージリソース(即ちサブセット)が割り当てられるとともに、1以上の専用の個別のネットワークアドレスが割り当てられる。また、各vfilerは、そのクライアントに代わって共通ファイルシステムに共用アクセスすることも許可されている。従って、例えば共通ファイルシステムにアクセスするクライアントに関するセキュリティオブジェクトの解釈はvfiler間で異なる場合がある。これを解決するため、各vfilerには、特にそのvfilerに一意で個別のセキュリティドメインに関する情報を含むvfilerコンテクストデータ構造(以下「vfilerコンテクスト」と呼ぶ)が設けられ、これによってvfilerに割り当てられた共有リソースに対するアクセスを制御できるようにしている。
【0048】
例えば、第1のvfilerのvfilerコンテクストにより、第1のセキュリティドメインのユーザまたはクライアントは、ファイラ上のストレージリソースの第1のサブセットにアクセスするための要求を発行するときに、発信元ネットワークアドレス及び宛先ネットワークアドレスの第1の組を確実に使用できるようになる。同様に、第2のvfilerのvfilerコンテクストにより、第2のセキュリティドメインのユーザまたはクライアントは、発信元ネットワークアドレス及び宛先ネットワークアドレスの第2の組を使用してストレージリソースの第2のサブセットにアクセスできることが保証される。注目して欲しいのは、各セキュリティドメインのクライアントはファイラー上でお互いの存在に気づくことがなく、また、お互いのストレージリソースにアクセスすることもできない点である。さらに、vfiler間にデータフローは存在しない。
【0049】
図4は、本発明による複数のvfilerを有するファイラープラットフォーム400の一実施形態を示す概略図である。各ファイラーは、例えばCIFSサーバ等のサーバとして実施され、例えばVF1〜VF3等の論理名で図示されている。クライアントから見ると、各vfilerは他のvfilerから個別で独立したものに見える。各vfiler VF1〜VF3は、1以上のネットワークインタフェース408a〜cに割り当てられた1以上のインターネットプロトコル(IP)アドレスを有するように構成される。このコンテクストにおいて、「ネットワークインタフェース」という用語はIPアドレスを割り振ることが可能なインタフェースを意味しており、「物理的」NIC、及び、VIF、VLAN、エミュレーテッドLAN(ELAN)等の「ソフトウェア」NICも含まれる。注意して欲しいのは、一枚のNICは複数のIPアドレスをサポートすることができ、必要であれば、このような構成を用いることにより、複数のvfilerが1つのNICを有効に共有することも可能である点である。
【0050】
更に、ファイラーの各インタフェースにはインタフェースをIP空間に「バインド」するIP空間識別子(ID)406a〜cが割り当てられる。IP空間とは、ファイラー及びそのストレージオペレーティングシステムが参加している個別のIPアドレス空間を意味している。1つのファイラーは複数のIP空間をサポートすることができる。各vfilerは1つのIPアドレス空間に関連しており、従って、各vfilerは1つのIP空間に属している。各IP空間内のIPアドレスは一意なものでなければならない。IP空間については、「Technique for Enabling Multiple Virtual Filers on a Single Filer to Participate in Multiple Address Spaces with Overlapping Network Addresses」と題した同時継続の米国特許出願第112056−0023号にさらに詳しい説明がある。
【0051】
各vfilerに割り当てられるストレージリソースの単位には、ボリュームまたはサブボリューム(qtree)が含まれる。ボリューム(V)410は、ファイルシステムすなわちディレクトリ及びファイルの階層構造からなるストレージの単位である。qtree QT1〜3 420は、小型ボリューム(小型ファイルシステム)またはボリュームの細分割に類似した特別なディレクトリであり、例えばファイルのinode内に記憶されたqtree識別子(qtreeid)等を用いて、ファイルシステム内で自身を識別することができるという性質を有する。vfilerアーキテクチャは、vfilerまたはvfiler間に、ストレージリソースの作成、割り当て及びマッピングを含むこれらのストレージリソースの有効な利用及び管理を提供する。例えば、仮想サーバ(vfiler等)及びそれに関連するストレージリソース(qtree等)をあるサーバ(ファイラー等)へ移動させ、同様に名前付けされたリソースを有する他の仮想サーバ(vfiler等)と統合させることができる。ストレージリソースがvfiler毎に割り当てられるため、クライアントがデータを参照するための方法には変更がないので、サーバ統合及びストレージ統合がクライアントに対して透過的なものになる。
【0052】
カプセル化
vfilerの各インスタンスは「外部」設定及び「内部」設定によって記述される。外部設定は、vfilerに割り当てられたリソース(例えば、1以上のIPアドレスと、1ボリューム全体または1ボリューム上のqtree等の1以上の記憶単位等)及びvfilerが利用可能な能力(例えばそのvfiler上で実行可能なプロトコル等)を記述するものである。内部設定(即ちvfilerの内部)は、そのvfilerに関連する様々なプロトコルモジュールまたは「vfilerオプション」の動作を制御するものである。こうしたオプションの例としては、vfilerと共にネットワークインフォメーション(NIS)サーバを使用するか否か、及び、NFS等の特定のプロトコルが基礎とするトランスポートとしてTCPやUPDPを使用するか否かが含まれる。
【0053】
ディスク上の表現
上記の外部設定情報は物理ファイラーのグローバルレジストリ(通常ファイラーのルートボリュームに格納されている)に記憶し、一方、内部設定情報はそのvfilerに割り当てられたストレージのプライベートレジストリに記憶することが好ましい。vfilerの分割構成が与えられたとき、vfilerに属するディスク等のストレージデバイスをある物理ファイラーから他の物理ファイラーへ移動させた場合、新たな「ヘッド」上にvfilerを作成するのに必要なすべての情報を得ることは通常できない。注意して欲しいのは、「ヘッド」がディスクシェルフを除いたファイラーの全ての部分として定義される点である。内部設定は入手することが可能であるが、外部設定は古いファイラー上でしか入手することができない。
【0054】
本発明の一実施形態では、外部設定情報はvfilerの移動されたディスク上に冗長的に記憶することができる。しかしながら、この情報は、そのvfilerの管理者がアクセスできないような(変更不能な)方法で記憶しなければならない。外部設定情報は、移動されたディスクのすべてのファイルシステム単位(例えばボリューム)のメタデータ部分に記憶することが好ましい。ディスクシェルフの移動されたディスクがファイラープラットフォームに取り付けられると、ストレージオペレーティングシステムのディスクソフトウェア層が取り付けられたストレージユニットの外部設定情報を探し、「見つかった」vfilerをインスタンス化する。これにより、ある物理ファイラーヘッドからそのストレージディスクを保持するディスクシェルフを取り除き、それらを別の物理ファイラーヘッドに取り付けるだけで、あるいは、外部設定情報を暗号化された形態で複製または移動可能なデータに記憶するだけで、vfilerの移動が可能になる。
【0055】
本発明の一態様によると、vfilerは、オペレーティングシステムに関するユーザインタフェースの下記のコマンドラインインタフェース(CLI)コマンドにより作成される。
vfiler create [xyz] [-s IPspace-name] [-i IP address(s)] [/vol/vol2] [/vol/vol3/qt1]
ただし、xyzは作成するvfilerの名前を、−s IPspace−nameはそのvfilerが属するIP空間の名前を、−i IPaddress(s)はそのvfilerの特定のIPアドレスまたは一連のIPアドレスを記述するものである。また、/vol/vol2という記述は第1のストレージユニットを指すパス記述子であり、/vol/vol3/qt1という記述は第2のストレージユニットを指すパス記述子である。デフォルトvfilerはvfiler0(VF0)であり、物理ファイラーがブートする際の初期化時に作成される。他にvfilerが作成されていなければ、ファイラー内に実現されるvfilerはVF0だけである。デフォルトVF0は物理ファイラープラットフォームに関連しており、例えばファイラー上のすべてのvfilerについてリソース割り当てが完了した後、割り当てられていないファイラーリソースに対してアクセスすることができる。vfilerが何も定義されていない場合、VF0はそのファイラーのすべてのリソースを含む。
【0056】
コア表現
特に、vfilerは各vfilerについてvfilerコンテクスト500a〜cを作成するCLIコマンドを作成する。vfilerコンテクストがファイラーの初期化時にVF0について作成される点に注意して欲しい。図5は、マルチプロトコルサーバのインスタンスを確立するために必要な設定情報または「状態」を保持するvfilerコンテクスト500のコア表現を示す略ブロック図である。これらのコンテクストの複数のインスタンスが本vfilerアーキテクチャの基礎を提供する。vfilerコンテクスト500は、そのvfilerの名前502及びUUID504(Universally Unique Identifier)を保持するフィールドを有し、これらはvfilerコンテクストと共に作成される。UUIDには、例えば現在時刻及びそのvfilerに関するメディアアクセスコントロール(MAC)アドレスが含まれる。vfilerリストフィールド506はそのファイラープラットフォーム上のvfilerのリストを保持し、IP識別子(ID)フィールド508はそのvfilerのIP空間IDを保持する。
【0057】
リソースマッピング
本vfilerアーキテクチャによると、ストレージデバイス及びネットワークデバイス等のハードウェアリソースはvfilerに直接割り当てられるのではない。そうではなく、これらのハードウェアデバイスの能力のうちの一部だけを表現したソフトウェアオブジェクトがvfilerに割り当てられる。これらのソフトウェア(「ソフト」)オブジェクトは、ハードウェアリソースのうちの「動的調節可能」な部分にのみ対応している。vfilerへの割り当てにソフトウェアオブジェクトを使用することの利点は、物理ファイラー上のvfiler間でハードウェアリソースの全部または一部を割り当て、追加、移動及び除去する際の総合的な柔軟性である。これらの操作は、VMまたはデータムーバ等の仮想サーバに基くハードウェア分割の際のハードウェアオブジェクトの再構成または複製による複雑で実行時間の長い手順とは対照的に、例えば実行時間の短いコンソールコマンドを用いて極めて迅速に行なうことが可能である。
【0058】
従ってvfilerコンテクスト構造500の他のフィールドは、仮想フィルターストレージ(vfstore)構造(ソフトオブジェクト)のリスト510、及び、ソフトオブジェクトの仮想ファイラーネットワーク(vfnet)のリスト512を保持する。図6は、本発明に有利に使用することが可能なソフトオブジェクトデータ構造を示す略ブロック図である。詳しくは、vfstoreリスト510はvfstoreソフトオブジェクト610へのポインタを含み、vfstoreソフトオブジェクト610の各々はそのvfilerに割り当てられたqtreeまたはボリューム等、一単位のストレージリソースへのパスを指すポインタ612を有している。これにより、例えば複数のqtreeからなるボリュームをvfiler間で有効に共有することが可能になる。また、各qtreeまたはボリュームをvfilerコンテクスト500(及び従ってvfstore610)へ「マッピング」して戻すハッシュテーブル(図示せず)も設けられる。
【0059】
vfnetリスト512はvfnetソフトオブジェクト620に対するポインタを含み、各々のソフトオブジェクト620はそのvfilerに割り当てられたIPアドレスを表すインタフェースアドレス(ifaddr)データ構造640を参照するポインタを有する。各vfnetオブジェクト620は、任意のネットワークインタフェース(例えばIPアドレスをNICに割り当てる場合はNIC)に割り当てることができる「流動的」能力を表している。複数のIPアドレスをNICに割り当てる場合、NICのその能力は複数のvfnetオブジェクト620間(即ち異なる場合もあるvfiler間)で有効に共有される。1つのインタフェースに1つのIPアドレスしか関連していない場合(インタフェースネットワーク(ifnet)データ構造630によって表現されるように)、1つのvfnetオブジェクト620だけが、即ち1つのvfilerだけがそのNICの能力を使用する。
【0060】
本発明の他の態様によると、リソースマッピングとは、qtree/ボリューム等のハードウェアリソースの一部に割り当てられたvfilerのリソース(vfstore及びvfnetオブジェクト)を表すソフトオブジェクトとifnet構造との間のマッピングとして定義される。従って、vfstore及びvfnetソフトオブジェクトは、これらのハードウェアリソースの能力のうちの動的調節可能な部分を表すあるレベルの間接参照を提供する。即ち、これらのソフトオブジェクトはハードウェアリソースを表す他のソフトオブジェクト(データ構造)に「リンク」され、これらのネットワーク及びストレージリソースを「論理的」に再割り当てするときに、例えばオブジェクトのポインタを変更すること等の方法により柔軟性を与える。こうした柔軟性によってファイルシステムレベルでのvfiler構成変更の論理的確立が可能になり、手動でネットワーク及びストレージハードウェアリソースを再構成する等による物理的確立とは対照的なものになる。
【0061】
例えば、ifnet構造630は、ネットワークインタフェースに割り当てられたIPアドレスのリストを保持するIPリストフィールド632を有する。さらにこのIPリストは、それらのIPアドレスに関連する適当なifaddrデータ構造640を参照するポインタを含む。前述のように、各vfnetオブジェクト620はifaddr構造640へのポインタ622(対応するIPアドレスがifnet構造630上に設定されている場合)、または、ヌル値(対応するIPアドレスが設定されていない場合)を含む。また、各ifaddr構造640はvfilerコンテクスト500への(従って対応するvfnetオブジェクト620への)バックリンクポインタ642を保持する。
【0062】
同様に、ストレージリソースがオンラインの場合、各vfstoreオブジェクト610は記憶単位のパスへのポインタ612を有する。例示的実施形態では、WAFLファイルシステム333は、qtreeやボリューム等の記憶単位の利用可能性及び範囲に関する情報を保持している。共に問い合わせのためにパスを伴うシステムコールをファイルシステムに供給し、応答として、そのパスが属するボリューム及びqtreeを示すストレージ識別子タプル(例えばfsid、qtreeid等)を受信する。
【0063】
本vfilerアーキテクチャのリソースマッピングは更に、例えばvfiler間でのネットワークリソース及びストレージリソースの移動(割り当て)に関して、効率的なネットワーク及びストレージの管理を可能にする。一群のデータ構造を参照したネットワーク管理、及び、動的変化に応じてvfilerとそれらのネットワークリソースとの間のリソースマッピングを維持するアルゴリズムが、プラットフォーム上でのこれらのリソースの割り当て及びその他の変更に対してなされる。一方、一群のデータ構造を参照したストレージ管理、及び、動的変化に応じてvfilerとそれらのストレージリソースとの間のリソースマッピングを維持するアルゴリズムが、プラットフォーム上でのこれらのリソースの割り当て及びその他の変更に対してなされる。割り当て変更には、vfiler間でのリソースの追加、移動、及び除去が含まれる。他のシステム変更には、新たなNIC(VIF、VLAN、または新たなデバイス)の作成、または、ストレージボリュームの追加/始動/停止が含まれる。
【0064】
ネットワーク及びストレージ管理には、vfiler間のリソースの割り当てに変更がなされたときにネットワークオブジェクト及びストレージオブジェクトに対して実施されるタスクも含まれる。例えば、vfilerに対するIPアドレスの割り当てが変更された場合、IPアドレスに関するTCP/IP接続及びルーティングは再初期化しなければならない。同様に、vfilerに対するストレージユニットの割り当てが変更された場合、qtreeやボリューム上で行なわれているディスク入出力操作も中止し、再初期化しなければならない。
【0065】
セキュリティ
本発明の他の態様は、セキュリティに関し、ファイラープラットフォーム400上でのセキュリティドメインの作成に関するものである。ストレージオペレーティングシステム300及びそのWAFLファイルシステム330は、すべてのファイルが例えばUNIXスタイルまたはNT(NTFS)スタイルのネイティブセキュリティの形態を有するマルチプロトコルセキュリティの概念を実施する。ファイルのネイティブセキュリティスタイルは、そのファイルのinodeに含まれるセキュリティ情報から入手することができる。NFSファイルの場合、inodeに保持されるUNIXスタイルのセキュリティ情報には、(1)ファイルの所有者、(2)ユーザID及びプライマリグループID(「セキュリティオブジェクト」)、及び(3)ユーザ及びグループについてのパーミッション/権限が含まれる。NTスタイルセキュリティのファイルの場合、inodeには、ファイルの所有者、セキュリティオブジェクト及びパーミッション/権限情報を含むセキュリティ記述子を参照するポインタが含まれる。
【0066】
本vfilerアーキテクチャの特徴は、各vfilerがクライアントから見たときに一意の個別のセキュリティドメインに関連していることである。さらに、各vfilerが共通ファイルシステム(例えばWAFLファイルシステム)に対するアクセスを共用することである。従って、各vfilerが独自のセキュリティドメインに関連しているので、例えばクライアントによる共通ファイルシステムへのアクセスに関するセキュリティオブジェクトの解釈はvfiler間で異なる場合がある。これを解決するため、各vfilerコンテクストはそのvfilerのセキュリティドメインに関する情報をさらに含み、これによってvfilerに割り当てられた共有リソースへのアクセス制御を可能にしている。具体的には、各vfilerコンテクスト500は、各ユーザパスワードに関するユーザID及びグループIDを保持する/etc/passwd、groupファイル516へのポインタを有する。さらに本明細書で説明するように、各vfilerコンテクストは、Windows環境での認証に必要なネットワーク接続及びその他の機構とともに、ローカルなWindowsユーザ及びグループについてそのvfiler独自の集合を有する。
【0067】
ストレージオペレーティングシステムのマルチプロトコルな性質の理由から、NTユーザ(Windowsクライアント)がUNIXスタイルのセキュリティを有するファイルにアクセスを試みる状況(あるいは逆の状況、即ちUNIXユーザ/クライアントがNTスタイルのセキュリティを有するファイルにアクセスする場合)も発生し得る。本vfilerアーキテクチャは、異なる種類のセキュリティを有する複数の異なるクライアントをサポートするとともに、それらの異なるクライアントのセキュリティの種類をファイラーの異なるvfilerにマッピングする能力を有するというマルチプロトコルな特徴をさらに有している。特にWAFLファイルシステム330は、マルチプロトコルマッピング手順を実施してクライアントが要求されたリソース/ファイルにアクセスできるか否かを判定する。このマッピング手順は通常、そのリソースのセキュリティスタイルに関するセキュリティコントローラを使用してセキュリティデータベース内に検索動作を実施することにより、そのクライアント/ユーザの識別を解決している。新規のvfilerコンテクスト構造500は、あるプロトコルから別のプロトコルへ(例えばNFSからNTセキュリティへ)パーミッション検査属性の変換を可能にするマルチプロトコルマッピングライブラリファイル518を参照するポインタを設けることにより、この特徴を実現している。
【0068】
おおまかに説明すると、あるクライアントがNFS要求をファイラー400に転送してNTスタイルのセキュリティを有するファイルにアクセスするものと仮定する。この要求には、UNIXスタイルのユーザIDを有するCredentialの集合が含まれる。従って、ファイルシステム330がそのユーザの「NT」IDを判定するためには、そのUNIXユーザIDをNTユーザIDに変換しなければならない。ファイルシステム330は、UNIXユーザIDを/etc/passwdファイル516の中から探してそのユーザIDのUNIXユーザ名を識別し、次いでそのユーザ名をマッピングライブラリファイル518を用いてNTユーザ名に変換する。次いでこのファイルシステムはコントローラ、例えばNTドメインコントローラにアクセスし、そのNTユーザ名のNTスタイルのセキュリティID(Credentialによって明らかになる)を提供する。ドメインコントローラはそのCredentialをファイルシステムに返し、ファイルシステムはそのCredentialで指定されたアクセス権と要求されたファイルのinodeに関するアクセスコントロールリスト(ACL)とを比較する。本発明に有利に使用できるマルチプロトコルマッピング手順の一例は、1998年3月3日に出願された「File Access Control in a Multi-Protocol File Server」と題したHitz他による米国特許出願第09/035,234号明細書に記載されている。
【0069】
各vfilerコンテクスト500は、特定のプロトコルまたはサブシステムのインスタンスについて必要なすべての情報(グローバル変数等)を含む複数の「モジュール」データ構造をさらに含む。例えば、CIFSモジュールデータ構造520は、ドメインコントローラ522との接続、CIFSプロトコルのアクティブなセッション524、及び、CIFSプロトコルに関する様々なコントロールブロック525に関する情報を含む、CIFSプロトコルのインスタンスについて必要な全ての情報を保持する。ドメインコントローラは、ログイン要求を受け付けてそれらの認証を開始するネットワークサーバである。CIFS要求に対してNTタイプのセキュリティを可能にするため、セキュリティドメイン526に関する情報も供給される。このセキュリティ情報には、ドメイン部分とそれに関連するID(RID)部分とから構成されるセキュリティIDが含まれ、後者のRIDはUNIXセキュリティのユーザIDに類似したものである。Windowsドメインセキュリティの場合、このセキュリティ情報にはドメインコントローラとのトラストリレーションシップも含まれる。このトラストリレーションシップは、vfilerの能力を通知し、ユーザの認証をvfilerの代わりにドメインコントローラに「委ねる」ためのものである。各CIFSモジュール520にはCIFS認証プロセスのプロセスID(PID528)も含まれ、CIFS層が認証要求を正しいCIFS認証プロセスへ送信できるようになっている。
【0070】
限定はしないが、NFSプロトコル530、リモートシェル(RSH)プロトコル540、テルネットプロトコル550、NISサブシステム560、ドメインネームサービス(DNS)サブシステム570、及びレジストリ580を含むvfilerに関連するプロトコル及びサブシステムの各々について、同様の「モジュール毎」のデータ構造が存在する。NISサブシステムすなわち「イエローページ」は、NISプロトコルのサービス探知機であり、各ユーザパスワードに関連するユーザID及びグループIDなどのセキュリティ情報を格納する分散データベースとして実施される。NISサブシステムモジュール560は、分散セキュリティデータベースにアクセスする必要が生じたときにNISコントローラに接続するための情報を有している(例えばファイル516に格納された/etc/passwd,groupの情報を用いる)。DNSサブシステムは、DNS名を対応するIPアドレスに解決する働きがある。レジストリは、ハードウェア、ソフトウェア及びそのファイラー(及び各vfiler)ユーザに関する設定情報のレポジトリである。
【0071】
境界チェック
本発明のさらに他の態様は、要求を行なっているvfilerがファイラープラットフォーム上の特定のストレージリソースにアクセス可能であることを検証するため、ストレージオペレーティングシステム300のファイルシステム(即ちWAFL層330)によって実施されるvfiler境界チェックに関する。vfiler境界チェックは、要求されたファイルのinodeから取得したそのファイルに関連する記憶単位(qtreeやボリューム)等の情報に基いて行なわれる。記憶単位へのアクセスの要求がある毎に毎回この情報を用いて境界チェックが実施され、要求を行なっているvfilerがそのストレージリソースに対してアクセスを許可されている否かが判定される。境界チェックによってそのvfilerが要求されたストレージリソースに対するアクセスを許可されていないことが判明した場合、その要求は直ちに拒否される。そうでなければ、その要求は許可され、WAFLファイルシステムがその要求を処理するための処理を行なう。
【0072】
複数のNFSクライアントU1〜U3が共通のNFSサーバにアクセスするものと仮定する。各NFSクライアントはNFSサーバによってエクスポートされたリソースの集合を「見る」ことができる。従って、各クライアントは、そのサーバの実質的にすべてのリソースにアクセスすることができる。これに対して、NFSサーバがファイラー400(図4)として構成された場合、そのサーバは仮想サーバVF0〜VF3に実質的に分割される(として実現される)。各vfilerは独自のvfilerコンテクスト及びセキュリティドメインを有する。さらに、クライアントU1がVF1のリソースに対するアクセスを許可され、クライアントU2がVF2のリソースに対するアクセスを許可され、クライアントU3がVF3のリソースに対するアクセスを許可されているものと仮定する。U1がVF2のリソースにアクセスを試みた場合、U1はファイルシステムによって実施される新規のバウンダリチェックに失敗する。この「論理的」な境界チェックは、NFSハンドルの「スヌーピング」を試みるハッカーを含むすべてのクライアントについて、vfilerドメイン内のセキュリティ(シェアに対するアクセス)を実施する。ハッカーが使用するようなツールを用いると、ストレージがクライアントにエクスポートされていなくても、サーバ上の任意のinodeに有効にアクセスすることが可能である。従って、本vfilerアーキテクチャの他のセキュリティ態様は、物理ファイラー上のストレージリソースに対するアクセスを判定するための境界チェックの利用(及びそれらに関連するデータ構造)を含む。
【0073】
図7は、vfiler境界チェックを実施するために使用される様々なデータ構造を示す略ブロック図である。第1のデータ構造、例えばfsidハッシュテーブル700は複数のエントリ710を有し、各々のエントリ710がvfilerに関連し、そのテーブル内へのキーとして機能するボリューム(ファイルシステム)識別子(fsid)によってアクセスされる。fsidテーブルの各vfilerエントリは、例えばVF1、VF2、VF3のようにvfilerを意味し、vfilerはそのfsidによって識別されるボリュームを明確に(完全に)所有する。適当なinodeから取得したfsidを用いることにより、あるvfilerがそのfsidに関連するボリュームを完全に所有しているか否かを判定することができる。第2のqtreeハッシュテーブル750は複数のエントリ760を有し、各々のエントリ760がvfilerに関連し、fsid及びqtreeidから構成されるキーによってアクセスされる。後者のqtreeidもinodeから取得される。qtreeテーブルの各vfilerエントリは、qtreeidによって識別されるqtreeを所有するvfilerを意味している。従って、fsid及びqtreeidを用いることにより、そのvfilerがあるボリューム(ファイルシステム)のqtreeを完全に所有しているか否かを判定することができる。
【0074】
vfiler境界チェックは、ファイラーのストレージリソースにアクセスするための複数ステージの検証手順に関連して行なわれることが好ましい。図8は、本発明の複数ステージの検証手順を含むステップの流れを示すフロー図である。このシーケンスは、ステップ800から開始してステップ802へ進み、ここでファイラーのネットワークインタフェース408で着信した要求(NFS、CIFS、HTTP、または、TELNETパケット)を受信し、ステップ804でその要求をその要求の宛先IPアドレス及びインタフェースのIP空間IDに基いて適当なvfilerへ送信する。例えば、メディアアクセス層310のドライバが特定のファイルハンドルを有するファイルにアクセスするためのCIFS要求を受信するものと仮定する。上記のように、ネットワークインタフェースはIP空間に関連している。ネットワークドライバはその要求をIP層312へ渡し、IP層でその要求の宛先IPアドレス及びIP空間ID406をIP空間データベースに格納された設定情報と比較することにより、その要求を所有するvfilerコンテクスト、例えば仮想フィルタ2(VF2)を選択する。その結果、VF2のvfilerコンテクスト500bがその要求に関連付けられる。着信した要求を処理するためのvfilerコンテクストの選択については、「Technique for Enabling Multiple Virtual Filers on a Single Filer to Participate in Multiple Address Spaces with Overlapping Network Addresses.」と題した継続特許出願に完全に記載されている。
【0075】
着信した要求をvfilerコンテクストに関連付けた後、IP層312はシステムコールを発行してそのvfilerコンテクスト500をそのファイラー上で実行されているカレントプロセスに設定する(ステップ806)。ストレージオペレーティングシステムの内部は、ファイラー上で実行されている制御のプロセスまたはスレッドの概念である。プロセスブロックデータ構造は、その実行中のプロセススレッドのコンテクストを表している。プロセスブロックデータ構造には、vfilerコンテクストで動作しているスレッドの概念が含まれる。そのため、プロセスブロックデータ構造には、そのファイラー上で実行されているカレントvfilerを参照するポインタが含まれる。ファイラー上にvfilerが何も作成/定義されていなければ、プロセスはデフォルトvfiler VF0のコンテクストで動作する。
【0076】
ステップ808で、IP層コード312がその要求を適当なトランスポートプロトコル(例えばTCP)層へ渡し、トランスポートプロトコル層はその要求が特定のポート、例えばCIFS層に宛てられたものであることを判定する。即ち、TCP層コード314はそのプロトコル制御ブロック(PCB)テーブルを検査して、その要求に含まれるポート番号に対してオープンされた「ソケット」が存在するか否かを判定する。このポート番号は、ファイルシステムプロトコル層、例えばCIFS層プロトコルの特定のプロトコルサーバを識別するのに使用される。vfiler及びIP空間IDによってPCBテーブルに条件がつけられ、これによってTCP層314はカレントvfilerコンテクストがオープンソケットを有するか否かを判定できるようになる。オープンソケットを有する場合、TCP層314は、TCP(NBT)層(図3の符号315に示す)を介してNetBIOSを呼び出し、CIFSプロトコルの組み立てを実施する。NBT層315は、要求全体を受け取った後、CIFSプロトコル層318を呼び出す。
【0077】
ステップ810において、プロトコルサーバ(CIFSコード)は、カレントvfilerコンテクストのコンテクストで特にCIFSモジュールを実行する。変数を参照する場合には、カレントvfilerコンテクスト500のCIFSモジュール520の中から適当な変数を取得する。例えば、CIFS層の実行コードが例えばドメインコントローラとの接続を指定するものである場合、そのコードはカレントvfilerコンテクスト内のCIFSプロトコルのモジュールごとのインスタンスを参照してドメインコントローラ接続情報522を得る。このように、vfilerに関する全ての状態はモジュールごとのデータ構造に記憶される。また、vfilerを初期化する場合には、一群の初期化ルーチンを実行することにより、メモリロケーションを割り当て、変数を既知の値に設定し、適当なvfilerIDでプロセスを作成する。
【0078】
CIFSプロトコルは、要求に関するアクセス(読み出し)の種類、及び、特定のファイル(ファイルハンドル)を判定する。ステップ812でCIFSプロトコルサーバは、要求に関連するメッセージ(WAFLメッセージ)をフォーマットし、そのメッセージをWAFLファイルシステムへ渡す。WAFLメッセージは、要求をWAFL層330へ転送して特定の機能に従って処理を行なうために用いられる仕組みである。WAFLメッセージの1フィールドには、カレントvfilerコンテクストのIDが保持される。WAFLファイルシステムは、要求に対する返答などの機能について、そのvfilerコンテクストを使用する。具体的には、WAFLメッセージには、WAFL層コードによる後続の処理についてvfilerコンテクストを設定するためのvfilerポインタが含まれる。「仮想化」されたコンテクストに関する全てのコード、例えばプロトコルや管理機能を実行するのに必要なコードは、それらが動作しているカレントvfilerコンテクストと、そのカレントコンテクストに基いて有する能力とを「認識」している。
【0079】
要求されたファイルがメモリに存在しない場合、WAFL層は、ファイルハンドルを用いてそのファイルのinodeをコアへロードする。ファイルハンドルとは、ファイルシステム内部で使用されるinodeデータ構造に対する参照である。ファイルハンドルは通常、ファイルID(inode番号)を含む複数の構成要素からなる。ステップ814でWAFL層コードは、要求されたファイルのinodeからfsid及びqtreeidを取り出し、その要求を処理(サービス)する前に、新規の境界チェックに関する複数ステージの検証手順を実行する。
【0080】
具体的には、この検証手順の最初のステージで、fsidをfsidテーブル700への索引として用い(ステップ816)、要求を行なっているvfiler(VF2)が、例えばfsidによって指定されたボリューム等の記憶単位全体を明らかに「所有」しているか否かを判定する(ステップ818)。所有している場合、ステップ820でVF2はそのストレージリソースにアクセスすることができる。所有していない場合、この手順の2番目のステージで、そのボリュームが他のvfilerによって完全に所有されているか否かを判定する(ステップ822)。所有されている場合、ステップ824でその要求は直ちに拒否され、手順はステップ840で終了する。そのボリュームが他のvfilerによって明らかに所有されていない場合、この手順の3番目のステージで、fsdi及びqtreeidをqtreeテーブル750への索引として用い(ステップ826)、そのqtreeidによって識別されるqtree等のボリュームの一部をVF2が所有しているか否かを判定する(ステップ828)。所有している場合、ステップ830でVF2はそのストレージリソースにアクセスすることができる。所有していない場合、ステップ832でその要求は直ちに拒否され、この手順はステップ840で終了する。
【0081】
この検証手順の境界チェックが満足されたものと仮定すると、ステップ834でWAFL層330がその要求をサービスし、CIFS層318を呼び出す。前述のように、CIFS層によって生成されたWAFLメッセージにはカレントvfilerコンテクストが含まれる。次いでステップ836でCIFSプロトコルは応答を生成し、ステップ838でそれをネットワークプロトコル層へ転送し、ネットワークを介してその要求を発行したクライアントへ転送する。そしてこの手順はステップ840で終了する。
【0082】
次に、着信した要求が認証要求であるものと仮定する。認証はCIFS層318で行なわれる。CIFSプロトコルは、認証のために例えばKerberosサーバ等の外部サーバに接続する必要があるか否かを判定する。従って、CIFS認証プロセスは、vfiler(コンテクスト)のコンテクストで作成(生成)される。CIFS層は、カレントvfilerのCIFS認証プロセスへメッセージを送信する。前述のように、各CIFSモジュール520はCIFS認証プロセスのPID528を保持しているので、CIFS層はそのメッセージを正しいCIFS認証プロセスへ送信することが可能である。CIFS認証プロセスは、ドメインコントローラに接続し、例えばその要求を認証したという受領確認を受信した後、応答を生成してそれをネットワークプロトコル層へ送信する。
【0083】
本発明のアーキテクチャによると、すべてのvfilerは、例えばWAFLメッセージのインジケータに基いて自分のvfilerを設定するためのWAFLスレッド等、いくつかのオペレーティングシステム機能について同じプロセスを「共有」することができる。他の場合としては、vfilerの各インスタンスについて個別のプロセスが作成され、特にドメインコントローラに接続するまで待機してしまう等の「ブロッキング」の可能性がある操作について個別のプロセスが作成される場合もある。後者の場合、ドメインコントローラに接続するまでに要する時間に他のvfilerが「停止」することは望ましくない。
【0084】
加えて、この新規のvfilerアーキテクチャによると、1つのファイラー上での仮想サーバとそれらの各々のデータアプリケーションとの統合が容易になるだけでなく、すべてのサーバリソースのカプセル化も容易になる。サーバ統合は、各々のvfilerがセキュリティドメインに関連付けられたvfilerの作成によってなされる。これらのセキュリティドメイン同士は完全に無関係のものであるため、同一のファイラープラットフォーム内に個別の独立したvfilerが設けられる。本発明のこの態様は、ファイラー上で複数のクライアント組織のデータアプリケーションを取り扱うストレージサービスプロバイダの場合に特に有用である。各クライアント組織は、自分のvfilerにのみアクセスすることができ、同じ物理ファイラーを他のクライアント組織と共用していることに気づくことはない。従って、この新規のアーキテクチャによると、各クライアント組織について専用に1つのファイラーを用意する必要がなくなる。
【0085】
さらに、本vfilerアーキテクチャによると、vfilerが1つのサーバに関するすべてのリソースをカプセル化するので、ストレージリソースの統合に関する管理が容易になる。すなわち、ストレージリソースがvfilerごとに割り当てられるので、ファイラー間でのストレージ移動がクライアントに対して透過的になる。これによってvfilerが他の物理ファイラーへ移動または複製された場合でも、クライアントはデータを参照するための方法(例えばパス記述子)を変更する必要がなくなる。さらに、個々のハードウェアプラットフォームについて、vfilerのインスタンスを設けるために必要なハードウェアリソース及びソフトウェアのコストも低減される。
【0086】
前述のように、従来のシステムはサーバの複数のインスタンスを動作させるように構成されている。例えば、IBM社の仮想マシン(VM)オペレーティングシステムはサーバの複数のインスタンスを1つのハードウェアプラットフォーム上で実行することを可能にするものである。しかしながら、VMの各インスタンスは、それ独自のファイルシステムを所有するとともに、それ独自のネットワーク及びストレージリソースを所有している。すなわち、ハードウェアプラットフォームのネットワーク及びストレージリソースは、プラットフォーム上に実現されたVMのインスタンスに分配され、予め割り当てられる。これに対して、本vfilerアーキテクチャは、例えば本明細書で説明したデータ構造の変更などの方法により、ネットワーク及びストレージリソースの「論理的」な再割り当てに関して柔軟性を保ちつつすべてのvfilerで共有された1つのファイルシステムを採用している。従って、vfiler構成の変更はファイルシステムレベルで実施され、ネットワークリソース及びストレージリソースの物理的再構成や、ファイルシステムの再フォーマット等とは対照的なものになっている。
【0087】
他の従来のシステムとしては、UNIXオペレーティングシステムプラットフォーム上で動作するSamba等のオープンソースのWindowsサーバがある。Sambaアーキテクチャはアプリケーション層で実施され、NTサーバの複数のインスタンスをUNIXプラットフォーム上に提供する。サーバインスタンスを物理ネットワークインタフェース及びセキュリティドメインに「結び付ける」ことによって、例えばセキュリティ、及び、サーバインスタンス間のセキュリティドメインの多様性を保証するためには、このような実施形態は、基礎とするUNIXオペレーティングシステムのネットワークインフラストラクチャの変更を強いられる場合がある。これに対して、本vfilerアーキテクチャの境界チェック手段は、各vfilerインスタンスについてIPアドレスを設定するのに使用されるストレージオペレーティングシステムのネットワークコードの中の一関数である。(アクセスプロトコルごとに)独立したセキュリティドメインを有する能力は、本vfilerアーキテクチャの最もすぐれた特性である。
【0088】
更に、EMC社から入手可能なCelerraアーキテクチャは、ファイラーのインスタンスに相当するデータムーバの概念を利用している。データムーバは、様々な他のデータムーバに論理的に配分および割り当て可能なストレージリソースを有するSymmetrixストレージデバイスの「フロントエンド」として機能する。各データムーバは、それ独自のネットワークハードウェアの集合を有する。しかしながら、各データムーバは、オペレーティングシステムの独自のコピーを動作させるため、更に独自のプロセッサを有している。これは、複数の独立した「物理」サーバプラットフォームを「まとめてラックに納める」ことに等しい。これに対して本vfilerアーキテクチャは、1つのファイラープラットフォーム内にvfilerの多数の「論理的」インスタンスをサポートすることができ、これによってアーキテクチャのスケーラビリティを向上させている。また、この新規のアーキテクチャは、すべての仮想ファイラーで共有する1つのファイルシステムを採用しているため、ファイルシステムレベルでのストレージリソースの論理的再割り当てに柔軟性がある。プロセッサ、メモリ、ネットワークインタフェース、及び、オペレーティングシステムリソース等の共通の物理ファイラー属性を共有することにより、本vfilerアーキテクチャの方法は、従来の解決法よりもさらに経済性に優れたものとなっている。
【0089】
具体的には、vfilerアーキテクチャによると、リソースの共有が容易になり、特に例えばフェイルオーバ状況の故障の際に必要となる予備リソースの共有が容易になる。従来のシステムでは、例えば予備のリソースが同じ物理的マシンに取り付けられていないといった理由から同じアドレス空間を共有することができないので、このようなリソース共有は不可能である。そのため、プラットフォーム上でリソースを動的に再構成することができない。これに対して、新規のvfilerアーキテクチャは、ネットワークリソース及びストレージリソース(NIC及びディスクドライブ等)の共有「予備」の貯えを維持することができ、それらをファイラーに動的に割り当てることが可能である。この文脈で、動的割り当てとは、リソースの「動作中」論理的割り当てを意味しており、様々なプラットフォーム間でのデバイス/ハードウェアの物理的な再配置とは対照的な意味である。
【0090】
ここまでvfilerの複数のインスタンスを1つのファイラー内に作成及び維持する能力を提供するアーキテクチャの例示的実施形態について図示及び説明してきたが、本発明の思想及び範囲内で様々な他の応用及び変更が可能であると考えられる。例えば、代替の実施形態として、新規のvfilerアーキテクチャは複数のvfilerによるセキュリティドメインの共有を妨げないようにすることもできる。即ち、各vfilerが独自のボリューム及びqtreeリソースを有するが、それでも他のvfilerと情報(例えばNISドメイン内の)を共有できるようにすることも可能である。さらに、様々なvfilerが独自の記憶単位(例えばボリューム)を有するように構成し、物理ファイラーの管理者の判断で特定のvfiler(例えばデフォルトvfiler)がプラットフォーム上の他の任意のvfilerに関連する任意のストレージにアクセスできるようにすることもできる。
【0091】
上記の説明は本発明の特定の実施形態に関して行なっている。しかしながら、それらの利点のうちの一部または全部を保ちつつ説明した実施形態に対して様々な変更及び修正を施すことが可能であることは明らかである。従って、こうした変更及び修正が本発明の真の思想及び範囲内に含まれるようにカバーすることが付記した特許請求の範囲の目的である。
【0092】
本発明の例示的実施形態を以下に列挙する。
1.サーバ内に複数の仮想サーバを作成及び維持するための方法であって、
各仮想サーバのインスタンスを確立するためにサーバのリソースを分割するステップと、前記サーバ内のリソースの論理境界チェック及びセキュリティ解釈を用いて、リソースへのアクセス制御を可能にするステップと、
からなる方法。
2.前記分割するステップは、
前記サーバの専用リソースを前記仮想サーバの各インスタンスに割り当てるステップと、
すべての前記仮想サーバ間で前記サーバの共用リソースを共有するステップと
を含む、1の方法。
3.前記専用リソースが、記憶単位、及び前記サーバのネットワークインタフェースのネットワークアドレスである、2の方法。
4.前記共用リソースが、前記サーバのオペレーティングシステム及びファイルシステムである、3の方法。
5.前記サーバがファイラーであり、前記仮想サーバが仮想ファイラー(vfiler)である、4の方法。
6.前記可能にするステップは、前記vfilerのセキュリティドメインに関する情報を含むvfilerコンテクスト構造を設けるステップを含む、5の方法。
7.前記割り当てるステップは、vfstoreソフトオブジェクトへのポインタからなる前記vfilerコンテクスト構造のvfstore listを設けるステップを含み、該vfstoreソフトオブジェクトの各々が前記vfilerに割り当てられた記憶単位へのパスを参照するポインタを有する、6の方法。
8.前記割り当てるステップは、vfnetソフトオブジェクトへのポインタからなる前記vfilerコンテクスト構造のvfnet listを設けるステップをさらに含み、該vfnetソフトオブジェクトの各々が前記vfilerに割り当てられたネットワークアドレスを表すインタフェースアドレスデータ構造を参照するポインタを有する、7の方法。
9.前記可能にするステップは、vfilerが前記filerの特定のストレージリソースに対するアクセスを許可されていることを検証するためのvfiler境界チェックを実施するステップをさらに含む、8の方法。
10.前記実施するステップは、前記記憶単位に関連するファイルシステム識別子及びqtree識別子を確認するステップを含む、9の方法。
11.前記実施するステップは、
記憶単位にアクセスするための要求の各々について、前記識別子を用いて前記vfilerが該記憶単位にアクセスする権限を有しているか否かを判定するステップと、
前記vfilerが要求された記憶単位にアクセスする権限を有していない場合、その要求を直ちに拒否するステップと、
そうでなければ前記要求を許可し、前記要求を処理するためのファイルシステム処理を行なうステップと
をさらに含む、10の方法。
12.サーバ内に複数の仮想サーバを作成及び維持するシステムであって、
前記仮想サーバの各々に割り当てられたストレージリソースの単位に従って情報を記憶するように構成された記憶媒体と、
前記仮想サーバの各々に割り当てられた1以上のネットワークアドレスリソースが割り当てられたネットワークインタフェースと、
要求が前記ストレージ媒体上のストレージリソースの特定のユニットに対するアクセスを許可されていることを検証するための境界チェックを実施するファイルシステムリソースを有するオペレーティングシステムであって、各仮想サーバが該ファイルシステムに対して共用アクセス可能になっている、オペレーティングシステムと、
前記ネットワークインタフェース及び前記記憶媒体に接続され、オペレーティングシステム及びファイルシステムを実行し、これによって、前記ファイルシステムの境界チェックの結果に従ってネットワーク及びストレージアクセス操作を呼び出すように構成された処理要素と、
からなるシステム。
13.各仮想サーバに設けられたコンテクストデータ構造をさらに含み、該コンテクストデータ構造が仮想サーバのセキュリティドメインに関する情報を含み、割り当てられた共有リソースへのアクセス制御を実施する、12のシステム。
14.前記ストレージリソースの単位がボリューム及びqtreeである、13のシステム。
15.前記境界チェックを実施するために前記処理要素によってアクセスされる複数のテーブルデータ構造をさらに含み、該テーブルデータ構造が複数の第1のエントリを有する第1のテーブルを含み、該第1のエントリの各々が仮想サーバに関連し、該テーブル内への第1のキーとして機能するファイルシステム識別子(fsid)を用いてアクセスされ、前記第1のテーブルの第1のエントリの各々は前記fsidによって識別されるボリュームを完全に所有する仮想サーバを示している、14のシステム。
16.前記テーブルデータ構造は複数の第2のエントリを有する第2のテーブルをさらに含み、該第2のエントリの各々が仮想サーバに関連し、fsid及びqtree識別子(qtreeid)からなる第2のキーを用いてアクセスされ、前記第2のテーブルの第2のエントリの各々は前記fsid及びqtreeidによって識別されるqtreeを完全に所有する仮想サーバを示している、15のシステム。
17.前記サーバがファイラーであり、前記仮想サーバが仮想ファイラーである、16のシステム。
18.ファイラー内に複数の仮想ファイラー(vfiler)を作成及び維持する装置であって、
ファイラーの専用リソースを各vfilerに割り当てるための手段と、
前記ファイラーの共用リソースを全ての前記vfiler間で共有するための手段と、
前記サーバ内のリソースの論理境界チェック及びセキュリティ解釈を用いて前記専用リソース及び共有リソースへのアクセス制御を可能にするための手段と、
からなる装置。
19.前記可能にする手段は、vfilerが前記ファイラーの特定の専用リソースに対するアクセスを許可されていることを検証するためのvfiler境界チェックを実施する手段を含む、18の装置。
20.前記可能にする手段は、前記vfilerのセキュリティドメインに関する情報を含むvfilerコンテクスト構造を設けるための手段を含む、18の装置。
21.ファイラー内に複数の仮想ファイラー(vfiler)を作成及び維持するための実行可能プログラム命令を保持するコンピュータ読取可能媒体であって、該実行可能プログラム命令が、
ファイラーの専用リソースを各vfilerに割り当てるためのプログラム命令と、
前記ファイラーの共用リソースを全ての前記vfiler間で共有するためのプログラム命令と、
前記サーバの前記専用リソース及び前記共有リソースの論理境界チェック及びセキュリティ解釈を用いてそれらのリソースに対するアクセスを実施するためのプログラム命令と
からなる、コンピュータ読取可能媒体。
22.前記可能にするためのプログラム命令は、vfilerが前記ファイラーの特定の専用リソースに対するアクセスを許可されていることを検証するvfiler境界チェックを実施するためのプログラム命令を含む、21のコンピュータ読取可能媒体。
23.前記可能にするためのプログラム命令は、前記vfilerのセキュリティドメインに関する情報を含むvfilerコンテクスト構造を設けるためのプログラム命令を含む、21のコンピュータ読取可能媒体。

【特許請求の範囲】
【請求項1】
サーバ内に複数の仮想サーバを作成及び維持する方法であって、
サーバのリソースを分割し、各仮想サーバのインスタンスを確立するステップと、
前記サーバ内のリソースの論理境界チェック及びセキュリティ解釈を用いて、リソースへのアクセス制御を可能にするステップと
からなる方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−92475(P2010−92475A)
【公開日】平成22年4月22日(2010.4.22)
【国際特許分類】
【出願番号】特願2009−229467(P2009−229467)
【出願日】平成21年10月1日(2009.10.1)
【分割の表示】特願2002−379209(P2002−379209)の分割
【原出願日】平成14年12月27日(2002.12.27)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.UNIX
2.イーサネット
【出願人】(303039534)ネットアップ,インコーポレイテッド (27)
【Fターム(参考)】