(57)【要約】    【課題】  広域なネットワークによるシステム構築及びその管理が容易で、システム構築及び運用管理のコストを抑制できるファイル共有システムを提供する。    【解決手段】  ファイル共有システムは、サーバ２に、Ｉ／Ｏの制御情報のみを送信し、サーバ２から受信したＩ／Ｏ対象特定情報に基づいて自らディスク装置３とＩ／Ｏを行うクライアント１と、クライアント１から制御情報を受信し、Ｉ／Ｏの対象となるディスク装置３を特定する情報又はＩ／Ｏの終了処理がなされたことを知らせる情報をクライアント１に送信するサーバ２と、ネットワーク回線４を介してクライアント１と、サーバ２と接続しており、クライアント１から受信した、Ｉ／Ｏプロトコルに合った形式に変換されたＩ／Ｏ情報から、SCSI等のＩ／Ｏプロトコルに基づくコマンドを取り出すプロトコル変換手段３１を備えるディスク装置３とを備える。【選択図】    図１
2006302065.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末がネットワーク接続される管理サーバを介してディスク装置に格納されるデータを共有するファイル共有システムであって、
前記ディスク装置を、前記ネットワークを介して前記クライアント端末からアクセス可能に設置し、
前記管理サーバが、前記クライアント端末からのデータの入出力要求に基づいて、入出力要求の対象の前記ディスク装置と前記ディスク装置上の入出力要求の対象の領域との位置情報を含む特定情報を前記クライアント端末に送信することを特徴とするファイル共有システム。
【請求項２】
クライアント端末がネットワーク接続される管理サーバを介してディスク装置に格納されるデータを共有するファイル共有システムであって、
前記ディスク装置を、前記ネットワークを介して前記クライアント端末からアクセス可能に設置し、
前記管理サーバが、前記クライアント端末からのデータの入出力要求に基づいて、前記要求されたデータが存在する前記ディスク装置とそのデータとの位置情報を含む特定情報を前記クライアント端末に送信することを特徴とするファイル共有システム。
【請求項３】
前記クライアント端末が、前記管理サーバから送信された前記特定情報に基づいて、前記ディスク装置上の領域又はデータに対し、ネットワークを介して直接アクセスすることを特徴とする請求項１又は請求項２に記載のファイル共有システム。
【請求項４】
前記管理サーバが、複数の前記クライアント端末からの複数の前記入出力要求を受付け、
前記入出力要求に含まれる前記クライアント端末の識別情報から特定される前記クライアント端末に対して、対応する入出力要求に対する前記特定情報を送信することを特徴とする請求項１から請求項３に記載のファイル共有システム。
【請求項５】
前記クライアント端末と前記入出力要求を互いに対応付けたテーブルを備えることを特徴とする請求項４に記載のファイル共有システム。
【請求項６】
前記管理サーバが、前記クライアント端末から送信されるアクセスの終了通知を受信すると、前記クライアント端末のアクセスによって変更された前記ディスク装置上のデータの管理情報を更新することを特徴とする請求項１から請求項５に記載のファイル共有システム。
【請求項７】
コンピュータ処理装置上で実行され、クライアント端末がネットワーク接続される管理サーバを介してディスク装置に格納されるデータを共有するファイル共有プログラムにおいて、
前記コンピュータ処理装置に、
前記管理サーバが、前記クライアント端末からのデータの入出力要求に基づいて、前記ネットワークを介して前記クライアント端末からアクセス可能に設置される入出力要求の対象のディスク装置と前記ディスク装置上の入出力要求の対象の領域との位置情報を含む特定情報を前記クライアント端末に送信する機能を持たせることを特徴とするファイル共有プログラム。
【請求項８】
コンピュータ処理装置上で実行され、クライアント端末がネットワーク接続される管理サーバを介してディスク装置に格納されるデータを共有するファイル共有プログラムにおいて、
前記コンピュータ処理装置に、
前記管理サーバが、前記クライアント端末からのデータの入出力要求に基づいて、前記要求されたデータが存在し、前記ネットワークを介して前記クライアント端末からアクセス可能に設置されるディスク装置とそのデータとの位置情報を含む特定情報を前記クライアント端末に送信する機能を持たせることを特徴とするファイル共有プログラム。
【請求項９】
前記コンピュータ処理装置に、
前記クライアント端末が、前記管理サーバから送信された前記特定情報に基づいて、前記ディスク装置上の領域又はデータに対し、ネットワークを介して直接アクセスする機能を持たせることを特徴とする請求項７又は請求項８に記載のファイル共有プログラム。
【請求項１０】
前記コンピュータ処理装置に、
前記管理サーバが、複数の前記クライアント端末からの複数の前記入出力要求を受付ける機能と、
前記入出力要求に含まれる前記クライアント端末の識別情報から特定される前記クライアント端末に対して、対応する入出力要求に対する前記特定情報を送信する機能を持たせることを特徴とする請求項７から請求項９に記載のファイル共有プログラム。
【請求項１１】
前記コンピュータ処理装置に、
前記クライアント端末と前記入出力要求とを互いに対応付けたテーブルを備える機能を持たせることを特徴とする請求項１０に記載のファイル共有プログラム。
【請求項１２】
前記コンピュータ処理装置に、
前記管理サーバが、前記クライアント端末から送信されるアクセスの終了通知を受信すると、前記クライアント端末のアクセスによって変更された前記ディスク装置上のデータの管理情報を更新する機能を持たせることを特徴とする請求項７から請求項１１に記載のファイル共有プログラム。
【請求項１３】
クライアント端末がディスク装置に格納されるデータを共有する際に、ネットワークを介して接続する管理サーバであって、
前記クライアント端末からのデータの入出力要求に基づいて、前記ネットワークを介して前記クライアント端末からアクセス可能に設置される入出力要求の対象のディスク装置と前記ディスク装置上の入出力要求の対象の領域との位置情報を含む特定情報を前記クライアント端末に送信することを特徴とする管理サーバ。
【請求項１４】
クライアント端末がディスク装置に格納されるデータを共有する際に、ネットワークを介して接続する管理サーバであって、
前記クライアント端末からのデータの入出力要求に基づいて、前記要求されたデータが存在し、前記ネットワークを介して前記クライアント端末からアクセス可能に設置されるディスク装置とそのデータとの位置情報を含む特定情報を前記クライアント端末に送信することを特徴とする管理サーバ。
【請求項１５】
前記クライアント端末が、前記管理サーバから送信された前記特定情報に基づいて、前記ディスク装置上のデータに対し、ネットワークを介して直接アクセスするための前記特定情報を前記クライアント端末に送信することを特徴とする請求項１３又は請求項１４に記載の管理サーバ。
【請求項１６】
複数の前記クライアント端末からの複数の前記入出力要求を受付け、
前記入出力要求に含まれる前記クライアント端末の識別情報から特定される前記クライアント端末に対して、対応する入出力要求に対する前記特定情報を送信することを特徴とする請求項１３から請求項１５に記載の管理サーバ。
【請求項１７】
前記クライアント端末と前記入出力要求とを互いに対応付けたテーブルを備えることを特徴とする請求項１６に記載の管理サーバ。
【請求項１８】
前記クライアント端末から送信されるアクセスの終了通知を受信すると、前記クライアント端末のアクセスによって変更された前記ディスク装置上のデータの管理情報を更新することを特徴とする請求項１３から請求項１７に記載の管理サーバ。
【請求項１９】
ネットワーク接続される管理サーバを介してディスク装置に格納されるデータを共有するクライアント端末であって、
前記管理サーバにデータの入出力要求をし、
前記管理サーバから、前記入出力要求の対象の前記ディスク装置と前記ディスク装置上の入出力要求の対象の領域との位置情報を含む特定情報を受信し、
前記特定情報に基づいて、前記ネットワークを介して前記クライアント端末からアクセス可能に設置される前記ディスク装置上のデータに直接アクセスすることを特徴とするクライアント端末。
【請求項２０】
ネットワーク接続される管理サーバを介してディスク装置に格納されるデータを共有するクライアント端末であって、
前記管理サーバにデータの入出力要求をし、
前記管理サーバから、前記入出力要求の対象のデータが存在する前記ディスク装置とそのデータとの位置情報を含む特定情報を受信し、
前記特定情報に基づいて、前記ネットワークを介して前記クライアント端末からアクセス可能に設置される前記ディスク装置上のデータに対し、ネットワークを介して直接アクセスすることを特徴とするクライアント端末。
【請求項２１】
ネットワーク接続される管理サーバを介してディスク装置に格納されるデータを共有する複数のクライアント端末であって、
前記管理サーバに、データの入出力要求をし、
前記管理サーバから、自身が要求した前記入出力要求に対応する、前記入出力要求の対象の前記ディスク装置と前記ディスク装置上の入出力要求の対象の領域との位置情報を含む特定情報を受信し、
前記特定情報に基づいて、前記ネットワークを介して前記複数のクライアント端末からアクセス可能に設置される前記ディスク装置上のデータに直接アクセスすることを特徴とするクライアント端末。
【請求項２２】
前記管理サーバから送信された前記特定情報に基づいて、前記ディスク装置上の領域又はデータに対し、ネットワークを介して直接アクセスすることを特徴とする請求項１９から請求項２１に記載のクライアント端末。
【請求項２３】
前記管理サーバに、前記アクセスを終了することの通知及び前記アクセスによって変更された前記ディスク装置上のデータの管理情報を更新させる通知を送信することを特徴とする請求項１９から請求項２２に記載のクライアント端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルの共有に関し、特に、ネットワークを介してアクセス可能に設置されたディスク装置を有するファイル共有システム、ファイル共有プログラム、管理サーバ及びクライアント端末に関する。
に関する。
【背景技術】
【０００２】
図１４は、従来のファイル共有システムの一例を示す概略図である。
【０００３】
図１４に示されるような従来のネットワークファイルシステムによるファイル共有においては、ＴＣＰ／ＩＰなどネットワークのプロトコルを用いることによって、クライアント、サーバ間でＩ／Ｏ（Ｉｎ／Ｏｕｔ：入出力）データを送受信し、ファイル共有を実現している。
【０００４】
このような構成を有する従来のファイル共有方法は、次のように動作する。
【０００５】
すなわち、サーバ、クライアントがそれぞれ通信制御手段を備えており、ディスク装置へデータを書き込む場合、サーバが、細かく分割されたサイズ毎にＩ／Ｏデータをクライアントから受信し、ファイルシステム管理手段を介して、当該ディスク装置にＩ／Ｏを発行し、入出力制御手段及びファイルシステム管理手段を介して、通信制御手段によって、クライアントへ当該Ｉ／Ｏの終了通知を送信する。
【０００６】
しかし、上述した従来のファイル共有システムにおいては、以下に述べるような問題点が存在する。
【０００７】
第１の問題点は、サーバのメモリやＣＰＵの資源の消費量が多い点である。
【０００８】
その理由は、Ｉ／Ｏデータが、サーバを経由してクライアントとディスク装置間で送受信されるため、サーバのメモリ上に一旦Ｉ／Ｏデータを保持する領域を確保する必要が生じ、また、Ｉ／Ｏデータそのものを処理するために多くのＣＰＵ資源を消費するからである。このため、サーバにクライアントが多数接続される環境においては、サーバの処理負担及びネットワークの負荷が増大するので、好ましいシステム構成とは言えない。
【０００９】
第２の問題点は、サーバがディスク装置に対して発行するＩ／Ｏのデータサイズが小さくなり、Ｉ／Ｏの効率が悪い点である。
【００１０】
その理由は、ネットワークを介してＩ／Ｏデータを転送するためには、通信プロトコルが要求する条件を満たす必要があるので、ネットワークを介して転送するＩ／Ｏデータのデータサイズを、分割して小さくする必要があるからである。
【００１１】
第３の問題点は、ディスク装置が、サーバと物理的に近い位置に設置されなければならないという点である。
【００１２】
その理由は、Ｉ／Ｏデータを転送するためには、ディスク装置が、サーバとファイバチャネル等のＩ／Ｏ系プロトコルで接続される必要があるためである。
【００１３】
また、上記問題点は、ネットワークアタッチドストレージ(一般にＮＡＳと呼ばれる)においても同様である。
【００１４】
一方、従来のファイル共有システムの他の例が、特許文献１（特開２０００−２５０８２１号広報）に記載されている。
【００１５】
これは、図１５に示したように記憶装置を交換機を介して共有しており、ＴＰＴ（Ｔｈｉｒｄ−Ｐａｒｔｙ  Ｔｒｎｓｆｅｒ）入出力管理手段を用いて、周辺装置と直接データ転送をすることで、データ転送の高速化を実現することにより、上記問題点を解決する。
【００１６】
このような構成例を有する従来のファイル共有方法は、次のように動作する。
【００１７】
すなわち、サーバ、クライアントは、それぞれ通信制御手段を備え、サーバの通信制御手段は、クライアントの通信制御手段によって送信されたＩ／Ｏ要求情報をファイルシステム管理手段に提供し、さらに当該Ｉ／Ｏ要求情報に関するファイル内オフセットやＩ／Ｏサイズ等の情報を入出力制御手段に提供する。
【００１８】
次いで、周辺装置とクライアントの間で実際のＩ／Ｏが行われる。
【００１９】
その後、通信制御手段によって、サーバの入出力制御手段及びファイルシステム管理手段を介して、クライアントへ当該Ｉ／Ｏの終了通知を送信する。
【００２０】
このように、図１５に示すようなネットワーク及びストレージエリアネットワークを基本とする従来のファイル共有システムの場合、ディスク装置とホストコンピュータ間のデータ転送には、イーサーネット（Ｒ）等の通信回線を用いたネットワークを使用しないため、ネットワークの負荷を低減できる効果を有する。
【特許文献１】特開２０００−２５０８２１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかし、上述した特許文献１を含む従来のファイル共有システムにおいては、以下に述べるような課題が存在する。
【００２２】
第１の課題は、イーサーネット（Ｒ）等によるネットワークと、ファイバチャネル等に基づくストレージエリアネットワークをそれぞれ独立して構築しなければならないため、構築コストが多くかかる点である。
【００２３】
第２の課題は、イーサーネット（Ｒ）等によるネットワークと、ファイバチャネル等に基づくストレージエリアネットワークをそれぞれ独立して構築しなければならないため、システム管理に高いスキルが要求される点である。
【００２４】
第３の課題は、グリッドコンピューティングのような広域に分散されたコンピュータ間でのファイル共有においては、ファイバチャネルを用いてイーサーネット（Ｒ）のような広域なネットワークを構築することができないため、ファイバチャネル等のＩ／Ｏ系のプロトコルで接続することが、事実上不可能な点である。
【００２５】
なお、以下、単に「ネットワーク」と記載した場合は、イーサーネット（Ｒ）等を用いたネットワークを指し、「ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）」と記載した場合は、ファイバチャネル等を用いたストレージエリアネットワークを指すこととする。
【００２６】
本発明の目的は、広域なネットワークによるシステム構築及びその管理が容易で、システム構築及び運用管理のコストを抑制できるファイル共有システム、ファイル共有プログラム、管理サーバ及びクライアント端末を提供することにある。
【課題を解決するための手段】
【００２７】
上記目的を達成するため本発明は、ディスク装置を、ネットワークを介してクライアント端末からアクセス可能に設置し、管理サーバが、クライアント端末からのデータの入出力要求に基づいて、入出力要求の対象のディスク装置とそのディスク装置上の入出力要求の対象の領域との位置情報を含む特定情報をクライアント端末に送信する構成としている。
【００２８】
本発明の好ましい態様では、クライアント端末が、管理サーバから送信された特定情報に基づいて、ディスク装置上の入出力要求の対象の領域に対し、ネットワークを介して直接アクセスする構成としている。
【００２９】
（作用）
クライアント端末が、データの入出力要求したデータが存在するディスク装置とそのデータの位置情報を含む特定情報を管理サーバから受信し、ネットワークにおけるディスク装置上のデータの位置を認識する。
【００３０】
また、クライアント端末が、ディスク装置上のデータに対して直接アクセスして、入出力要求したデータにネットワークを介して直接到達する。
【発明の効果】
【００３１】
本発明によれば、ネットワーク上で広域に分散されたコンピュータ間でのファイルの共有を、コストを抑制して行えることである。
【００３２】
その理由は、管理サーバが、クライアント端末からのデータの入出力要求に基づいて、ネットワークを介してクライアント端末からアクセス可能に設置される入出力要求の対象のディスク装置とディスク装置上の入出力要求の対象の領域との位置情報を含む特定情報をクライアント端末に送信するので、クライアント端末が、ネットワークにおけるディスク装置上のデータの位置を認識して直接アクセスするため、ファイバチャネルを用いてイーサーネット（Ｒ）のような広域なネットワークを構築する必要がなく、イーサーネット（Ｒ）等によるネットワークと、ファイバチャネル等に基づくストレージエリアネットワークをそれぞれ独立して構築する必要がないことから、ネットワークによるシステム構築及びその管理が容易であるため、システム管理に高いスキルが要求されず、システム構築及び運用管理のコストを抑制できるからである。
【発明を実施するための最良の形態】
【００３３】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００３４】
（ファイル共有システムの構成）
図１及び図２は、本発明の実施の形態によるファイル共有システムの構成を示す図であり、図１は、ファイル共有システムの構成単位例を示すブロック図、図２は、ファイル共有システムの概略を示す図である。
【００３５】
図１及び図２を参照すると、本実施の形態によるファイル共有システムは、ネットワーク回線４を介して接続された、クライアント１と、サーバ２と、ディスク装置３とを備えている。
【００３６】
本実施の形態によるファイル共有システムは、以下に示す所定の処理によってＩ／Ｏ（Ｉｎ／Ｏｕｔ：入出力）に関する情報を送受信し、ファイルに対する排他制御機能を用いて、ファイルの共有を実現する。
【００３７】
クライアント１は、計算サーバやスーパーコンピュータなどであって、Ｉ／Ｏ要求プロセス１１と、送信キュー１２と、送信プロセス１３と、受信プロセス１４と、受信キュー１５と、割り込み処理１６と、受信待ちキュー１７とを備えている。
【００３８】
また、クライアント１は、サーバ２に、制御情報のみを送信し、サーバ２から受信した制御情報に基づいて自らディスク装置３とＩ／Ｏを行う。
【００３９】
クライアント１がサーバ２に送信する制御情報は、Ｉ／Ｏに関する情報であるＩ／Ｏ情報に含まれる情報であって、クライアント１が、ディスク装置３との間でのＩ／Ｏの対象となる領域を特定する情報を要求することを示すＩ／Ｏ要求情報、又は、クライアント１が、ディスク装置３との間でのＩ／Ｏを終了することを通知するＩ／Ｏ終了通知情報を有する。
【００４０】
一方、クライアント１がサーバ２から受信する制御情報は、Ｉ／Ｏ対象特定情報を有する。
Ｉ／Ｏ対象特定情報は、クライアント１がＩ／Ｏを要求する、対象ファイルシステム、対象ファイルの情報と、Ｉ／Ｏ要求情報を送信したクライアント１、及びＩ／Ｏ要求情報を送信したクライアント１内のＩ／Ｏ要求プロセス１１などを特定し、該当するディスク装置３、そのディスク装置３内のＩ／Ｏ対象の物理的な位置、位置を特定されたディスクに対するリード又はライトの別、及びＩ／Ｏ要求情報を送信したクライアント１のネットワーク回線４上のアドレスについての情報とを含む。
【００４１】
Ｉ／Ｏ要求プロセス１１は、Ｉ／Ｏに必要なＩ／Ｏ情報のうち、制御情報としてＩ／Ｏ要求情報のみを含んだパケットを生成し、送信キュー１２へ追加して送信プロセス１３を起動する機能を有し、Ｉ／Ｏ要求手段１１１と、パケット待機手段１１２と、パケット判別手段１１３と、Ｉ／Ｏ発行手段１１４と、プロトコル変換手段１１５と、Ｉ／Ｏ処理終了手段１１６とを備えている。
【００４２】
また、Ｉ／Ｏ要求プロセス１１は、Ｉ／Ｏ要求手段１１１によって送信キュー１２の最後尾にパケットを追加した後や、プロトコル変換手段１１５を介してディスク装置３へＩ／Ｏを発行した後において、受信キュー１５を検索する機能を有し、Ｉ／Ｏ要求プロセス１１自身に対応するＩ／Ｏ要求の受信パケットが受信キュー１５になければ、自身のプロセス(Ｉ／Ｏ要求プロセス１１)を受信待ちキュー１７の最後尾に追加し、ＣＰＵを放棄して、受信キュー１５が当該Ｉ／Ｏ要求の受信パケットを受信することをパケット待機手段１１２において待機する状態となる。
【００４３】
なお、Ｉ／Ｏ要求プロセス１１は、ユーザプログラムを実行するプロセスであり、このユーザプログラムから、ディスクへＩ／Ｏを行うｒｅａｄ／ｗｒｉｔｅ等のシステムコールを呼び出すことによりクライアント１のＯＳ（オペレーティングシステム）内部に入り、上記Ｉ／Ｏ要求手段１１１等の各手段の手続きを実行する。
【００４４】
Ｉ／Ｏ要求手段１１１は、制御情報としてＩ／Ｏ要求情報を含んだパケットを生成して送信キュー１２の最後尾へ追加した後、送信プロセス１３を起動する機能を有する。
【００４５】
パケット待機手段１１２は、受信プロセス１４によって起動されるまでＣＰＵを放棄して受信待ち状態を維持する機能、及び受信キュー１５から取り出したパケットをパケット判別手段１１３に提供する機能を有する。
【００４６】
パケット判別手段１１３は、パケット待機手段１１２を介し、受信キュー１５から取り出されたパケットがＩ／Ｏに関するＩ／Ｏ対象特定情報であるか、Ｉ／Ｏ終了処理通知情報であるかを判別し、Ｉ／Ｏ対象特定情報と判別した場合はこのパケットを、Ｉ／Ｏ発行手段１１４に提供し、一方、Ｉ／Ｏ終了処理通知情報と判別した場合はこのパケットをＩ／Ｏ処理終了手段１１６に提供する機能を有する。
【００４７】
Ｉ／Ｏ発行手段１１４は、パケット判別手段１１３から提供されたＩ／Ｏ対象特定情報に基づいて、実際にＩ／Ｏ処理を行う対象を特定してＩ／Ｏを行うＩ／Ｏ情報を作成し、作成したＩ／Ｏ情報をＳＣＳＩ等のＩ／Ｏプロトコルに合った形式に変換してプロトコル変換手段１１５に提供する機能を有する。
【００４８】
プロトコル変換手段１１５は、Ｉ／Ｏ発行手段１１４によってＩ／Ｏプロトコルに合った形式に変換されて提供されたＩ／Ｏ情報を、ＴＣＰ／ＩＰ等のネットワークのプロトコルを用いて、ネットワーク回線４を介して該当するディスク装置３へ送信し、実際にＩ／Ｏを行う機能を有する。
【００４９】
Ｉ／Ｏ処理終了手段１１６は、パケット判別手段１１３により提供されたＩ／Ｏ終了処理通知情報から取得した、実際にクライアント１とディスク装置３間でＩ／Ｏができたサイズと、エラー情報とを、呼び出し元であるｒｅａｄ／ｗｒｉｔｅシステムコールへ返す機能を有する。
【００５０】
送信キュー１２は、Ｉ／Ｏ要求手段１１１によって追加されたＩ／Ｏ要求情報を含んだパケットと、割り込み処理１６によって追加されたＩ／Ｏ終了処理通知情報を含んだパケットとを格納し、送信プロセス１３に提供する機能を有する。
【００５１】
送信プロセス１３は、送信キュー１２内のパケットの内容から宛先のサーバ２を調べる機能を有する。また、送信プロセス１３は、このパケットを同サーバ２へ送信する送信手段１３１を備えている。
【００５２】
受信プロセス１４は、サーバ２からパケットを受信する受信手段１４１を備え、サーバ２からパケットを受信すると受信待ち状態から復帰し、同パケット内の情報に基づき、受信待ちキュー１７を検索し、該当するＩ／Ｏ要求プロセス１１を特定して起動し、受信したパケットを受信キュー１５に追加する。
【００５３】
受信キュー１５は、受信プロセス１４によって追加されたパケットを格納し、Ｉ／Ｏ要求プロセス１１に提供する機能を有する。
【００５４】
割り込み処理１６は、該当するディスク装置３にＩ／Ｏ要求プロセス１１が送信したＩ／Ｏの終了を知らせる信号に応答するパケットを、ネットワーク回線４経由でディスク装置３から受信し、受信したパケットからＩ／Ｏの終了を了承するＩ／Ｏ終了通知を取り出してＩ／Ｏ終了通知情報を生成し、制御情報として送信キュー１２へ追加して送信プロセス１３を起動する。
【００５５】
受信待ちキュー１７は、Ｉ／Ｏ要求手段１１１が送信キュー１２にパケットをキューイングした後や、プロトコル変換手段１１５がディスク装置３へＩ／Ｏを発行した後において、当該Ｉ／Ｏ要求プロセス１１自身に対応するＩ／Ｏ要求の受信パケットが受信キュー１５にない場合に、当該Ｉ／Ｏ要求プロセス１１がキューイングされる機能を有する。
【００５６】
サーバ２は、ネットワーク回線４を介してクライアント１と、ディスク装置３と接続し、受信プロセス２１と、Ｉ／Ｏ要求情報キュー２２と、Ｉ／Ｏ終了通知情報キュー２３と、Ｉ／Ｏ処理プロセス２４と、送信キュー２５と、送信プロセス２６とを備えており、クライアント１からＩ／Ｏに関する制御情報を受信し、Ｉ／Ｏの対象となるディスク装置３を特定する情報又はＩ／Ｏの終了処理がなされたことを知らせる情報をクライアント１に送信する。
【００５７】
受信プロセス２１は、クライアント１から制御情報に関するパケットを受信する受信手段２１１と、受信手段２１１で受信したパケットがＩ／Ｏ要求情報を有するか、又は、Ｉ／Ｏ終了通知情報を有するかを判別するパケット判別手段２１２とを備えており、受信したパケットがＩ／Ｏ要求情報を有する場合は、Ｉ／Ｏ要求情報キュー２２に追加し、一方、受信したパケットがＩ／Ｏ終了通知情報を有する場合は、Ｉ／Ｏ終了通知情報キュー２３に追加する機能を有する。
【００５８】
Ｉ／Ｏ要求情報キュー２２は、受信プロセス２１によって提供されたＩ／Ｏ要求情報を有するパケットを格納し、Ｉ／Ｏ処理プロセス２４に提供する機能を有する。
【００５９】
Ｉ／Ｏ終了通知情報キュー２３は、受信プロセス２１によって提供されたＩ／Ｏ終了通知情報を有するパケットを格納し、Ｉ／Ｏ処理プロセス２４に提供する機能を有する。
【００６０】
Ｉ／Ｏ処理プロセス２４は、Ｉ／Ｏ要求情報キュー２２からＩ／Ｏ要求情報を有するパケットを取り出して、又は、Ｉ／Ｏ終了通知情報キュー２３からＩ／Ｏ終了通知情報を有するパケットを取り出して所定の処理を行ったパケットを、送信キュー２５に追加する機能を有し、Ｉ／Ｏ要求情報選択手段２４１と、ファイルシステム管理手段２４２と、Ｉ／Ｏ終了処理通知手段２４３とを備える。
【００６１】
Ｉ／Ｏ処理プロセス２４は、Ｉ／Ｏ要求情報及びＩ／Ｏ終了通知情報に含まれるＩ／Ｏ識別番号によって識別されたＩ／Ｏ要求プロセス１１と一対一に対応して動作する。
【００６２】
Ｉ／Ｏ要求情報選択手段２４１は、Ｉ／Ｏ要求情報キュー２２から取り出したＩ／Ｏ要求情報を有するパケットの内容から、クライアント１がＩ／Ｏを要求する、対象ファイルシステム、対象ファイルなどのＩ／Ｏ対象を特定する機能を備えている。
【００６３】
ファイルシステム管理手段２４２は、ディスク装置３を構成要素とするファイルシステム（不図示）を階層構造により管理しており、ディスク装置３及びディスク装置３を構成する構成ディスクを特定するディスク特定情報を含むファイルシステムの管理情報を有している。
【００６４】
また、ファイルシステム管理手段２４２は、Ｉ／Ｏ要求情報選択手段２４１で選択されたＩ／Ｏ要求情報と、Ｉ／Ｏ要求情報を発行したクライアント１及びクライアント１内のＩ／Ｏ要求プロセス１１を識別するＩ／Ｏ識別番号等とを含むＩ／Ｏ対象特定情報から構成されるパケットを生成して送信キュー２５に追加し、送信プロセス２６を起動する機能を備えている。
【００６５】
図３は、本発明の実施の形態によるファイル共有システムの構成の１例を示すブロック図である。
【００６６】
図３を参照すると、図１と異なる点は、ネットワーク４にクライアント１、ディスク装置３が複数接続し（クライアント１Ａ、１Ｂ、1Ｃ、ディスク装置３Ａ、３Ｂ、３Ｃ）し、各クライアント１Ａ〜１Ｃがそれぞれ有するＩ／Ｏ要求プロセス１１Ａ、１１Ｂ、１１Ｃ、送信プロセス１３Ａ、１３Ｂ、１３Ｃ、受信プロセス１４Ａ、１４Ｂ、１４Ｃに対応して、サーバ２が、受信プロセス２１Ａ、２１Ｂ、２１Ｃ、Ｉ／Ｏ処理プロセス２４Ａ、２４Ｂ、２４Ｃ、送信プロセス２６Ａ、２６Ｂ、２６Ｃを有する点である。
【００６７】
また、図４は、本発明の実施の形態によるファイル共有システムの構成の他の例を示すブロック図である。
【００６８】
図４を参照すると、図１と異なる点は、クライアント１が、Ｉ／Ｏ要求プロセス１１を複数有し（１１Ａ−１、１１Ａ−２、１１Ａ−３）、各Ｉ／Ｏ要求プロセス１１が、それぞれシステムコールを呼び出してＩ／Ｏ要求を行うことにより、サーバ２が、各Ｉ／Ｏ要求プロセス１１Ａ−１〜１１Ａ−３に対応するＩ／Ｏ処理プロセス２４Ａ−１〜２４Ａ−３を有する点である。
【００６９】
さらに、図５は、Ｉ／Ｏ識別番号によって示される対応関係を表す図であり、ファイルシステム管理手段２４２が、Ｉ／Ｏ要求情報を含むパケットの受信時に、記憶する対応関係である。
【００７０】
図５を参照すると、複数のＩ／Ｏ要求情報を発行したクライアント１と、サーバ２とにおいて、各Ｉ／Ｏ要求情報について、クライアントごとに、受信プロセスと送信プロセスとの対応関係、Ｉ／Ｏ処理プロセスとクライアント（クライアントレベル）との対応関係が示されている。また、１台のクライアントが複数のＩ／Ｏ要求情報を発行した場合における、Ｉ／Ｏ要求プロセスとＩ／Ｏ処理プロセス（Ｉ／Ｏ処理プロセスレベル）との対応関係が示されている。
【００７１】
Ｉ／Ｏ要求情報が有する、Ｉ／Ｏ識別番号を示す情報によれば、クライアントが複数ある場合においても、ファイルシステム管理手段２４２は、そのＩ／Ｏ要求情報を発行したクライアントを識別することができ、１台のクライアント中に、異なるＩ／Ｏ要求情報を発行したＩ／Ｏ要求プロセスが複数ある場合においても、そのＩ／Ｏ要求情報を発行したＩ／Ｏ要求プロセスを識別できる。
【００７２】
さらに、ファイルシステム管理手段２４２は、Ｉ／Ｏ終了通知情報キュー２３から取り出したＩ／Ｏ終了通知情報が有するパケットの内容に基づいて、ファイルシステムの管理情報を更新し、エラー情報、クライアント１とディスク装置３間で実際にＩ／Ｏ出来たサイズ、及びＩ／Ｏ終了通知情報を送信したクライアント１の識別情報を含むパケットを生成してＩ／Ｏ終了処理通知手段２４３に提供する機能を備えている。
【００７３】
Ｉ／Ｏ終了処理通知手段２４３は、ファイルシステム管理手段２４２から提供されたパケットの内容に基づいて、サーバ２におけるＩ／Ｏの終了処理がなされたことを知らせるＩ／Ｏ終了処理通知情報を含むパケットを生成して送信キュー２５へ追加し、送信プロセス２６を起動する機能を備えている。
【００７４】
送信キュー２５は、Ｉ／Ｏ処理プロセス２４から提供されたＩ／Ｏ対象特定情報又はＩ／Ｏ終了処理通知情報を含むパケットを格納し、送信プロセス２６に提供する機能を有する。
【００７５】
送信プロセス２６は、送信キュー２５から取り出したパケットをクライアント１に送信する送信手段２６１を備える。
【００７６】
ディスク装置３は、ネットワーク回線４を介してクライアント１と、サーバ２と接続しており、クライアント１から受信した、Ｉ／Ｏ対象特定情報に対応し、Ｉ／Ｏ情報から、ＳＣＳＩ等のＩ／Ｏプロトコルに基づくコマンドを取り出すプロトコル変換手段３１を備え、一般的なディスク装置と同様に同コマンドに基づいたＩ／Ｏ処理を行う。
【００７７】
なお、送信キュー１２、受信キュー１５、受信待ちキュー１７、Ｉ／Ｏ要求情報キュー２２、Ｉ／Ｏ終了通知情報キュー２３、送信キュー２５は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）と呼ばれるデータの入出力方式によってデータを扱うキュー構造を有する。ＦＩＦＯは、格納したデータが、古く格納した順に取り出されるようにする方式であるため、一番新しく格納されたデータが最後に取り出される。
【００７８】
また、図１に示されるファイル共有システムは、簡単のためにクライアント１、サーバ２、ディスク装置３が共に１つだけであるが、実際には図２に示したような１台のサーバと、複数台のクライアントと、複数台のディスク装置とがネットワーク回線４を介して接続し、同サーバに対して複数のクライアントからＩ／Ｏが要求され、同ディスク装置に対してネットワーク回線４を介して複数のクライアントが直接アクセスする場合を対象としている。
【００７９】
また、サーバ２内の受信プロセス２１、送信プロセス２６は、クライアント１内の送信プロセス１３、受信プロセス１４と１対１の関係にある。このため、クライアントが複数存在する場合は、サーバ２の受信プロセス２１、送信プロセス２６は、クライアントの数だけ存在する。
【００８０】
さらに、サーバ２内のＩ／Ｏ処理プロセス２４は、１つのＩ／Ｏ要求情報の処理がサーバ２において完了するまで、そのＩ／Ｏ要求情報によって占有される。このため、クライアント１内で複数のＩ／Ｏ要求プロセス１１が、それぞれユーザプログラムからｒｅａｄ／ｗｒｉｔｅシステムコールを呼び出すことで、ＯＳ内部に入ってＩ／Ｏ要求手段１１１の手続きを実行することにより、複数のＩ／Ｏを要求する場合は、サーバ２で、複数のＩ／Ｏ要求情報を処理するために、これら複数のＩ／Ｏ要求プロセス１１に１対１で対応する複数のＩ／Ｏ処理プロセス２４が起動する。
【００８１】
なお、Ｉ／Ｏ処理プロセス２４は、受信したＩ／Ｏ要求情報が有する固有の識別情報であるＩ／Ｏ識別番号に基づいて、処理対象のＩ／Ｏ要求情報を発行したＩ／Ｏ要求プロセス１１に対応付けられる。
【００８２】
次いで、本発明の実施の形態によるファイル共有システムの主要な構成要素の動作の概略を説明する。
【００８３】
Ｉ／Ｏ要求プロセス１１は、ｒｅａｄ／ｗｒｉｔｅシステムコールがユーザモードで呼び出されると、Ｉ／Ｏ要求手段１１１において、Ｉ／Ｏに関する制御情報として、Ｉ／Ｏ要求情報のみを含んだパケットを生成して送信キュー１２の最後尾へ追加した後、送信プロセス１３を起動する。
【００８４】
その後、Ｉ／Ｏ要求プロセス１１は、受信キュー１５を検索し、Ｉ／Ｏ要求プロセス１１自身に対応するＩ／Ｏ要求の受信パケットが受信キュー１５になければ、自身のプロセス(Ｉ／Ｏ要求プロセス１１)を受信待ちキュー１７の最後尾に追加し、ＣＰＵを放棄して、受信プロセス１４によって起動されることを待つ状態となる。
【００８５】
Ｉ／Ｏ要求プロセス１１は、受信プロセス１４によって起動されると、パケット判別手段１１３により、受信キュー１５を検索して該当するパケットを取り出し、パケット内のフラグを参照してそのパケットがＩ／Ｏ対象特定情報であるかＩ／Ｏ終了処理通知情報であるかを判別する。
【００８６】
パケット判別手段１１３による判別の結果、Ｉ／Ｏ対象特定情報である場合、Ｉ／Ｏ発行手段１１４が、Ｉ／Ｏ対象特定情報に基づいてＩ／Ｏを行うディスク装置３を特定する。そして、Ｉ／Ｏ対象特定情報に対応するＩ／Ｏ情報をＳＣＳＩ等のＩ／Ｏプロトコルに合った形式に変換してプロトコル変換手段１１５へ提供する。
次いで、プロトコル変換手段１１５が、Ｉ／Ｏ発行手段１１４によってＩ／Ｏプロトコルに合った形式に変換されて提供されたＩ／Ｏ情報を、ＴＣＰ／ＩＰ等のネットワークのプロトコルを用いて、ネットワーク回線４を介して該当するディスク装置３へ送信する。
【００８７】
その後、Ｉ／Ｏ要求プロセス１１は、受信キュー１５を検索し、Ｉ／Ｏ要求プロセス１１自身に対応するＩ／Ｏ要求の受信パケットが受信キュー１５になければ、自身のプロセス(Ｉ／Ｏ要求プロセス１１)を受信待ちキュー１７の最後尾に追加し、ＣＰＵを放棄して、再び受信プロセス１４によって起動されることを待つ状態となる。
【００８８】
一方、パケット判別手段１１３による判別の結果、Ｉ／Ｏ終了処理通知情報である場合、Ｉ／Ｏ処理終了手段１１６が、Ｉ／Ｏ終了処理通知情報からエラー情報及び実際にＩ／Ｏができたサイズを取得して呼び出し元であるｒｅａｄ／ｗｒｉｔｅシステムコールに返す。
【００８９】
送信プロセス１３は、起動すると、送信手段１３１により送信キュー１２内の先頭のパケットを１つ取り出してその内容から宛先のサーバ２を調べ、同サーバ２へこのパケットを送信する。その後、送信プロセス１３は、送信手段１３１により再度送信キュー１２を調べ、他にパケットがなければＣＰＵを放棄して送信待ち状態となる。
【００９０】
受信プロセス２１は、受信手段２１１において受信待ち状態となっている。クライアント１からパケットを受信すると起動し、受信したパケット内のフラグを参照し、受信パケットがクライアント１からのＩ／Ｏ要求情報であるか、Ｉ／Ｏ終了通知情報であるかを確認する。
【００９１】
Ｉ／Ｏ要求情報である場合、Ｉ／Ｏ要求情報キュー２２の最後尾へ同パケットを追加し、現在処理中ではないＩ／Ｏ処理プロセス２４を１つ起動する。
【００９２】
一方、Ｉ／Ｏ終了通知情報である場合、Ｉ／Ｏ終了通知情報キュー２３の最後尾へ同パケットを追加し、対応するＩ／Ｏ処理プロセス２４を起動する。
【００９３】
クライアント１から受信したパケットがＩ／Ｏ要求情報である場合、現在処理中ではないＩ／Ｏ処理プロセス２４、すなわち、現在Ｉ／Ｏ要求情報待ち状態(Ｉ／Ｏ処理開始待ち)のＩ／Ｏ処理プロセス２４が、受信プロセス２１によって起動する。
【００９４】
そして、起動したＩ／Ｏ処理プロセス２４は、Ｉ／Ｏ要求情報選択手段２４１によりＩ／Ｏ要求情報キュー２２を調べ、Ｉ／Ｏ要求情報キュー２２内にパケットがある場合は、その先頭から１つパケットを取り出す。
【００９５】
ファイルシステム管理手段２４２は、Ｉ／Ｏ要求情報選択手段２４１から取得したパケットの内容から、Ｉ／Ｏ対象となる対象ファイルシステム、Ｉ／Ｏ要求の対象となる対象ファイル、Ｉ／Ｏ要求情報を送信したクライアント１、及びＩ／Ｏ要求情報を送信したクライアント１のＩ／Ｏ要求プロセス１１などを特定し、該当するディスク装置３、そのディスク装置３内のＩ／Ｏ対象の物理的な位置、位置を特定されたディスクに対するリード又はライトの別、及びＩ／Ｏ要求情報を送信したクライアント１のネットワーク回線４上のアドレスについての情報を含むパケットを生成して送信キュー２５の最後尾に格納し、送信プロセス２６を起動する。
【００９６】
従って、送信キュー２５に格納されたパケットは、ファイルシステム管理手段２４２がＩ／Ｏ要求情報選択手段２４１から取得したパケットが有する情報と、ファイルシステム管理手段２４２が新たに追加した情報とからなるＩ／Ｏ対象特定情報を有している。
【００９７】
その後、Ｉ／Ｏ処理プロセス２４は、ＣＰＵを一旦放棄し、ファイルシステム管理手段２４２において、クライアント１から送信されるＩ／Ｏ終了通知情報の待ち状態（Ｉ／Ｏ処理終了待ち状態）となる。
【００９８】
一方、クライアント１から受信したパケットがＩ／Ｏ終了通知情報である場合、受信プロセス２１によって起動した、現在Ｉ／Ｏ処理終了待ち状態(Ｉ／Ｏ処理通知情報待ち)のＩ／Ｏ処理プロセス２４が、Ｉ／Ｏ終了通知情報キュー２３を検索し、該当するＩ／Ｏ終了通知情報を含むパケットを同Ｉ／Ｏ終了通知情報キュー２３から取り出してファイルシステム管理手段２４２に提供する。
【００９９】
そして、ファイルシステム管理手段２４２は、受信したＩ／Ｏ終了通知情報を含むパケットに基づいて、管理する管理情報を更新し、エラー情報、実際にＩ／Ｏできたサイズ、及びＩ／Ｏ要求情報を発行したクライアント１のネットワーク回線４上のアドレスについての情報を含むパケットを生成してＩ／Ｏ終了処理通知手段２４３に送信する。
【０１００】
Ｉ／Ｏ終了処理通知手段２４３は、ファイルシステム管理手段２４２から提供されたパケットの内容に基づいて、サーバ２におけるＩ／Ｏの終了処理がなされたことを知らせるＩ／Ｏ終了処理通知情報を含むパケットを生成して送信キュー２５へ追加し、送信プロセス２６を起動する。
【０１０１】
送信プロセス２６は、Ｉ／Ｏ処理プロセス２４によって起動すると、送信手段２６１が、送信キュー２５を調べ、送信キュー２５内にパケットがあればその先頭から１つ取り出し、パケット内の送り先であるクライアント１のネットワーク回線４上のアドレスを参照してそのクライアント１へ送信する。
【０１０２】
その後、送信プロセス２６は、送信手段２６１が再度送信キュー２５を調べて他にパケットがなければ、ＣＰＵを放棄し送信待ち状態となる。
【０１０３】
受信プロセス１４は、サーバ２からパケットを受信すると受信待ち状態から復帰し、同パケット内の情報に基づき、受信待ちキュー１７を検索し、該当するＩ／Ｏ要求プロセス１１を特定して起動し、受信したパケットを受信キュー１５の最後尾に追加する。
【０１０４】
割り込み処理１６は、プロトコル変換手段１１５によってＩ／Ｏプロトコルに合った形式に変換されて該当するディスク装置３に送信されたＩ／Ｏを終了する旨のパケットに応答するパケット（終了通知を有するパケット）を、ネットワーク回線４を介してディスク装置３から受信する。
【０１０５】
この際、割り込み処理１６は、オペレーティングシステム内の割り込み処理の延長において、ディスク装置３から受信したパケットからＩ／Ｏプロトコルに基づく終了通知を取り出し、ディスクドライバのコールバック関数を呼び出す。そして、当該Ｉ／Ｏのエラー情報からＩ／Ｏ終了通知情報を生成し、送信キュー１２の最後尾へ追加して送信プロセス１３を起動する。
【０１０６】
ディスク装置３内のプロトコル変換手段３１は、クライアント１よりネットワーク回線４を介して受信したＩ／Ｏ情報から、ＳＣＳＩ等のＩ／Ｏプロトコルに基づくコマンドを取り出し、その後は、一般的なディスク装置と同様に同コマンド基づいたＩ／Ｏ処理を行う。
【０１０７】
（ファイル共有システムの動作の説明） 
次に、図１及び図６〜図１２のフローチャートを参照して本実施の形態によるファイル共有システムの動作について詳細に説明する。
【０１０８】
図６は、本実施の形態によるファイル共有システムのＩ／Ｏ要求プロセス１１の動作を示すフローチャートである。
【０１０９】
図６より、Ｉ／Ｏ要求プロセス１１は、ファイル識別情報、ファイルのオフセット、Ｉ／Ｏサイズ、認証情報、Ｉ／Ｏ識別番号、及びパケット識別フラグを含むＩ／Ｏに関する制御情報であるＩ／Ｏ要求パケットを生成(ステップＳ６０１)して送信キュー１２へ投入し(ステップＳ６０２)、送信プロセス１３を起動する(ステップＳ６０３)。
【０１１０】
Ｉ／Ｏ要求パケットは、クライアント１が、Ｉ／Ｏ要求の対象となる対象ファイルシステム、対象ファイルの情報と、該当するディスク装置３、そのディスク装置３内のＩ／Ｏ対象の物理的な位置の情報とを、サーバ２に要求することを示すＩ／Ｏ要求情報を有するパケットである。
【０１１１】
次いで、Ｉ／Ｏ要求プロセス１１は、Ｉ／Ｏ要求プロセス１１が送信したＩ／Ｏ要求パケットに応答してサーバ２が送信することで、受信キュー１５にキューイングされたパケットが、当該Ｉ／Ｏ要求のＩ／Ｏ識別番号を有するパケットであるか否かを判別し(ステップＳ６０４)、当該Ｉ／Ｏ要求のＩ／Ｏ識別番号を有するパケットでないと判別した場合には、パケットの受信待ち状態となる(ステップＳ６０５)。
【０１１２】
ステップＳ６０４において、当該Ｉ／Ｏ要求のＩ／Ｏ識別番号を有するパケットであると判別した場合、又は、ステップＳ６０５において、Ｉ／Ｏ要求プロセス１１が、受信プロセス１４により起動し、再度ステップＳ６０４で判別を行い、受信キュー１５にキューイングされたパケットが当該Ｉ／Ｏ要求のＩ／Ｏ識別番号を有するパケットであると判別した場合には、Ｉ／Ｏ要求プロセス１１は、同パケットを受信キュー１５から取り出す。
【０１１３】
次いで、パケット内のパケット識別フラグを参照して、そのパケットがＩ／Ｏ終了処理通知情報を有するか否かを判別する(ステップＳ６０６)。
【０１１４】
ステップＳ６０６において、Ｉ／Ｏ終了処理通知情報を有さないと判別した場合、すなわち、Ｉ／Ｏ対象特定情報を有すると判別した場合、Ｉ／Ｏ要求プロセス１１は、同Ｉ／Ｏ対象特定情報に対応するＩ／Ｏ情報をディスクドライバに渡せる形式へ変換し(ステップＳ６０７)、ディスクドライバを呼び出し(ステップＳ６０８)、さらに、コマンドをネットワークプロトコルに載せ、対象とするディスク装置３へ送信し、ディスク装置３との間でＩ／Ｏを行う(ステップＳ６０９)。
【０１１５】
上記において、Ｉ／Ｏ対象特定情報に対象とするディスク装置３の物理的な位置に関する情報が複数含まれていた場合や、ディスク装置３を構成し、対象となる構成ディスクの物理的な位置に関する情報が複数含まれていた場合、Ｉ／Ｏ要求プロセス１１は、ステップＳ６０７〜ステップＳ６０９をその数だけ繰り返す。
【０１１６】
その後、再びステップＳ６０４において判別を行い、Ｉ／Ｏ識別番号を有するパケットがなければ、ＣＰＵを放棄してステップＳ６０５において受信待ち状態となる。
【０１１７】
ステップＳ６０６において、Ｉ／Ｏ終了処理通知情報であると判別した場合、Ｉ／Ｏ要求プロセス１１は、エラー情報、ファイルの更新情報、実際にＩ／Ｏが出来たサイズを呼び出し元のｒｅａｄ／ｗｒｉｔｅシステムコールへ返し(ステップＳ６１０)、ユーザモードへ復帰(ステップＳ６１１)する。
【０１１８】
図７は、本実施の形態によるファイル共有システムの送信プロセス１３の動作を示すフローチャートである。
【０１１９】
図７より、送信プロセス１３は、Ｉ／Ｏ要求プロセス１１内のＩ／Ｏ要求手段１１１、または割り込み処理１６のコールバック関数内から起動されると、送信キュー１２に送信待ちのパケットがあるか否かを判別する(ステップＳ７０１)。
【０１２０】
ステップＳ７０１で、送信キュー１２に送信待ちのパケットがあると判別した場合、送信プロセス１３は、送信キュー１２の先頭から１つパケットを取り出し(ステップＳ７０２)、同パケットの内容から宛先のサーバ２のネットワーク上のアドレスを確認し、同アドレスへパケットを送信する(ステップＳ７０３)。
【０１２１】
ステップＳ７０１で、送信キュー１２に送信待ちのパケットがないと判別した場合、送信プロセス１３は、ＣＰＵを放棄し送信待ち状態となる(ステップＳ７０４)。
【０１２２】
その後、再度送信キュー１２を確認し(ステップＳ７０１)、パケットがあればステップＳ７０２及びステップＳ７０３を繰り返し、他にパケットがなければＣＰＵを放棄し送信待ち状態となる(ステップＳ７０４)。
【０１２３】
図８は、本実施の形態によるファイル共有システムの受信プロセス１４の動作を示すフローチャートである。
【０１２４】
図８より、クライアント１が、サーバ２から送信されたパケットを受信すると、オペレーティングシステムの機能により、パケットの受信を待って受信処理関数内で停止していた受信プロセス１４が起動する。起動した受信プロセス１４は、サーバ２からのパケットの受信の有無を判別し(ステップＳ８０１)、パケットの受信がある場合は、受信したパケットを受信キュー１５の最後尾に追加する(ステップＳ８０２)。
【０１２５】
次いで、ステップＳ８０２でパケットを追加する際に参照した同パケット内のＩ／Ｏ識別番号をキーにして受信待ちキュー１７を検索し、該当するＩ／Ｏ要求プロセス１１を起動する(ステップＳ８０３)。
【０１２６】
一方、ステップＳ８０１でパケットの受信がない場合は、同関数内で受信待ち状態となる(ステップＳ８０４)
その後、再度受信処理関数を呼び出してサーバ２からのパケットの受信の有無を判別し(ステップＳ８０１)、受信したパケットがあればステップＳ８０２及びステップＳ８０３を繰り返し、他に受信したパケットがなければ同関数内で受信待ち状態となる(ステップＳ８０４)。
【０１２７】
図９は、本実施の形態によるファイル共有システムの割り込み処理１６の動作を示すフローチャートである。
【０１２８】
図９より、割り込み処理１６は、ディスク装置３からＩ／Ｏ終了通知を受信した時に実行される。ディスク装置３から送信されたＩ／Ｏ終了通知は、ネットワーク回線４を介してクライアント１へ送信されるので、その中のＩ／Ｏプロトコルのみを取り出し、ディスクドライバのコールバック関数を起動する(ステップＳ９０１)。
【０１２９】
コールバック関数は、エラー情報等をチェックしてＩ／Ｏ終了通知情報を生成する。すなわち、Ｉ／Ｏ終了通知情報として、Ｉ／Ｏ識別番号、パケット識別フラグを付加したパケットを生成する(ステップＳ９０２)。
【０１３０】
次いで、ステップＳ９０２で生成したパケットを送信キュー１２の最後尾へ追加して(ステップＳ９０３)、送信プロセス１３を起動する(ステップＳ９０４)。
【０１３１】
ただし、Ｉ／Ｏ要求プロセス１１が複数のコマンドをディスク装置３へ送信した場合は、上記ステップＳ９０２において、送信した個数に応じた個数のＩ／Ｏ終了通知を受信したことを確認した時点でステップＳ９０３へ進む。
【０１３２】
図１０は、本実施の形態によるファイル共有システムの受信プロセス２１の動作を示すフローチャートである。
【０１３３】
図１０より、サーバ２が、クライアント１から送信されたパケットを受信すると、オペレーティングシステムの機能により、パケットの受信を待って受信処理関数内で受信待ち状態であった受信プロセス２１が起動する。起動した受信プロセス２１は、パケットを受信したか否かを判別し(ステップＳ１００１)、パケットを受信した場合は、パケット内のパケット識別フラグを参照してこのパケットの種類を判別する(ステップＳ１００２)。
【０１３４】
ステップＳ１００２で、Ｉ／Ｏ要求情報であると判別した場合、パケット内に同受信プロセス２１に対応する送信プロセス１３のプロセス番号を付加してＩ／Ｏ要求情報キュー２２の最後尾へ同パケットを追加し(ステップＳ１００３)、現在処理中ではない（Ｉ／Ｏ処理開始待ちの）Ｉ／Ｏ処理プロセス２４を１つ起動する(ステップＳ１００４)。
【０１３５】
一方、ステップＳ１００２で、Ｉ／Ｏ終了通知情報であると判別した場合、パケット内に同受信プロセス２１に対応する送信プロセス１３のプロセス番号を付加してＩ／Ｏ終了通知情報キュー２３の最後尾へ同パケットを追加し(ステップＳ１００５)、このプロセス番号及びＩ／Ｏ識別番号により対応するＩ／Ｏ要求のＩ／Ｏ処理プロセス２４を起動する(ステップＳ１００６)。
【０１３６】
また、ステップＳ１００１でパケットの受信がなければ、同関数内で受信待ち状態となる(ステップＳ１００７)。
【０１３７】
その後、再度受信処理関数を呼び出し、パケットの受信の有無を判別し(ステップＳ１００１)、受信したパケットがあればステップＳ１００２〜ステップＳ１００４又はステップＳ１００２〜ステップＳ１００５〜ステップＳ１００６を繰り返し、他に受信したパケットがなければ同関数内で受信待ち状態となる(ステップＳ１００７)。
【０１３８】
図１１は、本実施の形態によるファイル共有システムのＩ／Ｏ処理プロセス２４の動作を示すフローチャートである。
【０１３９】
まず、受信プロセス２１が、上記ステップＳ１００４で示すように、Ｉ／Ｏ処理プロセス２４を起動する。
図１１より、Ｉ／Ｏ処理プロセス２４は、Ｉ／Ｏ要求情報キュー２２がパケットを有するか否かを判別し（ステップＳ１１０１）、Ｉ／Ｏ要求情報キュー２２がパケットを有さない場合は、Ｉ／Ｏ要求情報キュー２２がパケットを有するまで待機する（ステップＳ１１０２）。
【０１４０】
一方、Ｉ／Ｏ要求情報キュー２２がパケットを有する場合は、Ｉ／Ｏ処理プロセス２４が、Ｉ／Ｏ要求情報キュー２２内にあるパケットのうちもっとも古くから格納されているパケットを、Ｉ／Ｏ要求情報キュー２２の先頭から１つ取り出す(ステップＳ１１０３)。
【０１４１】
そのパケットの内容から、対象ファイルシステム、対象ファイルを特定し、ファイルシステム管理手段２４２により、該当するディスク装置３、そのディスク装置３内のＩ／Ｏ対象の物理的な位置(開始セクタ番号とセクタ数)、ディスク装置３を構成する構成ディスクに対するリードかライトの別、Ｉ／Ｏ要求情報を送信したクライアント１のネットワーク上のアドレス、Ｉ／Ｏ識別番号、及びパケット識別フラグについての情報（Ｉ／Ｏ対象特定情報）を含むパケットを生成し(ステップＳ１１０４)、送信キュー２５の最後尾に追加し(ステップＳ１１０５)、受信プロセス２１に指定されたプロセス番号を持つ送信プロセス２６を起動する(ステップＳ１１０６)。
【０１４２】
なお、Ｉ／Ｏ対象のファイルが、複数のディスク装置３上に存在する場合や、ディスク装置３を構成する構成ディスク上のうち、物理的な位置が連続しておらず複数の領域に分かれて存在している場合がある。
【０１４３】
このため、このような場合は、上記ステップＳ１１０３において、Ｉ／Ｏ対象の物理的な位置に関する情報をパケットに複数格納する必要がある。Ｉ／Ｏ対象の物理的な位置とは、例えば、特定されたディスクの開始セクタ番号とセクタ数等で示される、書き込み開始位置や、読み出し開始位置などである。
【０１４４】
その後、Ｉ／Ｏ処理プロセス２４は、ＣＰＵを一旦放棄し、クライアント１からの制御情報（Ｉ／Ｏ終了通知情報）の受信待ち状態となる(ステップＳ１１０７)。
【０１４５】
次いで、受信プロセス２１が、上記ステップＳ１００６で示すように、Ｉ／Ｏ終了通知情報に対応するＩ／Ｏ処理プロセス２４を起動し、起動したＩ／Ｏ処理プロセス２４は、Ｉ／Ｏ終了通知情報キュー２３がパケットを有するか否かを判断する(ステップＳ１１０８)。
【０１４６】
Ｉ／Ｏ終了通知情報キュー２３がパケットを有する場合は、Ｉ／Ｏ処理プロセス２４が、Ｉ／Ｏ要求情報の受信時にＩ／Ｏ要求情報から取得したＩ／Ｏ識別番号をキーにして、該当するＩ／Ｏ終了通知情報を含むパケットを検索し、Ｉ／Ｏ終了通知情報キュー２３から取り出す(ステップＳ１１０９)。
【０１４７】
一方、Ｉ／Ｏ終了通知情報キュー２３がパケットを有さない場合は、ステップＳ１１０７に戻り、Ｉ／Ｏ処理プロセス２４は、クライアント１からのＩ／Ｏ終了通知情報の受信待ち状態となる。
【０１４８】
次いで、ファイルシステム管理手段２４２により、ファイルシステムの管理情報を更新し、エラー情報、実際にＩ／Ｏできたサイズ、及びＩ／Ｏ終了通知情報を送信したクライアント１のネットワーク上のアドレス、Ｉ／Ｏ識別番号、パケット識別フラグについての情報を含むパケットを生成し(ステップＳ１１１０)、Ｉ／Ｏ終了処理通知手段２４３に提供する。
【０１４９】
次いで、Ｉ／Ｏ終了処理通知手段２４３は、ファイルシステム管理手段２４２から提供されたパケットの内容に基づいて、サーバ２におけるＩ／Ｏの終了処理がなされたことを知らせるＩ／Ｏ終了処理通知情報を生成して送信キュー２５の最後尾へ追加し(ステップＳ１１１１)、受信プロセス２１に指定されたプロセス番号を持つ送信プロセス２６を起動する(ステップＳ１１１２)。
【０１５０】
次いで、受信プロセス２１によって起動したＩ／Ｏ処理プロセス２４が終了すると、本実施の形態によるＩ／Ｏ処理プロセスは、リターンし、再度、受信プロセス２１がＩ／Ｏ処理プロセス２４を起動すると、ステップＳ１１０１から繰り返す。
【０１５１】
図１２は、本実施の形態によるファイル共有システムの送信プロセス２６の動作を示すフローチャートである。
【０１５２】
図１２より、送信プロセス２６は、Ｉ／Ｏ処理プロセス２４内のファイルシステム管理手段２４２、またはＩ／Ｏ終了処理通知手段２４３により起動し、送信キュー２５に送信待ちのパケットがあるか否かを判別する(ステップＳ１２０１)。
【０１５３】
ステップＳ１２０１で送信キュー２５に送信待ちのパケットがある場合、送信プロセス２６は、自プロセスのプロセス番号と同一のプロセス番号の入ったパケットがあるか否かを判別する(ステップＳ１２０２)。
【０１５４】
ステップＳ１２０２で、自プロセスのプロセス番号と同一のプロセス番号の入ったパケットがあると判別した場合、このパケットを送信キュー２５の先頭から１つ取り出し(ステップＳ１２０３)、同パケットの内容から宛先のクライアント１のネットワーク上のアドレスを確認し、同アドレスのクライアント１にパケットを送信する(ステップＳ１２０４)。
【０１５５】
一方、ステップＳ１２０１で送信待ちのパケットがない場合及びステップＳ１２０２で自プロセスのプロセス番号の入ったパケットがない場合、送信プロセス２６は、ＣＰＵを放棄して送信待ち状態となる(ステップＳ１２０５)。
【０１５６】
その後、再度送信キュー２５に送信待ちのパケットがあるか否かを判別し(ステップＳ１２０１)、送信待ちのパケットがあれば、自プロセスのプロセス番号と同一のプロセス番号の入ったパケットがあるか否かを再度判別し(ステップＳ１２０２)、自プロセスのプロセス番号と同一のプロセス番号の入ったパケットがあればステップＳ１２０３及びステップＳ１２０４を繰り返し、ステップＳ１２０１で送信待ちのパケットがない場合及びステップＳ１２０２で自プロセスのプロセス番号と同一のプロセス番号の入ったパケットがない場合、ＣＰＵを放棄し送信待ち状態となる(ステップＳ１２０５)。
【０１５７】
なお、上記において、送信キュー１２、受信キュー１５、受信待ちキュー１７、Ｉ／Ｏ要求情報キュー２２、Ｉ／Ｏ終了通知情報キュー２３、送信キュー２５を操作する場合は、排他制御をして、競合が発生しないようにする。
【０１５８】
図１３は、本発明の実施の形態によるファイル共有システム上のコンピュータ処理装置４００のハードウェア構成を示すブロック図である。
【０１５９】
コンピュータ処理装置４００は、ＣＰＵ４０１、メインメモリである主記憶部４０２、ネットワーク回線４と接続してデータの送受信を行う通信部４０３、ディスプレイやプリンタ等の表示部４０４、キーボードやマウス等の入力部４０５、周辺装置とデータの送受信を行うインタフェース部４０６、磁気ディスク、半導体メモリその他の記録媒体が挙げられる補助記憶部４０７を備えている。
【０１６０】
本実施の形態のファイル共有システムは、その動作をハードウェア的に実現することは勿論として、上記した各手段、各プロセス等の各機能を実行するプログラムをコンピュータ処理装置のＣＰＵ４０１で実行することにより、ソフトウェア的に実現することができる。このプログラムは、補助記憶部４０７に格納され、その補助記憶部４０７から主記憶部４０２を介してＣＰＵ４０１にロードされ、その動作を制御することにより、上述した各機能を実現する。
【０１６１】
（本実施の形態による効果）
第１の効果は、サーバ２上のメモリ、ＣＰＵ等のシステム資源を効率的に使用できることである。
【０１６２】
その理由は、クライアント１が、サーバ２から送信された、Ｉ／Ｏ対象特定情報に基づいて、ディスク装置３上のデータに対し、ネットワークを介して直接アクセスするので、Ｉ／Ｏ対象となるデータがサーバ２を介さないためである。
【０１６３】
第２の効果は、ファイバチャネル等ではＳＡＮを構成出来ないような遠隔地にあるクライアント１、サーバ２、ディスク装置３間において、ファイル共有を実現できることである。
【０１６４】
その理由は、クライアント１、サーバ２、ディスク装置３は、全てネットワーク回線４に接続されており、ネットワーク回線４とは別にＳＡＮを構築しなくてもファイル共有を実現できるためである。
【０１６５】
第３の効果は、クライアント端末が、Ｉ／Ｏ対象特定情報により、ネットワークにおけるディスク装置上のデータの位置を特定でき、クライアント１がネットワーク回線４を介してディスク装置３とデータの入出力を直接行えるので、サーバ２とディスク装置３が、物理的に近い位置に置かれていなくてもよいことである。また、複数のディスク装置３をそれぞれネットワーク回線４上の複数の場所に分散させて設置することができるため、地震等の自然災害による被害に対して危険分散でき、万一の場合に被害を最小限に留めることができる。
【０１６６】
第４の効果は、既存のローカルエリアネットワークを持つ施設において、複数のコンピュータ間でファイル共有システムを構築したい場合に新たにストレージエリアネットワークを構築する必要がないので容易に構築でき、システム構築コストを抑制できること、及び容易にシステム管理が行えるので、高度の管理スキルが要求されないことである。
である。
【０１６７】
第５の効果は、ストレージエリアネットワークを構築する必要がないので、システム管理者がファイバチャネルなどによるストレージエリアネットワークの構築や保守についてのスキルを要求されないため、運用コストを抑制できることである。
【０１６８】
第６の効果は、汎用のネットワーク回線を介して、ディスク装置３が、Ｉ／Ｏプロトコルに合った形式に変換されたＩ／Ｏ情報から、ＳＣＳＩ等のＩ／Ｏプロトコルに基づくコマンドを取り出してＩ／Ｏを行うので、グリッドコンピューティングのような広域に分散されたコンピュータ間でのファイル共有が可能であることである。
【０１６９】
以上好ましい複数の実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【０１７０】
【図１】本発明の実施の形態によるファイル共有システムの構成単位例の構成を示すブロック図である。
【図２】本発明の実施の形態によるファイル共有システムの構成の概略を示す図である。
【図３】本発明の実施の形態によるファイル共有システムの構成の１例を示すブロック図である。
【図４】本発明の実施の形態によるファイル共有システムの構成の他の例を示すブロック図である。
【図５】本発明の実施の形態によるファイル共有システムのサーバが有する対応関係を示す図である。
【図６】本発明の実施の形態によるファイル共有システムのＩ／Ｏ要求プロセス１１の動作を示すフローチャートである。
【図７】本発明の実施の形態によるファイル共有システムの送信プロセス１３の動作を示すフローチャートである。
【図８】本発明の実施の形態によるファイル共有システムの受信プロセス１４の動作を示すフローチャートである。
【図９】本発明の実施の形態によるファイル共有システムの割り込み処理１６の動作を示すフローチャートである。
【図１０】本実施の形態によるファイル共有システムの受信プロセス２１の動作を示すフローチャートである。
【図１１】本実施の形態によるファイル共有システムのＩ／Ｏ処理プロセス２４の動作を示すフローチャートである。
【図１２】本実施の形態によるファイル共有システムの送信プロセス２６の動作を示すフローチャートである。
【図１３】本発明の実施の形態によるファイル共有システム上のコンピュータ処理装置４００のハードウェア構成を示すブロック図である。
【図１４】従来のファイル共有システムの構成についての１例の概略を示す図である。
【図１５】従来のファイル共有システムの構成についての１例の概略を示す図である。
【符号の説明】
【０１７１】
１，１Ａ，１Ｂ，１ｎ：クライアント
１１，１１Ａ，１１Ｂ，１１ｎ：Ｉ／Ｏ要求プロセス
１１１：Ｉ／Ｏ要求手段
１１２：パケット待機手段
１１３：パケット判別手段
１１４：Ｉ／Ｏ発行手段
１１５：プロトコル変換手段
１１６：Ｉ／Ｏ処理終了手段
１００：命令選択回路ＳＥＬ
１２，２５：送信キュー
１３，１３Ａ，１３Ｂ，１３ｎ：送信プロセス
１３１：送信手段
１４，１４Ａ，１４Ｂ，１４ｎ：受信プロセス
１４１：受信手段
１５：受信キュー
１６：割り込み処理
１７：受信待ちキュー
２：サーバ
２１，２１Ａ，２１Ｂ，２１ｎ：受信プロセス
２１１：受信手段
２１２：パケット判別手段
２２：Ｉ／Ｏ要求情報キュー
２３：Ｉ／Ｏ終了通知情報キュー
２４，２４Ａ，２４Ｂ，２４ｎ：Ｉ／Ｏ処理プロセス
２４１：Ｉ／Ｏ要求情報選択手段
２４２：ファイルシステム管理手段
２４３：Ｉ／Ｏ終了処理通知手段
２６，２６Ａ，２６Ｂ，２６ｎ：送信プロセス
２６１：送信手段
３，３Ａ，３Ｂ，３ｎ：ディスク装置
３１：プロトコル変換手段
４００：コンピュータ処理装置
４０１：ＣＰＵ
４０２：主記憶部
４０３：通信部
４０４：表示部
４０５：入力部
４０６：インタフェース部
４０７：補助記憶部
【図１】
2006302065.tif 000003
【図２】
2006302065.tif 000004
【図３】
2006302065.tif 000005
【図４】
2006302065.tif 000006
【図５】
2006302065.tif 000007
【図６】
2006302065.tif 000008
【図７】
2006302065.tif 000009
【図８】
2006302065.tif 000010
【図９】
2006302065.tif 000011
【図１０】
2006302065.tif 000012
【図１１】
2006302065.tif 000013
【図１２】
2006302065.tif 000014
【図１３】
2006302065.tif 000015
【図１４】
2006302065.tif 000016
【図１５】
2006302065.tif 000017