JP2010097492A - デバイス共有システム、デバイス共有クライアント、およびデバイス共有方法 - Google Patents

デバイス共有システム、デバイス共有クライアント、およびデバイス共有方法 Download PDF

Info

Publication number
JP2010097492A
JP2010097492A JP2008268916A JP2008268916A JP2010097492A JP 2010097492 A JP2010097492 A JP 2010097492A JP 2008268916 A JP2008268916 A JP 2008268916A JP 2008268916 A JP2008268916 A JP 2008268916A JP 2010097492 A JP2010097492 A JP 2010097492A
Authority
JP
Japan
Prior art keywords
session
control command
server
client
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008268916A
Other languages
English (en)
Other versions
JP2010097492A5 (ja
JP5470518B2 (ja
Inventor
Yasushi Inaba
泰 稲葉
Hidenori Tanii
秀典 谷井
Takashi Kato
隆 加藤
Inochi Negishi
命 根岸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Imaging Systems Inc
Original Assignee
Canon Imaging Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Imaging Systems Inc filed Critical Canon Imaging Systems Inc
Priority to JP2008268916A priority Critical patent/JP5470518B2/ja
Publication of JP2010097492A publication Critical patent/JP2010097492A/ja
Publication of JP2010097492A5 publication Critical patent/JP2010097492A5/ja
Application granted granted Critical
Publication of JP5470518B2 publication Critical patent/JP5470518B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】ストレージデバイスなどのデバイスをネットワーク上のクライアントPCで共用する場合、サーバ側の処理負荷を低減するとともに、ユーザに手動操作を強いることなく、必要なときだけデバイスにアクセスするように制御する手段を提供する。
【解決手段】クライアントPCからサーバにセッション開始要求を送ってセッションを接続し、セッション接続中は、クライアントPCが生成する第一の制御コマンドをサーバに送ってデバイスとの間でデータの入出力を行うと共に、第二の制御コマンドを定期的に生成してサーバに送ってセッションの接続状態を確認し、第二の制御コマンドに対する応答が所定条件を満たすと、サーバとの間のセッションを切断し、セッション切断後、クライアントPCは、定期的に生成する第二の制御コマンドをサーバに送らず、該第二の制御コマンドに対する応答を擬似的に生成し、上位層に通知する。
【選択図】図8

Description

本発明は、ネットワークを介してデバイスを共有する機能を備えたシステム、クライアント、およびその制御方法に関するものである。
ネットワークの普及により、従来、パーソナルコンピュータ(PC)などにローカル接続して利用していたデバイス(周辺機器)をネットワーク上のクライアントPCから利用できるように工夫したデバイスサーバが発表されている。
その中でもストレージデバイスを、ネットワーク上のクライアントPCからデバイスサーバを介して共有ストレージとして利用可能とするための実現方法がいくつか提案されている。
ひとつの実現方法として、クライアントPCのオペレーティングシステム(Operating System;以下、OS)に対して、ネットワークに接続されているストレージとして認識させる方法がある。
この方法では、SMB(Server Message Block)プロトコルを用いてデバイスサーバに排他制御やセッション管理の仕組みを備えることで、複数のクライアントPCから1台のストレージに対してファイルアクセスを可能としている。
しかしながら、デバイスサーバにSMBプロトコルを実装する必要があるため、デバイスサーバ側の処理負荷が高くなり、高速なCPU(Central Processing Unit)や大容量のメモリが必要となり、デバイスサーバが高価となってしまう問題がある。
また、別の実現方法として、クライアントPCのOSに対して、ローカル接続されているストレージとして仮想的に認識させる方法がある。
この方法では、クライアントPCに専用のアプリケーションソフトウェア(ユーティリティ)を導入しておき、ユーザがストレージにアクセスしようとするときにユーティリティを操作し、クライアントPCに対してローカル接続したストレージとして仮想的に認識させることで、ネットワーク上のクライアントPCから、ローカル接続した状態と同様にファイルアクセスできるようにしている。
図14は、クライアントPCに導入したユーティリティをユーザが操作し、ストレージとのセッション接続の開始・切断を行う場合の基本的な動作を示すフローチャートである。
まず、ストレージを使用するとき、クライアントPCとストレージは接続状態でないため、クライアントPCのユーティリティを起動する。ユーティリティが起動すると、ユーザ操作によるストレージの使用開始待ちの状態となる(ステップS1401)。
そして、ユーザがクライアントPCのユーティリティを操作し、ストレージの接続操作を実行すると、クライアントPCからデバイスサーバに対してセッション開始要求が送られる(ステップS1402)。
デバイスサーバとの間でセッションが開始されると(ステップS1403でYes)、ストレージへのアクセスが可能となり(ステップS1404、S1405)、ユーザによるストレージの切断操作が実行されない限り(ステップS1406でNo)、繰り返しストレージへのアクセスが行われる。
一方、デバイスサーバとの間でセッションが開始できない場合(ステップS1403でNo)、ストレージにはアクセスできないことになる(ステップS1410)。
ストレージに対するアクセスが終了すると、ユーザがクライアントPCのユーティリティを操作してストレージの切断操作を実行する。
ストレージに対する切断操作が実行されると(ステップ1406でYes)、クライアントPCからデバイスサーバに対してセッション終了要求が送られ(ステップS1407)、デバイスサーバとの間のセッションが切断され、ストレージへのアクセスが終了となる(ステップS1408、S1409)。
図15は、図14のフローチャートに基づいて動作するクライアントPC(PC1,PC2)が複数台でストレージにアクセスするときの過程を示したタイミングチャートである。
まず、PC1によってストレージにアクセスを開始するとき、ユーザは、PC1のユーティリティによりセッションの開始操作を行う。
セッションの開始操作が行われると、PC1は、デバイスサーバに対してセッション開始要求を送り、セッションが開始されると、デバイスサーバを介してストレージにアクセスすることが可能となる。
続いて、ストレージにアクセスするため、PC1からデバイスサーバに対して制御コマンドを送ると、デバイスサーバを介してストレージへのデータの読み書きを実行することができる。
PC1とデバイスサーバがセッション接続中は、PC1にセッションが専有されているため、PC2からストレージにアクセスすることができない。
PC1によるアクセスが終了したら、ユーザは、PC1のユーティリティを操作してセッションの切断操作を実行する。
セッションの切断操作が実行されると、PC1からデバイスサーバに対してセッション終了要求が送られ、デバイスサーバとの間でセッションの切断処理を行い、ストレージへのアクセスが終了となる。
ここで、ユーザがPC2のユーティリティによりセッションの開始操作を行うと、PC2からストレージへのアクセスが開始される。
このように、ユーティリティを使ってセッションの開始・切断を行うことによって、複数のクライアントPCからストレージを共有することができる。
しかし、この方法では、ユーザによるセッションの開始・切断操作が必要であり、クライアントPCがストレージにデータを読み書きしていない間(実際にアクセスしていない間)もセッションが維持されているため、ユーザがセッションを切断しない限り、他のクライアントPCがストレージを使用することができないという問題が生じる。
かかる問題を解決するために、ブロックヘッダで特定されるデータ長のブロックデータが伝送される間だけ、特定のクライアントPCによるデータ伝送専有状態として、当該クライアントPCとストレージとの間のデータ伝送を許可するデバイスサーバを用いたネットワークファイル管理システムが開示されている。(特許文献1参照)
特開2007−317067号公報
しかし、特許文献1に開示されたネットワークファイル管理システムでは、ストレージが使用されない無駄な空白時間を発生させることなしに複数のクライアントPCからストレージを共有することはできるものの、複数のクライアントPCからのアクセス要求が常にネットワーク上を行き交うことでトラフィック量が増大化するという問題が発生する。
しかも、多数のアクセス要求を処理し、特定のクライアントPCに対するデータ伝送専有状態の設定・解除を制御するために、デバイスサーバには高い処理性能が要求されるため、上述したSMBプロトコルを用いて実現する方法と同様、デバイスサーバの高価格化は避けられない。
上記問題に鑑みて、本発明は、ストレージなどのデバイス(周辺機器)をネットワーク上のクライアントPCで共用する場合、サーバ側の処理負荷を低減するとともに、ユーザに手動操作を強いることなく、必要なときだけデバイスにアクセスするように制御する手段を提供することを目的とする。
上記目的を達するために、請求項1に記載のクライアントは、ネットワークを介してサーバに接続されたデバイスとの間でデータの入出力を行うクライアントであって、前記クライアント全体を制御するとともに前記デバイスへのアクセスを指示する上位層と、前記上位層からの指示に応じて第一の制御コマンドまたは第二の制御コマンドを生成する制御コマンド生成手段と、前記制御コマンド生成手段で生成された前記第一の制御コマンドまたは前記第二の制御コマンドに基づき、前記サーバとのセッションを制御するセッション制御手段と、を備え、前記セッション制御手段は、前記制御コマンド生成手段によって前記第一の制御コマンドまたは前記第二の制御コマンドが生成されると前記サーバに対してセッション開始要求を送るセッション開始要求手段と、当該セッション開始要求に対する応答に基づき前記サーバとセッションを開始するセッション開始手段と、前記サーバとセッション接続中、前記第一の制御コマンドに基づきデバイスとの間でデータの入出力を行うデータ入出力手段と、前記サーバとセッション接続中、前記第二の制御コマンドを前記サーバに対して定期的に送り当該セッションの接続状態を確認するセッション接続状態確認手段と、前記サーバから受信した当該第二の制御コマンドに対する応答が所定条件を満たすとき、当該セッションを切断するセッション切断手段と、当該セッションの切断後、前記制御コマンド生成手段で生成された前記第二の制御コマンドを前記サーバに対して送らず、当該第二の制御コマンドに対する応答を擬似生成して、前記上位層に通知する擬似応答手段とから構成されることを特徴とする。
上記目的を達するために、請求項8に記載のデバイス共有システムは、デバイスと、サーバと、ネットワークを介して前記サーバに接続された前記デバイスとの間でデータの入出力を行うクライアントから構成されるデバイス共有システムにおいて、前記クライアントは、前記クライアント全体を制御するとともに前記デバイスへのアクセスを指示する上位層と、前記上位層からの指示に応じて第一の制御コマンドまたは第二の制御コマンドを生成する制御コマンド生成手段と、前記制御コマンド生成手段で生成された前記第一の制御コマンドまたは前記第二の制御コマンドに基づき、前記サーバとのセッションを制御するセッション制御手段と、を備え、前記セッション制御手段は、前記制御コマンド生成手段によって前記第一の制御コマンドまたは前記第二の制御コマンドが生成されると前記サーバに対してセッション開始要求を送るセッション開始要求手段と、当該セッション開始要求に対する応答に基づき前記サーバとセッションを開始するセッション開始手段と、前記サーバとセッション接続中、前記第一の制御コマンドに基づきデバイスとの間でデータの入出力を行うデータ入出力手段と、前記サーバとセッション接続中、前記第二の制御コマンドを前記サーバに対して定期的に送り当該セッションの接続状態を確認するセッション接続状態確認手段と、前記サーバから受信した当該第二の制御コマンドに対する応答が所定条件を満たすとき、当該セッションを切断するセッション切断手段と、当該セッションの切断後、前記制御コマンド生成手段で生成された前記第二の制御コマンドを前記サーバに対して送らず、当該第二の制御コマンドに対する応答を擬似生成して、前記上位層に通知する擬似応答手段とで構成されることを特徴とする。
上記目的を達するために、請求項18に記載のデバイス共有方法は、ネットワークを介してサーバに接続されたデバイスをクライアントによって共有するデバイス共有方法であって、前記クライアント全体を制御するとともに前記デバイスへのアクセスを指示する上位層からの指示に応じて第一の制御コマンドまたは第二の制御コマンドを生成する制御コマンド生成ステップと、前記制御コマンド生成ステップで生成された前記第一の制御コマンドまたは前記第二の制御コマンドに基づき、前記サーバとのセッションを制御するセッション制御ステップと、を実行し、前記セッション制御ステップでは、前記制御コマンド生成ステップによって前記第一の制御コマンドまたは前記第二の制御コマンドが生成されると前記サーバに対してセッション開始要求を送るセッション開始要求ステップと、当該セッション開始要求に対する応答に基づき前記サーバとセッションを開始するセッション開始ステップと、前記サーバとセッション接続中、前記第一の制御コマンドに基づきデバイスとの間でデータの入出力を行うデータ入出力ステップと、前記サーバとセッション接続中、前記第二の制御コマンドを前記サーバに対して定期的に送り当該セッションの接続状態を確認するセッション接続状態確認ステップと、前記サーバから受信した当該第二の制御コマンドに対する応答が所定条件を満たすとき、当該セッションを切断するセッション切断ステップと、当該セッションの切断後、前記制御コマンド生成ステップで生成された前記第二の制御コマンドを前記サーバに対して送らず、当該第二の制御コマンドに対する応答を擬似生成して、前記上位層に通知する擬似応答ステップを実行することを特徴とする。
本発明によれば、クライアントPCに対して、ネットワーク上のデバイスサーバに接続されているデバイスをローカル接続したデバイスとして認識させるとともに、デバイスにアクセスするときだけ、クライアントPCとデバイスサーバ間のセッションを接続することができる。
これにより、ネットワーク上でデバイスを共有する際、SMBプロトコルや特許文献1に開示された処理機能をデバイスサーバへ組み込む必要が無くなるため、デバイスサーバの負荷が軽減され、安価なネットワークシステム構成で複数のクライアントPCからデバイスを共有することが可能となる。
また、クライアントPCに対してデバイスが常に接続された状態として認識させることにより、クライアントPCのユーティリティなどで手動操作して行っていたセッションの開始、切断の操作が不要となり、デバイスがネットワーク環境にあることを意識せずに使用することが可能となる。
以下、本発明の第一の実施の形態について図面を参照して詳細に説明する。
図1は、本発明を実現するためのネットワークシステムの概略構成であり、PC100A,PC100Bと、デバイスサーバ200と、ストレージ300から構成されている。
このネットワークシステムでは、デバイスサーバ200とストレージ300をUSB(Universal Serial Bus)やIEEE1394などのインターフェースに準拠した接続ケーブル400で接続する。また、デバイスサーバ200とPC100(PC100A,PC100B)は、有線または無線のネットワーク500で接続する。
また、図1のネットワークシステムでは、デバイスサーバ200、ストレージ300をそれぞれ別体の装置で構成しているが、この構成に限定されるものではなく、同等の機能を実現できる構成であれば種々の構成を採り得ることは勿論である。例えば、デバイスサーバ200をストレージ300のケーシング内に収まるように一体構造としても良い。
なお、以降の説明においては、クライアントPCのオペレーティングシステム(Operating System;以下、OS)をWindows(登録商標)、デバイスをストレージ、デバイスサーバとデバイスの接続インターフェースをUSBとした場合の構成で説明するが、これらに限定されず、別のOSや接続インターフェースを使用しても良い。
次に、図1のネットワークシステムを構成する各装置について順次説明してゆく。
まず、クライアントであるPC100について説明する。PC100(PC100A,PC100B)は、例えば、パーソナルコンピュータのような装置であり、ネットワーク500と接続し、デバイスサーバ200を介してストレージ300を利用することが可能な構成となっている。
図2は、PC100(PC100A,PC100B)のハードウェア構成およびソフトウェア構成の一例を示すブロック図である。
PC100は、CPU101、入力部102、表示部103、メモリ104、通信部105、外部記憶部106などから構成されており、これらが内部バス107で接続されている。
外部記憶部106は、OS110、アプリケーションプログラム111、本発明を実現するためのソフトウェア群112〜116(後述)など各種ソフトウェアが記録されている。ここで、アプリケーションプログラム111とは、ファイル管理ソフトウェアなど、ストレージ300へのアクセスを発生せしめるソフトウェアプログラムを指す。
外部記憶部106に記憶されたこれらソフトウェアは、CPU101の制御に従い、メモリ104上に読み出されて実行される。
通信部105は、ネットワーク500(有線又は無線ネットワーク)に接続するためのインターフェースであり、デバイスサーバ200との間でデータ通信を行うことで、PC100からデバイスサーバ200を介したストレージ300へのアクセスを可能とする。
本発明を実現するためのソフトウェア群112〜116について説明する。
SCSIコマンド層112は、ストレージ300にアクセスする際に使用するドライバソフトウェア(例えば、disk.sysなど)である。
PC100内において、上位層(OS110およびアプリケーションプログラム111)からの指示によりストレージ300へのアクセスが発生すると、制御コマンドであるSCSIコマンドの生成を行い、フィルタドライバ層113へ送出し、当該SCSIコマンドに対する応答情報を待つ。なお、これ以降の説明では、制御コマンドをSCSIコマンドとして説明するが、SCSIコマンドに限定するものではない。
フィルタドライバ層113は、SCSIコマンド層112又はUSBドライバ層114から送られてくるSCSIコマンドの種類(内容)を解析するソフトウェアである。
また、SCSIコマンドの解析結果に基づいてSCSIコマンド層112を介して上位層に擬似応答情報を返すとともに、ネットワークプロトコル層115と連携してデバイスサーバ200との間のセッションを切断する機能を備えている。
USBドライバ層114は、接続対象となるUSBデバイス(本実施例では、ストレージ300)が持つ機能に合わせた制御を行うドライバソフトウェア(例えば、usbstor.sysなど)であり、また、SCSIコマンドとUSBデバイスが扱えるUSBパケットとの変換処理などを行うソフトウェアである。
ネットワークプロトコル層115は、USBパケットに対してIP(Internet Protocol)ヘッダの付加、取り外しの処理を行い、ネットワーク500を介して接続されているデバイスサーバ200との間のデータ通信を制御するソフトウェアである。
ネットワークインターフェース層116は、Ethernet(登録商標)のような有線ネットワーク、若しくは、IEEE802.11aやIEEE802.11bのような無線ネットワークなどネットワーク500に対応したネットワークパケットによる送受信や通信制御を行うためのドライバソフトウェアである。
なお、本実施例では、フィルタドライバ層113がSCSIコマンド層112とUSBドライバ層114との間に配置してあるが、この位置に限定されるものではない。例えば、USBドライバ層114の下に配置する構成や、ネットワークプロトコル層115のドライバソフトウェアの一部に組み込まれる構成であっても良い。
次に、デバイスサーバ200について説明する。デバイスサーバ200は、PC100A,100Bとデバイスであるストレージ300と間の接続制御を行う装置である。
図3は、デバイスサーバ200のハードウェア構成およびソフトウェア構成の一例を示すブロック図である。
デバイスサーバ200は、CPU201、入力部202、表示部203、ROM204、RAM205、通信部206、USBインターフェース207などから構成されており、これらが内部バス208で接続されている。
ROM(Read Only Memory)204には、OS210、制御プログラム211、本発明を実現するためのソフトウェア群212〜213(後述)など各種ソフトウェアが記録されており、これらソフトウェアは、CPU201の制御に従い、RAM205上に読み出されて実行される。
USBインターフェース207は、接続ケーブル400を介してストレージ300とローカル接続するためのインターフェースである。
通信部206は、ネットワーク500(有線又は無線ネットワーク)に接続してPC100との間でデータ通信するためのインターフェースである。
本発明を実現するためのソフトウェア群212〜213について説明する。
通信層212は、ネットワークに接続された通信部206の制御を行うとともに、ネットワーク500に接続されているPC100との間のセッションやネットワークパケットによる通信を行うソフトウェアである。
また、USBコマンド層213との間で通信するため、ネットワークパケットとUSBパケットとの変換を行う。ネットワークパケットはUSBパケットにIPヘッダを付加して作成するため、変換にはIPヘッダの取り付け及び取り外しを行う。
USBコマンド層213は、USBパケットに基づいて、ストレージ300との間でデータ通信を行うソフトウェアである。
なお、通信層212、USBコマンド層213は、ストレージ300内に内蔵する構成であっても良い。また、通信層212の機能を備えたソフトウェアを別筐体内に設け、デバイス(ストレージ300)に接続可能なインターフェースを有した外付けアダプタの形態として構成してもよい。この場合は、USBコマンド層213の機能を持つソフトウェアは、デバイス300側のRAMや外部記憶装置などに記録しておく構成とする。
ここで、上述した図2及び図3で各ソフトウェア構成を説明したPC100とデバイスサーバ200間の通信に関して説明する。
PC100のネットワークプロトコル層115は、ネットワークインターフェース層116を介して、デバイスサーバ200の通信層212とTCPプロトコル(Transmission Control Protocol)を用いて通信する。TCPプロトコルは、信頼性のある通信を保証するためのプロトコルであり、本実施例においては、ネットワーク500上に流れるストレージ300のデータの転送に用いている。
ストレージ300は、例えば、HDD(Hard Disk Drive)のような装置であり、各種データの書き込み処理や読出し処理が可能な装置である。
なお、本実施例では、デバイスとしてストレージを例に説明しているが、例えば、プリンタやスキャナなど、別のデバイスであってもよい。
図4は、PC100からストレージ300へアクセスするときに使用する主なSCSIコマンドについて、CDB(Command Descriptor Block)の種類、オペレーションコード、サイズと意味を示した一覧リストであり、上述したPC100のSCSIコマンド層112(図2参照)で生成される制御コマンドである。本発明においては、これらのSCSIコマンドをセッション制御に利用する。
各CDBは、1バイトのオペレーションコードとそれに対応する構造体のサイズが定義されており、例えば、Test Unit ReadyのCDBでは、オペレーションコードは0x00であり、サイズは6バイトである。以下、本実施例の説明で使用するコマンドについて説明する。
Test Unit Readyコマンド(以下、TURコマンド)は、ストレージ300へのアクセスがアイドル状態になった場合、PC100から定期的(例えば、一秒間隔)に送出され、ストレージの状態を確認するために用いられている制御コマンドである。
READコマンドは、ストレージ300からデータを読み出すときに用いられるコマンドであり、WRITEコマンドは、ストレージ300へデータを書き込むときに用いられるコマンドである。なお、これ以降の説明では、TURコマンド以外の制御コマンドを「アクセス制御コマンド」として説明する。
図5は、図4に図示した各SCSIコマンドで共通に使用されるSRB(SCSI Request Block)のパケットフォーマットである。パケットは、SRBのサイズを示す2バイトのLengthと、機能を示す1バイトのFunctionのフィールドなどで構成される。
SCSIコマンド層112からフィルタドライバ層113へ送信されるSRB構造体は、64バイトのサイズであり、Length=64が設定される。Functionは、SCSIコマンドの実行コードとして0x00、ストレージ300への要求コードとしての0x01、制御を行う0x02などの値が設定される。
先頭からオフセット10バイト目にあたる1バイトのCdbLengthは、CDBの有効データサイズを示している。CDBは、SCSIデバイスの具体的なコマンドを示しており、オフセット48バイト目から、16バイト固定長のデータ領域が確保されている。
次に、PC100とストレージ300間のデータ通信の大まかな流れについて図6を参照しながら説明する。
まず、PC100からストレージ300へデータ送信を行う場合について説明する。
PC100においてストレージ300へのアクセス要求が発生すると、SCSIコマンド層112は、アクセス要求の内容に応じて図4で説明したSCSIコマンドのいずれかを生成し、図5で示したフォーマットでフィルタドライバ層113へ送る。
フィルタドライバ層113は、SCSIコマンド層112で生成されたSCSIコマンドの解析を行い、どのような内容のアクセス要求なのかを判定する。
USBドライバ層114は、フィルタドライバ層113で解析されたSCSIコマンドをUSBパケットに変換する(SCSIコマンドをUSBパケットのデータ層に格納する)。
ネットワークプロトコル層115は、USBドライバ層114でSCSIコマンドから変換されたUSBパケットにIPヘッダを付加し、ネットワーク500に適した形式のデータであるネットワークパケットを作成する。
ネットワークインターフェース層116は、ネットワークプロトコル層115で作成されたネットワークパケットをネットワーク500を介してデバイスサーバ200に送出する。
デバイスサーバ200では、まず、通信層212で、PC100からネットワーク500を介して送信されたネットワークパケットを受信し、ネットワークパケットからIPヘッダを取り外すことでUSBパケットに変換し、これをUSBコマンド層213へ送る。
USBコマンド層213では、通信層212から送られたUSBパケットを、接続ケーブル400を介してストレージ300へ送る。
ストレージ300は、デバイスサーバ200から送られてきたUSBパケットに含まれるSCSIコマンドを解析し、その種類に応じた応答処理を行う。
SCSIコマンドがTURコマンドである場合は、ストレージ300を使用可能か否かの状態の確認処理を実行する。
SCSIコマンドがREADコマンドである場合は、ストレージ300からの読み込み処理を実行する。
SCSIコマンドがWRITEコマンドである場合は、ストレージ300への書き込み処理を実行する。
SCSIコマンドが上述した以外のコマンドである場合は、該当するコマンドに応じた処理を実行する。
次に、ストレージ300からPC100へデータ送信(応答)を行う場合について説明する。
上述した応答処理を行ったストレージ300は、その結果をPC100に対する応答情報としてUSBパケットでデバイスサーバ200へ送る。
デバイスサーバ200では、USBコマンド層213がストレージからの応答情報であるUSBパケットを受け取り、それを通信層212へ送る。
通信層212では、USBコマンド層213からのUSBパケットにIPヘッダを付加し、ネットワーク500に適した形式のデータであるネットワークパケットを作成し、ネットワーク500を介してPC100に送出する。
このようにして、PC100とストレージ300との間でデバイスサーバ200を介したデータ通信が実行されることになる。
次に、PC100(PC100A,PC100B)の基本制御について説明する。
PC100では、デバイスサーバ200との接続が定常状態であるかどうかを判断して、定常状態に達した場合には、デバイスサーバ200とのセッションを切断し、PC100の上位層(OS110、アプリケーションプログラム111)およびSCSIコマンド層112からはストレージ300が接続されていると認識される、いわゆる「擬似接続状態」へ移行し、定常状態である期間は「擬似接続状態」を維持する制御を実行する。
なお、定常状態とは、PC100とストレージ300との接続が一定に保たれている状態をいい、定常状態であるかどうかの判断には、TURコマンドに対してストレージ300が連続して「SUCCESS」を応答した回数を用いるものとし、この回数(初期値0)をカウントするカウンタを、以降の説明ではSUCCESSカウンタと呼ぶものとする。
図7は、PC100がデバイスサーバ200を介してストレージ300にアクセスするときの制御動作の手順を示すフローチャートである。
まず、PC100において、ストレージ300へのアクセスが発生した場合、SCSIコマンド層112がアクセス要求の内容に応じたSCSIコマンド(図4参照)の生成を行い、生成されたSCSIコマンドは、フィルタドライバ層113へ送信される(ステップS701)。
次に、フィルタドライバ層113が、生成されたSCSIコマンドを解析する(ステップS702)。
SCSIコマンドがTURコマンドである場合(ステップS702でYes)、フィルタドライバ層113では、SUCCESSカウンタの値を判定する(ステップS703)。この判定により、擬似接続状態であるか否かの判定が行われる。
SUCCESSカウンタの値が「5」未満の場合(ステップS703でNo)、次に、デバイスサーバ200との間のセッションの有無を判定する(ステップS705)。
デバイスサーバ200との間で「セッションなし」の場合(ステップS705でYes)、即ち、SUCCESSカウンタの値が「0」の場合は、デバイスサーバ200に対してセッション開始要求を送り、デバイスサーバ200とセッションを開始する(ステップS706)。
デバイスサーバ200との間で「セッションあり」の場合(ステップS705でNo)、即ち、SUCCESSカウンタの値が「1」以上「5」未満の場合、ステップS706の処理はスキップされる。
続いて、デバイスサーバ200に対してTURコマンドを送信する。デバイスサーバ200は、ストレージ300にTURコマンドを送り、ストレージ300で確認処理が実行され、その応答情報がデバイスサーバ200に返送される。デバイスサーバ200は、この応答情報をPC100に返送する(ステップS707)。
PC100は、デバイスサーバ200から送られてくる応答情報を受信すると、応答内容を確認する(ステップS708) 。
応答内容が「FAIL」であった場合 (ステップS708でNo)、デバイスサーバ200との間のセッションを維持したまま、SUCCESSカウンタの値を「0」にリセットし(ステップS715)、次のSCSIコマンドの受信待機状態に移る。
応答内容が「SUCCESS」であった場合(ステップS708でYes)、SUCCESSカウンタの値を1つインクリメントし(ステップS709)、続いて、SUCCESSカウンタの値が規定値「5」であるか否かを判定する(ステップS710)。
SUCCESSカウンタの値が規定値「5」未満の場合(ステップS710でNo)、デバイスサーバ200との間のセッションを維持したまま、次のSCSIコマンドの受信待機状態に移る。
SUCCESSカウンタの値が規定値「5」を示す場合(ステップS710でYes)、デバイスサーバ200との接続が定常状態であると判断してセッションを終了し(ステップS711)、次のSCSIコマンドの受信待機状態に移る。
一方、上述したステップS703の処理において、SUCCESSカウンタの値が規定値「5」以上の場合は(ステップS703でYes)、セッションが終了した状態、すなわち定常状態であるため、実際のネットワーク接続によるストレージ300への問い合わせは行わず、フィルタドライバ層113で擬似応答情報を生成し、SCSIコマンド層112に「SUCCESS」を返す(ステップS704)。そして、SCSIコマンド層112から上位層に対して「SUCCESS」が通知され、次のSCSIコマンドの受信待機状態に移る。
これ以降、フィルタドライバ層113がアクセス制御コマンドを受け取るまで、上述したステップS701〜S704が繰り返される。この間、PC100の上位層(OS110、アプリケーションプログラム111)およびSCSIコマンド層112では、ストレージ300が接続された状態と判断されているが、デバイスサーバ200とのセッションが切断されている状態、いわゆる「擬似接続状態」を維持することになる。
また、上述したステップS702の処理で、フィルタドライバ層113が解析したSCSIコマンドがアクセス制御コマンドである場合の処理について説明する。
SCSIコマンドがアクセス制御コマンドの場合(ステップS702でNo)、例えば、READコマンド/WRITEコマンドなどの場合、次に、デバイスサーバ200との間のセッションの有無を判定する(ステップS712)。
デバイスサーバ200との間で「セッションなし」の場合(ステップS712でYes)、SUCCESSカウンタの値が「0」の場合は、デバイスサーバ200に対してセッション開始要求を送り、デバイスサーバ200とセッションを開始する(ステップS713)。
デバイスサーバ200との間で「セッションあり」の場合(ステップS712でNo)、即ち、SUCCESSカウンタの値が「1」以上「5」未満の場合、ステップS713の処理はスキップされる。
続いて、デバイスサーバ200に対してREADコマンド/WRITEコマンドなどのSCSIコマンドを送信する。デバイスサーバ200は、ストレージ300に対しこのSCSIコマンドを送り、ストレージ300でREADコマンド/WRITEコマンドなどに応じた処理が実行され、その応答情報がデバイスサーバ200に返送される。デバイスサーバ200は、この応答情報をPC100に返送する(ステップS714)。
PC100は、デバイスサーバ200から送られてくる応答情報を受信すると、デバイスサーバ200とのセッションを維持したまま、SUCCESSカウンタの値を「0」にリセットし(ステップS715)、次のSCSIコマンドの受信待機状態に移る。
上記のSUCCESSカウンタは、フィルタドライバ層113がその機能の一部として備えるものでもよく、また、別のソフトウェアとして外部記憶部106に記録され、ソフトウェア群112〜116同様、CPU101の制御に従い、メモリ104上に読み出されて実行されるものでもよい。
上述したように、フィルタドライバ層113では、SUCCESSカウンタの値が規定値「5」となるまでの間にアクセス制御コマンドを受信した場合、又は、応答情報が「FAIL」である場合、SUCCESSカウンタの値を「0」にリセットする。
本実施の形態では、PC100とデバイスサーバ200との接続が定常状態であるかどうかの判断基準の一例として、SUCCESSカウンタの値を用いているが、規定値は「5」以外の値でも良く、ユーザが任意に設定できるようにしても良い。また、TURコマンドに対する応答が一定時間SUCCESSであることなどを条件にしても良い。
図8は、図7の制御フローに基づいて動作するPC100の状態遷移を示した図である。
状態801は、電源投入直後などPC100の初期状態である。このとき、デバイスサーバ200との間は「セッションなし」で、SUCCESSカウンタの値は初期値「0」である。
状態801において、ストレージ300に対するアクセスが発生すると、状態801から状態802に遷移する。
状態802は、デバイスサーバ200との接続がまだ定常状態になっていない状態である。このとき、デバイスサーバ200との間は「セッションあり」で、SUCCESSカウンタの値は「5」未満である。
状態802において、SCSIコマンドを生成してデバイスサーバ200に送出した後、デバイスサーバ200を介してストレージ300からの応答情報を受信すると、次の(a)、(b)、(c)の何れかの状態となる。
(a)TURコマンドの要求があり、これに対する応答が「SUCCESS」であり、SUCCESSカウンタの値が規定値「5」に達した場合、状態803に遷移する。
(b)TURコマンドの要求があり、これに対する応答が「SUCCESS」であり、SUCCESSカウンタの値が規定値「5」未満の場合は、状態802を維持する。
(c)アクセス制御コマンドの要求があり、これに対する応答があった場合、SUCCESSカウンタの値を「0」にリセットし、状態802を維持する。
このように、PC100は、上述した(a)の場合のみ、状態802から状態803に遷移する。
状態803は、デバイスサーバ200との接続が定常状態に達した状態、即ち、擬似接続状態を示している。このとき、デバイスサーバ200との間は「セッションなし」で、SUCCESSカウンタの値は規定値「5」以上である。
状態803において、OS110およびアプリケーションプログラム111からの指示によりSCSIコマンド層112がSCSIコマンドを生成したとき、次の(d)、(e)の何れかの状態となる。
(d)SCSIコマンドがTURコマンドの場合、フィルタドライバ層113で擬似応答情報を生成し、SCSIコマンド層112に対しSUCCESSを応答し、状態803を維持する。
(e)SCSIコマンドがアクセス制御コマンドの場合、デバイスサーバ200との間のセッションを開始し、デバイスサーバ200に対して生成したSCSIコマンドを送る。そして、デバイスサーバ200を介してストレージ300からの応答情報を受信すると、SUCCESSカウンタの値を「0」にリセットし、状態802へ遷移する。
このように、PC100は、ストレージ300にアクセスが必要なときだけ、デバイスサーバ200と間のセッションを開始してSCSIコマンドの送出を行うので、セッションの開始・切断を手動操作することなく、複数のクライアントPCによるストレージのアクセスを実現できる。また、クライアントPCからデバイスサーバ200に対して定期的に送出するTURコマンドを抑制し、ネットワーク上の通信量(トラフィック)を低減することができる。
次に、デバイスサーバ200の制御動作について図9を参照しながら説明する。
デバイスサーバ200では、PC100からのセッション開始要求又はセッション終了要求の受信を監視している。
セッション開始要求を受信した場合(ステップS901でYes)、他のPC100とセッション接続中か否かを確認する(ステップS902)。
既にセッションが開始されている場合(ステップS902でYes)、このPC100に対して「NG」を返す(ステップS903)。
セッションが開始されていない場合(ステップS902でNo)、このPC100とセッションを開始し(ステップS904)、応答情報として「OK」を返す(ステップS905)。
上述したステップS901の処理において、セッション開始要求以外のパケットを受信した場合(ステップS901でNo)、セッション終了要求であれば(ステップS906でYes)、セッション接続中のPC100との間のセッションを切断し(ステップS907)、応答情報として「OK」を返す(ステップS908)。
一方、上述したステップS906の処理において、セッション終了要求以外のパケットを受信した場合(ステップS906でNo)、そのパケットの種類に応じた応答処理を実行する(ステップS909)。
図10は、図9の制御フローに基づいて動作するデバイスサーバ200の状態遷移を示した図である。
状態1001は、デバイスサーバ200の初期状態である。このとき、PC100との間は「セッションなし」である。UDP(User Datagram Protocol)プロトコルを用いた通信などによる外部からの要求に応答し、状態1001を維持する。
ここで、PC100においてストレージ300に対するアクセスが発生すると、PC100からデバイスサーバ200に対してセッション開始要求が送られる。デバイスサーバ200は、セッション開始要求に応じてPC100との間のセッションを開始し、状態1002に遷移する(図10の(a))。
状態1002は、「セッションあり」の状態である。この状態では、次の(b)、(c)、(d)の処理を行い、状態1002を維持する。
(b)セッション接続中のPC100からコマンドを受信して、それをストレージ300に送信し、ストレージ300から受信する当該コマンドに対する応答情報をPC100に返送する。
(c)セッション接続中ではない他のPC100からセッション開始要求があった場合、そのPC100に対して新たにセッションを開始することができないため、「NG」を応答する。
(d)UDPプロトコルを用いた通信などによる外部からの要求に応答する。
一方、状態1002において、セッション接続中のPC100からセッション終了要求があった場合、当該PC100とのセッションを切断し、状態1001へ遷移する(図10の(e))。
このように、デバイスサーバ200では、PC100の状態遷移に応じて、「セッションなし」の状態1001と「セッションあり」の状態1002との遷移を繰り返す。
次に、上述したネットワークシステムにおいて、PC100Aからストレージ300へアクセスするときの具体的なタイミングチャートについて説明する。
簡略化して分り易く説明をするために、まず、PC100A一台だけがストレージ300にアクセスする場合(1対1で接続する場合)について、図11を参照しながら説明する。
ここでは、他のクライアントPCからのセッション開始要求の有無を考慮せず、PC100Aからのセッション開始要求に対して、デバイスサーバ200は常に「OK」を応答するものとする。
PC100Aにおいてストレージ300へのアクセスが発生した場合、ストレージドライバであるSCSIコマンド層112において、アクセスの種類に応じたSCSIコマンドが生成され、生成されたSCSIコマンドは、フィルタドライバ層113へ送信される(タイミングT1101)。
フィルタドライバ層113は、デバイスサーバ200に対してセッション開始要求を行う(タイミングT1102)。このとき、SUCCESSカウンタの値は初期値の「0」である。
デバイスサーバ200は、PC100Aに対して「OK」を応答して、PC100Aとの間のセッションを開始する(タイミングT1103)。
フィルタドライバ層113は、デバイスサーバ200から「OK」の応答がありセッションが開始されると、ストレージ300の状態を確認するためのTURコマンドを送信する(タイミングT1104)。
デバイスサーバ200は、TURコマンドを受信すると、これをストレージ300に送信する(タイミングT1105)。ストレージ300は、TURコマンドに応じた処理を実行し、処理が完了すると応答情報をデバイスサーバ200に返す(タイミングT1106)。デバイスサーバ200はストレージ300からの応答情報をPC100Aに送る(タイミングT1107)。
フィルタドライバ層113は、デバイスサーバ200から応答情報を受信し、これが「SUCCESS」であれば、SUCCESSカウンタの値を1インクリメントするとともにSCSIコマンド層112へ応答を返す(タイミングT1108)。
以後、規定値「5」になるまで定期的(例えば、1秒間隔)にTURコマンドを送出する(タイミングT1109)。そして、SUCCESSカウンタの値が規定値「5」になると、デバイスサーバ200に対してセッション終了要求を送り、デバイスサーバ200とのセッションを切断する(タイミングT1110)。
PC100Aでは、セッションが終了したあともSCSIコマンド層112が定期的にTURコマンドを送出するが(タイミングT1111)、フィルタドライバ層113はSUCCESSカウンタの値が規定値「5」以上となっているので、これ以降に送出するSCSIコマンドがTURコマンドである限り擬似応答情報をSCSIコマンド層112に返す(タイミングT1112)。
PC100Aの上位層(OS110、アプリケーションプログラム111)およびSCSIコマンド層112は、この擬似応答情報によってストレージ300とは接続状態であると認識する。この状態がいわゆる「擬似接続状態」である。
次に、擬似接続状態のPC100Aからストレージ300に対してデータの書き込み/読み出しなどのアクセスを行う場合について説明する。
擬似接続状態のPC100Aからストレージ300に対してデータの書き込み/読み出しなどのアクセスを行うときは、アクセス制御コマンド(READコマンドやWRITEコマンドなど)の送信に先立って、まず、フィルタドライバ層113がデバイスサーバ200に対してセッション開始要求を送る(タイミングT1113)。
デバイスサーバ200は、PC100Aに対して「OK」を応答して、PC100Aとの間でセッションを開始する(タイミングT1114)。
フィルタドライバ層113は、デバイスサーバ200から「OK」の応答がありセッションが開始されると、デバイスサーバ200に対してアクセス制御コマンドを送る(タイミングT1115)。
デバイスサーバ200は、PC100Aからアクセス制御コマンドを受信すると、USBパケットに変換してストレージ300へ送信する(タイミングT1116)。
ストレージ300では、デバイスサーバ200から送られてきたアクセス制御コマンドに応じた処理を実行し(例えば、データの書き込み/読み出しなど)、処理が終了するとその結果を応答情報としてデバイスサーバ200に送信する(タイミングT1117)。
デバイスサーバ200は、ストレージ300からの応答情報を受信すると、この応答情報をPC100Aに対して送信する(タイミングT1118)。
フィルタドライバ層113は、デバイスサーバ200から応答情報を受信すると、SUCCESSカウンタの値を「0」にリセットするとともにSCSIコマンド層112へ応答を返す(タイミングT1119)。
その後は上述と同様に、フィルタドライバ層113からTURコマンドを定期的に送出し、SUCCESSカウンタの値が規定値「5」になると、デバイスサーバ200に対してセッション終了要求を送り、デバイスサーバ200との間のセッションを切断する(タイミングT1120)。そして、再度ストレージ300にアクセスするときまでの間、擬似接続状態を維持する。
次に、実際の運用により近いケースとして、複数台のPC100(PC100A,PC100B)がストレージ300にアクセスする場合(N対1で接続する場合)について、図12を参照しながら説明する。
図12は、PC100Aがセッション接続中、若しくは、ストレージ300にアクセス中に、別のPC100Bからストレージ300にアクセスしたときのタイミングチャートを示した説明図である。なお、PC100Aについては、前述した図11と同じ動作であるため、詳細な説明は省略する。
まず、PC100Aとデバイスサーバ200がセッション接続中のとき、PC100Bがストレージ300にアクセスしようとした場合について説明する。
PC100Aとデバイスサーバ200との間でセッション接続中のとき、PC100Bがデバイスサーバ200にセッション開始要求を送る(タイミングT1201)。
デバイスサーバ200は、PC100Aとセッション接続中のため、PC100Aとの間のセッションが切断されるまで間、PC100Bに対して「NG」を返す(タイミングT1202)。
PC100Bは、デバイスサーバ200から「NG」の応答があると、定期的にセッション開始要求を再送する。
デバイスサーバ200は、PC100Aとのセッションが切断され、「セッションなし」の状態(PC100Aが擬似接続状態)になったとき、PC100Bからの「セッション開始要求」を受信すると、PC100Bとの間でセッションを開始する(タイミングT1203)。
PC100Bは、デバイスサーバ200とセッションが開始されると、ストレージ300の状態を確認するためTURコマンドを送信する(タイミングT1204)。
デバイスサーバ200は、TURコマンドを受信すると、これをストレージ300に送信する(タイミングT1205)。ストレージ300は、TURコマンドに応じた処理を実行し、処理が完了すると応答情報をデバイスサーバ200に返す。デバイスサーバ200はストレージ300からの応答情報をPC100Bに送る(タイミングT1206)。
PC100Bは、デバイスサーバ200から応答情報を受信し、これが「SUCCESS」であれば、SUCCESSカウンタの規定値を判定し、規定値「5」になるまで定期的(例えば、1秒間隔)にTURコマンドを送出する(タイミングT1207)。そして、SUCCESSカウンタの規定値「5」になると、デバイスサーバ200に対してセッション終了要求を送り、デバイスサーバ200とのセッションを切断する(タイミングT1208)。
この時点で、PC100A及びPC100Bは共に擬似接続状態であり、デバイスサーバ200は「セッションなし」の状態である(タイミングT1209)。
続いて、PC100Aがストレージ300にアクセス中(読出し中又は書き込み中など)に、PC100Bからストレージ300にアクセスしようとした場合について説明する。
上述したように、PC100AとPC100Bは共に擬似接続状態であり、デバイスサーバ200は「セッションなし」の状態であるとき、擬似接続状態のPC100Aからデバイスサーバ200にアクセスを開始すると、PC100Aからデバイスサーバ200に対してセッション開始要求が送られ、デバイスサーバ200との間のセッションが開始される。(タイミングT1210)
セッションが開始されると、PC100Aがデバイスサーバ200に対してアクセス制御コマンド(READコマンドやWRITEコマンドなど)を送出し(タイミングT1211)、デバイスサーバ200がストレージ300に対してアクセス制御コマンドを送る(タイミングT1212)。
ストレージ300では、アクセス制御コマンドに応じた処理(例えば、データの書き込み/読出しなど)を実行し、その結果を応答情報としてデバイスサーバ200を介してPC100Aに返信する(タイミングT1213)。
その後は上述と同様に、フィルタドライバ層113からSUCCESSカウンタの値が規定値「5」になるまで定期的に、TURコマンドをデバイスサーバ200に対して送出する(タイミングT1214)。
ここで、PC100Bがストレージ300へのアクセスを開始し、デバイスサーバ200にセッション開始要求を送ると、デバイスサーバ200は、PC100Bに対して「NG」を応答する(タイミングT1215)。
PC100Bは、デバイスサーバ200からの「NG」応答に対して、定期的にセッション開始要求を再送するが、PC100Aとデバイスサーバ200のセッションが切断されるまでは、デバイスサーバ200からは「NG」が応答される。
デバイスサーバ200とPC100Aとの間のセッションが終了し、デバイスサーバ200がセッションなしの状態になると、PC100Bからのセッション開始要求により、PC100Bとの間でセッションを開始する(タイミングT1216)。このときPC100Aは擬似接続状態である。
これ以降のPC100Bの動作は、上述したPC100Aと同様であり、セッションが開始されると、PC100Bがデバイスサーバ200を介してストレージ300にアクセス可能になる。
上述したように、第一の実施の形態におけるネットワークシステムでは、あるクライアントPCがストレージ300にアクセスするときだけ、クライアントPCとデバイスサーバ間のセッションを接続することにより、ネットワーク上の通信量(トラフィック)を低減することが可能となる。
また、高負荷な処理機能をデバイスサーバへ組み込む必要が無くなるため、安価なネットワークシステム構成で複数のクライアントPCからデバイスを共有することが可能となる。
次に、本発明の第二の実施の形態について図面を参照して詳細に説明する。本実施の形態は、図1〜図6、図8〜図12に図示した構成が、上記第一の実施の形態と同じであり、その説明を省略する。以下に、上記第一の実施の形態と異なる点のみを説明する。
第二の実施の形態におけるPC100(PC100A,PC100B)の基本制御フローについて、図13を参照しながら説明する。図13は第一の実施の形態における図7と同様、PC100がデバイスサーバ200を介してストレージ300にアクセスするときの制御動作の手順を示すフローチャートであるが、ステップS1310とステップS1311は、図7にはなかったステップである(詳細は後述)。
PC100において、ストレージ300へのアクセスが発生した場合、SCSIコマンド層112がアクセス要求の内容に応じたSCSIコマンド(図4参照)の生成を行い、生成されたSCSIコマンドは、フィルタドライバ層113へ送信される(ステップS1301)。
次に、フィルタドライバ層113が、生成されたSCSIコマンドを解析する(ステップS1302)。
SCSIコマンドがTURコマンドである場合(ステップS1302でYes)、フィルタドライバ層113では次に、TURコマンドに対する応答が「SUCCESS」であるときの回数をカウントしているカウンタ(以降、SUCCESSカウンタ)の値を判定する(ステップS1303)。この判定により、擬似接続状態であるか否かの判定が行われる。
SUCCESSカウンタの値が「5」未満の場合(ステップS1303でNo)、次に、デバイスサーバ200との間のセッションの有無を判定する(ステップS1305)。
デバイスサーバ200との間で「セッションなし」の場合(ステップS1305でYes)、即ち、SUCCESSカウンタの値が「0」の場合は、デバイスサーバ200に対してセッション開始要求を送り、デバイスサーバ200とセッションを開始する(ステップS1306)。
デバイスサーバ200との間で「セッションあり」の場合(ステップS1305でNo)、即ち、SUCCESSカウンタの値が規定値未満の場合、ステップS1306の処理はスキップされる。
続いて、デバイスサーバ200に対してTURコマンドを送信する。デバイスサーバ200は、ストレージ300にTURコマンドを送り、ストレージ300で確認処理が実行され、その応答情報がデバイスサーバ200に返送される。デバイスサーバ200は、この応答情報をPC100に返送する。なお、このとき、デバイスサーバ200は、他のクライアントPC(例えば、PC100B)から所定時間内に受信したセッション開始要求の有無をあわせて通知する。(ステップS1307)。
ここでいう所定時間とは、セッション開始後の累計時間や、定期的に送出されるTURコマンドの送出間隔(例えば、1秒間隔)を指すが、これに限定されるものではない。
PC100Aは、デバイスサーバ200から送られてくる応答情報を受信すると、応答内容を確認する(ステップS1308) 。
応答内容が「FAIL」であった場合 (ステップS1308でNo)、デバイスサーバ200との間のセッションを維持したまま、SUCCESSカウンタの値を「0」にリセットし(ステップS1317)、次のSCSIコマンドの受信待機状態に移る。
応答内容が「SUCCESS」であった場合(ステップS1308でYes)、SUCCESSカウンタの値を1つインクリメントする(ステップS1309)。
次に、PC100Aは、デバイスサーバ200との接続を擬似接続状態に移行するかの基準となる規定値を変更するか否かを判定する(ステップS1310)。この判定には、ステップS1307において、デバイスサーバ200から通知された他のクライアントPCからのセッション開始要求の有無に関する情報が用いられる。
他のクライアントPCからのセッション開始要求が「あり」の場合(ステップS1310でYes)、規定値を変更する(例えば、「5」から「3」に下げる)(ステップS1311)。
一方、他のクライアントPCからのセッション開始要求が「なし」の場合(ステップS1310でNo)、ステップS1311をスキップして規定値を変更しない。
続いて、SUCCESSカウンタの値が規定値であるか否かを判定する(ステップS1310)。ステップS1311で規定値を変更した場合には、変更後の規定値に基づいて判定される。
SUCCESSカウンタの値が規定値未満の場合(ステップS1310でNo)、デバイスサーバ200との間のセッションを維持したまま、次のSCSIコマンドの受信待機状態に移る。
一方、上述したステップS1303の処理において、SUCCESSカウンタの値が規定値以上の場合は(ステップS1303でYes)、セッションが終了した状態、すなわち定常状態であるため、実際のネットワーク接続によるストレージ300への問い合わせは行わず、フィルタドライバ層113で擬似応答情報を生成し、SCSIコマンド層112に「SUCCESS」を返す(ステップS1304)。そして、SCSIコマンド層112から上位層に対して「SUCCESS」が通知され、次のSCSIコマンドの受信待機状態に移る。
これ以降、フィルタドライバ層113がアクセス制御コマンドを受け取るまで、上述したステップS1301〜S1304が繰り返される。この間、PC100の上位層(OS110、アプリケーションプログラム111)およびSCSIコマンド層112では、ストレージ300が接続された状態と判断されているが、デバイスサーバ200とのセッションが切断されている状態、いわゆる「擬似接続状態」を維持することになる。
SUCCESSカウンタの値が規定値を示す場合(ステップS1310でYes)、デバイスサーバ200との接続が定常状態であると判断してセッションを切断し(ステップS1311)、次のSCSIコマンドの受信待機状態に移る。
また、上述したステップS1302の処理で、フィルタドライバ層113が解析したSCSIコマンドがアクセス制御コマンドである場合の処理について説明する。
SCSIコマンドがアクセス制御コマンドの場合(ステップS1302でNo)、例えば、READコマンド/WRITEコマンドなどの場合、次に、デバイスサーバ200との間のセッションの有無を判定する(ステップS1314)。
デバイスサーバ200との間で「セッションなし」の場合(ステップS1314でYes)、SUCCESSカウンタの値が「0」の場合は、デバイスサーバ200に対してセッション開始要求を送り、デバイスサーバ200とセッションを開始する(ステップS1315)。
デバイスサーバ200との間で「セッションあり」の場合(ステップS1314でNo)、即ち、SUCCESSカウンタの値が規定値未満の場合、ステップS1315の処理はスキップされる。
続いて、デバイスサーバ200に対してREADコマンド/WRITEコマンドなどのSCSIコマンドを送信する。デバイスサーバ200は、ストレージ300に対しこのSCSIコマンドを送り、ストレージ300でREADコマンド/WRITEコマンドなどに応じた処理が実行され、その応答情報がデバイスサーバ200に返送される。デバイスサーバ200は、この応答情報をPC100に返送する(ステップS1316)。
PC100は、デバイスサーバ200から送られてくる応答情報を受信すると、デバイスサーバ200とのセッションを維持したまま、SUCCESSカウンタの値を「0」にリセットし(ステップS1317)、次のSCSIコマンドの受信待機状態に移る。
上述したように、フィルタドライバ層113では、SUCCESSカウンタの値が規定値となるまでの間にアクセス制御コマンドを受信した場合、又は、応答情報が「FAIL」である場合、SUCCESSカウンタの値を「0」にリセットする。
上述したように、第二の実施の形態におけるネットワークシステムでは、デバイスサーバ200がPC100に対して、他のクライアントPCからのセッション開始要求の有無をあわせて通知することによって、PC100がより早く擬似接続状態に移行し、デバイスサーバ200とのセッションを開放することができる。
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
上述した実施の形態では、1台のデバイスサーバが1台のストレージを管理する構成で説明したが、1台のサーバに複数のストレージを接続する構成としても良い。また、この場合はストレージ毎にセッションを用意し制御することで、複数のクライアントPCから、別々のストレージであれば、同時にアクセスが可能となる。
また、デバイスサーバとデバイスの接続インターフェースをUSBとした場合の構成で説明したが、これらに限定されず、別の接続インターフェースを使用しても良い。具体的には、IEEE1394に対応するためには、PC100が備えるUSBドライバ層114とデバイスサーバ200が備えるUSBコマンド層212が、それぞれIEEE1394ドライバ層とIEEE1394コマンド層が置き換われば良い。
さらにはPC100が複数の異なるドライバ層を持ち、デバイスサーバ200がそれに対応した複数の異なるコマンド層を備えるようにすれば、様々な接続インターフェースを備えたデバイスにも柔軟に対応できる。
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
なお、プログラムコードを供給するため、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CDやDVDに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ROM等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
本発明の実施形態に係るネットワークシステムの概略構成を示すブロック図である。 図1のPC100A,100Bのハードウェアおよびハードウェアの概略構成を示すブロック図である。 図1のデバイスサーバ200のハードウェアおよびハードウェアの概略構成を示すブロック図である。 制御コマンドとして用いられる主なSCSIコマンドの一覧表である。 各SCSIコマンドで共通に使用されるSRB(SCSI Request Block)のパケットフォーマットの説明図である。 クライアントPCとストレージ間のデータ通信の大まかな流れの説明図である。 第一の実施の形態におけるクライアントPCのセッションの制御動作を示すフローチャートである。 クライアントPCの状態遷移図である。 第一の実施の形態におけるデバイスサーバのセッションの制御動作を示すフローチャートである。 デバイスサーバの状態遷移図である。 第一の実施の形態における一台のクライアントPCがストレージにアクセスするときの過程を示したタイミングチャートである。 第一の実施の形態における複数台のクライアントPCがストレージにアクセスするときの過程を示したタイミングチャートである。 第二の実施の形態におけるクライアントPCのセッションの制御動作を示すフローチャートである。 従来技術において、ネットワーク上のストレージにアクセスするとき、クライアントPCのユーティリティを操作してセッションを制御するときの動作を示すフローチャートである。 従来技術において、複数台のクライアントPCがストレージにアクセスする場合の過程を示すタイミングチャートである。
符号の説明
100A,100B:クライアントPC
101:CPU
102:入力部
103:表示部
104:メモリ
105:通信部
106:外部記憶部
107:内部バス
110:OS
111:アプリケーションプログラム
112:SCSIコマンド層
113:フィルタドライバ層
114:USBドライバ層
115:ネットワークプロトコル層
116:ネットワークインターフェース層
200: デバイスサーバ
201:CPU
202:入力部
203:表示部
204:ROM
205:RAM
206:通信部
207:USBI/F(USBインターフェース)
208:内部バス
210:OS
211:制御プログラム
212:通信層
213:USBコマンド層
300:ストレージ
400:接続ケーブル
500:ネットワーク

Claims (23)

  1. ネットワークを介してサーバに接続されたデバイスとの間でデータの入出力を行うクライアントであって、
    前記クライアント全体を制御するとともに前記デバイスへのアクセスを指示する上位層と、
    前記上位層からの指示に応じて第一の制御コマンドまたは第二の制御コマンドを生成する制御コマンド生成手段と、
    前記制御コマンド生成手段で生成された前記第一の制御コマンドまたは前記第二の制御コマンドに基づき、前記サーバとのセッションを制御するセッション制御手段と、
    を備え、
    前記セッション制御手段は、
    前記制御コマンド生成手段によって前記第一の制御コマンドまたは前記第二の制御コマンドが生成されると前記サーバに対してセッション開始要求を送るセッション開始要求手段と、
    当該セッション開始要求に対する応答に基づき前記サーバとセッションを開始するセッション開始手段と、
    前記サーバとセッション接続中、前記第一の制御コマンドに基づきデバイスとの間でデータの入出力を行うデータ入出力手段と、
    前記サーバとセッション接続中、前記第二の制御コマンドを前記サーバに対して定期的に送り当該セッションの接続状態を確認するセッション接続状態確認手段と、
    前記サーバから受信した当該第二の制御コマンドに対する応答が所定条件を満たすとき、当該セッションを切断するセッション切断手段と、
    当該セッションの切断後、前記制御コマンド生成手段で生成された前記第二の制御コマンドを前記サーバに対して送らず、当該第二の制御コマンドに対する応答を擬似生成して、前記上位層に通知する擬似応答手段
    とから構成されることを特徴とするクライアント。
  2. 前記セッション開始要求手段は、前記セッションの切断後、前記制御コマンド生成手段で生成される制御コマンドが前記第一の制御コマンドである場合、前記サーバに対してセッション開始要求を送ること
    を特徴とする請求項1に記載のクライアント。
  3. 前記所定条件とは、前記第二の制御コマンドに対する成功応答が規定回数連続したか否かであること
    を特徴とする請求項1に記載のクライアント。
  4. 前記所定条件とは、前記第二の制御コマンドに対する成功応答が規定時間連続したか否かであること
    を特徴とする請求項1に記載のクライアント。
  5. 前記第一の制御コマンドは、前記デバイスとの間でデータの入出力を行うためのコマンドであり、前記第二の制御コマンドは、前記デバイスが利用可能か否かを確認するためのコマンドであること
    を特徴とする請求項1に記載のクライアント。
  6. 前記セッション制御手段は、前記所定条件を変更するための所定条件変更手段を更に有すること
    を特徴とする請求項1に記載のクライアント。
  7. 前記セッション接続状態確認手段は、他のクライアントからのセッション開始要求の有無を前記サーバから受信し、前記所定条件変更手段は、当該セッション開始要求の有無に応じて前記所定条件を変更すること
    を特徴とする請求項6に記載のクライアント。
  8. デバイスと、サーバと、ネットワークを介して前記サーバに接続された前記デバイスとの間でデータの入出力を行うクライアントから構成されるデバイス共有システムにおいて、
    前記クライアントは、
    前記クライアント全体を制御するとともに前記デバイスへのアクセスを指示する上位層と、
    前記上位層からの指示に応じて第一の制御コマンドまたは第二の制御コマンドを生成する制御コマンド生成手段と、
    前記制御コマンド生成手段で生成された前記第一の制御コマンドまたは前記第二の制御コマンドに基づき、前記サーバとのセッションを制御するセッション制御手段と、
    を備え、
    前記セッション制御手段は、
    前記制御コマンド生成手段によって前記第一の制御コマンドまたは前記第二の制御コマンドが生成されると前記サーバに対してセッション開始要求を送るセッション開始要求手段と、
    当該セッション開始要求に対する応答に基づき前記サーバとセッションを開始するセッション開始手段と、
    前記サーバとセッション接続中、前記第一の制御コマンドに基づきデバイスとの間でデータの入出力を行うデータ入出力手段と、
    前記サーバとセッション接続中、前記第二の制御コマンドを前記サーバに対して定期的に送り当該セッションの接続状態を確認するセッション接続状態確認手段と、
    前記サーバから受信した当該第二の制御コマンドに対する応答が所定条件を満たすとき、当該セッションを切断するセッション切断手段と、
    当該セッションの切断後、前記制御コマンド生成手段で生成された前記第二の制御コマンドを前記サーバに対して送らず、当該第二の制御コマンドに対する応答を擬似生成して、前記上位層に通知する擬似応答手段
    とで構成されることを特徴とするデバイス共有システム。
  9. 前記クライアントは、前記セッション開始要求手段によって、前記セッションの切断後、前記制御コマンド生成手段で生成される制御コマンドが前記第一の制御コマンドである場合、前記サーバに対してセッション開始要求を送ること
    を特徴とする請求項8に記載のデバイス共有システム。
  10. 前記所定条件とは、前記第二の制御コマンドに対する成功応答が規定回数連続したか否かであること
    を特徴とする請求項8に記載のデバイス共有システム。
  11. 前記所定条件とは、前記第二の制御コマンドに対する成功応答が規定時間連続したか否かであること
    を特徴とする請求項8に記載のデバイス共有システム。
  12. 前記第一の制御コマンドは、前記デバイスとの間でデータの入出力を行うためのコマンドであり、前記第二の制御コマンドは、前記デバイスが利用可能か否かを確認するためのコマンドであること
    を特徴とする請求項8に記載のデバイス共有システム。
  13. 前記デバイスは、ストレージデバイスであること
    を特徴とする請求項8に記載のデバイス共有システム。
  14. 前記クライアントのセッション制御手段は、前記所定条件を変更するための所定条件変更手段を更に有すること
    を特徴とする請求項8に記載のデバイス共有システム。
  15. 前記クライアントは、前記セッション接続状態確認手段によって、他のクライアントからのセッション開始要求の有無を前記サーバから受信し、前記所定条件変更手段によって、当該セッション開始要求の有無に応じて前記所定条件を変更すること
    を特徴とする請求項14に記載のデバイス共有システム。
  16. 前記サーバは、セッション接続中でないクライアントからのセッション開始要求の有無の情報を管理し、前記第二の制御コマンドに対する応答に当該セッション開始要求の有無の情報を付加してセッション接続中のクライアントに送ること
    を特徴とする請求項8に記載のデバイス共有システム。
  17. 前記サーバは、前記クライアントから送られてくる前記第一の制御コマンド及び前記第二の制御コマンドのパケットのヘッダを取り外して前記デバイスに送り、又、前記デバイスからの応答のパケットに対してヘッダを付加して前記クライアントへ送ること
    を特徴とする請求項8に記載のデバイス共有システム。
  18. ネットワークを介してサーバに接続されたデバイスをクライアントによって共有するデバイス共有方法であって、
    前記クライアント全体を制御するとともに前記デバイスへのアクセスを指示する上位層からの指示に応じて第一の制御コマンドまたは第二の制御コマンドを生成する制御コマンド生成ステップと、
    前記制御コマンド生成ステップで生成された前記第一の制御コマンドまたは前記第二の制御コマンドに基づき、前記サーバとのセッションを制御するセッション制御ステップと、
    を実行し、
    前記セッション制御ステップでは、
    前記制御コマンド生成ステップによって前記第一の制御コマンドまたは前記第二の制御コマンドが生成されると前記サーバに対してセッション開始要求を送るセッション開始要求ステップと、
    当該セッション開始要求に対する応答に基づき前記サーバとセッションを開始するセッション開始ステップと、
    前記サーバとセッション接続中、前記第一の制御コマンドに基づきデバイスとの間でデータの入出力を行うデータ入出力ステップと、
    前記サーバとセッション接続中、前記第二の制御コマンドを前記サーバに対して定期的に送り当該セッションの接続状態を確認するセッション接続状態確認ステップと、
    前記サーバから受信した当該第二の制御コマンドに対する応答が所定条件を満たすとき、当該セッションを切断するセッション切断ステップと、
    当該セッションの切断後、前記制御コマンド生成ステップで生成された前記第二の制御コマンドを前記サーバに対して送らず、当該第二の制御コマンドに対する応答を擬似生成して、前記上位層に通知する擬似応答ステップ
    を実行することを特徴とするデバイス共有方法。
  19. 前記セッション開始要求ステップは、前記セッションの切断後、前記制御コマンド生成手段で生成される制御コマンドが前記第一の制御コマンドである場合、前記サーバに対してセッション開始要求を送るステップを実行すること
    を特徴とする請求項18に記載のデバイス共有方法。
  20. 前記セッション切断ステップの所定条件とは、前記第二の制御コマンドに対する成功応答が規定回数連続したか否かであること
    を特徴とする請求項18に記載のデバイス共有方法。
  21. 前記セッション切断ステップの所定条件とは、前記第二の制御コマンドに対する成功応答が規定時間連続したか否かであること
    を特徴とする請求項18に記載のデバイス共有方法。
  22. 前記セッション制御ステップは、更に、前記所定条件を変更する所定条件変更ステップを有すること
    を特徴とする請求項18に記載のデバイス共有方法。
  23. 前記セッション接続状態確認ステップにおいて、他のクライアントからのセッション開始要求の有無を前記サーバから受信するステップを更に実行し、前記所定条件変更ステップによって、当該セッション開始要求の有無に応じて前記所定条件の変更を実行すること
    を特徴とする請求項22に記載のデバイス共有方法。
JP2008268916A 2008-10-17 2008-10-17 デバイス共有システム、デバイス共有クライアント、およびデバイス共有方法 Expired - Fee Related JP5470518B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008268916A JP5470518B2 (ja) 2008-10-17 2008-10-17 デバイス共有システム、デバイス共有クライアント、およびデバイス共有方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008268916A JP5470518B2 (ja) 2008-10-17 2008-10-17 デバイス共有システム、デバイス共有クライアント、およびデバイス共有方法

Publications (3)

Publication Number Publication Date
JP2010097492A true JP2010097492A (ja) 2010-04-30
JP2010097492A5 JP2010097492A5 (ja) 2011-10-27
JP5470518B2 JP5470518B2 (ja) 2014-04-16

Family

ID=42259117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008268916A Expired - Fee Related JP5470518B2 (ja) 2008-10-17 2008-10-17 デバイス共有システム、デバイス共有クライアント、およびデバイス共有方法

Country Status (1)

Country Link
JP (1) JP5470518B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08204704A (ja) * 1995-01-23 1996-08-09 Nec Corp 通信装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08204704A (ja) * 1995-01-23 1996-08-09 Nec Corp 通信装置

Also Published As

Publication number Publication date
JP5470518B2 (ja) 2014-04-16

Similar Documents

Publication Publication Date Title
JP5424856B2 (ja) 画像形成装置及びその省電力制御方法とプログラム
EP2728459B1 (en) Image Processing System
JP5124779B2 (ja) デバイス共有システム、デバイス共有クライアント、及びデバイス共有方法
US20110128391A1 (en) Data reproducing apparatus, content management method, program, and storage medium
JP6140937B2 (ja) ネットワークデバイス、プログラム、システムおよび方法
US9596121B2 (en) Server apparatus communicating with a client apparatus via the internet, system, and control method thereof
JP2008017446A (ja) デバイス装置および接続制御方法
CN102597974B (zh) 装置控制设备、客户端设备、装置控制方法和装置控制系统
US20150295994A1 (en) System and method for accessing disk image files using html5 kvm/vmedia client running in a web browser
JP2013168101A (ja) 印刷制御装置、印刷システム、印刷制御装置の制御方法、及びプログラム
JP5581470B2 (ja) デバイス共有システム、デバイス共有サーバ、デバイス共有クライアント、およびデバイス共有方法
JP5833880B2 (ja) 情報処理装置、デバイス制御装置、デバイス制御システム、およびその制御方法
JP5348576B2 (ja) デバイス共有クライアント及びデバイス共有方法
JP5470518B2 (ja) デバイス共有システム、デバイス共有クライアント、およびデバイス共有方法
US6697895B1 (en) Network attached tape storage system
JP2017151961A (ja) (ipp上の)デバイス制御プロトコル
JP2007317067A (ja) ネットワークファイル管理システム、デバイスサーバおよびファイル伝送方法
JP2009163361A (ja) 通信装置、通信システム、通信方法及びプログラム
JP2014215896A (ja) アクセス制御装置、アクセス制御方法、及びアクセス制御プログラム
JP6019586B2 (ja) ネットワーク通信装置
JP6907365B2 (ja) システム
JP2021170346A (ja) システム
JP2003015846A (ja) 画像印刷システム、印刷制御端末装置、接続メディア変換装置、印刷制御方法、印刷制御プログラムおよび接続メディア変換プログラム
JP2007150390A (ja) 通信装置
CN113270183A (zh) 管理治疗计划数据的方法和系统以及数据交换设备

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110913

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131007

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131210

R150 Certificate of patent or registration of utility model

Ref document number: 5470518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees