(57)【要約】【課題】ＧＮＳ単独では、さらなる利点を提供するための基礎をなすＮＡＳシステムのファイルシステム機能を仮想化することができない。【解決手段】ＮＡＳ仮想化システムは、基礎をなすＮＡＳシステムの１つのＮＡＳシステムに向けられたクライアントコンピュータから送信されたファイルアクセスオペレーションを受信する。ＮＡＳ仮想化システムは、ファイルアクセスオペレーションの中に含められたファイル識別子を探し出す。ファイル識別子は、第２のＮＡＳを、そのファイルアクセスオペレーションの宛先として識別するノード情報を含む。ＮＡＳ仮想化システムは、ファイル識別子からノード情報を削除し、そのファイルアクセスオペレーションを、ノード情報によって識別された第２のＮＡＳに転送する。ＮＡＳ仮想化システムは、第２のＮＡＳから応答を受信し、応答の中に含まれるファイル識別子にノード情報を再び追加し、その応答を、ファイル識別子、および追加されたノード情報とともにコンピュータに転送する。【選択図】図１
2008159027.tif 000002
【特許請求の範囲】
【請求項１】
情報システムを運用する方法であって、
ファイルデータを格納するストレージデバイス群をそれぞれが含むストレージシステムに前記ファイルデータを格納することができるＮＡＳヘッドをそれぞれが含み、前記ストレージシステム群の上に格納されたファイルへのアクセスを提供するためのローカルファイルシステムをそれぞれが含み、ネットワークを介して互いに通信することができ、第１のＮＡＳシステムと、１つまたは複数の第２のＮＡＳシステムとを含むＮＡＳ（ネットワーク接続ストレージ）システム群を提供すること、
前記第１のＮＡＳシステムによる、前記ネットワークを介してコンピュータから送信され、前記第２のＮＡＳシステムの１つのＮＡＳシステムに向けられたファイルアクセスオペレーションを受信すること、
前記１つの第２のＮＡＳシステムを、前記ファイルアクセスオペレーションの宛先として識別するノード情報を含む、前記ファイルアクセスオペレーションの中に含められたファイル識別子を探し出すこと、および
前記第１のＮＡＳシステムから、前記ノード情報によって識別された前記第２のＮＡＳシステムに前記ファイルアクセスオペレーションを転送することを含む方法。
【請求項２】
前記ファイル識別子を伴う前記ファイルアクセスオペレーションを前記１つの第２のＮＡＳシステムに転送するのに先立って、前記ファイル識別子から前記ノード情報を削除するステップをさらに含む請求項１に記載の方法。
【請求項３】
前記第１のＮＡＳシステムにおいて、前記ファイルアクセスオペレーションに応答して、前記第２のＮＡＳシステムから応答を受信するステップと、
前記応答の中に含まれる前記ファイル識別子に前記ノード情報を再び追加するステップと、
前記応答を、前記ノード情報が付加された前記ファイル識別子とともに、前記コンピュータに転送するステップとをさらに含む請求項２に記載の方法。
【請求項４】
前記第１のＮＡＳシステムにおいて、ファイルのファイルハンドルを求める要求を、前記コンピュータから受信するステップと、
前記第１のＮＡＳシステムにより、前記ファイルを含むファイルシステムを有する前記第２のＮＡＳシステムの１つのＮＡＳシステムを識別するために、テーブルを参照するステップと、
前記第１のＮＡＳシステムによる、前記要求を、前記識別された第２のＮＡＳシステムに転送するステップと、
前記識別された第２のＮＡＳシステムから前記ファイルハンドルを受信するステップと、
前記識別された第２のＮＡＳシステムを識別するノード情報を前記ファイルハンドルに追加するステップと、
追加されたノード情報を伴う前記ファイルハンドルを前記コンピュータに転送するステップとをさらに含む請求項１に記載の方法。
【請求項５】
第１のローカルファイルシステムを有する元の第２のＮＡＳシステムから、第２のローカルファイルシステムを有する宛先の第２のＮＡＳシステムにファイルを移すステップと、
前記第１のＮＡＳシステムによる、前記ファイルに関する現在のファイル識別子を、前記宛先の第２のＮＡＳシステムから受信するステップとをさらに含む請求項１に記載の方法。
【請求項６】
前記第１のＮＡＳシステムにおいて、前記ファイルに関するｉｎｏｄｅを、前記宛先の第２のＮＡＳシステムから受信するステップと、
前記第１のＮＡＳシステムの中に前記ｉｎｏｄｅを格納するステップと、
前記第１のＮＡＳシステムにおいて、前記ファイルに関する属性情報を求める要求を、前記コンピュータから受信するステップと、
前記ファイルに関して、前記第１のＮＡＳシステムの中の格納された前記属性情報を取り出し、前記要求された属性情報を前記コンピュータに戻すステップとをさらに含む請求項５に記載の方法。
【請求項７】
前記第１のＮＡＳシステムにより、前記第２のＮＡＳシステムの１つまたは複数のＮＡＳシステム上の前記ローカルファイルシステムの１つまたは複数のファイルシステムの少なくとも一部分の統合を含むグローバルネームスペースを、前記コンピュータのユーザに提示し、それにより、前記第１のＮＡＳシステムは、前記グローバルネームスペースにおいてファイルに諸機能を提供して、前記第１のＮＡＳシステムが、前記１つまたは複数の第２のＮＡＳシステムを仮想化するようにするステップをさらに含む請求項１に記載の方法。
【請求項８】
ファイルを移すための方法であって、
ファイルデータを格納するストレージデバイス群をそれぞれが含むストレージシステムに前記ファイルデータを格納することができるＮＡＳヘッドをそれぞれが含み、前記ストレージシステム群の上に格納されたファイルへのアクセスを提供するためのローカルファイルシステムをそれぞれが含み、ネットワークを介して互いに通信することができ、第１のＮＡＳシステムと、複数の第２のＮＡＳシステムとを含むＮＡＳ（ネットワーク接続ストレージ）システム群を提供すること、
ファイルの元の識別子を前記第１のストレージシステムの中に格納すること、
元の第２のＮＡＳシステムから宛先の第２のＮＡＳシステムに前記ファイルを移すこと、
前記ファイルの現在の識別子を前記第１のＮＡＳシステムの中に格納すること、
前記第１のＮＡＳシステムにより、前記ネットワークを介してコンピュータから送信され、前記元の識別子を使用して前記ファイルに向けられたファイルアクセスオペレーションを受信すること、
前記第１のＮＡＳシステムにより、前記ファイルが移されていることを判定し、前記現在のファイル識別子を取り出すこと、および
前記ファイルアクセスオペレーションを、前記現在のファイル識別子とともに前記宛先の第２のノードに転送することを含む方法。
【請求項９】
前記第１のＮＡＳシステムにおいて、前記ファイルアクセスオペレーションに応答して、前記宛先の第２のＮＡＳシステムから応答を受信するステップと、
前記応答から前記現在のファイル識別子を削除するステップと、
前記応答を、前記元のファイル識別子とともに前記コンピュータに転送するステップとをさらに含む請求項８に記載の方法。
【請求項１０】
前記第１のＮＡＳシステムにおいて、前記ファイルのファイルハンドルを求める要求を、前記コンピュータから受信するステップと、
前記第１のＮＡＳシステムにより、前記第１のＮＡＳシステムの中に格納された前記現在の識別子を参照することによって、前記ファイルに関する前記現在のファイルハンドルを特定するステップと、
前記宛先の第２のＮＡＳシステムを識別するノード情報を、前記現在のファイルハンドルに追加するステップと、
前記現在のファイルハンドルを、追加されるノード情報とともに前記コンピュータに戻すステップとをさらに含む請求項８に記載の方法。
【請求項１１】
前記ファイルのマイグレーション中、前記ファイルのコピーを前記第１のＮＡＳシステム上に移すステップと、
前記第１のＮＡＳシステム上で前記ファイルの前記コピーに読取りオペレーションおよび書込みオペレーションを行うことにより、マイグレーション中に前記ファイルに読取りオペレーションおよび書込みオペレーションを引き続き行うステップと、
前記マイグレーションを終了した後に、前記移されたファイルに取って代わるように、前記ファイルの前記コピーを前記宛先の第２のＮＡＳシステムにコピーするステップとをさらに含む請求項８に記載の方法。
【請求項１２】
前記第１のＮＡＳシステムにおいて、前記ファイルに関するｉｎｏｄｅを、前記宛先の第２のＮＡＳシステムから受信するステップと、
前記ｉｎｏｄｅを前記第１のＮＡＳシステムの中に格納するステップと、
前記第１のＮＡＳシステムにおいて、前記ファイルに関する属性情報を求める要求を、前記コンピュータから受信するステップと、
前記ファイルに関して、前記第１のＮＡＳシステムの中に格納された前記属性情報を取り出し、前記要求された属性情報を前記コンピュータに戻すステップとをさらに含む請求項８に記載の方法。
【請求項１３】
前記第１のＮＡＳシステムにより、前記第２のＮＡＳシステム上の前記ローカルファイルシステムの少なくとも一部分の統合を含むグローバルネームスペースを、前記コンピュータのユーザに提示し、それにより、前記第１のＮＡＳシステムは、前記グローバルネームスペースにおいてファイルに諸機能を提供して、前記第１のＮＡＳシステムが、前記第２のＮＡＳシステムを仮想化するようにするステップをさらに含む請求項８に記載の方法。
【請求項１４】
マイグレーション中、前記第１のＮＡＳシステムにより、前記ファイルに関する書込みデータを受信するステップと、
前記第１のＮＡＳシステムにより、前記書込みデータをキャッシュし、次いで、前記マイグレーションを終了した後、前記キャッシュされた書込みデータを前記ファイルに反映させるステップとをさらに含む請求項８に記載の方法であって、
前記第１のＮＡＳシステムは、前記第１のＮＡＳシステムによって提供されるファイルシステムを利用することにより、前記書込みデータを格納するメモリまたはディスクスペースを前記第１のＮＡＳシステムの中に準備する方法。
【請求項１５】
情報システムを運用する方法であって、
ファイルデータを格納するストレージデバイス群をそれぞれが含むストレージシステムに前記ファイルデータを格納することができるＮＡＳヘッドをそれぞれが含み、前記ストレージシステム群の上に格納されたファイルへのアクセスを提供するためのローカルファイルシステムをそれぞれが含み、ネットワークを介して互いに通信することができ、第１のＮＡＳシステムと、１つまたは複数の第２のＮＡＳシステムとを含むＮＡＳ（ネットワーク接続ストレージ）システム群を提供すること、
前記第１のＮＡＳシステムによる、前記ネットワークを介してコンピュータから送信され、前記第２のＮＡＳシステムの１つに向けられたファイルアクセスオペレーションを受信すること、
前記第１のＮＡＳシステムによる、前記ファイルアクセスオペレーションの中に含められたファイル識別子を探し出し、前記ファイルアクセス情報に対応する、前記第１のＮＡＳシステムの中に格納された属性情報を取り出すこと、および
前記取り出された属性情報に基づき、前記第１のＮＡＳシステムから前記コンピュータに応答を戻すことを含む方法。
【請求項１６】
前記ファイルアクセスオペレーションは、前記第２のＮＡＳシステムの１つのＮＡＳシステム上のファイルにアクセスしようとする試みであると判定するステップと、
前記取り出された属性情報から、前記コンピュータが、前記第２のＮＡＳシステムの前記１つのＮＡＳシステム上の前記ファイルにアクセスすることを許可されているかどうかを判定するステップと、
前記コンピュータが、前記ファイルにアクセスすることを許可されていることを、前記属性情報が示す場合、前記第２のＮＡＳシステムの前記１つのＮＡＳシステムに前記ファイルアクセスオペレーションを転送するステップと、
前記コンピュータが、前記ファイルにアクセスすることを許可されていない場合、前記コンピュータにエラーを戻すステップとをさらに含む請求項１５に記載の方法。
【請求項１７】
前記ファイルアクセスオペレーションは、前記第２のＮＡＳシステムの１つのＮＡＳシステム上でファイルに書き込もうとする、またはファイルを作成しようとする試みであると判定するステップと、
前記取り出された属性情報から、前記コンピュータが、前記第２のＮＡＳシステムの１つのＮＡＳシステム上で前記ファイルに書き込む、または前記ファイルを作成するだけ十分なストレージクォータを有するかどうかを判定するステップと、
前記コンピュータが、十分なストレージクォータを有することを、前記属性情報が示す場合、前記第２のＮＡＳシステムの前記１つのＮＡＳシステムに前記ファイルアクセスオペレーションを転送するステップと、
前記コンピュータが、十分なストレージクォータを有さない場合、前記コンピュータにエラーを戻すステップとをさらに含む請求項１５に記載の方法。
【請求項１８】
第１のローカルファイルシステムを有する元の第２のＮＡＳシステムから、第２のローカルファイルシステムを有する宛先の第２のＮＡＳシステムにファイルを移すステップと、
前記第１のＮＡＳシステムによる、前記宛先の第２のＮＡＳシステムからの、前記ファイルに関する現在のファイル識別子、および前記ファイルに関する属性情報を受信するステップとをさらに含む請求項１５に記載の方法。
【請求項１９】
前記第１のＮＡＳシステムにおいて、前記ファイルに関するｉｎｏｄｅを、前記宛先の第２のＮＡＳシステムから受信するステップと、
前記第１のＮＡＳシステムの中に前記ｉｎｏｄｅを前記属性情報として格納するステップとをさらに含む請求項１８に記載の方法。
【請求項２０】
前記コンピュータから送信された前記ファイルアクセスオペレーションを受信する前記ステップに先立って、前記第１のＮＡＳシステムにおいて、前記第２のＮＡＳシステムから、前記第２のＮＡＳシステムの中のファイルに関するｉｎｏｄｅ情報を受信し、前記ｉｎｏｄｅ情報を、前記第１のＮＡＳシステムの中に、前記属性情報として格納するステップをさらに含む請求項１５に記載の方法。
【請求項２１】
前記第１のＮＡＳシステムにより、前記第２のＮＡＳシステムの１つまたは複数のＮＡＳシステム上の前記ローカルファイルシステムの１つまたは複数のファイルシステムの少なくとも一部分の統合を含むグローバルネームスペースを、前記コンピュータのユーザに提示し、それにより、前記第１のＮＡＳシステムは、前記グローバルネームスペースにおいてファイルに諸機能を提供して、前記第１のＮＡＳシステムが、前記１つまたは複数の第２のＮＡＳシステムを仮想化するようにするステップをさらに含む請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ＮＡＳ（ネットワーク接続ストレージ）システムなどのストレージシステムに関する。
【背景技術】
【０００２】
ＧＮＳ（グローバルネームスペース）は、別々のＮＡＳシステムによって提供される複数のファイルシステムを統合して、単一の「グローバル」ネームスペースにし、統合されたネームスペースをＮＡＳクライアントに提供する機能である。ＧＮＳは、クライアントが、ファイルの実際のロケーションを知ることなしに、ファイルにアクセスすることを可能にする。また、ＧＮＳは、システム管理者が、多種多様なストレージデバイス、または物理的に分散したストレージデバイスにわたって広がるファイルストレージを集約し、ファイルストレージを単一のファイルシステムとして見て、管理することも可能にする。ＧＮＳを利用することにより、システム管理者は、クライアントの混乱を生じさせることなしに、１つのＮＡＳノードから別のＮＡＳノードにファイルシステムを移すことができ、クライアントは、まったく、マイグレーションについて知る必要なしに、またはファイルシステムマウントポイントを変更する必要なしに、新たなロケーションにおけるファイルに自動的にリダイレクトされる。ファイルシステムにおけるそのようなデータマイグレーションは、しばしば、容量管理、負荷分散、ＮＡＳ取替え、および／またはデータライフサイクル管理の目的で行われる。このため、ＧＮＳは、ユーザからストレージアーキテクチャの複雑さを隠し、システム管理者が、どのようにユーザがファイルにアクセスするかに影響を及ぼすことなしに、物理レイヤを管理することができるようにする。
【０００３】
先行技術では、ＧＮＳは、ローカルファイルシステムレイヤにおいて実施されてきた。その方法の下では、複数のＮＡＳノードにわたるローカルファイルシステムが、ファイルシステムロケーション情報を交換し、格納することができる。すると、ＮＡＳクライアントが、指定されたファイルシステムを有さないＮＡＳノードにアクセスした場合でも、ＮＡＳノードは、その要求を適切なＮＡＳノードに転送することができる。しかし、以上の先行技術の方法により、異種のＮＡＳシステムからＧＮＳを作成することが可能になることはない。というのは、その形態のＧＮＳにおけるすべてのファイルシステムは、同一でなければならないからである。
【０００４】
他の先行技術には、ＧＮＳを提供するファイルシステムアプライアンスが含まれる。アプライアンスは、ＮＦＳ（ネットワークファイルシステム）オペレーションを、基礎をなすＮＡＳシステムに転送する。アプライアンスは、アプライアンス内のファイルシステムロケーション情報に基づき、それらのオペレーションを適切なＮＡＳシステムに切り替えるだけであるので、アプライアンスは、異種のＮＡＳシステムからＧＮＳを作成することができる。しかし、アプライアンスは、ＧＮＳを提供することができるだけであり、全体的なシステムの有用性および効率を高める、基礎をなすＮＡＳシステムにおける他の諸機能を仮想化することができない。さらに、先行技術のアプライアンス自体、独自のローカルファイルシステムおよびファイルデータを格納することができるＮＡＳシステムではない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このため、先行技術は、ＮＡＳシステムにおける真のファイルシステム仮想化を提供するための方法またはシステムをまったく教示することができていない。例えば、ＧＮＳは、ファイルシステム管理のため、およびＮＡＳシステムにおけるファイルシステムマイグレーションを円滑にするための便利な方法を提供する一方で、ＧＮＳ単独では、さらなる利点を提供するための基礎をなすＮＡＳシステムのファイルシステム機能を仮想化することができない。
【課題を解決するための手段】
【０００６】
本発明は、ファイルシステムを仮想化するための方法および装置を開示する。本発明の諸実施形態では、第１のＮＡＳノードが、その他のＮＡＳシステムを仮想化し、仮想化されたＮＡＳシステムにわたるファイルレベルマイグレーション、ユーザアカウント管理、およびクォータ管理などの能力を提供することができる。本発明の以上、およびその他の特徴および利点は、好ましい諸実施形態の以下の詳細な説明に鑑みて、当業者には明白となろう。
【０００７】
添付の図面は、前段で与えられる一般的な説明、および後段で与えられる、好ましい諸実施形態の詳細な説明と一緒に、現在、企図される本発明の最良の形態の好ましい諸実施形態の諸原理を例示し、説明する役割をする。
【発明を実施するための最良の形態】
【０００８】
本発明の以下の詳細な説明では、本開示の一部を成し、本発明が実施されることが可能な特定の諸実施形態が、例として、限定としてではなく、示されている、添付の図面を参照する。図面では、同様の符号は、いくつかの図のすべてにわたって、実質的に同様の構成要素を表す。さらに、図面、前段の説明、および後段の説明は、例示および説明だけを目的とし、まったく、本発明、または本願明細書の範囲を限定することを意図するものではない。
【０００９】
前述したとおり、ＧＮＳは、ファイルシステム管理およびファイルシステムマイグレーションのための便利な方法を提供するが、ＧＮＳ単独では、基礎をなすファイルシステム機能を仮想化することができない。本発明は、ファイルシステムを仮想化するための方法および装置を開示し、ＧＮＳの作成を可能にする。一部の実施形態では、第１のＮＡＳノードが、システムにおける、その他のＮＡＳノード上に存在するファイルのファイル属性を保持して、第１のＮＡＳノードによる、その他のＮＡＳノードの仮想化を可能にする。第１のＮＡＳシステムは、仮想化されたＮＡＳノードにわたるファイルレベルマイグレーション、ユーザアカウント管理、およびクォータ管理などの能力を提供する。このため、本発明の諸実施形態は、害のないファイルレベルマイグレーションを提供し、基礎をなすファイルシステム機能を仮想化することができる。
【００１０】
本発明のＮＡＳ仮想化システムは、好ましくは、ＮＦＳレイヤにおいて実施される、ＧＮＳを提供することができる。ＧＮＳを可能にすることに加え、本発明のＮＡＳ仮想化システムは、ファイルレベルマイグレーションを可能にし、ファイルレベルマイグレーションとは、ファイルのパス名管理が、基礎をなすＮＡＳシステムに存在することを意味する。さらに、本発明のＮＡＳ仮想化システムは、仮想化レイヤにおいてファイル属性を管理することにより、ユーザアカウント管理、ユーザアクセス制御、およびクォータ管理などの、いくつかの機能を仮想化することができる。
【００１１】
第１の実施形態−システム構成
図１は、本発明の方法および装置が適用されることが可能な情報システムのハードウェア構成の実施例を示す。システムは、ネットワーク２５００を介して通信することができる、１つまたは複数のＮＡＳクライアント１０００と、管理ホスト１１００と、１つまたは複数のＮＡＳ仮想化システム２０００と、１つまたは複数のＮＡＳシステム３０００とから成る。
【００１２】
各ＮＡＳクライアント１０００は、アプリケーションおよびＮＦＳクライアントソフトウェア（図１に示さず）を格納するためのメモリ１００２と、メモリ１００２に読み込まれたソフトウェアを実行するためのＣＰＵ１００１とを含むことが可能である。また、ＮＡＳクライアント１０００は、ネットワーク２５００へのＮＡＳクライアント１０００の接続を可能にするＩ／Ｆ（インターフェース）１００３も含む。ネットワーク２５００の通常の媒体は、イーサネット（登録商標）（例えば、ＬＡＮに構成された）であることが可能であり、Ｉ／Ｆ１００３は、ＮＩＣ（ネットワークインターフェースカード）などであることが可能であるが、その他のネットワークプロトコルが、使用されることも可能である。
【００１３】
管理ホスト１１００は、管理ソフトウェア（図１に示さず）を格納するためのメモリ１１０２を含み、メモリ１１０２に読み込まれたソフトウェアを実行するためのＣＰＵ１００１を含む。管理ホスト１１００は、ネットワーク２５００を介して、ＮＡＳシステム２０００、３０００との通信を可能にするためのＩ／Ｆ１１０３を含む。Ｉ／Ｆ１１０３は、ＮＩＣ、または他の適切なインターフェースデバイスであることが可能である。
【００１４】
ＮＡＳ仮想化システム２０００は、主に、２つの部分、すなわち、ＮＡＳヘッド２１００と、ストレージシステム２４００とから成る。さらに、ストレージシステム２４００は、ストレージコントローラ２２００と、ハードディスクドライブなどの、１つまたは複数のストレージデバイス２３００とから成る。ＮＡＳヘッド２１００およびストレージシステム２４００は、それぞれ、バックエンドＩ／Ｆ２１０５およびホストＩ／Ｆ２２１４を介して、通信のために接続されることが可能である。ＮＡＳヘッド２１００とストレージシステム２４００とは、「ファイラ」と呼ばれる１つのストレージユニットの中に存在することが可能である。そのケースでは、それら２つの要素は、ＰＣＩバスなどのシステムバスを介して接続される。他方、ＮＡＳヘッド２１００とコントローラ２２００とは、物理的に分離されることが可能である。そのケースでは、それら２つの要素は、ＦＣ（ファイバチャネル）またはイーサネット（登録商標）などのネットワーク接続を介して接続される。また、様々なハードウェアインプリメンテーションが可能であるが、それらのインプリメンテーションのいずれが、本発明に適用されることも可能である。さらに、複数のＮＡＳ仮想化システム２０００が、情報システムにおいて提供されて、フェイルオーバ冗長性、負荷分散、または他の目的をもたらすことが可能である。
【００１５】
ＮＡＳヘッド２１００は、ＣＰＵ２１０１と、メモリ２１０２と、キャッシュ２１０３と、ネットワーク２５００と通信するためのフロントエンドネットワークＩ／Ｆ２１０４と、ＮＡＳヘッド２１００が、ストレージシステム２４００と通信することを可能にするためのバックエンドＩ／Ｆ２１０５とを含む。ＮＡＳヘッド２１００は、ＮＡＳクライアント１０００および管理ホスト１１００から受信されたアクセス要求および命令を処理する。ＮＦＳ要求、または他のオペレーションを処理するプログラム（図２に関連して後段で説明する）が、メモリ２００２の中に格納され、ＣＰＵ２００１が、そのプログラムを実行する。キャッシュ２１０３は、ＮＦＳクライアント１０１２から受信されたＮＦＳ書込みデータを、そのデータが、ストレージシステム２４００に転送される前に、一時的に格納し、キャッシュ２１０３は、ＮＦＳクライアント１０１２によって要求されたＮＦＳ読取りデータを、その読取りデータが、ストレージシステム２４００から取り出されるにつれ、格納する。キャッシュ２１０３は、バッテリバックアップ不揮発性メモリであることが可能である。別のインプリメンテーションでは、メモリ２１０２とキャッシュメモリ２１０３とは、複合共通メモリである。
【００１６】
フロントエンドＩ／Ｆ２１０４は、ネットワーク２５００を介して、ＮＡＳヘッド２１００とＮＡＳクライアント１０００との間、およびＮＡＳヘッド２１００とＮＡＳシステム３０００との間をともに接続するのに使用される。したがって、イーサネット（登録商標）が、プロトコルタイプの通常の例である。バックエンドＩ／Ｆ２１０５は、ＮＡＳヘッド２１００とストレージシステム２４００との間を接続するのに使用される。ファイバチャネルおよびイーサネット（登録商標）が、その接続タイプの通常の例である。代替として、ＮＡＳヘッド２１００とコントローラ２２００との間の内部接続のケースでは（すなわち、単一ストレージユニットインプリメンテーションのケースでは）、システムバスが、その接続タイプの通常の例である。
【００１７】
ストレージコントローラ２２００は、ＣＰＵ２２１１と、メモリ２２１２と、キャッシュメモリ２２１３と、ホストＩ／Ｆ２２１４と、ディスクＩ／Ｆ（ＤＫＡ）２２１５とを含む。ストレージコントローラ２２００は、ＮＡＳヘッド２１００からのＩ／Ｏ（入力／出力）要求を処理する。Ｉ／Ｏ要求、または他のオペレーションを処理するプログラム（図示せず）が、メモリ２２１２の中に格納され、ＣＰＵ２２１１が、そのプログラムを実行する。キャッシュメモリ２２１３は、ＮＡＳヘッド２１００から受信された書込みデータを、そのデータが、ディスクドライブ２３００の中に格納される前に、一時的に格納し、あるいは、キャッシュメモリ２２１３は、ＮＡＳヘッド２１００によって要求された読取りデータを、そのデータが、ディスクドライブ２３００から取り出されるにつれ、格納する。キャッシュ２２１３は、バッテリバックアップ不揮発性メモリであることが可能である。別のインプリメンテーションでは、メモリ２２１２とキャッシュメモリ２２１３とは、複合共通メモリであることが可能である。ホストＩ／Ｆ２２１４は、コントローラ２２００が、バックエンドＩ／Ｆを介してＮＡＳヘッド２１００と通信できるようにするのに使用される。ファイバチャネルおよびイーサネット（登録商標）が、その接続タイプの通常の例である。前述したとおり、ＰＣＩなどのシステムバス接続が、適用されることも可能である。ディスクＩ／Ｆ２２１５は、ストレージコントローラ２２００との通信のためにディスクドライブ２３００を接続するのに使用される。ディスクドライブ２３００は、ＳＣＳＩコマンドなどのディスクデバイスコマンドに従ってＩ／Ｏ要求を処理する。
【００１８】
ＮＡＳシステム３０００に関して、ハードウェア構成は、ＮＡＳ仮想化システム２０００に関して前述したのと同一であり、したがって、再び説明する必要はない。また、ＮＡＳ仮想化システム２０００の場合と同様に、様々なハードウェアインプリメンテーションが可能であるものの、それらのインプリメンテーションのいずれが、本発明に適用されることも可能である。ＮＡＳ仮想化システム２０００とＮＡＳシステム３０００との違いは、主に、存在するソフトウェアモジュールおよびデータ構造、ならびにＮＡＳ仮想化システム２０００の機能による。他の適切なハードウェアアーキテクチャが、本発明に適用されることも可能である。
【００１９】
図２は、本発明の方法および装置が適用されることが可能なソフトウェア構成の実施例を示す。前述したとおり、各ＮＡＳクライアント１０００は、コンピュータであることが可能であり、そのコンピュータ上で、何らかのＡＰ（アプリケーション）１０１１が、ファイル操作オペレーションを生成する。また、ＮＦＳｖ２、ＮＦＳｖ３、ＮＦＳｖ４、またはＣＩＦＳなどのＮＦＳ（ネットワークファイルシステム）クライアントプログラム１０１２も、通常、ＮＡＳクライアントノード１０００上に存在する。ＮＦＳクライアントプログラム１０１２は、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）などのネットワークプロトコルを介して、ＮＡＳ仮想化システム２０００上のＮＦＳサーバプログラム２１２１と通信する。ＮＦＳクライアント１０１２およびＮＡＳ仮想化システム２０００は、ネットワーク２５００を介して通信することができる。他のインプリメンテーションでは、ＮＡＳクライアント１０００が、ネットワーク２５００を介してＮＡＳシステム３０００との通信のために直接に接続されることが可能であるが、そのようなケースでは、ＮＡＳクライアントは、本発明によって提供されるＮＡＳ仮想化の利点を分かち合うことができない。
【００２０】
管理ホスト１１００は、管理ホスト１１００上に存在する管理ソフトウェア１１１１を含む。システム構成設定などのＮＡＳ管理オペレーションは、管理ソフトウェア１１１１から発行されることが可能である。さらに、管理ソフトウェア１１１１は、管理者が、情報システムを管理することができるようにするインターフェースを、通常、提供する。
【００２１】
ＮＡＳ仮想化システム２０００では、ＮＡＳヘッド２１００は、仮想化提供手段の役割をし、ファイル関連オペレーションは、ＮＡＳヘッド２１００において処理される。ＮＡＳヘッド２１００は、ＮＦＳサーバ２１２１と、ローカルファイルシステム２１３０と、ドライバ２１４０とを含む。ローカルファイルシステム２１３０は、ストレージシステム２４００上のファイルシステムに対するファイルＩ／Ｏオペレーションを処理する。ドライバ２１４０は、ファイルＩ／Ｏオペレーションをブロックレベルオペレーションに変換し、ＳＣＳＩコマンドを介してストレージコントローラ２２００と通信する。ＮＦＳサーバ２１２１は、ＮＡＳクライアント１０００上の両方のＮＦＳクライアント１０１２との通信を可能にし、また、ＮＡＳ仮想化システム２０００上のファイルシステムに対するＮＦＳオペレーションの処理も可能にする。さらに、ファイルシステムがＧＮＳ（グローバルネームスペース）の一部であるＮＡＳシステム３０００上に位置するファイルシステムに向けられたオペレーションは、ＮＡＳ仮想化システム２０００上のＮＦＳサーバ２１２１において、より正確には、ＮＦＳサーバレイヤとＲＰＣ（リモートプロシージャコール）レイヤとの間で処理されることが可能である。
【００２２】
ＮＦＳサーバ２１２１は、メモリ２１０２、または他のコンピュータ読取り可能媒体の中に格納された複数のモジュールおよび／またはデータ構造を含む。それらのモジュールおよびデータ構造は、ＮＦＳサーバ２１２１の一部であってもよく、あるいはＮＦＳサーバ２１２１の外部に存在し、必要とされる際に、ＮＦＳサーバ２１２１によって単に呼び出される、または実施されることも可能である。それらのモジュールおよびデータ構造は、仮想化およびファイル関連オペレーションを実行するために利用され、フォワーダモジュール２１２２、ＭＰＭＴ（マウントポイント管理テーブル）２１２３、ＦＬＴ（ファイルロケーションテーブル）２１２４、ＩＦＬＴ（ｉｎｏｄｅ−ファイルロケーションテーブル）２１２５、ＩＡＭＴ（統合アカウント管理テーブル）２１２６、および統合クォータ管理テーブルＩＱＭＴ２１２７を含む。フォワーダモジュール２１２２は、ＮＦＳクライアント１０１２からＮＡＳシステム３０００に送信されたＮＦＳオペレーションを捕捉する、または傍受する。フォワーダモジュール２１２２は、ＮＡＳシステム３０００の１つに向けられたＮＦＳオペレーションを受信すると、そのＮＦＳオペレーションの中で、そのオペレーションの宛先を表すビットを含むファイルハンドルを探し出す。次に、フォワーダモジュール２１２２は、ファイルハンドルの中の宛先情報に基づき、そのオペレーションを宛先ＮＡＳシステム３０００に転送する。オペレーションの宛先アドレスは、ＭＰＭＴ（マウントポイント管理テーブル）２１２３によって管理されることが可能である。ＧＮＳの管理に加えて、ファイルレベルマイグレーションも、そのレイヤ上で実行されることが可能であり、ＦＬＴ（ファイルロケーションテーブル）２１２４が、ファイルレベルマイグレーションにおいて利用されることが可能である。
【００２３】
さらに、ＮＡＳシステム３０００によって提供される一部のＮＡＳ機能は、ＮＡＳ仮想化システム２０００において処理されることが可能であり、このことは、ＮＡＳ仮想化システム２０００が、ＮＡＳシステム３０００の諸機能を仮想化することを意味する。ＩＦＬＴ（ｉｎｏｄｅ−ファイルロケーションテーブル）２１２５が、その役割において利用されることが可能である。アカウント管理およびクォータ管理が、そのような仮想化された機能の例である。さらに、ＮＡＳ仮想化システム２０００が、ＮＡＳシステム３０００のアカウント管理を仮想化する際、ＩＡＭＴ（統合アカウント管理テーブル）２１２６が、使用されることが可能である。ＮＡＳ仮想化システムが、ＮＡＳシステムのクォータ管理を仮想化する際、ＩＱＭＴ（統合クォータ管理テーブル）２１２７が、使用されることが可能である。その他のモジュールおよび／またはデータ構造が、後段で説明するとおり、本発明の特定の諸実施形態に関して含められることが可能である。
【００２４】
ストレージシステム２４００上のストレージコントローラ２２００は、ディスクドライブ２３００上の物理ストレージスペースを割り当てられた論理ボリューム２３１０の中にデータを格納するための、ＮＡＳヘッド２１００から受信されたＳＣＳＩコマンドを処理する。このため、ボリューム２３１０は、１つまたは複数のディスクドライブ２３００上のストレージ容量から成り、ファイルシステムは、ファイルを格納するためにボリューム２３１０において作成されることが可能である。
【００２５】
ＮＡＳ仮想化システム２０００と同様に、各ＮＡＳシステム３０００も、２つの主要な部分、ＮＡＳヘッド３１００と、ストレージシステム３４００とから成ることが可能である。ＮＡＳヘッド３１００は、ファイル関連オペレーションを実行し、ＮＦＳサーバ３１２１と、ローカルファイルシステム３１３０と、ドライバ３１４０とを含む。ローカルファイルシステム３１３０は、ストレージシステム３４００に対するファイルＩ／Ｏオペレーションを処理する。ドライバ３１４０が、ファイルＩ／Ｏオペレーションをブロックレベルオペレーションに変換し、ＳＣＳＩコマンドを介してストレージコントローラ３２００と通信する。ＮＦＳサーバ３１２１は、ＮＡＳシステム３０００が、ＮＡＳ仮想化システム２０００と通信することができるようにする。代替の諸実施形態では、ＮＦＳサーバ３１２１は、ＮＡＳクライアント１０００上のＮＦＳクライアント１０１２と直接に通信することもできるが、そのようなケースでは、ＮＦＳオペレーションは、ＧＮＳの一部ではないファイルシステムに送信される。
【００２６】
ストレージシステム３４００は、ディスクドライブ３３００上の物理ストレージスペースを割り当てられた論理ボリューム３３１０の中にデータを格納するための、ＮＡＳヘッド３１００から受信されたＳＣＳＩコマンドを処理する、ストレージコントローラ３２００を含む。ボリューム３３１０は、１つまたは複数のディスクドライブ３３００上のストレージ容量を割り当てられ、ファイルシステムが、ファイルを格納するためにボリューム３３１０において作成される。
【００２７】
ＧＮＳ（グローバルネームスペース）
ＧＮＳ（グローバルネームスペース）は、複数の別々のＮＡＳシステムによって提供される複数の別々のファイルシステムを統合して、単一の統合されたネームスペースにし、ＮＡＳクライアントの使用のための統合されたネームスペースを提供する機能である。ＧＮＳを利用することにより、システム管理者は、クライアントの混乱なしに、ファイルシステム、またはファイルシステムの一部分を、あるＮＡＳノードから別のＮＡＳノードに移すことができ、このことは、クライアントが、そのマイグレーションについて知る必要がなく、移されたファイルまたはディレクトリにアクセスするのにマウントポイントを変更しなくてもよいことを意味する。そのようなマイグレーションは、容量管理、負荷分散、ＮＡＳ取替え、および／またはデータライフサイクル管理のために行われる可能性がある。
【００２８】
本発明のＮＡＳ仮想化システム２０００は、ＧＮＳ機能を提供することができる。本発明のＧＮＳは、ＮＦＳレイヤにおいて実施されることが可能である。図３は、本発明のＧＮＳ機能の概念図を表す。ＮＡＳ仮想化システム２０００が、ＮＡＳ１  ３０００−１上のＦＳ１（ファイルシステム１）３５００、ＮＡＳ２  ３０００−２上のＦＳ２（ファイルシステム２）４５００、およびＮＡＳ３  ３０００−３上のＦＳ３（ファイルシステム３）５５００からＧＮＳ２５００を作成する。ＧＮＳ２５００において、ＦＳ１  ３５００は、「／ｇｎｓｒｏｏｔ／ｆｓ１」上にマウントされ、ＦＳ２  ４５００は、「／ｇｎｓｒｏｏｔ／ｆｓ２」上にマウントされ、ＦＳ３  ５５００は、「／ｇｎｓｒｏｏｔ／ｆｓ３」上にマウントされる。この例では、ファイルシステムは、基礎をなす別々のＮＡＳシステム３０００−１、３０００−２、および３０００−３の上に存在するファイルシステムから成るＮＡＳ仮想化システム２０００上でＧＮＳを構築する。しかし、以上は、本発明の制約ではなく、そのことは、ＮＡＳ仮想化システム２０００自体も、ＮＡＳシステムであるため、ＮＡＳ仮想化システム２０００上に位置するファイルシステムも、ＧＮＳに参加でき、これにより、先行技術に優る利点がもたらされることを意味する。
【００２９】
ＭＰＭＴ（マウントポイント管理テーブル）作成段階
最初に、システム管理者が、管理ホスト１１００上の管理ソフトウェア１１１１の使用を介して、ＭＰＭＴ（マウントポイント管理テーブル）２１２３のようなファイルシステムマッピングテーブルを含むＧＮＳをＮＡＳ仮想化システム２０００上で作成する。ＭＰＭＴ２１２３は、ＮＡＳシステム上のファイルシステムに対する、ＧＮＳの中のマウントポイントの関連付けを保持する。図３に示されるとおり、ファイルシステムマッピングテーブルの通常のエントリは、マウントポイント、ファイルハンドルの中のノードビット情報、およびファイルシステムを獲得するためのノード名である。
【００３０】
通常、ＮＦＳファイルハンドルは、ファイルを格納するＮＡＳシステムによって、そのファイルに割り当てられた規定のビット長（例えば、３２ビット）を有する、番号などの、固有ファイル識別子である。ファイルハンドルは、ファイルにアクセスするのに、各アクセスに関して、ファイルの完全なパスを使用しなければならないのではなく、ＮＡＳシステムによって内部で使用される速記リファレンスである。
【００３１】
本発明によれば、ＮＡＳ仮想化システム２０００は、情報システムにおけるファイルのロケーションを識別するのに役立つよう、ファイルハンドルにノードビット情報を追加する。ファイルハンドルに追加されたノードビット情報は、情報システムにおけるファイルシステムロケーションを表す（すなわち、仮想化システム２０００は、ＧＮＳを構成する各ファイルシステムが実際に格納されているＮＡＳノードを表す番号を作成する）。このため、ノードビット情報は、ファイルハンドルに付加、または追加されると、そのファイルハンドルによって識別されるファイルを含むファイルシステムが、いずれのノードに位置しているかを示す、さらなる情報を、ファイルハンドルの中でもたらす。
【００３２】
オペレーションの際、フォワーダモジュール２１２２は、クライアントからのＮＦＳオペレーションを捕捉し、ノードビット情報を読み取り、そのＮＦＳオペレーションを、ノードビットによって示される適切なＮＡＳシステム３０００に転送する。ファイルが、ＮＡＳ仮想化システム２０００自体の中に位置していることを、ノードビット情報が示す場合、そのＮＦＳオペレーションは、転送されなくてもよく、代わりに、ローカルで処理される。前述したとおり、フォワーダモジュール２１２２によって実行されるオペレーションは、ＮＦＳサーバレイヤとＲＰＣレイヤとの間で実施されることが可能である。さらに、ＭＰＭＴ２１２３が作成された時点で、すべてのＮＡＳノードに対するノードビットパターンが、決定され、ファイルハンドルのために使用されるべきノードビット情報としてＭＰＭＴの中に格納される。
【００３３】
ファイルアクセス段階
通常、ファイルにアクセスすることができるにはまず、ＮＦＳクライアント１０１２が、そのファイルに関するファイルハンドルを獲得する必要がある。図４は、本発明によるファイルハンドルを生成する通常の手続きを示し、実行されるステップの説明を以下に示す。
【００３４】
ステップ８０００：ＮＦＳクライアント１０１２が、「／ｇｎｓｒｏｏｔ／ｆｓ１／ａ．ｔｘｔ」のようなファイルのパス名を指定することにより、ファイルに関するファイルハンドルを要求する。したがって、ＮＦＳクライアント１０１２は、「ａ．ｔｘｔ」という名前が付けられ、ＮＡＳ１  ３０００−１上のＦＳ１  ３５００の中に格納されたファイルに関するファイルハンドルを獲得することを所望する。
【００３５】
ステップ８００１：ＮＡＳ仮想化システム２０００上のフォワーダモジュール２１２２が、その要求を捕捉し、その要求の中でパス名の部分（「／ｇｎｓｒｏｏｔ／ｆｓ１」）を識別し、ＭＰＭＴ２１２３を調べて、ターゲットとされる宛先ＮＡＳノードを特定する。
【００３６】
ステップ８００２：フォワーダモジュール２１２２が、ＭＰＭＴ２１２３の中の宛先ノードエントリに基づき、その要求を宛先ＮＡＳノードに転送する。与えられる例では、パス名により、ＦＳ１が識別され、したがって、フォワーダモジュール２１２２は、その要求をＮＡＳ１  ３０００−１に転送して、ＮＡＳ１  ３０００−１からファイルハンドルを獲得する。
【００３７】
ステップ８００３：ＮＡＳ１が、ファイル「ａ．ｔｘｔ」に関するファイルハンドルを生成し、生成されたファイルハンドルを、ＮＡＳ仮想化システム２０００内のフォワーダモジュール２１２２に送り返す。
【００３８】
ステップ８００４：ファイルハンドルを要求側のＮＦＳクライアントに送信するのに先立ち、フォワーダモジュール２１２２は、「０００１」のような、ファイルハンドルの中でノード情報を直接に指定するノードビット情報を、ファイルハンドルに追加する。ノードビットの長さは、ＧＮＳを作成する際に使用されるすべてのＮＡＳノードを個々に指定するだけ十分に長い数でなければならない。前述したとおり、各ＮＡＳノードに関するノードビットは、ＭＰＭＴ作成時に決定されることが可能である。代替として、ノードビット情報は、ノードビット情報が初めて必要とされる、その時点で決定されることが可能であり、ノードビットは、その時点で、ＭＰＭＴ２１２３の中に格納されることが可能である。
【００３９】
ステップ８００５：フォワーダモジュール２１２２は、ファイルハンドルを要求側のＮＦＳクライアント１０１２に戻し、すると、ＮＦＳクライアントは、そのファイルへのアクセスを要求する際に、そのファイルハンドルを使用することができる。
【００４０】
図５は、ファイル「／ｇｎｓｒｏｏｔ／ｆｓ１／ａ．ｔｘｔ」に関する読取り要求または書込み要求などによって、ファイルにアクセスするための通常の手続きを示す。図５において実行されるステップの説明を以下に示す。
【００４１】
ステップ９０００：ＮＦＳクライアント１０１２が、図４に示され、前述した手続きによってＮＦＳクライアント１０１２が既に獲得しているファイルハンドルを指定して、ファイルにアクセスすることを要求する。
【００４２】
ステップ９００１：ＮＡＳ仮想化システム２０００上のフォワーダモジュール２１２２は、ＮＦＳクライアントからの、その要求を捕捉し、その要求の中に含まれるファイルハンドルのノードビット情報を識別し、ＭＰＭＴ２１２３を参照して、対応する宛先ＮＡＳノード名を特定する。
【００４３】
ステップ９００２：その要求を、対応するＮＡＳノードに転送する前に、フォワーダモジュール２１２２は、ファイルハンドルからノードビット情報を削除する。このようにすることは、本発明の一部のインプリメンテーションにおいて必要である。というのは、より下位のＮＡＳシステム３０００は、ファイルハンドルに付加されたノードビット情報を必ずしも認識しないからである。
【００４４】
ステップ９００３：フォワーダモジュール２１２２が、変更されたファイルハンドルを伴う要求を、対応する宛先ＮＡＳノードに転送する。前段で説明した例では、要求は、ＮＡＳ１  ３０００−１に転送される。
【００４５】
ステップ９００４：宛先ＮＡＳノードが、その要求を処理し、ＮＡＳ仮想化システム２０００に応答を送り返す。
【００４６】
ステップ９００５：フォワーダモジュール２１２２が、ＮＡＳ１から、その応答を受信し、フォワーダモジュールは、ノードビット情報をファイルハンドルに再び追加する。代替として、ファイルハンドルが、時として、ベンダのために確保された領域をファイルハンドルが有するケースのように、確保された領域を有し、ＮＡＳシステム３０００が、ファイルハンドルの、その領域を適切に無視することができる場合、本発明は、その確保された領域を、ノードビット情報を入れるために使用することができる。例えば、一部のインプリメンテーションにおいて、より下位のＮＡＳシステム３０００は、ファイルハンドルの終わりの３２ビット以外は、無視する可能性がある。そのようなケースでは、ステップ９００２およびステップ９００５は、なくすことができる。というのは、ノードビット情報を削除し、その後、ファイルハンドルに再び追加する必要がないからである。
【００４７】
ステップ９００６：フォワーダモジュール２１２２が、追加されたノードビット情報を有するファイルハンドルを含む応答を、要求側のＮＦＳクライアントに戻す。
【００４８】
図３によってやはり示される他の諸実施形態では、本発明のＮＡＳ仮想化システム２０００は、Ｎノードクラスタ構成に構成されることが可能であり、このことは、基礎をなすＮＡＳノード３０００を仮想化する役割をそれぞれが果たす「Ｎ」個のＮＡＳ仮想化システム２０００のいずれの１つにも、ＮＦＳクライアント１０１２がアクセスすることができることを意味する。そのケースでは、ＭＰＭＴ２１２３のような、あらゆる管理テーブルが、クラスタの中の、それらのＮＡＳ仮想化システム２０００の間で同期される。クラスタ構成を許すことにより、ＮＡＳクライアント１０１２は、複数のＮＡＳ仮想化システム２０００にわたってＩ／Ｏ作業負荷を分散させることができる。
【００４９】
ファイルレベルマイグレーション
ＧＮＳは、複数のファイルシステムを統合して、単一のネームスペースにすることができる。これにより、マイグレーションが、ファイルシステム全体のユニットごとに、単一のファイルレベルで、またはその中間のどこか（すなわち、ディレクトリレベル）で行われることが可能になる。このため、本発明は、クライアントに混乱を生じさせないファイルレベルマイグレーションの方法を提供する。この文脈において、ファイルレベルマイグレーションには、ディレクトリマイグレーションが含まれる。前述したとおり、ファイルレベルマイグレーションが、望ましい可能性がある、いくつかの理由には、データライフサイクル管理または階層ストレージ管理が含まれ、それらのケースでは、ファイルシステム全体ではなく、個々のファイルもしくはディレクトリのマイグレーションなどの、細分化されたマイグレーションが有用である可能性がある。
【００５０】
図６は、ファイルレベルマイグレーション機構の概念図を表す。システム構成は、図３に関連して前述したのと同一である。ＧＮＳ２５００が、ＮＡＳ１  ３０００−１上のＦＳ１  ３５００、ＮＡＳ２  ３０００−２上のＦＳ２  ４５００、およびＮＡＳ３  ３０００−３上のＦＳ３  ５５００から構築される。ＭＰＭＴ２１２３は、ＧＮＳに関して既に構成されているものと想定される。このシナリオの下で、「／ｇｎｓｒｏｏｔ／ｆｓ１／ｄｉｒ１／ａ．ｔｘｔ」のようなＦＳ１の中のファイル３９９１が、ＦＳ３の中に移され、ファイル３９９１のパスは、そのマイグレーションの後、「／ｆｓ３／ｄｉｒ２／ａ．ｔｘｔ」になる。図６に示されるとおり、ＮＡＳ仮想化システム２１２１は、そのマイグレーションを実行するためのマイグレーションエンジン２１６０を含むことが可能であり、ファイルロケーションテーブルＦＬＴ２１２４が、その新たなファイルパスを把握しておくために使用される。
【００５１】
例を与えると、一部の実施形態では、階層ストレージのケースにおいて、ＮＡＳ１  ３０００−１は、ディスクドライブ３３００が、ＦＣドライブなどの、第１の高性能タイプであり、ＦＳ１が、ＮＡＳ１  ３０００−１の中のＦＣドライブに割り当てられたボリューム上に存在する、第１のパフォーマンス層を組み込むことが可能である。他方、ＮＡＳ３  ３０００−３は、ディスクドライブ３３００が、ＳＡＴＡドライブなどの、より低価格の、より低性能のタイプであり、ＦＳ３が、それらのＳＡＴＡドライブに割り当てられたボリューム上に存在する、より低い層のパフォーマンスレベルを組み込むことが可能である。すると、管理者が、「／ｇｎｓｒｏｏｔ／ｆｓ１／ｄｉｒ１／ａ．ｔｘｔ」のような未使用のファイルを、より低価格のＳＡＴＡドライブに移して、より高性能の、より高価なＦＣドライブ上のストレージスペースが、解放されることが可能であるようにすることを所望する。そのため、図６に示されるとおり、第１のファイルまたはディレクトリ３９９１が、ＦＳ１からＦＳ３に移されて、ＦＳ１におけるストレージ容量が解放され、他方、第２のファイルまたはディレクトリ３９９２が、その他の目的でＦＳ３からＦＳ２に移されることが可能である。以上のマイグレーションを実現するための機構を、以下にさらに詳細に説明する。
【００５２】
ファイルマイグレーション段階
図７は、ファイルまたはディレクトリのマイグレーションを実行するための制御フローを示し、その制御フローのステップを以下に説明する。
【００５３】
ステップ１００００：管理者、またはＮＡＳ仮想化システム２０００上、もしくは外部コンピュータ上のマイグレーションエンジン２１６０が、「／ｆｓ１／ｄｉｒ／ａ．ｔｘｔ」としてＮＡＳ１  ３０００−１上にある第１ファイル３９９１「／ｇｎｓｒｏｏｔ／ｆｓ１／ｄｉｒ１／ａ．ｔｘｔ」を、「／ｆｓ３／ｄｉｒ２／ａ．ｔｘｔ」としてＮＡＳ３  ３０００−３に移動する。このマイグレーションプロセス中におけるファイル３９９１へのアクセスの試みを取り扱う、いくつかのオプションが存在し、それらのオプションの３つが、オプション（ａ）、（ｂ）、および（ｃ）として以下に設定される。
【００５４】
（ａ）ＮＡＳ仮想化システム２０００は、エラーメッセージを送り返すことなどにより、ファイル３９９１への、あらゆるクライアントアクセスの試みを拒否することができる。そのケースでは、ファイルアクセスは、特に、非常に大きいディレクトリを移すケースにおいて、長期間にわたって遅延される可能性がある。
【００５５】
（ｂ）ＮＡＳ仮想化システム２０００は、いずれであれ、アクセス要求を有する特定のファイルを、先に移動させることができる。これにより、要求されたファイルへのアクセスが、そのファイルが正常に移されるとすぐに利用できるようになるため、アクセス遅延が最小限に抑えられる。
【００５６】
（ｃ）ＮＡＳ仮想化システム２０００は、アクセス要求（書込みのケースで）をキャッシュし、その後、そのキャッシュされた書込みデータを、マイグレーションを終了した後、ファイルに反映させることができる。キャッシングの方法に関して、ＮＡＳ仮想化システム２０００は、ファイルへのオペレーションを格納するよう、ＮＡＳ仮想化システム２０００内のメモリまたはディスクスペースを準備することができる。そのケースでは、マイグレーション中にファイルに行われた変更は、失われてはならず、さもなければ、ＮＦＳクライアント１０１２とＮＡＳシステム２０００、３０００との間でデータの不整合が生じる可能性がある。キャッシングのための一方法は、ＮＡＳ仮想化システム自体が、ＮＡＳシステムであるため、ＮＡＳ仮想化システム２０００によって提供されるファイルシステムを利用することである。ファイルは、ＮＡＳ仮想化システム２０００内のファイルシステム上に一時的に移されることが可能である。次に、マイグレーション中にファイルに行われたすべての変更が、ＮＡＳ仮想化システム２０００内のファイルのコピーに対して実行されることが可能である。マイグレーションを終了した後、ＮＡＳ仮想化システム２０００内のファイルのコピーが、ＮＡＳシステム３０００上のマイグレーション宛先にコピーされる。
【００５７】
ステップ１０００１：マイグレーションを終了した後、ＮＡＳ仮想化システム２０００上のマイグレーションモジュール２１６０（またはマイグレーションモジュール２１６０によって呼び出されたフォワーダモジュール２１２２）が、移されたファイルに関する新たなファイルハンドルを獲得する。
【００５８】
ステップ１０００２：マイグレーションモジュール２１６０またはフォワーダモジュール２１２２が、ＮＡＳ仮想化システム２０００上でＦＬＴ（ファイルロケーションテーブル）２１２４を作成する。ＦＬＴ２１２４の通常のエントリには、元のファイルパスおよび元のファイルハンドル、宛先ノード名、宛先ファイルパス、ならびに現在のファイルハンドルが含まれることが可能である。
【００５９】
マイグレーションの後に続くファイルアクセス段階
図８は、以下に示されるステップにおいても説明される、移されたファイルへのファイルアクセスの制御フローを示す。
【００６０】
ステップ１１０００：ＮＦＳクライアント１０１２は、元のファイルハンドルを使用することにより、ファイルにアクセスする要求を送信する。というのは、クライアントは、そのファイルのマイグレーションについて知らないからである。
【００６１】
ステップ１１００１：ＮＡＳ仮想化システム２０００上のフォワーダモジュール２１２２が、ＮＦＳクライアントからのＮＦＳオペレーションを捕捉し、ファイルパス名またはファイルハンドルを識別し、要求の中に含まれるファイルハンドルまたはパスを探すことによってＦＬＴ２１２４を参照する。
【００６２】
ステップ１１００２：そのファイルが、ＦＬＴ２１２４の中に存在する場合、そのことは、ファイルが、移されていることを意味し、プロセスは、ステップ１１０３に進む。そのファイルが、ＦＬＴ２１２４の中に存在しない場合、そのことは、そのファイルのマイグレーションが、行われていないことを意味し、プロセスは、ステップ１１０７に進み、図５で詳細に説明されるプロセスを実行する。
【００６３】
ステップ１１００３：ファイルパス名またはファイルハンドルが、ＦＬＴ２１２４の中にある場合、そのことは、その要求されるファイルに関して、ファイルマイグレーションが行われていることを意味する。フォワーダモジュール２１２２は、ＦＬＴ２１２４から、現在のファイルハンドルを特定し、現在のファイルハンドルを要求の中に代入する。
【００６４】
ステップ１１００４：フォワーダモジュール２１２２が、現在のファイルハンドルを伴う要求を、ＦＬＴ２１２４の中で示される宛先ノード名カラムに基づく宛先ＮＡＳノードに転送する。
【００６５】
ステップ１１００５：宛先ＮＡＳノードは、オペレーションを処理し、応答をＮＡＳ仮想化システム２０００に送り返す。
【００６６】
ステップ１１００６：宛先ＮＡＳが、応答をＮＡＳ仮想化システム２０００に送り返すと、フォワーダモジュール２１２２は、元のファイルハンドル、およびノードビット情報を使用して、その応答を要求側のＮＦＳクライアントに転送する。このようにして、ユーザは、ファイルが移されるたびに、そのファイルにアクセスするために使用されるファイルハンドルを変更しなくてもよい。
【００６７】
ステップ１１００７：ファイルパス名またはファイルハンドルが、ＦＬＴの中にない場合、そのことは、ファイルマイグレーションが、行われていないことを意味し、フォワーダモジュール２１２２は、ＭＰＭＴ２１２３を調べ、図５に関連して前述したＧＮＳファイルアクセスと同一のファイルアクセス手続きに従う。
【００６８】
ステップ１１００８：宛先ＮＡＳノードが、図５に関連して前述したとおり、そのオペレーションを処理し、応答を送り返す。
【００６９】
ステップ１１００９：フォワーダモジュールが、図５に関連して前述したとおり、ノードビット情報を元のファイルハンドルに再び追加し、その応答を要求側のＮＦＳクライアントに戻す。
【００７０】
ある特定のＮＦＳクライアント１０１２がファイルにアクセスする前に、ファイルマイグレーションが行われると、特定のＮＦＳクライアントは、通常、ファイルハンドルを有さない。しかし、マイグレーションが行われたケースでは、フォワーダが、マイグレーションのために、そのファイルにアクセスすることができるようにするために、ファイルハンドルを獲得している。そのケースでは、手続きは、図４で前述した手続きとは異なる。図９は、その状況で実行されるプロセスフローを示す。
【００７１】
ステップ１２０００：ＮＦＳクライアント１０１２が、元のパスを使用して、元のファイルハンドルを取得する要求を送信する。というのは、クライアントは、そのファイルのマイグレーションについて知らないからである。
【００７２】
ステップ１２００１：ＮＡＳ仮想化システム２０００上のフォワーダモジュール２１２２が、そのオペレーションを捕捉し、ファイルパス名を識別し、ＦＬＴ２１２４を参照する。
【００７３】
ステップ１２００２：ファイルは、移されているので、フォワーダモジュール２１２２は、ＦＬＴ２１２４の中でファイルパス名を探し出し、そのファイルパス名を使用して、そのファイルに関する現在のファイルハンドル、および現在のパス名を特定する。（前述したとおり、現在のファイルハンドルは、マイグレーションの後に自動的に獲得される。）
【００７４】
ステップ１２００３：フォワーダモジュール２１２２は、次に、現在のパス名を使用してＭＰＭＴ２１２３を参照し、ノードビット情報を探し出す。
【００７５】
ステップ１２００４：フォワーダモジュール２１２２は、そのノードビット情報を現在のファイルハンドルに追加し、そのファイルハンドルをＮＡＳクライアントに送り返す。
【００７６】
前述のステップ１２００２〜１２００４の代替として、元の（すなわち、マイグレーション前の）ファイルハンドルが、現在のファイルハンドルの代わりに、要求側のＮＦＳクライアントに送り返されてもよい。この代替のオプションが、実行される場合、マイグレーションの履歴は、保存される。さらに、ステップ１２００４の場合のように、現在のファイルハンドルが、送り返されるケースでは、単一のファイルに関して、記録上に複数のファイルハンドルが存在し、そのことは、ファイル管理中に混乱をもたらす可能性がある。したがって、この代替のオプションは、フォワーダモジュール２１２２におけるオーバヘッドをわずかに増加させるものの、そのようなことを回避する。
【００７７】
このため、ファイルレベルマイグレーションを管理するために、ＮＡＳ仮想化システムは、ファイルロケーションを保持し、管理する。ファイルロケーションに加えて、ＮＡＳ仮想化システムが、一部のファイル、またはすべてのファイルのファイル属性をＧＮＳの中で保持し、管理する場合、ＮＡＳ仮想化システム２０００は、基礎をなすＮＡＳシステム３０００に代行して、いくつかのさらなる機能を提供することができる。
【００７８】
ＮＡＳ仮想化システムにおける属性管理
また、本発明は、ＮＡＳ仮想化システム２０００内のＧＮＳの中で、ファイルの一部またはすべてのファイルのファイル属性を管理することも可能にする。これを実現するのに、基礎をなすＮＡＳシステム３０００は、単に、データストレージと見なされることが可能であり、ＮＡＳ仮想化システムは、ＧＮＳの中のファイルにいくつかの機能を提供することができ、このことは、ＮＡＳ仮想化システム２０００が、基礎をなすＮＡＳシステム３０００を仮想化することができることを意味する。さらに、オペレーションへの応答は、オペレーションが、基礎をなすＮＡＳシステム３０００に転送されなくてもよいため、仮想化なしの場合より迅速であることが可能である。最初、属性を管理するための方法を説明する。その後で、ＮＡＳ仮想化システムが提供することができる機能のいくつかの例を説明する。
【００７９】
図１０は、ＮＡＳ仮想化システム２０００における属性管理の概念図を表す。それを実現するのに、ＮＡＳ仮想化システムは、ファイル属性を保持するために、ＩＦＬＴ（ｉｎｏｄｅ−ファイルロケーションテーブル）２１２５である代替のテーブルを保持する。そうすることは、ＮＡＳ仮想化システム２０００が属性を保持することができるように、ＦＬＴ２１２４をＩＦＬＴ２１２５に拡張することを使用することが可能である。しかし、ｉｎｏｄｅ属性情報は、ＦＬＴ２１２４と属性テーブルとの間の何らかの関連付けを使用するなどの、ファイルロケーションテーブルＦＬＴ２１２４以外の手段によって保持されることも可能である。図示される実施形態では、属性情報に対するポインタが、ＩＦＬＴ２１２５の中に格納される。このため、ファイルに関するｉｎｏｄｅは、ＮＡＳ仮想化システム２０００内の別の場所に格納され、必要とされる際に、格納されたポインタ情報を使用して取り出される。しかし、他の諸実施形態では、属性情報自体も、ＩＦＬＴ２１２５の中に格納されることが可能である。
【００８０】
ＮＡＳ仮想化システム２０００において管理されることが可能な属性情報には、ＧＥＴＡＴＴＲのような通常のＮＦＳオペレーションによって取り出されることが可能なｉｎｏｄｅ情報が含まれる。本発明の下では、基礎をなすＮＡＳシステム３０００上のファイルシステムとの新たなインターフェースを作成する際、それらのシステム上のファイルに関するすべてのｉｎｏｄｅ情報も、取り出されることが可能である。図１０に示されるとおり、ＮＡＳ仮想化システム２０００は、属性情報を取り出すためのリトリーバモジュール２１７０を含むことが可能である。属性は、ファイル名、所有者、グループ、読取り／書込み／実行許可、ファイルサイズなどの属性を含む、各ファイルに関するｉｎｏｄｅを取り出すことによって取り出されることが可能である。ｉｎｏｄｅ全体が、ＮＡＳ仮想化システム２０００の中に格納されても、単に、いくつかの指定された属性だけが、格納されてもよい。
【００８１】
ファイル属性を取り出すこと
基礎をなすＮＡＳシステム３０００からＮＡＳ仮想化システム２０００へのファイル属性取出しを呼び出す、いくつかのタイミングが、存在する。通常の２つのケースには、（１）（通常、ディレクトリ別、または各ファイルシステム別の）何らかのスケジュールされた時点、および（２）（通常、各ファイル別の）ファイルマイグレーションの時点が含まれる。
【００８２】
第１のケースでは、管理者が、リトリーバモジュール２１７０を呼び出し、またはリトリーバモジュール２１７０において、ファイル属性を取り出すスケジュールを設定する。呼び出された後、リトリーバモジュール２１７０は、指定されたファイル群の各ファイルのｉｎｏｄｅ情報を読み取り、その情報を、ＮＡＳ仮想化システム２０００上のＩＦＬＴ２１２５の中に格納する。ファイルに関するすべての属性情報が格納されると、ファイルへのすべての属性アクセスが、ＮＡＳ仮想化システム２０００によって処理されることが可能である。
【００８３】
第２のケースでは、管理者またはマイグレーションモジュール２１６０が、ファイルを移す（図６〜図９に関連して前述したとおり）。マイグレーションを終了した後、リトリーバモジュール２１７０は、ファイルのｉｎｏｄｅ情報を読み取り、その情報を、ＮＡＳ仮想化システム２０００上のＩＦＬＴ２１２５の中に格納する。すると、ファイルへのすべての属性アクセスが、ＮＡＳ仮想化システム２０００によって処理されることが可能である。
【００８４】
属性管理を含むファイルアクセス段階
図１１は、ＮＡＳ仮想化システム２０００によって管理される属性を有するファイルへの属性アクセスの制御フローを示す。
【００８５】
ステップ１３０００：ＮＦＳクライアント１０１２が、ファイルのファイルハンドルまたはファイルパス名を指定することにより、そのファイルの属性を見るアクセス要求を送信する。
【００８６】
ステップ１３００１：フォワーダモジュール２１２２が、そのオペレーションを捕捉し、ファイルパス名またはファイルハンドルを識別し、ＩＦＬＴ２１２５を参照する。
【００８７】
ステップ１３００２：フォワーダモジュール２１２２が、ファイルパス名の指定されたファイルハンドルに基づき、そのファイルが、ＩＦＬＴの中に存在するかどうかを判定する。
【００８８】
ステップ１３００３：ファイルパス名またはファイルハンドルが、ＩＦＬＴ２１２５の中にある場合、そのことは、ファイル属性取出しが、行われており、かつ／またはファイルマイグレーションが、行われていることを意味する。ファイル属性取出しが、行われている場合、フォワーダモジュール２１２２は、要求されたオペレーションを進め、要求された属性情報をＮＡＳクライアントに送り返す。
【００８９】
ステップ１３００４：ファイルハンドルのファイルパスが、ＩＦＬＴ２１２５の中にない場合、ファイル属性取出しは、その指定されたファイルに関して行われていない。このため、フォワーダモジュール２１２２は、その要求を、そのファイルの属性情報を保持するＮＡＳシステム３０００に転送しなければならない。そうすることは、図５のプロセスと同様の形で実行される。したがって、フォワーダは、ＭＰＭＴ２１２３を参照し、ファイルハンドルからノードビットを削除し、属性要求を宛先ＮＡＳノードに転送する。
【００９０】
ステップ１３００５：宛先ＮＡＳノードが、その要求を処理し、属性情報を伴う応答を送り返す。
【００９１】
ステップ１３００６：フォワーダモジュール２１２２が、ノードビット情報をファイルハンドルに再び追加し、その応答を要求側のクライアントに送信する。
【００９２】
以上、ＮＡＳ仮想化システム２０００が、ＧＮＳの中でファイルに関する属性情報を保持し、提供することができる方法を説明した。以下の２つのセクションでは、そのインプリメンテーションの利点を示す実施例が、与えられる。
【００９３】
アカウント管理およびアクセス制御
ユーザアカウント管理およびアクセス制御は、ＮＡＳ仮想化レイヤにおいて扱われることが可能である。すべてのＮＡＳクライアントが、同一のユーザアカウント情報を有する場合、ＮＡＳ仮想化システム２０００は、同一のアカウント情報を有する必要があり、ＩＦＬＴ２１２５の中に格納された属性情報を使用することにより、アクセス制御を実行することができる。ＮＡＳ仮想化システム２０００は、基礎をなすＮＡＳノード３０００にアクセスする際、特別なアカウントを使用する。このため、基礎をなすＮＡＳノード３０００は、ユーザアカウント情報をもはや保持する必要がなく、もはや、各ユーザに関するアクセス制御を実行する必要がない。このことにより、一部のケースで、基礎をなすＮＡＳアクセス制御よりも迅速な、アクセス制御の応答がもたらされることが可能である。
【００９４】
部門の合併、または企業の合併が行われる場合、ＮＡＳクライアントの間で、いくつかの異なるユーザアカウントが存在する可能性があり、ユーザアカウント競合を回避するためのソリューションが、システムにおいて実施される必要がある。ユーザアカウント情報を統合し、ＮＡＳ仮想化レイヤ２０００においてアクセス制御を管理する、いくつかのオプションが存在する。
【００９５】
１つのオプションの下では、基礎をなすＮＡＳノードのユーザアカウント情報（例えば、ユーザ名、パスワードなど）が統合されて、ＮＡＳ仮想化システム２０００における１つのアカウント情報になることが可能であり、すると、アクセス制御は、まったく、クライアントアカウント情報変更の必要なしに、ＮＡＳ仮想化システム２０００において行われることが可能である。さらに、基礎をなすＮＡＳのアカウント情報変更およびアクセス制御を変更する必要は、まったくない。というのは、ＮＡＳ仮想化システム２０００は、クライアント別にアクセスを制御し、ＮＡＳ仮想化システム２０００は、特別なアカウントを使用することにより、基礎をなすＮＡＳノード３０００にアクセスするからである。
【００９６】
別のオプションの下では、すべてのクライアントのアカウント情報が、あらゆる競合を解消するように、変更されることが可能である。変更されたアカウント情報は、ＮＡＳ仮想化システム２０００にインストールされることが可能であり、すると、アクセス制御は、ＮＡＳ仮想化システム２０００によって確認される。また、これにより、基礎をなすＮＡＳノードのアカウント情報またはアクセス制御を変更する必要も解消される。というのは、ＮＡＳ仮想化システム２０００は、特別なアカウントを使用することにより、基礎をなすＮＡＳノード３０００にアクセスするからである。
【００９７】
第３のオプションは、ＮＡＳ仮想化システム２０００においてユーザのアカウントが、他のユーザのアカウントと競合する場合、そのユーザアカウント情報を変更することである。ＮＡＳ仮想化システム２０００は、マッピング情報を保持し、新たなアカウント情報は、基礎をなすＮＡＳノード３０００において登録される。基礎をなすＮＡＳノードは、ユーザアカウント情報およびアクセス制御の管理を保ち、クライアントアカウント情報変更の必要が、まったくないようにする。以下にさらに説明するＩＡＭＴ（統合アカウント管理テーブル）２１２６が、このオプションを実行する際に利用されることが可能である。
【００９８】
以下に説明する実施例は、第１のオプションを使用する。というのは、第１のオプションは、クライアント側における変更がないことを実現するとともに、ＮＡＳ仮想化レイヤアクセス制御も可能にするからである。図１２は、ＮＡＳ仮想化システムにおける統合されたアカウント管理およびアクセス制御の概念図を表す。これを実現するのに、ＮＡＳ仮想化システム２０００は、統合されたユーザアカウント情報を保持するために、ＩＡＭＴ（統合アカウント管理テーブル）２１２６を保持し、アカウント情報を統合して、ＩＡＭＴ２１２６を作成するためのインテグレータモジュール２１８０も含む。
【００９９】
ＩＡＭＴ２１２６の通常のエントリには、アカウントスペース名、ユーザ名、古いＵＩＤ／ＧＩＤ（ユーザＩＤ／グループＩＤ）、および新たなＵＩＤ／ＧＩＤが含まれる。アカウントスペース名は、クライアント側において使用されるユーザアカウントタイプのＩＤである。この場合、ＮＡＳクライアント１  １０００−１は、ユーザアカウントスペース１であり、ＮＡＳクライアント２  １０００−２は、ユーザアカウントスペース２である。ＮＡＳクライアント１  １０００−１とＮＡＳクライアント２  １０００−２とは、１０１３と１２１３とのような別々のユーザアカウント情報を有し、ＮＡＳ１  ３０００−１上のＦＳ１  ３５００が、ＮＡＳクライアント１によって使用され、ユーザネームスペース１に入っているのに対して、ＮＡＳ２  ３０００−２上のＦＳ２  ４５００は、ＮＡＳクライアント２によって使用され、ユーザネームスペース２に入っている。このため、ＮＡＳ１は、情報１０１３で示されるのと同一のユーザアカウント情報を有し、ＮＡＳ２は、情報１２１３で示されるのと同一のユーザアカウント情報を有する。
【０１００】
ＩＡＭＴ作成段階
図１３は、ＩＡＭＴ２１２６が、どのように作成されることが可能であるかの制御フローを示す。
【０１０１】
ステップ１４０００：管理者が、アカウント情報が統合される必要があるクライアントアドレスまたはＮＡＳシステムアドレスを使用して、管理ソフトウェア１１１１を介して、ＮＡＳ仮想化システム２０００上のインテグレータモジュール２１８０を呼び出す。
【０１０２】
ステップ１４００１：インテグレータモジュール２１８０が、指定されたユーザアカウント情報を読み取り、それらの情報を統合して、ＮＡＳ仮想化システム２０００上のＩＡＭＴ２１２６にする。
【０１０３】
ステップ１４００２：ステップ１４０００および１４００１の代替として、管理者が、管理ホスト１１００上の管理ソフトウェアを介して、ＩＡＭＴ２１２６を手動で編集してもよい。
【０１０４】
ステップ１４００３：インテグレータモジュール２１８０が、競合のない新たなＵＩＤ／ＧＩＤを再割り当てする。
【０１０５】
ステップ１４００４：インテグレータモジュールが、新たなＵＩＤ／ＧＩＤで、ＩＦＬＴの中のすべてのファイルの所有者を変更する。基礎をなすＮＡＳシステム３０００へのアクセスは、ＮＡＳ仮想化システム２０００の特別なアカウントによって行われるので、基礎をなすＮＡＳシステム３０００において所有者変更を実行する必要は、まったくない。さらに、ユーザネームスペースをＧＮＳから外すことを意味する、元の環境に戻ることが必要となるようなことがあった場合、外されたＮＡＳシステム３０００における所有者の再割り当ての必要は、まったくない。
【０１０６】
ＮＡＳクライアント１０００上のユーザアカウントが、変更された、追加された、または削除された場合、ＩＡＭＴ２１２６も、変更される必要がある。
【０１０７】
ユーザアカウント変更：管理者が、管理ソフトウェアを介して、クライアント側で変更されたアカウントエントリを編集する。
【０１０８】
ユーザアカウント追加：管理者が、管理ソフトウェアを介して、クライアント側で追加されたアカウントエントリを追加し、新たなＵＩＤ／ＧＩＤを割り当てるためにインテグレータモジュール２１８０を呼び出す。
【０１０９】
ユーザアカウント削除：管理者が、管理ソフトウェアを介して、クライアント側で削除されたアカウントエントリを削除する。
【０１１０】
以上は、管理者の手動のオペレーションに基づく。エージェントモジュールが、ＮＡＳクライアント側にインストールされている場合、クライアント側におけるアカウント変更をインテグレータモジュール２１８０に通知することが可能である。すると、インテグレータモジュール２１８０は、管理者の介入を要求することなしに自動的に、前述したとおり、情報を更新することができる。
【０１１１】
ファイルアクセス段階
図１４は、前述した実施例においてＮＡＳ仮想化システム２０００によって制御される、ファイルアクセスの制御フローを示す。
【０１１２】
ステップ１５０００：ＮＦＳクライアント１０１２が、アクセス制御のために、ＵＩＤ／ＧＩＤを伴うＮＦＳオペレーションを送信する。
【０１１３】
ステップ１５００１：フォワーダモジュール２１２２が、そのオペレーションを捕捉し、ファイルパス名またはファイルハンドルを見つけ、ＩＦＬＴ２１２５を調べる。アクセス制御が、ＮＡＳ仮想化システム２００によって行われる場合、すべてのファイルの属性情報が、ＩＦＬＴ２１２５の中で管理されなければならない。
【０１１４】
ステップ１５００２：フォワーダモジュール２１２２が、そのファイルがＩＦＬＴ２１２５の中に存在するかどうかを判定する。
【０１１５】
ステップ１５００３：そのファイルパス名またはファイルハンドルが、ＩＦＬＴ２１２５の中にある場合、フォワーダモジュール２１２２は、そのオペレーションの中でＵＩＤ／ＧＩＤを探し出し、そのファイルに関してＩＦＬＴ２１２５の中に含まれるアクセス特権属性を確認する。
【０１１６】
ステップ１５００４：フォワーダモジュールが、要求側のクライアントが、確認された属性と一致するアクセス特権を有するかどうかを判定する。
【０１１７】
ステップ１５００５：アクセスが、許される場合、フォワーダモジュールは、その要求を、ＩＦＬＴ２１２５の中の宛先ノード名カラムに基づく宛先ＮＡＳノード３０００に転送する。ＮＡＳ仮想化システムは、特別なユーザアカウントでＮＡＳノード３０００にアクセスすることができ、したがって、要求側のクライアントのアクセス権のさらなる確認は、宛先ＮＡＳノード３０００によって確認されない。
【０１１８】
ステップ１５００６：宛先ＮＡＳノードが、応答をクライアントに送り返すと、フォワーダモジュールが、その応答をクライアントに転送する。
【０１１９】
ステップ１５００７：クライアントのアクセス要求が、ステップ１５００４で拒否された場合、フォワーダモジュール２１２２は、エラーをクライアントに送り返す。
【０１２０】
ステップ１５００８：ファイルパス名またはファイルハンドルが、ＩＦＬＴの中にない場合（これは、部分的なファイルの属性情報が、ＩＦＬＴの中に格納されている場合、またはエラーが生じた場合にだけ生じる）、フォワーダモジュール２１２２は、ＭＰＭＴを参照し、図５に関連して前述したＧＮＳファイルアクセスプロセスと同一のファイルアクセス手続きに従い、宛先ＮＡＳノードへの要求の中に元のＵＩＤ／ＧＩＤを含める。
【０１２１】
ステップ１５００９：宛先ＮＡＳノード３０００は、要求側のクライアントのアクセス特権を確認し、アクセスが許される場合、応答を送り返し、あるいはアクセスが拒否される場合、エラーを送り返す。
【０１２２】
ステップ１５０１０：フォワーダモジュールが、ノードビット情報を応答に追加する。
【０１２３】
ステップ１５０１１：フォワーダモジュールが、応答を要求側のクライアントに送信する。
【０１２４】
クォータ管理
ＮＡＳ仮想化システム２０００による属性管理の第２の例示的な応用例が、クォータ管理である。本発明以前には、ユーザに割り当てられるストレージ容量のクォータ管理は、ファイルシステムのユニットにおいて、基礎をなすＮＡＳシステムによって実行されていた。本発明では、ＮＡＳ仮想化レイヤが、ＧＮＳにわたるクォータを管理することができ、このことは、クォータ管理が、ＧＮＳの中のすべてのファイルシステムに及ぶことが可能であることを意味する。クォータ管理に加え、ＮＡＳ仮想化システムは、クォータの使用量に基づいてファイルのマイグレーションを生じさせることができ、マイグレーションが行われた場合でも、クォータ管理は、継続される。
【０１２５】
図１５は、ＮＡＳ仮想化システム２０００におけるクォータ管理の概略図を表す。これを実現するのに、ＮＡＳ仮想化システムは、統合されたクォータ情報を保持するための、ＩＱＭＴ（統合クォータ管理テーブル）２１２７である、別のテーブルを保持する。また、クォータ管理モジュール２６１０も、ＮＡＳ仮想化システム２０００の中に含められることが可能である。ＮＡＳ仮想化システムは、クォータ関連ファイルに対する読取りオペレーションを使用することにより、基礎をなすＮＡＳシステムから、限度や、使用容量などのクォータ情報を取り出す。しかし、クォータ管理が、既にアクティブではない場合、ＮＡＳ仮想化システムは、管理者が、ＮＡＳ仮想化システムにおいて、初期クォータ設定としてクォータを設定し、基礎をなすＮＡＳシステムに関するクォータ設定が存在しない場合のように、基礎をなすＮＡＳシステムからクォータ管理情報を取り出さなくてもよい。
【０１２６】
ＩＱＭＴ２１２７の通常のエントリは、ユーザ名、クォータ限度、使用容量、およびマイグレーション許容ビットである。クォータ限度は、それぞれの別々のファイルシステムに関して、かつ／または全体的な限度に応じて管理されることが可能である。また、使用容量も、各ファイルシステムおよび／または合計使用容量に関して管理されることが可能である。マイグレーション許容ビットが、オン（「Ｙ」）である場合、ファイルシステムにおけるクォータ限度、もしくは何らかの閾値を超えるように作成されるファイルは、意図されるファイルシステム以外の別のファイルシステムに移されて、ユーザが全体的クォータを超えないように保たれることが可能である。そのようなマイグレーションが行われる場合の宛先ファイルシステムは、管理者によってあらかじめ決められ、ＩＱＭＴ２１２７の中に格納されるか、または最も使用されていないファイルシステムなどの、何らかのポリシーに従って、クォータ管理モジュール２６１０によって決定される。マイグレーション許容ビットが、オフ（「Ｎ」）である場合、クォータ限度を超えるように作成されるファイルは、作成されることが不可能であり、ＮＡＳ仮想化システム２０００は、エラーを要求側のＮＡＳクライアント１０００に送り返す。
【０１２７】
ＩＱＭＴ作成段階
図１６は、ＩＱＭＴ２１２７を作成するためのクォータ設定の制御フローを示す。
【０１２８】
ステップ１６０００：ＧＮＳ作成時に、またはＧＮＳ作成後の何らかの時点で、管理者が、基礎をなすＮＡＳノードのＩＰアドレスを指定することによって、基礎をなすＮＡＳノードからクォータ管理情報を取り出すために、クォータ管理モジュール２６１０を呼び出す。
【０１２９】
ステップ１６００１：クォータ管理モジュール２６１０が、指定されたクォータ情報を読み取る。
【０１３０】
ステップ１６００２：クォータ管理モジュール２６１０が、収集されたクォータ情報を統合して、ＮＡＳ仮想化システム２０００上の単一のＩＱＭＴ２１２７にする。
【０１３１】
ステップ１６００３：管理者が、マイグレーション許容ビットを手動で設定する、またはクォータ管理モジュール２６１０が、デフォルトの値を設定する。
【０１３２】
ファイルアクセス段階
図１７は、ＮＡＳ仮想化システム２０００上で実施される前述したクォータ管理を伴うファイルアクセスの制御フローを示す。
【０１３３】
ステップ１７０００：ＮＦＳクライアント１０１２が、書込みコマンドまたはファイル作成コマンドなどにおいて、クライアントのストレージの容量を変化させるオペレーションをＮＡＳ仮想化システム２０００に送信する。
【０１３４】
ステップ１７００１：フォワーダモジュール２１２２が、そのオペレーションを捕捉し、ファイルパス名またはファイルハンドルを識別し、ＩＦＬＴ２１２５の中で、そのファイルを調べる。
【０１３５】
ステップ１７００２：フォワーダが、クォータマネージャ２６１０が実行されているかどうかを判定する。クォータマネージャ２６１０は、背景でデーモンとして実行されて、クォータ使用量を監視することが可能である。クォータマネージャが、実行されていない場合、プロセスは、ステップ１７０１０に進む。
【０１３６】
ステップ１７００３：クォータデーモン（クォータマネージャ２６１０）が、実行されている場合、フォワーダモジュールは、その変化した容量でクォータマネージャを呼び出す。
【０１３７】
ステップ１７００４：クォータマネージャは、要求側のクライアントのクォータ情報を求めてＩＱＭＴ２１２７を参照する。
【０１３８】
ステップ１７００５：クォータマネージャは、その新たな要求を含む使用容量が、そのユーザに関するクォータ限度を超えるかどうかを判定する。
【０１３９】
ステップ１７０１１：使用容量が、クォータ限度未満である場合、クォータ管理モジュール２６１０は、フォワーダモジュールを呼び戻し、プロセスは、ステップ１７０１０に進む。
【０１４０】
ステップ１７００６：使用容量が、クォータ限度、または管理者によって決められた閾値を超える場合、クォータマネージャは、その要求側のユーザに関するマイグレーション許容ビットを確認する。
【０１４１】
ステップ１７００７：クォータ管理モジュール２６１０が、マイグレーション許容ビットがオフであるか、またはオンであるかを判定する。
【０１４２】
ステップ１７００８：マイグレーションビットが、オンである場合、クォータ管理モジュール２６１０は、そのファイルを、指定されたマイグレーション宛先に移すよう、マイグレーションモジュール２１６０に求める。
【０１４３】
ステップ１７００９：マイグレーションモジュールが、マイグレーションを終了すると、プロセスは、ステップ１７０１０に進む。
【０１４４】
ステップ１７０１２：マイグレーションビットが、オフである場合、クォータ管理モジュール２１６０は、エラーをフォワーダモジュール２１２２に送り返す。
【０１４５】
ステップ１７０１３：次に、フォワーダモジュールは、クライアントのクォータの超過となるため、エラーをクライアントに送り返す。
【０１４６】
ステップ１７０１０：フォワーダモジュールは、要求されたオペレーションを完了させることを進める。
【０１４７】
すべての容量変更オペレーションが、クォータ管理モジュール２６１０によって監視されることが可能である。したがって、クォータ管理のためではないマイグレーションが行われた場合でも、変化させられた容量が、ＩＱＭＴ２１２７の中に記録される。
【０１４８】
このため、本発明は、クライアントコンピュータが、マウントポイントの数を単一のＧＮＳにまで減らす手段、および複数のＮＡＳシステムの機能を仮想化して、単一のＮＡＳアクセスポイントにするための手段を提供することが分かる。さらに、本明細書で特定の諸実施形態を例示し、説明してきたが、同一の目的を実現するように計算された任意の構成が、開示される、それらの特定の実施形態の代わりに使用されてもよいことが、当業者には理解されよう。本開示は、本発明のあらゆる改変形態または変形形態を範囲に含むことを意図しており、以上の説明は、例として、限定としてではなく、行われたものと理解されたい。したがって、本発明の範囲は、添付の特許請求の範囲、ならびにそのような特許請求の範囲に認められる完全な均等物の範囲を参照して、適切に決定されるべきである。
【図面の簡単な説明】
【０１４９】
【図１】本発明の方法および装置が適用されることが可能なハードウェア構成の実施例を示す図である。
【図２】本発明の方法および装置が適用されることが可能なソフトウェア構成の実施例を示す図である。
【図３】本発明のＧＮＳ機能を示す概念図である。
【図４】本発明によるファイルハンドルを生成する通常の手続きを示す図である。
【図５】読取り要求中、または書込み要求中などにおける、ファイルにアクセスする通常の手続きを示す図である。
【図６】ファイルレベルマイグレーション機構を示す概念図である。
【図７】ファイルマイグレーションの制御フローを示す図である。
【図８】移されたファイルへのファイルアクセスの制御フローを示す図である。
【図９】ＮＦＳクライアントがファイルにアクセスする前に、ファイルマイグレーションが行われ、ＮＦＳクライアントが、ファイルハンドルを有さない場合の制御フローを示す図である。
【図１０】ＮＡＳ仮想化システムにおける属性管理を示す概略図である。
【図１１】ＮＡＳ仮想化システムにおいて管理される属性を有するファイルへの属性アクセスの制御フローを示す図である。
【図１２】本発明のＮＡＳ仮想化システムにおける統合されたアカウント管理およびアクセス制御を示す概略図である。
【図１３】統合アカウント管理テーブル作成段階の制御フローを示す図である。
【図１４】ファイルアクセスが、ＮＡＳ仮想化システムによって制御される制御フローを示す図である。
【図１５】ＮＡＳ仮想化システムにおけるクォータ管理を示す概略図である。
【図１６】ＮＡＳ仮想化システムにおけるクォータ設定の制御フローを示す図である。
【図１７】ＮＡＳ仮想化システムにおけるクォータ管理中のファイルアクセスの制御フローを示す図である。
【符号の説明】
【０１５０】
１０００……ＮＡＳクライアント、１１００……管理ホスト、２０００……ＮＡＳ仮想化システム、２１００……ＮＡＳヘッド、２２００……ストレージコントローラ、２４００……ストレージシステム、３０００……ＮＡＳシステム
【図１】
2008159027.tif 000003
【図２】
2008159027.tif 000004
【図３】
2008159027.tif 000005
【図４】
2008159027.tif 000006
【図５】
2008159027.tif 000007
【図６】
2008159027.tif 000008
【図７】
2008159027.tif 000009
【図８】
2008159027.tif 000010
【図９】
2008159027.tif 000011
【図１０】
2008159027.tif 000012
【図１１】
2008159027.tif 000013
【図１２】
2008159027.tif 000014
【図１３】
2008159027.tif 000015
【図１４】
2008159027.tif 000016
【図１５】
2008159027.tif 000017
【図１６】
2008159027.tif 000018
【図１７】
2008159027.tif 000019
【外国語明細書】
2008159027000001.pdf