まず、本発明の概要について説明する。
本発明の実施の形態の計算機システムは、GNSで、仮想ファイル名前空間に新たなファイルサーバ(ファイルシステム)を接続するときに、接続元のツリーに継承ACLが設定されている場合は、ファイルサーバを仮想ファイル名前空間へ接続する時に継承ACLを設定する。また、逆に、ファイルサーバを仮想ファイル名前空間から切断するときに、接続元のツリーに設定されている継承ACLを削除する。これら二つの処理をGNSの構成定義時に実行することによって、継承ACLを正しく設定可能とする。
また、本発明の別の実施の形態の計算機システムは、GNSを提供する中間装置がファイルアクセス要求を受け取ったときに、継承ACLとファイルに設定されているACLとを合成し、ファイルへのアクセス可否を判定する。こうすることによって、アクセス可否の判定時のみに一時的に継承ACLが作成されるため、継承ACLを格納しておくディスク資源の消費を押さえることができる。また、ファイルサーバの接続時の処理が軽くなり、迅速にファイルサーバを接続することができる。
また、本発明の別の実施の形態の計算機システムは、GNSを提供する中間装置がファイルアクセス要求を受け取った時に、継承ACLに基づいてファイルのアクセス可否を判定し、その判定でアクセス可否が決定しない場合は、ファイルに設定されているACLでアクセスの可否を判定する。こうすることによって、継承ACLのみでアクセス可否を決定することができれば、高速にアクセス可否を判定できる。
本発明の実施形態について図面を参照して詳細に説明する。
<第1実施形態>
図1は、本発明の第1の実施の形態におけるクライアント・サーバ型の計算機システム(ネットワークファイルシステム)のシステム構成図である。
図1に示すように、第1の実施の形態のクライアント・サーバ型の計算機システムは、少なくとも1台のクライアント計算機100、少なくとも1台の中間装置200、及び、少なくとも1台の末端装置300を備える。さらに、計算機システムは、管理装置5000を備える。
なお、計算機システムが、末端装置300を1台も備えなくてもよい。クライアント100、中間装置200、管理装置5000及び末端装置300は、それぞれコンピュータによって構成され、LAN又はインターネット等のネットワーク101に接続され、相互にネットワーク101を介して通信可能となっている。
末端装置300は、クライアント100にファイルサービスを提供するファイルサーバである。
中間装置200は、ファイルサービスを利用するクライアント100と、ファイルサービスを提供する末端装置300との間に配置される。中間装置200は、クライアント100から末端装置300への要求と、末端装置300からクライアント100への応答とを中継するスイッチである。また、中間装置200は、クライアント100にファイルサービスを提供するファイルサーバである。つまり、中間装置200は末端装置としての機能も有する。
管理装置5000は、GNSの管理者がGNSの構成を定義するために利用する管理用の端末装置である。管理装置5000は、図1に示すように独立に存在してもよい。また、クライアント100、中間装置200又は末端装置300において、管理プログラム5003を動作させることによって、管理装置5000の機能を提供してもよい。
クライアント100から中間装置200及び末端装置300への要求は、中間装置200及び末端装置300へ何らかの処理を要求するメッセージ信号であり、中間装置200及び末端装置300からクライアント100への応答は、中間装置200及び末端装置300が要求に対して応答するメッセージ信号である。さらに、管理装置5000から中間装置200への要求は、何らかの処理を要求するメッセージ信号である。
なお、中間装置200は、論理的に、クライアント100と末端装置300の間に位置すればよい。すなわち、図1では、クライアント100、中間装置200及び末端装置300が同一のネットワーク101に接続されているが、論理的には、中間装置200は各クライアント100と各末端装置300との間に配置されており、クライアント100と末端装置300との通信を中継する。
図2は、本発明の第1の実施の形態における中間装置200の構成を示すブロック図である。
図2に示すように、第1の実施の形態の中間装置200は、少なくとも一つのプロセッサ201と、メモリ202と、メモリ−入出力バス204と、入出力コントローラ205と、記憶装置206とを備える。
メモリ202は、構成情報管理プログラム400と、スイッチプログラム600と、ファイルシステムプログラム203と、継承ACL設定/削除プログラム5100とを格納する。プロセッサ201が、これらのメモリ202に格納されたプログラムを実行することによって、中間装置200の各機能が実現される。
継承ACL設定/削除プログラム5100は、継承ACL情報5300を含む。なお、継承ACL情報5300は、継承ACL設定/削除プログラム5100中に図示したが、継承ACL設定/削除プログラム5100とは別に構成されていてもよい。
メモリ−入出力バス204は、プロセッサ201、メモリ202及び入出力コントローラ205を接続し、これらの構成間でデータを転送する。入出力コントローラ205は、ネットワーク101を介して、クライアント100及び末端装置300等と接続され、これらの装置との間でデータを入出力する。また、入出力コントローラ205は、記憶装置206と接続され、記憶装置206との間でデータを入出力する。
記憶装置206は、ファイル等のデータを管理する少なくとも一つのファイルシステム207を格納する。このファイルシステム207は、ファイルシステムプログラム203によって提供される。また、記憶装置206は、既存ACL情報(図15参照)を格納する。
図3は、本発明の第1の実施の形態における末端装置300の構成を示すブロック図である。
図3に示すように、第1の実施の形態の末端装置300は、少なくとも一つのプロセッサ301と、メモリ302と、メモリ−入出力バス304と、入出力コントローラ305と、記憶装置306とを備える。
メモリ302は、ファイルシステムプログラム203を格納する。なお、図3には示していないが、メモリ302は、さらに構成情報管理プログラム400を格納してもよい。
メモリ−入出力バス304は、プロセッサ301、メモリ302及び入出力コントローラ305を接続し、これらの構成間でデータを転送する。入出力コントローラ305は、ネットワーク101を介して、クライアント100及び中間装置200等と接続され、これらの装置との間でデータを入出力する。また、入出力コントローラ305は、記憶装置306と接続され、記憶装置306との間でデータを入出力する。
記憶装置306は、ファイル等のデータを管理する少なくとも一つのファイルシステム307を格納する。このファイルシステム307は、ファイルシステムプログラム203によって提供される。
図4は、本発明の第1の実施の形態の中間装置200における構成情報管理プログラム(サーバ)400sの構成を示す機能ブロック図であり、図5は、中間装置200における構成情報管理プログラム(クライアント)400cの構成を示す機能ブロック図である。
複数の中間装置200の1台(代表ノード)では、構成情報管理プログラム(サーバ)400s(図4)が動作し、他の中間装置200では、構成情報管理プログラム(クライアント)400c(図5)が動作している。
図4に示すように、第1の実施の形態の構成情報管理プログラム(サーバ)400sは、GNS構成情報管理サーバ部401sと、中間装置情報管理サーバ部403と、構成情報通信部404とを備える。また、構成情報管理プログラム(サーバ)400sが動作する中間装置200は、共有ID空き管理リスト402と、中間装置構成情報リスト405と、GNS構成情報テーブル1200sとを格納する。
GNS構成情報管理サーバ部401sは、中間装置200のファイルシステム207によって提供されるディレクトリ構造を、GNS空間にマウントし、さらにGNSツリー構造を管理する。共有ID空き管理リスト402は、使用可能な共有IDをプールするリストである。GNS構成情報テーブル1200sは、GNSの構成の情報を保持するテーブルで、その詳細は、図14を用いて後述する。
中間装置情報管理サーバ部403は、複数の中間装置200を統合的に処理するための処理を行う。中間装置構成情報リスト405は、複数の中間装置200の構成の情報を保持する。
構成情報通信部404は、ネットワーク101との間のプロトコルを制御する。
図5に示すように、第1の実施の形態の構成情報管理プログラム(クライアント)400cは、GNS構成情報管理クライアント部401cと、構成情報通信部404とを備える。また、構成情報管理プログラム(クライアント)400cが動作する中間装置200は、GNS構成情報テーブルキャッシュ1200cを格納する。
GNS構成情報管理クライアント部401cは、中間装置200のファイルシステム207によって提供されるディレクトリ構造を、GNS空間にマウントし、さらにGNSツリー構造を管理する。また、GNS構成情報管理クライアント部401cは、GNS構成情報テーブルキャッシュ1200cに保持される情報を、構成情報管理プログラム(サーバ)400sのGNS構成情報テーブル1200sと同期する。
GNS構成情報テーブルキャッシュ1200cは、GNS構成情報テーブル1200sと同じ情報を格納する。すなわち、全ての中間装置200が、GNS構成情報テーブルに同じ情報を保持している。構成情報通信部404は、ネットワーク101との間のプロトコルを制御する。
図6は、本発明の第1の実施の形態の中間装置200におけるスイッチプログラム600の構成を示す機能ブロック図である。
図6に示すように、第1の実施の形態のスイッチプログラム600は、クライアント通信部606と、中間・末端装置通信部605と、ファイルアクセス管理部700(図7参照)と、オブジェクトID変換処理部604と、擬似ファイルシステム601とを備える。
クライアント通信部606は、クライアント100からの要求を受信し、受信した要求をファイルアクセス管理部700に出力する。また、クライアント通信部606は、ファイルアクセス管理部700から出力されたデータを、クライアント100への応答として送信する。
中間・末端装置通信部605は、ファイルアクセス管理部700から出力されたデータ及びオブジェクトID変換処理部604から出力されたデータを、中間装置200又は末端装置300への要求として送信する。また、中間・末端装置通信部605は、中間装置200及び末端装置300からの応答を受信し、ファイルアクセス管理部700又はオブジェクトID変換処理部604へ出力する。
ファイルアクセス管理部700は、クライアント通信部606から出力されたデータを解析し、クライアント100からの要求の処理方法を決定し、決定された処理方法を中間・末端装置通信部605又はオブジェクトID変換処理部604に出力する。また、ファイルアクセス管理部700は、クライアント100からの要求が自中間装置200に備わるファイルシステム207(ローカルファイルシステム)に対する要求である場合、ファイルシステムプログラム203を通じて、記憶装置206に格納されたデータを取得し、取得したデータをクライアント通信部606へ出力する。さらに、ファイルアクセス管理部700は、継承ACL設定/削除プログラム5100から、中間装置200及び末端装置300が管理するファイルシステムオブジェクトのACLの設定及び削除の要求を受け取る。そして、ACLの設定又は削除の要求を、中間・末端装置通信部605を通して、処理の対象となる中間装置200又は末端装置300へ送信する。
オブジェクトID変換処理部604は、クライアント100から受信した要求メッセージに含まれるオブジェクトIDを末端装置300が認識できる形式に変換する。また、オブジェクトID変換処理部604は、末端装置300から受信した応答メッセージに含まれるオブジェクトIDをクライアント100が認識できる形式に変換する。
ここで、オブジェクトIDは、ファイルシステムで管理されるファイルに付される識別子であり、例えば、NFSにおいてはファイルハンドルである。
擬似ファイルシステム601は、中間装置200及び末端装置300のファイルシステム207を、擬似ファイルシステム601のルートディレクトリより下位のディレクトリにマッピングすることによって作成される、仮想的なファイルシステムである。
図7は、本発明の第1の実施の形態におけるファイルアクセス管理部700の構成を示す機能ブロック図である。
図7に示すように、ファイルアクセス管理部700は、要求データ処理部701と、要求データ解析部702と、応答データ出力部703とを備える。また、ファイルアクセス管理部700が動作する中間装置200は、スイッチ情報管理テーブル800(図10参照)と、サーバ情報管理テーブル900(図11参照)と、アルゴリズム情報管理テーブル1000(図12参照)と、接続ポイント管理テーブル1100(図13参照)とを備える。
なお、スイッチ情報管理テーブル800、サーバ情報管理テーブル900、アルゴリズム情報管理テーブル1000、及び接続ポイント管理テーブル1100は、ファイルアクセス管理部700中に図示したが、ファイルアクセス管理部700とは別に構成されていてもよい。
要求データ解析部702は、クライアント通信部606から出力された要求データを解析し、要求されたデータに対応するファイルのオブジェクトIDを取得する。さらに、要求データ解析部702は、取得したオブジェクトIDから共有IDを取得する。
要求データ処理部701は、要求データ解析部702が取得した共有IDに基づいて、スイッチ情報管理テーブル800と、サーバ情報管理テーブル900と、アルゴリズム情報管理テーブル1000と、接続ポイント管理テーブル1100とを参照し、要求データを処理する。
応答データ出力部703は、要求データ処理部701から出力されたデータを、クライアント100が理解可能な形式に変換して、変換されたデータをクライアント通信部606へ出力する。
図8は、本発明の第1の実施の形態における管理装置5000の構成を示すブロック図である。
図8に示すように、管理装置5000は、本実施形態の末端装置は、少なくとも一つのプロセッサ501と、メモリ502と、メモリ−入出力バス504と、入出力コントローラ505と、管理者ユーザインターフェース506とを備える。
メモリ502は、管理プログラム5003を格納する。プロセッサ501が、これらのメモリ502に格納されたプログラムを実行することによって、管理装置5000の各機能が実現される。
メモリ−入出力バス504は、プロセッサ501、メモリ502及び入出力コントローラ505を接続し、これらの構成間でデータを転送する。入出力コントローラ505は、ネットワーク101を介して、クライアント100、中間装置200及び末端装置300と接続され、これらの装置との間でデータを入出力する。
なお、管理プログラム5003は他の装置(例えば、中間装置200)にあってもよい。この場合は、他の装置が管理装置5000として動作する。
図9は、本発明の第1の実施の形態における継承ACL設定/削除プログラム5100の構成を示す機能ブロック図である。
図9に示すように、継承ACL設定/削除プログラム5100は、ACL設定部5101と、ファイル検索部5102と、ACL取得部5103と、継承ACL設定/削除処理部5104と、継承ACL情報5300とを含む。なお、継承ACL情報5300は、継承ACL設定/削除プログラム5100中に図示したが、継承ACL設定/削除プログラム5100とは別に構成されていてもよい。
ACL設定部5101は、ファイルシステムプログラム203又はスイッチプログラム600へ、承継ACL設定/削除要求を送信する。ファイル検索部5102は、仮想名前空間を構成する際に、継承ACLを付与又は削除する対象のファイルを検索する。
ACL取得部5103は、ファイルシステムオブジェクトに付与されたACLを取得する。また、ACL取得部5103は、スイッチプログラム600又はファイルシステムプログラム203へ、ACLを取得するための要求を送信する。
継承ACL設定/削除処理部5104は、仮想名前空間の構成変更時に、構成情報管理プログラム400から、仮想名前空間の構成変更要求を受け取り、継承ACLを設定又は削除する。継承ACL情報5300は、ファイルシステムオブジェクトに設定される継承ACL情報を保持する。なお、本実施の形態では、継承ACL情報はテーブル形式で保持される。
図10は、本発明の第1の実施の形態におけるスイッチ情報管理テーブル800の構成を示す図である。
スイッチ情報管理テーブル800は、共有ID801と、サーバID802と、アルゴリズム情報ID803との組によって構成されたエントリを格納するテーブルである。
共有ID801は、ファイルサービスの公開単位を特定する識別子であり、共有毎に一意に設定される。サーバID802は、サーバを識別するための識別子である。アルゴリズム情報ID803は、オブジェクトIDを変換するアルゴリズムを識別する識別子である。
スイッチ情報管理テーブル800を参照することによって、サーバ情報及びアルゴリズム情報を特定するためのIDを取得することが可能になる。スイッチ情報管理テーブル800では、同一の共有IDに対して複数エントリを持つことが可能である。
また、一つのエントリに共有ID、サーバID、アルゴリズム情報IDが一つずつ記録されるが、一つのエントリに一つの共有IDと2組以上のサーバID及びアルゴリズム情報IDの組が記録されてもよい。また、一組以上のサーバID及びアルゴリズム情報IDがリスト形式で格納され、各組が共有IDに関連付けられてもよい。
図11は、本発明の第1の実施の形態におけるサーバ情報管理テーブル900の構成を示す図である。
サーバ情報管理テーブル900は、サーバID901と、サーバ情報902との組によって構成されたエントリを格納するテーブルである。サーバ情報902は、例えば、IPアドレスやソケット構造体等である。スイッチ情報管理テーブル800と、サーバ情報管理テーブル900とを参照することによって、クライアント100からの要求の処理先を特定することが可能になる。
図12は、本発明の第1の実施の形態におけるアルゴリズム情報管理テーブル1000の構成を示す図である。
アルゴリズム情報管理テーブル1000は、アルゴリズム情報ID1001と、アルゴリズム情報1002との組によって構成されたエントリを格納するテーブルである。アルゴリズム情報1002は、オブジェクトIDを変換する際に必要な情報であり、例えば、オブジェクトIDの変換規則、オブジェクトIDの変換規則の格納場所を示すポインタである。
スイッチ情報管理テーブル800と、アルゴリズム情報管理テーブル1000とを参照することによって、オブジェクトIDの変換方法を特定することが可能になる。
なお、第1の実施の形態では、スイッチ情報管理テーブル800と、サーバ情報管理テーブル900と、アルゴリズム情報管理テーブル1000とは別々のテーブルで構成されているが、スイッチ情報管理テーブル800にサーバ情報902及びアルゴリズム情報1002を含めてもよい。
図13は、本発明の第1の実施の形態における接続ポイント管理テーブル1100の構成を示す図である。
接続ポイント管理テーブル1100は、接続元オブジェクトID1101と、接続先共有ID1102と、接続先オブジェクトID1103との組によって構成されたエントリを格納するテーブルである。
接続ポイント管理テーブル1100を参照することによって、中間装置200は、ある共有から別の共有へ跨るアクセスの場合も、クライアント100が単一の共有へのアクセス手順のみでアクセスを可能とするように、名前空間を仮想化できる。
なお、接続ポイント管理テーブル1100に格納される接続元オブジェクトID1101及び接続先オブジェクトID1103は、クライアント100と中間装置200でやり取りされるものでもよい。また、それとは異なっていてもオブジェクトを特定できる識別子であればよい。
図14は、本発明の第1の実施の形態におけるGNS構成情報テーブル1200sの構成を示す図である。
GNS構成情報テーブル1200sは、共有ID1201と、GNSパス名1202と、サーバ名1203と、共有パス名1204と、共有設定情報1205と、アルゴリズム情報ID1206との組によって構成されたエントリを格納するテーブルである。
共有ID1201は、ファイルサービスの公開単位を特定するIDである。GNSパス名1202は、その共有IDに対応する共有を単一名前空間に統合するパスである。サーバ名1203は、その共有IDに対応する共有を保有するサーバ名である。共有パス名1204は、その共有IDに対応する共有のサーバ上でのパス名である。
共有設定情報1205は、その共有IDに対応する共有のトップディレクトリに設定する情報であり、具体的には読み込み専用を示す情報や、アクセス可能なホストの制限に関する情報等である。アルゴリズム情報ID1206は、その共有IDに対応する共有のオブジェクトIDの変換方法を示す識別子である。
なお、GNS構成情報テーブル1200sは、一つの共有IDに対して複数エントリを持っていてもよい。
なお、前述したように、GNS構成情報テーブルキャッシュ1200cは、GNS構成情報テーブル1200sと同じ構造を有し、同じ情報を格納する。
次に、アクセス制御リスト(ACL:Access Control List)について説明する。ACLは、継承ACL情報5300や既存ACL情報5200と同じ表形式の情報であり、継承ACL情報5300と既存ACL情報5200とはACLの一つである。このACLを構成する一つのエントリがアクセス制御エントリ(ACE:Access Control Entry)である。
図15は、本発明の第1の実施の形態における継承ACL情報5300の構成を示す図である。
継承ACL情報5300は、アカウント5301と、マスク5302と、拒否/許可5303と、継承先5304との組によって構成されたエントリを格納するテーブルである。
アカウント5301は、このエントリがアクセス制御の対象とするアカウントが記録される。例えば、アカウントはユーザ識別子である。
マスク5302は、アクセス制御対象操作を定めるフラグであり、例えば、「読み込み操作」や「書き込み操作」を示すフラグである。
拒否/許可5303は、このエントリが許可を定めるエントリか、又は拒否を定めるエントリかを記録するフラグである。
継承先5304は、このエントリが継承されるべきファイルシステムオブジェクトの種類を記録するフラグである。例えば、ファイルのみに継承される場合は、継承先5304にファイルを示すフラグが設定される。一方、いかなるファイルシステムオブジェクトにも継承されない場合は、このフラグは設定されない(値が”0”となる)。
次に、既存ACL情報5200の構成について説明する、既存ACL情報5200は、 図15に示した継承ACL情報5300と同じフィールドによって構成されたエントリを格納する。各フィールドは、継承ACL情報5300と同じ意味である。
図16A及び図16Bは、本発明の第1の実施の形態における、クライアント100、中間装置200、末端装置300の間でやり取りされるオブジェクトIDのフォーマットを示す図である。
クライアント100と中間装置200との間でやり取りされるオブジェクトIDのフォーマットは、共有IDフォーマットでオブジェクトIDを生成できる装置のオブジェクトと、共有IDフォーマットでオブジェクトIDを生成できない装置のオブジェクトで異なる。
共有IDフォーマットでオブジェクトを生成できる装置は、中間装置200と一部の末端装置300である。この場合、クライアント100と中間装置200との間、中間装置200同士の間、及び中間装置200と末端装置300との間でやり取りされるオブジェクトIDフォーマットは不変である(変換されない)。
共有IDフォーマットでオブジェクトIDを生成できる装置のオブジェクトIDのフォーマットは、図16Aに示すように、オブジェクトID形式1301と、共有ID1302と、ファイルID1303とを含む。
オブジェクトID形式フィールド1301には、オブジェクトIDのファーマットを示すフィールドで、共有IDフォーマットであることを示す値が記録される。共有IDフィールド1302には、共有を特定(共有は複数ある場合もある)するための共有IDが記録される。ファイルIDフィールド1303には、そのオブジェクトを保有する装置がオブジェクトを特定するためのIDが記録される。
一方、共有IDフォーマットでオブジェクトIDを生成できない装置は、一部の末端装置300である。例えば、オブジェクトIDのビット数が異なる末端装置300(ファイルシステム307)は、共有IDフォーマットでオブジェクトIDを生成できない。
この場合、クライアント100と中間装置200との間でやり取りされるオブジェクトIDフォーマットと、中間装置200と末端装置300との間でやり取りされるオブジェクトIDフォーマットとは異なる。クライアント100と中間装置200との間でやり取りされるオブジェクトIDのフォーマットは、図16Bに示すように、オブジェクトID形式フィールド1301、共有IDフィールド1302、変換後の装置オブジェクトIDフィールド1304を含む。オブジェクトID形式フィールド1301、共有IDフィールド1302は、先に図16Aで説明したとおりである。
変換後の装置オブジェクトIDフィールド1304には、中間装置200と末端装置300との間でやり取りされるオブジェクトIDであるオリジナルの装置オブジェクトID1305を変換した値が記録される。オブジェクトIDフォーマットが可変で、その長さに余裕がある場合は、オリジナルの装置オブジェクトID1305をそのまま記録してもよい。中間装置200と末端装置300との間でやり取りされるオブジェクトIDから、クライアント100と中間装置200とのでやり取りされるオブジェクトIDへの変換を正変換といい、クライアント100と中間装置200との間でやり取りされるオブジェクトIDから、中間装置200と末端装置300との間でやり取りされるオブジェクトIDへの変換を逆変換といい。この変換はアルゴリズム情報で特定された規則に基づいて行われる。
次に、第1の実施の形態の中間装置200の動作について説明する。第1の実施の形態の中間装置200は、複数の共有を単一の共有に仮想化したファイル共有サービスをクライアント100に提供する。なお、以下に説明する処理は、プロセッサ201がメモリ202に格納されたプログラムを実行することによって、処理が行われる。
図17は、本発明の第1の実施の形態における、中間装置200による共有の名前空間を仮想化する処理を示すフローチャートである。
クライアント通信部606は、クライアント100よりファイルアクセス要求を受信する。このファイルアクセス要求は、例えば、NFSプロトコルのリモートプロシージャーコール(RPC)である。ファイルアクセス管理部700は受信した要求からオブジェクトIDを抽出する。そして、抽出されたオブジェクトIDの形式が共有ID形式か否かを判定する(S101)。
受信した要求から抽出されたオブジェクトIDが共有ID形式でなかった場合は、従来のファイルサービス処理を行い(S102)、処理を終了する。
受信した要求から抽出されたオブジェクトIDが共有ID形式であった場合は、受信した要求の中のオブジェクトIDの共有IDと一致する共有IDを含むエントリがスイッチ情報管理テーブル800にあるか否かを判定する。スイッチ情報管理テーブル800中に、条件に合致する(同じ共有IDを含む)エントリは、前述したように複数存在する場合がある。
一致するエントリがない場合は(S105で”NO”)、この要求は、この要求を受信した中間装置200が処理を行うべきであると判断し、GNSローカル処理を行う(S300)。なお、GNSローカル処理(S300)は、図19を用いて後述する。
一方、一致するエントリがある場合は(S105で”YES”)、この要求は、この要求を受信した中間装置200以外の中間装置200が処理を行うべきであると判断し、共有IDが一致するエントリから一組のサーバIDとアルゴリズム情報IDとの組を取得する(S106)。条件に合致するエントリが複数ある場合には、ラウンドロビンで取得する情報の組を決めたり、予め測定しておいた応答時間の早いサーバを含む組の情報を取得してもよい。
次に、アルゴリズム情報管理テーブル1000を参照し、取得した組のアルゴリズム情報IDと一致するアルゴリズム情報を取得する。取得したアルゴリズム情報に基づいて、要求中に含まれるオブジェクトIDを逆変換する(S107)。図12で示したように、アルゴリズム情報には、何も変換しないアルゴリズムや、オブジェクトID形式フィールド1301と共有IDフィールド1302を削除するだけのアルゴリズムや、オブジェクトID形式フィールド1301と共有IDフィールド1302を削除した後、変換後の装置オブジェクトIDフィールド1304等の情報に基づき、オリジナルの装置オブジェクトIDを復元するアルゴリズム等がある。
次に、ファイルアクセス要求レベルでトランザクションを管理しているプロトコルで、要求中にトランザクションIDが含まれる場合は、そのトランザクションIDを保存し、これから要求を転送する宛先の装置に対するトランザクションIDを付与する(S108)。この場合、サーバ情報管理テーブル900を参照し、取得した組のサーバIDと一致するサーバ情報902を取得することによって、転送先の装置を特定する。
次に、サーバ情報902に基づいて定められた装置に、変換後のファイルアクセス要求を送信し(S109)、送信先装置からの応答メッセージを待つ(S110)。
その後、ファイルアクセス要求を送信した装置から応答メッセージを受信したら、応答処理を行い(S200)、処理を終了する。なお、応答処理(S200)は、図18を用いて後述する。
図18は、本発明の第1の実施の形態における、中間装置200による他の装置から応答メッセージを受信した際の中間装置200による応答処理(S200)を示すフローチャートである。
中間装置200は、末端装置300又は他の中間装置200から応答メッセージを受信する(S201)。
オブジェクトIDが応答メッセージ中に含まれている場合は、処理S107で使用されたアルゴリズム情報に基づき、メッセージ中に含まれるオブジェクトIDを正変換する(S202)。
ファイルアクセス要求レベルでトランザクションを管理しているプロトコルで、応答メッセージ中にトランザクションIDが含まれる場合は、処理S108において保存されていたトランザクションIDを応答メッセージに上書きする(S203)。
その後、共有を跨るアクセスの場合の特別の処理である接続ポイント処理を行い(S400)、応答処理を終了する。なお、接続ポイント処理(S400)は、図20を用いて後述する。
図19は、本発明の第1の実施の形態における、ファイルアクセス要求を受信した中間装置200が処理を行うべき要求であると判断した場合に実行されるGNSローカル処理(S300)を示すフローチャートである。
まず、オブジェクトID中の共有IDとファイルIDに基づいてファイルを特定する(S301)。
次に、受信した要求中のオペレーション情報に基づいて、応答メッセージを作成する(S302)。なお、受信した要求が応答メッセージ中にオブジェクトIDを含めることが必要である場合には、オブジェクトIDは、受信した形式と同じ共有ID型フォーマットを用いる。
その後、共有を跨るアクセスの場合の特別の処理である接続ポイント処理を行い(S400)、GNSローカル処理を終了する。なお、接続ポイント処理(S400)は、図20を用いて後述する。
図20は、本発明の第1の実施の形態における、共有を跨るアクセスの場合の特別な処理である接続ポイント処理(S400)を示すフローチャートである。
まず、応答メッセージ中に、ファイルアクセス要求で指定されたオブジェクトから見て、子オブジェクト又は親オブジェクトのオブジェクトIDが含まれるか否かを判定する(S401)。例えば、これは、NFSでは、LOOKUPプロシージャの応答メッセージや、READ DIRプロシージャの応答メッセージや、READ DIR PLUSプロシージャの応答メッセージが、このようなオブジェクトIDを含む。応答メッセージ中に、このようなオブジェクトIDを含まない場合は、接続ポイント処理を終了する。
子オブジェクト又は親オブジェクトのオブジェクトIDが、応答メッセージ中に含まれる場合、応答メッセージ中の最初の子オブジェクト又は親オブジェクトのオブジェクトIDを取得する(S402)。
そして、接続ポイント管理テーブル1100を参照して、取得したオブジェクトIDのオブジェクトが接続ポイントか否かを判定する(S403)。具体的には、取得したオブジェクトIDが、接続ポイント管理テーブル1100の接続元オブジェクトIDフィールドに登録されたIDと一致するエントリがあるかを検索する。
オブジェクトIDが一致するエントリがない場合は、取得したオブジェクトIDのオブジェクトは接続ポイントではないので、応答メッセージ中に他に子オブジェクト又は親オブジェクトのオブジェクトIDが含まれているか否かを判定する(S407)。さらに、他のオブジェクトIDが含まれてない場合は、接続ポイント処理を終了する。一方、他のオブジェクトIDが含まれている場合は、応答メッセージ中の次の子オブジェクト又は親オブジェクトのオブジェクトIDを取得する(S408)。そして、S403からの処理を繰り返す。
一方、オブジェクトIDが一致するエントリがある場合は、取得したオブジェクトIDのオブジェクトは接続ポイントなので、その応答メッセージ中に含まれる接続元オブジェクトIDを接続先オブジェクトIDに置換する(S404)。
次に、そのオブジェクトに関連する付随情報があるか否かを判定する(S405)。例えば、付随情報とは、そのオブジェクトの属性情報である。付随情報がない場合は、S407の処理へ進む。付随情報がある場合は、接続元オブジェクトの付随情報を接続先オブジェクトの付随情報に置換して(S406)、S407の処理へ進む。
S407以降の処理は先に述べたとおりである。
以上説明した第1の実施の形態によれば、共有ID形式でオブジェクトIDを生成できる装置ではオブジェクトID変換が不要なため、ファイルに対するアクセスの遅延(レイテンシ)を短縮できる効果がある。
次に、管理者が、管理端末5000の管理者ユーザインターフェース506を用いて、GNSを構成する共有の統合の処理手順について説明する。
図21は、本発明の第1の実施の形態の共有統合処理における管理装置5000と中間装置200との動作を示すフローチャートである。
まず、管理者は、管理者ユーザインターフェース506から、統合したい共有のサーバ名、アルゴリズム情報ID、共有パス名、共有設定情報、GNSパス名を入力する(S501)。ここで、GNSパス名とは仮想化された一つの共有におけるパス名である。
これらの入力された情報を、システム内の一つの中間装置200で動作する構成情報管理プログラム(サーバ)400sに転送する(S502)。
構成情報管理プログラム(サーバ)400sは、共有ID空き管理リスト402を参照して、システム内で一意の共有IDを選択する(S503)。
そして、受信した情報及び選択された共有IDに基づいてエントリを生成し、生成されたエントリをGNS構成情報テーブル1200sに追加する(S504)。
各中間装置200に対して、追加されたエントリについてGNS情報の統合を要求する(S505)。要求を受け取った中間装置200(構成情報管理プログラム(クライアント)400cが動作する中間装置200)は、共有統合ローカル処理を行い(S600)、その後、共有統合処理を終了する。なお、共有統合ローカル処理(S600)は、図22を用いて後述する。
図22は、共有統合処理(図21)から呼び出される、共有統合ローカル処理(S600)を示すフローチャートである。
まず、追加したエントリと同じ内容を取得し、GNS構成情報テーブルキャッシュ1200cに登録する(S601)。次に、そのエントリのサーバ名が自装置であるか否かを判定する(S602)。
サーバ名が自装置である場合(S602で”YES”)、エントリの情報に基づいて、GNSツリーの該当する箇所に、bindマウントを実行する(S605)。そして、継承ACL設定処理を実行する(S1000)。その後、S606の処理へ進む。なお、継承ACL設定処理(S1000)は、図23を用いて後述する。
一方、サーバ名が自装置でない場合(S602で”NO”)、エントリの情報に基づいて、GNSツリーの該当する箇所に、ネットワークマウントを実行する(S603)。そして、スイッチ情報管理テーブル800と接続ポイント管理テーブル1100とにエントリを追加する(S604)。
マウント完了後、共有情報をマウントディレクトリに設定して(S606)、共有統合ローカル処理を終了する。
図23は、共有統合ローカル処理(S600)から呼び出される、継承ACL設定処理(S1000)を示すフローチャートである。
まず、管理者が、管理装置5000の管理プログラム5003を通して、新たなファイルサーバをGNSへ接続する要求をすると、中間装置200の構成情報管理プログラム400は継承ACL設定/削除プログラム5100へ要求を送る。
継承ACL設定/削除プログラム5100は、GNSツリーのマウントポイントの一つ上位のディレクトリに付与されたACLの中から一つのACEを取得する(S1001)。
次に、処理がされていないACEがACLにあるか否かを判定する(S1002)。S1002で処理がされていないACEがあると判定された場合(S1002で”YES”)、S1001で取得したACEの継承先情報に基づいて、継承があるか否かを判定する(S1003)。そして、抽出されたACEに継承がある場合(S1004で”YES”)、継承ACL情報5300にそのACEを追加し(S1005)、S1001へ戻り、他のACEについてS1001から処理を実行する。一方、抽出されたACEに継承がない場合(S1004で”NO”)、そのACEについては何もせずにS1001へ戻る。そして、他のACEについてS1001から処理を実行する。
一方、S1002で処理がされていないACEがないと判定された場合(S1002で”NO”)、継承設定メイン処理を実行し(S1100)、最後に継承ACL情報5300を削除して(S1006)、継承ACL設定処理を終了する。なお、継承設定メイン処理(S1100)は、図24を用いて後述する。
図24は、継承ACL設定処理(S1000)から呼び出される、継承ACL設定メイン処理(S1100)を示すフローチャートである。
継承ACL設定/削除プログラム5100は、継承ACL設定処理(S1000)で作成された継承ACL情報5300の継承先5204から、ディレクトリへの継承を含む全てのACEを選択して、マウントポイントのディレクトリへ設定する(S1101)。そして、継承ACL設定/削除プログラム5100は、マウントポイント以下のファイルシステムオブジェクトを一つ選択する(S1102)。
そして、選択されたファイルシステムオブジェクトがファイルか否かを判定する(S1103)。その結果、選択されたファイルシステムオブジェクトがファイルである場合(S1103で”YES”)、継承ACL情報5300の継承先5204から、ファイルへの継承を含むACEをすべて選択する(S1104)。
その後、選択されたACEが既にACLに設定されているか(設定すべきACEが重複しているか)否かを判定する(S1110)。その結果、選択されたACEがACLに設定されていなければ、選択されたACEをACLに設定する(S1111)。一方、選択されたACEがACLに設定されていれば、重複するACEを除き(S1150)、重複しないACEを設定する(S1111)。
一方、選択されたファイルシステムオブジェクトがファイル以外(例えば、ディレクトリ)である場合(S1103で”NO”)、継承ACL情報5300の継承先5204から、ディレクトリへの継承を含む全てのACEを選択する(S1105)。
その後、選択されたACEが既にACLに設定されているか(設定すべきACEが重複しているか)否かを判定する(S1112)。その結果、選択されたACEがACLに設定されていなければ、選択されたACEをACLに設定する(S1113)。一方、選択されたACEがACLに設定されていれば、重複するACEを除き(S1151)、重複しないACEを設定する(S1113)。
さらに、ディレクトリに格納されているファイル又は下位のディレクトリを選択して、継承ACL設定メイン処理(S1100)を実行する(S1107)。
このように、対象となるファイルシステムオブジェクトがディレクトリであれば、そのディレクトリに格納されているファイルシステムオブジェクトを選択し、継承ACLを設定する。そして、ディレクトリの配下のファイル及びディレクトリに対して、この処理を続けることによって、再帰的に継承ACLを設定することができ、全てのファイルシステムオブジェクトに継承ACLを設定できる。
最後に、未選択のファイルシステムオブジェクトがあるか否かを判定し(S1106)、まだ未選択のものがある場合は(S1106で”YES”)、別のファイルシステムオブジェクトを一つ選択し(S1102)、以降の処理を実行する。一方、ファイルシステムオブジェクトがない場合(S1106で”NO”)、全てのファイルシステムオブジェクトに継承ACLの設定が完了しているので、継承ACL設定メイン処理を終了する。
図25は、本発明の第1の実施の形態における共有分離処理の処理フローを示すフローチャートである。
共有分離処理は、管理者が管理装置5000の管理プログラム5003を通して、ファイルサーバをGNSから分離する要求をしたときに実行される。
まず、管理者は、管理者ユーザインターフェース506から、分離したいディレクトリのGNSパス名を入力する(S1201)。ここで、GNSパス名とは仮想化された一つの共有におけるパス名である。
これらの入力された情報を、システム内の一つの中間装置200で動作する構成情報管理プログラム(サーバ)400sに転送する(S1202)。
構成情報管理プログラム(サーバ)400sは、S1202で受け取ったGNSパスからGNS構成情報テーブル1200sのエントリを特定し、GNS構成情報テーブル1200sからサーバ名及び共有パス名を取得する(S1203)。
そして、各中間装置200の構成情報管理プログラム(クライアント)400cへ、GNSの分離要求を送信する。
GNSの分離要求を受信した中間装置200(構成情報管理プログラム(クライアント)400cが動作する中間装置200)は、共有分離ローカル処理1300を実行する。なお、共有分離ローカル処理(S1300)は、図26を用いて後述する。
さらに、構成情報管理プログラム(サーバ)400sは、GNS構成情報テーブル1200の不要なエントリを削除する(S1206)。例えば、管理者が要求したGNSパス名とGNS構成情報テーブル1200sのGNSパス名1202とが一致するエントリは不要なエントリである。
最後に、共有統合処理(図21のS503)で選択した共有IDを、共有ID空き管理リスト402戻して(S1207)、共有分離処理を終了する(S1207)。
図26は、共有分離処理から呼び出される、共有分離ローカル処理(S1300)を示すフローチャートである。
各中間装置の構成情報管理プログラム(クライアント)400cは、GNS構成情報テーブル1200cを調べ、管理者によって入力されたGNSパス名からエントリを特定し、GNS構成情報テーブル1200cからサーバ名を抽出する(S1301)。次に、抽出されたサーバ名が自装置であるか否かを判定する(S1302)。
サーバ名が自装置である場合(S1302で”YES”)、継承ACL削除処理を実行し(S1400)、その後GNSツリーからbindアンマウントを実行する(S1305)。なお、継承ACL削除処理(S1400)は、図27を用いて後述する。
一方、サーバ名が自装置でなかった場合(S1302で”NO”)、GNSツリーからGNSツリーの該当するマウントポイントをネットワークアンマウントを実行する(S1307)。そして、構成情報管理プログラム(クライアント)400cは、スイッチ情報管理テーブル800と接続ポイント管理テーブル1100とからエントリを削除する(S1303)。
最後に、構成情報管理プログラム(クライアント)400cは、GNS構成テーブルキャッシュ1200cを、GNS構成情報テーブル(サーバ)1200sと同期するように更新する(S1306)。例えば、GNS構成情報テーブルキャッシュ1200cのGNSパス名と分離したいGNSパス名とが一致するエントリを、GNS構成情報テーブルキャッシュ1200cから削除する。
図27は、共有分離ローカル処理(S1300)から呼び出される、継承ACL削除処理(S1400)を示すフローチャートである。
まず、GNSツリーのマウントポイントの上位ディレクトリのACLから、設定されている一つのACEを取得する(S1401)。
次に、処理がされていないACEがACLにあるか否かを判定する(S1402)。S1402で処理がされていないACEがあると判定された場合(S1402で”YES”)、そのACEの継承先から継承有りか否かを判定する(S1403)。ここで、抽出されたACEに継承がない場合(S1404で”NO”)、ステップ1401へ戻り、他のACEについてS1401から処理を実行する。一方、抽出されたACEに継承がある場合(S1404で”YES”)、継承ACL情報5300にそのACEを追加する(S1405)。そして、ステップ1401へ戻り、他のACEについてS1401から処理を実行する。
一方、S1402で処理がされていないACEがないと判定された場合(S1402で”NO”)、継承ACL削除メイン処理を実行し(S1500)、継承ACL情報5300を破棄して(S1406)、継承ACL削除処理を終了する。なお、継承ACL削除メイン処理(S1500)は、図28を用いて後述する。
図28は、継承ACL削除処理(S1400)から呼び出される、継承ACL削除メイン処理(S1500)を示すフローチャートである。
継承ACL削除処理(S1400)で作成された継承ACL情報5300から、ディレクトリへの継承を含む全てのACEを選択し、マウントポイントのディレクトリに設定されているACLと一致する全てのACEを削除する(S1501)。そして、マウントポイント以下のファイルシステムオブジェクトを一つ選択する(S1502)。
選択されたファイルシステムオブジェクトがファイルか否かを調べる(S1503)。ファイルシステムオブジェクトがファイルの場合(S1503で”YES”)、継承ACL情報5300の継承先からファイルへの継承を持つACEをすべて選択し、ファイルに設定されているACLのうち、マウントポイントのディレクトリに設定されているACLと一致する全てのACEを削除する(S1504)。
一方、選択されたファイルシステムオブジェクトがファイル以外(例えば、ディレクトリ)である場合(S1503で”NO”)、継承ACL情報5300の継承先5204から、ディレクトリへの継承を含む全てのACEを選択し、そのファイルシステムオブジェクトに設定されているACLのうち、マウントポイントのディレクトリに設定されているACLと一致するACEをすべて削除する(S1505)。
さらに、ディレクトリに格納されているファイル又は下位のディレクトリを選択して、継承ACL削除メイン処理(S1500)を実行する(S1507)。
このように、対象となるファイルシステムオブジェクトがディレクトリであれば、そのディレクトリに格納されているファイルシステムオブジェクトを選択し、継承ACLを削除する。ディレクトリの配下のファイル及びディレクトリに対して、この処理を続けることによって、再帰的に継承ACLを削除することができ、全てのファイルシステムオブジェクトに継承ACLを削除できる。
そして、未選択のファイルシステムオブジェクトがあるか否かを判定する(S1506)。未選択のファイルシステムオブジェクトがある場合は(S1506で”YES”)、ステップ1502で未選択のファイルシステムオブジェクトを選択して、以降の処理を実行する。一方、未選択のファイルシステムオブジェクトがない場合は(S1506で”NO”)、継承ACL削除メイン処理を終了する。
<第2実施形態>
次に、本発明の第2の実施の形態について説明する。第2の実施の形態は、第1の実施の形態のようにGNSツリーへファイルサーバをマウントするときに継承ACLを設定するのではなく、中間装置200がクライアント100からファイルアクセス要求を受けた時に、動的に、継承ACLを設定した合成ACLを作成して、ファイルへのアクセス可否を判定する。
第2の実施の形態では、仮想名前空間の構成変更時に、共有統合ローカル処理(S600)から呼び出される継承ACL設定処理(S1000)は実行されない。また、同様に、共有分離ローカル処理1300から呼び出される継承ACL削除処理(S1400)も実行されない。
図29は、本発明の第2の実施の形態における中間装置200の構成を示すブロック図である。
第2の実施の形態の中間装置200は、前述した第1の実施の形態と異なり、継承ACL設定/削除プログラム5100を持たず、継承ACL抽出プログラム5700とアクセス判定プログラム5600とを持つ。継承ACL抽出プログラム5700は、ファイルシステムオブジェクトに設定されているACLから継承ACLのみを抽出してメモリ等の記憶装置に保持する。また、アクセス判定プログラム5600は、ファイルへのアクセス可否を判定する。
図30は、第2の実施の形態の中間装置200におけるアクセス判定プログラム5600の構成を示す機能ブロック図である。
図30に示すように、第2の実施の形態のアクセス判定プログラム5600は、アクセス要求判定部5601と、ACL合成処理部5602と、ACL取得部5605とを備える。また、アクセス判定プログラム5600が動作する中間装置200は、合成ACL情報5400と、共有ID/継承ACL対応表5500とを格納する。
アクセス要求判定部5601は、クライアント100からのファイルのアクセスの要求の可否を判定する。ACL合成処理部5602は、継承ACLとファイルシステムオブジェクトに設定されているACLとを合成する。
ACL取得部5605は、前述した第1の実施の形態のACL取得部5103(図9参照)と同様に、ACLの取得のための要求を送信する。
合成ACL情報5400は、継承ACLとファイルシステムオブジェクトに設定されているACLとが合成されたACLである(図32参照)。共有ID/継承ACL対応表5500は、共有IDと継承ACL情報5300との対応を格納する(図33参照)。
なお、合成ACL情報5400及び共有ID/継承ACL対応表5500は、アクセス判定プログラム5600中に図示したが、アクセス判定プログラム5600とは別に構成されていてもよい。
図31は、第2の実施の形態の中間装置200における継承ACL抽出プログラム5700の構成を示す機能ブロック図である。
図31に示すように、継承ACL抽出プログラム5700は、ファイル検索部5701と、ACL取得部5702と、継承ACL抽出処理部5703とを備える。また、継承ACL抽出プログラム5700が動作する中間装置200は、継承ACL情報5704を格納する。
ファイル検索部5701は、前述した第1の実施の形態のファイル検索部5102(図9参照)と同様に、仮想名前空間を構成する際に、継承ACLを付与又は削除する対象のファイルを検索する。ACL取得部5702は、前述した第1の実施の形態のACL取得部5103(図9参照)と同様に、ファイルシステムオブジェクトに付与されたACLを取得する。
継承ACL抽出処理部5703は、継承ACL抽出処理(S1700、図35)によって、継承設定されたACEを既存ACLから取り出す(図35参照)。継承ACL情報5704は、前述した第1の実施の形態の継承ACL情報5300(図15)と同じ構成を有するテーブル形式の情報である。
なお、継承ACL情報5704は、継承ACL抽出プログラム5700中に図示したが、継承ACL抽出プログラム5700とは別に構成されていてもよい。
第2の実施の形態の中間装置200における構成情報管理プログラム(サーバ)400sは、第1の実施の形態の構成情報管理プログラム(サーバ)400s(図4)と同様に、GNS構成情報管理サーバ部401sと、中間装置情報管理サーバ部403と、構成情報通信部404とを備える。また、構成情報管理プログラム(サーバ)400sが動作する中間装置200は、共有ID空き管理リスト402と、中間装置構成情報リスト405と、GNS構成情報テーブル1200sとを格納する。
但し、第2の実施の形態の中間装置200は、継承ACL設定/削除プログラム5100を備えないので、GNS構成情報管理サーバ部401sは、継承ACL抽出プログラム5700と接続され、継承ACL抽出プログラム5700との間でデータを受け渡す。
第2の実施の形態の中間装置200における構成情報管理プログラム(クライアント)400cは、第1の実施の形態の構成情報管理プログラム(クライアント)400c(図5)と同様に、GNS構成情報管理クライアント部401cと、構成情報通信部404とを備える。また、構成情報管理プログラム(クライアント)400cが動作する中間装置200は、GNS構成情報テーブルキャッシュ1200cを格納する。
但し、第2の実施の形態の中間装置200は、継承ACL設定/削除プログラム5100を備えないので、GNS構成情報管理クライアント部401cは、継承ACL抽出プログラム5700と接続され、継承ACL抽出プログラム5700との間でデータを受け渡す。
第2の実施の形態の中間装置200におけるスイッチプログラム600は、第1の実施の形態のスイッチプログラム600(図6)と同様に、クライアント通信部606と、中間・末端装置通信部605と、ファイルアクセス管理部700と、オブジェクトID変換処理部604と、擬似ファイルシステム601とを備える。
但し、第2の実施の形態の中間装置200は、継承ACL設定/削除プログラム5100を備えないので、ファイルアクセス管理部700は、アクセス判定プログラム5600及び継承ACL抽出プログラム5700と接続され、アクセス判定プログラム5600と継承ACL抽出プログラム5700から、ACLの取得要求を受け取り、ファイルシステムオブジェクトに設定されているACLを取得する。
第2の実施の形態の中間装置200におけるファイルアクセス管理部700は、第1の実施の形態のファイルアクセス管理部700(図7)と同様に、要求データ処理部701と、要求データ解析部702と、応答データ出力部703とを備える。また、ファイルアクセス管理部700が動作する中間装置200は、スイッチ情報管理テーブル800(図10参照)と、サーバ情報管理テーブル900(図11参照)と、アルゴリズム情報管理テーブル1000(図12参照)と、接続ポイント管理テーブル1100(図13参照)とを備える。
但し、第2の実施の形態の中間装置200は、継承ACL設定/削除プログラム5100を備えないので、要求データ処理部701は、アクセス判定プログラム5600及び継承ACL抽出プログラム5700と接続され、アクセス判定プログラム5600と継承ACL抽出プログラム5700からのACL取得要求を受け取り、ファイルシステムオブジェクトに設定されているACLを取得する。
図32は、本発明の第2の実施の形態における合成ACL情報5400の構成を示す図である。
合成ACL情報5400は、継承ACLとファイルシステムオブジェクトに設定されているACLとを合わせたACLで、第2の実施の形態では、この合成ACL情報5400に基づいてアクセス可否を判定する。
合成ACL情報5400は、アカウント5401と、マスク5402と、許否/許可5403と、継承先5404との組によって構成されたエントリを格納する表形式の情報である。
アカウント5401と、マスク5402と、許否/許可5403と、継承先5404とは、各々、前述した第1の実施の形態の継承ACL情報5300(図15)のアカウント5301と、マスク5302と、拒否/許可5303と、継承先5304と同じである。
合成ACL情報5400には、既存ACLのエントリと、継承ACLのエントリとが含まれる。このとき、合成ACL情報5400には、既存ACLのエントリが上(先)に、継承ACLのエントリが下(後)に記録される。これは、矛盾したACEが合成ACL情報5400にある場合に、既存ACLのACEを優先してアクセス可否を判定するためである。
図33は、本発明の第2の実施の形態における共有ID/継承ACL対応表5500の構成を示す図である。
共有ID/継承ACL対応表5500は、共有ID5501と、継承ACL情報アドレス5502との組によって構成されたエントリを格納するテーブルである。
共有ID5501は、ファイルサービスの公開単位を特定するIDである。継承ACL情報アドレス5502は、継承ACL情報5704へのポインタである。
図34は、本発明の第2の実施の形態における共有統合ローカル処理(S600)を示すフローチャートである。共有統合ローカル処理(S600)は、第1の実施の形態と同じ共有統合処理(図21参照)から呼び出される。
まず、追加したエントリと同じ内容を取得し、GNS構成情報テーブルキャッシュ1200cに登録する(S601)。次に、そのエントリのサーバ名が自装置であるか否かを判定する(S602)。
サーバ名が自装置である場合(S602で”YES”)、エントリの情報に基づいて、GNSツリーの該当する箇所に、bindマウントを実行する(S605)。その後、S606の処理へ進む。
一方、サーバ名が自装置でない場合(S602で”NO”)、エントリの情報に基づいて、GNSツリーの該当する箇所に、ネットワークマウントを実行する(S603)。そして、スイッチ情報管理テーブル800と接続ポイント管理テーブル1100とにエントリを追加する(S604)。
マウント完了後、共有情報をマウントディレクトリに設定して(S606)、継承ACL抽出処理(S1700)を実行した後に、共有統合ローカル処理を終了する。なお、継承ACL抽出処理(S1700)は、図35を用いて後述する。
図35は、本発明の第2の実施の形態における継承ACL抽出処理(S1700)を示すフローチャートである。
まず、継承ACL情報5704を作成するか否か(作成するか、破棄するか)を判定する(S1706)。本処理が共有統合ローカル処理(S600)から呼ばれる場合は、継承ACL情報5704を作成する(S1706で”YES”)。一方、本処理が共有分離ローカル処理1800から呼ばれる場合は、継承ACL情報5704を破棄する(S1706で”NO”)。
継承ACL情報を作成する場合(S1706で”YES”)、GNSツリーのマウントポイントの一つ上位のディレクトリに付与されたACLの中から一つのACEを取得する(S1701)。
次に、取得すべきACEがあるか否かを判定する(S1702)。S1702で取得すべきACEがあると判定された場合(S1702で”YES”)、S1701で取得したACEの継承先情報に基づいて、継承があるか否かを判定する(S1703)。そして、抽出されたACEに継承がある場合(S1704で”YES”)、継承ACL情報5704にそのACEを追加する(S1705)。継承ACL情報5704は、メモリ上でもストレージ上でもどこに存在してもよい。そして、S1701へ戻り、他のACEについてS1701から処理を実行する。一方、抽出されたACEに継承がない場合(S1704で”NO”)、そのACEについては何もせずにS1701へ戻る。そして、他のACEについてS1701から処理を実行する。
一方、S1702で取得すべきACEがないと判定された場合(S1702で”NO”)、共有/継承ACL対応表5500の共有ID5501と継承ACL情報アドレス5502を設定(S1708)して、継承ACL抽出処理を終了する。
S1706で継承ACL情報5704を破棄すると判定された場合(S1706で”NO”)、継承ACL情報5704をメモリ上(又は、ストレージ上等)から削除して、共有/継承ACL対応表5500のエントリを削除する(S1707)。
図36は、本発明の第2の実施の形態における共有分離ローカル処理(S1800)を示すフローチャートである。共有分離ローカル処理(S600)は、第1の実施の形態と同じ共有分離処理(図25参照)から呼び出される、
各中間装置の構成情報管理プログラム(クライアント)400cは、GNS構成情報テーブル1200cを調べ、管理者によって入力されたGNSパス名からエントリを特定し、GNS構成情報テーブル1200cからサーバ名を抽出する(S1301)。次に、抽出されたサーバ名が自装置であるか否かを判定する(S1302)。
サーバ名が自装置である場合(S1302で”YES”)、GNSツリーからbindアンマウントを実行する(S1305)。
一方、サーバ名が自装置でなかった場合(S1302で”NO”)、GNSツリーからGNSツリーの該当するマウントポイントをネットワークアンマウントを実行する(S1307)。そして、構成情報管理プログラム(クライアント)400cは、スイッチ情報管理テーブル800と接続ポイント管理テーブル1100とからエントリを削除する(S1303)。
その後、構成情報管理プログラム(クライアント)400cは、継承ACL抽出処理(S1700、図35参照)を呼び出す。
最後に、構成情報管理プログラム(クライアント)400cは、GNS構成テーブルキャッシュ1200cを、GNS構成情報テーブル(サーバ)1200sと同期するように更新する(S1306)。例えば、GNS構成情報テーブルキャッシュ1200cのGNSパス名と分離したいGNSパス名とが一致するエントリを、GNS構成情報テーブルキャッシュ1200cから削除する。
図37は、本発明の第2の実施の形態における、中間装置200による共有の名前空間を仮想化する処理を示すフローチャートである。
クライアント通信部606は、クライアント100よりファイルアクセス要求を受信する。このファイルアクセス要求は、例えば、NFSプロトコルのリモートプロシージャーコール(RPC)である。ファイルアクセス管理部700は受信した要求からオブジェクトIDを抽出する。そして、抽出されたオブジェクトIDの形式が共有ID形式か否かを判定する(S3101)。
受信した要求から抽出されたオブジェクトIDが共有ID形式でなかった場合は、従来のファイルサービス処理を行い(S3102)、処理を終了する。
受信した要求から抽出されたオブジェクトIDが共有ID形式であった場合は、受信した要求の中のオブジェクトIDの共有IDと一致する共有IDを含むエントリがスイッチ情報管理テーブル800にあるか否かを判定する。前述したように、スイッチ情報管理テーブル800中に、条件に合致する(同じ共有IDを含む)エントリは、複数存在する場合がある。
一致するエントリがない場合は(S3105で”NO”)、要求を受信した中間装置200が、この要求を処理すべきであると判断し、GNSローカル処理を行う(S4300)。なお、GNSローカル処理(S4300)は、図38を用いて後述する。
一方、一致するエントリがある場合は(S3105で”YES”)、要求を受信した中間装置200以外の中間装置200が、この要求を処理すべきであると判断し、ネットワークアクセス判定処理(S1900)を実行する。なお、ネットワークアクセス判定処理(S1900)は、図40を用いて後述する。そして、アクセス許可が得られるか否かを判定する(S3111)。
その結果、アクセス許可が得られない場合(S3111で”NO”)、クライアント100へアクセス拒否を返信して(S3112)、処理を終了する。
一方、ネットワークアクセス判定処理(S1900)の結果、アクセス許可が得られた場合(S3111で”YES”)、共有IDが一致するエントリから一組のサーバIDとアルゴリズム情報IDとの組を取得する(S3106)。条件に合致するエントリが複数ある場合には、ラウンドロビンで取得する情報の組を決めたり、予め測定しておいた応答時間の早いサーバを含む組の情報を取得してもよい。
次に、アルゴリズム情報管理テーブル1000を参照し、取得した組のアルゴリズム情報IDと一致するアルゴリズム情報を取得する。取得したアルゴリズム情報に基づいて、要求中に含まれるオブジェクトIDを逆変換する(S3107)。図12で示したように、アルゴリズム情報には、何も変換しないアルゴリズムや、オブジェクトID形式フィールド1301と共有IDフィールド1302を削除するだけのアルゴリズムや、オブジェクトID形式フィールド1301と共有IDフィールド1302を削除した後、変換後の装置オブジェクトIDフィールド1304等の情報に基づき、オリジナルの装置オブジェクトIDを復元するアルゴリズム等がある。
次に、ファイルアクセス要求レベルでトランザクションを管理しているプロトコルで、要求中にトランザクションIDが含まれる場合は、そのトランザクションIDを保存し、これから要求を転送する宛先の装置に対するトランザクションIDを付与する(S3108)。この場合、サーバ情報管理テーブル900を参照し、取得した組のサーバIDと一致するサーバ情報902を取得することによって、転送先の装置を特定する。
次に、サーバ情報902に基づいて定められた装置に、変換後のファイルアクセス要求を送信し(S3109)、送信先装置からの応答メッセージを待つ(S3110)。
その後、ファイルアクセス要求を送信した装置から応答メッセージを受信したら、応答処理(S200)を行い(図18参照)、処理を終了する。
図38は、本発明の第2の実施の形態における、ファイルアクセス要求を受信した中間装置200が処理を行うべき要求であると判断した場合に実行されるGNSローカル処理(S4300)を示すフローチャートである。
まず、ローカルアクセス判定処理(S2100)を実行する。ローカルアクセス判定処理(S2100)によってアクセス許可が得られない場合(S4302で”NO”)、クライアント100へアクセス拒否を送信して(S4305)、GNSローカル処理を終了する。なお、ローカルアクセス判定処理(S2100)は、図39を用いて後述する。
一方、アクセス許可が得られた場合(S4302で”YES”)、オブジェクトID中の共有IDとファイルIDに基づいてファイルを特定する(S4303)。
次に、受信した要求中のオペレーション情報に基づいて、応答メッセージを作成する(S4304)。なお、受信した要求が応答メッセージ中にオブジェクトIDを含める必要がある場合には、オブジェクトIDは、受信した形式と同じ共有ID型フォーマットを用いる。
その後、共有を跨るアクセスの場合の特別の処理である接続ポイント処理(S400)を行い(図20参照)、GNSローカル処理を終了する。
図39は、本発明の第2の実施の形態におけるローカルアクセス判定処理(S2100)を示すフローチャートである。
まず、ファイルアクセス管理部700は、ファイルシステムプログラム203から、アクセス対象のファイルに設定されているACLを取得する(S2105)。
次に、ACL合成処理(S2000)を実行し、合成ACL情報5400を作成する。なお、ACL合成処理(S2000)は、図41を用いて後述する。
そして、合成ACL情報5400に基づいて、アクセス可否を判定する(S2101)。具体的には、ACLの各エントリのうち、アクセス要求を送信したユーザのアカウントとアカウント5401とが一致するエントリを抽出し、アクセス要求の内容と、マスク5402及び拒否/許可5403とを比較して、アクセス可否を判定する。
その結果、アクセス許可が得られた場合(S2102で”YES”)、本処理の戻り値(ローカルアクセス判定処理からGNSローカル処理に返す値)に”OK”を設定して(S2104)、ローカルアクセス判定処理を終了する。
一方、アクセス許可が得られなかった場合(S2102で”NO”)、本処理の戻り値に”NG”を設定して(S2103)、ローカルアクセス判定処理を終了する。
図40は、本発明の第2の実施の形態におけるネットワークアクセス判定処理(S1900)を示すフローチャートである。
まず、ファイルアクセス管理部700は、オブジェクトIDを変換し、中間装置200(又は、末端装置300)へ、アクセス対象のACLの取得を要求し(S1906)、中間装置200(又は、末端装置300)からACLを受信する(S1901)。
次に、ACL合成処理(S2000)を実行し、合成ACL情報5400を作成する。なお、ACL合成処理(S2000)は、図41を用いて後述する。
そして、合成ACL情報5400に基づいて、アクセス可否を判定する(S1902)。具体的には、ACLの各エントリのうち、アクセス要求を送信したユーザのアカウントとアカウント5401が一致するエントリを抽出し、アクセス要求の内容と、マスク5402と拒否/許可5403とを比較して、アクセス可否を判定する。
判定の結果がアクセス許可である場合(S1906で”YES”)、本処理の戻り値(ネットワークアクセス判定処理からGNSローカル処理に返す値)に”OK”を設定して(S2104)、ネットワークアクセス判定処理を終了する。
一方、判定の結果がアクセス許否である場合(S1906で”NO”)、アクセス拒否をクライアント100へ送信して(S1903)、本処理の戻り値に”NG”を設定(S1904)して、ネットワークアクセス判定処理を終了する。
図41は、本発明の第2の実施の形態におけるACL合成処理(S2000)を示すフローチャートである。
まず、変換前のオブジェクトIDから共有IDを取得して、共有ID/継承ACL対応表5500を参照して、継承ACL情報5704を特定する(S2001)。次に、クライアントから要求されたアクセス対象がファイルか否かを判定する(S2002)。
その結果、アクセス対象がファイルである場合(S2002で”YES”)、継承ACL情報の継承先がファイルであるACEのうち、合成ACL情報に登録していないACEを一つ選択する(S2003)。一方、アクセス対象がファイル以外(例えば、ディレクトリ)である場合(S2002で”NO”)、継承ACL情報の継承先がディレクトリであるACEのうち、合成ACL情報に登録していないACEを一つ選択する(S2004)。
その後、選択された継承ACL中のACEを、アクセス対象のファイルシステムオブジェクトに設定されている既存ACLの後に配置して、合成ACL情報5400を作成する(S2005)。
そして、継承ACL情報5704に未処理のACEがあるか否かを判定する(S2006)。その結果、未処理のACEがある場合(S2006で”YES”)、ステップ2002へ戻って、未処理のACEの処理を継続する。一方、継承ACL情報5704に未処理のACEがない場合(S2006で”NO”)、ACL合成処理を終了する。
以上説明したように、本発明の第2の実施の形態では、ファイルシステムのマウント時にACLの継承を判定せず、ファイルアクセス時にACLの継承を判定するので、迅速にファイルシステムをマウントすることができる。特に、ファイルシステムを頻繁につなぎ変える計算機システムにおいては、システムのダウンタイムを短くすることができる。
また、前述した第1の実施の形態では、多くのファイルが含まれるファイルシステムにおいて、ファイルシステムをつなぎ変える際に、多くのACEを判定する必要があるため、システムのダウンタイムが長くなる。しかし、第2の実施の形態のようにファイルアクセス時に継承されるACLによってアクセス可否を判定すれば、迅速にファイルシステムをマウントすることができる。
<第3実施形態>
次に、第3の実施の形態について説明する。
第3の実施の形態は、前述した実施の形態と中間装置200が異なる。第3の実施の形態の中間装置200は、第1の実施の形態の中間装置200とは異なり、GNSツリーへファイルサーバを接続するときに継承ACLを設定しない。さらに、第3の実施の形態の中間装置200は、第2の実施の形態の中間装置と異なり、アクセス要求を受けた時に、継承ACLとファイルシステムオブジェクトに付与されたACLとを合成してアクセス可否を判定しない。
第3の実施の形態では、中間装置200がクライアント100からファイルアクセス要求を受けた時に、まず継承ACL情報を用いてプレアクセス判定処理を行い、プレアクセス判定処理によってアクセス判定(アクセス許否)が確定した場合、プレアクセス判定の結果のみを用いて、アクセスの可否を判定する。このようにすることによって、アクセス判定処理を高速化することができる。
図42は、本発明の第3の実施の形態における、中間装置200による共有の名前空間を仮想化する処理を示すフローチャートである。
クライアント通信部606は、クライアント100よりファイルアクセス要求を受信する。このファイルアクセス要求は、例えば、NFSプロトコルのリモートプロシージャーコール(RPC)である。ファイルアクセス管理部700は受信した要求からオブジェクトIDを抽出する。そして、抽出されたオブジェクトIDの形式が共有ID形式か否かを判定する(S5101)。
受信した要求から抽出されたオブジェクトIDが共有ID形式でなかった場合は、従来のファイルサービス処理を行い(S5102)、処理を終了する。
受信した要求から抽出されたオブジェクトIDが共有ID形式であった場合は、プレアクセス判定処理を行う(S2200)。なお、プレアクセス判定処理(S2200)は、図43を用いて後述する。
プレアクセス判定処理(S2200)の結果がアクセス拒否である場合(S5111で”NO”)、クライアント100へアクセス拒否を送信して(S5112)、処理を終了する。一方、プレアクセス判定処理(S2200)の結果がアクセス許可である場合(S5111で”YES”)、S5105の処理へ進む。
その後、受信した要求の中のオブジェクトIDの共有IDと一致する共有IDを含むエントリがスイッチ情報管理テーブル800にあるか否かを判定する。前述したように、スイッチ情報管理テーブル800中に、条件に合致する(同じ共有IDを含む)エントリは、複数存在する場合がある。
一致するエントリがない場合は(S5105で”NO”)、要求を受信した中間装置200が、この要求を処理すべきであると判断し、GNSローカル処理(S4300)を行う(図38参照)。GNSローカル処理(S4300)では、初めにローカルアクセス判定処理が実行される。なお、第3の実施の形態では、GNSローカル処理(S4300)から呼び出されるローカルアクセス判定処理は、図45に示すローカルアクセス判定処理(S2400)になる。
一方、一致するエントリがある場合は(S5105で”YES”)、要求を受信した中間装置200以外の中間装置200が、この要求を処理すべきであると判断し、、共有IDが一致するエントリから一組のサーバIDとアルゴリズム情報IDとの組を取得する(S5106)。条件に合致するエントリが複数ある場合には、ラウンドロビンで取得する情報の組を決めたり、予め測定しておいた応答時間の早いサーバを含む組の情報を取得してもよい。
次に、アルゴリズム情報管理テーブル1000を参照し、取得した組のアルゴリズム情報IDと一致するアルゴリズム情報を取得する。取得したアルゴリズム情報に基づいて、要求中に含まれるオブジェクトIDを逆変換する(S5107)。図12で示したように、アルゴリズム情報には、何も変換しないアルゴリズムや、オブジェクトID形式フィールド1301と共有IDフィールド1302を削除するだけのアルゴリズムや、オブジェクトID形式フィールド1301と共有IDフィールド1302を削除した後、変換後の装置オブジェクトIDフィールド1304等の情報に基づき、オリジナルの装置オブジェクトIDを復元するアルゴリズム等がある。
次に、ファイルアクセス要求レベルでトランザクションを管理しているプロトコルで、要求中にトランザクションIDが含まれる場合は、そのトランザクションIDを保存し、これから要求を転送する宛先の装置に対するトランザクションIDを付与する(S5108)。
次に、ネットワークアクセス判定処理(S2300)を実行する。なお、ネットワークアクセス判定処理(S2300)は、図44を用いて後述する。そして、アクセス許可が得られるか否かを判定する(S5113)。
。ネットワークアクセス判定処理(S2300)の結果がアクセス拒否である場合(S5113で”NO”)、クライアント100へアクセス拒否を送信して(S5114)、処理を終了する。
一方、ネットワークアクセス判定処理(S2300)の結果がアクセス許可である場合(S5112で”YES”)、S5109の処理へ進む。この場合、サーバ情報管理テーブル900を参照し、取得した組のサーバIDと一致するサーバ情報902を取得することによって、転送先の装置を特定する。
次に、サーバ情報902に基づいて定められた装置に、変換後のファイルアクセス要求を送信し(S5109)、送信先装置からの応答メッセージを待つ(S5110)。
その後、ファイルアクセス要求を送信した装置から応答メッセージを受信したら、応答処理(S200)を行い(図18参照)、処理を終了する。
図43は、本発明の第3の実施の形態におけるプレアクセス判定処理(S2200)を示すフローチャートである。
まず、ファイルアクセス管理部700は、変換前のオブジェクトIDを用いてGNS構成テーブル1200から共有IDを取得し、共有ID/継承ACL対応表5500を参照して、継承ACL情報を特定する(S2201)。次に、クライアントから要求されたアクセス対象がファイルか否かを判定する(S2202)。
その結果、アクセス対象がファイルである場合(S2202で”YES”)、継承ACL情報5300の継承先がファイルであるACEを一つ選択する(S2203)。一方、アクセス対象がファイル以外(例えば、ディレクトリ)である場合(S2202で”NO”)、継承ACL情報の継承先がディレクトリであるACEを一つ選択する(S2204)。
そして、選択されたACEとアクセスを要求したユーザのユーザ情報に基づいて、アクセス可否を判定する(S2205)。
判定の結果がアクセス許可である場合は(S2206で”YES”)、ステップ2207の処理へ進む。一方、判定の結果がアクセス拒否である場合は(S2206で”NO”)、戻り値にアクセス拒否を設定して(S2208)、プレアクセス判定処理を終了する。
ステップ2207で、継承ACL情報に未処理のACEがあるか否かを判定する(S2207)。その結果、未処理のACEがある場合(S2207で”YES”)、ステップ2202へ戻って、未処理のACEの処理を継続する。一方、継承ACL情報にに未処理のACEがない場合(S2207で”NO”)、戻り値にアクセス許可を設定し(S2209)、プレアクセス判定処理を終了する。
図44は、本発明の第3の実施の形態におけるネットワークアクセス判定処理(S2300)を示すフローチャートである。
まず、ファイルアクセス管理部700は、オブジェクトIDを正変換し、中間装置200(又は、末端装置300)へ、アクセス対象のACLの取得を要求し(S2301)、中間装置200(又は、末端装置300)からACLを受信する(S2302)。
そして、受信したACLに基づいて、アクセスを要求したユーザのアクセス可否を判定する(S2303)。
判定の結果がアクセス許可である場合(S2307で”YES”)、本処理の戻り値(ネットワークアクセス判定処理から呼び出し元の処理に返す値)に”OK”を設定して(S2306)、ネットワークアクセス判定処理を終了する。
一方、判定の結果がアクセス許否である場合(S2307で”NO”)、アクセス拒否をクライアント100へ送信して(S2304)、本処理の戻り値に”NG”を設定(S2305)して、ネットワークアクセス判定処理を終了する。
図45は、第3の実施の形態におけるローカルアクセス判定処理(S2400)を示すフローチャートである。このローカルアクセス判定処理(S2400)は、前述した第2の実施の形態と同じGNSローカル処理(S4300、図38参照)から呼び出される。
まず、ファイルアクセス管理部700は、ファイルシステムプログラム203からアクセス対象のファイルシステムオブジェクトに付与されているACLを取得する(S2401)。そして、取得したACLに基づいて、アクセスを要求したユーザのアクセス可否を判定する(S2402)。
判定の結果がアクセス許可である場合(S2403で”YES”)、本処理の戻り値(ローカルアクセス判定処理から呼び出し元の処理に返す値)に”OK”を設定して(S2405)、ローカルアクセス判定処理を終了する。一方、判定の結果がアクセス許否である場合(S2403で”NO”)、本処理の戻り値に”NG”を設定(S2404)して、ローカルアクセス判定処理を終了する。
以上説明したように、本発明の第3の実施の形態では、ファイルシステムのマウント時にACLの継承を判定せず、ファイルアクセス時にACLの継承を判定するので、前述した第2の実施の形態と同様に、迅速にファイルシステムをマウントすることができる。さらに、第3の実施の形態では、ファイルアクセス時にプレアクセス処理によって、継承先のアクセス情報を取得し、取得した継承先のアクセス情報の少なくとも一つがアクセス拒否を示す場合にはアクセス要求を拒否するので、ファイルアクセス時のアクセス可否を迅速に判定することができる。