(57)【特許請求の範囲】
【請求項１】
クライアントとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおいて、
前記メタデータサーバは、前記クライアントが前記ストレージにアクセスする際に、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知する共有ファイルシステムサーバ制御部を備え、
前記ストレージは、
前記アクセス制御データを保持するアクセス制御データテーブルと、
クライアントからのＩＯ命令を含むアクセスの際、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可するＩＯ実行部と、
を備え、
前記ＩＯ実行部は、ＩＯ保留キューとＩＯ実行キューとを備え、
複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記複数のクライアントのうち第１のクライアントからのＩＯ命令が前記ＩＯ実行キューに繋がれて実行され、他のクライアントからのＩＯ命令は前記ＩＯ保留キューに繋がれて保留され、
前記第１のクライアントからのＩＯ命令が完了すると、前記第１のクライアントのアクセス制御データが前記アクセス制御データテーブルから削除され、第２のクライアントからのＩＯ命令が前記ＩＯ保留キューから前記ＩＯ実行キューに移されて実行されることにより、前記メタデータサーバが許可を与えた順に前記ＩＯ保留キューから前記ＩＯ実行キューにＩＯ命令が移されて実行される
ことを特徴とする共有ファイルシステム。
【請求項２】
前記ストレージは、
アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、
前記ＩＯ実行部は、
クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得し、
当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可する、
ことを特徴とする請求項１に記載の共有ファイルシステム。
【請求項３】
クライアントとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおける制御方法であって、
前記クライアントが前記ストレージにアクセスする際に、前記メタデータサーバが、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知するステップと、
前記ストレージが、前記メタデータサーバから通知されたアクセス制御データをアクセス制御データテーブルに保持するステップと、
クライアントからのＩＯ命令を含むアクセスの際、前記ストレージが、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、
アクセス制御データが存在する場合に、前記ストレージが、前記クライアントからのアクセスを許可するステップと、
を備え、さらに、
複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記複数のクライアントのうち第１のクライアントからのＩＯ命令が前記ＩＯ実行キューに繋がれて実行され、他のクライアントからのＩＯ命令は前記ＩＯ保留キューに繋がれて保留されるステップと、
前記第１のクライアントからのＩＯ命令が完了すると、前記第１のクライアントのアクセス制御データが前記アクセス制御データテーブルから削除され、第２のクライアントからのＩＯ命令が前記ＩＯ保留キューから前記ＩＯ実行キューに移されて実行されることにより、前記メタデータサーバが許可を与えた順に前記ＩＯ保留キューから前記ＩＯ実行キューにＩＯ命令が移されて実行されるステップと、
を備える制御方法。
【請求項４】
前記ストレージは、アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、
前記判断するステップは、
クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得するステップと、
当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、
を含むことを特徴とする請求項３に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ・エリア・ネットワーク（Storage Area Network。以下「ＳＡＮ」という。）共有ファイルシステムのアクセス制御方法に関する。特に、メタデータサーバが共有ファイルシステムを制御することを特徴とする共有ファイルシステムにおいて、対象空間、すなわち、デバイスのアドレス空間が広いストレージ装置をアクセスする制御方法に関する。
【背景技術】
【０００２】
従来、共有ストレージへのアクセス制御として、ＦＣスイッチのゾーニングやＬＵＮマスキング、共有ファイルシステムによる共有ストレージへのアクセス制御などの手法が知られている。
【０００３】
図１は、ＦＣスイッチのゾーニングやＬＵＮマスキング（アクセスコントロール）などによる共有ストレージへのアクセス制御の従来例を示す図である。同図に示すように、本従来例では、ＦＣスイッチのゾーニングやＬＵＮマスキング（アクセスコントロール）などの手法を用いて、運用を開始する前に、静的にストレージのアクセス権を指定して、クライアントからアクセス可能なストレージのＬＤ（ロジカルディスク）を限定する。特許文献１は、論理記憶アクセステーブルを持ち、アクセス制限と保管期間を記憶できるディスク装置に関するものであるが、扱う単位が論理ディスク（ＬＤ）単位である。
【０００４】
また、共有ファイルシステムによる共有ストレージへのアクセス制御の従来例については、ストレージを複数台のクライアントから共有し、メタデータサーバが、ストレージ上にファイルシステムをもち、複数のクライアントからのアクセスを調停しながら、ストレージ上に構築したファイルシステムを複数クライアントから共有する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１２９７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来、ＳＡＮを用いた高速データ入出力が可能な共有ファイルシステムを構築する場合、ストレージは、全てのクライアントからアクセス可能となっている必要がある。このとき、クライアントからは、ストレージの任意のアドレス（ＬＢＡ）に対してＲＥＡＤ／ＷＲＩＴＥ可能である。そのため、第１に、クライアント単独でのインストール時などに、インストーラ等がノードから検出可能なストレージのパーティション情報をクリアするなどして、ディスクの内容を破壊する可能性があるという問題がある。第２に、クライアント上の管理者のオペレーションミスによりストレージのデータの内容を破壊することがあるという問題がある。
【０００７】
また、各クライアントからのＩＯ要求は、ストレージ内で最適化されてしまい、かならずしもＩＯ命令の到着順に処理されるわけではなく、複数のクライアントから同時に同じ箇所を書き込む場合に、順序保証をメタデータサーバ側で行う必要があった。このために、ｉノードロックなどのメタデータサーバ側のファイルシステムに依存した、荒い排他制御の仕組みを使う必要があり、その場合に共有ファイルシステム上の同一ファイルに複数クライアントから同時にアクセスできないという問題がある。
【０００８】
さらに、従来のＦＣスイッチのゾーニングや、ＬＵＮマスキングの手法では、全てのクライアントからストレージの任意のアドレス（ロジカルブロックアドレス：ＬＢＡ）に対してアクセス可能としなければならないため、図２の形態のような共有ファイルシステムには適用できず、共有ファイルシステムにおいては、クライアントからの低レベルのストレージへのアクセス制御ができない。
【０００９】
また、ファイルの整合性保持という観点において、ファイル整合性の保持を、メタデータサーバ２主体で行うと、iノードロックなど、元々ファイルシステムが持つファイルのロック機構を用いて実現する必要があり、同一ファイルを他ノードから同時にアクセスできないなど、性能面の課題があった。このとき、iノードロックなどのファイル整合の手段を用いない場合、各クライアントからの要求は、ストレージ内で最適化されてしまい、かならずしもＩＯ命令の到着順に処理されるわけではなく、複数のクライアントから同時に同じ箇所を書き込む場合に、順序保証をメタデータサーバ側で行う必要がある。
【００１０】
かかる実情に鑑み、本発明は、メタデータサーバが共有ファイルシステムを制御することを特徴とする共有ファイルシステムにおいて、対象空間、すなわち、デバイスのアドレス空間が広いストレージ装置をアクセス制御する方法を提供しようとするものである。
【課題を解決するための手段】
【００１１】
本発明の所定の実施形態に係る共有ファイルシステムのストレージアクセス制御方法によれば、クライアントがストレージにアクセスする際に、メタデータサーバがクライアントに対してストレージのアクセス範囲とサイズを通知するとともに、ストレージに対しても、アクセス範囲とクライアントを識別するためのアクセス制御キーをストレージに通知する機構を有するメタデータサーバと、ストレージ内部にアクセス範囲を保持するリバーステーブルを保持しておき、アクセス制御キーと、クライアントを識別するホスト識別子の対応表から、クライアントのアクセス範囲をチェックして、クライアントのＩＯの実行を許可、不許可を行う機構を有したストレージ装置とにより、メタデータサーバがクライアントに許可した範囲のみに、クライアントがアクセス可能とする。また、複数のクライアントからストレージの同一アクセス空間をアクセスするときに、メタデータサーバが許可を与えた順にアクセス順序を保証する機能を提供する。
【発明の効果】
【００１２】
本発明の所定の実施形態によれば、第１に、クライアントから、ストレージにアクセスするときに、許可されたブロックの範囲にのみ、実際のＩＯ命令が実行されるため、無意識のストレージアクセスによる、データ破壊を防ぐことができるという効果を奏し得る。その理由は、クライアントが、共有ファイルシステムの使用準備段階において、メタデータサーバにより与えられたアクセス制御キーをストレージに登録するステップと、クライアントがストレージをアクセスする際に、一旦メタデータサーバが、アクセス制御データをストレージに登録するステップと、クライアントがストレージにＩＯ命令を発行する際に、ストレージが登録されたアクセス制御データから、ＩＯの実行の許可、不許可を判断するステップを有して、あらかじめ、メタデータサーバにより許可されたストレージの領域にのみアクセス可能とする機構をストレージが有しているからである。
【００１３】
また第２に、複数のクライアントから、ストレージの同一アドレス空間を含む領域にアクセスするときに、ファイルの整合性保持を、メタデータサーバを必要としないため、複数のクライアントから同時にストレージへＩＯ命令を発行することが出来、複数のクライアントから高速にＩＯの実行ができるという効果を奏し得る。その理由は、共有ファイルシステムのメタデータを管理するメタデータサーバが、ＩＯを許可した順番、すなわちアクセス制御キーを登録した順番にストレージへのＩＯが実行されて、アクセス順序が保証されるため、ファイルの整合性保持を、メタデータサーバが調停する必要がないためである。
【図面の簡単な説明】
【００１４】
【図１】ＦＣスイッチのゾーニングやＬＵＮマスキング（アクセスコントロール）などによる共有ストレージへのアクセス制御の従来例を示す図である。
【図２】本発明の一実施形態に係る共有ファイルシステムの概略構成を示すブロック図である。
【図３】本実施例におけるストレージ３の構造を示すブロック図である。
【図４】本実施例におけるアクセス制御データのデータ構造を示すブロック図である。
【図５】本実施例におけるアクセス制御データテーブル３２のデータ構造を示すブロック図である。
【図６】本実施例において、アクセス制御データの開始アドレスと終了アドレスが重なっている場合におけるアクセス制御データテーブル３２のデータ構造を示すブロック図である。
【図７】本実施例におけるアクセス制御キー情報テーブル３３のデータ構造を示すブロック図である。
【図８】第１の実施例における共有ファイルシステムの詳細な機能構成を示すブロック図である。また、本実施例における共有ファイルシステムを使用する準備段階においての動作を示す図である。
【図９】第１の実施例における共有ファイルシステムの詳細な機能構成を示すブロック図である。また、本実施例における共有ファイルシステムによる共有ストレージへのアクセス制御の動作を示す図である。
【図１０】本実施例における共有ファイルシステムの全体構成及びストレージの機能構成を示す図である。
【図１１】本実施例におけるＩＯ命令の保留キュー及び実行キューの概略構成を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。
【００１６】
図２は、本発明の一実施形態に係る共有ファイルシステムの全体構成を示すブロック図である。同図に示すように、共有ファイルシステムは、１台以上のメタデータサーバ２と、１台以上のクライアント１と、１台以上のストレージ３を備え、メタデータサーバ２、クライアント１、ストレージ３はそれぞれＳＡＮ４に接続され、また、メタデータサーバ２とクライアント１はそれぞれネットワーク５に接続される。
【００１７】
図８又は図９は、第１の実施例における共有ファイルシステムの詳細な機能構成を示すブロック図である。これらの図に示すとおり、メタデータサーバ２は、クライアント１からＩＯ要求６３を受けると、メタデータサーバ２上の共有ファイルシステムサーバ制御部２０２は、メタデータ領域およびデータ領域を配置するストレージ３上を検索し、アクセス対象とするファイルのメタデータ領域のブロックアドレス、データ長などを取得し、制御情報であるメタデータ６４を生成し、クライアント１は、そのメタデータ６４をもとに、クライアント１のメモリ１１４の内容を、ディスクＩＯ制御部１１３を経由して、ストレージ３にＳＡＮ４経由で直接ＩＯすることにより、高速にデータアクセスを実現する。
【００１８】
図３は、本実施例におけるストレージ３の構造を示すブロック図である。また、図４は、本実施例におけるアクセス制御データのデータ構造を示すブロック図である。
【００１９】
図３に示すように、ストレージ３は、対象空間（デバイスのアドレス空間）が広いストレージ装置（好適には、数テラバイトから数ペタバイト）であり、メモリ３１上にアクセス制御データテーブル３２と、アクセス制御キー情報テーブル３３を備える。
【００２０】
アクセス制御データテーブル３２は、複数のアクセス制御データを含んで構成される。個々のアクセス制御データは、アクセス制御キー、開始アドレス、終了アドレス、及び消滅時間を含むデータである。アクセス制御データテーブル３２の、個々のアクセス制御データは、図４を参照すると、アクセス制御キー３２１、開始アドレス３２２、終了アドレス３２３、及び消滅時間３２４と、次のデータを指し示すためのｎｅｘｔポインタ３２５と、複数のクライアントからアクセス制御データの登録がされ、かつアクセス制御データの開始アドレスと終了アドレスが重なっている場合に次のデータを指し示すための重複ｎｅｘｔポインタ３２６を含んで構成される。
【００２１】
図５は、本実施例におけるアクセス制御データテーブル３２のデータ構造を示すブロック図である。同図に示すように、アクセス制御データテーブル３２はリバーステーブルの形式でメモリ３１に保存され、ＲＥＡＤまたはＷＲＩＴＥのＩＯ命令に含まれるアドレス（ＬＢＡ）をキーにして、少ない検索コストで容易に該当するアクセス制御データに到達できるように構成されている。
【００２２】
図６は、本実施例において、アクセス制御データの開始アドレスと終了アドレスが重なっている場合におけるアクセス制御データテーブル３２のデータ構造を示すブロック図である。同図に示すように、アクセス制御データの開始アドレスと終了アドレスが重なっている場合には、重複ｎｅｘｔポインタにアクセス制御データが格納されるデータ構造をとる。
【００２３】
図３及び図４を参照すると、アクセス制御データテーブル３２は、メタデータサーバ２から通知されるアクセス制御データを登録するための命令を、ＩＯ命令受信部３６を介して受信した際に登録され、メタデータサーバ２から通知されるアクセス制御データを削除するための命令を、ＩＯ命令受信部３６を介して受信した際に削除される。また、タイマ処理部３７により、アクセス制御データテーブルに、アクセス制御データが登録されてからの時間が計測され、個々のアクセス制御データは、個々のアクセス制御データに指定されている消滅時間３２４が経過したら、アクセス制御データテーブル３２から削除される。
【００２４】
このアクセス制御データの登録および削除は、メタデータサーバ２からストレージ３に通知される。このとき、クライアント１からＩＯ要求をメタデータサーバに要求し、メタデータサーバがストレージ３上のブロック位置およびサイズを取得する際に、アクセス制御データは登録され、クライアント１がストレージ３に対するＩＯ命令が完了したことを、メタデータサーバ２が確認した後にアクセス制御データは削除される。さらにこの登録と削除の一連のシーケンスは、システムコールのようなアクセス区間の比較的短い区間で行われることを想定しており、ストレージ３上に一度に登録されるアクセス制御データの数は、それほど巨大にはならず、数１００から数１０００のエントリ数となる。
【００２５】
図７は、本実施例におけるアクセス制御キー情報テーブル３３のデータ構造を示すブロック図である。まず図３を参照すると、アクセス制御キー情報テーブル３３は、複数のアクセス制御キーを含んで構成される。個々のアクセス制御キーは、アクセス制御キーとホスト識別子を含むデータである。アクセス制御キー情報テーブル３３の、個々のアクセス制御キーデータは、図７を参照すると、アクセス制御キー３３１と、ホスト識別子３３２と、次のデータを指し示すためのｎｅｘｔポインタ３３３とを備える。
【００２６】
図３及び図７を参照すると、アクセス制御キー情報テーブル３３は、クライアント１から通知される、アクセス制御キー情報を登録するための命令を、ＩＯ命令受信部３６を介して受信した際に、アクセス側（クライアント）のホスト識別子（ＩＰアドレスや、ＷＷＰＮ）を認識して、アクセス制御キーとホスト識別子の組でアクセス制御キー情報テーブル３３に登録する。また、同様にアクセス制御キー情報を削除するための命令を、ＩＯ命令受信部３６を介して受信した際に、アクセス側（クライアント）のホスト識別子（ＩＰアドレスや、ＷＷＰＮなど）を認識して、登録されているアクセス情報キーテーブルから、アクセス情報キーを削除する。
【００２７】
このアクセス制御キーは、ストレージ３がクライアント１からのアクセス制限を目的に利用されるものであり、クライアント１がストレージ３にアクセスする準備段階（マウントやファイルのオープンなど）で、事前にメタデータサーバ２からクライアント１が取得し、ストレージ３側に、アクセス制御キー情報を登録するための命令を発行して、ストレージ３側のアクセス情報キーテーブルに登録しておく。
【００２８】
次に、クライアント１からストレージ３に対して、ＲＥＡＤまたはＷＲＩＴＥのＩＯ発行が要求された場合の、ストレージ３でのアクセス制御について説明する。このとき、次の動作が行われる。
（１）ＩＯ命令受信部３６でＲＥＡＤまたはＷＲＩＴＥのＩＯ命令を受けると、ＩＯ命令受信部３６は、ＩＯ命令を発行した、ホスト識別子を確認する。
（２）ＩＯ実行部３４は、アクセス制御キー情報テーブル３３を検索して、ホスト識別子から、アクセス制御キーを取得する。
（３）ＩＯ実行部３４は、IＯ命令受信部３６で受信したＩＯ発行命令に含まれる開始アドレス、終了アドレスの範囲と、ホスト識別子から得られたアクセス制御キーが、アクセス制御キー情報テーブル３３内のアクセス制御データに存在するかを調べる。
（４）ＩＯ実行部３４はアクセス制御データテーブル３２にアクセス制御データが存在する場合のみＩＯ命令は許可されたとみなして、ＩＯ命令を処理してディスク装置３５に対してのＲＥＡＤまたはＷＲＩＴＥのアクセスを行う。アクセス制御データテーブル３２にアクセス制御データが存在しない場合は、ＩＯ命令は処理しない。ただしクライアントがＩＯエラーとなるのを防ぐためにＩＯ命令の完了は正常終了を返す。このときＲＥＡＤ命令は０データを返却し、ＷＲＩＴＥは無視する。
【００２９】
これら（１）から（４）の動作により、メタデータサーバ２がＩＯ毎に動的にストレージ３に対して、クライアント１にアクセス許可を与える。ストレージ３が許可する領域のみ、クライアント１はストレージ３に対してアクセスできるため、クライアント１の無意識なストレージ３へのアクセスによるデータ破壊を防止できる。
【００３０】
さらに、既に、複数のクライアント１が発行するＩＯ命令について、それぞれのデータの開始アドレスと終了アドレスが重なっている場合についての動作について説明する。
（５）アクセス制御データテーブル３２に登録されているアクセス制御データが複数あり、かつそれらのアクセス制御データの開始アドレスと終了アドレスが重なっている場合、例えば、図６に示すように、アクセス制御データの登録順序が、以下の順で登録される。
・アクセス制御キーａ、開始アドレスｓ１、終了アドレスｓ１
・アクセス制御キーｂ、開始アドレスｓ２、終了アドレスｓ２
・アクセス制御キーｃ、開始アドレスｓ３、終了アドレスｓ３
このとき、アドレスの範囲が、(s1≦s2 && s1≦s3) || (e1≧s2 && e1≧e3)  のような範囲を示している場合には、（６）の処理を行う。
（６）該当するＩＯ発行命令はストレージ内部でＩＯ保留キュー３４１につながれて保留され、該当するアクセス制御データがメタデータサーバ２により削除されるまで、ストレージ３内で待ち合わせを行う。
【００３１】
これら（５）、（６）の動作により、複数のクライアント１から同一または重複しているストレージ３のアドレス空間をアクセスするときに、メタデータサーバ２が許可を与えた順、すなわちメタデータサーバ２が、アクセス制御データをストレージ３に登録した順で、アクセス順序を保証する。
【００３２】
この機能を、メタデータサーバ２が管理する共有ファイルシステムに適用すると、複数のクライアント１間で、同一または重複するストレージ３のアドレス空間をアクセスするときに、メタデータサーバ２が許可する順に、クライアント郡が発行したＩＯ命令をストレージ３が処理でき、共有ファイルシステムのアクセス順序整合を行うことができる。
【００３３】
次に、本発明の実施例の構成について図面を参照して詳細に説明する。
【００３４】
図３を参照すると、本発明の第１の実施例は、メタデータサーバ２と、クライアント１とストレージ３と、それを接続するＳＡＮ４と、メタデータサーバ２とクライアント１を接続するネットワーク５を備えている。これらはそれぞれ次のように動作する。
【００３５】
まず、メタデータサーバ２は、ストレージ３に構築した共有ファイルシステムを管理する。次に、クライアント１は、共有ファイルシステムのクライアントとして動作する。ＳＡＮ４には、メタデータサーバ２とクライアント１と、ストレージ３が接続され、ストレージエリアネットワークを構成する。メタデータサーバ２とクライアント１はネットワーク５に接続され、相互に通信が必要な場合にネットワーク５を経由して、軽量のデータ（メタデータなど）のやりとりを行う。
【００３６】
ここで、ストレージ３は、ＩＯ命令受信部３６と、ＩＯ実行部３４と、タイマ処理部３７と、ディスク装置３５と、メモリ３１とを含んで構成される。ＩＯ命令受信部３６には、除外リスト３６１があり、事前に登録されたホスト識別子から発行されたＩＯについては、無条件にＩＯ実行部で実行できる。メモリ３１上には、アクセス制御データテーブル３２と、アクセス制御キー情報テーブル３３が存在する。アクセス制御データテーブル３２は、複数のアクセス制御データを含む。個々のアクセス制御データは、アクセス制御キー、開始アドレス、終了アドレス、及び消滅時間を備えるデータである。アクセス制御データテーブル３２の、個々のアクセス制御データは、図４を参照すると、アクセス制御キー３２１と、開始アドレス３２２と、終了アドレス３２３と、消滅時間３２４と、次のデータを指し示すためのｎｅｘｔポインタ３２５と、複数のクライアントからアクセス制御データの登録がされ、かつアクセス制御データの開始アドレスと終了アドレスが重なっている場合に次のデータを指し示すための重複ｎｅｘｔポインタ３２６を含んで構成される。アクセス制御キー情報テーブル３３は、図３を参照すると、複数のアクセス制御キーから構成され、個々のアクセス制御キーは、アクセス制御キーと、ホスト識別子とを備えるデータである。アクセス制御キー情報テーブル３３の、個々のアクセス制御キーデータは、図７を参照すると、アクセス制御キー３３１と、ホスト識別子３３２と、次のデータを指し示すためのｎｅｘｔポインタ３３３とを含んで構成される。
【００３７】
ストレージ３は、それぞれ以下のように動作する。ＩＯ命令受信部３６は、ＩＯ命令（ＲＥＡＤ命令、ＷＲＩＴＥ命令）の受信に加えて、アクセス制御データの登録、削除命令および、アクセス制御キーの登録、削除の命令を受信する。ＩＯ実行部３４は、アクセス制御データテーブル３２と、アクセス制御キー情報テーブル３３を検索し、ＩＯ命令受信部３６が受けた命令から、ＩＯ実行を行うかどうかを判断してディスク装置３５へのアクセスを行うかどうかを決定する。また、ＩＯ保留キュー３４１とＩＯ実行キュー３４２を持ち、実行中のＩＯ命令は、ＩＯ実行キューにつなぎ、ＩＯ命令を保留する場合は、ＩＯ保留キュー３４２に一旦つなぎ、順次ＩＯ実行キューに移して、ＩＯを実行する。アクセス制御データテーブル３２には、ＩＯ命令受信部３６が受けた、アクセス制御データの登録命令に従い、アクセス制御データが登録され、アクセス制御データの削除命令に従い、アクセス制御データが削除される（図６および図７）。アクセス制御キー情報テーブル３３は、ＩＯ命令受信部３６が受けた、アクセス制御キーの登録命令に従い、アクセス制御キー情報が登録され、アクセス制御キーの削除命令に従い、アクセス制御データが削除される（図８）。
【００３８】
図８または図９を参照すると、メタデータサーバ２は、ネットワーク制御部２０１、共有ファイルシステムサーバ制御部２０２、マウント要求受信制御部２０２３、アクセス制御キー発行制御部２０２４、アクセス制御データ生成部２０２５、ディスクＩＯ制御部２０３を備える。
【００３９】
本実施例において、メタデータサーバ２は、それぞれ以下のように動作する。ネットワーク制御部２０１は、クライアント１、およびその他クライアントと通信するための軽量のデータ（メタデータなど）の送出および受信を行う。共有ファイルシステムサーバ制御部２０２は、メタデータとデータから構成される、ストレージ３上に構築された共有ファイルシステムを制御する。マウント要求受信制御部２０２３は、クライアント１からのマウント要求を処理する。アクセス制御キー発行制御部２０２４は、クライアント１がストレージ３に登録するアクセス制御キーの発行を行う。アクセス制御データ生成部２０２５は、クライアント１１０へアクセス許可するためのアクセス制御データを生成して、ストレージ３へ登録を行う。ディスクＩＯ制御部２０３は、共有ファイルシステムサーバ制御部２０２、アクセス制御データ生成部２０２５が生成したデータをストレージ３に送信する。
【００４０】
図８又は図９を参照すると、クライアント１は、ネットワーク制御部１１１、共有ファイルシステムクライアント制御部１１２、マウント要求発行制御部１１２３、アクセス制御キー登録制御部１１２４、ディスクＩＯ制御部１１３と、メモリ１１４を備える。
【００４１】
本実施例において、クライアント１は、それぞれ以下のように動作する。ネットワーク制御部２０１は、メタデータサーバ２と通信するための軽量のデータ（メタデータなど）の送出および受信を行う。共有ファイルシステムクライアント制御部１１２は、クライアントがＩＯを発行する際に、メタデータサーバ２と通信して、アクセスに必要な情報を取得する。マウント要求発行制御部１１２３は、メタデータサーバ２に共有ファイルシステムのマウント要求を行う。アクセス制御キー登録制御部は、メタデータサーバ２から取得したアクセス制御キーを、ストレージ３に登録する。ディスクＩＯ制御部１１３は、共有ファイルシステムクライアント制御部１１２、アクセス制御キー登録制御部１１２４が生成したデータをストレージ３に送信し、メモリ１１４上のデータの読み書きを行う。
【００４２】
次に図８及び図９を参照して、本発明の第１の実施例の動作について詳細に説明する。図８は、本実施例における共有ファイルシステムを使用する準備段階においての動作を示す図である。図９は、本実施例における共有ファイルシステムによる共有ストレージへのアクセス制御の動作を示す図である。
【００４３】
まず、共有ファイルシステムを使用する準備段階においての動作を説明する。図８を参照すると、メタデータサーバ２については、アクセス制御が動作しないように、ストレージ３に対して、全てのアドレス（ＬＢＡ）に対してのアクセス許可を与えておく。これは３６１の除外リストに、メタデータサーバ２のホスト識別子（ＩＰアドレスやＷＷＰＮなど）を与えておく。
【００４４】
次に、クライアント１が、メタデータサーバ２が管理する共有ファイルシステムをマウントする過程を説明する。図８を参照すると、クライアント１の１１２３マウント要求発行制御部が、メタデータサーバ２に対して、マウント要求６１を発行する（Ｓ８１）。次に、メタデータサーバ２は、マウント要求受信制御部２０２３で、要求を受け付けて、クライアント１に対して、マウント許可を与えるが、その際に、アクセス制御キー発行制御部２０２４で、アクセス制御キー６２を生成する。ここでアクセス制御キー６２は、ホスト識別子などとマップできるものではなく、マウント要求毎にユニークな値を生成する。その生成したアクセス制御キー６２を、クライアント１へ送信する（Ｓ８２）。次に、クライアント１は、アクセス制御キー登録制御部１１２４で、ストレージ３に対して、アクセス制御キーの登録命令を、ディスクＩＯ制御部１１３を介して、発行する（Ｓ８３）。
【００４５】
ストレージ３はＩＯ命令受信部３６で、アクセス制御キーの登録命令を受信すると、アクセス制御キー情報テーブル３３に、アクセス制御キーを登録する。このとき、ストレージ３は、クライアント１のホスト識別子（ＩＰアドレスやＷＷＰＮなど）を認識し、アクセス情報キーとホスト識別子の組で、アクセス制御キー情報テーブル３３に登録する。このときのアクセス制御キー情報テーブルは図７のように登録される。
【００４６】
次に、クライアント１が、メタデータサーバ２が管理する共有フィルシステムをアクセスする過程を説明する。
【００４７】
図９を参照すると、クライアント１１０が共有ファイルシステムクライアント制御部１１２を介して、ＩＯ要求を発行する（Ｓ９１）。このときのＩＯ要求は、システムコールのような、アクセス区間の短い、単一のＳＣＳＩコマンドで発行可能な大きさ（サイズ）である。
【００４８】
次に、メタデータサーバ２は、共有ファイルシステムサーバ制御部２０２において、メタデータ領域およびデータ領域を配置するストレージ３上を検索し、アクセス対象とするファイルのメタデータ領域のブロックアドレス、データ長を取得する。アクセス制御データ生成部２０２５は、そのデータと、クライアント１のマウント要求の際に与えたアクセス制御キー６２とに基づいて、アクセス制御データを生成して、ディスクＩＯ制御部２０３を介して、ストレージ３にアクセス制御データの登録命令を発行する（Ｓ９２）。
【００４９】
ストレージ３はＩＯ命令受信部３６で、アクセス制御データの登録命令を受信すると、アクセス制御データテーブル３２に、アクセス制御データを登録する。このときのアクセス制御データテーブルは図５のように、リバーステーブルの形式でメモリ３１上に保存される。このとき、タイマ処理部３７を起動して、アクセス制御データの消滅時間の計測を開始する。
【００５０】
次に、メタデータサーバ２は、アクセス対象とするファイルのメタデータ領域のブロックアドレス、データ長を格納した、制御情報であるメタデータ６４を生成し、クライアント１に送信する（Ｓ９３）。
【００５１】
次にクライアント１の共有ファイルシステムクライアント制御部は、メタデータ６４を使用して、メモリ１１４にあるデータの読み書きを行うため、ディスクＩＯ制御部１１３を介して、ストレージ３に対するＩＯ命令を発行する（Ｓ９４）。
【００５２】
ストレージ３は、ＩＯ命令受信部３６でＲＥＡＤまたはＷＲＩＴＥのＩＯ命令を受けると、以下のステップ（１）〜（４）を実行する。
（１）ＩＯ命令受信部３６は、ＩＯ命令を発行した、ホスト識別子を確認する。このとき除外リスト３６１に含まれるホスト識別子をもつクライアントから発行されたＩＯ命令については、ＩＯ実行部３４で実行される。
（２）ＩＯ実行部３４は、アクセス制御キー情報テーブル３３を検索して、ホスト識別子から、アクセス制御キーを取得する。
（３）ＩＯ実行部３４は、IＯ命令受信部３６で受信したＩＯ発行命令に含まれる開始アドレス、終了アドレスの範囲と、ホスト識別子から得られたアクセス制御キーが、アクセス制御キー情報テーブル３３内のアクセス制御データに存在するかを調べる。
（４）ＩＯ実行部３４はアクセス制御データテーブル３２にアクセス制御データが存在する場合のみＩＯ命令は許可されたとみなして、ＩＯ命令を処理してディスク装置３５に対してのＲＥＡＤまたはＷＲＩＴＥのアクセスを行う。アクセス制御データテーブル３２にアクセス制御データが存在しない場合は、ＩＯ命令は処理しない。ただしクライアントがＩＯエラーとなるのを防ぐためにＩＯ命令の完了は正常終了を返す。このときＲＥＡＤ命令は0データを返却し、ＷＲＩＴＥ命令は無視する。実行されるＩＯは、ＩＯ実行キュー３４２に繋がれて実行される。
【００５３】
次に、クライアント１の共有ファイルシステムクライアント制御部１１２は、ＩＯ命令完了をメタデータサーバ２に通知する（Ｓ９５）。
【００５４】
メタデータサーバ２の共有ファイルシステムサーバ制御部２０２は、クライアント１のストレージ３に対するＩＯ命令完了６５を受け取ると、ストレージ３に該当するアクセス制御データ６８の削除命令を発行する（Ｓ９６）。ストレージ３は、ＩＯ命令受信部３６でアクセス制御データ６８の削除命令を受信すると、アクセス制御データテーブル３２から、該当するアクセス制御データを削除する。
【００５５】
次にメタデータサーバ２の共有ファイルシステムサーバ制御部２０２から、ＩＯ完了通知がクライアント１へ通知されて一連のＩＯが完了する（Ｓ９７）。
【００５６】
なお、メタデータサーバ２が障害になっても問題が発生しないよう、ストレージ３は消滅時間が経過したアクセス制御データについては削除する。これはタイマ処理部が消滅時間を経過したアクセス制御データを検出して、アクセス制御データテーブル３２から削除する。
【００５７】
次に、本発明の第２の実施例について説明する。図１０は、本実施例における共有ファイルシステムの全体構成及びストレージの機能構成を示す図である。図１１は、本実施例におけるＩＯ命令の保留キュー及び実行キューの概略構成を示す図である。図１０を参照すると、事前に、メタデータサーバ２が生成した、クライアント１１０のアクセス制御キーの内容をａ、クライアント１２０のアクセス制御キーの内容をｂ、クライアント１３０のｃのアクセス制御とし、かつそれぞれのクライアントが、ストレージ３に対してアクセス制御キーを登録しているとする。なお、クライアント１１０、１２０、１３０は、第一の実施例におけるクライアント１と同じ構成を備えている。
【００５８】
このとき、クライアント１１０、クライアント１２０、クライアント１３０が、共有ファイルシステム上の同一ファイルの領域を含む部分を同時にアクセスする場合、クライアント１１０のストレージ３のアクセス範囲がｓ１〜ｅ１、クライアント１２０のストレージ３のアクセス範囲がｓ２〜ｅ２、クライアント１３０のストレージ３のアクセス範囲がｓ３〜ｅ３とすると、メタデータサーバ２により、クライアント１１０、クライアント１２０、クライアント１３０のアクセス制御データがそれぞれ、ストレージ３に登録される。
【００５９】
このときのメモリ３１上のアクセス制御データテーブル３２は、図６のように、アクセス制御キーａ、開始アドレスｓ１〜ｅ１をもつアクセス制御データが、最初のエントリとして登録され、重複ｎｅｘｔポインタに、アクセス制御キーｂ、開始アドレスｓ２〜ｅ２をもつアクセス制御データが接続され、その重複ｎｅｘｔポインタにアクセス制御キーｃ、開始アドレスｓ３〜ｅ３をもつアクセスデータが登録される。
【００６０】
図１０を参照すると、クライアント１１０、クライアント１２０、クライアント１３０のＩＯ命令がそれぞれ同時にストレージ３に発行された場合、ストレージ３のＩＯは、以下のように処理される。
（１）ＩＯ命令受信部３６は、ＩＯ命令を発行した、ホスト識別子を確認する。
（２）ＩＯ実行部３４は、アクセス制御キー情報テーブル３３を検索して、ホスト識別子から、アクセス制御キーを取得する。
（３）ＩＯ実行部３４は、IＯ命令受信部３６で受信したＩＯ発行命令に含まれる開始アドレス、終了アドレスの範囲と、ホスト識別子から得られたアクセス制御キーが、アクセス制御キー情報テーブル３３内のアクセス制御データに存在するかを調べる。
（４）クライアント１１０からのＩＯ命令の場合は、ＩＯ実行部は、ＩＯ実行キューに入れてＩＯを実行する（図１１のＩＯ実行キュー）。
（５）クライアント１２０からのＩＯ命令の場合は、ＩＯ実行部は、ＩＯ保留キューにＩＯ命令を入れて、ＩＯ実行を保留する（図１１のＩＯ保留キュー）。
（６）クライアント１３０からのＩＯ命令の場合は、ＩＯ実行部は、ＩＯ保留キューにＩＯ命令を入れて、ＩＯ実行を保留する（図１１のＩＯ保留キュー）。
【００６１】
このとき、保留されたクライアント１２０からのＩＯ命令は、メタデータサーバ２がクライアント１１０のアクセス制御データを削除すると、ＩＯ保留キューから、ＩＯ実行キューにＩＯ命令が移され、ＩＯ実行部３４がディスク装置３５へのＩＯを開始する。また、保留されたクライアント１３０からのＩＯ命令は、メタデータサーバ２がクライアント１２０のアクセス制御データを削除すると、ＩＯ保留キューから、ＩＯ実行キューに命令が移され、ＩＯ実行部３４がディスク装置３５へのＩＯを開始する。
【００６２】
以上のとおり、本発明によれば、共有ファイルシステムにおいて、対象空間が広いストレージ装置をアクセス制御する方法を提供できる。いくつかの実施形態において、メタデータサーバは、クライアントがストレージにアクセスする際に、クライアントに対してストレージのアクセス範囲とサイズを通知するとともに、ストレージに対しても、アクセス範囲とクライアントを識別するためのアクセス制御キーを通知する機構を有する。また、ストレージは、ストレージ内部にアクセス範囲を保持するリバーステーブルを保持しておき、アクセス制御キーと、クライアントを識別するホスト識別子の対応表から、クライアントのアクセス範囲をチェックして、クライアントのＩＯの実行を許可、不許可を行う機構を有する。さらに、ストレージは、複数のクライアントからストレージの同一アクセス空間をアクセスするときに、メタデータサーバが許可を与えた順にアクセス順序を保証する機能を有する。
【００６３】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００６４】
また、本発明においては、２台以上のクライアントから構成される共有ファイルシステムについて、適用可能である。クライアント１１０が、メタデータサーバ２が管理する共有ファイルシステムをマウントする際に、メタデータサーバ２が、アクセス制御データを生成することとしているが、クライアントがファイルのオープンなどのタイミングで、メタデータサーバ２がアクセス制御キーを生成することとしてもよい。
【００６５】
このとき、クライアントが発行する、ＩＯ発行命令の一部に、アクセス制御キーを埋め込むことにより、ストレージ３のＩＯ発行命令受信部が、ＩＯ発行命令に含まれるアクセス制御キーを直接判断することも可能である。この実施例の場合は、クライアント上で動作する、プロセス間のアクセス制御や、プロセス毎のＩＯの順序保証制御を行うことができる。
【００６６】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限
られない。
【００６７】
（付記１）クライアンとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおいて、前記メタデータサーバは、前記クライアントが前記ストレージにアクセスする際に、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知する共有ファイルシステムサーバ制御部を備え、前記ストレージは、前記アクセス制御データを保持するアクセス制御データテーブルと、クライアントからのアクセスの際、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可するＩＯ実行部と、を備える、ことを特徴とする共有ファイルシステム。
【００６８】
（付記２）前記ストレージは、アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、前記ＩＯ実行部は、クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得し、当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可する、ことを特徴とする付記１に記載の共有ファイルシステム。
【００６９】
（付記３）前記ＩＯ実行部は、複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記メタデータサーバが許可を与えた順にアクセス順序を保証することを特徴とする付記１又は２に記載の共有ファイルシステム。
【００７０】
（付記４）クライアンとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおける制御方法であって、前記クライアントが前記ストレージにアクセスする際に、前記メタデータサーバが、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知するステップと、前記ストレージが、前記メタデータサーバから通知されたアクセス制御データをアクセス制御データテーブルに保持するステップと、クライアントからのアクセスの際、前記ストレージが、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、アクセス制御データが存在する場合に、前記ストレージが、前記クライアントからのアクセスを許可するステップと、を備える制御方法。
【００７１】
（付記５）前記ストレージは、アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、前記判断するステップは、クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得するステップと、当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、を含むことを特徴とする付記４に記載の制御方法。
【００７２】
（付記６）前記判断するステップは、複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記メタデータサーバが許可を与えた順にアクセス順序を保証することを特徴とする付記４又は５に記載の制御方法。
【符号の説明】
【００７３】
１，１１０，１２０，１３０  クライアント、１１１  ネットワーク制御部、１１２  共有ファイルシステムクライアント制御部、１１２３  マウント要求発行制御部、１１２４  アクセス制御キー登録制御部、１１３  ディスクＩＯ制御部、１１４  メモリ、２  メタデータサーバ、２０１  ネットワーク制御部、２０２  共有ファイルシステムサーバ制御部、２０２３       マウント要求受信制御部、２０２４   アクセス制御キー発行制御部、２０２５  アクセス制御データ生成部、２０３  ディスクＩＯ制御部、３  ストレージ、３１  メモリ、３２  アクセス制御データテーブル、３３  アクセス制御キー情報テーブル、３４  ＩＯ実行部、３４１  ＩＯ保留キュー、３４２  ＩＯ実行キュー、３５  ディスク装置、」３６  ＩＯ命令受信部、３６１  除外リスト、３７  タイマ処理部、４  ＳＡＮ（ストレージ・エリア・ネットワーク）、５  ネットワーク
【図１】
0005760592.tif 000002
【図２】
0005760592.tif 000003
【図３】
0005760592.tif 000004
【図４】
0005760592.tif 000005
【図５】
0005760592.tif 000006
【図６】
0005760592.tif 000007
【図７】
0005760592.tif 000008
【図８】
0005760592.tif 000009
【図９】
0005760592.tif 000010
【図１０】
0005760592.tif 000011
【図１１】
0005760592.tif 000012