説明

分散ファイル操作プログラム、分散ファイル操作装置、及び分散ファイル操作方法

【課題】既存部分のソースコードの変更を回避しつつファイルの分散管理に対応すること。
【解決手段】分散ファイル操作プログラムは、ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続されるコンピュータに、ファイルに関する操作要求を第一のプロトコルに基づいて生成し、前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する処理を実行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散ファイル操作プログラム、分散ファイル操作装置、及び分散ファイル操作方法に関する。
【背景技術】
【0002】
NAS(Network Attached Storage)は、ネットワークに直接接続して使用することができるファイルサーバ専用機である。NASのクライアントは、NAS(サーバ上)に存在するファイルデータ保存領域をあたかも自分が内蔵するストレージのように使用することができる。通常、NASとしての1台のサーバ(NASサーバ)は、クライアント上において仮想化されているストレージ(NASクライアント)と1対1に対応する。クライアント上において仮想化されているストレージとは、例えば、Windows(登録商標)におけるドライブが挙げられる。したがって、NASとしてのサーバと当該仮想化されているストレージとが1対1に対応するとは、例えば、1つのドライブに対して、1台のサーバが割り当てられることをいう。
【0003】
しかし、NASクライアントとNASサーバとが1対1に対応する形態は、拡張性に欠ける。そこで、従来、NASサーバのスケールアウトするための技術(スケールアウトNAS)が存在する。スケールアウトNASによれば、1つのNASクライアントは、複数のNASサーバにアクセス可能とされる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−46661号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のスケールアウトNASにおいて、ファイルデータをファイル単位に複数のNASサーバに分散して格納するための処理は、NASクライアントのOS(Operating System)のカーネル内に組み込まれていた。したがって、オープンソースでないOS(例えば、Windows(登録商標)等)を利用するNASクライアントに関して、複数のNASサーバによるファイルの分散管理対応を第三者が実装するのは実質的に不可能であった。ここでいう、第三者とは、OSのソースコードの保有者以外の者等、OSのソースコードの変更に関して正当な権限を有さない者をいう。
【0006】
そこで、1つの側面として、既存部分のソースコードの変更を回避しつつファイルの分散管理に対応することができる分散ファイル操作プログラム、分散ファイル操作装置、及び分散ファイル操作方法の提供を目的とする。
【課題を解決するための手段】
【0007】
1つの案では、分散ファイル操作プログラムは、ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続されるコンピュータに、ファイルに関する操作要求を第一のプロトコルに基づいて生成し、前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する処理を実行させる。
【発明の効果】
【0008】
既存部分のソースコードの変更を回避しつつファイルシステムの分散対応を実現することができる。
【図面の簡単な説明】
【0009】
【図1】本発明の実施の形態におけるファイル管理システムの構成例を示す図である。
【図2】本発明の実施の形態におけるクライアント装置のハードウェア構成例を示す図である。
【図3】本発明の実施の形態におけるファイル管理システムの機能構成例を示す図である。
【図4】ファイルの操作要求の送信時にフィルタ部が実行する処理手順の一例を説明するためのフローチャートである。
【図5】配置情報記憶部の構成例を示す図である。
【図6】READ応答メッセージの受信に応じてクライアント装置が実行する処理手順の一例を説明するためのフローチャートである。
【図7】OSDプロトコルのREAD応答メッセージの構造とCIFSプロトコルのREAD応答メッセージの構造とを示す図である。
【図8】OSDのREAD応答メッセージに対するCIFSのヘッダ部の上書きコピーを説明するための図である。
【図9】OSDのREAD応答メッセージに対してCIFSのヘッダ部を上書きできない場合のデータ処理を説明するための図である。
【図10】具体的な実装系に本実施の形態を適用したクライアント装置の構成例を示す図である。
【発明を実施するための形態】
【0010】
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるファイル管理システムの構成例を示す図である。同図において、ファイル管理システム1は、クライアント装置10、配置情報管理装置20、及び複数のストレージサーバ30等を含む。ファイル管理システム1に含まれる各装置は、LAN(Local Area Network)又はインターネット等のネットワーク40(有線又は無線の別は問わない。)を介して通信可能とされている。なお、複数台のクライアント装置10や複数台の配置情報管理装置20が、ファイル管理システム1に含まれてもよい。
【0011】
ストレージサーバ30は、いわゆるNAS(Network Attached Storage)サーバであり、データを格納したファイル群を記憶(管理)する装置である。本実施の形態では、複数のストレージサーバ30によって、複数のファイルが分散管理される。すなわち、ストレージサーバ30は、本実施の形態においてファイル管理装置の一例である。なお、本実施の形態において、ストレージサーバ30は、便宜上、OSD(Object-based Storage Device)サーバであるとする。OSDサーバは、管理しているファイルに関して、オブジェクトベースのインタフェースを提供するサーバをいう。したがって、ストレージサーバ30とのファイル操作に関する通信は、OSDプロトコルに基づいて行われる。
【0012】
配置情報管理装置20は、複数のストレージサーバ30に分散管理されている、各ファイルの配置情報を記憶する装置である。配置情報とは、ファイルの配置位置を示す情報である。すなわち、配置情報管理装置20は、各ファイルがいずれのストレージサーバ30に配置されているかを示す情報を管理する。なお、本実施の形態において、配置情報管理装置20は、便宜上、CIFS(Common Internet File System)サーバであるとする。すなわち、配置情報管理装置20との通信は、CIFSプロトコルに基づいて行われる。CIFSプロトコルは、本実施の形態において第一のプロトコルの一例である。
【0013】
クライアント装置10は、いわゆるNASクライアントである。すなわち、クライアント装置10は、ストレージサーバ30において管理されているファイルの操作元となるコンピュータである。クライアント装置10は、本実施の形態において、分散ファイル操作装置の一例である。
【0014】
図2は、本発明の実施の形態におけるクライアント装置のハードウェア構成例を示す図である。同図において、クライアント装置10は、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、CPU104と、インタフェース装置105とを有する。
【0015】
クライアント装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0016】
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってクライアント装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
【0017】
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【0018】
また、クライアント装置10が、ユーザによって直接操作される場合、クライアント装置10は、キーボード及びマウス等の入力装置や、液晶ディスプレイ等の表示装置等を備えていてもよい。また、配置情報管理装置20及びストレージサーバ30についても、図2と同様のハードウェア構成を有していればよい。
【0019】
図3は、本発明の実施の形態におけるファイル管理システムの機能構成例を示す図である。
【0020】
同図において、ストレージサーバ30は、サーバ部31及びファイル記憶部32等を有するファイル記憶部32は、ストレージサーバ30の補助記憶装置を用いてファイルの実体を記憶する。サーバ部31は、OSDプロトコルに従って、クライアント装置10からのファイル操作要求を受信する。サーバ部31は、ファイル操作要求に係る処理を、ファイル記憶部32に記憶されているファイルに対して実行し、処理結果を含む応答をOSDプロトコルに従って返信する。OSDプロトコルは、本実施の形態において、第二のプロトコルの一例である。
【0021】
配置情報管理装置20は、配置情報管理部21及び配置情報記憶部22等を有する。配置情報記憶部22は、複数のストレージサーバ30に分散管理されている、各ファイルの配置情報を、配置情報管理装置20の補助記憶装置を用いて記憶する。配置情報管理部21は、操作対象とされたファイルの配置情報の取得要求を受信し、当該ファイルの配置情報を配置情報記憶部22より取得する。配置情報管理部21は、取得された配置情報をクライアント装置10に返信する。
【0022】
クライアント装置10は、クライアント部11、ファイル操作プロトコル制御部12、フィルタ部13、及び通信制御部14等を有する。これら各部は、クライアント装置10にインストールされるプログラムがCPU104に実行させる処理によって実現される。なお、各部は、一つのプログラムによって実現されなくてもよい。例えば、本実施の形態において、フィルタ部13は、他の各部からは独立した別個のプログラムによって実現される。当該別個のプログラムは、分散ファイル操作プログラムの一例である。
【0023】
クライアント部11は、ファイルの操作要求元となるソフトウェア(例えば、アプリケーションプログラム等)である。クライアント部11は、例えば、入力装置より入力されるファイルの操作指示又はネットワークを介して受信されるファイルの操作指示に応じ、当該操作指示に対応するファイルの操作要求をファイル操作プロトコル制御部12に入力する。当該操作要求は、ファイル操作プロトコル制御部12が提供するインタフェース(例えば、関数群)を介して入力される。
【0024】
ファイル操作プロトコル制御部12は、クライアント部11より入力されたファイル操作要求に応じた、CIFSプロトコルに基づくリクエストメッセージ(以下、「CIFSリクエストメッセージ」という。)を生成する。すなわち、ファイル操作プロトコル制御部12は、ストレージサーバ30において管理されているファイルに対する操作要求をCIFSに基づいて生成する。なお、本実施の形態において、ファイル操作プロトコル制御部12は、第一制御部の一例である。
【0025】
通信制御部14は、クライアント装置10がネットワーク40を介して行う通信を、インタフェース装置105を用いて制御する。通信制御部14は、CIFSよりも下位の層の通信プロトコルに基づく通信を制御する。「CIFSより下位」とは、例えば、OSI基本参照モデルにおける各層の上下関係に基づく表現である。例えば、通信制御部14は、TDI(transport driver interface )によって通信要求の受け付け等を行う。TDIは、トランスポート層とセッション層との間の共通インタフェースであり、トランスポート層の違いを吸収する役割を有する。
【0026】
なお、通常、ファイル操作プロトコル制御部12によって生成されたCIFSリクエストメッセージは、通信制御部14に入力され、通信制御部14によって送出される。また、当該CIFSメッセージに対する応答メッセージが通信制御部14によって受信されると、通信制御部14は、ファイル操作プロトコル制御部12に対して当該応答メッセージを通知する。
【0027】
ここで、「通常」とは、フィルタ部13が存在しない場合をいう。但し、本実施の形態では、フィルタ部13が存在する。したがって、「通常」とは異なる制御がフィルタ部13によって行われる。すなわち、フィルタ部13は、通信制御部14へ入力される通信要求を横取り(インターセプト)する。したがって、フィルタ操作制御部からのCIFSリクエストメッセージもフィルタ部13によって横取りされる。フィルタ部13は、横取りしたCIFSリクエストメッセージにおいて操作対象とされているファイルの配置情報を配置情報管理装置20に問い合わせる。フィルタ部13は、配置情報管理装置20より返信される配置情報が示すストレージサーバ30へ、当該ファイルの操作要求を送信(転送)する。なお、ストレージサーバ30は、OSDプロトコルに対応している。したがって、フィルタ部13は、CIFSリクエストメッセージからOSDプロトコルに応じた操作要求(以下、「OSDリクエストメッセージ」という。)の変換も行う。変換されたOSDリクエストメッセージは、通信制御部14によって送信される。フィルタ部13は、受信される応答に関してもメッセージ形式の変換を行う。このように、フィルタ部13によって、複数のストレージサーバ30によるファイルの分散管理に対する対応が行われる。換言すれば、ファイル操作プロトコル制御部12は、ファイルの分散管理(すなわち、ファイルの配置)については関与しない。ファイル操作プロトコル制御部12は、対応するサーバが一台であることが前提とされて実装されているからである。なお、本実施の形態においてCIFSサーバは、配置情報管理装置20である。したがって、ファイル操作プロトコル制御部12は、配置情報管理装置20にファイルが管理されているという前提に基づいて処理を行う。但し、本実施の形態において、配置情報管理装置20は、ファイルの配置情報の管理に用いられており、ファイルの実体の管理には用いられていない。
【0028】
フィルタ部13は、クライアント装置10に動的に追加可能な形態で実装されることが望ましい。動的に追加可能な形態とは、既存部分(例えば、ファイル操作プロトコル制御部12、及び通信制御部14等、クライアント装置10のOSのカーネル部)のソースコードの修正等を要さずに追加可能な形態をいう。例えば、Windows(登録商標)においては、フィルタドライバという仕組みが提供されている。したがって、フィルタ部13は、通信制御部14に対するフィルタドライバとして実装されてもよい。なお、フィルタ部13は、本実施の形態において第二制御部の一例である。
【0029】
以下、クライアント装置10が実行する処理手順について説明する。図4は、ファイルの操作要求の送信時にフィルタ部が実行する処理手順の一例を説明するためのフローチャートである。
【0030】
例えば、通信制御部14に対して何らかの通信要求が入力されると、フィルタ部13は、当該通信要求を横取りする(S101)。したがって、ファイル操作プロトコル制御部12によって通信制御部14に対して入力されるCIFSリクエストメッセージもフィルタ部13によって横取りされる。続いて、フィルタ部13は、横取りした通信要求が、CIFSリクエストメッセージであるか否かを判定する(S102)。当該判定は、当該通信要求の所定の部分が、CIFSプロトコルに従った形式であるか否かに基づいて行われればよい。当該通信要求がCIFSリクエストメッセージでない場合(S102でNo)、フィルタ部13は、当該通信要求をそのまま(加工せずに)通信制御部14に入力する(S105)。この場合は、当該通信要求が、ファイル操作プロトコル制御部12以外からの非図示のプログラムモジュールからの通信要求である場合に相当する。すなわち、通信制御部14は、複数のプログラムモジュールより共用されるため、ファイル操作プロトコル制御部12以外のプログラムモジュールからの通信要求も通信制御部14に入力される。
【0031】
一方、当該通信要求がCIFSリクエストメッセージである場合(S102でYes)、当該CIFSリクエストメッセージが示すファイルの操作要求が、READ(読み込み)要求又はWRITE(書き込み)要求であるか否かを判定する(S103)。当該操作要求がREAD要求又はWRITE要求ではない場合(S103でNo)、フィルタ部13は、当該CIFSメッセージを通信制御部14にそのまま入力する(S105)。したがって、当該CIFSメッセージは、CIFSサーバである配置情報管理装置20に送信される。配置情報管理装置20の配置情報管理部21は、当該CIFSメッセージに応じた処理を実行し、当該処理の実行結果を含む応答をクライアント装置10に返信する。例えば、当該CIFSメッセージがファイルのオープン要求を示すものであれば、配置情報管理部21は、ファイルのオープン処理を実行し、当該ファイルの識別子(ファイルID)を含む応答をクライアント装置10に返信する。したがって、配置情報管理装置20は、ファイルのオープン要求に指定されるファイル名とファイルIDとの対応情報を記憶しておけばよい。または、配置情報管理装置20が、ファイル名に基づいてファイルIDを導出可能な仕組みが、ファイル管理システム1に実装されていればよい。なお、ファイルIDは、CIFSにおいて、ファイルを識別するために用いられるIDである。当該応答は、通信制御部14によって受信され、フィルタ部13を介してファイル操作プロトコル制御部12に通知される。ファイル制御部は、当該応答に応じた戻り値をクライアント部11に返却する。
【0032】
なお、本実施の形態において、ファイルのオープン要求が配置情報管理装置20に転送されるのは、OSDプロトコルには、ファイルのオープンという概念が無いためである。したがって、ファイルのオープンという概念を有するプロトコルに基づくストレージサーバ30が利用される場合、ファイルのオープン要求も、ファイルのREAD要求又はWRITE要求と同様に、ストレージサーバ30に転送されるようにしてもよい。
【0033】
一方、CIFSメッセージが示すファイルの操作要求がREAD要求又はWRITE要求である場合(S103でYes)、フィルタ部13は、CIFSリクエストメッセージが示すファイルの操作要求において操作対象とされているファイルの配置情報を配置情報管理装置20に問い合わせる(S104)。すなわち、フィルタ部13は、当該配置情報の取得要求を配置情報管理装置20に送信する。当該取得要求には、CIFSリクエストメッセージが示すファイルの操作要求において操作対象とされているファイルのファイルIDが指定される。当該ファイルIDは、CIFSにおいて、ファイルを識別するために用いられるIDであり、CIFSリクエストメッセージに含まれている。なお、配置情報管理装置20の識別情報(IPアドレス等)は、予め、クライアント装置10の補助記憶装置102に記録されていればよい。
【0034】
配置情報管理装置20において配置情報の取得要求が受信されると、配置情報管理部21は、当該取得要求に指定されているファイルIDに対応する配置情報を配置情報記憶部22より取得する。配置情報管理部21は、取得された配置情報を含む応答をフィルタ部13に返信する。
【0035】
図5は、配置情報記憶部の構成例を示す図である。同図に示されるように、配置情報記憶部22は、分散管理されているファイルごとに、ファイルID、サーバID、及びオブジェクトID等が記憶されている。
【0036】
ファイルIDは、上記したようにCIFSのファイルIDである。サーバID及びオブジェクトIDは、本実施の形態における配置情報の一例である。すなわち、サーバIDは、ストレージサーバ30の識別子である。サーバIDは、ストレージサーバ30のIPアドレスでもよいし、IPアドレスとは別の識別子であってもよい。後者の場合、配置情報記憶装置20又はクライアント装置10は、サーバIDとIPアドレスとの対応情報を記憶していればよい。オブジェクトIDは、ストレージサーバ30内において、各ファイルを識別するための識別子である。本実施の形態において、ストレージサーバ30は、各ファイルをオブジェクトとして扱うため、各ファイルの識別子はオブジェクトIDと呼ばれる。
【0037】
したがって、本実施の形態の配置情報管理部21は、サーバID及びオブジェクトIDを含む応答をクライアント装置10に返信する。
【0038】
配置情報の取得要求に対して、配置情報管理装置20より正常な応答が返信されると(S106でYes)、フィルタ部13は、CIFSリクエストメッセージをOSDリクエストメッセージに変換し、当該OSDリクエストメッセージを送信する(S107)。正常な応答とは、配置情報を含む応答をいう。また、OSDリクエストメッセージの送信先は、取得された配置情報に含まれているサーバIDに係るストレージサーバ30である。
【0039】
CIFSリクエストメッセージのOSDリクエストメッセージへの変換及びOSDリクエストメッセージの送信は、次のように行われる。CIFSリクエストメッセージがREAD要求である場合、CIFSリクエストメッセージのヘッダ部の内容に基づいてOSDリクエストメッセージのヘッダ部が生成される。フィルタ部13は、当該ヘッダ部を通信制御部14に入力する。通信制御部14は、当該ヘッダ部を該当するストレージサーバ30に送信する。なお、READ要求の場合、CIFSリクエストメッセージにはデータ部は存在しない。したがって、OSDリクエストメッセージについても、ヘッダ部がその全部となる。また、OSDリクエストメッセージのヘッダ部には、操作対象のファイルの識別子として、取得された配置情報に含まれているオブジェクトIDが指定される。
【0040】
READ要求を示すOSDリクエストメッセージを受信したストレージサーバ30のサーバ部31は、当該OSDリクエストメッセージに指定されているオブジェクトIDに対応するファイルよりデータを読み込む。サーバ部31は、読み込まれたデータをデータ部に含む応答メッセージ(以下、「READ応答メッセージ」という。)をOSDプロトコルに基づいて返信する。
【0041】
一方、CIFSリクエストメッセージがWRITE要求である場合、まず、CIFSリクエストメッセージのヘッダ部の内容に基づいてOSDリクエストメッセージのヘッダ部が生成される。フィルタ部13は、当該ヘッダ部を通信制御部14に入力する。通信制御部14は、当該ヘッダ部を該当するストレージサーバ30に送信する。なお、OSDリクエストメッセージのヘッダ部には、操作対象のファイルの識別子として、取得された配置情報に含まれているオブジェクトIDが指定される。また、CIFSリクエストメッセージのヘッダ部のサイズが、ODAリクエストメッセージのヘッダ部のサイズ以上である場合、後述されるREAD応答メッセージの受信時と同様に、CIFSリクエストメッセージのヘッダ部に、ODAリクエストメッセージのヘッダ部が上書きされてもよい。この場合、ODAリクエストメッセージのヘッダ部用のバッファ領域(メモリ領域)を改めて確保したり、メモリコピーを行ったりする必要性を無くすことができる。
【0042】
WRITE要求の場合、CIFSリクエストメッセージにはデータ部が存在する。データ部は、書き込み要求の対象のファイルに書き込まれるデータを格納する部分である。したがって、OSDリクエストメッセージについてもヘッダ部の送信に続いて、データ部の送信が行われる。ここで、通信制御部14がTCP(Transmission Control Protocol)を利用する場合、データの送信用のインタフェースは、iovec形式(複数バッファ形式)である。したがって、後述されるREAD応答メッセージの受信時とは異なり、ヘッダ部とデータ部との関係(繋がり)は考慮される必要はない。よって、フィルタ部13は、CIFSメッセージに含まれているデータ部をそのまま通信制御部14に入力する。通信制御部14は、当該データ部を、該当するストレージサーバ30に送信する。
【0043】
WRITE要求を示すOSDリクエストメッセージを受信したストレージサーバ30のサーバ部31は、当該OSDリクエストメッセージに指定されているオブジェクトIDに対応するファイルに対して、OSDリクエストメッセージに含まれているデータを書き込む。サーバ部31は、書き込み処理の結果等を示す応答(以下、「WRITE応答」という。)をOSDプロトコルに基づいて返信する。
【0044】
続いて、READ応答メッセージがストレージサーバ30より返信された際に、クライアント装置10が実行する処理手順について説明する。
【0045】
図6は、READ応答メッセージの受信に応じてクライアント装置が実行する処理手順の一例を説明するためのフローチャートである。
【0046】
通信制御部14によってREAD応答メッセージが受信されると、当該READ応答メッセージの受信が、フィルタ部13に通知される(S201)。より詳しくは、通信制御部14は、データ(例えば、READ応答メッセージ)の受信に応じイベントを発生させる。フィルタ部13のイベントハンドラは、当該イベントによってデータの受信を検知する。ここで、READ応答メッセージには、OSDプロトコルのヘッダ部及びデータ部が含まれている。通信制御部14からのイベントでは、READ応答メッセージを格納したバッファ(以下、「受信バッファ」という。)の先頭アドレスと受信バッファのサイズとがフィルタ部13に通知される。
【0047】
続いて、フィルタ部13は、READ応答メッセージをファイル操作プロトコル制御部12に通知するための処理に関連するメモリアドレスのアライメントの境界の最大値を判定する(S202)。本実施の形態において、アライメントとは、メモリ領域にデータ等を格納する場合に、その先頭番地(先頭アドレス)が規則的な値となるように調整することをいう。例えば、先頭アドレスが偶数となるようにアライン(位置合わせ)されたり、Nバイト境界にアラインされたりする。READ応答メッセージをファイル操作プロトコル制御部12に通知するための処理に関連するメモリアドレスのアライメントとは、例えば、メモリコピーに関するアライメントや、ファイル操作プロトコル制御部12のREADバッファのアライメント等である。ステップS202では、これらの各種アライメントの境界の最大値が判定される。例えば、メモリコピーに関するアライメントの境界が4バイトであり、ファイル操作プロトコル制御部12のREADバッファのアライメントの境界が8バイトである場合、8バイトが最大値とされる。
【0048】
なお、各種アライメントの境界は、例えば、OS等より動的に取得可能なシステム環境であれば、ステップS202において動的に取得されればよい。また、動的に取得可能なシステム環境でなければ、予め計算され、補助記憶装置102に記録されている固定値が、ステップS202において取得されればよい。
【0049】
続いて、フィルタ部13は、受信された、OSDプロトコルのREAD応答メッセージのヘッダ部のサイズ(ヘッダ長)を計算する。また、フィルタ部13は、これから生成されるCIFSプロトコルのREAD応答メッセージのヘッダ部のサイズを計算する(S203)。
【0050】
図7は、OSDプロトコルのREAD応答メッセージの構造とCIFSプロトコルのREAD応答メッセージの構造とを示す図である。同図において、(1)は、OSDプロトコルのREAD応答メッセージ(以下、「OSDのREAD応答メッセージ」という。)の構造を示す。(2)は、CIFSプロトコルのREAD応答メッセージ(以下、「CIFSのREAD応答メッセージ」という。)の構造を示す。同図では、各メッセージを構成するフィールド(項目)ごとに、データ型、フィールド名、及び概要が示されている。各フィールドの詳細については、各プロトコルの仕様書に詳しいため、ここでの説明は省略する。
【0051】
同図に示されるように、OSDのREAD応答メッセージのヘッダ部又はCIFSのREAD応答メッセージのヘッダ部を構成する各フィールドのデータ型は、予め決まっている。そして、各フィールドのサイズはデータ型によって決まる。したがって、それぞれのメッセージのヘッダ長は、それぞれのヘッダ部を構成するフィールドのサイズの合計によって算出することができる。
【0052】
続いて、フィルタ部13は、OSDのREAD応答メッセージのヘッダ長AとCIFSのREAD応答メッセージのヘッダ長Bとを比較する(S204)。ヘッダ長Aがヘッダ長B以上である場合(S204でYes)、フィルタ部13は、ヘッダ長Aとヘッダ長Bとの差分α(ヘッダ長A−ヘッダ長B)が、アライメントの境界の最大値の整数倍であるか否かを判定する(S205)。
【0053】
差分αが、アライメントの境界の最大値の整数倍である場合(S205でYes)、フィルタ部13は、OSDのREAD応答メッセージのヘッダ部に基づいて、CIFSのREAD応答メッセージのヘッダ部を生成する(S206)。続いて、フィルタ部13は、OSDのREAD応答メッセージに対して、CIFSのREAD応答メッセージのヘッダ部を上書きコピーする(S207)。この際、フィルタ部13は、OSDのREAD応答メッセージの先頭アドレスから差分αだけ後方にずらした位置が、CIFSのREAD応答メッセージのヘッダ部に一致するように当該ヘッダ部の上書きを行う。なお、OSDのREAD応答メッセージの先頭アドレスとは、受信バッファの先頭アドレスと同義である。
【0054】
図8は、OSDのREAD応答メッセージに対するCIFSのヘッダ部の上書きコピーを説明するための図である。
【0055】
同図において、(A)は、上書き前の受信バッファの内容(すなわち、OSDのREAD応答メッセージ)を示す。同図の例では、OSDのREAD応答メッセージのデータサイズはd1とされている。
【0056】
(B)は、CIFSのREAD応答メッセージのヘッダ部(CIFSヘッダ部)が上書きされた受信バッファの内容である。(B)では、ヘッダ長Aとヘッダ長Bとの差分α分だけ後方にずらされてCIFSヘッダ部が上書きされている。その結果、CIFSヘッダ部とデータ部とが連続した状態となる。(B)に示される、受信バッファの先頭から差分αだけ後方にずらされたアドレスa以降の部分が、CIFSのREAD応答メッセージに相当する。したがって、同図において、CIFSのREAD応答メッセージのデータサイズは、d1−αである。
【0057】
続いて、フィルタ部13は、CIFSのREAD応答メッセージの先頭アドレス(アドレスa)とデータサイズ(d1−α)とをファイル操作プロトコル制御部12に通知する(S208)。ファイル操作プロトコル制御部12は、先頭アドレス及びデータサイズによって特定されるCIFSのREAD応答メッセージに基づいて、クライアント部11への応答を行う。
【0058】
このように、本実施の形態では、CIFSのREAD応答メッセージ用に改めてバッファが確保されるのではなく、OSDのREAD応答メッセージの受信バッファに対してCIFSヘッダ部の上書きが行われて、CIFSのREAD応答メッセージが生成される。したがって、メモリコピーの回数を削減することができ、CPUの使用率を低く維持することができる。斯かる効果は、ファイルへのアクセス数が増加すればするほど、顕著なものとなる。
【0059】
また、CIFSのREAD応答メッセージの先頭アドレスのずれは、アライメントの境界の最大値の整数倍である。すなわち、当該先頭アドレスのずれは、OSDのREAD応答メッセージに基づいてCIFSのREAD応答メッセージが生成され、当該CIFSのREAD応答メッセージがファイル操作プロトコル制御部12に通知されるまでに関連するアライメントの境界の要件を全て満たすものである。したがって、CIFSヘッダ部のコピー時や、ファイル操作プロトコル制御部12への先頭アドレスの通知時等において、処理が不正となるのを回避することができる。
【0060】
一方、ヘッダ長Aがヘッダ長Bより大きい場合(S204でNo)、OSDのREAD応答メッセージにCIFSヘッダ部を上書きすることはできない。また、差分αがアライメントの最大値の整数倍でない場合(S205でNo)、CIFSヘッダ部の先頭アドレスをアライメントの境界に一致させることはできない。したがって、これらの場合、フィルタ部13は、ステップS206と同様にCIFSヘッダ部を生成し、生成されたCIFSヘッダ部の先頭アドレスとデータサイズとをファイル操作プロトコル制御部12に通知する(S209)。続いて、フィルタ部13は、OSDのREAD応答メッセージのデータ部の先頭アドレスとデータサイズとをファイル操作プロトコル制御部12に通知する(S210)。ステップS210において通知される先頭アドレスは、OSDのREAD応答メッセージの先頭アドレスからヘッダ長Aだけ後方にずらされた値である。また、ステップS210において通知されるデータサイズは、OSDのREAD応答メッセージからヘッダ長を差し引いた値である。但し、当該データ部のサイズは、OSDのREAD応答メッセージのヘッダ部のlenフィールド(図7(1)参照)に基づいて特定されてもよい。
【0061】
図9は、OSDのREAD応答メッセージに対してCIFSのヘッダ部を上書きできない場合のデータ処理を説明するための図である。
【0062】
同図において(C)は、ステップS209に対応する。すなわち、受信バッファとは別のメモリ領域に生成されたCIFSヘッダ部の先頭アドレスbとデータサイズd2とがファイル操作プロトコル制御部12に通知される。(D)は、ステップS210に対応する。すなわち、受信バッファ内のOSDのREAD応答メッセージのデータ部の先頭アドレスcとデータサイズd3とがファイル操作プロトコル制御部12に通知される。
【0063】
なお、OSDのWRITE応答メッセージが受信された場合は、図6に示されるような複雑な処理は必要とされない。WRITE応答メッセージは、データ部を含まないからである。この場合、フィルタ部13は、受信されたOSDのWRITE応答メッセージのヘッダ部に基づいて、CIFSヘッダ部を生成する。フィルタ部13は、生成されたCIFSヘッダ部の先頭アドレスとデータサイズとをファイル操作プロトコル制御部12に通知する。
【0064】
上述したように、本実施の形態によれば、CIFSリクエストメッセージがフィルタ部13によって横取りされ、操作対象のファイルの配置情報が示すストレージサーバ30に、操作要求が転送される。したがって、ファイル操作プロトコル制御部12や通信制御部14等の既存部分に対する変更を回避しつつファイルの分散管理に対応することができる。
【0065】
また、フィルタ部13は、CIFSプロトコルとOSDプロトコルとの間の変換をも行う。その結果、ファイル操作プロトコル制御部12が対応していないプロトコルに対応したストレージサーバ30を利用して、ファイルの分散管理を行うこともできる。
【0066】
なお、CIFSプロトコル及びOSDプロトコルは、一例に過ぎない。NFS(Network File System)プロトコル等、その他の遠隔的なファイル管理用のプロトコルによって、本実施の形態において例示したプロトコルが代替されてもよい。
【0067】
また、ファル操作プロトコル制御部12が利用するプロトコルとフィルタ部13が利用するプロトコルとは同じでもよい。例えば、配置情報管理装置20及びストレージサーバ30の双方がCIFSサーバであってもよい。この場合、フィルタ部13によるプロトコルの変換処理は不要となる。
【0068】
なお、本実施の形態を具体的な実装系に適用した例を図10に示す。図10は、具体的な実装系に本実施の形態を適用したクライアント装置の構成例を示す図である。
【0069】
同図では、Windows(登録商標)において採用されているリモートFSD(FileSystem Driver)の仕組みに対して本実施の形態が適用された例を示されている。
【0070】
同図のクライアント装置10aでは、クライアントアプリケーション111、Kernel32.dll112及びNtdll.dll113等がクライアント部11を構成する。また、リダイレクタ121と呼ばれるファイルシステムドライバ(FSD)とキャッシュマネージャ122とがファイル操作プロトコル制御部12を構成する。また、TDIフィルタ131は、フィルタ部13に相当する。また、プロトコルドライバ141は、通信制御部14に相当する。
【0071】
クライアントアプリケーション111は、ファイルの操作要求元となる任意のアプリケーションプログラムである。クライアントアプリケーションは、Kernel32.dll112に含まれている関数を呼び出すことにより、ファイルの操作要求を入力する。当該操作要求は、Ntdll.dll113を介してリダイレクタ121に入力される。通常、リダイレクタ121が生成し、プロトコルドライバ141を介して送信しようとするCIFSリクエストメッセージは、TDIフィルタ131によって横取りされる。TDIフィルタ131は、図4において説明した処理順を実行して、CIFSリクエストメッセージをOSDリクエストメッセージに変換し、OSDリクエストメッセージの送信をプロトコルドライバ141に実行させる。
【0072】
OSDリクエストメッセージからの応答がプロトコルドライバ141によって受信されると、TDIフィルタ131は、図6を用いて説明した処理手順を実行する。
【0073】
なお、Windows(登録商標)環境において、TDIフィルタ131は、フィルタドライバとして実装されるのが好適である。
【0074】
図10の例では、TDIフィルタ131以外の部分に修正を加えることなく、TDIフィルタ131を組み込むことができる。その結果、クライアント装置10aについて、既存部分(OSのカーネル等)に変更を回避しつつファイルの分散管理に対応させることができる。
【0075】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0076】
以上の説明に関し、更に以下の項を開示する。
(付記1)
ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続されるコンピュータに、
ファイルに関する操作要求を第一のプロトコルに基づいて生成し、
前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、
問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する、
処理を実行させる分散ファイル操作プログラム。
(付記2)
前記操作要求を第二のプロトコルに基づく形式に変換し、変換後の前記操作要求を前記配置情報に係るファイル管理装置に送信する処理を前記コンピュータに実行させる付記1記載の分散ファイル操作プログラム。
(付記3)
前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答のヘッダ部に対し、前記第一のプロトコルに応じたヘッダ部を上書きする処理を前記コンピュータに実行させる付記2記載の分散ファイル操作プログラム。
(付記4)
前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答の第一のヘッダ部の先頭アドレスに対し、前記第一のヘッダ部の長さと前記第一のプロトコルに応じた第二のヘッダ部の長さとの差分だけ後方にずらした位置に前記第二のヘッダ部の先頭アドレスが一致するように、前記第二のヘッダ部を前記第一のヘッダ部に上書きする付記3記載の分散ファイル操作プログラム。
(付記5)
ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続される分散ファイル操作装置であって、
ファイルに関する操作要求を第一のプロトコルに基づいて生成する第一制御部と、
前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する第二制御部と、
を有する分散ファイル操作装置。
(付記6)
前記第二制御部は、前記操作要求を第二のプロトコルに基づく形式に変換し、変換後の前記操作要求を前記配置情報に係るファイル管理装置に送信する付記5記載の分散ファイル操作装置。
(付記7)
前記第二制御部は、前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答のヘッダ部に対し、前記第一のプロトコルに応じたヘッダ部を上書きする付記6記載の分散ファイル操作装置。
(付記8)
前記第二制御部は、前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答の第一のヘッダ部の先頭アドレスに対し、前記第一のヘッダ部の長さと前記第一のプロトコルに応じた第二のヘッダ部の長さとの差分だけ後方にずらした位置に前記第二のヘッダ部の先頭アドレスが一致するように、前記第二のヘッダ部を前記第一のヘッダ部に上書きする付記7記載の分散ファイル操作プログラム。
(付記9)
ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続されるコンピュータが、
ファイルに関する操作要求を第一のプロトコルに基づいて生成し、
前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、
問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する、
処理を実行する分散ファイル操作方法。
(付記10)
前記操作要求を第二のプロトコルに基づく形式に変換し、変換後の前記操作要求を前記配置情報に係るファイル管理装置に送信する処理を前記コンピュータが実行する付記9記載の分散ファイル操作方法。
(付記11)
前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答のヘッダ部に対し、前記第一のプロトコルに応じたヘッダ部を上書きする処理を前記コンピュータが実行する付記10記載の分散ファイル操作方法。
(付記12)
前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答の第一のヘッダ部の先頭アドレスに対し、前記第一のヘッダ部の長さと前記第一のプロトコルに応じた第二のヘッダ部の長さとの差分だけ後方にずらした位置に前記第二のヘッダ部の先頭アドレスが一致するように、前記第二のヘッダ部を前記第一のヘッダ部に上書きする付記11記載の分散ファイル操作方法。
【符号の説明】
【0077】
1 ファイル管理システム
10 クライアント装置
11 クライアント部
12 ファイル操作プロトコル制御部
13 フィルタ部
14 通信制御部
20 配置情報管理装置
21 配置情報管理部
22 配置情報記憶部
30 ストレージサーバ
31 サーバ部
32 ファイル記憶部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
B バス

【特許請求の範囲】
【請求項1】
ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続されるコンピュータに、
ファイルに関する操作要求を第一のプロトコルに基づいて生成し、
前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、
問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する、
処理を実行させる分散ファイル操作プログラム。
【請求項2】
前記操作要求を第二のプロトコルに基づく形式に変換し、変換後の前記操作要求を前記配置情報に係るファイル管理装置に送信する処理を前記コンピュータに実行させる請求項1記載の分散ファイル操作プログラム。
【請求項3】
前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答のヘッダ部に対し、前記第一のプロトコルに応じたヘッダ部を上書きする処理を前記コンピュータに実行させる請求項2記載の分散ファイル操作プログラム。
【請求項4】
前記操作要求に対する応答としてファイルから読み取られたデータを含む、前記第二のプロトコルに基づく応答の受信に応じ、前記応答の第一のヘッダ部の先頭アドレスに対し、前記第一のヘッダ部の長さと前記第一のプロトコルに応じた第二のヘッダ部の長さとの差分だけ後方にずらした位置に前記第二のヘッダ部の先頭アドレスが一致するように、前記第二のヘッダ部を前記第一のヘッダ部に上書きする請求項3記載の分散ファイル操作プログラム。
【請求項5】
ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続される分散ファイル操作装置であって、
ファイルに関する操作要求を第一のプロトコルに基づいて生成する第一制御部と、
前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する第二制御部と、
を有する分散ファイル操作装置。
【請求項6】
ファイルの配置情報を管理する配置情報管理装置とファイルを記憶する複数のファイル管理装置とにネットワークを介して接続されるコンピュータが、
ファイルに関する操作要求を第一のプロトコルに基づいて生成し、
前記操作要求に含まれているファイルの識別子を指定して、前記配置情報管理装置に当該ファイルの配置情報を問い合わせ、
問い合わせに応じて返信される前記配置情報が示す前記ファイル管理装置に前記操作要求を送信する、
処理を実行する分散ファイル操作方法。

【図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