一つの実施形態では、データ移行処理装置に、移行対象移行部と、対応管理指示部が備えられる。移行対象移行部は、移行先として指定されたファイルサーバである移行先ファイルサーバに一以上のオブジェクトを含んだ移行対象を移行することができる。対応管理指示部は、オブジェクト対応管理情報を生成することの対応管理指示を移行先ファイルサーバに送信することができる。オブジェクト対応管理情報とは、移行対象に含まれる各オブジェクトを移行元で同定するための各移行元オブジェクトIDと、その各オブジェクトを前記移行先ファイルサーバで同定するための各移行先オブジェクトIDとの対応関係を示す情報である。
移行対象は、論理的な公開の単位であり一以上のオブジェクトを有した共有単位とすることができる。また、データ移行処理装置は、移行元ファイルサーバであっても良いし、中間装置であっても良い。その中間装置は、複数の共有単位を一つの擬似的なファイルシステム(仮想的な名前空間)としてクライアントに提供するファイルレベルの仮想化を行うことができる。
一つの実施形態では、移行対象は、複数のオブジェクトの階層関係を表した第一のディレクトリツリーである。オブジェクト対応管理情報は、第一のディレクトリツリーにおける複数のオブジェクトにそれぞれ関連付けられた複数のリンクファイルを有する第二のディレクトリツリーである。例えば、移行対象が共有単位の場合、対応管理指示部は、移行先ファイルサーバが管理するファイルシステムの特定の位置に特定のディレクトリを作成することを指示し、共有単位におけるオブジェクトの移行元オブジェクトIDを取得し、移行元オブジェクトIDをファイル名としたリンクファイルを特定のディレクトリの下位に配置することを指示することができる。この場合、第二のディレクトリツリーは、特定のディレクトリをトップディレクトリとしたディレクトリツリーとなる。その特定のディレクトリのオブジェクトIDを取得し、管理することができる。
一つの実施形態では、データ移行処理装置が、移行対象を示す移行対象情報と移行先ファイルサーバを表す移行先情報とを移行管理情報に登録する移行管理部と、移行元オブジェクトIDを有した要求データを受け付ける要求データ受付部と、移行元オブジェクトID中の情報を用いてその移行元オブジェクトIDに対応する移行先情報を移行管理情報から特定し、特定された移行先情報が表す移行先ファイルサーバに、移行元オブジェクトIDを有した要求データを転送する要求転送処理部とを更に備えることができる。
一つの実施形態では、データ移行処理装置が、要求転送処理部を更に有することができる。その要求転送処理部は、特定された移行先情報が示す移行先ファイルサーバに、移行元オブジェクトIDと特定のディレクトリのオブジェクトIDとを用いてオブジェクトIDの問合せを発行することができる。要求転送処理部は、要求データが有する移行元オブジェクトIDを、その問合せに応答して移行先ファイルサーバから得られた移行先オブジェクトIDに変更し、移行先オブジェクトIDを有する要求データを、移行先ファイルサーバに転送することができる。要求転送処理部は、このような処理を、例えば、特定された移行先情報から、その移行先情報から特定される移行先ファイルサーバが索引処理機能(オブジェクト対応管理情報を解析して移行元オブジェクトIDに対応した移行先オブジェクトIDを特定する機能)を有しないことを特定した場合に、実行することができる。また、要求転送処理部は、問合せに用いた移行元オブジェクトIDと、その問合せに応答して得られた移行先オブジェクトIDとをキャッシュ領域で対応付け、要求データを受信した場合、その要求データ中の移行元オブジェクトIDに対応した移行先オブジェクトIDがキャッシュ領域から見つかれば、その移行先オブジェクトIDを移行元オブジェクトIDの代わりに有した要求データを、移行先ファイルサーバに転送することができる。また、要求転送処理部は、その移行先オブジェクトIDがキャッシュ領域から見つからない場合に、上述した問合せを発行することができる。
一つの実施形態では、データ移行処理部は、削除指示部を備えることができる。削除指示部は、記移行対象の各オブジェクトについて移行元オブジェクトIDが使用されない場合に、オブジェクト対応管理情報を削除することの削除指示を前記移行先ファイルサーバに指示することができる。この使用されない場合とは、移行対象が全てのクライアントからアンマウントされたことを検出した場合とすることができる。より具体的には、例えば、擬似的なファイルシステムを使用する全てのクライアントからその擬似的なファイルシステムがアンマウントされている場合とすることができる。また、それに代えて又は加えて、削除指示部は、移行対象の移行が完了してから一定時間経ってもどのクライアントからもアクセスが無い場合に、オブジェクト対応管理情報を削除することの削除指示を前記移行先ファイルサーバに指示しても良い。移行先ファイルサーバは、そのような削除指示に応答して、オブジェクト対応管理情報を削除することができる。
一つの実施形態では、データ移行処理装置は、移行元オブジェクトIDを有した要求データを受け付ける要求データ受付部と、その要求データが有する移行元オブジェクトIDに対応するオブジェクトが前記移行対象におけるオブジェクトであって、その移行対象が移行中であるか否かの判定を行う判定部と、判定の結果が肯定的であれば、前記移行元オブジェクトIDに対応したオブジェクトへのアクセスができない旨を示す応答データ(例えばJUKEBOXエラー)を生成して、その要求データの送信元にその応答データを送信する応答処理部とを更に備えることができる。データ移行処理装置は、移行対象が何であれ移行中の場合には全てアクセス保留としても良いし(例えば、ファイルアクセス要求を受け付けた場合には必ずアクセスできない旨の応答データを返す)、移行対象に含まれるオブジェクトについてのファイルアクセス要求を受けた場合にのみ、アクセス保留としても良い。
一つの実施形態では、移行先ファイルサーバが、上記の対応管理指示を受け付ける対応管理指示受付部と、その対応管理指示に応答してオブジェクト対応管理情報を生成する対応管理生成部と、移行元オブジェクトIDを含んだ要求データを受け、その移行元オブジェクトIDに対応した移行先オブジェクトIDをオブジェクト対応管理情報を解析することで特定する移行先オブジェクトID特定部(すなわち前述した索引処理機能)と、移行先オブジェクトIDから同定されるオブジェクトに対してその要求データに従うオペレーションを実行する要求データ処理部とを備えることができる。
一つの実施形態では、共有単位として例えばファイルシステムが、移行元から移行先ファイルサーバに移行される。移行先のファイルシステムに、移行した共有単位を表すディレクトリツリーに加えて、その索引となるディレクトリツリー(以下、索引ディレクトリツリー)が用意される。索引ディレクトリツリーは、移行元のオブジェクトIDをファイル名とした、移行先ファイルへのリンクから構成することができる。ここでリンクとは、移行先のオブジェクト(例えばファイル)を指し示すファイルであり、例えば、ハードリンクやシンボリックリンク等が該当する。
移行元オブジェクトIDには、例えば、共有単位を示す情報である共有情報(例えば、共有単位を同定するための共有ID)が含まれる。また、移行状態管理テーブルが用意される。移行管理部は、例えば、そのテーブルに、まず、移行対象の移行の際、その移行対象に対応した移行元共有情報を登録し、その移行が完了した場合に、その移行先共有情報をその移行元共有情報に対応付けることができる。このため、テーブルを参照することにより、或る共有単位が、移行されていない、移行中、或いは移行済みのいずれであるかを判別することができる。
データ移行処理装置が有する要求データ受付部は、クライアントから、共有情報を含んだ移行元オブジェクトIDを有するファイルアクセス要求を受けることができる。要求転送処理部は、その移行元オブジェクトIDから共有情報を取得し、その共有情報を用いて移行状態管理テーブルを参照することで、その共有情報が表す共有単位が、移行されていないか、移行中か、移行済みかを判別することができる。要求転送処理部は、移行されていない場合は、ファイルアクセス要求を、その共有単位を管理するファイルサーバへ転送し、結果をクライアントに応答することができる。要求転送処理部は、移行中の場合は、クライアントに対してアクセス保留とすることができる(例えば、サービスが一時中断中であることを通知することができる)。要求転送処理部は、移行済みの場合は、移行先のファイルシステムがローカルファイルシステムかどうかを確認し、ローカルファイルシステムならば、移行元オブジェクトIDを用いて索引ディレクトリツリーを辿ることで、ファイルの実体にアクセスし、結果をクライアントに応答することができる。
もし、移行先のファイルシステムが、移行先ファイルサーバというリモートにある場合には、要求転送処理部は、その移行先ファイルサーバに、索引処理機能が備わっているかどうかを確認することができる。索引処理機能が備わっている場合には、要求転送処理部は、クライアントからのファイルアクセス要求を移行先ファイルサーバにそのまま転送し、結果が返ってきたらクライアントに応答することができる。索引処理機能が備わっていない場合には、要求転送処理部は、索引ディレクトリのオブジェクトIDと移行元オブジェクトIDを用いてリンクファイルにアクセスし、リンクを辿ることで、移行先のオブジェクトIDを取得することができる。そして、要求転送処理部は、取得したオブジェクトIDを有するファイルアクセス要求を、移行先ファイルサーバに転送し、結果をクライアントに応答することができる。
上述した各部(移行対象移行部、対応管理指示部、移行管理部、要求データ受付部、要求転送処理部など)は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ(例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること)により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、CD−ROM等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
以下、本発明の幾つかの実施形態について、図面を参照して詳細に説明する。
<第一の実施形態>。
図1は、本発明の第一の実施形態に係る中間装置を備えたコンピュータシステムの構成例を示す図である。
少なくとも1つのクライアント100と、少なくとも1つの中間装置200と、少なくとも1つの末端装置300とが、通信ネットワーク(例えばLAN(Local Area Network))100に接続される。末端装置300が一つも無くても良い。
末端装置300は、クライアント100に、ファイルの作成や削除、ファイルの読出しや書込み、ファイルの移動等のファイルサービスを提供するファイルサーバである。
クライアント100は、末端装置300又は中間装置200が提供するファイルサービスを利用する装置である。
中間装置200は、クライアント100と末端装置300との中間に位置し、クライアント100から末端装置300への要求と、末端装置300からクライアント100への応答とを中継する。クライアント100から中間装置200および末端装置300への要求は、何らかの処理(例えば、ファイルやディレクトリ等のオブジェクトの取得等)を要求するメッセージ信号であり、中間装置200および末端装置300からクライアント100への応答は、要求に対して応答するメッセージ信号である。なお、中間装置200は、クライアント100と末端装置300との通信を中継するように、それらの間に論理的に位置すればよい。クライアント100、中間装置200および末端装置300が同一の通信ネットワーク101に接続されているが、論理的には、中間装置200は、各クライアント100と各末端装置300との間に配置されており、クライアント100と末端装置300との通信を中継する。
中間装置200は、要求や応答の中継機能のみならず、クライアント100にファイルサービスを提供するファイルサーバ機能も具備する。中間装置200は、ファイルサービスを提供する際、仮想化された名前空間を構築して、その仮想的な名前空間をクライアント100に提供する。仮想的な名前空間は、複数の中間装置200や末端装置300のファイルシステムのうち、共有可能な全部又は一部を統合して、単一の擬似的なファイルシステムとしたものである。具体的には、例えば、或る装置200又は300が管理するファイルシステム(ディレクトリツリー)の一部(X)と他の装置200又は300が管理するファイルシステム(ディレクトリツリー)の一部(Y)とが共有可能であった場合に、中間装置200は、XとYとを含んだ単一の擬似的なファイルシステム(ディレクトリツリー)を構築して、クライアント100に提供することができる。この場合のXとYとを含んだ単一の擬似的なファイルシステム(ディレクトリツリー)が、仮想化された名前空間である。仮想化された名前空間は、一般的に、GNS(グローバルネームスペース)と呼ばれる。そのため、以下の説明において、仮想化された名前空間を「GNS」と呼ぶこともある。一方、中間装置200や末端装置300の各々が管理しているファイルシステムを、「ローカルファイルシステム」と呼ぶことがある。特に、例えば、中間装置200にとって、その中間装置200で管理されているローカルファイルシステムのことを、「自ローカルファイルシステム」と呼び、他の中間装置200又は末端装置300で管理されているローカルファイルシステムは、「他ローカルファイルシステム」と呼ぶことがある。
また、以下の説明において、ローカルファイルシステムの全部又は一部であり共有可能な部分(上記の例では、XとY)を、すなわち、ローカルファイルシステムの論理的な公開単位を、「共有単位」と呼ぶことがある。この実施形態では、各共有単位に、共有単位を同定するための識別子である共有IDが割当てられ、中間装置200は、共有IDを利用することにより、クライアント100からのファイルアクセス要求の転送を行うことができる。共有単位には、一以上のオブジェクト(例えばディレクトリやファイル)が含まれる。
また、この実施形態では、複数の中間装置200の中の一つが他の中間装置200を制御することができる。以下、その一つの中間装置200を「親中間装置200p」と呼び、親中間装置によって制御される中間装置200を「子中間装置200c」と呼ぶ。この親子関係は、様々な方法により決定される。例えば、最初に起動された中間装置200を親中間装置と決定し、その後に起動された中間装置200を子中間装置200cと決定することができる。親中間装置200pは、例えば、マスタ中間装置或いはサーバ中間装置と呼ばれてもよいし、子中間装置200cは、例えば、スレイブ中間装置或いはクライアント中間装置と呼ばれても良い。
図2は、中間装置200の構成例を示すブロック図である。
中間装置200は、少なくとも1つのプロセッサ(例えばCPU)201と、メモリ202と、メモリ202に対する入出力のバスであるメモリ-入出力バス204と、メモリ202、記憶装置206及び通信ネットワーク101に対する入出力を制御する入出力コントローラ205と、記憶装置206とを備える。メモリ202は、プロセッサ201に実行されるコンピュータプログラムとして、例えば、構成情報管理プログラム400、スイッチプログラム600及びファイルシステムプログラム203を記憶する。記憶装置206は、一以上の物理的な記憶装置(例えばハードディスク或いはフラッシュメモリ等)の記憶空間を基に形成された論理的な記憶装置(論理ボリューム)であっても良いし、物理的な記憶装置であっても良い。記憶装置206は、ファイル等のデータを管理する少なくとも1つのファイルシステム207を備える。ファイルシステムプログラム203がプロセッサ201で実行されることにより、ファイルシステム207に対するファイルの格納や、ファイルシステム207からのファイルの読出しを行うことができる。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサによって処理が行われるものとする。
構成情報管理プログラム400は、中間装置200が親中間装置200pとしても子中間装置200cとしても振舞うことができるよう構成されている。以下、中間装置200を親中間装置200pとして振舞わせる場合の構成情報管理プログラム400を「親構成情報管理プログラム400p」と表記し、子中間装置200cとして振舞わせる場合の構成情報管理プログラム400を「子構成情報管理プログラム400c」と表記する。構成情報管理プログラム400は、親中間装置200p及び子中間装置200cとしてのいずれかのみに振舞うよう構成されていても良い。構成情報管理プログラム400及びスイッチプログラム600の詳細については、後述する。
図3は、末端装置300の構成例を示すブロック図である。
末端装置300は、少なくとも1つのプロセッサ301と、メモリ302と、メモリ−入出力バス304と、入出力コントローラ305と、記憶装置306とを備える。メモリ302は、ファイルシステムプログラム303を備える。同図には記載されていないが、メモリ302は、さらに構成情報管理プログラム400を備えていてもよい。記憶装置306は、ファイルシステム307を記憶する。
これらの構成要素は、中間装置200における同一名の構成要素とそれぞれ基本的に同一であるので、説明を省略する。なお、記憶装置306は、末端装置300の外に存在してもよい。すなわち、プロセッサ301を有する末端装置300と、記憶装置306とが、分かれていても良い。
図4は、親構成情報管理プログラム400pの構成例を示すブロック図である。
親構成情報管理プログラム400pは、GNS構成情報管理サーバ部401pと、中間装置情報管理サーバ部403と、構成情報通信部404とを備え、共有ID空き管理リスト402と、中間装置構成情報リスト405と、GNS構成情報テーブル1200pとを参照する機能を有する。リスト402及び405や、GNS構成情報テーブル1200pは、メモリ202に記憶されていて良い。
GNS構成情報テーブル1200pは、クライアント200に提供するGNSの構成の定義が記録されたテーブルである。GNS構成情報テーブル1200pの詳細については、後述する。
共有ID空き管理リスト402は、現在割当てることができる共有IDを管理するための電子的なリストである。共有ID空き管理リスト402には、例えば、現在利用されていない共有IDが登録されてもよいし、反対に、現在利用されている共有IDが登録されてもよい。
中間装置構成情報リスト405は、一以上の中間装置200の各々に関する情報(例えば、中間装置200を同定するためのID)が登録される電子的なリストである。
図5は、子構成情報管理プログラム400cの構成例を示すブロック図である。
子構成情報管理プログラム400cは、GNS構成情報管理クライアント部401cと、構成情報通信部404とを備え、GNS構成情報テーブルキャッシュ1200cに情報を登録する機能を有する。
GNS構成情報テーブルキャッシュ1200cは、例えば、メモリ202(或いはプロセッサ201のレジスタ)に用意される。このキャッシュ1200cには、GNS構成情報テーブル1200pと、基本的に同じ内容の情報が登録される。具体的には、親構成情報管理プログラム400pは、GNS構成情報テーブル1200pの内容を子中間装置200cへ通知し、子中間装置200cの子構成情報管理プログラム400cは、その通知された内容を、GNS構成情報テーブルキャッシュに登録する。
図6は、スイッチプログラム600の構成例を示すブロック図である。
スイッチプログラム600は、クライアント通信部606と、中間・末端装置通信部605と、ファイルアクセス管理部700と、オブジェクトID変換処理部604と、擬似ファイルシステム601と、データ移行処理部603と、索引処理部602とを備える。
クライアント通信部606は、クライアント100からの要求(以下、「要求データ」と呼ぶこともある)を受信し、受信した要求データをファイルアクセス管理部700に通知する。また、クライアント通信部606は、ファイルアクセス管理部700から通知された、クライアント100からの要求データに対する応答(以下、「応答データ」と呼ぶこともある)を、クライアント100へ送信する。
中間・末端装置通信部605は、ファイルアクセス管理部700から出力されたデータ(クライアント100からの要求データ)を、中間装置200または末端装置300へ送信する。また、中間・末端装置通信部605は、中間装置200または末端装置300からの応答データを受信し、受信した応答データをファイルアクセス管理部700へ通知する。
ファイルアクセス管理部700は、クライアント通信部606から通知された要求データを解析し、その要求データの処理方法を決定する。そして、決定された処理方法に基づいて、ファイルアクセス管理部700は、中間・末端装置通信部605へその要求データを通知する。また、ファイルアクセス管理部700は、クライアント100からの要求が自分自身の有するファイルシステム207(自ローカルファイルシステム)に対する要求である場合、応答データを生成し、その応答データをクライアント通信部606へ通知する。ファイルアクセス管理部700の詳細については、後述する。
オブジェクトID変換処理部604は、クライアント100から受信した要求データに含まれるオブジェクトIDを、末端装置300が認識できる形式に変換し、また、末端装置300から受信した応答データに含まれるオブジェクトIDを、クライアント100が認識できる形式に変換する。この変換は、後述するアルゴリズム情報に基づいて行われる。
擬似ファイルシステム601は、中間装置200や末端装置300のファイルシステムデータ207の全部又は一部を統合して、単一の擬似的なファイルシステムとしたものである。例えば、擬似ファイルシステム601には、ルートディレクトリ及び所定のディレクトリが構成され、擬似ファイルシステム601は、その所定のディレクトリに、中間装置200や末端装置300が管理するディレクトリをマッピングすることにより、作成される。
データ移行処理部603は、中間装置200間、中間装置200と末端装置300間、または、末端装置300間でのデータの移行を行う。
索引処理部602は、中間装置200間、中間装置200と末端装置300間、または、末端装置300間でデータの移行を行った場合に生じるオブジェクトIDの変更を、クライアント100に対して隠蔽する(つまり、データ移行後のオブジェクトIDをクライアント100に通知しない)。
図7は、ファイルアクセス管理部700の構成例を示すブロック図である。
ファイルアクセス管理部700は、要求データ解析部702と、要求データ処理部701と、応答データ出力部703とを備え、スイッチ情報管理テーブル800と、サーバ情報管理テーブル900と、アルゴリズム情報管理テーブル1000と、接続ポイント管理テーブル1100と、移行状態管理テーブル9300と、アクセス保留共有IDリスト704とを参照する機能を有する。
スイッチ情報管理テーブル800、サーバ情報管理テーブル900、アルゴリズム情報管理テーブル1000、移行状態管理テーブル9300及び接続ポイント管理テーブル1100については、後述する。
アクセス保留共有IDリスト704は、アクセスが保留されている共有IDが登録される電子的なリストである。例えば、マイグレーションの準備中又は実施中に、マイグレーションの対象となっている共有単位の共有IDが、アクセス保留共有IDリスト704に登録され、その登録された共有単位にあるオブジェクトへのアクセスが保留される。
要求データ解析部702は、クライアント通信部606から通知された要求データを解析する。そして、要求データ解析部702は、通知された要求データからオブジェクトIDを取得し、そのオブジェクトIDから、共有IDを取得する。
要求データ処理部701は、要求データ解析部702が取得した共有IDに基づいて、スイッチ情報管理テーブル800と、サーバ情報管理テーブル900と、アルゴリズム情報管理テーブル1000と、接続ポイント管理テーブル1100と、移行状態管理テーブル9300と、アクセス保留共有IDリスト704とのうちの任意の情報を参照し、要求データを処理する。
応答データ出力部703は、要求データ処理部701から通知された応答データをクライアント100が応答可能な形式にして、クライアント通信部606へ出力する。
図8は、スイッチ情報管理テーブル800の構成例を示す図である。
スイッチ情報管理テーブル800は、共有ID801と、サーバ情報ID802と、アルゴリズム情報ID803との組によって構成されたエントリを有するテーブルである。共有ID801は、共有単位を同定するためのIDである。サーバ情報ID802は、サーバ情報を同定するためのIDである。アルゴリズム情報ID803は、アルゴリズム情報を同定するためのIDである。中間装置200は、オブジェクトIDから取得された共有IDに一致する共有ID801に対応したサーバ情報ID802及びアルゴリズム情報ID803を取得することができる。本テーブル800には、一つの共有ID801に対して複数のサーバ情報ID802及びアルゴリズム情報ID803の組が登録されても良い。
図9は、サーバ情報管理テーブル900の構成例を示す図である。
サーバ情報管理テーブル900は、サーバ情報ID901とサーバ情報902との組によって構成されたエントリを有するテーブルである。サーバ情報902は、例えば、中間装置200又は末端装置300のIPアドレスや、ソケット構造体などである。中間装置200は、取得されたサーバ情報ID702に一致するサーバ情報ID901に対応したサーバ情報902を取得し、そのサーバ情報902から、クライアント100からの要求の処理先(例えば転送先)を特定することできる。
図10は、アルゴリズム情報管理テーブル1000の構成例を示す図である。
アルゴリズム情報管理テーブル1000は、アルゴリズム情報ID1001と、アルゴリズム情報1002との組によって構成されたエントリを有するテーブルである。アルゴリズム情報1002は、オブジェクトIDの変換方式を示す情報である。中間装置200は、取得されたアルゴリズム情報ID1001に一致するアルゴリズム情報ID1001に対応したアルゴリズム情報1002を取得し、そのアルゴリズム情報1002から、オブジェクトIDをどのように変換するかを特定することができる。
なお、本実施形態では、スイッチ情報管理テーブル800とサーバ情報管理テーブル900とアルゴリズム情報管理テーブル1000は、別々のテーブルとして構成されたが、スイッチ情報管理テーブル800に、サーバ情報902とアルゴリズム情報1002とを含めることで、これらが一つのテーブルとして構成されてもよい。
図11は、接続ポイント管理テーブル1100の構成例を示す図である。
接続ポイント管理テーブル1100は、接続元オブジェクトID1101と、接続先共有ID1102と、接続先オブジェクトID1103との組で構成されたエントリを有するテーブルである。このテーブルが参照されることによって、中間装置200は、或る共有単位から別の共有単位へ跨るアクセスの場合も、クライアント100に対して単一の共有単位へのアクセス手順のみでのアクセスが可能となる。なお、ここでの接続元オブジェクトID1101や接続先オブジェクトID1103は、オブジェクトを同定する識別子(例えばファイルハンドル等)であり、クライアント100と中間装置200でやり取りされるものでもよいし、両者間でやり取りされるものでなくともオブジェクトを同定できるものであればよい。
図12は、GNS構成情報テーブル1200の構成例を示す図である。
GNS構成情報テーブル1200は、共有ID1201と、GNSパス名1202と、サーバ名1203と、共有パス名1204と、共有設定情報1205と、アルゴリズム情報ID1206との組で構成されたエントリを有するテーブルである。このテーブル1200でも、スイッチ情報管理テーブル800の場合と同様に、同一の共有ID1201を含んだ複数のエントリを持つことができる。共有ID1201は、共有単位を同定するためのIDである。GNSパス名1202は、共有ID1201に対応する共有単位をGNSに統合するパスである。サーバ名1203は、共有ID1201に対応する共有単位を保有するサーバ名である。共有パス名1204は、共有ID1201に対応する共有単位のサーバ上でのパス名である。共有設定情報1205は、共有ID1201に対応する共有単位に関する情報(例えば、共有単位のトップディレクトリ(ルートディレクトリ)に設定する情報、具体的には、例えば、読み込み専用を示す情報や、アクセス可能なホストの制限に関する情報など)である。アルゴリズム情報ID1206は、共有ID1201に対応する共有単位のオブジェクトIDの変換をどのように行うかを示すアルゴリズム情報の識別子である。
図13Aは、拡張形式OKケースでやり取りされるオブジェクトIDの一例を示す図である。図13Bは、拡張形式NGケースでやり取りされるオブジェクトIDを示す図である。
拡張形式OKケースとは、共有ID形式フォーマットのオブジェクトIDを末端装置300が解釈できる場合であり、拡張形式NGケースとは、共有ID形式フォーマットのオブジェクトIDを末端装置300が解釈できない場合であり、それぞれの場合で、装置間でやり取りされるオブジェクトIDが異なる。
共有ID形式のフォーマットとは、オリジナルオブジェクトIDが拡張されたオブジェクトIDのフォーマットであり、3つのフィールドが用意されている。第一のフィールドには、オブジェクトID形式を示す情報であるオブジェクトID形式1301が書かれる。第二のフィールドには、共有単位を同定するための共有ID1302が書かれる。第三のフィールドには、拡張形式OKケースでは、図13Aに示すように、オリジナルオブジェクトID1303が書かれ、拡張形式NGケースでは、図13Bの(a)に示すように、変換後のオリジナルオブジェクトID1304が書かれる。
共有ID形式フォーマットのオブジェクトIDを生成できる装置は、中間装置200と一部の末端装置300である。拡張形式OKケースでは、クライアント100と中間装置200との間、中間装置200と中間装置200との間及び中間装置200と末端装置間300との間の全てにおいて、共有ID形式フォーマットが利用され、やり取りされるオブジェクトIDのフォーマットは不変である。前述したように、拡張形式OKケースでは、第三のフィールドに、オリジナルオブジェクトID1303が書かれるが、それは、オブジェクトを保有する装置200又は300がそのオブジェクトをその装置200又は300内で同定するための識別子(例えばファイルのID)である。
一方、拡張形式NGケースでは、クライアント100と中間装置200との間、及び中間装置200と中間装置200との間では、図13Bの(a)に示すように、共有ID形式フォーマットのオブジェクトIDがやり取りされるが、第三のフィールドには、前述したように、変換後のオリジナルオブジェクトID1304が書かれる。そして、中間装置200と末端装置300との間では、図13Bの(b)に示すように、末端装置300が解釈できるオリジナルオブジェクトID1305でやり取りされる。即ち、拡張形式NGケースでは、中間装置200が、末端装置300からオリジナルオブジェクトID1305を受けた場合、そのオリジナルオブジェクトID1305を、共有形式フォーマットの第三のフィールドに記録する情報(変換後のオブジェクトID1304)に変換する正変換を行う。また、中間装置200は、共有形式フォーマットのオブジェクトIDを受けた場合、第三のフィールドに書かれている情報をオリジナルオブジェクトID1305に変換する逆変換を行う。正変換及び逆変換のいずれも、上述したアルゴリズム情報1002に基づいて行われる。
具体的には、例えば、変換後のオリジナルオブジェクトID1304は、オリジナルオブジェクトID1305それ自体、又は、オリジナルオブジェクトID1305の全部又は一部についてアルゴリズム情報1002に基づく変換処理が行われたものである。例えば、オブジェクトIDが可変長であり、オリジナルオブジェクトID1305の長さに第一及び第二フィールドの長さを加えた長さが、オブジェクトIDの最大長以下であれば、第三のフィールドに、オリジナルオブジェクトID1305が変換後のオリジナルオブジェクトID1304として書込まれても良い。一方、例えば、オブジェクトIDのデータ長が固定長とされており、オブジェクトID形式1301及び共有ID1302を追加することによってその固定長をオーバーしてしまう場合は、オリジナルオブジェクトID1305の全部又は一部についてアルゴリズム情報1002に基づく変換処理が行われる。この場合は、例えば、不必要なデータを削除する等して、変換後のオリジナルオブジェクトID1304がオリジナルオブジェクトID1305のデータ長よりも短くなるように変換される。
次に、中間装置200の動作について説明する。中間装置200は、上述したように、複数の共有単位を統合して単一の擬似的なファイルシステムとしたもの、つまりGNSをクライアント100に提供する。
図14は、中間装置200がGNSを提供する処理のフローチャートである。
まず、クライアント通信部606は、クライアント100からオブジェクトへのアクセス要求を含んだ要求データを受信する。要求データには、アクセス対象のオブジェクトを同定するためのオブジェクトIDが含まれている。クライアント通信部606は、受信した要求データをファイルアクセス管理部700へ通知する。オブジェクトへのアクセス要求は、例えば、NFSプロトコルのリモートプロシージャーコール(RPC)を利用して行われる。要求データの通知を受けたファイルアクセス管理部700は、要求データからオブジェクトIDを抽出する。そして、ファイルアクセス管理部700は、オブジェクトIDのオブジェクトID形式1301を参照して、このオブジェクトIDのフォーマットが、共有ID形式フォーマットであるかどうかを判定する(S101)。
共有ID形式フォーマットでなかった場合は(S101:NO)、従来のファイルサービス処理が行われ(S102)、その後、処理が終了する。
共有ID形式フォーマットであった場合は(S101:YES)、ファイルアクセス管理部700は、抽出したオブジェクトIDに含まれる共有ID1302を取得する。そして、ファイルアクセス管理部700は、アクセス保留共有IDリスト704に登録された共有IDの中に、取得した共有ID1302と一致するものがあるかどうかを判定する(S103)。
アクセス保留共有IDリスト704に登録されているものと一致する場合は(S103:YES)、ファイルアクセス管理部700は、クライアント通信部606を介して、要求データに含まれるオブジェクトIDに対応したオブジェクトへのアクセスが保留されている旨を示す応答データをクライアント100へ送信し(S104)、その後、処理が終了する。
アクセス保留共有IDリスト704に登録されているものと一致しない場合は(S103:NO)、ファイルアクセス管理部700は、取得した共有ID1302と一致する共有ID801を含んだエントリがスイッチ情報管理テーブル800にあるかどうかを判定する(S105)。ここで、前述したように、共有ID801が、取得した共有ID1302と一致するエントリは、複数存在する場合もある。
一致するエントリがない場合は(S105:NO)、受信した要求データは、この中間装置200が処理を行うべきものと判断され、ファイルシステムプログラム203が実行されて、GNSローカル処理が行われる(S300)。GNSローカル処理の詳細については、後述する。
一致するエントリがある場合は(S105:YES)、受信した要求データは、この中間装置200以外の装置が処理を行うべきものと判断され、共有ID801が一致するエントリから、一組のサーバ情報ID802とアルゴリズム情報ID803との組が取得される(S106)。一致するエントリが複数ある場合には、例えば、その複数のエントリの中から、ラウンドロビンによって又はあらかじめ計測しておいた応答時間に基づいて、一のエントリが選択され、その選択されたエントリから、サーバ情報ID802とアルゴリズム情報ID803とが取得される。
次に、ファイルアクセス管理部700は、サーバ情報管理テーブル900を参照し、取得したサーバ情報ID802と一致するサーバ情報ID901に対応するサーバ情報902を取得する。同様に、ファイルアクセス管理部700は、アルゴリズム情報管理テーブル1000を参照し、取得したアルゴリズム情報ID803と一致するアルゴリズム情報ID1001に対応するアルゴリズム情報1002を取得する(S111)。
その後、ファイルアクセス管理部700は、アルゴリズム情報1002が所定値(例えば0という値)でなければ、オブジェクトID変換処理部604に指示して、取得したアルゴリズム情報1002に基づく逆変換を行わせ(S107)、一方、アルゴリズム情報1002が所定値であれば、このS107をスキップする。アルゴリズム情報1002が所定値であるということは、本実施形態では、他の中間装置200に要求データが転送されることを意味する。つまり、中間装置200間での転送では、要求データは単に転送されるだけであって、変換処理は何ら行われない。すなわち、アルゴリズム情報1002には、何も変換しないアルゴリズムを意味する情報(つまり上記所定値)や、オブジェクトID形式1301及び共有ID1302を追加又は削除するのみのアルゴリズムを示す情報や、オブジェクトID形式1301及び共有IDフィールド1302を追加又は削除し、更に変換後のオリジナルオブジェクトID1304からオリジナルオブジェクトID1303を復元するアルゴリズムを示す情報等がある。
次に、ファイルアクセス要求レベルでトランザクション管理を行っているプロトコルであって、要求データ中にトランザクションIDが含まれる場合は、ファイルアクセス管理部700は、そのトランザクションIDを保存し、要求データの転送先装置200又は300に対するトランザクションIDを付与する(S108)。転送先装置200又は300は、サーバ情報管理テーブル900を参照し、取得した組のサーバ情報ID901に対応するサーバ情報902から同定することができる。なお、上記の条件に満たない場合(例えば、要求データ中にトランザクションIDが含まれない場合)は、このS108はスキップされて良い。
次に、ファイルアクセス管理部700は、中間・末端装置通信部605を介して、S111において取得したサーバ情報902に基づいて特定された装置200又は300へ、受信した要求データそれ自体、或いは、変換後のオリジナルオブジェクトID1304を含む要求データを、送信する(S109)。その後、中間・末端装置通信部605は、送信先の装置からの応答データの受信を待つ(S110)。
中間・末端装置通信部605が応答データを受信すると、応答処理が行われる(S200)。応答処理の詳細については、図15を用いて説明する。
図15は、中間装置200が応答データを受信した際の処理(応答処理)のフローチャートである。
中間・末端装置通信部605は、末端装置300もしくは他の中間装置200より応答データを受信する(S201)。中間・末端通信部605は、受信した応答データをファイルアクセス管理部700へ通知する。
ファイルアクセス管理部700は、応答データ中にオブジェクトIDがある場合は、オブジェクトID変換処理部604に対して、応答データに含まれるオブジェクトIDの変換を指示する。指示を受けたオブジェクトID変換処理部604は、S107において参照されたアルゴリズム情報1002に基づいて、オブジェクトIDを正変換する(S202)。もし、そのアルゴリズム情報1002が所定値であれば、このS2002はスキップされる。
ファイルアクセス要求レベルでトランザクション管理が行われるプロトコルで、応答データ中にトランザクションIDが含まれる場合は、ファイルアクセス管理部700は、S108にて保存しておいたトランザクションIDを応答メッセージに上書きする(S203)。なお、上記の条件に満たない場合(例えば、応答データ中にトランザクションIDが含まれない場合)、このS203はスキップされて良い。
その後、ファイルアクセス管理部700は、共有単位を跨るアクセスに対する処理である接続ポイント処理を行う(S400)。接続ポイント処理の詳細は、後述する。
その後、ファイルアクセス管理部700は、クライアント通信部606を介して、応答データをクライアント100へ送信し、応答処理を終了する。
図16は、中間装置200が行うGNSローカル処理のフローチャートである。
まず、要求データから抽出されたオブジェクトID中の共有ID1302とオリジナルオブジェクトID1303とから、アクセス対象のオブジェクトが同定される(S301)。
次に、要求データ中に含まれている、オブジェクトに対するオペレーション(例えば、ファイルの書込み或いは読出し)を示す情報に基づいて、応答データが作成される(S302)。応答データ中にオブジェクトIDを含める必要がある場合には、そのオブジェクトIDのフォーマットには、受信したフォーマットと同じフォーマットが用いられる。
その後、スイッチプログラム600のファイルアクセス管理部700により、接続ポイント処理が行われる(S400)。
その後、応答データがクライアント100へ送信される。
図17は、中間装置200が行う接続ポイント処理のフローチャートである。
まず、ファイルアクセス管理部700は、応答データ中に、オブジェクトへのアクセス要求(要求データ)で指定されたアクセス対象のオブジェクトから見て、そのオブジェクトの子オブジェクト(ディレクトリツリーにおいて、アクセス対象のオブジェクトの下位のオブジェクト)又は親オブジェクト(ディレクトリツリーにおいて、アクセス対象のオブジェクトの上位のオブジェクト)のオブジェクトIDが、一以上含まれるかどうかを確認する(S401)。このような子オブジェクトや親オブジェクトのオブジェクトIDを含む応答データとしては、例えば、NFSプロトコルでいえば、LOOKUPプロシージャや、READDIRプロシージャや、READDIRPLUSプロシージャの応答データが該当する。応答データ中に、子オブジェクト又は親オブジェクトのオブジェクトIDが全く含まれない場合は(S401:NO)、処理を終了する。
応答データ中に、子オブジェクト又は親オブジェクトのオブジェクトIDが一以上含まれる場合は(S401:YES)、ファイルアクセス管理部700は、応答データ中の一の子オブジェクト又は親オブジェクトのオブジェクトIDを選択する(S402)。
そして、ファイルアクセス管理部700は、接続ポイント管理テーブル1100を参照して、選択されたオブジェクトIDのオブジェクトが接続ポイントであるかどうかを判定する(S403)。具体的には、ファイルアクセス管理部700は、接続ポイント管理テーブル1100に登録されたエントリの中に、そのエントリの接続元オブジェクトID1101が、選択されたオブジェクトIDと一致するものがあるかどうかを判定する。
一致するエントリがない場合は(S403:NO)、応答データ中に、未だ選択されていない他の子オブジェクト又は親オブジェクトのオブジェクトIDが含まれているかどうかが確認される(S407)。他の子オブジェクト又は親オブジェクトのオブジェクトIDが含まれていない場合は(S407:NO)、接続ポイント処理が終了する。他の子オブジェクト又は親オブジェクトのオブジェクトIDが含まれている場合は(S407:YES)、未だ選択されていない一の子オブジェクト又は親オブジェクトのオブジェクトIDが選択される(S408)。そして、S403からの処理が再び行われる。
一致するエントリがある場合は(S403:YES)、その応答データ中のオブジェクトIDが、それと一致する接続元オブジェクトID1101に対応する接続先オブジェクトID1103へ置換される(S404)。
次に、ファイルアクセス管理部700は、選択されたオブジェクトIDのオブジェクトに関連する付随情報があるか否かを判定する(S405)。付随情報とは、例えば、そのオブジェクトに関する属性を示す情報である。付随情報がない場合は(S405:NO)、S407へ処理が移行する。付随情報がある場合は(S405:YES)、接続元オブジェクトの付随情報が接続先オブジェクトの付随情報に置換され(S406)、S407へ処理を移す。
以下、この実施形態においてデータ移行に関する部分について特に詳細に説明する。
図18は、移行元ファイルシステム501と移行先ファイルシステム500の構成の一例を示す図である。
移行元ファイルシステム501とは、データの移行元の装置(中間装置200又は末端装置300、以下、「移行元装置200又は300」と言うことがある)が管理するファイルシステム207又は307である。一方、移行先ファイルシステム502とは、データの移行先の装置(中間装置200又は末端装置300、以下、「移行先装置200又は300」と言うことがある)が管理するファイルシステム207又は307である。
移行元ファイルシステム501や移行先ファイルシステム502では、ディレクトリツリー502でディレクトリ506やファイル508が階層的に管理される。また、移行先ファイルシステム500には、索引ディレクトリツリー503が構築される。
索引ディレクトリ504以下のファイルは、データの移行を行った際の、移行元のファイル508のオブジェクトID(移行元オブジェクトID)をファイル名とする、移行先のファイル507へのハードリンク505である。ハードリンクとは、ファイルシステム上のディレクトリやファイルの実体に対するリンクのことであり、例えば、UNIX(登録商標)系のファイルシステムならば、ディレクトリやファイルの固有のIDであるi-nodeが同一であることを意味する。なお、このハードリンク505はシンボリックリンク等のリンクでもよく、移行先のファイル507を指し示すファイルであればよい。すなわち、索引ディレクトリツリー503は、移行元装置200又は300での移行前のオブジェクトID(移行元オブジェクトID)と、移行先装置200又は300での移行後のオブジェクトID(移行先オブジェクトID)との対応関係を表すツリーである。索引処理部602は、索引ディレクトリツリー503から、移行元オブジェクトIDに対応した移行先オブジェクトIDを特定することができる。移行元オブジェクトIDと移行先オブジェクトIDとの対応関係は、必ずしもディレクトリツリーで管理しなくても良く、例えば、テーブルで管理されても良い。しかし、ディレクトリツリーは、ファイルシステムプログラム203又は303によって作成することができる管理情報であるため、ディレクトリツリーでの管理とすれば、移行先装置200又は300にテーブル作成機能を新たに設けるといったことが不要とすることができる。
具体的には、索引ディレクトリツリー503は、中間装置200間、中間装置200と末端装置300間、または、末端装置300間でデータの移行を行う場合に、データ移行処理部603が、移行先装置200又は300に、索引ディレクトリツリー503の作成指示を出し、移行先装置200又は300のファイルシステムプログラム203又は303により、その作成指示に従って作成される。その作成指示には、例えば、どんな構造のディレクトリツリーを作成し各ツリーノード(ディレクトリポイント)にどんなオブジェクト名を配置するかを示す情報(以下、索引ディレクトリ定義情報)が含まれる。具体的には、索引ディレクトリ定義情報は、移行先ファイルシステム500のどこに索引ディレクトリ504を配置し、その索引ディレクトリ504の下位にどんなハードリンク505(どんな移行元オブジェクトIDをファイル名としたハードリンク505)を作成するかを示す。移行先装置200又は300のファイルシステムプログラム203又は303は、その索引ディレクトリ定義情報に従って、図5に例示するような索引ディレクトリツリー503を作成する。索引ディレクトリツリー503は、通常のディレクトリツリーであるため、前述したように、移行先装置200又は300のファイルシステムプログラム203又は303により作成することができる。
図19は、第一の実施形態での移行状態管理テーブル9300の構成例を示す図である。
移行状態管理テーブル9300は、移行元共有ID9301と、移行先共有ID9302と、移行先共有関連情報9303と、索引ディレクトリオブジェクトID9304との組によって構成されたエントリを有するテーブルである。移行元共有ID9301は、移行元の共有単位を同定するためのIDである。移行先共有ID9302は、移行先の共有単位を同定するためのIDである。移行先共有関連情報9303は、データの移行先としての共有単位に関する情報であり、例えば、データの移行先の共有単位がローカルファイルシステムであるか否かを示す情報と、移行先装置200又は300に索引ディレクトリを辿る機能があるかどうかを示す情報とを含んだ情報である。索引ディレクトリオブジェクトID1304は、索引ディレクトリ504を同定するためのID(例えばパス名でも良い)である。
以下、中間装置200のデータ移行処理に関わる動作について説明する。
中間装置200は、擬似ファイルシステム401上のディレクトリツリーの構造(GNS構成)を維持したまま、そのディレクトリツリーを構成する共有単位(末端装置300の公開ディレクトリを元とするツリー構造)内のファイルを、別の中間装置200又は末端装置300に移行した後、その共有単位のマッピングを変更することによって、クライアント100にデータの移行を隠蔽したまま、中間装置200および末端装置300の記憶装置206における容量不足や、中間装置200および末端装置300のファイルアクセス処理の負荷を軽減することができる。
例えば、図20における擬似ファイルシステム401では、中間装置200上のファイルシステムAに対するファイルアクセス処理の負荷が低く、末端装置300上のファイルシステムBのファイルアクセス処理の負荷が高いため、末端装置300のファイルシステムBを中間装置200にコピーすることが望ましい状況であるとする。このような状況において、本実施形態の中間装置200は、図20に示すように、ファイルシステムB上のディレクトリツリーをファイルシステムC上にコピーし、擬似ファイルシステム401のディレクトリ構造を変えることなくマッピング情報のみを変更することで、クライアント100にデータの移行を隠蔽しつつ、末端装置300の負荷を下げることができる。
データ移行処理の手順について、詳細に説明する。
図21は、第一の実施形態でのデータ移行処理のフローチャートである。
このデータ移行処理は、例えば、設定元装置(例えば管理計算機)から所定の指示を中間装置200が受けたことに応答して開始される。その所定の指示では、例えば、移行対象の共有単位を同定するための共有IDと、移行先装置200又は300を特定するための情報(以下、移行先サーバ名とする)とが指定される。以下、その共有単位がファイルシステム全体であるとする。
S1100で、その中間装置200におけるデータ移行処理部603は、移行元装置200又は300の移行元ファイルシステム501における移行対象のディレクトリツリーを格納可能なサイズの移行先ファイルシステム500を、移行先装置200又は300に作成する。また、データ移行処理部603は、移行先ファイルシステム500の特定の位置(例えば、ルートディレクトリ直下)に索引ディレクトリ504を作成するための作成指示を、移行先装置200又は300に送信する。移行先装置200又は300のファイルシステムプログラム203又は303が、その作成指示に応答して、移行先ファイルシステム500の特定の位置に、索引ディレクトリ504を作成する。
S1101で、データ移行処理部603は、ファイルアクセス管理部700の移行状態管理テーブル9300に、移行元共有ID9301(例えば上記所定の指示で指定された共有ID)と、S1100で作成した索引ディレクトリ504のオブジェクトID1304とを登録する。そのオブジェクトID1304は、例えば、所定のルールでデータ移行処理部603により定められたオブジェクトIDである。また、そのオブジェクトIDは、例えば、共有ID形式フォーマットのオブジェクトIDである。このS1101の時点から、ファイルアクセス管理部700は、少なくとも移行元共有ID9301から同定される共有単位について(例えばその移行元共有ID9301をアクセス保留共有IDリスト704に登録することにより)、クライアント100からの要求を一時的に受け付けない状態となる。
S1102で、データ移行処理部603は、移行元ファイルシステム501からコピー対象のディレクトリ506又はファイル507を選び、選んだディレクトリ506又はファイル507の移行元オブジェクトIDを取得する。
S1103で、データ移行処理部603は、S1102で選んだディレクトリ506又はファイル507を、移行元ファイルシステム501から移行先ファイルシステム500へコピーする。
S1104で、データ移行処理部603は、ステップS1100で作成した索引ディレクトリ504に、コピー先のディレクトリ506及び/又はファイル507に関連づいたリンクファイルであるハードリンク505を作成することを、移行先ファイルシステム500を管理する移行先装置200又は300に指示する。具体的には、例えば、データ移行処理部603は、S1102で取得した移行元オブジェクトIDをファイル名としたハードリンク505を、S1100で作成させた索引ディレクトリ504の下位(例えば真下)に配置することのリンクファイル作成指示(例えば、ハードリンク505のファイル名としての移行元オブジェクトIDと、ハードリンク505の位置とが指定された指示)を移行先装置200又は300に指示する。移行先装置200又は300のファイルシステムプログラム203又は303が、その指示に従い、索引ディレクトリ504の下位に、移行元オブジェクトIDをファイル名としたハードリンク505を作成する。
データ移行処理部603は、移行元ファイルシステム501上のディレクトリツリーを辿りながら、コピー対象がなくなるまで、S1102、S1103及びS1104を繰り返す(S1105)。コピー対象がなくなったならば、S1106に進む。
S1106で、データ移行処理部603は、移行状態管理テーブル9300の当該移行元共有ID9301を含んだエントリに、移行先共有ID9302と、移行先共有関連情報9303とを追加する。その移行先共有ID9302は、例えば、所定の規則によって(例えば共有ID空き管理リスト402の使用により)決定された値となる。また、移行先共有関連情報9303は、このデータ移行処理部603を有する中間装置200にとって移行先ファイルシステム500が自ローカルファイルシステムか否かを示す情報と、移行先装置200又は300に索引ディレクトリを辿る機能があるかどうかを示す情報とを含んだ情報となる。この移行先共有関連情報9303は、例えば、管理者が指定してもよいし、移行先装置200又は300を表すサーバ情報などから特定してもよい。
S1107で、データ移行処理部603は、スイッチ情報管理テーブル800から、移行元共有ID9301と一致する共有ID801を含んだエントリを削除する。また、データ移行処理部603は、移行先共有ID9302と一致する共有ID801と、移行先装置200又は300を表すサーバ情報に対応したサーバ情報ID702と、そのサーバ情報に適したアルゴリズム情報を同定するためのアルゴリズム情報ID703との組から構成されるエントリを追加したうえで、移行先ファイルシステム500におけるディレクトリツリーを公開する。この時点で、ファイルアクセス管理部700は、クライアント100からの要求の受付を再開する(例えば、アクセス保留共有IDリスト704から、移行元共有ID9301に一致する共有IDを削除する)。なお、アルゴリズム情報ID703の値は、例えば、移行先ファイルシステム500を自ローカルファイルシステムとする装置が中間装置200の場合には、所定値であるアルゴリズム情報に対応したアルゴリズム情報ID703となる。
次に、データ移行処理の後に、クライアント100から要求データを受信した場合の処理手順について、詳細に説明する。
図22は、第一の実施形態においてクライアント100から要求データを受信した中間装置200が行う処理のフローチャートである。
S1110で、クライアント通信部606がクライアント100からの要求データを受信し、ファイルアクセス管理部700へ出力する。
S1111で、ファイルアクセス管理部700は、要求データ中のオブジェクトIDを抽出し、そのオブジェクトIDから共有IDを取得する。
S1112で、ファイルアクセス管理部700は、移行状態管理テーブル9300に、S1111で取得した共有IDと一致する移行元共有ID9301を含んだエントリ(以下、当該エントリ)があるかどうかを判断する。有るとの判断になれば、S1113に進み、無いとの判断になれば、S1122に進む。
S1113では、ファイルアクセス管理部700は、当該エントリの移行先共有ID9302が空かどうかを判断する。空きであるとの判断になれば、S1114に進み、空きではないとの判断になれば、S1115に進む。
S1114に進むということは、データの移行処理が完了していないことを意味する。そのため、S1114で、ファイルアクセス管理部700は、サービスの一時中断を示すエラーを含む応答データを生成し、クライアント通信部606へ出力する。サービスの一時中断を示すエラーとは、例えば、ファイル共有プロトコルがNFSの場合、JUKEBOXエラーのことである。
S1115で、ファイルアクセス管理部700は、当該エントリにおける移行先共有関連情報1003を参照し、移行先ファイルシステム500が自ローカルファイルシステムであるかどうかを判断する。自ローカルファイルシステムであるとの判断になれば、S1116に進み、自ローカルファイルシステムではないとの判断になれば、S1118に進む。
S1116で、索引処理部602は、当該エントリにおける索引ディレクトリオブジェクトID9304から索引ディレクトリ504を同定する。そして、索引処理部602は、S1111で要求データから抽出したオブジェクトIDをファイル名とするハードリンク505を内部的に辿り、クライアント100から要求されたファイルアクセス処理を行う(つまり、要求データに従う処理を行う)。ハードリンク505を内部的に辿るとは、例えば、UNIX系のファイルシステム207ならば、ハードリンク505によって得られるinode情報を利用して、ファイル共有プロトコルを介することなく、所望のディレクトリ506およびファイル507にアクセスすることである。
S1117で、ファイルアクセス管理部700は、取得した結果をクライアント通信部606へ出力する。取得した結果とは、例えば、アクセスの成否を示す応答データであり、移行先がリモートの場合には、転送された要求データの応答データである。
S1118で、ファイルアクセス管理部700は、移行先ファイルシステム500が索引処理部602に対応しているかどうか、すなわち、移行先装置200又は300に索引ディレクトリを辿る機能があるかどうかを判断する。これは、移行状態管理テーブル9300の当該エントリにおける移行先共有関連情報9303を参照することによって判断する。移行先装置200又は300に索引ディレクトリを辿る機能がある場合は、S1119に進み、無い場合は、S1120に進む。
S1119で、ファイルアクセス管理部700は、スイッチ情報管理テーブル800から、当該エントリにおける移行先共有ID9302と一致する共有ID801を含んだエントリを特定する。ファイルアクセス管理部700は、特定されたエントリにおけるサーバ情報ID802と一致するサーバ情報ID901に対応したサーバ情報902を特定し、そのサーバ情報902から、転送先装置200又は300を特定する。ファイルアクセス管理部700は、特定した転送先装置200又は300に、要求データを、中間・末端装置通信部605を通して転送する。
S1120で、索引処理部602は、ファイルアクセス管理部700を経由してスイッチ情報管理テーブル800と移行状態管理テーブル9300とを参照する。索引処理部602は、移行先共有ID9302と一致する共有ID801を含んだ、スイッチ情報管理テーブル800のエントリと、上記当該エントリにおける索引ディレクトリオブジェクトID9304とをそれぞれ取得する。次に、索引処理部602は、スイッチ情報管理テーブル800から取得したエントリに対応する転送先装置200又は300に対し、索引ディレクトリオブジェクトID9304と、S1111で抽出したオブジェクトIDとを用いて、索引ディレクトリ504内にある、S1111で抽出したオブジェクトIDをファイル名とするハードリンク505のオブジェクトIDを取得する要求を発行する。オブジェクトIDを取得する要求とは、例えば、NFSの場合、LOOKUP要求のことである。NFSのLOOKUP要求では、ディレクトリのオブジェクトIDと、オブジェクトの名前を用いて要求を発行することで、そのディレクトリ内のオブジェクトのオブジェクトIDを取得することができる。
S1121で、ファイルアクセス管理部700は、クライアント100からの要求データ中のオブジェクトIDを、データ移行処理後のオブジェクトIDに変更して、その要求データ(例えばファイルアクセス要求)を、上記転送先装置200又は300に転送する。データ移行処理後のオブジェクトIDとは、S1120の要求で得られた結果である。
S1122で、ファイルアクセス管理部700は、スイッチ情報管理テーブル800から、要求データにおけるオブジェクトID中の共有IDに対応するエントリを取得し、中間・末端装置通信部605を通して、適切な転送先装置200又は300に転送するか、自ローカルファイルシステムにアクセスする。このS1122では、例えば、図14を参照して説明した処理が行われる。
以上が、第一の実施形態についての説明である。
この第一の実施形態では、要求データを受けた中間装置200と、要求データで指定されたアクセス先のオブジェクト(指定されたオブジェクトIDから同定されるオブジェクト)を有する移行先装置200又は300とが異なる場合、要求データを転送する要求転送処理は、その中間装置200で行われるが、アクセス先のオブジェクトを探すオブジェクトサーチ処理は、移行先装置200又は300で行われる。このため、要求データを受けた中間装置200の負荷を軽減することができる。そして、第一の実施形態では、オブジェクトIDの対応関係を中間装置200間で同期する必要がない。これらのことから、高いスケーラビリティを実現することが期待できる。
<第二の実施形態>。
次に、本発明の第二の実施形態を説明する。以下、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する(これは、後述の第三の実施形態についても同様である)。
第二の実施形態の中間装置200において、スイッチプログラム600が、図23に示すように、オブジェクトIDキャッシュ607を更に備える。
本実施形態の中間装置200は、移行先装置200又は300が索引処理部602をもたず、索引ディレクトリ504に対応していない場合に、オブジェクトIDキャッシュ607に、いったん取得したオブジェクトIDを一時的に保持する機能を有する。それにより、移行先装置200又は300に対するオブジェクトID取得要求を効率よく発行することができる。
以下、中間装置200がクライアント100から要求データを受信した場合の処理手順について、詳細に説明する。
図24は、第二の実施形態においてクライアント100から要求データを受信した中間装置200が行う処理のフローチャートである。
第一の実施形態での処理の手順と異なるのは、移行先のファイルシステム500が索引処理部602に対応していない場合に実行されるS1130からS1133までである。
この場合、S1130で、索引処理部602は、クライアント100からの要求データに含まれる移行元オブジェクトIDに対応する移行先オブジェクトIDがオブジェクトIDキャッシュ607に記憶されている(キャッシュがある)かどうかを判断する。キャッシュがある場合、S1131に進み、キャッシュが無い場合、S1132に進む。
S1131で、索引処理部602は、オブジェクトIDキャッシュ607から、移行先オブジェクトIDを取得する。
S1132で、索引処理部602は、第一の実施形態と同様に、索引ディレクトリ504のオブジェクトID1304と、S1121で抽出したオブジェクトIDとを用いて、索引ディレクトリ504内にある、S1121で抽出したオブジェクトIDをファイル名とするハードリンク505のオブジェクトIDを取得する要求を発行する。索引処理部602は、取得したオブジェクトID(移行先オブジェクトID)と上記抽出したオブジェクトID(移行元オブジェクトID)との対応関係をオブジェクトIDキャッシュ607に格納する。これにより、以後、要求データにその移行元オブジェクトIDが含まれている場合には、その移行元オブジェクトIDに対応した移行先オブジェクトIDをオブジェクトIDキャッシュ607から取得することができる。
S1132の要求で得られた結果は、所望のファイルのデータ移行処理後のオブジェクトIDであるので、ファイルアクセス管理部700は、クライアント100からの要求データ中のオブジェクトID(移行元オブジェクトID)をデータ移行処理後のオブジェクトID(移行先オブジェクトID)に変更して、移行先装置200又は300に要求データ(ファイルアクセス要求)を転送する。
以上、第二の実施形態によれば、S1118でNOの場合、オブジェクトIDキャッシュ607に、受信した要求データにおける移行元オブジェクトIDに対応した移行先キャッシュIDがあれば、移行先装置200又は300に移行先オブジェクトIDを問い合わせることが不要となる。このため、第一の実施形態よりも迅速にクライアント100に応答を返すことが期待できる。
<第三の実施形態>。
次に、本発明の第三の実施形態について説明する。
第三の実施形態の中間装置200において、スイッチプログラム600が、図25に示すように、クライアント接続情報管理部1700を更に備える。
クライアント接続情報管理部1700は、クライアント100が中間装置200と通信を行うための接続を確立しているかどうかを管理する。例えば、ファイル共有プロトコルがNFSの場合、クライアント100が中間装置200のファイルシステム207をマウントする操作が、接続の確立に該当し、中間装置200のファイルシステム207をアンマウントする操作が、接続の切断に該当する。
図26は、クライアント接続情報管理部1700の構成例を示すブロック図である。
クライアント接続情報管理部1700は、クライアント接続情報処理部1701を有し、クライアント接続情報管理テーブル1800を参照する機能を備えている。
図27は、クライアント接続情報管理テーブル1800の構成例を示す図である。
クライアント接続情報管理テーブル1800は、クライアント情報1801と、接続確立時刻1802と、最終アクセス時刻1803との組によって構成されたエントリを有するテーブルである。クライアント情報1801は、クライアント100に関する情報であり、例えば、IPアドレスやソケット構造体などである。接続確立時刻1802は、クライアント100が中間装置200と接続を確立した時刻を示す情報である。最終アクセス時刻1803は、最後にクライアント100からの要求があった時刻を示す情報である。
図28は、第三の実施形態における移行状態管理テーブル9300の構成例を示す図である。
移行状態管理テーブル9300におけるエントリには、更に、移行終了時刻9305が含まれる。移行終了時刻9305は、データ移行処理が終了した時刻を示す情報である。
次に、第三の実施形態における中間装置200の動作について説明する。
中間装置200では、データ移行処理部603が、クライアント接続情報管理テーブル1800を参照し、移行元オブジェクトIDを使用するクライアント100が存在しないことや、クライアント100が最後にアクセスしてから一定時間経過していることを識別した場合に、移行状態管理テーブル9300のエントリと、そのエントリに対応する索引ディレクトリツリーとを削除する。
はじめに、第三の実施形態におけるクライアント接続情報管理部1700の処理について説明する。クライアント接続情報処理部1700は、クライアント100が中間装置200と接続を確立した際、クライアント情報管理テーブル1800に、そのクライアント100に対応したエントリを追加し、クライアント100が中間装置200との接続を切断した際、その追加したエントリをクライアント情報管理テーブル1800から削除する。クライアント100との接続確立後、クライアント接続情報処理部1701は、クライアント通信部606から要求を受け取った際に、クライアント情報管理テーブル1800における当該エントリの最終アクセス時刻1803を更新する。この最終アクセス時刻は、クライアント100からアクセスがある度に更新するほど厳密である必要はなく、一定時間毎にアクセスがあったかどうかを確認し、更新する程度でもよい。
次に、第三の実施形態におけるデータ移行処理の手順を説明する。
図29は、第三の実施形態でのデータ移行処理のフローチャートである。
第一の実施形態でのデータ移行処理の手順と異なるのは、S1106´である。S1106´では、移行終了時に、データ移行処理部603が、移行先共有ID9302と、移行先共有関連情報9303とを移行状態管理テーブル9300へ追加する際に、移行終了時刻9305をあわせて追加する。
次に、移行状態管理テーブル9300のエントリ及びそのエントリに対応する索引ディレクトリツリーの削除処理(以下、「エントリ・索引削除処理」と言う)について、詳細に説明する。
図30は、エントリ・索引削除処理のフローチャートである。
S1150で、データ移行処理部603は、ファイルアクセス管理部700の移行状態管理テーブル9300から、削除候補のエントリを選択し、移行終了時刻9305を取得する。削除候補のエントリは、例えば、移行状態管理テーブル9300から任意に選択されたエントリであっても良いし、設定元装置(例えば管理計算機)から指定されたエントリであっても良い。
S1151で、データ移行処理部603は、クライアント接続情報管理部1700のクライアント接続情報管理テーブル1800が空でないかどうかを判断する。空でなければ、S1152に進み、空であれば、S1156に進む。
S1152で、データ移行処理部603は、クライアント接続情報管理テーブル1800における一つのエントリを選択し取得する。
S1153で、データ移行処理部603は、S1150で取得した移行終了時刻9305が示す時刻が、S1152で取得したエントリの接続確立時刻1802が示す時刻より前かどうかを判断する。前であれば、S1155に進み、前でなければ、S1154に進む。
S1155で、データ移行処理部603は、クライアント接続情報管理テーブル1800のうち、S1152の選択の対象となっていないエントリ(未確認のエントリ)がないかどうかを判断する。なければ、S1156に進み、あれば、S1152に戻る。
S1156で、データ移行処理部603は、移行状態管理テーブル9300のS1150で選択したエントリにおける索引ディレクトリオブジェクトID9304を参照し、そのオブジェクトID1304から同定される索引ディレクトリ504及びそれ以下のハードリンク505を削除することの指示(索引削除指示)を、移行先装置200又は300に送信する。ここでの移行先装置200又は300は、そのエントリにおける移行先共有ID9302と一致する共有ID801を有するエントリを特定し、そのエントリ上のサーバ情報ID802と一致するサーバ情報ID901を有するエントリ上のサーバ情報902を特定し、そのサーバ情報902が表す装置である。移行先装置200又は300のファイルシステムプログラム203又は303は、上記索引削除指示に従って、索引ディレクトリ504及びそれ以下のハードリンク505(つまり索引ディレクトリツリー503)を削除する。
S1157で、データ移行処理部603は、移行状態管理テーブル9300のS1150で選択した削除候補のエントリをそのテーブル1300から削除する。
S1154で、データ移行処理部603は、現在時刻が、S1152で取得したエントリにおける最終アクセス時刻1803が示す時刻から一定時間経過しているかどうかを判断する。この一定時間は、管理者が設定する時間であっても良いし、予め定められた時間であっても良い。一定時間経過しているとの判断になれば、S1155に進み、一定時間経過していないとの判断になれば、終了となる。
前述のS1156に進んだということは、このエントリ・索引削除処理を実行する中間装置200が管理するファイルシステム207の移行元オブジェクトIDを利用するクライアント100が全く存在しないか、或いは、存在するとしても、最終アクセス時刻1803が示す時刻から現在時刻が一定時間経過しているために移行元オブジェクトIDを利用する可能性が低い。そのため、データ移行処理部603は、そのファイルシステム207における移行元の共有単位に関するエントリを移行状態管理テーブル9300から削除し、且つ、そのエントリに対応する索引ディレクトリツリー503を削除することができる。このエントリ・索引削除処理は、例えば、管理者がデータ移行処理部603に指示を与えたり、データ移行処理部603が定期的に実行したりすることによって行われる。
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、第一乃至第三の実施形態の少なくとも一つは、共有IDを用いた管理の対象となっていないファイルサーバ(例えばNAS(Network Attached Storage)装置)のリプレースにも適用することができる。この場合、ファイルサーバは、移行先オブジェクトIDではなく、移行元オブジェクトIDでクライアント100に応答する必要があるため、移行したディレクトリツリーの各オブジェクトの属性に、移行元オブジェクトIDを格納しておき(例えば、ハードリンク505に対応した移行先オブジェクト(ファイル)内の所定の場所に、移行元オブジェクトIDを登録しておき)、クライアント100からオブジェクトID取得要求があった場合に、索引処理部602が索引ディレクトリ504内のハードリンク505をたどった後、所望のオブジェクトの属性から移行元オブジェクトIDを取得し、応答すればよい。
100…クライアント 200…中間装置 300…末端装置 600…スイッチプログラム 500…移行先ファイルシステム 501…移行元ファイルシステム 700…ファイルアクセス管理部 800…スイッチ情報管理テーブル 900…サーバ情報管理テーブル 1000…アルゴリズム情報管理テーブル 1300…移行状態管理テーブル 1700…クライアント接続情報管理部 1800…クライアント接続情報管理テーブル