説明

共有ファイルシステムのストレージアクセス制御方法

【課題】共有ファイルシステムにおいて、対象空間が広いストレージ装置をアクセス制御する方法を提供する。
【解決手段】クライアントがストレージにアクセスする際に、メタデータサーバがクライアントに対してストレージのアクセス範囲とサイズを通知するとともに、ストレージに対しても、アクセス範囲とクライアントを識別するためのアクセス制御キーをストレージに通知する機構を有するメタデータサーバと、ストレージ内部にアクセス範囲を保持するリバーステーブルを保持しておき、アクセス制御キーと、クライアントを識別するホスト識別子の対応表から、クライアントのアクセス範囲をチェックして、クライアントのIOの実行を許可、不許可を行う機構を有したストレージ装置とにより、メタデータサーバがクライアントに許可した範囲のみに、クライアントがアクセス可能とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ・エリア・ネットワーク(Storage Area Network。以下「SAN」という。)共有ファイルシステムのアクセス制御方法に関する。特に、メタデータサーバが共有ファイルシステムを制御することを特徴とする共有ファイルシステムにおいて、対象空間、すなわち、デバイスのアドレス空間が広いストレージ装置をアクセスする制御方法に関する。
【背景技術】
【0002】
従来、共有ストレージへのアクセス制御として、FCスイッチのゾーニングやLUNマスキング、共有ファイルシステムによる共有ストレージへのアクセス制御などの手法が知られている。
【0003】
図1は、FCスイッチのゾーニングやLUNマスキング(アクセスコントロール)などによる共有ストレージへのアクセス制御の従来例を示す図である。同図に示すように、本従来例では、FCスイッチのゾーニングやLUNマスキング(アクセスコントロール)などの手法を用いて、運用を開始する前に、静的にストレージのアクセス権を指定して、クライアントからアクセス可能なストレージのLD(ロジカルディスク)を限定する。特許文献1は、論理記憶アクセステーブルを持ち、アクセス制限と保管期間を記憶できるディスク装置に関するものであるが、扱う単位が論理ディスク(LD)単位である。
【0004】
また、共有ファイルシステムによる共有ストレージへのアクセス制御の従来例については、ストレージを複数台のクライアントから共有し、メタデータサーバが、ストレージ上にファイルシステムをもち、複数のクライアントからのアクセスを調停しながら、ストレージ上に構築したファイルシステムを複数クライアントから共有する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−129722号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来、SANを用いた高速データ入出力が可能な共有ファイルシステムを構築する場合、ストレージは、全てのクライアントからアクセス可能となっている必要がある。このとき、クライアントからは、ストレージの任意のアドレス(LBA)に対してREAD/WRITE可能である。そのため、第1に、クライアント単独でのインストール時などに、インストーラ等がノードから検出可能なストレージのパーティション情報をクリアするなどして、ディスクの内容を破壊する可能性があるという問題がある。第2に、クライアント上の管理者のオペレーションミスによりストレージのデータの内容を破壊することがあるという問題がある。
【0007】
また、各クライアントからのIO要求は、ストレージ内で最適化されてしまい、かならずしもIO命令の到着順に処理されるわけではなく、複数のクライアントから同時に同じ箇所を書き込む場合に、順序保証をメタデータサーバ側で行う必要があった。このために、iノードロックなどのメタデータサーバ側のファイルシステムに依存した、荒い排他制御の仕組みを使う必要があり、その場合に共有ファイルシステム上の同一ファイルに複数クライアントから同時にアクセスできないという問題がある。
【0008】
さらに、従来のFCスイッチのゾーニングや、LUNマスキングの手法では、全てのクライアントからストレージの任意のアドレス(ロジカルブロックアドレス:LBA)に対してアクセス可能としなければならないため、図2の形態のような共有ファイルシステムには適用できず、共有ファイルシステムにおいては、クライアントからの低レベルのストレージへのアクセス制御ができない。
【0009】
また、ファイルの整合性保持という観点において、ファイル整合性の保持を、メタデータサーバ2主体で行うと、iノードロックなど、元々ファイルシステムが持つファイルのロック機構を用いて実現する必要があり、同一ファイルを他ノードから同時にアクセスできないなど、性能面の課題があった。このとき、iノードロックなどのファイル整合の手段を用いない場合、各クライアントからの要求は、ストレージ内で最適化されてしまい、かならずしもIO命令の到着順に処理されるわけではなく、複数のクライアントから同時に同じ箇所を書き込む場合に、順序保証をメタデータサーバ側で行う必要がある。
【0010】
かかる実情に鑑み、本発明は、メタデータサーバが共有ファイルシステムを制御することを特徴とする共有ファイルシステムにおいて、対象空間、すなわち、デバイスのアドレス空間が広いストレージ装置をアクセス制御する方法を提供しようとするものである。
【課題を解決するための手段】
【0011】
本発明の所定の実施形態に係る共有ファイルシステムのストレージアクセス制御方法によれば、クライアントがストレージにアクセスする際に、メタデータサーバがクライアントに対してストレージのアクセス範囲とサイズを通知するとともに、ストレージに対しても、アクセス範囲とクライアントを識別するためのアクセス制御キーをストレージに通知する機構を有するメタデータサーバと、ストレージ内部にアクセス範囲を保持するリバーステーブルを保持しておき、アクセス制御キーと、クライアントを識別するホスト識別子の対応表から、クライアントのアクセス範囲をチェックして、クライアントのIOの実行を許可、不許可を行う機構を有したストレージ装置とにより、メタデータサーバがクライアントに許可した範囲のみに、クライアントがアクセス可能とする。また、複数のクライアントからストレージの同一アクセス空間をアクセスするときに、メタデータサーバが許可を与えた順にアクセス順序を保証する機能を提供する。
【発明の効果】
【0012】
本発明の所定の実施形態によれば、第1に、クライアントから、ストレージにアクセスするときに、許可されたブロックの範囲にのみ、実際のIO命令が実行されるため、無意識のストレージアクセスによる、データ破壊を防ぐことができるという効果を奏し得る。その理由は、クライアントが、共有ファイルシステムの使用準備段階において、メタデータサーバにより与えられたアクセス制御キーをストレージに登録するステップと、クライアントがストレージをアクセスする際に、一旦メタデータサーバが、アクセス制御データをストレージに登録するステップと、クライアントがストレージにIO命令を発行する際に、ストレージが登録されたアクセス制御データから、IOの実行の許可、不許可を判断するステップを有して、あらかじめ、メタデータサーバにより許可されたストレージの領域にのみアクセス可能とする機構をストレージが有しているからである。
【0013】
また第2に、複数のクライアントから、ストレージの同一アドレス空間を含む領域にアクセスするときに、ファイルの整合性保持を、メタデータサーバを必要としないため、複数のクライアントから同時にストレージへIO命令を発行することが出来、複数のクライアントから高速にIOの実行ができるという効果を奏し得る。その理由は、共有ファイルシステムのメタデータを管理するメタデータサーバが、IOを許可した順番、すなわちアクセス制御キーを登録した順番にストレージへのIOが実行されて、アクセス順序が保証されるため、ファイルの整合性保持を、メタデータサーバが調停する必要がないためである。
【図面の簡単な説明】
【0014】
【図1】FCスイッチのゾーニングやLUNマスキング(アクセスコントロール)などによる共有ストレージへのアクセス制御の従来例を示す図である。
【図2】本発明の一実施形態に係る共有ファイルシステムの概略構成を示すブロック図である。
【図3】本実施例におけるストレージ3の構造を示すブロック図である。
【図4】本実施例におけるアクセス制御データのデータ構造を示すブロック図である。
【図5】本実施例におけるアクセス制御データテーブル32のデータ構造を示すブロック図である。
【図6】本実施例において、アクセス制御データの開始アドレスと終了アドレスが重なっている場合におけるアクセス制御データテーブル32のデータ構造を示すブロック図である。
【図7】本実施例におけるアクセス制御キー情報テーブル33のデータ構造を示すブロック図である。
【図8】第1の実施例における共有ファイルシステムの詳細な機能構成を示すブロック図である。また、本実施例における共有ファイルシステムを使用する準備段階においての動作を示す図である。
【図9】第1の実施例における共有ファイルシステムの詳細な機能構成を示すブロック図である。また、本実施例における共有ファイルシステムによる共有ストレージへのアクセス制御の動作を示す図である。
【図10】本実施例における共有ファイルシステムの全体構成及びストレージの機能構成を示す図である。
【図11】本実施例におけるIO命令の保留キュー及び実行キューの概略構成を示す図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。
【0016】
図2は、本発明の一実施形態に係る共有ファイルシステムの全体構成を示すブロック図である。同図に示すように、共有ファイルシステムは、1台以上のメタデータサーバ2と、1台以上のクライアント1と、1台以上のストレージ3を備え、メタデータサーバ2、クライアント1、ストレージ3はそれぞれSAN4に接続され、また、メタデータサーバ2とクライアント1はそれぞれネットワーク5に接続される。
【0017】
図8又は図9は、第1の実施例における共有ファイルシステムの詳細な機能構成を示すブロック図である。これらの図に示すとおり、メタデータサーバ2は、クライアント1からIO要求63を受けると、メタデータサーバ2上の共有ファイルシステムサーバ制御部202は、メタデータ領域およびデータ領域を配置するストレージ3上を検索し、アクセス対象とするファイルのメタデータ領域のブロックアドレス、データ長などを取得し、制御情報であるメタデータ64を生成し、クライアント1は、そのメタデータ64をもとに、クライアント1のメモリ114の内容を、ディスクIO制御部113を経由して、ストレージ3にSAN4経由で直接IOすることにより、高速にデータアクセスを実現する。
【0018】
図3は、本実施例におけるストレージ3の構造を示すブロック図である。また、図4は、本実施例におけるアクセス制御データのデータ構造を示すブロック図である。
【0019】
図3に示すように、ストレージ3は、対象空間(デバイスのアドレス空間)が広いストレージ装置(好適には、数テラバイトから数ペタバイト)であり、メモリ31上にアクセス制御データテーブル32と、アクセス制御キー情報テーブル33を備える。
【0020】
アクセス制御データテーブル32は、複数のアクセス制御データを含んで構成される。個々のアクセス制御データは、アクセス制御キー、開始アドレス、終了アドレス、及び消滅時間を含むデータである。アクセス制御データテーブル32の、個々のアクセス制御データは、図4を参照すると、アクセス制御キー321、開始アドレス322、終了アドレス323、及び消滅時間324と、次のデータを指し示すためのnextポインタ325と、複数のクライアントからアクセス制御データの登録がされ、かつアクセス制御データの開始アドレスと終了アドレスが重なっている場合に次のデータを指し示すための重複nextポインタ326を含んで構成される。
【0021】
図5は、本実施例におけるアクセス制御データテーブル32のデータ構造を示すブロック図である。同図に示すように、アクセス制御データテーブル32はリバーステーブルの形式でメモリ31に保存され、READまたはWRITEのIO命令に含まれるアドレス(LBA)をキーにして、少ない検索コストで容易に該当するアクセス制御データに到達できるように構成されている。
【0022】
図6は、本実施例において、アクセス制御データの開始アドレスと終了アドレスが重なっている場合におけるアクセス制御データテーブル32のデータ構造を示すブロック図である。同図に示すように、アクセス制御データの開始アドレスと終了アドレスが重なっている場合には、重複nextポインタにアクセス制御データが格納されるデータ構造をとる。
【0023】
図3及び図4を参照すると、アクセス制御データテーブル32は、メタデータサーバ2から通知されるアクセス制御データを登録するための命令を、IO命令受信部36を介して受信した際に登録され、メタデータサーバ2から通知されるアクセス制御データを削除するための命令を、IO命令受信部36を介して受信した際に削除される。また、タイマ処理部37により、アクセス制御データテーブルに、アクセス制御データが登録されてからの時間が計測され、個々のアクセス制御データは、個々のアクセス制御データに指定されている消滅時間324が経過したら、アクセス制御データテーブル32から削除される。
【0024】
このアクセス制御データの登録および削除は、メタデータサーバ2からストレージ3に通知される。このとき、クライアント1からIO要求をメタデータサーバに要求し、メタデータサーバがストレージ3上のブロック位置およびサイズを取得する際に、アクセス制御データは登録され、クライアント1がストレージ3に対するIO命令が完了したことを、メタデータサーバ2が確認した後にアクセス制御データは削除される。さらにこの登録と削除の一連のシーケンスは、システムコールのようなアクセス区間の比較的短い区間で行われることを想定しており、ストレージ3上に一度に登録されるアクセス制御データの数は、それほど巨大にはならず、数100から数1000のエントリ数となる。
【0025】
図7は、本実施例におけるアクセス制御キー情報テーブル33のデータ構造を示すブロック図である。まず図3を参照すると、アクセス制御キー情報テーブル33は、複数のアクセス制御キーを含んで構成される。個々のアクセス制御キーは、アクセス制御キーとホスト識別子を含むデータである。アクセス制御キー情報テーブル33の、個々のアクセス制御キーデータは、図7を参照すると、アクセス制御キー331と、ホスト識別子332と、次のデータを指し示すためのnextポインタ333とを備える。
【0026】
図3及び図7を参照すると、アクセス制御キー情報テーブル33は、クライアント1から通知される、アクセス制御キー情報を登録するための命令を、IO命令受信部36を介して受信した際に、アクセス側(クライアント)のホスト識別子(IPアドレスや、WWPN)を認識して、アクセス制御キーとホスト識別子の組でアクセス制御キー情報テーブル33に登録する。また、同様にアクセス制御キー情報を削除するための命令を、IO命令受信部36を介して受信した際に、アクセス側(クライアント)のホスト識別子(IPアドレスや、WWPNなど)を認識して、登録されているアクセス情報キーテーブルから、アクセス情報キーを削除する。
【0027】
このアクセス制御キーは、ストレージ3がクライアント1からのアクセス制限を目的に利用されるものであり、クライアント1がストレージ3にアクセスする準備段階(マウントやファイルのオープンなど)で、事前にメタデータサーバ2からクライアント1が取得し、ストレージ3側に、アクセス制御キー情報を登録するための命令を発行して、ストレージ3側のアクセス情報キーテーブルに登録しておく。
【0028】
次に、クライアント1からストレージ3に対して、READまたはWRITEのIO発行が要求された場合の、ストレージ3でのアクセス制御について説明する。このとき、次の動作が行われる。
(1)IO命令受信部36でREADまたはWRITEのIO命令を受けると、IO命令受信部36は、IO命令を発行した、ホスト識別子を確認する。
(2)IO実行部34は、アクセス制御キー情報テーブル33を検索して、ホスト識別子から、アクセス制御キーを取得する。
(3)IO実行部34は、IO命令受信部36で受信したIO発行命令に含まれる開始アドレス、終了アドレスの範囲と、ホスト識別子から得られたアクセス制御キーが、アクセス制御キー情報テーブル33内のアクセス制御データに存在するかを調べる。
(4)IO実行部34はアクセス制御データテーブル32にアクセス制御データが存在する場合のみIO命令は許可されたとみなして、IO命令を処理してディスク装置35に対してのREADまたはWRITEのアクセスを行う。アクセス制御データテーブル32にアクセス制御データが存在しない場合は、IO命令は処理しない。ただしクライアントがIOエラーとなるのを防ぐためにIO命令の完了は正常終了を返す。このときREAD命令は0データを返却し、WRITEは無視する。
【0029】
これら(1)から(4)の動作により、メタデータサーバ2がIO毎に動的にストレージ3に対して、クライアント1にアクセス許可を与える。ストレージ3が許可する領域のみ、クライアント1はストレージ3に対してアクセスできるため、クライアント1の無意識なストレージ3へのアクセスによるデータ破壊を防止できる。
【0030】
さらに、既に、複数のクライアント1が発行するIO命令について、それぞれのデータの開始アドレスと終了アドレスが重なっている場合についての動作について説明する。
(5)アクセス制御データテーブル32に登録されているアクセス制御データが複数あり、かつそれらのアクセス制御データの開始アドレスと終了アドレスが重なっている場合、例えば、図6に示すように、アクセス制御データの登録順序が、以下の順で登録される。
・アクセス制御キーa、開始アドレスs1、終了アドレスs1
・アクセス制御キーb、開始アドレスs2、終了アドレスs2
・アクセス制御キーc、開始アドレスs3、終了アドレスs3
このとき、アドレスの範囲が、(s1≦s2 && s1≦s3) || (e1≧s2 && e1≧e3) のような範囲を示している場合には、(6)の処理を行う。
(6)該当するIO発行命令はストレージ内部でIO保留キュー341につながれて保留され、該当するアクセス制御データがメタデータサーバ2により削除されるまで、ストレージ3内で待ち合わせを行う。
【0031】
これら(5)、(6)の動作により、複数のクライアント1から同一または重複しているストレージ3のアドレス空間をアクセスするときに、メタデータサーバ2が許可を与えた順、すなわちメタデータサーバ2が、アクセス制御データをストレージ3に登録した順で、アクセス順序を保証する。
【0032】
この機能を、メタデータサーバ2が管理する共有ファイルシステムに適用すると、複数のクライアント1間で、同一または重複するストレージ3のアドレス空間をアクセスするときに、メタデータサーバ2が許可する順に、クライアント郡が発行したIO命令をストレージ3が処理でき、共有ファイルシステムのアクセス順序整合を行うことができる。
【0033】
次に、本発明の実施例の構成について図面を参照して詳細に説明する。
【0034】
図3を参照すると、本発明の第1の実施例は、メタデータサーバ2と、クライアント1とストレージ3と、それを接続するSAN4と、メタデータサーバ2とクライアント1を接続するネットワーク5を備えている。これらはそれぞれ次のように動作する。
【0035】
まず、メタデータサーバ2は、ストレージ3に構築した共有ファイルシステムを管理する。次に、クライアント1は、共有ファイルシステムのクライアントとして動作する。SAN4には、メタデータサーバ2とクライアント1と、ストレージ3が接続され、ストレージエリアネットワークを構成する。メタデータサーバ2とクライアント1はネットワーク5に接続され、相互に通信が必要な場合にネットワーク5を経由して、軽量のデータ(メタデータなど)のやりとりを行う。
【0036】
ここで、ストレージ3は、IO命令受信部36と、IO実行部34と、タイマ処理部37と、ディスク装置35と、メモリ31とを含んで構成される。IO命令受信部36には、除外リスト361があり、事前に登録されたホスト識別子から発行されたIOについては、無条件にIO実行部で実行できる。メモリ31上には、アクセス制御データテーブル32と、アクセス制御キー情報テーブル33が存在する。アクセス制御データテーブル32は、複数のアクセス制御データを含む。個々のアクセス制御データは、アクセス制御キー、開始アドレス、終了アドレス、及び消滅時間を備えるデータである。アクセス制御データテーブル32の、個々のアクセス制御データは、図4を参照すると、アクセス制御キー321と、開始アドレス322と、終了アドレス323と、消滅時間324と、次のデータを指し示すためのnextポインタ325と、複数のクライアントからアクセス制御データの登録がされ、かつアクセス制御データの開始アドレスと終了アドレスが重なっている場合に次のデータを指し示すための重複nextポインタ326を含んで構成される。アクセス制御キー情報テーブル33は、図3を参照すると、複数のアクセス制御キーから構成され、個々のアクセス制御キーは、アクセス制御キーと、ホスト識別子とを備えるデータである。アクセス制御キー情報テーブル33の、個々のアクセス制御キーデータは、図7を参照すると、アクセス制御キー331と、ホスト識別子332と、次のデータを指し示すためのnextポインタ333とを含んで構成される。
【0037】
ストレージ3は、それぞれ以下のように動作する。IO命令受信部36は、IO命令(READ命令、WRITE命令)の受信に加えて、アクセス制御データの登録、削除命令および、アクセス制御キーの登録、削除の命令を受信する。IO実行部34は、アクセス制御データテーブル32と、アクセス制御キー情報テーブル33を検索し、IO命令受信部36が受けた命令から、IO実行を行うかどうかを判断してディスク装置35へのアクセスを行うかどうかを決定する。また、IO保留キュー341とIO実行キュー342を持ち、実行中のIO命令は、IO実行キューにつなぎ、IO命令を保留する場合は、IO保留キュー342に一旦つなぎ、順次IO実行キューに移して、IOを実行する。アクセス制御データテーブル32には、IO命令受信部36が受けた、アクセス制御データの登録命令に従い、アクセス制御データが登録され、アクセス制御データの削除命令に従い、アクセス制御データが削除される(図6および図7)。アクセス制御キー情報テーブル33は、IO命令受信部36が受けた、アクセス制御キーの登録命令に従い、アクセス制御キー情報が登録され、アクセス制御キーの削除命令に従い、アクセス制御データが削除される(図8)。
【0038】
図8または図9を参照すると、メタデータサーバ2は、ネットワーク制御部201、共有ファイルシステムサーバ制御部202、マウント要求受信制御部2023、アクセス制御キー発行制御部2024、アクセス制御データ生成部2025、ディスクIO制御部203を備える。
【0039】
本実施例において、メタデータサーバ2は、それぞれ以下のように動作する。ネットワーク制御部201は、クライアント1、およびその他クライアントと通信するための軽量のデータ(メタデータなど)の送出および受信を行う。共有ファイルシステムサーバ制御部202は、メタデータとデータから構成される、ストレージ3上に構築された共有ファイルシステムを制御する。マウント要求受信制御部2023は、クライアント1からのマウント要求を処理する。アクセス制御キー発行制御部2024は、クライアント1がストレージ3に登録するアクセス制御キーの発行を行う。アクセス制御データ生成部2025は、クライアント110へアクセス許可するためのアクセス制御データを生成して、ストレージ3へ登録を行う。ディスクIO制御部203は、共有ファイルシステムサーバ制御部202、アクセス制御データ生成部2025が生成したデータをストレージ3に送信する。
【0040】
図8又は図9を参照すると、クライアント1は、ネットワーク制御部111、共有ファイルシステムクライアント制御部112、マウント要求発行制御部1123、アクセス制御キー登録制御部1124、ディスクIO制御部113と、メモリ114を備える。
【0041】
本実施例において、クライアント1は、それぞれ以下のように動作する。ネットワーク制御部201は、メタデータサーバ2と通信するための軽量のデータ(メタデータなど)の送出および受信を行う。共有ファイルシステムクライアント制御部112は、クライアントがIOを発行する際に、メタデータサーバ2と通信して、アクセスに必要な情報を取得する。マウント要求発行制御部1123は、メタデータサーバ2に共有ファイルシステムのマウント要求を行う。アクセス制御キー登録制御部は、メタデータサーバ2から取得したアクセス制御キーを、ストレージ3に登録する。ディスクIO制御部113は、共有ファイルシステムクライアント制御部112、アクセス制御キー登録制御部1124が生成したデータをストレージ3に送信し、メモリ114上のデータの読み書きを行う。
【0042】
次に図8及び図9を参照して、本発明の第1の実施例の動作について詳細に説明する。図8は、本実施例における共有ファイルシステムを使用する準備段階においての動作を示す図である。図9は、本実施例における共有ファイルシステムによる共有ストレージへのアクセス制御の動作を示す図である。
【0043】
まず、共有ファイルシステムを使用する準備段階においての動作を説明する。図8を参照すると、メタデータサーバ2については、アクセス制御が動作しないように、ストレージ3に対して、全てのアドレス(LBA)に対してのアクセス許可を与えておく。これは361の除外リストに、メタデータサーバ2のホスト識別子(IPアドレスやWWPNなど)を与えておく。
【0044】
次に、クライアント1が、メタデータサーバ2が管理する共有ファイルシステムをマウントする過程を説明する。図8を参照すると、クライアント1の1123マウント要求発行制御部が、メタデータサーバ2に対して、マウント要求61を発行する(S81)。次に、メタデータサーバ2は、マウント要求受信制御部2023で、要求を受け付けて、クライアント1に対して、マウント許可を与えるが、その際に、アクセス制御キー発行制御部2024で、アクセス制御キー62を生成する。ここでアクセス制御キー62は、ホスト識別子などとマップできるものではなく、マウント要求毎にユニークな値を生成する。その生成したアクセス制御キー62を、クライアント1へ送信する(S82)。次に、クライアント1は、アクセス制御キー登録制御部1124で、ストレージ3に対して、アクセス制御キーの登録命令を、ディスクIO制御部113を介して、発行する(S83)。
【0045】
ストレージ3はIO命令受信部36で、アクセス制御キーの登録命令を受信すると、アクセス制御キー情報テーブル33に、アクセス制御キーを登録する。このとき、ストレージ3は、クライアント1のホスト識別子(IPアドレスやWWPNなど)を認識し、アクセス情報キーとホスト識別子の組で、アクセス制御キー情報テーブル33に登録する。このときのアクセス制御キー情報テーブルは図7のように登録される。
【0046】
次に、クライアント1が、メタデータサーバ2が管理する共有フィルシステムをアクセスする過程を説明する。
【0047】
図9を参照すると、クライアント110が共有ファイルシステムクライアント制御部112を介して、IO要求を発行する(S91)。このときのIO要求は、システムコールのような、アクセス区間の短い、単一のSCSIコマンドで発行可能な大きさ(サイズ)である。
【0048】
次に、メタデータサーバ2は、共有ファイルシステムサーバ制御部202において、メタデータ領域およびデータ領域を配置するストレージ3上を検索し、アクセス対象とするファイルのメタデータ領域のブロックアドレス、データ長を取得する。アクセス制御データ生成部2025は、そのデータと、クライアント1のマウント要求の際に与えたアクセス制御キー62とに基づいて、アクセス制御データを生成して、ディスクIO制御部203を介して、ストレージ3にアクセス制御データの登録命令を発行する(S92)。
【0049】
ストレージ3はIO命令受信部36で、アクセス制御データの登録命令を受信すると、アクセス制御データテーブル32に、アクセス制御データを登録する。このときのアクセス制御データテーブルは図5のように、リバーステーブルの形式でメモリ31上に保存される。このとき、タイマ処理部37を起動して、アクセス制御データの消滅時間の計測を開始する。
【0050】
次に、メタデータサーバ2は、アクセス対象とするファイルのメタデータ領域のブロックアドレス、データ長を格納した、制御情報であるメタデータ64を生成し、クライアント1に送信する(S93)。
【0051】
次にクライアント1の共有ファイルシステムクライアント制御部は、メタデータ64を使用して、メモリ114にあるデータの読み書きを行うため、ディスクIO制御部113を介して、ストレージ3に対するIO命令を発行する(S94)。
【0052】
ストレージ3は、IO命令受信部36でREADまたはWRITEのIO命令を受けると、以下のステップ(1)〜(4)を実行する。
(1)IO命令受信部36は、IO命令を発行した、ホスト識別子を確認する。このとき除外リスト361に含まれるホスト識別子をもつクライアントから発行されたIO命令については、IO実行部34で実行される。
(2)IO実行部34は、アクセス制御キー情報テーブル33を検索して、ホスト識別子から、アクセス制御キーを取得する。
(3)IO実行部34は、IO命令受信部36で受信したIO発行命令に含まれる開始アドレス、終了アドレスの範囲と、ホスト識別子から得られたアクセス制御キーが、アクセス制御キー情報テーブル33内のアクセス制御データに存在するかを調べる。
(4)IO実行部34はアクセス制御データテーブル32にアクセス制御データが存在する場合のみIO命令は許可されたとみなして、IO命令を処理してディスク装置35に対してのREADまたはWRITEのアクセスを行う。アクセス制御データテーブル32にアクセス制御データが存在しない場合は、IO命令は処理しない。ただしクライアントがIOエラーとなるのを防ぐためにIO命令の完了は正常終了を返す。このときREAD命令は0データを返却し、WRITE命令は無視する。実行されるIOは、IO実行キュー342に繋がれて実行される。
【0053】
次に、クライアント1の共有ファイルシステムクライアント制御部112は、IO命令完了をメタデータサーバ2に通知する(S95)。
【0054】
メタデータサーバ2の共有ファイルシステムサーバ制御部202は、クライアント1のストレージ3に対するIO命令完了65を受け取ると、ストレージ3に該当するアクセス制御データ68の削除命令を発行する(S96)。ストレージ3は、IO命令受信部36でアクセス制御データ68の削除命令を受信すると、アクセス制御データテーブル32から、該当するアクセス制御データを削除する。
【0055】
次にメタデータサーバ2の共有ファイルシステムサーバ制御部202から、IO完了通知がクライアント1へ通知されて一連のIOが完了する(S97)。
【0056】
なお、メタデータサーバ2が障害になっても問題が発生しないよう、ストレージ3は消滅時間が経過したアクセス制御データについては削除する。これはタイマ処理部が消滅時間を経過したアクセス制御データを検出して、アクセス制御データテーブル32から削除する。
【0057】
次に、本発明の第2の実施例について説明する。図10は、本実施例における共有ファイルシステムの全体構成及びストレージの機能構成を示す図である。図11は、本実施例におけるIO命令の保留キュー及び実行キューの概略構成を示す図である。図10を参照すると、事前に、メタデータサーバ2が生成した、クライアント110のアクセス制御キーの内容をa、クライアント120のアクセス制御キーの内容をb、クライアント130のcのアクセス制御とし、かつそれぞれのクライアントが、ストレージ3に対してアクセス制御キーを登録しているとする。なお、クライアント110、120、130は、第一の実施例におけるクライアント1と同じ構成を備えている。
【0058】
このとき、クライアント110、クライアント120、クライアント130が、共有ファイルシステム上の同一ファイルの領域を含む部分を同時にアクセスする場合、クライアント110のストレージ3のアクセス範囲がs1〜e1、クライアント120のストレージ3のアクセス範囲がs2〜e2、クライアント130のストレージ3のアクセス範囲がs3〜e3とすると、メタデータサーバ2により、クライアント110、クライアント120、クライアント130のアクセス制御データがそれぞれ、ストレージ3に登録される。
【0059】
このときのメモリ31上のアクセス制御データテーブル32は、図6のように、アクセス制御キーa、開始アドレスs1〜e1をもつアクセス制御データが、最初のエントリとして登録され、重複nextポインタに、アクセス制御キーb、開始アドレスs2〜e2をもつアクセス制御データが接続され、その重複nextポインタにアクセス制御キーc、開始アドレスs3〜e3をもつアクセスデータが登録される。
【0060】
図10を参照すると、クライアント110、クライアント120、クライアント130のIO命令がそれぞれ同時にストレージ3に発行された場合、ストレージ3のIOは、以下のように処理される。
(1)IO命令受信部36は、IO命令を発行した、ホスト識別子を確認する。
(2)IO実行部34は、アクセス制御キー情報テーブル33を検索して、ホスト識別子から、アクセス制御キーを取得する。
(3)IO実行部34は、IO命令受信部36で受信したIO発行命令に含まれる開始アドレス、終了アドレスの範囲と、ホスト識別子から得られたアクセス制御キーが、アクセス制御キー情報テーブル33内のアクセス制御データに存在するかを調べる。
(4)クライアント110からのIO命令の場合は、IO実行部は、IO実行キューに入れてIOを実行する(図11のIO実行キュー)。
(5)クライアント120からのIO命令の場合は、IO実行部は、IO保留キューにIO命令を入れて、IO実行を保留する(図11のIO保留キュー)。
(6)クライアント130からのIO命令の場合は、IO実行部は、IO保留キューにIO命令を入れて、IO実行を保留する(図11のIO保留キュー)。
【0061】
このとき、保留されたクライアント120からのIO命令は、メタデータサーバ2がクライアント110のアクセス制御データを削除すると、IO保留キューから、IO実行キューにIO命令が移され、IO実行部34がディスク装置35へのIOを開始する。また、保留されたクライアント130からのIO命令は、メタデータサーバ2がクライアント120のアクセス制御データを削除すると、IO保留キューから、IO実行キューに命令が移され、IO実行部34がディスク装置35へのIOを開始する。
【0062】
以上のとおり、本発明によれば、共有ファイルシステムにおいて、対象空間が広いストレージ装置をアクセス制御する方法を提供できる。いくつかの実施形態において、メタデータサーバは、クライアントがストレージにアクセスする際に、クライアントに対してストレージのアクセス範囲とサイズを通知するとともに、ストレージに対しても、アクセス範囲とクライアントを識別するためのアクセス制御キーを通知する機構を有する。また、ストレージは、ストレージ内部にアクセス範囲を保持するリバーステーブルを保持しておき、アクセス制御キーと、クライアントを識別するホスト識別子の対応表から、クライアントのアクセス範囲をチェックして、クライアントのIOの実行を許可、不許可を行う機構を有する。さらに、ストレージは、複数のクライアントからストレージの同一アクセス空間をアクセスするときに、メタデータサーバが許可を与えた順にアクセス順序を保証する機能を有する。
【0063】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【0064】
また、本発明においては、2台以上のクライアントから構成される共有ファイルシステムについて、適用可能である。クライアント110が、メタデータサーバ2が管理する共有ファイルシステムをマウントする際に、メタデータサーバ2が、アクセス制御データを生成することとしているが、クライアントがファイルのオープンなどのタイミングで、メタデータサーバ2がアクセス制御キーを生成することとしてもよい。
【0065】
このとき、クライアントが発行する、IO発行命令の一部に、アクセス制御キーを埋め込むことにより、ストレージ3のIO発行命令受信部が、IO発行命令に含まれるアクセス制御キーを直接判断することも可能である。この実施例の場合は、クライアント上で動作する、プロセス間のアクセス制御や、プロセス毎のIOの順序保証制御を行うことができる。
【0066】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限
られない。
【0067】
(付記1)クライアンとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおいて、前記メタデータサーバは、前記クライアントが前記ストレージにアクセスする際に、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知する共有ファイルシステムサーバ制御部を備え、前記ストレージは、前記アクセス制御データを保持するアクセス制御データテーブルと、クライアントからのアクセスの際、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可するIO実行部と、を備える、ことを特徴とする共有ファイルシステム。
【0068】
(付記2)前記ストレージは、アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、前記IO実行部は、クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得し、当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可する、ことを特徴とする付記1に記載の共有ファイルシステム。
【0069】
(付記3)前記IO実行部は、複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記メタデータサーバが許可を与えた順にアクセス順序を保証することを特徴とする付記1又は2に記載の共有ファイルシステム。
【0070】
(付記4)クライアンとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおける制御方法であって、前記クライアントが前記ストレージにアクセスする際に、前記メタデータサーバが、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知するステップと、前記ストレージが、前記メタデータサーバから通知されたアクセス制御データをアクセス制御データテーブルに保持するステップと、クライアントからのアクセスの際、前記ストレージが、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、アクセス制御データが存在する場合に、前記ストレージが、前記クライアントからのアクセスを許可するステップと、を備える制御方法。
【0071】
(付記5)前記ストレージは、アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、前記判断するステップは、クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得するステップと、当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、を含むことを特徴とする付記4に記載の制御方法。
【0072】
(付記6)前記判断するステップは、複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記メタデータサーバが許可を与えた順にアクセス順序を保証することを特徴とする付記4又は5に記載の制御方法。
【符号の説明】
【0073】
1,110,120,130 クライアント、111 ネットワーク制御部、112 共有ファイルシステムクライアント制御部、1123 マウント要求発行制御部、1124 アクセス制御キー登録制御部、113 ディスクIO制御部、114 メモリ、2 メタデータサーバ、201 ネットワーク制御部、202 共有ファイルシステムサーバ制御部、2023 マウント要求受信制御部、2024 アクセス制御キー発行制御部、2025 アクセス制御データ生成部、203 ディスクIO制御部、3 ストレージ、31 メモリ、32 アクセス制御データテーブル、33 アクセス制御キー情報テーブル、34 IO実行部、341 IO保留キュー、342 IO実行キュー、35 ディスク装置、」36 IO命令受信部、361 除外リスト、37 タイマ処理部、4 SAN(ストレージ・エリア・ネットワーク)、5 ネットワーク

【特許請求の範囲】
【請求項1】
クライアンとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおいて、
前記メタデータサーバは、前記クライアントが前記ストレージにアクセスする際に、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知する共有ファイルシステムサーバ制御部を備え、
前記ストレージは、
前記アクセス制御データを保持するアクセス制御データテーブルと、
クライアントからのアクセスの際、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可するIO実行部と、
を備える、
ことを特徴とする共有ファイルシステム。
【請求項2】
前記ストレージは、
アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、
前記IO実行部は、
クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得し、
当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断して、アクセス制御データが存在する場合に、前記クライアントからのアクセスを許可する、
ことを特徴とする請求項1に記載の共有ファイルシステム。
【請求項3】
前記IO実行部は、複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記メタデータサーバが許可を与えた順にアクセス順序を保証することを特徴とする請求項1又は2に記載の共有ファイルシステム。
【請求項4】
クライアンとメタデータサーバとストレージとがそれぞれネットワークを介して相互に接続される共有ファイルシステムにおける制御方法であって、
前記クライアントが前記ストレージにアクセスする際に、前記メタデータサーバが、前記クライアントに対して、前記ストレージのアクセス範囲を通知するとともに、前記ストレージに対して、前記アクセス範囲とクライアントを識別するためのアクセス制御キーとに基づいて生成されたアクセス制御データを通知するステップと、
前記ストレージが、前記メタデータサーバから通知されたアクセス制御データをアクセス制御データテーブルに保持するステップと、
クライアントからのアクセスの際、前記ストレージが、当該クライアント及び当該クライアントからのアクセス範囲が前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、
アクセス制御データが存在する場合に、前記ストレージが、前記クライアントからのアクセスを許可するステップと、
を備える制御方法。
【請求項5】
前記ストレージは、アクセス制御キーと、クライアントを識別するホスト識別子とを、対応付けて保持するアクセス制御キー情報テーブルを備え、
前記判断するステップは、
クライアントからのアクセスの際、前記アクセス制御キー情報テーブルを参照して、前記クライアントのホスト識別子からアクセス制御キーを取得するステップと、
当該取得されたアクセス制御キーと、前記クライアントのアクセス範囲とが、前記アクセス制御データテーブル内のアクセス制御データに存在するか否かを判断するステップと、
を含むことを特徴とする請求項4に記載の制御方法。
【請求項6】
前記判断するステップは、複数のクライアントからストレージの同一アクセス範囲がアクセスされるとき、前記メタデータサーバが許可を与えた順にアクセス順序を保証することを特徴とする請求項4又は5に記載の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate