説明

セッション管理方法、ストレージ装置、及び、計算機システム

【課題】セッションの長時間維持によるセキュリティリスクを低減する。
【解決手段】イニシエータと、イニシエータにネットワークを介して接続されるストレージ装置とを含む計算機システムで、イニシエータは、ストレージ装置との間で、所定の第1期間、データが入出力されない場合には、イニシエータとストレージ装置とのセッションの状態を診断するヘルスチェックを実行し、ストレージ装置との間で、所定の第2期間、データが入出力されない場合には、ヘルスチェックを実行するタイミングで、ストレージ装置とのセッションを切断し、さらに、再接続する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して接続されるストレージ装置とのセッションを管理する技術に関する。
【背景技術】
【0002】
iSCSI(internet SCSI)は、記憶装置と計算機との通信に使用するSCSIコマンドをIPネットワーク経由で送受信する技術である(非特許文献1参照)。
【0003】
iSCSIでは、通常、イニシエータとターゲットとの間で、iSCSIセッションを長時間維持する。iSCSIセッションは、TCP(Transmission Control Protocol)コネクション(セッションと呼ぶ場合もある)によって構成される。TCPコネクションは、長時間維持されると、攻撃者の偽造されたTCPセグメントによって通信中のコネクションが切断されたり、データが挿入されたりする可能性がある(非特許文献2)。非特許文献2には、長時間TCPコネクションを維持する例として、BGP(Border Gateway Protocol)を利用することが挙げられている。しかし、BGPのTCPコネクションが切断された場合には、ルーティングテーブルの再構築などが必要となり、可用性の面で影響範囲が広いことが懸念されている。
【0004】
iSCSIでは、TCPコネクションが切断された場合には、イニシエータが再接続を実施し、後に、イニシエータとターゲット間で、SCSIコマンド及びSCSIデータを再送することで回復が可能であるが、データ損失が発生する可能性がある。
【非特許文献1】J.Satran,et al.,"Internet Small Computer Systems Interface(iSCSI)",[online],IETF RFC3720,April 2004,[retrieved 2008-02-22],Retrieved from the internet:<URL:http://www.ietf.org/rfc/rfc3720.txt>
【非特許文献2】“TCPプロトコルに潜在する信頼性の問題”、[online]、2004年7月16日、JPCERTコーディネーションセンター、[平成20年2月22日検索]、インターネット<URL:http://www.jpcert.or.jp/at/2004/at040003.txt>
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、非特許文献2には、長時間維持されるTCPコネクションに対し、TCPのMD5(Message Digest 5)認証オプション又はIPsec(IP Security)を用いる方法が紹介されている。また、スイッチ及びルータのパケットフィルタリング機能によって、正しい送信元からのTCPセグメントだけを通すことによって、攻撃者による偽装されたTCPセグメントをフィルタリングする方法も示している。
【0006】
従来技術では、製品にMD5認証オプション又はIPsecを実装したり、ネットワーク機器へのパケットフィルタリングを設定したりする必要があるため、開発又は設定の工数が増大するという課題がある。また、実際にこれらの機能を実装したり、パケットフィルタリングを設定することによって、性能が低下する場合があるという課題もある。
【課題を解決するための手段】
【0007】
本発明の一形態では、イニシエータと、前記イニシエータにネットワークを介して接続されるストレージ装置とを含む計算機システムにおけるセッション管理方法であって、前記イニシエータは、前記ネットワークに接続される第1インタフェース、前記第1インタフェースに接続される第1メモリ、及び、前記第1メモリに接続される第1プロセッサを備え、前記ストレージ装置は、前記ネットワークに接続される第2インタフェース、前記第2インタフェースに接続される第2メモリ、及び、前記第2メモリに接続される第2プロセッサを備え、前記イニシエータは、前記ストレージ装置との間で、所定の第1期間、データが入出力されない場合には、前記イニシエータと前記ストレージ装置とのセッションの状態を診断するヘルスチェックを実行し、前記ストレージ装置との間で、所定の第2期間、データが入出力されない場合には、前記ヘルスチェックを実行するタイミングで、前記ストレージ装置とのセッションを切断し、さらに、再接続する。
【発明の効果】
【0008】
本発明の代表的な一形態によれば、セッションを切断し、さらに、再接続することによって(リフレッシュ)、接続の長時間維持を防止し、セキュリティを向上させることができる。
【発明を実施するための最良の形態】
【0009】
以下に、本発明の実施の形態について図面を用いて説明する。
【0010】
(第1の実施の形態)
図1は、本発明の第1の実施の形態の計算機システムの構成の一例を示す図である。
【0011】
本発明の第1の実施の形態の計算機システムは、ホスト101、ストレージ103、ストレージ105、及び、管理端末106を含む。
【0012】
ホスト101は、ストレージ103に格納されたデータを利用して業務処理を実行する。ホスト101は、ストレージ103に接続するインタフェースを備え、プロセッサ171、メモリ172、データ転送制御部173、及び、ポート制御部174を含む。
【0013】
プロセッサ171は、メモリ172に格納されたプログラムを実行することによって、各種処理を実行する。メモリ172は、プロセッサ171によって実行されるプログラム及び当該プログラムの実行に使用されるデータを記憶する。データ転送制御部173及びポート制御部174は、ストレージ103とのデータの送受信を制御する。
【0014】
ホスト101のメモリ172には、オペレーティングシステム(OS)156、データ送受信制御155、TCP/IP制御154、iSCSI制御153、SCSI制御152、及び、SCSIアプリケーション151などのプログラムを格納する。各プログラムの説明は、図2にて後述する。
【0015】
ホスト101は、ストレージ103にコマンドを送信してデータを送受信するイニシエータとして動作する。
【0016】
ストレージ103は、SAN102を介してホスト101に接続する。一般的に、SAN102は、スイッチ(図示せず)などによって構成されるネットワークであって、ファイバチャネル又はイーサネット(「イーサネット」は登録商標、以下同じ)などによって接続される。
【0017】
また、ストレージ103は、拠点内又は拠点間ネットワーク104を介してストレージ105に接続する。ストレージ105は、例えば、ストレージ103に格納されたデータのバックアップデータを格納する。なお、ストレージ105の構成は、以下に説明するストレージ103の構成と同様である。
【0018】
ストレージ103は、インタフェース(以下、「IF」)制御部110、管理IF制御部120、メモリ130、及び、ディスクIF制御部140を備える。
【0019】
IF制御部110は、ホスト101又はストレージ105とのインタフェースを備える。ここで、ホスト101に接続するIF制御部110をIF制御部110Aとし、ストレージ105に接続するIF制御部110をIF制御部110Bとする。なお、IF制御部110に含まれる構成についても数字の後にA又はBを追加した符号としているが、特に断らない限り、A又はBの符号を省略して説明する。
【0020】
IF制御部110Aは、ホスト101からコマンドを受け付けてデータを送受信するターゲットとして動作する。一方、IF制御部110Bは、ストレージ105にコマンドを送信してデータを送受信するイニシエータとして動作する。
【0021】
IF制御部110は、プロセッサ111、メモリ112、データ転送処理部113、及び、ポート制御部114を含む。
【0022】
プロセッサ111は、データの管理及びデータの送受信を制御するプログラムを実行する。IF制御部110のメモリ112は、プロセッサ111によって実行されるプログラム及び当該プログラムによって使用されるデータを格納する。メモリ112には、ホスト101のメモリ172と同様に、オペレーティングシステム(OS)156、データ送受信制御155、TCP/IP制御154、iSCSI制御153、SCSI制御152、及び、SCSIアプリケーション151などが格納される。
【0023】
管理IF制御部120は、管理端末106と接続し、管理端末106から入力された管理情報及び指示を受信する。管理IF制御部120には、ストレージ管理情報160が記憶される。具体的には、パス管理情報161、iSCSIセッション設定情報162などが格納される。
【0024】
メモリ130には、キャッシュメモリ(図示せず)及び共有メモリ(図示せず)が含まれる。キャッシュメモリは、ホスト101と送受信するデータを一次的に格納する領域である。共有メモリは、ストレージ103の制御情報及び構成情報を格納する。
【0025】
ディスクIF制御部140は、データを読み書きする処理を制御し、ホスト101と送受信するデータを格納する複数のディスク141に接続する。
【0026】
管理端末106は、ストレージ103に指示を送信し、制御情報及び構成情報を格納する。
【0027】
図2は、本発明の第1の実施の形態のホスト101又はストレージ103のメモリ112に格納されるプログラム及び管理情報の詳細を示す図である。
【0028】
ストレージ103のメモリ112は、前述したように、OS156、データ送受信制御155、TCP/IP制御154、iSCSI制御153、SCSI制御152、及び、SCSIアプリケーション151を格納する。
【0029】
OS156は、計算機資源を管理及び制御する基本ソフトウェアである。データ送受信制御155及びTCP/IP制御154は、他のホスト又はストレージと情報を送受信するためのプログラムである。
【0030】
iSCSI制御153は、SCSIコマンド及びデータをIPパケットとして送受信するためのプログラムである。iSCSI制御153は、イニシエータ制御203及びターゲット制御204が主な処理となる。
【0031】
イニシエータ制御203では、ターゲットにSCSIコマンドを送信する。また、ターゲット制御204では、イニシエータから送信されたSCSIコマンドを受信し、データの読み書きなどの指示されたコマンドを実行する。したがって、ホスト101は、通常、イニシエータ制御203のみを有していればよい。
【0032】
また、iSCSI制御153には、iSCSIセッションを管理するiSCSIセッション管理205及びiSCSIセッション管理テーブル206を備える。iSCSIセッション管理205は、イニシエータ制御203及びターゲット制御204の一部の処理としてもよい。
【0033】
さらに、iSCSI制御153は、ヘルスチェック制御207を備える。ヘルスチェック制御207は、iSCSIセッションの接続の正常性をチェックするためのプログラムであって、ヘルスチェック用iSCSIコマンド送受信制御208、及び、iSCSIセッションを再接続するためのiSCSIセッションリフレッシュ処理209を含む。
【0034】
SCSI制御152とiSCSI制御153との間には、SCSIコマンド及びデータをやりとりするためのSCSI要求キュー201及びSCSI応答キュー202を備えている。さらに、SCSIコマンドによって読み書きされるデータを一時的に格納するデータバッファ212を備える。SCSI要求キュー201又はSCSI応答キュー202は、SCSIコマンド及び対応するデータを格納する場合に、データバッファ212にSCSIデータ213を格納し、当該SCSIデータ213を参照するコマンド210を格納する。また、SCSI要求キュー201及びSCSI応答キュー202のコマンド格納状態を管理するためのSCSIキュー状態テーブル211を備える。
【0035】
SCSIアプリケーション151は、ストレージ103又はストレージ105に対してデータを読み書きするプログラムであって、ホスト101では、例えば、メールサーバ又はデータベースサーバなどである。ストレージ103又はストレージ105におけるSCSIアプリケーション151とは、複数のディスク141によって構成される論理ボリュームのストレージ内でのデータコピー、又は、ストレージ間でのデータコピーを実行するアプリケーションが一例である。また、ホスト101とストレージ103との間、又は、ストレージ103とストレージ105との間の接続の正常性を確認するためのヘルスチェック制御200を備える場合がある。
【0036】
図3は、本発明の第1の実施の形態のiSCSIセッションのリフレッシュを指示するための設定画面の一例を示す図である。
【0037】
iSCSIリフレッシュ設定画面300は、ストレージ又はシステムの管理者から、iSCSIセッションのリフレッシュの実施指示を受け付ける画面であって、管理端末106又はホスト101に表示される。
【0038】
iSCSIリフレッシュ設定画面300には、リフレッシュ実行指定部(301、302)、リフレッシュ方法設定部(303、304)、リフレッシュ頻度設定部(305、306、307)、及び、強制的リフレッシュ実行部(308、309)を含む。
【0039】
リフレッシュ実行指定部では、iSCSIセッションのリフレッシュを実行するか否かを設定する。所定のタイミングでiSCSIセッションのリフレッシュを実行する場合には、「ON」が設定される。
【0040】
リフレッシュ方法設定部では、iSCSIセッションのリフレッシュを実行するタイミングを設定する。図3では、「ヘルスチェック発行時」又は「マルチTCPコネクション時」を設定することができる。リフレッシュを実行する各タイミングについては、それぞれ後述する。
【0041】
リフレッシュ頻度設定部では、リフレッシュを実行する頻度を設定する。例えば、ヘルスチェックがH回実行されるたびにリフレッシュを実行するように設定する(306)。さらに、ヘルスチェックの実行間隔(T秒ごと)も設定可能である(307)。
【0042】
強制リフレッシュ実行部は、実行ボタン309を操作することによって、強制的にリフレッシュを実行する。この場合には、SCSIコマンドによる処理は中断され、リフレッシュ完了後、コマンドの再送信などが実行され、処理が再開される。
【0043】
図4は、本発明の第1の実施の形態のiSCSIセッション管理テーブル206の一例を示す図である。
【0044】
iSCSIセッション管理テーブル206には、iSCSIセッションの管理情報が格納される。iSCSIセッション管理テーブル206は、iSCSIセッション401、TCPコネクション404、及び、可能なリフレッシュ方法411を含む。
【0045】
iSCSIセッション401は、セッションID402及びセッション状態403を含む。セッションID402は、iSCSIセッションを識別するための識別子である。セッション状態403は、iSCSIセッションの状態である。
【0046】
TCPコネクション404は、コネクションID405、送信元IPアドレス406、送信元TCPポート407、送信先IPアドレス408、送信先TCPポート409、及び、コネクション状態410を含む。
【0047】
コネクションID405は、TCPコネクションを識別するための識別子である。送信元IPアドレス406及び送信元TCPポート407は、送信元を特定する情報である。送信先IPアドレス408及び送信先TCPポート409は、送信先を特定する情報である。なお、送信先TCPポート409の値は、iSCSIの場合には、通常、“3260”となるが、それ以外の値であってもよい。
【0048】
コネクション状態410は、TCPコネクションの状態である。可能なリフレッシュ方法411は、iSCSIセッション401ごとに実行可能なリフレッシュ方法を、iSCSIセッションリフレッシュ処理209に指示するための情報を格納する。具体的には、図3のリフレッシュ方法設定部で設定可能な「ヘルスチェック発行時」又は「マルチTCPコネクション時」が設定される。
【0049】
図5から図7は、iSCSI制御153に含まれるヘルスチェック制御207が実行されるタイミングを示す図である。ヘルスチェック制御207は、通常、OSから周期的に実行されるように設定される。
【0050】
図5は、本発明の第1の実施の形態の周期的にヘルスチェック制御が実行される手順を示すフローチャートである。
【0051】
本処理は、イニシエータからターゲットに対してヘルスチェック用のiSCSIコマンドを送信するタイミングで、周期的に実行される。なお、ターゲットからイニシエータに対してヘルスチェック用のiSCSIコマンドが送信されてもよい。
【0052】
本発明の第1の実施の形態では、ヘルスチェック制御が100ms間隔でOSから呼び出される(ステップ501)。例えば、ホスト101のSCSIアプリケーション151によって、ストレージ103にヘルスチェック用のiSCSIコマンドが送信される。
【0053】
ストレージ103のIF制御部110Aのプロセッサ111Aは、ヘルスチェック用のiSCSIコマンドを受信すると、ヘルスチェック制御207を実行する(ステップ502)。
【0054】
図6は、本発明の第1の実施の形態のヘルスチェック応答受信時にヘルスチェック制御が実行される手順を示すフローチャートである。
【0055】
本処理は、ヘルスチェック用のiSCSIコマンドが送信された後、送信先からの応答を受信した場合に実行される(ステップ601、ステップ602)。
【0056】
さらに、ヘルスチェック制御207は、ヘルスチェック用のiSCSIコマンドの応答を待機するためのタイマがタイムアウトした場合に実行される。
【0057】
図7は、本発明の第1の実施の形態のヘルスチェック応答を待機している間にタイムアウトした場合にヘルスチェック制御が実行される手順を示すフローチャートである。
【0058】
ヘルスチェック用のiSCSIコマンドが送信されると、送信元は、送信先から応答されるまでの間の待機時間を計測するタイマを開始する。タイマによって計測された時間が所定の時間を超えた場合にはタイムアウトとし(ステップ701)、ヘルスチェック制御を実行する(ステップ702)。
【0059】
図8は、本発明の第1の実施の形態のヘルスチェック制御207の手順を示すフローチャートである。
【0060】
ヘルスチェック制御は、前述したように、ホスト101で実行されてもよいし、ストレージ103で実行されてもよい。本発明の第1の実施の形態では、ホスト101でヘルスチェック制御が実行されるものとして以下説明する。
【0061】
ホスト101のプロセッサ171は、最初にヘルスチェック制御の起動形態に対応する処理種別を判定する(ステップ801)。図5から図7に示したように、ヘルスチェック制御207は3種類の契機で実行されるため、それぞれに対応する処理種別に基づいて処理を分岐させる。
【0062】
ホスト101のプロセッサ171は、処理種別がOSからの周期的な起動の場合には(ステップ801の結果が「OSから周期起動」)、まず、リフレッシュ方法の種類を判定する(ステップ802)。
【0063】
ホスト101のプロセッサ171は、リフレッシュ方法がヘルスチェック発行時の場合には(ステップ802の結果が「ヘルスチェック発行時」)、SCSIキュー状態テーブル211を参照し、SCSIコマンドキューが空き状態か否かを判定する(ステップ803)。なお、ヘルスチェック発行時の場合にはリフレッシュなしの場合も含まれる。また、図3のリフレッシュ方法設定部で、「ヘルスチェック発行時」及び「マルチTCPコネクション時」の両方が選択されている場合には、「マルチTCPコネクション時」が選択される。リフレッシュ処理後、ヘルスチェックを実行するための処理(ステップ803以降の処理)が実行されるためである。
【0064】
ホスト101のプロセッサ171は、SCSIコマンドキューが空き状態でない場合には(ステップ803の結果が「NO」)、ストレージ103に対するデータの入出力が実行されている状態であるため、I/Oなし期間カウント用カウンタNの値に0を設定する(ステップ815)。
【0065】
ホスト101のプロセッサ171は、SCSIコマンドキューが空き状態の場合には(ステップ803の結果が「YES」)、I/Oなし期間カウント用カウンタNの値に1を加算する(ステップ804)。I/Oなし期間カウント用カウンタNは、メモリ172に一時的に記憶される変数である。また、カウンタNは、初期化処理(図示せず)において、0に設定されているものとする。
【0066】
ホスト101のプロセッサ171は、リフレッシュを実行するか否かを判定する(ステップ805A)。図3に示したiSCSIリフレッシュ設定画面300で、ヘルスチェックが実行間隔をT秒ごとで、H回のヘルスチェックごとにリフレッシュが実行されるように設定された場合について説明する。
【0067】
まず、OSから周期的に起動されるヘルスチェックは、前述したように起動間隔が100msである。したがって、カウンタNを10で除算した値(N/10)が、SCSIコマンドキューで空き状態が継続している秒数になる。また、ヘルスチェックの実行間隔は、T秒であるため、N/10の値がTの倍数ごとにヘルスチェックが実行される。換言すると、Nの値が10×Tの倍数に到達するたびにヘルスチェックが実行される。さらに、H回のヘルスチェックごとにリフレッシュが実行されるため、Nの値が10×T×Hの倍数に到達するごとにリフレッシュが実行される。したがって、ステップ805Aに記載したように、Nの値を10×T×Hで除算した余りが0となった場合に、リフレッシュが実行される。
【0068】
ホスト101のプロセッサ171は、リフレッシュを実行すると判定した場合には(ステップ805Aの結果が「YES」)、iSCSIセッションリフレッシュ処理A806を実行する(ステップ806)。iSCSIセッションリフレッシュ処理Aの手順については、図9にて後述する。
【0069】
ホスト101のプロセッサ171は、リフレッシュを実行しないと判定した場合(ステップ805Aの結果が「NO」)、ヘルスチェックを実行するか否かを判定する(ステップ805B)。
【0070】
ホスト101のプロセッサ171は、ヘルスチェックを実行すると判定した場合(ステップ805Bの結果が「YES」)、又は、iSCSIセッションリフレッシュ処理Aの実行が完了した場合には、SCSIアプリケーション151に含まれるヘルスチェック制御207を実行し、ヘルスチェック用SCSIコマンドを送信する(ステップ807)。なお、ステップ807のヘルスチェック用SCSIコマンドは、ホスト101とストレージ103との間で送信されずに機器を提供するベンダ特有のSCSIコマンドが送信される場合があるため、ステップ807の処理は破線で記載されている。
【0071】
ホスト101のプロセッサ171は、TCPコネクションごとに、ヘルスチェック用iSCSIコマンドを送信する(ステップ808)。さらに、TCPコネクションごとに、ヘルスチェック用のiSCSIコマンドの応答を待機するためのヘルスチェック応答待ちタイマを起動する(ステップ809)。
【0072】
ホスト101のプロセッサ171は、リフレッシュ方法をマルチTCPコネクション時と判定した場合には(ステップ802の結果が「マルチTCPコネクション時」)、iSCSIセッションリフレッシュ処理Bを実行する(ステップ830)。iSCSIセッションリフレッシュ処理Bの手順については、図10にて後述する。なお、ヘルスチェックを実行するために、iSCSIセッションリフレッシュ処理Bが完了した後、ステップ803以降の処理を実行する。ヘルスチェックを実行しない場合には、そのまま本処理を終了してもよい。
【0073】
ホスト101のプロセッサ171は、ヘルスチェックを実行しないと判定した場合には(ステップ805Bの結果が「NO」)、本処理を終了する。
【0074】
ホスト101のプロセッサ171は、処理種別がヘルスチェック応答受信による起動の場合には(ステップ801の結果が「ヘルスチェック応答受信」)、iSCSIセッション管理テーブル206のTCPコネクション404の該当TCPコネクション状態410の値を「正常」とする(ステップ810)。さらに、iSCSIセッション401の該当iSCSIセッション状態403を正常とする(ステップ811)。最後に、ヘルスチェック応答待ちタイマをクリアし(ステップ812)、本処理を終了する。
【0075】
ホスト101のプロセッサ171は、ヘルスチェック応答待ちタイマタイムアウトによる起動の場合には(ステップ801の結果が「ヘルスチェック応答受信」)、iSCSIセッション管理テーブル206のTCPコネクション404の該当TCPコネクション状態410の値を「障害」とする(ステップ820)。
【0076】
さらに、ホスト101のプロセッサ171は、iSCSIセッション401に正常なTCPコネクション404が存在するか否かを判定する(ステップ821)。
【0077】
ホスト101のプロセッサ171は、iSCSIセッション401に正常なTCPコネクション404が存在する場合には(ステップ821の結果が「YES」)、iSCSIセッション401の該当iSCSIセッション状態403の値を「正常」とする(ステップ822)。さらに、障害となっているTCPコネクションを再接続するTCP再接続処理(図示せず)を実行し(ステップ823)、本処理を終了する。
【0078】
ホスト101のプロセッサ171は、iSCSIセッション401内に他の正常なTCPコネクション404が存在しない場合には(ステップ821の結果が「NO」)、iSCSIセッション401の該当iSCSIセッション状態403の値を「障害」とする(ステップ824)。さらに、障害となっているiSCSIセッションに再度ログインするiSCSI再ログイン処理(図示せず)を実行し(ステップ825)、本処理を終了する。
【0079】
図9は、本発明の第1の実施の形態のiSCSIセッションリフレッシュ処理A806の手順を示すフローチャートである。
【0080】
ホスト101のプロセッサ171は、図3で示したiSCSIリフレッシュ設定画面300によって、iSCSIリフレッシュの実行が「ON」、かつ、ヘルスチェック発行時にリフレッシュを実行するように設定されているか否かを判定する(ステップ901)。ヘルスチェック発行時にリフレッシュを実行するように設定されているか否かを判定することによって、ヘルスチェック発行時のリフレッシュを実行せずに、ヘルスチェックのみvを実行する場合に対応することができる。
【0081】
ホスト101のプロセッサ171は、ヘルスチェック発行時にリフレッシュを実行するように設定されている場合には(ステップ901の結果が「YES」)、リフレッシュ該当iSCSIセッションをログアウトする(ステップ901)。さらに、iSCSIセッションに再度ログインし(ステップ902)、iSCSIセッションを再接続(リフレッシュ)する。
【0082】
ホスト101のプロセッサ171は、ヘルスチェック発行時にリフレッシュを実行するように設定されていない場合には(ステップ901の結果が「NO」)、本処理を終了する。
【0083】
図10は、本発明の第1の実施の形態のiSCSIセッションリフレッシュ処理B830の手順を示すフローチャートである。
【0084】
ホスト101のプロセッサ171は、リフレッシュを実行するか否かを判定する(ステップ1001)。本処理では、T秒ごとにリフレッシュが実行されるように設定されている場合について説明する。OSから周期的に起動されるヘルスチェックは、前述したように起動間隔が100msであるため、本処理が呼び出されるたびにカウンタMに1が加算された場合、T秒経過後のカウンタMの値は10×Tになる。したがって、カウンタMの値が10×T以上の値になった場合に、リフレッシュを実行すればよい。また、カウンタMは、初期化処理(図示せず)において、0に設定されているものとする。
【0085】
ホスト101のプロセッサ171は、カウンタMの値が10×T未満の場合には(ステップ1001の結果が「NO」)、カウンタMに1を加算し(ステップ1006)、本処理を終了する。
【0086】
ホスト101のプロセッサ171は、カウンタMの値が10×T以上になった場合には(ステップ1001の結果が「YES」)、iSCSIセッションの状態が正常であるか否かを判定する(ステップ1002)。具体的には、iSCSIセッション管理テーブル206を参照し、該当するiSCSIセッション401のiSCSIセッション状態403が「正常」、かつ、該当iSCSIセッションに含まれる全TCPコネクション404のTCPコネクション状態410が「正常」であるか否かを判定する。
【0087】
ホスト101のプロセッサ171は、iSCSIセッションの状態、及び、当該iSCSIセッションに含まれる全TCPコネクション404の状態が正常である場合には(ステップ1002の結果が「YES」)、TCPコネクション404のコネクションID405が最小のTCPコネクションを切断する(ステップ1003)。さらに、TCPコネクション404に含まれるコネクションID405が最大の値に1を加算した値を新たにコネクションID405としてTCPコネクションを接続(確立)する(ステップ1004)。さらに、カウンタMを0に設定し(ステップ1005)、本処理を終了する。なお、iSCSIセッション管理テーブル206では、コネクションID405の値が「C11」、「C12」のように示されているが、コネクションID405の最小及び最大の判定は数字の部分について行う。
【0088】
図11から図13は、ホスト101、ストレージ103及びストレージ105の間で接続されるiSCSIセッション及びTCPコネクションの接続状態と、iSCSIログインからの一連の処理の一例を示した図である。
【0089】
図11は、本発明の第1の実施の形態の通常のヘルスチェック制御を実行した場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【0090】
ホスト101とストレージ103との間で、iSCSIセッション1101は、TCPコネクション1102を含む。iSCSIセッション1103及び1106は、I/Oが流れている状態を示している。I/Oが流れない期間1105では、iSCSIセッション1104にヘルスチェックを実行するためのiSCSIコマンドが送受信される。なお、ストレージ103とストレージ105との間において、iSCSIセッション1111以降の処理は、ホスト101とストレージ103の間における処理と同様である。
【0091】
図11に示すように、リフレッシュを実行しない場合には、iSCSIセッションが長時間維持されるため、セッションIDは変化しない。したがって、TCPコネクションが長時間維持され続けることによって、セキュリティリスクが大きくなる。特に、ストレージ103とストレージ105との間のように、拠点内又は拠点間のネットワークでTCPコネクションが長時間維持されると、さらにセキュリティリスクが大きくなる。
【0092】
図12は、本発明の第1の実施の形態のiSCSIリフレッシュ方法がヘルスチェック発行時の場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【0093】
ヘルスチェック発行時にiSCSIセッションをリフレッシュする場合には、I/Oが流れない期間1205にヘルスチェックを実行する前に、iSCSIセッションをログアウトし、すぐに再ログインする処理(リフレッシュ)が実行される点で図11と相違する。
【0094】
ヘルスチェック実行時にiSCSIセッションをリフレッシュすることによって、セッションIDの値が変化する様子を、図12の「Session」の次に示すアルファベットA又はBに続く数字で示している。セッションIDは、A1からA2に変化し、また、B1からB2に変化する。このように、iSCSIセッションは、長時間維持されないように、周期的にリフレッシュされる。
【0095】
図13は、本発明の第1の実施の形態のiSCSIリフレッシュ方法がマルチTCPコネクション時の場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【0096】
図13では、ホスト101とストレージ103との間、及び、ストレージ103とストレージ105との間のセッションの接続状態は同様であるため共通に示す。
【0097】
まず、iSCSIログインが実行されると、iSCSIセッション1301内に、TCPコネクションC11(ステップ1302)、及び、TCPコネクションC12を接続し(ステップ1303)、マルチTCPコネクションが確立される。
【0098】
接続されたTCPコネクションには、識別子が付与され、iSCSIセッション管理テーブル206のコネクションID405に対応する。iSCSIセッション管理テーブル206を参照することによって、iSCSIセッション1301を構成するTCPコネクションを特定することができる。
【0099】
このようなマルチTCPコネクションにおいて、ホスト101又はストレージ103からiSCSIセッション1301を介してデータが入出力される場合には、一例として、ラウンドロビンのスケジューリングによってTCPコネクションが割り振られる(ステップ1304)。
【0100】
また、iSCSIリフレッシュ設定画面300のリフレッシュ頻度305に設定された変数Tによって決定される期間1310が経過すると、TCPコネクションC11が切断され(ステップ1305)、新たにTCPコネクションC13が接続される(ステップ1306)。TCPコネクションC12に対しても、C11が切断されてから期間1310が経過すると、TCPコネクションC12が切断され(ステップ1307)、新たにTCPコネクションC14が接続される(ステップ1308)。なお、3本以上のTCPコネクションが接続されている場合に、1本以上接続された状態を維持していれば、複数のTCPコネクションを切断し、再接続してもよい。
【0101】
iSCSIセッションがマルチTCPコネクションの場合には、一つのTCPコネクションを切断しても、接続中のTCPコネクションを利用することによってデータの入出力が可能であるため、データの入出力がある場合であっても、周期的にTCPコネクションをリフレッシュすることが可能である。図13に示すように、TCPコネクションC11はコネクションIDがC13に、TCPコネクションC12はコネクションIDがC14に変化する。このように、iSCSIセッションがマルチTCPコネクションである場合であっても、iSCSIセッションを周期的にリフレッシュすることができる。
【0102】
本発明の第1の実施の形態によれば、SCSIコマンドが一定期間送受信されない期間にヘルスチェックを実行するタイミングに、iSCSIセッションを再接続(ログアウト及びログイン)することによって、iSCSIセッションをリフレッシュすることができる。iSCSIセッションをリフレッシュすることによって、TCPコネクションの長時間維持を防止することができ、セキュリティリスクを少なくすることができる。
【0103】
さらに、本発明の第1の実施の形態によれば、iSCSIセッションがマルチTCPコネクションの場合には、ヘルスチェックを実行するタイミングとは独立してiSCSIセッションをリフレッシュすることができる。
【0104】
また、本発明の第1の実施の形態によれば、MD5認証オプション、IPsecの実装、又は、ネットワーク機器へのパケットのフィルタリングの設定などを行う必要がなく、開発及び設定の工数を増大させずに、セキュリティリスクを少なくすることができる。
【0105】
(第2の実施の形態)
本発明の第2の実施の形態は、可能なリフレッシュ方法にマルチiSCSIセッションが加えられた点で第1の実施の形態と相違する。
【0106】
iSCSIセッションは、1つ又は複数のTCPコネクションによって構成されるが、イニシエータとターゲットの間は、1つのiSCSIセッションで接続するだけでなく、複数のiSCSIセッションで接続することも可能である。
【0107】
なお、第2の実施の形態において、第1の実施の形態と共通する内容については適宜説明を省略する。
【0108】
図14は、本発明の第2の実施の形態のiSCSIセッション管理テーブル206の詳細を示す図である。
【0109】
図14に示すiSCSIセッション管理テーブル206は、iSCSIセッションID402がB1(1401)とB2(1401)のiSCSIセッションによって、マルチiSCSIセッションが構成されていることを示している。
【0110】
マルチiSCSIセッションを構成するiSCSIセッションは、送信元IPアドレス406、送信先IPアドレス408及び送信先TCPポート409が一致する。また、iSCSIセッションが再接続された場合には、送信元TCPポート407が変更される。
【0111】
なお、iSCSIセッションID402がB1及びB2のiSCSIセッションによってマルチiSCSIセッションが構成されている状態で本発明の第2の実施の形態が適用されるものとする。したがって、マルチiSCSIセッションを構成するために、iSCSIセッションを選択する処理及び画面などについては割愛する。
【0112】
また、iSCSIリフレッシュ設定画面300では、図3に示した第1の実施の形態の構成に加えて、リフレッシュ方法304に「マルチiSCSIセッション時」が新たに追加される。その他の構成については同じである。
【0113】
さらに、本発明の第2の実施の形態では、図8に示した第1の実施の形態のヘルスチェック制御処理と同様にヘルスチェックが実行されるが、ステップ802の可能なリフレッシュ方法411で分岐する処理で、リフレッシュ方法304が「マルチiSCSIセッション時」である場合が追加される。この場合には、マルチiSCSIセッション用のリフレッシュ処理であるiSCSIセッションリフレッシュ処理Cを実行し、終了後、ステップ803以降の処理を実行する。iSCSIセッションリフレッシュ処理Cの手順について、図15を参照しながら説明する。
【0114】
図15は、本発明の第2の実施の形態のiSCSIセッションリフレッシュ処理Cの手順を示すフローチャートである。
【0115】
ホスト101のプロセッサ171は、リフレッシュを実行するか否かを判定する(ステップ1551)。本処理では、T秒ごとにリフレッシュが実行されるものとし、ステップ1551の処理は、図10のステップ1001の処理と同じである。また、リフレッシュを実行しない場合、すなわち、カウンタMの値が10×T未満の場合には(ステップ1551の結果が「NO」)、図10のステップ1006の処理と同様に、カウンタMに1を加算し(ステップ1556)、本処理を終了する。
【0116】
ホスト101のプロセッサ171は、リフレッシュを実行する場合、すなわち、カウンタMの値が10×T以上になった場合には(ステップ1551の結果が「YES」)、マルチiSCSIセッションを構成するすべてのiSCSIセッションの状態が正常であるか否かを判定する(ステップ1552)。具体的には、iSCSIセッション管理テーブル206を参照し、マルチiSCSIセッションを構成するiSCSIセッション401のiSCSIセッション状態403が「正常」であるか否かを判定する。
【0117】
ホスト101のプロセッサ171は、マルチiSCSIセッションを構成するすべてのiSCSIセッションの状態が正常である場合には(ステップ1552の結果が「YES」)、セッションID402が最小のiSCSIセッションをログアウトする(ステップ1553)。さらに、マルチiSCSIセッションを構成するiSCSIセッションであって、セッションID402が最大の値に1を加算した値を新たにセッションID402としてログインする(ステップ1554)。最後に、カウンタMを0に設定し(ステップ1555)、本処理を終了する。
【0118】
図16は、本発明の第2の実施の形態のiSCSIリフレッシュ方法がマルチISCSIセッション時の場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【0119】
図16では、図13と同様に、ホスト101とストレージ103との間、及び、ストレージ103とストレージ105との間のセッションの接続状態は同様であるため共通に示している。
【0120】
まず、iSCSIセッションB1(1501)及びiSCSIセッションB2(1502)それぞれについてiSCSIログインが実行され、マルチiSCSIセッションが構成される。
【0121】
このようなマルチiSCSIセッションにおいて、ホスト101又はストレージ103からデータが入出力される場合には、一例として、ラウンドロビンのスケジューリングによってiSCSIセッションが割り振られる(ステップ1503)。
【0122】
また、iSCSIリフレッシュ設定画面300のリフレッシュ頻度305に設定された変数Tによって決定される期間1510が経過すると、iSCSIセッションB1がログアウトされ、iSCSIセッションB3でログインされる。さらに、期間1510が経過すると、iSCSIセッションB2がログアウトされ、iSCSIセッションB4でログインされる。以後同様な処理が繰り返される。
【0123】
マルチiSCSIセッションの場合には、一つのiSCSIセッションをログアウトしても、他の接続中のiSCSIセッションを利用してデータの入出力が可能であるため、周期的にiSCSIセッションのログアウト及びログインを行うことができる。したがって、3本以上のiSCSIセッションが接続されている場合に、1本以上接続された状態を維持していれば、複数のiSCSIセッションをログアウトし、再度、ログインしてもよい。
図16に示すように、iSCSIセッションB1はIDがB3に、iSCSIセッションB2はコネクションIDがB4に変化する。
【0124】
本発明の第2の実施の形態によれば、マルチiSCSIセッションの場合であっても、第1の実施の形態と同様に、iSCSIセッションを周期的にリフレッシュすることによって、接続が長時間維持されることを防止し、セキュリティリスクを少なくすることができる。
【図面の簡単な説明】
【0125】
【図1】本発明の第1の実施の形態の計算機システムの構成の一例を示す図である。
【図2】本発明の第1の実施の形態のホスト又はストレージのメモリに格納されるプログラム及び管理情報の詳細を示す図である。
【図3】本発明の第1の実施の形態のiSCSIセッションのリフレッシュを指示するための設定画面の一例を示す図である。
【図4】本発明の第1の実施の形態のiSCSIセッション管理テーブルの一例を示す図である。
【図5】本発明の第1の実施の形態の周期的にヘルスチェック制御が実行される手順を示すフローチャートである。
【図6】本発明の第1の実施の形態のヘルスチェック応答受信時にヘルスチェック制御が実行される手順を示すフローチャートである。
【図7】本発明の第1の実施の形態のヘルスチェック応答を待機している間にタイムアウトした場合にヘルスチェック制御が実行される手順を示すフローチャートである。
【図8】本発明の第1の実施の形態のヘルスチェック制御の手順を示すフローチャートである。
【図9】本発明の第1の実施の形態のiSCSIセッションリフレッシュ処理Aの手順を示すフローチャートである。
【図10】本発明の第1の実施の形態のiSCSIセッションリフレッシュ処理Bの手順を示すフローチャートである。
【図11】本発明の第1の実施の形態の通常のヘルスチェック制御を実行した場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【図12】本発明の第1の実施の形態のiSCSIリフレッシュ方法がヘルスチェック発行時の場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【図13】本発明の第1の実施の形態のiSCSIリフレッシュ方法がマルチTCPコネクション時の場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【図14】本発明の第2の実施の形態のiSCSIセッション管理テーブルの詳細を示す図である。
【図15】本発明の第2の実施の形態のiSCSIセッションリフレッシュ処理Cの手順を示すフローチャートである。
【図16】本発明の第2の実施の形態のiSCSIリフレッシュ方法がマルチISCSIセッション時の場合のセッション接続状態及びiSCSIログインからの一連の処理の一例を示す図である。
【符号の説明】
【0126】
101 ホスト
102 SAN
103 ストレージ
104 拠点間ネットワーク
105 ストレージ
106 管理端末
110 IF制御部
111 プロセッサ
112 メモリ
113 データ転送処理部
114 ポート制御部
120 管理IF制御部
130 メモリ
140 ディスクIF制御部
141 ディスク
151 SCSIアプリケーション
152 SCSI制御
153 iSCSI制御
154 TCP/IP制御
155 データ送受信制御
156 オペレーティングシステム(OS)
160 管理情報
161 パス管理情報
162 iSCSIセッション設定情報
171 プロセッサ
172 メモリ
173 データ転送制御部
174 ポート制御部
201 SCSI要求キュー
202 SCSI応答キュー
203 イニシエータ制御
204 ターゲット制御
205 iSCSIセッション管理
206 iSCSIセッション管理テーブル
207 ヘルスチェック制御
208 ヘルスチェック用iSCSIコマンド送受信制御
209 iSCSIセッションリフレッシュ処理
211 SCSIキュー状態テーブル
212 データバッファ
300 iSCSIリフレッシュ設定画面

【特許請求の範囲】
【請求項1】
イニシエータと、前記イニシエータにネットワークを介して接続されるストレージ装置とを含む計算機システムにおけるセッション管理方法であって、
前記イニシエータは、前記ネットワークに接続される第1インタフェース、前記第1インタフェースに接続される第1メモリ、及び、前記第1メモリに接続される第1プロセッサを備え、
前記ストレージ装置は、前記ネットワークに接続される第2インタフェース、前記第2インタフェースに接続される第2メモリ、及び、前記第2メモリに接続される第2プロセッサを備え、
前記イニシエータは、
前記ストレージ装置との間で、所定の第1期間、データが入出力されない場合には、前記イニシエータと前記ストレージ装置とのセッションの状態を診断するヘルスチェックを実行し、
前記ストレージ装置との間で、所定の第2期間、データが入出力されない場合には、前記ヘルスチェックを実行するタイミングで、前記ストレージ装置とのセッションを切断し、さらに、再接続することを特徴とするセッション管理方法。
【請求項2】
前記イニシエータは、iSCSIプロトコルによって、前記ストレージ装置と通信することを特徴とする請求項1に記載のセッション管理方法。
【請求項3】
前記セッションは、複数のTCPコネクションによって構成され、
前記イニシエータは、周期的に、前記セッションに含まれるTCPコネクションが少なくとも1本以上接続された状態を維持しながら、前記TCPコネクションを切断し、さらに、再接続することを特徴とする請求項2に記載のセッション管理方法。
【請求項4】
前記イニシエータは、前記TCPコネクションが前記ストレージ装置に接続されている期間の長い順に、前記TCPコネクションを切断し、さらに、再接続することを特徴とする請求項3に記載のセッション管理方法。
【請求項5】
前記イニシエータは、
複数の前記セッションによって、前記ストレージ装置と通信し、
周期的に、前記セッションが少なくとも1本以上前記ストレージ装置に接続された状態を維持しながら、前記複数のセッションに含まれるセッションを切断し、さらに、再接続することを特徴とする請求項2に記載のセッション管理方法。
【請求項6】
前記イニシエータは、前記ストレージ装置に接続されている期間の長い順に、前記複数のセッションに含まれるセッションを切断し、さらに、再接続することを特徴とする請求項5に記載のセッション管理方法。
【請求項7】
前記イニシエータは、前記所定の第1期間及び前記所定の第2期間の少なくとも一方の入力を受け付けることを特徴とする請求項1に記載のセッション管理方法。
【請求項8】
ネットワークを介して他のストレージ装置に接続するストレージ装置であって、
前記ネットワークに接続されるインタフェース、前記インタフェースに接続されるメモリ、及び、前記メモリに接続されるプロセッサを備え、
前記プロセッサは、
前記他のストレージ装置との間で、所定の第1期間、データが入出力されない場合には、前記他のストレージ装置とのセッションの状態を診断するヘルスチェックを実行し、
前記他のストレージ装置との間で、所定の第2期間、データが入出力されない場合には、前記ヘルスチェックを実行するタイミングで、前記他のストレージ装置とのセッションを切断し、さらに、再接続することを特徴とするストレージ装置。
【請求項9】
前記ストレージ装置は、iSCSIプロトコルによって、前記他のストレージ装置と通信することを特徴とする請求項8に記載のストレージ装置。
【請求項10】
前記セッションは、複数のTCPコネクションによって構成され、
前記プロセッサは、周期的に、前記セッションに含まれるTCPコネクションが少なくとも1本以上接続された状態を維持しながら、前記セッションに含まれるTCPコネクションを切断し、さらに、再接続することを特徴とする請求項9に記載のストレージ装置。
【請求項11】
前記プロセッサは、前記TCPコネクションが前記他のストレージ装置に接続されている期間の長い順に、前記TCPコネクションを切断し、さらに、再接続することを特徴とする請求項10に記載のストレージ装置。
【請求項12】
前記プロセッサは、
複数の前記セッションによって、前記他のストレージ装置と通信し、
周期的に、前記セッションが少なくとも1本以上前記ストレージ装置に接続された状態を維持しながら、前記複数のセッションに含まれるセッションを切断し、さらに、再接続することを特徴とする請求項9に記載のストレージ装置。
【請求項13】
前記プロセッサは、前記他のストレージ装置に接続されている期間の長い順に、前記複数のセッションに含まれるセッションを切断し、さらに、再接続することを特徴とする請求項12に記載のストレージ装置。
【請求項14】
前記プロセッサは、前記所定の第1期間及び前記所定の第2期間の少なくとも一方の入力を受け付けることを特徴とする請求項8に記載のストレージ装置。
【請求項15】
イニシエータと、前記イニシエータにネットワークを介して接続されるストレージ装置とを含む計算機システムであって、
前記イニシエータは、前記ネットワークに接続される第1インタフェース、前記第1インタフェースに接続される第1メモリ、及び、前記第1メモリに接続される第1プロセッサを備え、
前記ストレージ装置は、前記ネットワークに接続される第2インタフェース、前記第2インタフェースに接続される第2メモリ、及び、前記第2メモリに接続される第2プロセッサを備え、
前記イニシエータは、
前記ストレージ装置との間で、所定の第1期間、データが入出力されない場合には、前記イニシエータと前記ストレージ装置とのセッションの状態を診断するヘルスチェックを実行し、
前記ストレージ装置との間で、所定の第2期間、データが入出力されない場合には、前記ヘルスチェックを実行するタイミングで、前記ストレージ装置とのセッションを切断し、さらに、再接続することを特徴とする計算機システム。

【図1】
image rotate

【図2】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図3】
image rotate


【公開番号】特開2009−238098(P2009−238098A)
【公開日】平成21年10月15日(2009.10.15)
【国際特許分類】
【出願番号】特願2008−85906(P2008−85906)
【出願日】平成20年3月28日(2008.3.28)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】