(57)【特許請求の範囲】
【請求項１】
Ａ）ＵＳＢストレージ機器、
Ｂ）複数のクライアントコンピュータ、
Ｃ）前記ＵＳＢストレージ機器と前記複数のクライアントコンピュータとをネットワーク接続するＵＳＢデバイスサーバ、
を備え、
Ｄ）前記各クライアントコンピュータと前記ＵＳＢストレージ機器との間では、１のファイルを前記ＵＳＢストレージ機器の記録部のクラスタサイズに基づいて決定されるデータ長のブロックに分割してブロックデータとしてファイル伝送処理が行われ、
Ｅ）前記各クライアントコンピュータは、
e1)前記ＵＳＢストレージ機器との間で前記ブロックデータの伝送を行う前に、伝送対象のブロックデータのデータ長を含むヘッダデータを前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器に送信し、
e2)前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器から前記ヘッダデータを受け取ったことを示す返答データを受け取ると、前記ＵＳＢストレージ機器との間で前記ブロックデータのデータ伝送を開始し、
e3)前記ＵＳＢデバイスサーバからNAK信号を受け取ると同じデータを再度、前記ＵＳＢストレージ機器へ送るために前記ＵＳＢデバイスサーバへ送り、
Ｆ）前記ＵＳＢデバイスサーバは、前記いずれかのクライアントコンピュータによるデータ伝送専有状態では、当該クライアントコンピュータから前記ＵＳＢストレージ機器へのデータが与えられるとこれを前記ＵＳＢストレージ機器へ与え、前記ＵＳＢストレージ機器から当該クライアントコンピュータへのデータが与えられるとこれを当該クライアントコンピュータへ与える、
Ｇ）ネットワークファイル管理システムであって、
Ｈ）前記ＵＳＢデバイスサーバは、
h1)特定のクライアントコンピュータから、前記伝送されるブロックデータのデータ長を含んだヘッダデータが与えられると、現在、別のクライアントコンピュータによるデータ伝送専有状態であるか否か判断し、
h2)前記別のクライアントコンピュータによるデータ伝送専有状態である場合には当該ブロックデータを送信した前記特定のクライアントコンピュータにNAK信号を返信し、
h3)前記別のクライアントコンピュータによるデータ伝送専有状態でない場合には前記特定のクライアントコンピュータによるデータ伝送専有状態とするとともに前記ＵＳＢストレージ機器にそのヘッダデータを送信し、
h4)前記特定クライアントコンピュータについて、データ伝送専有状態となったあと、前記特定クライアントコンピュータと前記ＵＳＢストレージ機器との間で、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ伝送専有状態を解除すること、
を特徴とするネットワークファイル管理システム。
【請求項２】
Ａ）ＵＳＢストレージ機器と複数のクライアントコンピュータとをネットワーク接続するＵＳＢデバイスサーバであって、
Ｂ）前記各クライアントコンピュータと前記ＵＳＢストレージ機器との間では、１のファイルを前記ＵＳＢストレージ機器の記録部のクラスタサイズに基づいて決定されるデータ長のブロックに分割してブロックデータとしてファイル伝送処理が行われ、
Ｃ）前記各クライアントコンピュータは、
c1)前記ＵＳＢストレージ機器との間で前記ブロックデータの伝送を行う前に、伝送対象のブロックデータのデータ長を含むヘッダデータを前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器に送信し、
c2)前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器から前記ヘッダデータを受け取ったことを示す返答データを受け取ると、前記ＵＳＢストレージ機器との間で前記ブロックデータのデータ伝送を開始し、
c3)前記ＵＳＢデバイスサーバからNAK信号を受け取ると同じデータを再度、前記ＵＳＢストレージ機器へ送るために前記ＵＳＢデバイスサーバへ送り、
Ｄ）前記いずれかのクライアントコンピュータによるデータ伝送専有状態では、当該クライアントコンピュータから前記ＵＳＢストレージ機器へのデータが与えられるとこれを前記ＵＳＢストレージ機器へ与え、前記ＵＳＢストレージ機器から当該クライアントコンピュータへのデータが与えられるとこれを当該クライアントコンピュータへ与える、
Ｅ）ＵＳＢデバイスサーバにおいて、
Ｆ）特定のクライアントコンピュータから、前記伝送されるブロックデータのデータ長を含んだヘッダデータが与えられると、現在、別のクライアントコンピュータによるデータ伝送専有状態であるか否か判断し、
Ｇ）前記別のクライアントコンピュータによるデータ伝送専有状態である場合には当該ブロックデータを送信した前記特定のクライアントコンピュータにNAK信号を返信し、
Ｈ）前記別のクライアントコンピュータによるデータ伝送専有状態でない場合には、前記特定のクライアントコンピュータによるデータ伝送専有状態とするとともに、前記ＵＳＢストレージ機器にそのヘッダデータを送信し、
Ｉ）前記特定クライアントコンピュータについて、データ伝送専有状態となったあと、前記特定クライアントコンピュータと前記ＵＳＢストレージ機器との間で、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ伝送専有状態を解除すること、
を特徴とするＵＳＢデバイスサーバ。
【請求項３】
Ａ）ネットワーク伝送プロトコルで定められたカプセル化規則でカプセル化された伝送対象データを入出力する第１接続口と、カプセル化されていない伝送対象データを入出力する第２接続口を有し、前記第１接続口にネットワーク接続されたいずれかのクライアントコンピュータから前記カプセル化された伝送対象データが与えられると、これを非カプセル化して前記第２接続口から出力し、前記第２接続口に送信先が指定されたカプセル化されていない伝送対象データが与えられると、前記カプセル化を行い指定された送信先にネットワーク送信するネットワーク伝送手段、
Ｂ）前記第２接続口に接続され、ストレージ機器伝送手段との間のデータ伝送を制御する制御手段、
Ｃ）単一のクライアントコンピュータとの間でデータの書き込みまたは読み出しが可能なストレージ機器とデータ伝送するストレージ機器伝送手段を備え、
Ｄ）前記制御手段は、以下の手段を有すること、
d1)データ転送モードでは、以下の転送を行う転送手段、
d1-1)前記ネットワークデータ伝送手段の第２接続口から、データ転送をする対象であるクライアントコンピュータからのデータが与えられると、これを前記ストレージ機器伝送手段に与える、
d1-2)前記ストレージ機器伝送手段から返答データが与えられると、前記データ転送をする対象であるクライアントコンピュータに伝送するように前記ネットワークデータ伝送手段の第２接続口に与える、
d2)前記ネットワークデータ伝送手段の第２接続口から、特定クライアントコンピュータのブロックデータのデータ長を表すヘッダデータが与えられると、前記転送手段がいずれかのクライアントコンピュータデータによる転送モードであるか否か判断する判断手段、
d3)前記判断手段の判断結果に応じて、以下の処理を行う伝送制御手段、
d3-1)前記転送手段が、前記ヘッダデータを送信したクライアントコンピュータ以外のクライアントコンピュータによるデータ転送モードである場合には、当該ヘッダデータを送信したクライアントコンピュータに不成立信号を返信させる、
d3-2)前記転送手段がいずれのクライアントコンピュータによるデータ転送モードでもない場合には、以下の処理を行う、
d3-2-1)前記転送手段を前記ヘッダデータを送信したクライアントコンピュータによるデータ転送モードとするとともに、前記ヘッダデータを、前記伝送手段によって前記ストレージ機器伝送手段へ伝送させる、
d3-2-2)前記ヘッダデータを送信したクライアントコンピュータによるデータ転送モードになってから、前記ヘッダデータを送信したクライアントコンピュータと前記ストレージ機器との間でやり取りされる伝送対象データについて、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ転送モードを解除する、
を特徴とするデバイスサーバ。
【請求項４】
Ａ）データの書き込みまたは読み出しが可能なストレージ機器に、複数のクライアントコンピュータからファイル伝送する方法であって、
Ｂ）前記各クライアントコンピュータと前記ストレージ機器との間では、１のファイルを複数のブロックに分割したブロックデータとして伝送処理が行われ、
Ｃ)前記各クライアントコンピュータは、以下のc1)〜c3)の処理にて前記ストレージ機器との間で前記ブロックデータの伝送を行うファイル伝送方法において、
c1)伝送対象のブロックデータのデータ長を含むヘッダデータを前記ストレージ機器に送信し、
c2)その後、前記ストレージ機器から前記ヘッダデータを受け取ったことを示す返答データを受け取ると、前記ブロックデータのデータ伝送を開始し、
c3)不成立信号を受け取ると同じデータを再度、前記ストレージ機器へ送る、
Ｄ）前記ストレージ機器と前記複数のクライアントコンピュータとの間に設けたデバイスサーバに、以下の処理を実行させること、
d1)特定のクライアントコンピュータから、前記伝送されるブロックデータのデータ長を含んだヘッダデータが与えられると、現在、別のクライアントコンピュータによるデータ伝送専有状態であるか否か判断する、
d2)前記別のクライアントコンピュータによるデータ伝送専有状態である場合には当該ブロックデータを送信した前記特定のクライアントコンピュータに不成立信号を返信する、
d3)前記別のクライアントコンピュータによるデータ伝送専有状態でない場合には、前記特定のクライアントコンピュータによるデータ伝送専有状態とするとともに、前記ストレージ機器にそのヘッダデータを送信する、
d4)与えられた転送データが、データ伝送専有状態とした前記特定のクライアントコンピュータと前記ストレージ機器間のデータ伝送であれば、これを転送する、
d5)前記特定クライアントコンピュータについて、データ伝送専有状態となったあと、前記特定クライアントコンピュータと前記ストレージ機器との間で、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ伝送専有状態を解除する、
を特徴とするファイル伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、デバイスサーバに関し、特に、記録媒体機器のデータ管理手法に関する。
【背景技術】
【０００２】
従来、ＵＳＢ（Universal Serial Bus）でパソコンと接続するＵＳＢストレージをネットワークに接続して、共用ストレージとして利用することが提案されている。この場合におけるＵＳＢストレージの制御手法について、図１を用いて説明する。
【０００３】
各クライアントコンピュータには予め専用のプログラムをインストールしておく。クライアントコンピュータ２の操作者は、かかる専用プログラムを起動して、画面上で接続スイッチを選択する。デバイスサーバ５は、かかる選択を受けると、排他フラグをセットする。この状況で、クライアントコンピュータ３からアクセス要求があると、デバイスサーバ５は、現在、排他フラグがセットされているので、かかるアクセス要求に対して、「使用中なのでアクセス不可」という旨のメッセージをクライアントコンピュータ３に返す。クライアントコンピュータ２の操作者は作業終了すると、専用プログラムにより排他フラグをリセットするようデバイスサーバ５に命令を与える。このように、排他フラグを用いることにより、ＵＳＢストレージ１４を複数のクライアントコンピュータから使用することができる。
【０００４】
しかしながら、かかる手法を用いた場合、前記排他フラグがセットされていないときにアクセス要求があったクライアントコンピュータだけがＵＳＢストレージ１４を使用できることとなり、そのタイミングを逃すといつまでたってもＵＳＢストレージ１４を使用することができないという問題がある。
【０００５】
かかる問題を解決するために、特許文献１には、複数のクライアントからＵＳＢストレージ１４にアクセス要求があった場合、これを順序どおりに実行させる方法として、各クライアントに予約をさせて、優先順位に応じてアクセスを許可することが開示されている。
【０００６】
【特許文献１】特開2000-215009号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に開示された予約処理システムでは、以下のような問題があった。たしかに予約させることにより、順番は守られるが、現在使用中のクライアントコンピュータによるＵＳＢストレージ１４の使用は終わっているのにもかかわらず、そのクライアントコンピュータの使用者が切断処理をしなければ、次順位のクライアントコンピュータは使用ができず、無駄な空白時間が発生する。
【０００８】
かかる問題を解決するために、所定時間アクセスがない場合にはタイムアウトとして当該クライアントコンピュータによる専有を強制的に解除して、次順位の予約クライアントコンピュータを自動接続することも考えられるが、その場合でも、タイムアウトの時間分の専有は避けられない。
【０００９】
また、デバイスサーバのＯＳにファイル管理システムを搭載させることも考えられるが、そのために、デバイスサーバに高い処理能力が必要となる。
【００１０】
この発明は、上記問題を解決し、ネットワークに接続された複数のクライアントコンピュータからの書き込みまたは読み出し処理が集中した場合でも、無駄な空き時間がなく書き込みまたは読み出し処理が可能なネットワークファイル管理システムおよびその方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
１）本発明にかかるネットワークファイル管理システムは、Ａ）ＵＳＢストレージ機器、Ｂ）複数のクライアントコンピュータ、Ｃ）前記ＵＳＢストレージ機器と前記複数のクライアントコンピュータとをネットワーク接続するＵＳＢデバイスサーバを備え、Ｄ）前記各クライアントコンピュータと前記ＵＳＢストレージ機器との間では、１のファイルを前記ＵＳＢストレージ機器の記録部のクラスタサイズに基づいて決定されるデータ長のブロックに分割してブロックデータとしてファイル伝送処理が行われ、Ｅ）前記各クライアントコンピュータは、e1)前記ＵＳＢストレージ機器との間で前記ブロックデータの伝送を行う前に、伝送対象のブロックデータのデータ長を含むヘッダデータを前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器に送信し、e2)前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器から前記ヘッダデータを受け取ったことを示す返答データを受け取ると、前記ＵＳＢストレージ機器との間で前記ブロックデータのデータ伝送を開始し、e3)前記ＵＳＢデバイスサーバからNAK信号を受け取ると同じデータを再度、前記ＵＳＢストレージ機器へ送るために前記ＵＳＢデバイスサーバへ送り、Ｆ）前記ＵＳＢデバイスサーバは、前記いずれかのクライアントコンピュータによるデータ伝送専有状態では、当該クライアントコンピュータから前記ＵＳＢストレージ機器へのデータが与えられるとこれを前記ＵＳＢストレージ機器へ与え、前記ＵＳＢストレージ機器から当該クライアントコンピュータへのデータが与えられるとこれを当該クライアントコンピュータへ与える、Ｇ）ネットワークファイル管理システムであって、Ｈ）前記ＵＳＢデバイスサーバは、h1)特定のクライアントコンピュータから、前記伝送されるブロックデータのデータ長を含んだヘッダデータが与えられると、現在、別のクライアントコンピュータによるデータ伝送専有状態であるか否か判断し、h2)前記別のクライアントコンピュータによるデータ伝送専有状態である場合には当該ブロックデータを送信した前記特定のクライアントコンピュータにNAK信号を返信し、h3)前記別のクライアントコンピュータによるデータ伝送専有状態でない場合には前記特定のクライアントコンピュータによるデータ伝送専有状態とするとともに前記ＵＳＢストレージ機器にそのヘッダデータを送信し、h4)前記特定クライアントコンピュータについて、データ伝送専有状態となったあと、前記特定クライアントコンピュータと前記ＵＳＢストレージ機器との間で、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ伝送専有状態を解除する。
【００１２】
このように、前記データ伝送専有状態では、前記ヘッダデータを送ったクライアントコンピュータと前記ＵＳＢデバイスサーバはデータ伝送が可能となる。
【００１３】
かかるデータ伝送専有状態は、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されると解除される。また、既に他のクライアントコンピュータによるデータ伝送専有状態である場合には、別のクライアントコンピュータからの前記ヘッダデータに対してはＮＡＫ信号が返され、これを受けたクライアントコンピュータは、前記ヘッダデータを再送する。
【００１４】
したがって、各クライアントコンピュータは、前記ヘッダデータで特定されるブロック単位で、前記ストレージ機器へデータ転送が可能となる。
【００１５】
これによりネットワークに接続された複数のクライアントコンピュータからの書き込みまたは読み出し処理が集中した場合でも、無駄な空き時間がなく書き込みまたは読み出し処理が可能なネットワークファイル管理システムおよびその方法を提供することができる。
【００１６】
２）本発明にかかるＵＳＢデバイスサーバは、Ａ）ＵＳＢストレージ機器と複数のクライアントコンピュータとをネットワーク接続するＵＳＢデバイスサーバであって、Ｂ）前記各クライアントコンピュータと前記ＵＳＢストレージ機器との間では、１のファイルを前記ＵＳＢストレージ機器の記録部のクラスタサイズに基づいて決定されるデータ長のブロックに分割してブロックデータとしてファイル伝送処理が行われ、Ｃ）前記各クライアントコンピュータは、c1)前記ＵＳＢストレージ機器との間で前記ブロックデータの伝送を行う前に、伝送対象のブロックデータのデータ長を含むヘッダデータを前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器に送信し、c2)前記ＵＳＢデバイスサーバを介して前記ＵＳＢストレージ機器から前記ヘッダデータを受け取ったことを示す返答データを受け取ると、前記ＵＳＢストレージ機器との間で前記ブロックデータのデータ伝送を開始し、c3)前記ＵＳＢデバイスサーバからNAK信号を受け取ると同じデータを再度、前記ＵＳＢストレージ機器へ送るために前記ＵＳＢデバイスサーバへ送り、Ｄ）前記いずれかのクライアントコンピュータによるデータ伝送専有状態では、当該クライアントコンピュータから前記ＵＳＢストレージ機器へのデータが与えられるとこれを前記ＵＳＢストレージ機器へ与え、前記ＵＳＢストレージ機器から当該クライアントコンピュータへのデータが与えられるとこれを当該クライアントコンピュータへ与える、Ｅ）ＵＳＢデバイスサーバにおいて、Ｆ）特定のクライアントコンピュータから、前記伝送されるブロックデータのデータ長を含んだヘッダデータが与えられると、現在、別のクライアントコンピュータによるデータ伝送専有状態であるか否か判断し、Ｇ）前記別のクライアントコンピュータによるデータ伝送専有状態である場合には当該ブロックデータを送信した前記特定のクライアントコンピュータにNAK信号を返信し、Ｈ）前記別のクライアントコンピュータによるデータ伝送専有状態でない場合には、前記特定のクライアントコンピュータによるデータ伝送専有状態とするとともに、前記ＵＳＢストレージ機器にそのヘッダデータを送信し、Ｉ）前記特定クライアントコンピュータについて、データ伝送専有状態となったあと、前記特定クライアントコンピュータと前記ＵＳＢストレージ機器との間で、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ伝送専有状態を解除する。
【００１７】
このように、前記データ伝送専有状態では、前記ヘッダデータを送ったクライアントコンピュータは、前記ＵＳＢデバイスサーバとの間でデータ伝送が可能となる。かかるデータ伝送専有状態は、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されると解除される。また、既に他のクライアントコンピュータによるデータ伝送専有状態である場合には、別のクライアントコンピュータからの前記ヘッダデータに対してはＮＡＫ信号が返される。これを受けたクライアントコンピュータは、前記ヘッダデータを再送する。したがって、各クライアントコンピュータは、前記ヘッダデータで特定されるブロック単位で、前記ストレージ機器へデータ転送が可能となる。
【００１８】
これにより、ネットワークに接続された複数のクライアントコンピュータからの書き込みまたは読み出し処理が集中した場合でも、無駄な空き時間がなく書き込みまたは読み出し処理が可能なネットワークファイル管理システムおよびその方法を提供することができる。
【００２４】
３）本発明にかかるデバイスサーバは、Ａ）ネットワーク伝送プロトコルで定められたカプセル化規則でカプセル化された伝送対象データを入出力する第１接続口と、カプセル化されていない伝送対象データを入出力する第２接続口を有し、前記第１接続口にネットワーク接続されたいずれかのクライアントコンピュータから前記カプセル化された伝送対象データが与えられると、これを非カプセル化して前記第２接続口から出力し、前記第２接続口に送信先が指定されたカプセル化されていない伝送対象データが与えられると、前記カプセル化を行い指定された送信先にネットワーク送信するネットワーク伝送手段、
Ｂ）前記第２接続口に接続され、ストレージ機器伝送手段との間のデータ伝送を制御する制御手段、Ｃ）単一のクライアントコンピュータとの間でデータの書き込みまたは読み出しが可能なストレージ機器とデータ伝送するストレージ機器伝送手段を備え、Ｄ）前記制御手段は、以下の手段を有する。d1)データ転送モードでは、以下の転送を行う転送手段、d1-1)前記ネットワークデータ伝送手段の第２接続口から、データ転送をする対象であるクライアントコンピュータからのデータが与えられると、これを前記ストレージ機器伝送手段に与える、d1-2)前記ストレージ機器伝送手段から返答データが与えられると、前記データ転送をする対象であるクライアントコンピュータに伝送するように前記ネットワークデータ伝送手段の第２接続口に与える、d2)前記ネットワークデータ伝送手段の第２接続口から、特定クライアントコンピュータのブロックデータのデータ長を表すヘッダデータが与えられると、前記転送手段がいずれかのクライアントコンピュータデータによる転送モードであるか否か判断する判断手段、d3)前記判断手段の判断結果に応じて、以下の処理を行う伝送制御手段、d3-1)前記転送手段が、前記ヘッダデータを送信したクライアントコンピュータ以外のクライアントコンピュータによるデータ転送モードである場合には、当該ヘッダデータを送信したクライアントコンピュータに不成立信号を返信させる、d3-2)前記転送手段がいずれのクライアントコンピュータによるデータ転送モードでもない場合には、以下の処理を行う、d3-2-1)前記転送手段を前記ヘッダデータを送信したクライアントコンピュータによるデータ転送モードとするとともに、前記ヘッダデータを、前記伝送手段によって前記ストレージ機器伝送手段へ伝送させる、d3-2-2)前記ヘッダデータを送信したクライアントコンピュータによるデータ転送モードになってから、前記ヘッダデータを送信したクライアントコンピュータと前記ストレージ機器との間でやり取りされる伝送対象データについて、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ転送モードを解除する。
【００２５】
このように、前記伝送制御手段は、前記ヘッダデータを送信したクライアントコンピュータ以外のクライアントコンピュータによるデータ転送モードである場合には、当該ヘッダデータを送信したクライアントコンピュータに不成立信号を返信させる。また、いずれのクライアントコンピュータによるデータ転送モードでもない場合には、以下の処理を行う。前記転送手段を前記ヘッダデータを送信したクライアントコンピュータによるデータ転送モードとするとともに、前記ヘッダデータを、前記伝送手段によって前記ストレージ機器伝送手段へ伝送させる。また前記指定されたクライアントコンピュータによるデータ転送モードになってから、前記特定クライアントコンピュータと前記ストレージ機器との間でやり取りされる伝送対象データについて、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ転送モードを解除する。したがって、各クライアントコンピュータは、前記ヘッダデータで特定されるブロック単位で、前記ストレージ機器へデータ転送が可能となる。各クライアントコンピュータは既に他のクライアントコンピュータによるデータ転送モードになっている場合には、不成立信号が与えられるので、かかる信号を受け取った場合には、ヘッダデータが受けつけられるまで、再送を繰り返せばよい。
【００２６】
これにより、ネットワークに接続された複数のクライアントコンピュータからの書き込みまたは読み出し処理が集中した場合でも、無駄な空き時間がなく書き込みまたは読み出し処理が可能なネットワークファイル管理システムおよびその方法を提供することができる。
【００２７】
４）本発明にかかるファイル伝送方法は、Ａ）データの書き込みまたは読み出しが可能なストレージ機器に、複数のクライアントコンピュータからファイル伝送する方法であって、Ｂ）前記各クライアントコンピュータと前記ストレージ機器との間では、１のファイルを複数のブロックに分割したブロックデータとして伝送処理が行われ、Ｃ)前記各クライアントコンピュータは、以下のc1)〜c3)の処理にて前記ストレージ機器との間で前記ブロックデータの伝送を行うファイル伝送方法において、c1)伝送対象のブロックデータのデータ長を含むヘッダデータを前記ストレージ機器に送信し、c2)その後、前記ストレージ機器から前記ヘッダデータを受け取ったことを示す返答データを受け取ると、前記ブロックデータのデータ伝送を開始し、c3)不成立信号を受け取ると同じデータを再度、前記ストレージ機器へ送る、Ｄ）前記ストレージ機器と前記複数のクライアントコンピュータとの間に設けたデバイスサーバに、以下の処理を実行させる。d1)特定のクライアントコンピュータから、前記伝送されるブロックデータのデータ長を含んだヘッダデータが与えられると、現在、別のクライアントコンピュータによるデータ伝送専有状態であるか否か判断する、d2)前記別のクライアントコンピュータによるデータ伝送専有状態である場合には当該ブロックデータを送信した前記特定のクライアントコンピュータに不成立信号を返信する、d3)前記別のクライアントコンピュータによるデータ伝送専有状態でない場合には、前記特定のクライアントコンピュータによるデータ伝送専有状態とするとともに、前記ストレージ機器にそのヘッダデータを送信する、d4)与えられた転送データが、データ伝送専有状態とした前記特定のクライアントコンピュータと前記ストレージ機器間のデータ伝送であれば、これを転送する、d5)前記特定クライアントコンピュータについて、データ伝送専有状態となったあと、前記特定クライアントコンピュータと前記ストレージ機器との間で、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ伝送専有状態を解除する。
【００２８】
このように、前記データ伝送専有状態では、前記ヘッダデータを送ったクライアントコンピュータは、前記デバイスサーバとの間でデータ伝送が可能となる。かかるデータ伝送専有状態は、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されると解除される。また、既に他のクライアントコンピュータによるデータ伝送専有状態である場合には、別のクライアントコンピュータからの前記ヘッダデータに対しては不成立信号が返される。これを受けたクライアントコンピュータは、前記ヘッダデータを再送する。したがって、各クライアントコンピュータは、前記ヘッダデータで特定されるブロック単位で、前記ストレージ機器へデータ転送が可能となる。
【００２９】
これにより、ネットワークに接続された複数のクライアントコンピュータからの書き込みまたは読み出し処理が集中した場合でも、無駄な空き時間がなく書き込みまたは読み出し処理が可能なファイル伝送方法を提供することができる。
【００３３】
なお、本明細書において「伝送」とは、送信および受信の双方を含む概念である。「カプセル化された伝送対象データ」とは、実施形態ではパケットヘッダが付与されて伝送されるデータであり、読み出しまたは書き込み対象のブロックデータはもちろん、かかるデータが存在しない読み出しコマンドなども該当する。また「ストレージ機器」とは実施形態ではＵＳＢハードディスクが該当するが、読み出しだけできる記録媒体でも、読み出しも書き込みもできる記録媒体でもよく、さらに、記録媒体は取り外せるものであってもよい。例えば、各種のメモリカード、ＤＶＤ、フレキシブルディスクなどは当然含まれる。
【発明を実施するための最良の形態】
【００３４】
１．機能ブロック図の説明  
本発明の一実施形態を図面に基づいて説明する。本件ネットワークファイル管理システムの全体構成は、従来と同様であるが、図１におけるデバイスサーバ５の構成が異なる。図２に、本発明にかかるネットワークファイル管理システムにおけるデバイスサーバ５の機能ブロック図を示す。
【００３５】
デバイスサーバ５は、ネットワーク伝送手段５１、制御手段５５、およびストレージ機器伝送手段５７を備えている。
【００３６】
ネットワーク伝送手段５１は、ネットワーク伝送プロトコルで定められたカプセル化規則でカプセル化された伝送対象データを入出力する第１接続口と、カプセル化されていない伝送対象データを入出力する第２接続口を有し、前記第１接続口にネットワーク接続されたいずれかのクライアントコンピュータから前記カプセル化された伝送対象データが与えられると、これを非カプセル化して前記第２接続口から出力し、前記第２接続口に送信先が指定されたカプセル化されていない伝送対象データが与えられると、前記カプセル化を行い指定された送信先にネットワーク送信する。
【００３７】
制御手段５５は、前記第２接続口に接続され、ストレージ機器伝送手段との間のデータ伝送を制御する。ストレージ機器伝送手段５７は、単一のクライアントコンピュータとの間でデータの書き込みまたは読み出しが可能なストレージ機器とデータ伝送する。
【００３８】
制御手段５５は、判断手段６１、伝送制御手段６３および転送手段６５を備えている。
【００３９】
転送手段６５は、従来と同様の処理を行う。具体的には、データ転送モードでは、以下の転送を行う。ネットワーク伝送手段の第２接続口から、データ転送をする対象であるクライアントコンピュータからのデータが与えられると、これを前記ストレージ機器伝送手段に与える。また、ストレージ機器伝送手段５７から返答データが与えられると、この返答データを、前記データ転送をする対象であるクライアントコンピュータに伝送するようにネットワーク伝送手段５１の第２接続口に与える。
【００４０】
判断手段６１は、ネットワーク伝送手段５１の第２接続口から、特定クライアントコンピュータのブロックデータのデータ長を表すヘッダデータが与えられると、転送手段６５がいずれかのクライアントコンピュータデータによる転送モードであるか否か判断する。
【００４１】
伝送制御手段６３は、判断手段６１の判断結果に応じて、以下の処理を行う。転送手段６５が、前記ヘッダデータを送信したクライアントコンピュータ以外のクライアントコンピュータによるデータ転送モードである場合には、当該ヘッダデータを送信したクライアントコンピュータに不成立信号を返信させる。転送手段６５がいずれのクライアントコンピュータによるデータ転送モードでもない場合には、以下の処理を行う。転送手段６５を前記ヘッダデータを送信したクライアントコンピュータによるデータ転送モードとするとともに、前記ヘッダデータを、転送手段６５によってストレージ機器伝送手段５７へ伝送させる。さらに、前記ヘッダデータを送信したクライアントコンピュータによるデータ転送モードになってから、前記ヘッダデータを送信したクライアントコンピュータと前記ストレージ機器との間でやり取りされる伝送対象データについて、前記ヘッダデータで特定されるデータ長のブロックデータが伝送されたか否か判断し、伝送された場合には、前記データ転送モードを解除する。
【００４２】
このように、既に転送モードである場合には、ヘッダデータを送信したクライアントコンピュータに不成立信号が返される。また、転送モードは、前記ヘッダデータで特定されるデータ長で解除される。したがって、各クライアントコンピュータは、前記ヘッダデータで特定されるブロック単位で、前記ストレージ機器へデータ転送が可能となる。各クライアントコンピュータは既に他のクライアントコンピュータによるデータ転送モードになっている場合には、不成立信号が与えられるので、かかる信号を受け取った場合には、ヘッダデータが受けつけられるまで、再送を繰り返せばよい。
【００４３】
これにより、ネットワークに接続された複数のクライアントコンピュータからの書き込みまたは読み出し処理が集中した場合でも、無駄な空き時間がなく書き込みまたは読み出し処理が可能なネットワークファイル管理システムおよびその方法を提供することができる。
【００４４】
２．クライアントコンピュータの構成  
本発明にかかるネットワークファイル管理システムにおけるクライアントコンピュータのハードウェア構成について、図３を用いて説明する。クライアントコンピュータ２は、一般的なパーソナルコンピュータであり、ＣＰＵ１２３、メモリ１２７、ハードディスク１２６、表示装置であるモニタ１３０、CD/DVDドライブなどの光学式ドライブ１２５、ＬＡＮカード１２４、キーボード、マウスなどの入力デバイス１３２およびバスライン１２９を備えている。ＣＰＵ１２３は、ハードディスク１２６に記憶された各プログラムにしたがいバスライン１２９を介して、各部を制御する。LANカード１２４は、ネットワーク接続されたデバイスサーバ５との間でデータ通信を行う。
【００４５】
ハードディスク１２６は、オペレーティングシステム（ＯＳ）１３９、ネットワークドライバ１４８、ＬＡＮカードドライバ１４９、仮想ＵＳＢポートドライバ１４５、アプリケーションプログラム１４１、およびＵＳＢストレージ用ドライバ１４２を有する。
【００４６】
本実施形態においては、ＯＳ１３９にマイクロソフト社のWindows（登録商標または商標）ＸＰを採用したが、これに限定されるものではない。
【００４７】
アプリケーションプログラム１４１は、一般的なアプリケーションソフト（たとえばワープロソフト）である。
【００４８】
接続管理プログラム１４７は、デバイスサーバ５より情報を取得し、接続可否を管理するプログラムである。仮想ＵＳＢポートドライバ１４５、ネットワークドライバ１４８は、デバイスサーバ５（図２参照）との間で通信処理を行う。詳細については後述する。ＬＡＮカードドライバ１４９はＬＡＮカード１２４用のドライバである。ＵＳＢストレージ用ドライバ１４２はＵＳＢストレージクラスドライバで、ＵＳＢ通信規格による通信を行う。
【００４９】
なお、本実施形態においては、上記各プログラムは光学式ドライブ１２５を介してハードディスクにインストールされたものであり、必要に応じてOSがメモリ１２７に展開して動作する。なお、光学式ドライブ以外に、フレキシブルディスク（FD）、ICカードなどのコンピュータ可読の記録媒体からプログラムをハードディスクにインストールさせてもよい。また、一切ハードディスクを使わず光学式ドライブから直接、メモリに展開しても良いし、フラッシュメモリなどにインストールしてもよいし、通信回線を用いてダウンロードするようにしてもよい。また、実行する際はメモリに展開するようになっているが、直接フラッシュメモリなどの不揮発性メモリ上で実行してもよいし、リモートプロシジャーコールのように通信回線を通じて他のコンピュータで実行させるようにしてもよい。コンピュータによって実行可能なプログラムとしては、これに限定されることなく、そのままインストールして直接実行可能なものはもちろん、一旦他の形態等に変換が必要なもの（例えば、データ圧縮されているものを、解凍する等）、さらには、他のモジュール部分と組合して実行可能なものも含む。
【００５０】
３．デバイスサーバの構成  
図２に示すデバイスサーバ５のハードウェア構成について、図４を用いて説明する。図４は、ＣＰＵを用いて構成したデバイスサーバ５の構成の一例である。
【００５１】
デバイスサーバ５は、ＣＰＵ２３、揮発性メモリ２７、不揮発性メモリ２６、インタフェース（Ｉ／Ｆ）２８、ＬＡＮカード２４、表示・音声等出力部２５，およびバスライン２９を備えている。ＣＰＵ２３は、不揮発性メモリ２６に記憶された各プログラムにしたがいバスライン２９を介して、各部を制御する。
【００５２】
インタフェース２８には、ＵＳＢストレージ１４が接続されている。
【００５３】
不揮発性メモリ２６には、オペレーティングシステム（ＯＳ）３９、ＵＳＢポートドライバ４３、ネットワークドライバ４８、ＬＡＮカードドライバ４９、通信ドライバ４５、サーバ側接続管理プログラム４０、ストレージ制御プログラム４４および接続機器情報テーブル４２が記憶されている。
【００５４】
接続機器情報テーブル４２には、接続される周辺機器についての情報が記憶されている。具体的にはベンダＩＤ、プロダクトＩＤ、インタフェースクラスＩＤ、デバイス名称などである。
【００５５】
ＵＳＢポートドライバ４３は、インタフェース２８を介してＵＳＢストレージ１４との間でデータ伝送を行う。通信ドライバ４５、ネットワークドライバ４８は、ＬＡＮカード２４を介してクライアントコンピュータとの間でデータ伝送をおこなう。ＬＡＮカードドライバ４９はＬＡＮカード２４用のドライバである。
【００５６】
サーバ側接続管理プログラム４０、ストレージ制御プログラム４４、通信ドライバ４５，ネットワークドライバ４８による処理については後述する。
【００５７】
なお、本実施形態においては、ＯＳ３９として、Linux（登録商標または商標）の組み込み用のリアルタイムＯＳを使用したが、このＯＳに限らず、他のＯＳを用いることもできる。
【００５８】
４．ＵＳＢストレージのデータ構造  
デバイスサーバ５に接続されたＵＳＢストレージ１４のデータ構造について図５を用いて簡単に説明する。ＵＳＢストレージ１４は、ＦＡＴ１６型のディスクフォーマットのデータ構造でデータが記録されている。ＵＳＢストレージ１４では、ディスク上の領域は、システム領域とデータ領域とに区別されて管理されている。システム領域は、ＦＤＣ記述子およびシステム用領域、ファイル割当表（File Allocation Table（ＦＡＴ））、ルートディレクトリの３つの部分で構成されている。
【００５９】
ＦＤＣ記述子およびシステム用領域は、固定長の領域管理情報である。この領域を参照することにより、ストレージのフォーマット情報、１クラスタのサイズがわかる。また、ファイル割当表およびルートディレクトリの開始アドレスおよびそのサイズがわかる。
【００６０】
ファイル割当表 （ＦＡＴ）は、ストレージの使用領域（クラスタの状態）を記憶しており、データ長は、可変長である。ＦＡＴの各項目はクラスタ（データ本体）と１対１で対応しており、各クラスタの状態（空き・割り当て済み・欠陥クラスタ）が示される。また、次に続くクラスタの番号も記憶している。なおクラスタがそのファイルの最終クラスタについては、最終クラスタであることを示すフラグが記述されている。
【００６１】
ルートディレクトリには各フォルダ、各ファイルの先頭クラスタ番号が記録されている。この先頭クラスタ番号を起点にして、ＦＡＴをたどっていくことにより目的のファイルやディレクトリの内容を正しい順番で読み出すことができる。
【００６２】
５．データ書き込み、読み出し処理について
本実施形態においては、デバイスサーバとＵＳＢストレージ１４間は、ＵＳＢ通信規格にてデータ通信が行われ、クライアントコンピュータとデバイスサーバ間は、ＴＣＰ／ＩＰにてデータ通信が行われる。
【００６３】
５．１  ＵＳＢ通信規格について
前提となるＵＳＢ通信規格による通信処理について説明する。デバイスサーバが介在せず、クライアントコンピュータとＵＳＢストレージが直接接続されている場合、以下のようにしてデータの書き込み・読み出し処理が行われる。
【００６４】
まず、読み出しの場合の概要について説明する。クライアントコンピュータは、1)領域管理情報を指定してＵＳＢストレージに読み出しコマンドを送信する、2)ＦＡＴおよびルートディレクトリ情報を指定してＵＳＢストレージに読み出しコマンドを送信する、3)読み出し対象ファイルを指定して、ＵＳＢストレージに読み出しコマンドを送信する、という３段階のステップによって実行される。なお、1)2)については、既に取得済みで、変更されていない場合には省略することもできる。
【００６５】
上記領域管理情報の指定、ＦＡＴおよびルートディレクトリ情報の指定、読み出し対象ファイルの指定は、ブロックヘッダとして、ＵＳＢストレージに与えられる。かかるブロックヘッダには、その後の読み出し処理にて読み出されるデータの読み出し開始位置、ブロック長および、読み出し処理であることを示すフラグが含まれている。ＵＳＢストレージは、かかるブロックヘッダを受け取ると、読み出しのための準備を行うとともに、クライアントコンピュータにＡＣＫ信号を返す。クライアントコンピュータはかかるＡＣＫ信号を受け取ると、読み出しコマンドを送信する。これにより、指定されたデータの読み出しが実行される。
【００６６】
すなわち、クライアントコンピュータは、これから読み出すデータの特定情報を記述したブロックヘッダを送信し、ＡＣＫ信号を受け取ると、読み出しコマンドを送信する。
【００６７】
なお、クライアントコンピュータは、読み出すデータのデータ長を把握していなければ読み出しができない。読み出し対象ファイルのデータ長は、ルートディレクトリおよびＦＡＴ情報から抽出でき、ルートディレクトリおよびＦＡＴ情報は、領域管理情報から抽出できる。領域管理情報において、データ長は固定長であり、記載されている位置も固定である。このように最初に読み出す情報は開始アドレスおよびデータ長を固定とすることにより、上記読み出しに必要な情報を把握できる。
【００６８】
なお、上記読み出されるデータのデータ長は、1)領域管理情報については、固定長であり、かつ、データ長としては短いので、１回で読み出しできるが、2)ＦＡＴ情報および3)読み出し対象ファイルについては、可変長であり、また、１回で読み出しできないほど、大きい場合もある。ここで、１回の読み出し処理の単位は、クラスタサイズなどにより所定のデータ長に決定される（以下、ブロックデータという）。したがって、１回の読み出し処理の単位を越える場合には、複数のブロックに分割されて読み出し処理がなされる。例えば、図６に示すようなデータがある場合、決定したブロック長で分割して読み出される。この場合、４つのブロックに分割され、上記3)読み出しファイルの読み出し処理が、４回繰り返される。このように、読み出されるデータはブロック単位で読み出される。
【００６９】
つぎに、書き込み処理について説明する。書き込み処理の場合は、上記1)領域管理情報を指定し、読み出しコマンドを送信する、2)ＦＡＴ情報を指定し、読み出しコマンドを送信する、までは同じであり、その後、3)書き込み位置およびブロックサイズを指定したブロックヘッダを送信した後、ＡＣＫ信号を受けると、書き込み対象のブロックとともに書き込みコマンドを送信するという点が異なる。
【００７０】
上記５．１で説明したＵＳＢ通信規格でデータ伝送するためのデータ変換処理は、クライアントコンピュータのＯＳ１３９およびＵＳＢストレージ用ドライバ１４２にて行われる。
【００７１】
５．２  データ書き込み、読み出し処理について
上記５．１では、ＵＳＢ通信規格でデータ伝送するためのデータ変換処理に注目して説明したが、実際には、クライアントコンピュータとＵＳＢストレージ１４の間には、デバイスサーバが介在しており、クライアントコンピュータとデバイスサーバ間では、ＴＣＰ／ＩＰによるネットワーク通信が行われる。かかるＴＣＰ／ＩＰによる通信については、所定長のパケットに分割され、各パケットにはネットワークヘッダが付加されて、送受信される。ＴＣＰ／ＩＰによるネットワーク通信処理については、一般的な通信処理であるので、説明は省略する。かかるＴＣＰ／ＩＰによるデータ処理は、ネットワークドライバ１４８が行う。
【００７２】
なお、仮想ＵＳＢポートドライバ１４５および通信ドライバ４５は、トンネリングヘッダの管理を行う。本実施形態においては、読み出しコマンド又は書き込みコマンドはトンネリングヘッダという領域に記載される。かかるコマンドは、最終的にはＵＳＢストレージ１４に転送されるが、デバイスサーバ５から繰り返し「DATAIN」コマンド（読み出しコマンド）を出す必要があるからである。また、かかるトンネリングヘッダに記述することにより、両者間でやり取りされるブロックデータと区別することもできる。
【００７３】
以下では、
クライアントコンピュータ２から読み出し指令が与えられる場合の読み出し処理について説明する。
【００７４】
クライアントコンピュータ２の操作者は、接続管理プログラム１４７(図３参照)を起動する。接続管理プログラム１４７は、ネットワーク上のデバイスサーバを検索する。この場合、デバイスサーバ５が接続されているので、かかる検索要求があると、デバイスサーバ５のサーバ側接続管理プログラム４０は、接続機器情報テーブル４２を参照して、接続されているＵＳＢ機器のリストを接続管理プログラム１４７に送信する。クライアントコンピュータ２の接続管理プログラム１４７は、これを画面上にリスト表示する。この場合、ＵＳＢストレージ１４だけが接続されているので、リストにはＵＳＢストレージ１４が表示される。
【００７５】
クライアントコンピュータ２の操作者は、接続管理プログラム１４７のＧＵＩ（図示せず）上からＵＳＢストレージ１４への接続要求を行う。かかる要求は、接続管理プログラム１４７からサーバ側接続管理プログラム４０へ送られる。サーバ側接続管理プログラム４０は、接続すべきデバイスがＵＳＢストレージ１４であると特定されたので、ＵＳＢストレージ１４のコンフィギュレーション情報をクライアントコンピュータ２の仮想ＵＳＢポートドライバ１４５へ送信する。コンフィグレーション情報とは、例えばデバイスディスクリプタ情報などのＵＳＢデバイスの機能性を定義する情報であり、ＵＳＢプラグアンドプレイのために用いられる情報である。
【００７６】
仮想ＵＳＢポートドライバ１４５は、ＴＣＰ／ＩＰプロトコルを用いて、通信ドライバ４５との間で論理接続を確立するとともに、クライアントコンピュータ２のＵＳＢプラグアンドプレイ機構（図示せず）にコンフィギュレーション情報を与え、ＵＳＢプラグアンドプレイ処理を行わせる。
【００７７】
図７〜図１１を用いて、クライアントコンピュータ２のＯＳ１３９、ＵＳＢストレージ用ドライバ１４２、仮想ＵＳＢポートドライバ１４５（図３参照）による処理、およびデバイスサーバ５のストレージ制御プログラム４４、通信ドライバ４５、ＵＳＢポートドライバ４３（図４参照）による処理について説明する。
【００７８】
ＵＳＢプラグアンドプレイ処理が完了すると、ファイルシステムネゴシエーション処理が開始される。クライアントコンピュータ２のＵＳＢストレージ用ドライバ１４２は、仮想ＵＳＢポートドライバ１４５（図３参照）を介してデバイスサーバの通信ドライバ４５に対して、領域管理情報の取得要求のブロックヘッダを送る(図９ステップＳ１０１）。具体的には、領域管理情報は、開始アドレスおよびサイズは固定であるので、ＵＳＢストレージ用ドライバ１４２は、かかる取得要求をブロックヘッダ情報にセットし、仮想ＵＳＢポートドライバ１４５がトンネリングヘッダを付与して、ネットワークドライバ１４８に送る。ネットワークドライバ１４８は、図１１Ａに示すように、これにネットワークヘッダを付けてパケット送信する。
【００７９】
デバイスサーバ５のネットワークドライバ４８（図４参照）は、パケットを受信するか否か判断しており（図７ステップＳ１）、かかるパケットを受信すると、トンネリングヘッダ、およびブロックヘッダ情報を、通信ドライバ４５（図４参照）に渡す。通信ドライバ４５は、トンネリングヘッダを読み取るとともに、ブロックヘッダをストレージ制御プログラム４４に渡す。
【００８０】
ストレージ制御プログラム４４は、与えられたデータがブロックヘッダであるか否か判断する(図７ステップＳ３）。この場合、ブロックヘッダであるので、ストレージ制御プログラム４４は、他のクライアントコンピュータによる排他制御中か否か判断する(ステップＳ５）。この場合、他のクライアントコンピュータによる排他制御中ではないので、ストレージ制御プログラム４４は、排他制御フラグをセットし、排他制御を開始する。（ステップＳ９)。
【００８１】
ストレージ制御プログラム４４は、ブロックヘッダに記述されているデータ長を抽出し、これから伝送されるブロックのデータ長を記憶する(ステップＳ１１）。ここでは領域管理情報のサイズが抽出される。ストレージ制御プログラム４４は、ＵＳＢポートドライバ４３によって、ブロックヘッダをＵＳＢストレージ１４へ送信する（ステップＳ１３）。  これを受けて、ＵＳＢストレージ１４からヘッダ情報を受信した旨の信号（ＡＣＫ信号）が返信されると、ストレージ制御プログラム４４は、この信号を、通信ドライバ４５およびネットワークドライバ４８を用いてクライアントコンピュータ２へ返信する(ステップＳ１５）。
【００８２】
これにより、デバイスサーバは、再びパケット受信待ち状態となる(ステップＳ１）。
【００８３】
一方、クライアントコンピュータ２の仮想ＵＳＢポートドライバ１４５（図３参照）は、ＮＡＫ信号またはＡＣＫ信号を受信するか否か判断している(図９ステップＳ１０３）。この場合、ＡＣＫ信号が返信されるので、ＵＳＢストレージ用ドライバ１４２へＡＣＫ信号であることを伝え、ＵＳＢストレージ用ドライバ１４２は、読み出しコマンドを送信する(ステップＳ１０５）。具体的には、以下の処理が行われる。
【００８４】
ＵＳＢストレージ用ドライバ１４２は、「DATAIN」コマンドを仮想ＵＳＢポートドライバ１４５へ渡す。仮想ＵＳＢポートドライバ１４５はパケットのトンネリングヘッダに「DATAIN」コマンドの設定を行う。そして読み出しするデータのデータサイズを決定し、これをトンネリングヘッダに追記する。かかるデータは、ネットワークドライバ１４８により、ネットワークヘッダが付加されて、デバイスサーバ５へ送信される。この場合のデータの構造を図１１Ｂに示す。トンネリングヘッダにデータサイズを追記しているのは、後述するように、読み出しコマンドを繰り返す必要があるからである。
【００８５】
デバイスサーバ５のネットワークドライバ４８（図４参照）は、パケットを受信するか否か判断しており（図７ステップＳ１）、かかるパケットを受信すると、データを、通信ドライバ４５に渡す。ストレージ制御プログラム４４は、通信ドライバ４５から受け取ったパケットの中味が、ブロックヘッダであるかどうかを判断する(図７ステップＳ３)。この場合、与えられたデータは、読み出しコマンドおよびそのデータ長が記述されたトンネリングヘッダである。よって、ブロックヘッダではないので、ストレージ制御プログラム４４は、かかるデータが、既に受信しているブロックヘッダを送信してきたクライアントコンピュータからのデータであるか否かを判断する(図８ステップＳ２１）。ステップＳ２１における判断は、たとえばネットワークヘッダに記述されたクライアントコンピュータのIPアドレス等を参照すればよい。
【００８６】
ここでは、受け取ったデータは、ブロックヘッダを送信したクライアントコンピュータからのものであるので、ストレージ制御プログラム４４は、トンネリングヘッダの設定が「DATAIN」か「DATAOUT」かを判断する(ステップＳ２３）。この場合、「DATAIN」であるので、ストレージ制御プログラム４４は、ＵＳＢストレージ１４宛に「DATAIN」コマンドを送信する命令を、ＵＳＢポートドライバ４３に行う(ステップＳ２５）。
【００８７】
ＵＳＢストレージ１４は、「DATAIN」コマンドを受信すると、既にブロックヘッダによって指定された先頭アドレスとサイズのデータをデバイスサーバ５送信する。
【００８８】
デバイスサーバ５のストレージ制御プログラム４４は、かかるデータを受信すると、指定されたデータ量を全て受信したか否か判断する(ステップＳ２６）。これは、ＵＳＢ通信規格によると、１回の「DATAIN」コマンドで取得できるサイズが定められているからである。ここでは、１回の「DATAIN」コマンドで取得できたものとする。
【００８９】
なお、ストレージ制御プログラム４４は、トンネリングヘッダに指定されたデータサイズ分のデータを受信していない場合には、ＵＳＢポートドライバ４３を介して「DATAIN」コマンドをＵＳＢストレージ１４に与える。(ステップＳ２５）。
【００９０】
ストレージ制御プログラム４４は、受信した領域管理情報を通信ドライバ４５へ渡す。通信ドライバ４５は、これにトンネリングヘッダを付加し、ネットワークドライバ４８に渡す。ネットワークドライバ４８は、これにネットワークヘッダを付加し、クライアントコンピュータ２に送信する(ステップＳ２７）。この場合のデータ構造を図１１Ｃに示す。
【００９１】
ストレージ制御プログラム４４は、ブロックヘッダに記載されたデータ長のサイズを処理したかどうかを判断する(図８ステップＳ２９）。ブロックヘッダに記載されたデータ長と一致すると判断した場合には、ストレージ制御プログラム４４は、排他制御フラグをリセットして、排他制御を終了する（ステップＳ３１）。この場合、領域管理情報は一回のやりとりで完了できるサイズであるので、ブロックヘッダに記載されたデータ長の処理が完了したと判断されて、排他制御は終了する。
【００９２】
なお、当然のことながら、トンネリングヘッダ中に記述されていたデータ（「ＤＡＴＡＩＮ」や読み出しデータのデータ量など）については、かかるブロックヘッダに記載されたデータ長には含まれない。
【００９３】
このようにして、領域管理情報が読み出される。
【００９４】
つぎに、クライアントコンピュータ２のＯＳ１３９は、ファイル管理テーブルおよびルートディレクトリを、読み出し対象データとして決定する(図９ステップＳ１１１）。そして、読み出し処理を行う（ステップＳ１１３）。ステップＳ１１３の処理について、図１０を用いて説明する。
【００９５】
まず、ＵＳＢストレージ用ドライバ１４２は、図９ステップＳ１０９にて記憶した領域管理情報に基づいて、1ブロックの大きさを決定する（図１０ステップＳ１２１）。以下では、ファイル管理テーブルおよびルートディレクトリは1のブロックで伝送可能で、かつ３つのパケットで伝送される場合を例に説明する。
【００９６】
ＵＳＢストレージ用ドライバ１４２は、処理対象ブロック番号iを初期化し（ステップＳ１２３）、仮想ＵＳＢポートドライバ１４５に読み出し対象データの取得要求のブロックヘッダを送信するよう命令する。仮想ＵＳＢポートドライバ１４５は、読み出し対象データのブロックヘッダを送信する（ステップＳ１２５）。
【００９７】
デバイスサーバ５の通信ドライバ４５は、パケットを受信するか否か判断しており（図７ステップＳ１）、かかるパケットを受信すると、トンネリングヘッダ、およびブロックヘッダ情報を、通信ドライバ４５に渡す。通信ドライバ４５は、トンネリングヘッダを読み取るとともに、ブロックヘッダをストレージ制御プログラム４４に渡す。
【００９８】
ストレージ制御プログラム４４は、与えられたデータがブロックヘッダであるか否か判断する(ステップＳ３）。この場合、ブロックヘッダであるので、ストレージ制御プログラム４４は、他のクライアントコンピュータによる排他制御中か否か判断する(ステップＳ５）。この場合、他のクライアントコンピュータによる排他制御中ではないので、ストレージ制御プログラム４４は、排他制御フラグをセットし、排他制御を開始する。（ステップＳ９)。
【００９９】
なお、ステップＳ９〜ステップＳ１５の処理は、領域管理情報の場合と同様である。
【０１００】
一方、クライアントコンピュータ２の仮想ＵＳＢポートドライバ１４５は、ＮＡＫ信号またはＡＣＫ信号を受信するか否か判断している(図１０ステップＳ１２７）。この場合、ＡＣＫ信号が返信されるので、ＵＳＢストレージ用ドライバ１４２へＡＣＫ信号であることを伝え、ＵＳＢストレージ用ドライバ１４２は、読み出しコマンドを送信する。仮想ＵＳＢポートドライバ１４５は、処理対象パケット番号jを初期化し（ステップＳ１２９）、j番目のパケットについて、読み出し命令である「DATAIN」を送信する（ステップＳ１３１）。具体的には、仮想ＵＳＢポートドライバ１４５に、j番目のパケットについて「DATAIN」を渡す。仮想ＵＳＢポートドライバ１４５、ネットワークドライバ１４８はかかる命令を受けて、領域管理情報の場合と同様にして読み出しコマンドを送信する。
【０１０１】
一方、デバイスサーバ５のネットワークドライバ４８は、パケットを受信するか否か判断しており（図７ステップＳ１）、かかるパケットを受信すると、データを、通信ドライバ４５に渡す。ストレージ制御プログラム４４は、パケットがヘッダ情報であるかどうかを判断する(図７ステップＳ３)。この場合、与えられたデータは、読み出しコマンドおよびそのデータ長が記述されたトンネリングヘッダでありブロックヘッダではないので、ストレージ制御プログラム４４は、既に受信しているブロックヘッダを送信してきたクライアントコンピュータからのデータであるか否かを判断する(図８ステップＳ２１）。
【０１０２】
ここでは、ブロックヘッダを送信したクライアントコンピュータからのデータであるので、ストレージ制御プログラム４４は、トンネリングヘッダの設定が「DATAIN」か「DATAOUT」かを判断する(ステップＳ２３）。この場合、「DATAIN」であるので、領域管理情報の場合と同様にして、ＵＳＢストレージ１４宛にかかる「DATAIN」コマンドが転送され、指定されたデータ量となるまで、かかる処理が繰り返される(ステップＳ２５、ステップＳ２６）。
【０１０３】
ＵＳＢストレージ１４は、領域管理情報の場合と同様にして、既にブロックヘッダによって指定された先頭アドレスとサイズのデータをデバイスサーバ５送信する。
【０１０４】
ストレージ制御プログラム４４（図４参照）は、受信したファイル管理テーブルおよびルートディレクトリ情報を、領域管理情報の場合と同様にして、クライアントコンピュータ２に送信する(図８ステップＳ２７）。
【０１０５】
ストレージ制御プログラム４４は、ブロックヘッダに記載されたデータ長のサイズを処理したかどうかを判断する(ステップＳ２９）。この場合、ブロックヘッダに記載されたデータ長と一致しないので、ストレージ制御プログラム４４は、図７のステップＳ１の処理に戻る。
【０１０６】
一方、クライアントコンピュータ２の仮想ＵＳＢポートドライバ１４５（図３参照）は、読み出しデータを受信するか否か判断している(図１０ステップＳ１３３）。この場合、１番目のパケットについての読み出しデータが返信されるので、仮想ＵＳＢポートドライバ１４５は、1番目のブロックについて全パケット受信完了したか否か判断する（ステップＳ１３５）。全パケットを受信したか否かは、従来と同様に、読み出し対象データのデータ量に応じていくつのパケットで受信できるかを把握しているので、これと比較すればよい。
【０１０７】
この場合、全パケットを受信していないので、仮想ＵＳＢポートドライバ１４５は、処理パケット番号をインクリメントする（ステップＳ１３７）。そして、２番目のパケットについて、ステップＳ１３１の処理を行う。
【０１０８】
以下、仮想ＵＳＢポートドライバ１４５は、1番目のパケットと同様にして、２番目、３番目のパケットを受信する。
【０１０９】
クライアントコンピュータ２の仮想ＵＳＢポートドライバ１４５は、３番目のパケットを受信すると、全パケットを受信したと判断して、ＵＳＢストレージ用ドライバ１４２へ伝え、ステップＳ１３５からステップＳ１３９に進む。この場合、1ブロックで送れる場合であるので、ＵＳＢストレージ用ドライバ１４２は、全ブロックについて完了したと判断して、読み込み処理は完了する。
【０１１０】
なお、複数のブロックで送る場合には、ステップＳ１４１に進み、処理ブロック番号をインクリメントし、ステップＳ１２５以下の処理を繰り返せばよい。
【０１１１】
一方、デバイスサーバ５のストレージ制御プログラム４４（図４参照）は、3番目のパケットを送ったあと、ステップＳ２９にて、受信量が記憶したデータ量一致すると判断し、排他制御を解除する（図８ステップＳ３１）。
【０１１２】
このようにして、ファイル管理テーブルおよびルートディレクトリ情報が読み出される。
【０１１３】
同様にして、ファイル管理テーブルおよびルートディレクトリ情報を参照して、対応するファイルが読み出される。
【０１１４】
書き込みの場合のフローチャートを図１２、１３に示す。図１２に示すステップＳ２０１〜ステップＳ２１３までは、データ読み出し時の図９ステップＳ１０１〜ステップＳ１１３と同様である。ステップＳ２１５にて、指定されたファイルを書き込み対象として決定し、ステップＳ２１７にてＦＡＴ情報およびルートディレクトリ情報を更新し、ステップＳ２１９にて書き込み処理をする点が異なる。
【０１１５】
ステップＳ２１７の更新処理は、図９における読み出し処理とほぼ同じである。まず、図１３のステップＳ２２１〜ステップＳ２２９については、図９ステップＳ１２１〜ステップＳ１２９と同様である。ただし、ステップＳ２２５では、書き込み対象データの取得要求のブロックヘッダが送信される点が異なる。
【０１１６】
また、ステップＳ２３１にて、書き込みコマンドだけでなく、書き込み対象のデータが送信される点が異なる。書き込み対象のデータが送信される場合のデータ構造を図１１Ｄに示す。このようにトンネリングヘッダに「DATAOUT」コマンド（書き込みコマンド）が書き込まれ、書き込み対象データがその後に付与されている。
【０１１７】
かかるデータを受け取ると、デバイスサーバ５のストレージ制御プログラム４４（図４参照）は、図７ステップＳ１、ステップＳ３から、図８ステップＳ２１を経て、トンネリングヘッダの設定が「DATAOUT」であるか否か判断する（図８ステップＳ２３）。この場合、トンネリングヘッダの設定は「DATAOUT」であるので、ＵＳＢストレージ１４宛に「DATAOUT」コマンドとともに、書き込み対象データを送る(ステップＳ３５）。ストレージ制御プログラム４４は、ＵＳＢストレージ１４にすべてのデータを送信したか否か判断している(ステップＳ３６）。全てのデータを送信すると、ストレージ制御プログラム４４は、クライアントコンピュータ３へＡＣＫ信号を送信する（ステップＳ３７）。
【０１１８】
クライアントコンピュータ３の仮想ＵＳＢポートドライバ１４５は、ＡＣＫ信号を受信するか否か判断している(図１３ステップＳ２３３）。ＡＣＫ信号を受け取った後の、ステップＳ２３５〜ステップＳ２４１の処理は読み出しの場合と同様であるので説明は省略する。
【０１１９】
このようにして、ＦＡＴ情報およびルートディレクトリ情報が更新される。その後、クライアントコンピュータ３のＯＳ１３９（図３参照）は、書き込み処理を行う（図１２ステップＳ２１９）ステップＳ２１９の書き込み処理は、ステップＳ２１７と同様であるので説明は省略する。このようにして、書き込み処理が実行される。
【０１２０】
５．３  競合した場合の処理
なお、上記処理にて、デバイスサーバ５は、あるクライアントコンピュータからブロックヘッダのパケットを受信した時、現在、他のクライアントコンピュータによって、排他制御中か否か判断し、該当する場合には、ＮＡＫ信号をブロックヘッダのパケットを送信したクライアントコンピュータに返信する。かかる排他制御は、ブロックヘッダで指定されたデータ長のデータを伝送する間繰り返される。前記ＮＡＫ信号を受け取ったクライアントコンピュータは、前記ブロックヘッダのパケットを再送する。
【０１２１】
すなわち、各クライアントコンピュータは、他のクライアントコンピュータによる排他制御中でない時に、ブロックヘッダパケットを受信させることができれば、当該ブロックヘッダで指定されたデータ長のデータを送る間はデバイスサーバ５を専有することができる。これにより、ブロック単位の排他制御が可能となる。
【０１２２】
このような２台のクライアントコンピュータ間におけるブロック単位の排他制御について図１４を用いて説明する。図１４は、排他制御していない状況で、２台のクライアントコンピュータから読み出し要求がなされた場合の処理を示すシーケンスチャートである。
【０１２３】
具体的には、クライアントコンピュータ２による排他制御が開始され、その後、クライアントコンピュータ３からブロックヘッダが送信された場合の処理を示す図である。
【０１２４】
クライアントコンピュータ２は、ブロックヘッダ情報をデバイスサーバ５に送信する（図１４ステップＣ１）。デバイスサーバ５はこれを受けて、排他制御を開始するとともに（ステップＣ２）、ブロックヘッダ情報から、引き続き送られてくるデータブロックのデータ長を抽出する（ステップＣ３）。デバイスサーバ５はＵＳＢストレージ１４にブロックヘッダ情報を送信する（ステップＣ４）。デバイスサーバ５は、ＵＳＢストレージ１４から受け取った結果をクライアントコンピュータ２に返信する。
【０１２５】
そのあと、クライアントコンピュータ３がブロックヘッダ情報をデバイスサーバ５に送信すると（ステップＣ６）、デバイスサーバ５は排他制御中であるか否か判断し、この場合、クライアントコンピュータ２による排他制御中であるので、ＮＡＫ信号を返す（ステップＣ７）。クライアントコンピュータ３は、ＮＡＫ信号を受け取ったので、ブロックヘッダ情報をデバイスサーバ５に再送する（ステップＣ８）。かかるブロックヘッダ情報を受け取ると、デバイスサーバ５は排他制御中であるか否か判断し、クライアントコンピュータ２による排他制御中であるので、ＮＡＫ信号を返す（ステップＣ９）。
【０１２６】
一方、クライアントコンピュータ２は、読み出し命令をデバイスサーバ５に送信する。デバイスサーバ５は、これをＵＳＢストレージ１４に送る。ＵＳＢストレージ１４からデバイスサーバ５を介して、クライアントコンピュータ２にデータが送られる（ステップＣ１０、ステップＣ１１）。
【０１２７】
デバイスサーバ５は、ステップＣ１で送信されたブロックヘッダで特定されるデータ量のデータ伝送が完了すると、排他制御を終了する（ステップＣ１２）。この状態で、クライアントコンピュータ３がブロックヘッダ情報をデバイスサーバ５に送信すると（ステップＣ１３）、デバイスサーバ５は排他制御を開始し（ステップＣ１４）、ブロックヘッダ情報からデータ長を抽出する（ステップＣ１５）。以下同様にして、ブロックヘッダ情報の送信、結果送信が行われる（ステップＣ１６、ステップＣ１７）。
【０１２８】
図１４では読み出し処理が競合した場合について説明したが、読み出し処理と書き込み処理、書き込み処理同士が競合した場合も同様に、ブロック単位で排他制御が行うことができる。
【０１２９】
このようにブロック単位で排他制御が行われることにより、複数のクライアントコンピュータからの伝送処理の要求が競合した場合でも、無駄な空白期間が発生することを防止できる。よって、ＵＳＢストレージのように、ネットワーク機能を有しておらず、あるクライアントコンピュータが読み出し又は書き込みをしている場合には、当該ファイルへの書き込み・読み出しを行っている間中、当該コンピュータに専有される方式の記憶媒体であっても、ネットワークに接続して、無駄な空き時間がなく書き込みまたは読み出し処理が可能となる。
【０１３０】
７．他の実施形態  
上記実施形態においては、ストレージ機器としてＵＳＢストレージを採用した場合について説明したが、ストレージ機器であれば、これに限定されない。
【０１３１】
また、ＵＳＢ規格に限定されず、例えばＩＥＥＥ１３９４規格であってもよい。要するに、あるコンピュータがデータの読み書きを行っている場合は、処理が終了するまで専有する通信規格であればどのようなものであってもよい。
【０１３２】
また、本実施形態においては、デバイスサーバ５にＵＳＢストレージ１４が一台だけ接続されている場合について説明したが、デバイスサーバには他のＵＳＢ機器を接続することもできる。デバイスサーバは、クライアントコンピュータから接続機器情報の要請があった場合には、ＵＳＢストレージ機器以外のＵＳＢ機器については、現在他のクライアントコンピュータが使用中である場合には、当該使用中の処理が完了しない限り、２台のクライアントコンピュータから同時使用はできない。したがって、従来と同様に、”現在使用中であるので使用できません”という旨の報知表示等を行えばよい。
【０１３３】
本実施形態においては、ＦＡＴ１６型のディスクフォーマットを例として説明したが、他のディスクフォーマットの場合も同様に適用できる。
【０１３４】
上記実施形態の説明では、図２に示す機能を実現する為に、ＣＰＵを用い、ソフトウェアによってこれを実現している。しかし、その一部もしくは全てを、ロジック回路等のハードウェアによって実現してもよい。
【０１３５】
本実施形態においては、デバイスサーバに新たな制御プログラムをインストールするだけで、クライアントコンピュータについては従来のデバイスサーバの制御プログラムを変更する必要はない。また、上記処理を実行するために、複数のドライバなどを用いて処理する場合について説明したが、これらをまとめるようにしてもよい。
【０１３６】
なお、上記プログラムの一部の処理をオペレーティングシステム（ＯＳ）にさせるようにしてもよい。
【図面の簡単な説明】
【０１３７】
【図１】従来のネットワークファイル管理システムの概要を示す図である。
【図２】本発明にかかるデバイスサーバ５の機能ブロック図である。
【図３】本発明にかかるネットワークファイル管理システムにおけるクライアントコンピュータを、ＣＰＵを用いて実現したハードウェア構成の一例を示す図である。
【図４】本発明にかかるネットワークファイル管理システムにおけるデバイスサーバを、ＣＰＵを用いて実現したハードウェア構成の一例を示す図である。
【図５】ＵＳＢストレージ１４の記憶領域のデータ構造である。
【図６】ＵＳＢ通信規格におけるデータ伝送を説明する図である。
【図７】デバイスサーバ５における処理フローチャートである。
【図８】デバイスサーバ５における処理フローチャートである。
【図９】クライアントコンピュータにおける読み出し処理フローチャートである。
【図１０】図９ステップＳ１１７の詳細フローチャートである。
【図１１】クライアントコンピュータとデバイスサーバとの間でやり取りされるデータのデータ構造である。
【図１２】クライアントコンピュータにおける書き込み処理フローチャートである。
【図１３】図１２ステップＳ２１７の詳細フローチャートである。
【図１４】複数のクライアントコンピュータからブロックヘッダ情報が競合した場合の処理を説明する図である。
【符号の説明】
【０１３８】
１・・・・・・・・・ネットワークファイル管理システム
２・・・・・・・・・クライアントコンピュータ
３・・・・・・・・・クライアントコンピュータ
４・・・・・・・・・クライアントコンピュータ
５・・・・・・・・・デバイスサーバ
１４・・・・・・・・・ＵＳＢストレージ
【図１】
0004418920.tif 000002
【図２】
0004418920.tif 000003
【図３】
0004418920.tif 000004
【図４】
0004418920.tif 000005
【図５】
0004418920.tif 000006
【図６】
0004418920.tif 000007
【図７】
0004418920.tif 000008
【図８】
0004418920.tif 000009
【図９】
0004418920.tif 000010
【図１０】
0004418920.tif 000011
【図１１】
0004418920.tif 000012
【図１２】
0004418920.tif 000013
【図１３】
0004418920.tif 000014
【図１４】
0004418920.tif 000015