インタフェースコントローラ、ストレージ装置、及びタイムアウト調整方法
【課題】ホストに適したタイムアウト時間を設定できるようにする。
【解決手段】実施形態によれば、インタフェースコントローラは、第1のタイマと、モニタ結果取得手段と、モニタ結果保持手段と、調整手段とを具備する。第1のタイマは、インタフェースコントローラが複数のホスト装置のうちの第1のホスト装置と接続された第1の時点からの経過時間を計測し、計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する。モニタ結果取得手段は、第1の時点の後で且つ第1のタイムアウトの検出前に第1のホスト装置からの最初のフレームが受信された第2の時点における計測された経過時間を示す値をモニタ結果として取得する。モニタ結果保持手段は、取得されたモニタ結果を保持する。調整手段は、モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、第1のタイムアウト値を調整する。
【解決手段】実施形態によれば、インタフェースコントローラは、第1のタイマと、モニタ結果取得手段と、モニタ結果保持手段と、調整手段とを具備する。第1のタイマは、インタフェースコントローラが複数のホスト装置のうちの第1のホスト装置と接続された第1の時点からの経過時間を計測し、計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する。モニタ結果取得手段は、第1の時点の後で且つ第1のタイムアウトの検出前に第1のホスト装置からの最初のフレームが受信された第2の時点における計測された経過時間を示す値をモニタ結果として取得する。モニタ結果保持手段は、取得されたモニタ結果を保持する。調整手段は、モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、第1のタイムアウト値を調整する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、インタフェースコントローラ、ストレージ装置、及びタイムアウト調整方法に関する。
【背景技術】
【0002】
近年のストレージ装置は、一般に複数のホスト装置によってアクセス可能である。以下、ホスト装置を単にホストと表記することもある。複数のホストのいずれか1つ(以下、第1のホストと呼ぶ)がストレージ装置にアクセスするためには、第1のホストとストレージ装置との間の接続(より詳細には、論理的な接続)が確立している必要がある。第1のホストとストレージ装置との間の接続が確立すると、第1のホストはストレージ装置にアクセスして、例えばデータフレームを転送することができる。もし、転送すべきデータのサイズが大きい場合、データフレームの転送が繰り返される。
【0003】
第1のホストがストレージ装置にデータフレームを繰り返し転送している場合、他のホスト(以下、第2のホストと呼ぶ)は、ストレージ装置との間の接続を確立することができない。つまり、第1のホストが、データフレームの転送のためにストレージ装置との間の接続を占有している期間、第2のホストは当該ストレージ装置に接続することができない。
【0004】
そこで、従来のストレージ装置は、第1のホストが当該ストレージ装置との間のデータフレームの転送、つまりデータ転送のために上述の接続を長期間占有することを回避する仕組みを備えている。この仕組みによれば、第1のホストがストレージ装置との間の接続を占有する時間の上限が当該ストレージ装置内に設定される。この上限の時間は、タイムアウト時間と呼ばれる。第1のホストがストレージ装置との間のデータ転送を開始してからタイムアウト時間が経過すると、第1のホストとストレージ装置との間の接続が強制的に切断(開放)される。これにより、第2のホストからストレージ装置への接続が可能になる。
【0005】
しかし、設定されたタイムアウト時間が短すぎると、第1のホストが正常にデータ転送を実行している最中に上述の接続が切断される可能性がある。逆に、設定されたタイムアウト時間が長すぎると、例えば第1のホストの状態に起因してデータ転送に失敗しているにも関わらずに、上述の接続が長時間開放されない可能性がある。
【0006】
このため従来から、ストレージ装置がホストとの間のデータ転送の際に使用するタイムアウト時間(以下、第1のタイムアウト時間と称する)を自動的に設定するための技術が提案されている。このような技術の1つとして、例えば、ホストとストレージ装置との間のデータ転送が開始されてから所定の条件が成立するまでの経過時間に基づいて第1のタイムアウト時間を更新する技術(以下、従来技術と称する)が知られている。所定の条件とは、例えば、ホストに設定されているタイムアウト時間(以下、第2のタイムアウト時間と称する)に基づく当該第1のホストによるタイムアウトの検出である。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2001−14227号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記従来技術によれば、ホストに設定されている第2のタイムアウト時間に対応する第1のタイムアウト時間をストレージ装置に自動的に設定できる。
【0009】
しかし、従来技術では、ホストとストレージ装置との間で接続が確立しているにも関わらず、データ転送が開始されていないような場合に、有効な第1のタイムアウト時間を設定することは難しい。
【0010】
本発明の目的は、接続が確立しているにも関わらずに最初のフレームがホストから送信されないような状況においても、効果的にタイムアウトを発生可能とする、ホストに適したタイムアウト時間を設定することができるインタフェースコントローラ、ストレージ装置及びタイムアウト時間設定方法を提供することである。
【課題を解決するための手段】
【0011】
実施形態によれば、インタフェースコントローラは、複数のホスト装置から所定のインタフェースバスを介してアクセス可能であって、第1のタイマと、モニタ結果取得手段と、モニタ結果保持手段と、調整手段とを具備する。前記第1のタイマは、前記インタフェースコントローラが前記複数のホスト装置のうちの第1のホスト装置と接続された第1の時点からの経過時間を計測し、前記計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する。前記モニタ結果取得手段は、前記第1の時点の後で且つ前記第1のタイムアウトの検出前に前記第1のホスト装置からの最初のフレームが受信された第2の時点における前記計測された経過時間を示す値をモニタ結果として取得する。前記モニタ結果保持手段は、前記取得されたモニタ結果を保持する。前記調整手段は、前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する。
【図面の簡単な説明】
【0012】
【図1】第1の実施形態に係る、ストレージ装置を備えたストレージシステムの典型的な構成を示すブロック図。
【図2】図1に示されるSASコントローラの典型的な構成を示すブロック図。
【図3】第1の実施形態における第1の動作例を説明するためのシーケンスチャート。
【図4】第1の実施形態における第2の動作例を説明するためのシーケンスチャート。
【図5】第1の実施形態における第3の動作例を説明するためのシーケンスチャート。
【図6】第1の実施形態で適用される第1のタイムアウト値調整方法を説明するための図。
【図7】第2の実施形態で適用される第2のタイムアウト値調整方法を説明するための図。
【図8】第3の実施形態で適用される第3のタイムアウト値調整方法におけるサンプリング期間とタイムアウト値調整との関係を説明するための図。
【図9】上記第3のタイムアウト値調整方法によるサンプリング期間後におけるタイムアウト値調整を説明するための図。
【図10】第1乃至第3の実施形態に共通の、各ホストに対応したタイムアウト値を格納するテーブルの例を示す図。
【発明を実施するための形態】
【0013】
以下、実施の形態につき図面を参照して説明する。
【0014】
[第1の実施形態]
図1は、第1の実施形態に係るストレージ装置を備えたストレージシステムの典型的な構成を示すブロック図である。
【0015】
図1に示すストレージシステムは、ストレージ装置10と、複数のホスト、例えば4つのホスト20−1,20−2,20−3及び20−4とを備えている。各ホスト20−i(i=1〜4)は、例えば、SAS(Serial Attached SCSI)インタフェースを有するSASホストである。各ホスト20−iは、エクスパンダ30及びSASバス31を介してストレージ装置10に物理的に接続されている。第1の実施形態において、SASバス31を介して行われる通信のプロトコルには、SSP(Serial SCSI Protocol)、或いはSMP(Serial Management Protocol)のようなSCSI規格に準拠した通信プロトコル(つまり広義のSCSIプロトコル)が用いられる。
【0016】
第1の実施形態において、「接続」の概念は2つある。第1は、上述のような物理的な接続である。第2は、通信のための接続(つまり論理的な接続)である。ホスト20−iは、ストレージ装置10と単に物理的に接続されているだけではストレージ装置10と通信することはできない。ホスト20−iとストレージ装置10との間で論理的な接続が確立して初めて、ホスト20−iはストレージ装置10と通信することができる。以下の説明では、「論理的な接続」を、単に「接続」と称する。つまり、以下の説明において、単に接続と表記される場合には、論理的な接続を表すものとする。
【0017】
ストレージ装置10は、例えば、SASインタフェースを有するSASドライブである。第1の実施形態においてストレージ装置10は、SAS磁気ディスクドライブ(HDD)、或いはソリッドステートドライブ(SSD)である。ストレージ装置10は、記憶部11、主コントローラ12及びSASコントローラ13を備えている。
【0018】
記憶部11は、ストレージ装置10がHDDの場合、磁気ディスクを記憶媒体として有している。記憶部11は、ストレージ装置10がSSDの場合、フラッシュメモリを記憶媒体として有している。主コントローラ12は、記憶部11へのデータの書き込み、または記憶部11からのデータの読み出しを制御する。主コントローラ12は、内部バス32を介してSASコントローラ13に物理的に接続されている。
【0019】
SASコントローラ13は、SASバス31を介してエクスパンダ30と物理的に接続されている。このエクスパンダ30には、上述の4つのホスト20−1〜20−4が物理的に接続されている。しかし、エクスパンダ30に物理的に接続されるホストの数は4である必要はない。
【0020】
SASコントローラ13は、ストレージ装置10の外部にあるSASインタフェースを持った機器との接続を制御する。なお、SASコントローラ13に代えて、SASインタフェース以外のインタフェース、例えば、SATA(Serial ATA)インタフェース、或いはSCSIインタフェースのようなインタフェースを持ったインタフェースコントローラを用いてもよい。
【0021】
説明の簡略化のために、SASコントローラ13に物理的に直接接続可能な外部機器(イニシエータ)の数(以下、SASコントローラ13の許容数と称する)は1であるものとする。つまりSASコントローラ13は、1つのSASポート(イニシエータポート)を備えているものとする。エクスパンダ30は、ストレージ装置10に物理的に接続すべき外部機器の数が、SASコントローラ13の許容数を超える場合に用いられる。第1の実施形態では、上述のようにエクスパンダ30に4つのホスト20−1〜20−4が物理的に接続されている。この場合、エクスパンダ30は、4つのホスト20−1〜20−4をストレージ装置10に物理的に接続することができる。
【0022】
ホスト20−1〜20−4の1つであるホスト20−i(i=1,2,3または4)は、SASコントローラ13の制御によりストレージ装置10と接続(論理的に接続)することができる。この状態において、ホスト20−iとストレージ装置10とは、相互に通信、例えばデータを送受信することができる。このように、第1の実施形態においてストレージ装置10と接続可能なホストの数は1つであり、複数のホストが同時にストレージ装置10に接続することはできない。そのため、例えばホスト20−1がストレージ装置10に接続されていると、他のホスト、例えばホスト20−2がストレージ装置10に接続を要求した場合、当該接続要求は拒否される。この場合、ホスト20−2は、ホスト20−1とストレージ装置10との接続が切断される(クローズされる)まで待たされる。
【0023】
このとき、ホスト20−1が、何らかの影響で、例えばフレームの送受信を行っていないものとする。このような場合、SASコントローラ13は、ホスト20−1が接続を占有する時間を調節する。これにより、ホスト20−2からの接続要求に対して適切な接続が可能になる。
【0024】
次に、図1に示されるSASコントローラ13について詳細に説明する。
図2は、SASコントローラ13の構成を示すブロック図である。
図2の説明を行う前に、例えば、ホスト20−1がストレージ装置10と接続してから、ストレージ装置10との接続が切断されるまでの一般的なハンドシェイクの例(第1の動作例)について、図3を参照して説明する。
【0025】
図3は、イニシエータ(Initiator 1)としてのホスト20−1(第1のホスト)とターゲット(Target)としてのストレージ装置10との間で行われる、接続から切断までのフレームやプリミティブなどの送受信の通信シーケンス(ハンドシェイク)を示すシーケンスチャートである。
図3において、ホスト20−1(Initiator 1)及びストレージ装置10(Target)は、エクスパンダ30(Expander)を介して相互にフレームやプリミティブなどを送受信する。
【0026】
まず、ホスト20−1(Initiator 1)において、当該ホスト20−1からストレージ装置(Target)10にコマンドフレーム(COMMAND)を送信する必要が発生したものとする。すると、ホスト20−1とストレージ装置10との接続を確立するための接続(オープン)シーケンスが次のように開始される。
【0027】
始めに、ホスト20−1は、ストレージ装置10への接続の要求として、OPENアドレス・フレームを送信する。ストレージ装置10は、ホスト20−1によって送信されたOPENアドレス・フレームをエクスパンダ30を介して受信する。するとストレージ装置10は、他のホストと接続されていないならば、接続許可のプリミティブとして、OPEN_ACCEPTプリミティブをホスト20−1に応答する。この時点で、ホスト20−1とストレージ装置10との間で接続が確立(または、完了)したことになる。この時点を第1の時点t1とする。
【0028】
上記接続の確立後、ストレージ装置10は、RRDYプリミティブをホスト20−1に送信する。RRDYプリミティブがホスト20−1に送信された時点で、当該ホスト20−1は、コマンドフレームを送信することが可能となる。
【0029】
そこで、ホスト20−1はコマンドフレーム(最初のフレーム)をストレージ装置10に送信する。ストレージ装置10は、コマンドフレームを受信すると、ACKプリミティブをホスト20−1に返す。するとホスト20−1は、データフレーム(DATA)を送信し始める。第1の時点t1の後、ストレージ装置10が最初のフレームを受信した時点を第2の時点t2とする。
【0030】
その後、ホスト20−1とストレージ装置10との間で幾つかのフレームの送受信が実行されたものとする。すると、ホスト20−1及びストレージ装置10は、現在確立している接続を切断する(閉じる)ための、次のような切断(クローズ)シーケンスに移行する。
【0031】
まずホスト20−1は、一連のフレームの送信が完了したことを知らせるためにDONEプリミティブをストレージ装置10に送信する。するとDONEプリミティブに対する応答として、ストレージ装置10はDONEプリミティブをホスト20−1に送信する。つまりホスト20−1及びストレージ装置10は、DONEプリミティブを交換する。同様にして、ホスト20−1及びストレージ装置10は最後に、CLOSEプリミティブを交換する。CLOSEプリミティブの交換が完了した時点で切断シーケンスは完了し、ホスト20−1(Initiator 1)とストレージ装置10(Target)との間の接続が切断された(閉じられた)ことになる。
【0032】
ところで、ホスト20−1とストレージ装置10との接続が確立している間に、ホスト20−1以外のホスト(例えばホスト20−2)から接続が要求されることがある。この場合、また、ホスト20−2は、ホスト20−1とストレージ装置10との接続が切断されるまで待たされる。
【0033】
また、ホスト20−1とストレージ装置10との接続が確立した後、図3の例とは異なって、何らかの要因でホスト20−1とストレージ装置10との間で全くフレームが送受信されないこともある。このような場合、従来技術のように、データ転送が開始されてからの経過時間に基づいてタイムアウトが検出される構成では、効果的なタイムアウト検出を行うことは難しい。つまり、ホスト20−2は、長時間待たされる。第1の実施形態では、このような場合を考慮して、所定の条件が成立した場合に、現在確立している接続が強制的に切断される。所定の条件は2つある。第1は、タイムアウト値(第1のタイムアウト値)151(図2参照)に基づく第1のタイムアウトの検出である。第2は、タイムアウト値(第2のタイムアウト値)152(図2参照)に基づく第2のタイムアウトの検出である。ここで、第1及び第2のタイムアウトの検出の起点となる時点が、従来技術と異なり、後述するように上記第1の時点t1であることに注意すべきである。
【0034】
第1の実施形態では、タイマ130にタイムアウト値151が設定される。これにより、上述のようにホスト20−1とストレージ装置10との間で全くフレームが送受信されない状態でも、第1の時点t1からの経過時間がタイムアウト値151の示す時間を超えた場合は、ホスト20−1とストレージ装置10との間の接続が切断される。
【0035】
第1の実施形態では、タイムアウト値151及び152の少なくともタイムアウト値151が、ストレージ装置10のSASコントローラ13によって調整される。そのためSASコントローラ13は、第1の時点t1から第2の時点t2までの時間(経過時間)を計測する。SASコントローラ13は少なくとも1つの計測結果に基づいて、タイムアウト値151を調整する。
【0036】
図2に戻って、上述したように、タイムアウト値を調整する機能を有するSASコントローラ13の構成について説明する。
SASコントローラ13は、SASバスインタフェース140、タイマ130、タイマ131、モニタ結果取得部132、モニタ結果保持部134、調整部136、イニシエータテーブル138及びストレージインタフェース142から構成される。
【0037】
タイマ130は、ホスト20−1〜20−4の1つであるホスト20−i(i=1,2,3または4)とストレージ装置10との接続が完了した第1の時点t1からの経過時間を計測する。タイマ130には、タイムアウト値151が設定される。タイマ130は、計測された経過時間がタイムアウト値151の示す時間(第1のタイムアウト時間)を超える第1のタイムアウトを検出する。タイマ130は第1のタイムアウトを検出すると、計測時間をクリアする。タイマ130に設定されるタイムアウト値151には、その時点において、ストレージ装置10と接続されているホスト20−iに対応するタイムアウト値T1i[x]が用いられる。タイムアウト値T1i[x]は、図9を参照して後述するようにホスト20−iに対応付けてイニシエータテーブル138に格納されている。
【0038】
タイマ131は、上記第1の時点t1からの経過時間を計測する。タイマ131には、タイムアウト値152が設定される。タイマ131は、計測された経過時間がタイムアウト値152の示す時間(第2のタイムアウト時間)を超える第2のタイムアウトを検出する。タイマ131は第2のタイムアウトを検出すると、計測時間をクリアする。タイマ131に設定されるタイムアウト値152には、その時点において、ストレージ装置10と接続されているホスト20−iに対応するタイムアウト値T2i[y]が用いられる。タイムアウト値T2i[y]は、図9を参照して後述するようにホスト20−iに対応付けてイニシエータテーブル138に格納されている。
【0039】
モニタ結果取得部132は、SASバスインタフェース140及びタイマ130の状態をモニタする。具体的には、モニタ結果取得部132は、SASバスインタフェース140の状態をモニタすることにより、ホスト20−iとストレージ装置10との接続が完了したことを検出する。モニタ結果取得部132はまた、SASバスインタフェース140及びタイマ130の状態をモニタすることにより、上記接続が完了した第1の時点t1の後、タイマ130がタイムアウトを検出する前に最初のフレームが受信されたことを検出する。モニタ結果取得部132はまた、最初のフレームの受信を検出した時点(つまり第2の時点)t2におけるタイマ130の計測時間を、モニタ結果として取得する。モニタ結果取得部132は、取得されたモニタ結果を、ホスト20−iに対応付けてモニタ結果保持部134に格納する。モニタ結果取得部132はさらに、タイマ130による第1のタイムアウト検出をモニタすることにより、ストレージ装置10(より詳細には、SASバスインタフェース140)を切断シーケンスに移行させる。
【0040】
モニタ結果保持部134は、モニタ結果取得部132によって取得されたモニタ結果をホスト20−i毎に保持する。ホスト20−iとストレージ装置10とが複数回接続された場合、モニタ結果保持部134には、ホスト20−iに対応付けて複数のモニタ結果が保持される。
【0041】
調整部136は、ホスト20−iに対応付けてモニタ結果保持部134に保持された少なくとも1つのモニタ結果に基づいて、タイムアウト値151を調整する。より詳細には調整部136は、タイムアウト値151として用いられた、ホスト20−iに対応付けてイニシエータテーブル138に格納されているタイムアウト値T1i[x]を調整する。タイムアウト値151の調整方法については後述する。調整部136は、ホスト20−iに対応付けてイニシエータテーブル138に格納されているタイムアウト値T1i[x]を、調整されたタイムアウト値に変更(更新)する。また、調整部136は、ホスト20−iとストレージ装置10とが接続される都度、ホスト20−iに対応付けてイニシエータテーブル138に格納されているタイムアウト値T1i[x]及びT2i[y]を、それぞれタイムアウト値151及び152として、タイマ130及び131に設定する。
【0042】
SASバスインタフェース140は、SASバス31を介してエクスパンダ30と物理的に接続されている。SASバスインタフェース140は、ホスト20−iと当該SASバスインタフェース140との間で、SASバス31及びエクスパンダ30を介してフレームやプリミティブなどを送受信する。SASバスインタフェース140は、接続切断手段としても機能する。つまりSASバスインタフェース140は、ホスト20−iとストレージ装置10とが接続されている状態で、タイマ130またはタイマ131がタイムアウトを検出した場合、ホスト20−iとストレージ装置10との接続を切断する。
【0043】
ストレージインタフェース142は、SASバスインタフェース140と物理的に接続されている。ストレージインタフェース142はまた、図1の主コントローラ12と内部バス32を介して物理的に接続されている。ストレージインタフェース142は、SASバスインタフェース140と主コントローラ12との間のデータ転送を行う。
【0044】
次に、図4を用いて、第1の実施形態の第2の動作例について説明する。ここではストレージ装置10に接続されるホスト20−iが、ホスト20−1であるものとする。図4は、第1の実施形態の第2の動作例における、ホスト20−1がストレージ装置10と接続されてから、ストレージ装置10との接続が切断されるまでのハンドシェイクを示すシーケンスチャートである。
【0045】
図4に示す第2の動作例は、図3に示した第1の動作例と、次の点で相違する。第1の動作例では、ホスト20−1(Initiator 1)とストレージ装置10(Target)との接続が確立された第1の時点t1の後、ホスト20−1からストレージ装置10に速やかにフレーム(図3の例ではコマンドフレーム)が送信される。これに対して、第2の動作例では、上記第1の時点t1の後、いつまでもホスト20−1(Initiator 1)が最初のフレームを送信しない。言い換えると、ホスト20−1(Initiator 1)は、データを送信していないにも関わらず、ストレージ装置10(Target)との間の接続を占有している。
【0046】
さらに図4の例では、ホスト20−1とストレージ装置10とが接続されている状態において、タイマ130が第1のタイムアウトを検出する前に、ホスト20−1とは異なる例えばホスト20−2(Initiator 2)が、ストレージ装置10(Target)に接続を要求している。しかし、ホスト20−1によって接続が占有されているため、ホスト20−2からの接続要求は拒否されている。
【0047】
さて、ストレージ装置10がホスト20−1から最初のフレームを受信することなく、タイマ130が、図4に示す第3の時点t3で第1のタイムアウトを検出したものとする。この場合、ストレージ装置10(より詳細には、SASコントローラ13のSASバスインタフェース140)はホスト20−1との接続を強制的に切断するために、前述した切断シーケンスに移行する。これによりストレージ装置10はDONEプリミティブをホスト20−1に送信する。するとDONEプリミティブに対する応答として、ホスト20−1はDONEプリミティブをストレージ装置10に返す。同様にして、ストレージ装置10及びホスト20−1はCLOSEプリミティブを交換する。これにより、ホスト20−1とストレージ装置10との接続が切断される。
【0048】
すると、接続待ち状態にあるホスト20−2は、例えば、当該ホスト20−2よりも先に接続待ち状態にある他のホストが存在しないならば、ストレージ装置10に接続することが可能となる。しかし、第1のタイムアウトの検出に用いられた第1のタイムアウト値が調整されていないならば、ホスト20−1は、余分な時間、ストレージ装置10との接続を占有していた可能性がある。つまり、ホスト20−2は、ストレージ装置10に接続可能となるまで余分な時間待たされていた可能性がある。
【0049】
そこで第1の実施形態では、ホスト20−1に対応付けられている第1のタイムアウト値を、ストレージ装置10(より詳細には、SASコントローラ13の調整部136)が後述するように調整する。つまりストレージ装置10は、ホスト20−1に適した第1のタイムアウト値を設定する。これにより、図4に示すような状況において、ホスト20−1が無駄な時間接続を占有することを防止することが可能になる。
【0050】
次に、第1の実施形態の第3の動作例について図5を用いて説明する。図4に示す第2の動作例と同様の動作に関しては説明を省略する。
図5は、第1の実施形態の第3の動作例における、ホスト20−1がストレージ装置10と接続されてから、ストレージ装置10との接続が切断されるまでのハンドシェイクを示すシーケンスチャートである。
【0051】
図5に示す第3の動作例では、図3に示す第1の動作例と異なり、ホスト20−1によるデータフレームの送信が繰り返し行われる。一連のデータフレームの送信が完了していないにも関わらず、タイマ131が、図5に示す第4の時点t4で第2のタイムアウトを検出したものとする。このような状態は、例えば、ホスト20−1から送信されるフレームの容量が膨大である場合や、通信速度が低下した場合に生じる。この場合、ストレージ装置10(より詳細には、SASコントローラ13のSASバスインタフェース140)はホスト20−1との接続を強制的に切断するために、前述した切断シーケンスに移行する。
【0052】
次に、第1の実施形態で適用される第1のタイムアウト値調整方法について図6を参照して説明する。
図6は、イニシエータテーブル138に格納されている、ホスト20−1に対応したタイムアウト値T11[n-1](n=2,3,4,…)をタイムアウト値T11[n]に調整する第1のタイムアウト値調整方法(以下、平均法と称する)の例を示す。タイムアウト値T11[n-1] 及びT11[n]は、前述のタイムアウト値T11[x]に相当する。ここで、タイムアウト値T11[n-1]及びT11[n]における、[]内のn−1及びnは、ホスト20−1とストレージ装置10とが接続された回数を表す。
【0053】
まず、ホスト20−1とストレージ装置10とが接続され、これによりホスト20−1とストレージ装置10とが接続された回数がn−1となったものとする。このとき、イニシエータテーブル138には、ホスト20−1に対応付けてタイムアウト値T11[n-1]が格納されているものとする。この場合、調整部136は、タイムアウト値T11[n-1]を、タイムアウト値151として、タイマ130に設定する。なお、タイマ131へのタイムアウト値の設定については後述する。
【0054】
タイマ130は、前述の第1の時点t1から経過時間を計測する。このタイマ130によって第1の時点t1から第2の時点t2までに計測された経過時間t2−t1をt[n-1]とする。タイムアウト値T11[n-1]の示す時間をT11[n-1]とする。上記計測された経過時間t[n-1]は、前述したようにモニタ結果取得部132によって取得されて、モニタ結果保持部134に保持される。
【0055】
調整部136は、取得された経過時間t[n-1]とタイムアウト時間T11[n-1]とを平均した時間(平均時間)T11[n]を、次式
T11[n] = (T11[n-1] + t[n-1]) / 2(n ≧ 2)
に従って算出する。
【0056】
平均法では、平均時間T11[n]を示す値が、ホスト20−1とストレージ装置10との次の接続時のタイムアウト値T11[n]として用いられる。そのため調整部136は、ホスト20−1に対応付けてイニシエータテーブル138に格納されているタイムアウト値をT11[n-1]からT11[n]に更新する。なお、nが2の場合のタイムアウト値T11[n-1]、つまりタイムアウト値T11[1](T11[x]=T11[1])は、最初の接続時に用いられ、例えば1msである。タイムアウト値T11[1]の示す時間T11[1]は、図6に示されるT1に相当する。
【0057】
次に、経過時間t[n-1]がタイムアウト時間T11[n-1]を超えるタイムアウトが発生した場合を想定する。この場合、調整部136は、タイムアウト値T11[n-1]を定数倍、例えば1.2倍する。調整部136は、1.2倍された値を、次の接続時のタイムアウト値T11[n]とする。
【0058】
具体的に図6を参照して説明する。以下の説明では、ホスト20−1とストレージ装置10との接続を前提としている。まず、1回目の接続時においてタイムアウトは発生しなかったものとする。この場合、調整部136は、T11[1]=T1(=1ms)とt[1]との平均値T11[2]を計算する。調整部136は、現在イニシエータテーブル138に保持されているT11[1]をT11[2]に更新する。これにより、2回目の接続の開始時には、T11[2]がタイムアウト値151としてタイマ130に設定される。つまりタイムアウト値151が調整される。
【0059】
2回目及び3回目の接続時においてもタイムアウトは発生しなかったものとする。この場合、調整部136は、1回目の接続時と同様に、平均値を計算することにより、3回目及び4回目の接続時に使用されるT11[3]及びT11[4]を逐次取得する。調整部136は、T11[3]を取得した場合には、イニシエータテーブル138に保持されている元のT11[2]を当該T11[3]に更新する。これにより、3回目の接続の開始時には、T11[3]がタイムアウト値151としてタイマ130に設定される。また調整部136は、T11[4]を取得した場合には、イニシエータテーブル138に保持されている元のT11[3]を当該T11[4]に更新する。これにより、4回目の接続の開始時には、T11[4]がタイムアウト値151としてタイマ130に設定される。
【0060】
4回目の接続では、タイムアウトが発生している。したがって、前述したように、5回目の接続時に使用されるT11[5]は、T11[4]を定数倍した値に設定される。例えば、定数倍の値が1.2であれば、T11[5]=T11[4]×1.2である。
【0061】
図6において、ホスト20−1の接続回数は5回に限らない。また、1回目の接続時に使用されるT11[1]=T1は、1msに限らない。
【0062】
以上のようなタイムアウト値調整方法(平均法)を適用する第1の実施形態によれば、タイムアウトが発生しない限り、接続を繰り返すに従い、タイマ130に設定されるタイムアウト値151は小さくなる。したがって、タイムアウトが発生した場合に、ホスト20−1が接続を占有する時間を短くすることが可能である。
【0063】
[第2の実施形態]
次に第2の実施形態について説明する。
第1の実施形態と同様の構成や機能については説明を省略する。
第2の実施形態では、第1の実施形態で適用された第1のタイムアウト値調整法(平均法)とは異なる、第2のタイムアウト値調整法(加減算法)を用いる。具体的に、その加減算法について図7を参照しながら説明する。図7は、図6と同様の形式で、加減算法を説明するための図である。
【0064】
まず、例えばホスト20−1とストレージ装置10とが接続されており、その接続回数がn−1であるものとする。また、このn−1回目の接続時においてタイムアウトが発生しなかったものとする。つまり、t2の時点で、タイマ130が計測した経過時間が、n−1回目の接続時に設定されたタイムアウト値T11[n-1]の示す時間を超えなかったものとする。この場合、調整部136は加減算法を適用し、設定されたタイムアウト値T11[n-1]から、一定の値を減算する。これとは逆に、タイムアウトが発生した場合、調整部136は、タイムアウト値T11[n-1]に、一定の値を加算する。加減算法では、この減算または加算された値が、次のn接続時のタイムアウト値T11[n]として用いられる。
【0065】
具体的に図7を参照して説明する。1回目の接続時において、タイムアウトは発生していない。したがって、前述したように、調整部136は、T11[1]から一定の値を減算した値T11[2]を計算する。調整部136は、現在イニシエータテーブル138に保持されているT11[1]=T2(=1ms)を、その計算された値T11[2]に更新する。これにより、2回目の接続の開始時には、T11[2]がタイムアウト値151としてタイマ130に設定される。つまりタイムアウト値151が調整される。
【0066】
また、2回目の接続時においても、1回目の接続時と同様にタイムアウトが発生していない。したがって、1回目の接続時と同様に3回目の接続の開始時のタイムアウト値151は、T11[2]から一定の値を減算した値T11[3]となる。
【0067】
3回目の接続時において、タイムアウトが発生している。したがって、前述したように、調整部は、T11[3]に一定の値を加算する。この場合、イニシエータテーブル138に保持されているT11[3]は、加算されたT11[4]に更新される。そして、4回目の接続の開始時において、調整部136はT11[4]をタイムアウト値151としてタイマ130に設定する。
図7において、ホスト20−1の接続回数は5回に限らない。また、1回目の接続時に使用されるT11[1]=T2は、1msに限らない。
【0068】
なお、上述の加減算法において用いられる一定の値は、必要に応じて変更することができる。ここで現在用いられている一定の値をTとする。もし、タイムアウトが発生する可能性を現在よりも低くしたいならば、一定の値としてTよりも小さな値を使用するとよい。その理由は、加減算によって調整されるタイムアウト値の変化量が小さくなるためである。
【0069】
逆に、現在よりもタイムアウトが発生する可能性が高くなったとしても、例えばホスト20−1が接続を占有する時間を短くしたいならば、一定の値としてTよりも大きな値を使用するとよい。その理由は、加減算によって調整されるタイムアウト値の変化量が大きくなるためである。
【0070】
以上のように、タイムアウト値調整方法(加減算法)を適用する第2の実施形態によれば、簡単な計算でタイムアウト値を調整できる。また、前述した一定の値を目的に応じた値に適宜変更することで効果的なタイムアウト値の調整ができる。
【0071】
[第3の実施形態]
次に第3の実施形態について説明する。
第2の実施形態と同様に、第1の実施形態と同様の構成または機能については説明を省略する。
第3の実施形態の特徴は、タイムアウト値の調整に第3のタイムアウト調整法(最大値法)を使用する点にある。以下、ホスト20−1とストレージ装置10との接続を例に、図8及び図9を参照して最大値法について説明する。
【0072】
第3の実施形態で適用される最大値法では、予め定められた複数回の接続が完了するまでは、タイムアウト値の調整は行われない。つまり、タイムアウト値の調整を開始する前に、予め定められた複数回の接続のそれぞれにおいて、前述したようなt1からt2までの経過時間t[n-1](n=2,3,4,…)がサンプリングされる。これにより、複数のサンプリング結果が取得される。この取得された複数のサンプリング結果の最大値が、予め定められた複数回の接続よりも後の接続における、タイムアウト値として用いられる。第3の実施形態において、予め定められた複数回は、100回である。また第3の実施形態では、タイムアウトが発生した場合には、第1の実施形態と同様に、その時点におけるタイムアウト値が定数倍される。
【0073】
もし、第3の実施形態と異なって、1回目の接続が完了した後に、当該1回目の接続でサンプリングされた経過時間が次回の接続時のタイムアウト値として用いられるものとする。この場合、1回目の接続時にサンプリングされた経過時間が短かった場合、2回目の接続において、タイムアウトが発生する可能性が高くなる。
【0074】
これに対して第3の実施形態では、複数回(100回)の接続のそれぞれでサンプリングされた経過時間の最大値が、次回の接続時におけるタイムアウト値として用いられる。このように、サインプリング数を増やすことにより、複数のサンプリング結果の最大値は、当該複数のサンプリング結果の傾向を十分に表している。つまり複数のサンプリング結果の最大値は、ホスト20−1とストレージ装置10との間の接続時における上述の経過時間の傾向を十分に表している。この最大値を次回の接続時におけるタイムアウト値として用いことにより、次回以降(ここでは、101回目以降)の接続時にタイムアウトが発生する可能性を低くすることができる。
【0075】
具体的に図8を参照して説明する。図8は、ホスト20−1とストレージ装置10との間の100回の接続における、各接続時のt[n-1]のサンプリング結果を示す図である。
【0076】
このサンプリングは次のように行われる。タイマ130が、ホスト20−1とストレージ装置10との間の100回の各接続において、t1からt2までの経過時間を計測する。モニタ結果保持部134は、その計測結果をモニタ結果として保持する。調整部136は、そのモニタ結果に基づいて、101回目の接続時に用いられるタイムアウト値を決定する。
【0077】
図8のt[1]乃至t[100]は、タイマ130が計測した経過時間を示している。調整部136は、t[1]乃至t[100]の中で最大の値を示すt[7]=T3を、101回目の接続時に用いられるタイムアウト値に決定する。
【0078】
また、調整部136は、t[1]乃至t[100]の平均値T4を、101回目の接続時に用いられるタイムアウト値とすることもできる。つまり、最大値法において、複数のサンプリングを行う場合、101回目の接続時に用いられるタイムアウト値の決定方法が2つある。第1は、100個のサンプリング値の最大値T3を用いる方法である。第2は、100個のサンプリング値の平均値T4を用いる方法である。
以上のように、100回の接続のサンプリング期間を設けて、101回目の接続時に使用されるタイムアウト値が算出される。
【0079】
次に、この算出されたタイムアウト値T3またはT4を用いた、101回目以降の接続における、タイムアウト値調整について、図9を参照しながら説明する。
図9は、ホスト20−1とストレージ装置10との間の101回目乃至105回目の接続における、タイムアウト値調整を、図6及び図7と同様の形式で説明するための図である。
【0080】
図9のT5として、上述したT3またはT4が用いられるものとする。
101回目の接続において、タイムアウトは発生していない。したがって、101回目に設定されたタイムアウト値T11[101]=T5が、そのまま、102回目のタイムアウト値T11[102]になる。
【0081】
102回目の接続においても、タイムアウトは発生していない。したがって、102回目に設定されたタイムアウト値T11[102]が、そのまま、103回目のタイムアウト値T11[103]になる。
【0082】
103回目の接続において、タイムアウトが発生している。この場合、調整部136は、103回目に設定されたタイムアウト値T11[103]を定数倍した値を計算する。その計算結果が、104回目の接続時に設定されるタイムアウト値T11[104]になる。
【0083】
104回目の接続において、タイムアウトは発生していない。したがって、調整部136は、105回目の接続時に用いられるタイムアウト値T11[105]に、104回目の接続時に設定されたタイムアウト値T11[104]を、そのまま適用する。
【0084】
以上のように、第3の実施形態では最大値法を用いてタイムアウト値が調整される。
また、最大値法において、複数回の接続にまたがるサンプリング期間を設けることで効果的にタイムアウト値を調整することができる。例えば、100回の接続で得られたサンプリングの結果の最大値を101回目の接続のタイムアウト値に設定することで、101回目以降の接続においてタイムアウトする可能性を低くすることができる。また、100回の接続で得られたサンプリングの結果の平均値を101回目の接続時のタイムアウト値に設定することで、101回目以降の接続においてタイムアウトが発生した場合に、ホスト20−1が接続を占有する時間を短くすることができる。
【0085】
さらに、タイムアウトが発生した際に用いられる定数倍の値(定数値)は、目的に応じた値に適宜変更することが可能である。したがって、この定数値を大きくすることで、タイムアウトが発生した以降の接続において、タイムアウトが発生する可能性を低くすることができる。また、定数値を小さくすることで接続の占有時間を短くすることができる。
【0086】
なお、上述したようなサンプリング回数は複数であればよく、100回に限らない。また、上述した定数値は、例えば1.3であるが、これ以外の値でもよい。
【0087】
前記第1の実施形態の第3の動作例(図5参照)では、ストレージ装置10に送信すべきデータフレームがホスト20−1内に残されているにも拘わらずに、ホスト20−1とストレージ装置10との接続が切断される。このような現象の発生を極力防止するために、上述したタイムアウト値151の調整と同様に、タイムアウト値152を調整することも可能である。つまり、モニタ結果取得部132がタイマ131の状態をモニタすることにより、時点t1から時点t3までの経過時間をモニタ結果として取得する。調整部136は、取得された少なくとも1つのモニタ結果に基づいて、ホスト20−1とストレージ装置10とが接続された際に用いられる、タイムアウト値152を調整する。より詳細には調整部136は、タイムアウト値152として用いられた、ホスト20−1に対応付けてイニシエータテーブル138に格納されているタイムアウト値T21[y]を調整する。この調整されたタイムアウト値T21[y]をタイムアウト値152として用いることによって、ホスト20−1による一連のデータフレームの送信が完了した後に上記接続を切断することが可能になる。
【0088】
以上、ホスト20−1とストレージ装置10との接続において、タイマ130及び131にそれぞれタイムアウト値150及び151として用いられるタイムアウト値T11[x]及びT21[y]を調整する方法について説明した。この調整方法は、ホスト20−2,20−3または20−4とストレージ装置10との接続において用いられるタイムアウト値の調整にも同様に適用できる。
【0089】
最後に、第1乃至第3の実施形態で共通に適用されるイニシエータテーブル138について、図10を用いて詳しく説明する。
まず、ホスト20−1〜20−4のそれぞれに関して、上述のt1からt2までの経過時間及びt1からt3までの時間は、異なる可能性が高い。したがって、上述したようなタイムアウト値の最適値は、ホスト毎に異なる。そこで、ホスト毎にタイムアウト値を格納する必要がある。
【0090】
図10は、イニシエータテーブル138のデータ構造例を示した図である。イニシエータテーブル138は、図1に示されるホスト20−1,20−2,203及び20−4にそれぞれ対応した領域138−1、138−2、138−3、138−4から構成される。
【0091】
ホスト20−1に対応した領域138−1について具体的に説明する。領域138−1は、複数のレジスタ、例えば第0乃至第8のレジスタから構成されている。領域138−1の第0乃至第8のレジスタには、ホスト20−1に関する管理情報が格納されている。管理情報は、例えば、SASアドレス及び2つのタイムアウト値を含む。
【0092】
図10の例では、ホスト20−1に対応する領域138−1の第7及び第8レジスタに、前述したタイムアウト値T11[x]及びT21[y]に相当するタイムアウト値T11及びT21が格納されている。ホスト20−1とストレージ装置10とが接続される場合、この領域138−1の第7及び第8レジスタに格納されているタイムアウト値T11及びT21が、それぞれ、タイマ130及び131に設定される。ホスト20−2〜20−4に対応した領域138−2〜138−4についても、ホスト20−1に対応した領域138−1と同様である。
【0093】
このように、ホスト21−i(i=1〜4)に対応したイニシエータテーブル138内の領域に当該ホスト21−iに対応したタイムアウト値(より詳細には、調整されたタイムアウト値)が格納される。これにより、ホスト21−iがストレージ装置10と接続する毎に、当該ホスト21−iに適した調整済みのタイムアウト値をリアルタイムに使用することが可能である。
【0094】
第1乃至第3の実施形態によれば、ホストとストレージ装置との接続が確立した時点t1から接続確立後に最初のフレームが受信された時点t2までの経過時間に基づいてタイムアウト値が調整される。これにより、ホストに適したタイムアウト値にリアルタイムに調整でき、接続が確立しているにも関わらずに最初のフレームがホストから送信されない場合にも、効果的にタイムアウトを発生できる。また第1乃至第3の実施形態によれば、ホストとストレージ装置との接続が確立した後、データフレームの送信に時間を要する場合にも、効果的にタイムアウトを発生できる。
【0095】
以上説明した少なくとも1つの実施形態によれば、接続が確立しているにも関わらずに最初のフレームがホストから送信されないような状況においても、効果的にタイムアウトを発生可能とする、ホストに適したタイムアウト時間を設定することができるインタフェースコントローラ、ストレージ装置及びタイムアウト時間設定方法を提供できる。
【0096】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0097】
10・・・ストレージ装置、20−1〜20−4・・・ホスト、11・・・記憶部、13・・・SASコントローラ、31・・・SASバス、130・・・タイマ(第1のタイマ)、131・・・タイマ(第2のタイマ)、132・・・モニタ結果取得部、134・・・モニタ結果保持部、136・・・調整部、138・・・イニシエータテーブル、140・・・SASバスインタフェース(接続切断手段)、142・・・ストレージインタフェース、151・・・タイムアウト値(第1のタイムアウト値)、152・・・タイムアウト値(第2のタイムアウト値)。
【技術分野】
【0001】
本発明の実施形態は、インタフェースコントローラ、ストレージ装置、及びタイムアウト調整方法に関する。
【背景技術】
【0002】
近年のストレージ装置は、一般に複数のホスト装置によってアクセス可能である。以下、ホスト装置を単にホストと表記することもある。複数のホストのいずれか1つ(以下、第1のホストと呼ぶ)がストレージ装置にアクセスするためには、第1のホストとストレージ装置との間の接続(より詳細には、論理的な接続)が確立している必要がある。第1のホストとストレージ装置との間の接続が確立すると、第1のホストはストレージ装置にアクセスして、例えばデータフレームを転送することができる。もし、転送すべきデータのサイズが大きい場合、データフレームの転送が繰り返される。
【0003】
第1のホストがストレージ装置にデータフレームを繰り返し転送している場合、他のホスト(以下、第2のホストと呼ぶ)は、ストレージ装置との間の接続を確立することができない。つまり、第1のホストが、データフレームの転送のためにストレージ装置との間の接続を占有している期間、第2のホストは当該ストレージ装置に接続することができない。
【0004】
そこで、従来のストレージ装置は、第1のホストが当該ストレージ装置との間のデータフレームの転送、つまりデータ転送のために上述の接続を長期間占有することを回避する仕組みを備えている。この仕組みによれば、第1のホストがストレージ装置との間の接続を占有する時間の上限が当該ストレージ装置内に設定される。この上限の時間は、タイムアウト時間と呼ばれる。第1のホストがストレージ装置との間のデータ転送を開始してからタイムアウト時間が経過すると、第1のホストとストレージ装置との間の接続が強制的に切断(開放)される。これにより、第2のホストからストレージ装置への接続が可能になる。
【0005】
しかし、設定されたタイムアウト時間が短すぎると、第1のホストが正常にデータ転送を実行している最中に上述の接続が切断される可能性がある。逆に、設定されたタイムアウト時間が長すぎると、例えば第1のホストの状態に起因してデータ転送に失敗しているにも関わらずに、上述の接続が長時間開放されない可能性がある。
【0006】
このため従来から、ストレージ装置がホストとの間のデータ転送の際に使用するタイムアウト時間(以下、第1のタイムアウト時間と称する)を自動的に設定するための技術が提案されている。このような技術の1つとして、例えば、ホストとストレージ装置との間のデータ転送が開始されてから所定の条件が成立するまでの経過時間に基づいて第1のタイムアウト時間を更新する技術(以下、従来技術と称する)が知られている。所定の条件とは、例えば、ホストに設定されているタイムアウト時間(以下、第2のタイムアウト時間と称する)に基づく当該第1のホストによるタイムアウトの検出である。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2001−14227号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記従来技術によれば、ホストに設定されている第2のタイムアウト時間に対応する第1のタイムアウト時間をストレージ装置に自動的に設定できる。
【0009】
しかし、従来技術では、ホストとストレージ装置との間で接続が確立しているにも関わらず、データ転送が開始されていないような場合に、有効な第1のタイムアウト時間を設定することは難しい。
【0010】
本発明の目的は、接続が確立しているにも関わらずに最初のフレームがホストから送信されないような状況においても、効果的にタイムアウトを発生可能とする、ホストに適したタイムアウト時間を設定することができるインタフェースコントローラ、ストレージ装置及びタイムアウト時間設定方法を提供することである。
【課題を解決するための手段】
【0011】
実施形態によれば、インタフェースコントローラは、複数のホスト装置から所定のインタフェースバスを介してアクセス可能であって、第1のタイマと、モニタ結果取得手段と、モニタ結果保持手段と、調整手段とを具備する。前記第1のタイマは、前記インタフェースコントローラが前記複数のホスト装置のうちの第1のホスト装置と接続された第1の時点からの経過時間を計測し、前記計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する。前記モニタ結果取得手段は、前記第1の時点の後で且つ前記第1のタイムアウトの検出前に前記第1のホスト装置からの最初のフレームが受信された第2の時点における前記計測された経過時間を示す値をモニタ結果として取得する。前記モニタ結果保持手段は、前記取得されたモニタ結果を保持する。前記調整手段は、前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する。
【図面の簡単な説明】
【0012】
【図1】第1の実施形態に係る、ストレージ装置を備えたストレージシステムの典型的な構成を示すブロック図。
【図2】図1に示されるSASコントローラの典型的な構成を示すブロック図。
【図3】第1の実施形態における第1の動作例を説明するためのシーケンスチャート。
【図4】第1の実施形態における第2の動作例を説明するためのシーケンスチャート。
【図5】第1の実施形態における第3の動作例を説明するためのシーケンスチャート。
【図6】第1の実施形態で適用される第1のタイムアウト値調整方法を説明するための図。
【図7】第2の実施形態で適用される第2のタイムアウト値調整方法を説明するための図。
【図8】第3の実施形態で適用される第3のタイムアウト値調整方法におけるサンプリング期間とタイムアウト値調整との関係を説明するための図。
【図9】上記第3のタイムアウト値調整方法によるサンプリング期間後におけるタイムアウト値調整を説明するための図。
【図10】第1乃至第3の実施形態に共通の、各ホストに対応したタイムアウト値を格納するテーブルの例を示す図。
【発明を実施するための形態】
【0013】
以下、実施の形態につき図面を参照して説明する。
【0014】
[第1の実施形態]
図1は、第1の実施形態に係るストレージ装置を備えたストレージシステムの典型的な構成を示すブロック図である。
【0015】
図1に示すストレージシステムは、ストレージ装置10と、複数のホスト、例えば4つのホスト20−1,20−2,20−3及び20−4とを備えている。各ホスト20−i(i=1〜4)は、例えば、SAS(Serial Attached SCSI)インタフェースを有するSASホストである。各ホスト20−iは、エクスパンダ30及びSASバス31を介してストレージ装置10に物理的に接続されている。第1の実施形態において、SASバス31を介して行われる通信のプロトコルには、SSP(Serial SCSI Protocol)、或いはSMP(Serial Management Protocol)のようなSCSI規格に準拠した通信プロトコル(つまり広義のSCSIプロトコル)が用いられる。
【0016】
第1の実施形態において、「接続」の概念は2つある。第1は、上述のような物理的な接続である。第2は、通信のための接続(つまり論理的な接続)である。ホスト20−iは、ストレージ装置10と単に物理的に接続されているだけではストレージ装置10と通信することはできない。ホスト20−iとストレージ装置10との間で論理的な接続が確立して初めて、ホスト20−iはストレージ装置10と通信することができる。以下の説明では、「論理的な接続」を、単に「接続」と称する。つまり、以下の説明において、単に接続と表記される場合には、論理的な接続を表すものとする。
【0017】
ストレージ装置10は、例えば、SASインタフェースを有するSASドライブである。第1の実施形態においてストレージ装置10は、SAS磁気ディスクドライブ(HDD)、或いはソリッドステートドライブ(SSD)である。ストレージ装置10は、記憶部11、主コントローラ12及びSASコントローラ13を備えている。
【0018】
記憶部11は、ストレージ装置10がHDDの場合、磁気ディスクを記憶媒体として有している。記憶部11は、ストレージ装置10がSSDの場合、フラッシュメモリを記憶媒体として有している。主コントローラ12は、記憶部11へのデータの書き込み、または記憶部11からのデータの読み出しを制御する。主コントローラ12は、内部バス32を介してSASコントローラ13に物理的に接続されている。
【0019】
SASコントローラ13は、SASバス31を介してエクスパンダ30と物理的に接続されている。このエクスパンダ30には、上述の4つのホスト20−1〜20−4が物理的に接続されている。しかし、エクスパンダ30に物理的に接続されるホストの数は4である必要はない。
【0020】
SASコントローラ13は、ストレージ装置10の外部にあるSASインタフェースを持った機器との接続を制御する。なお、SASコントローラ13に代えて、SASインタフェース以外のインタフェース、例えば、SATA(Serial ATA)インタフェース、或いはSCSIインタフェースのようなインタフェースを持ったインタフェースコントローラを用いてもよい。
【0021】
説明の簡略化のために、SASコントローラ13に物理的に直接接続可能な外部機器(イニシエータ)の数(以下、SASコントローラ13の許容数と称する)は1であるものとする。つまりSASコントローラ13は、1つのSASポート(イニシエータポート)を備えているものとする。エクスパンダ30は、ストレージ装置10に物理的に接続すべき外部機器の数が、SASコントローラ13の許容数を超える場合に用いられる。第1の実施形態では、上述のようにエクスパンダ30に4つのホスト20−1〜20−4が物理的に接続されている。この場合、エクスパンダ30は、4つのホスト20−1〜20−4をストレージ装置10に物理的に接続することができる。
【0022】
ホスト20−1〜20−4の1つであるホスト20−i(i=1,2,3または4)は、SASコントローラ13の制御によりストレージ装置10と接続(論理的に接続)することができる。この状態において、ホスト20−iとストレージ装置10とは、相互に通信、例えばデータを送受信することができる。このように、第1の実施形態においてストレージ装置10と接続可能なホストの数は1つであり、複数のホストが同時にストレージ装置10に接続することはできない。そのため、例えばホスト20−1がストレージ装置10に接続されていると、他のホスト、例えばホスト20−2がストレージ装置10に接続を要求した場合、当該接続要求は拒否される。この場合、ホスト20−2は、ホスト20−1とストレージ装置10との接続が切断される(クローズされる)まで待たされる。
【0023】
このとき、ホスト20−1が、何らかの影響で、例えばフレームの送受信を行っていないものとする。このような場合、SASコントローラ13は、ホスト20−1が接続を占有する時間を調節する。これにより、ホスト20−2からの接続要求に対して適切な接続が可能になる。
【0024】
次に、図1に示されるSASコントローラ13について詳細に説明する。
図2は、SASコントローラ13の構成を示すブロック図である。
図2の説明を行う前に、例えば、ホスト20−1がストレージ装置10と接続してから、ストレージ装置10との接続が切断されるまでの一般的なハンドシェイクの例(第1の動作例)について、図3を参照して説明する。
【0025】
図3は、イニシエータ(Initiator 1)としてのホスト20−1(第1のホスト)とターゲット(Target)としてのストレージ装置10との間で行われる、接続から切断までのフレームやプリミティブなどの送受信の通信シーケンス(ハンドシェイク)を示すシーケンスチャートである。
図3において、ホスト20−1(Initiator 1)及びストレージ装置10(Target)は、エクスパンダ30(Expander)を介して相互にフレームやプリミティブなどを送受信する。
【0026】
まず、ホスト20−1(Initiator 1)において、当該ホスト20−1からストレージ装置(Target)10にコマンドフレーム(COMMAND)を送信する必要が発生したものとする。すると、ホスト20−1とストレージ装置10との接続を確立するための接続(オープン)シーケンスが次のように開始される。
【0027】
始めに、ホスト20−1は、ストレージ装置10への接続の要求として、OPENアドレス・フレームを送信する。ストレージ装置10は、ホスト20−1によって送信されたOPENアドレス・フレームをエクスパンダ30を介して受信する。するとストレージ装置10は、他のホストと接続されていないならば、接続許可のプリミティブとして、OPEN_ACCEPTプリミティブをホスト20−1に応答する。この時点で、ホスト20−1とストレージ装置10との間で接続が確立(または、完了)したことになる。この時点を第1の時点t1とする。
【0028】
上記接続の確立後、ストレージ装置10は、RRDYプリミティブをホスト20−1に送信する。RRDYプリミティブがホスト20−1に送信された時点で、当該ホスト20−1は、コマンドフレームを送信することが可能となる。
【0029】
そこで、ホスト20−1はコマンドフレーム(最初のフレーム)をストレージ装置10に送信する。ストレージ装置10は、コマンドフレームを受信すると、ACKプリミティブをホスト20−1に返す。するとホスト20−1は、データフレーム(DATA)を送信し始める。第1の時点t1の後、ストレージ装置10が最初のフレームを受信した時点を第2の時点t2とする。
【0030】
その後、ホスト20−1とストレージ装置10との間で幾つかのフレームの送受信が実行されたものとする。すると、ホスト20−1及びストレージ装置10は、現在確立している接続を切断する(閉じる)ための、次のような切断(クローズ)シーケンスに移行する。
【0031】
まずホスト20−1は、一連のフレームの送信が完了したことを知らせるためにDONEプリミティブをストレージ装置10に送信する。するとDONEプリミティブに対する応答として、ストレージ装置10はDONEプリミティブをホスト20−1に送信する。つまりホスト20−1及びストレージ装置10は、DONEプリミティブを交換する。同様にして、ホスト20−1及びストレージ装置10は最後に、CLOSEプリミティブを交換する。CLOSEプリミティブの交換が完了した時点で切断シーケンスは完了し、ホスト20−1(Initiator 1)とストレージ装置10(Target)との間の接続が切断された(閉じられた)ことになる。
【0032】
ところで、ホスト20−1とストレージ装置10との接続が確立している間に、ホスト20−1以外のホスト(例えばホスト20−2)から接続が要求されることがある。この場合、また、ホスト20−2は、ホスト20−1とストレージ装置10との接続が切断されるまで待たされる。
【0033】
また、ホスト20−1とストレージ装置10との接続が確立した後、図3の例とは異なって、何らかの要因でホスト20−1とストレージ装置10との間で全くフレームが送受信されないこともある。このような場合、従来技術のように、データ転送が開始されてからの経過時間に基づいてタイムアウトが検出される構成では、効果的なタイムアウト検出を行うことは難しい。つまり、ホスト20−2は、長時間待たされる。第1の実施形態では、このような場合を考慮して、所定の条件が成立した場合に、現在確立している接続が強制的に切断される。所定の条件は2つある。第1は、タイムアウト値(第1のタイムアウト値)151(図2参照)に基づく第1のタイムアウトの検出である。第2は、タイムアウト値(第2のタイムアウト値)152(図2参照)に基づく第2のタイムアウトの検出である。ここで、第1及び第2のタイムアウトの検出の起点となる時点が、従来技術と異なり、後述するように上記第1の時点t1であることに注意すべきである。
【0034】
第1の実施形態では、タイマ130にタイムアウト値151が設定される。これにより、上述のようにホスト20−1とストレージ装置10との間で全くフレームが送受信されない状態でも、第1の時点t1からの経過時間がタイムアウト値151の示す時間を超えた場合は、ホスト20−1とストレージ装置10との間の接続が切断される。
【0035】
第1の実施形態では、タイムアウト値151及び152の少なくともタイムアウト値151が、ストレージ装置10のSASコントローラ13によって調整される。そのためSASコントローラ13は、第1の時点t1から第2の時点t2までの時間(経過時間)を計測する。SASコントローラ13は少なくとも1つの計測結果に基づいて、タイムアウト値151を調整する。
【0036】
図2に戻って、上述したように、タイムアウト値を調整する機能を有するSASコントローラ13の構成について説明する。
SASコントローラ13は、SASバスインタフェース140、タイマ130、タイマ131、モニタ結果取得部132、モニタ結果保持部134、調整部136、イニシエータテーブル138及びストレージインタフェース142から構成される。
【0037】
タイマ130は、ホスト20−1〜20−4の1つであるホスト20−i(i=1,2,3または4)とストレージ装置10との接続が完了した第1の時点t1からの経過時間を計測する。タイマ130には、タイムアウト値151が設定される。タイマ130は、計測された経過時間がタイムアウト値151の示す時間(第1のタイムアウト時間)を超える第1のタイムアウトを検出する。タイマ130は第1のタイムアウトを検出すると、計測時間をクリアする。タイマ130に設定されるタイムアウト値151には、その時点において、ストレージ装置10と接続されているホスト20−iに対応するタイムアウト値T1i[x]が用いられる。タイムアウト値T1i[x]は、図9を参照して後述するようにホスト20−iに対応付けてイニシエータテーブル138に格納されている。
【0038】
タイマ131は、上記第1の時点t1からの経過時間を計測する。タイマ131には、タイムアウト値152が設定される。タイマ131は、計測された経過時間がタイムアウト値152の示す時間(第2のタイムアウト時間)を超える第2のタイムアウトを検出する。タイマ131は第2のタイムアウトを検出すると、計測時間をクリアする。タイマ131に設定されるタイムアウト値152には、その時点において、ストレージ装置10と接続されているホスト20−iに対応するタイムアウト値T2i[y]が用いられる。タイムアウト値T2i[y]は、図9を参照して後述するようにホスト20−iに対応付けてイニシエータテーブル138に格納されている。
【0039】
モニタ結果取得部132は、SASバスインタフェース140及びタイマ130の状態をモニタする。具体的には、モニタ結果取得部132は、SASバスインタフェース140の状態をモニタすることにより、ホスト20−iとストレージ装置10との接続が完了したことを検出する。モニタ結果取得部132はまた、SASバスインタフェース140及びタイマ130の状態をモニタすることにより、上記接続が完了した第1の時点t1の後、タイマ130がタイムアウトを検出する前に最初のフレームが受信されたことを検出する。モニタ結果取得部132はまた、最初のフレームの受信を検出した時点(つまり第2の時点)t2におけるタイマ130の計測時間を、モニタ結果として取得する。モニタ結果取得部132は、取得されたモニタ結果を、ホスト20−iに対応付けてモニタ結果保持部134に格納する。モニタ結果取得部132はさらに、タイマ130による第1のタイムアウト検出をモニタすることにより、ストレージ装置10(より詳細には、SASバスインタフェース140)を切断シーケンスに移行させる。
【0040】
モニタ結果保持部134は、モニタ結果取得部132によって取得されたモニタ結果をホスト20−i毎に保持する。ホスト20−iとストレージ装置10とが複数回接続された場合、モニタ結果保持部134には、ホスト20−iに対応付けて複数のモニタ結果が保持される。
【0041】
調整部136は、ホスト20−iに対応付けてモニタ結果保持部134に保持された少なくとも1つのモニタ結果に基づいて、タイムアウト値151を調整する。より詳細には調整部136は、タイムアウト値151として用いられた、ホスト20−iに対応付けてイニシエータテーブル138に格納されているタイムアウト値T1i[x]を調整する。タイムアウト値151の調整方法については後述する。調整部136は、ホスト20−iに対応付けてイニシエータテーブル138に格納されているタイムアウト値T1i[x]を、調整されたタイムアウト値に変更(更新)する。また、調整部136は、ホスト20−iとストレージ装置10とが接続される都度、ホスト20−iに対応付けてイニシエータテーブル138に格納されているタイムアウト値T1i[x]及びT2i[y]を、それぞれタイムアウト値151及び152として、タイマ130及び131に設定する。
【0042】
SASバスインタフェース140は、SASバス31を介してエクスパンダ30と物理的に接続されている。SASバスインタフェース140は、ホスト20−iと当該SASバスインタフェース140との間で、SASバス31及びエクスパンダ30を介してフレームやプリミティブなどを送受信する。SASバスインタフェース140は、接続切断手段としても機能する。つまりSASバスインタフェース140は、ホスト20−iとストレージ装置10とが接続されている状態で、タイマ130またはタイマ131がタイムアウトを検出した場合、ホスト20−iとストレージ装置10との接続を切断する。
【0043】
ストレージインタフェース142は、SASバスインタフェース140と物理的に接続されている。ストレージインタフェース142はまた、図1の主コントローラ12と内部バス32を介して物理的に接続されている。ストレージインタフェース142は、SASバスインタフェース140と主コントローラ12との間のデータ転送を行う。
【0044】
次に、図4を用いて、第1の実施形態の第2の動作例について説明する。ここではストレージ装置10に接続されるホスト20−iが、ホスト20−1であるものとする。図4は、第1の実施形態の第2の動作例における、ホスト20−1がストレージ装置10と接続されてから、ストレージ装置10との接続が切断されるまでのハンドシェイクを示すシーケンスチャートである。
【0045】
図4に示す第2の動作例は、図3に示した第1の動作例と、次の点で相違する。第1の動作例では、ホスト20−1(Initiator 1)とストレージ装置10(Target)との接続が確立された第1の時点t1の後、ホスト20−1からストレージ装置10に速やかにフレーム(図3の例ではコマンドフレーム)が送信される。これに対して、第2の動作例では、上記第1の時点t1の後、いつまでもホスト20−1(Initiator 1)が最初のフレームを送信しない。言い換えると、ホスト20−1(Initiator 1)は、データを送信していないにも関わらず、ストレージ装置10(Target)との間の接続を占有している。
【0046】
さらに図4の例では、ホスト20−1とストレージ装置10とが接続されている状態において、タイマ130が第1のタイムアウトを検出する前に、ホスト20−1とは異なる例えばホスト20−2(Initiator 2)が、ストレージ装置10(Target)に接続を要求している。しかし、ホスト20−1によって接続が占有されているため、ホスト20−2からの接続要求は拒否されている。
【0047】
さて、ストレージ装置10がホスト20−1から最初のフレームを受信することなく、タイマ130が、図4に示す第3の時点t3で第1のタイムアウトを検出したものとする。この場合、ストレージ装置10(より詳細には、SASコントローラ13のSASバスインタフェース140)はホスト20−1との接続を強制的に切断するために、前述した切断シーケンスに移行する。これによりストレージ装置10はDONEプリミティブをホスト20−1に送信する。するとDONEプリミティブに対する応答として、ホスト20−1はDONEプリミティブをストレージ装置10に返す。同様にして、ストレージ装置10及びホスト20−1はCLOSEプリミティブを交換する。これにより、ホスト20−1とストレージ装置10との接続が切断される。
【0048】
すると、接続待ち状態にあるホスト20−2は、例えば、当該ホスト20−2よりも先に接続待ち状態にある他のホストが存在しないならば、ストレージ装置10に接続することが可能となる。しかし、第1のタイムアウトの検出に用いられた第1のタイムアウト値が調整されていないならば、ホスト20−1は、余分な時間、ストレージ装置10との接続を占有していた可能性がある。つまり、ホスト20−2は、ストレージ装置10に接続可能となるまで余分な時間待たされていた可能性がある。
【0049】
そこで第1の実施形態では、ホスト20−1に対応付けられている第1のタイムアウト値を、ストレージ装置10(より詳細には、SASコントローラ13の調整部136)が後述するように調整する。つまりストレージ装置10は、ホスト20−1に適した第1のタイムアウト値を設定する。これにより、図4に示すような状況において、ホスト20−1が無駄な時間接続を占有することを防止することが可能になる。
【0050】
次に、第1の実施形態の第3の動作例について図5を用いて説明する。図4に示す第2の動作例と同様の動作に関しては説明を省略する。
図5は、第1の実施形態の第3の動作例における、ホスト20−1がストレージ装置10と接続されてから、ストレージ装置10との接続が切断されるまでのハンドシェイクを示すシーケンスチャートである。
【0051】
図5に示す第3の動作例では、図3に示す第1の動作例と異なり、ホスト20−1によるデータフレームの送信が繰り返し行われる。一連のデータフレームの送信が完了していないにも関わらず、タイマ131が、図5に示す第4の時点t4で第2のタイムアウトを検出したものとする。このような状態は、例えば、ホスト20−1から送信されるフレームの容量が膨大である場合や、通信速度が低下した場合に生じる。この場合、ストレージ装置10(より詳細には、SASコントローラ13のSASバスインタフェース140)はホスト20−1との接続を強制的に切断するために、前述した切断シーケンスに移行する。
【0052】
次に、第1の実施形態で適用される第1のタイムアウト値調整方法について図6を参照して説明する。
図6は、イニシエータテーブル138に格納されている、ホスト20−1に対応したタイムアウト値T11[n-1](n=2,3,4,…)をタイムアウト値T11[n]に調整する第1のタイムアウト値調整方法(以下、平均法と称する)の例を示す。タイムアウト値T11[n-1] 及びT11[n]は、前述のタイムアウト値T11[x]に相当する。ここで、タイムアウト値T11[n-1]及びT11[n]における、[]内のn−1及びnは、ホスト20−1とストレージ装置10とが接続された回数を表す。
【0053】
まず、ホスト20−1とストレージ装置10とが接続され、これによりホスト20−1とストレージ装置10とが接続された回数がn−1となったものとする。このとき、イニシエータテーブル138には、ホスト20−1に対応付けてタイムアウト値T11[n-1]が格納されているものとする。この場合、調整部136は、タイムアウト値T11[n-1]を、タイムアウト値151として、タイマ130に設定する。なお、タイマ131へのタイムアウト値の設定については後述する。
【0054】
タイマ130は、前述の第1の時点t1から経過時間を計測する。このタイマ130によって第1の時点t1から第2の時点t2までに計測された経過時間t2−t1をt[n-1]とする。タイムアウト値T11[n-1]の示す時間をT11[n-1]とする。上記計測された経過時間t[n-1]は、前述したようにモニタ結果取得部132によって取得されて、モニタ結果保持部134に保持される。
【0055】
調整部136は、取得された経過時間t[n-1]とタイムアウト時間T11[n-1]とを平均した時間(平均時間)T11[n]を、次式
T11[n] = (T11[n-1] + t[n-1]) / 2(n ≧ 2)
に従って算出する。
【0056】
平均法では、平均時間T11[n]を示す値が、ホスト20−1とストレージ装置10との次の接続時のタイムアウト値T11[n]として用いられる。そのため調整部136は、ホスト20−1に対応付けてイニシエータテーブル138に格納されているタイムアウト値をT11[n-1]からT11[n]に更新する。なお、nが2の場合のタイムアウト値T11[n-1]、つまりタイムアウト値T11[1](T11[x]=T11[1])は、最初の接続時に用いられ、例えば1msである。タイムアウト値T11[1]の示す時間T11[1]は、図6に示されるT1に相当する。
【0057】
次に、経過時間t[n-1]がタイムアウト時間T11[n-1]を超えるタイムアウトが発生した場合を想定する。この場合、調整部136は、タイムアウト値T11[n-1]を定数倍、例えば1.2倍する。調整部136は、1.2倍された値を、次の接続時のタイムアウト値T11[n]とする。
【0058】
具体的に図6を参照して説明する。以下の説明では、ホスト20−1とストレージ装置10との接続を前提としている。まず、1回目の接続時においてタイムアウトは発生しなかったものとする。この場合、調整部136は、T11[1]=T1(=1ms)とt[1]との平均値T11[2]を計算する。調整部136は、現在イニシエータテーブル138に保持されているT11[1]をT11[2]に更新する。これにより、2回目の接続の開始時には、T11[2]がタイムアウト値151としてタイマ130に設定される。つまりタイムアウト値151が調整される。
【0059】
2回目及び3回目の接続時においてもタイムアウトは発生しなかったものとする。この場合、調整部136は、1回目の接続時と同様に、平均値を計算することにより、3回目及び4回目の接続時に使用されるT11[3]及びT11[4]を逐次取得する。調整部136は、T11[3]を取得した場合には、イニシエータテーブル138に保持されている元のT11[2]を当該T11[3]に更新する。これにより、3回目の接続の開始時には、T11[3]がタイムアウト値151としてタイマ130に設定される。また調整部136は、T11[4]を取得した場合には、イニシエータテーブル138に保持されている元のT11[3]を当該T11[4]に更新する。これにより、4回目の接続の開始時には、T11[4]がタイムアウト値151としてタイマ130に設定される。
【0060】
4回目の接続では、タイムアウトが発生している。したがって、前述したように、5回目の接続時に使用されるT11[5]は、T11[4]を定数倍した値に設定される。例えば、定数倍の値が1.2であれば、T11[5]=T11[4]×1.2である。
【0061】
図6において、ホスト20−1の接続回数は5回に限らない。また、1回目の接続時に使用されるT11[1]=T1は、1msに限らない。
【0062】
以上のようなタイムアウト値調整方法(平均法)を適用する第1の実施形態によれば、タイムアウトが発生しない限り、接続を繰り返すに従い、タイマ130に設定されるタイムアウト値151は小さくなる。したがって、タイムアウトが発生した場合に、ホスト20−1が接続を占有する時間を短くすることが可能である。
【0063】
[第2の実施形態]
次に第2の実施形態について説明する。
第1の実施形態と同様の構成や機能については説明を省略する。
第2の実施形態では、第1の実施形態で適用された第1のタイムアウト値調整法(平均法)とは異なる、第2のタイムアウト値調整法(加減算法)を用いる。具体的に、その加減算法について図7を参照しながら説明する。図7は、図6と同様の形式で、加減算法を説明するための図である。
【0064】
まず、例えばホスト20−1とストレージ装置10とが接続されており、その接続回数がn−1であるものとする。また、このn−1回目の接続時においてタイムアウトが発生しなかったものとする。つまり、t2の時点で、タイマ130が計測した経過時間が、n−1回目の接続時に設定されたタイムアウト値T11[n-1]の示す時間を超えなかったものとする。この場合、調整部136は加減算法を適用し、設定されたタイムアウト値T11[n-1]から、一定の値を減算する。これとは逆に、タイムアウトが発生した場合、調整部136は、タイムアウト値T11[n-1]に、一定の値を加算する。加減算法では、この減算または加算された値が、次のn接続時のタイムアウト値T11[n]として用いられる。
【0065】
具体的に図7を参照して説明する。1回目の接続時において、タイムアウトは発生していない。したがって、前述したように、調整部136は、T11[1]から一定の値を減算した値T11[2]を計算する。調整部136は、現在イニシエータテーブル138に保持されているT11[1]=T2(=1ms)を、その計算された値T11[2]に更新する。これにより、2回目の接続の開始時には、T11[2]がタイムアウト値151としてタイマ130に設定される。つまりタイムアウト値151が調整される。
【0066】
また、2回目の接続時においても、1回目の接続時と同様にタイムアウトが発生していない。したがって、1回目の接続時と同様に3回目の接続の開始時のタイムアウト値151は、T11[2]から一定の値を減算した値T11[3]となる。
【0067】
3回目の接続時において、タイムアウトが発生している。したがって、前述したように、調整部は、T11[3]に一定の値を加算する。この場合、イニシエータテーブル138に保持されているT11[3]は、加算されたT11[4]に更新される。そして、4回目の接続の開始時において、調整部136はT11[4]をタイムアウト値151としてタイマ130に設定する。
図7において、ホスト20−1の接続回数は5回に限らない。また、1回目の接続時に使用されるT11[1]=T2は、1msに限らない。
【0068】
なお、上述の加減算法において用いられる一定の値は、必要に応じて変更することができる。ここで現在用いられている一定の値をTとする。もし、タイムアウトが発生する可能性を現在よりも低くしたいならば、一定の値としてTよりも小さな値を使用するとよい。その理由は、加減算によって調整されるタイムアウト値の変化量が小さくなるためである。
【0069】
逆に、現在よりもタイムアウトが発生する可能性が高くなったとしても、例えばホスト20−1が接続を占有する時間を短くしたいならば、一定の値としてTよりも大きな値を使用するとよい。その理由は、加減算によって調整されるタイムアウト値の変化量が大きくなるためである。
【0070】
以上のように、タイムアウト値調整方法(加減算法)を適用する第2の実施形態によれば、簡単な計算でタイムアウト値を調整できる。また、前述した一定の値を目的に応じた値に適宜変更することで効果的なタイムアウト値の調整ができる。
【0071】
[第3の実施形態]
次に第3の実施形態について説明する。
第2の実施形態と同様に、第1の実施形態と同様の構成または機能については説明を省略する。
第3の実施形態の特徴は、タイムアウト値の調整に第3のタイムアウト調整法(最大値法)を使用する点にある。以下、ホスト20−1とストレージ装置10との接続を例に、図8及び図9を参照して最大値法について説明する。
【0072】
第3の実施形態で適用される最大値法では、予め定められた複数回の接続が完了するまでは、タイムアウト値の調整は行われない。つまり、タイムアウト値の調整を開始する前に、予め定められた複数回の接続のそれぞれにおいて、前述したようなt1からt2までの経過時間t[n-1](n=2,3,4,…)がサンプリングされる。これにより、複数のサンプリング結果が取得される。この取得された複数のサンプリング結果の最大値が、予め定められた複数回の接続よりも後の接続における、タイムアウト値として用いられる。第3の実施形態において、予め定められた複数回は、100回である。また第3の実施形態では、タイムアウトが発生した場合には、第1の実施形態と同様に、その時点におけるタイムアウト値が定数倍される。
【0073】
もし、第3の実施形態と異なって、1回目の接続が完了した後に、当該1回目の接続でサンプリングされた経過時間が次回の接続時のタイムアウト値として用いられるものとする。この場合、1回目の接続時にサンプリングされた経過時間が短かった場合、2回目の接続において、タイムアウトが発生する可能性が高くなる。
【0074】
これに対して第3の実施形態では、複数回(100回)の接続のそれぞれでサンプリングされた経過時間の最大値が、次回の接続時におけるタイムアウト値として用いられる。このように、サインプリング数を増やすことにより、複数のサンプリング結果の最大値は、当該複数のサンプリング結果の傾向を十分に表している。つまり複数のサンプリング結果の最大値は、ホスト20−1とストレージ装置10との間の接続時における上述の経過時間の傾向を十分に表している。この最大値を次回の接続時におけるタイムアウト値として用いことにより、次回以降(ここでは、101回目以降)の接続時にタイムアウトが発生する可能性を低くすることができる。
【0075】
具体的に図8を参照して説明する。図8は、ホスト20−1とストレージ装置10との間の100回の接続における、各接続時のt[n-1]のサンプリング結果を示す図である。
【0076】
このサンプリングは次のように行われる。タイマ130が、ホスト20−1とストレージ装置10との間の100回の各接続において、t1からt2までの経過時間を計測する。モニタ結果保持部134は、その計測結果をモニタ結果として保持する。調整部136は、そのモニタ結果に基づいて、101回目の接続時に用いられるタイムアウト値を決定する。
【0077】
図8のt[1]乃至t[100]は、タイマ130が計測した経過時間を示している。調整部136は、t[1]乃至t[100]の中で最大の値を示すt[7]=T3を、101回目の接続時に用いられるタイムアウト値に決定する。
【0078】
また、調整部136は、t[1]乃至t[100]の平均値T4を、101回目の接続時に用いられるタイムアウト値とすることもできる。つまり、最大値法において、複数のサンプリングを行う場合、101回目の接続時に用いられるタイムアウト値の決定方法が2つある。第1は、100個のサンプリング値の最大値T3を用いる方法である。第2は、100個のサンプリング値の平均値T4を用いる方法である。
以上のように、100回の接続のサンプリング期間を設けて、101回目の接続時に使用されるタイムアウト値が算出される。
【0079】
次に、この算出されたタイムアウト値T3またはT4を用いた、101回目以降の接続における、タイムアウト値調整について、図9を参照しながら説明する。
図9は、ホスト20−1とストレージ装置10との間の101回目乃至105回目の接続における、タイムアウト値調整を、図6及び図7と同様の形式で説明するための図である。
【0080】
図9のT5として、上述したT3またはT4が用いられるものとする。
101回目の接続において、タイムアウトは発生していない。したがって、101回目に設定されたタイムアウト値T11[101]=T5が、そのまま、102回目のタイムアウト値T11[102]になる。
【0081】
102回目の接続においても、タイムアウトは発生していない。したがって、102回目に設定されたタイムアウト値T11[102]が、そのまま、103回目のタイムアウト値T11[103]になる。
【0082】
103回目の接続において、タイムアウトが発生している。この場合、調整部136は、103回目に設定されたタイムアウト値T11[103]を定数倍した値を計算する。その計算結果が、104回目の接続時に設定されるタイムアウト値T11[104]になる。
【0083】
104回目の接続において、タイムアウトは発生していない。したがって、調整部136は、105回目の接続時に用いられるタイムアウト値T11[105]に、104回目の接続時に設定されたタイムアウト値T11[104]を、そのまま適用する。
【0084】
以上のように、第3の実施形態では最大値法を用いてタイムアウト値が調整される。
また、最大値法において、複数回の接続にまたがるサンプリング期間を設けることで効果的にタイムアウト値を調整することができる。例えば、100回の接続で得られたサンプリングの結果の最大値を101回目の接続のタイムアウト値に設定することで、101回目以降の接続においてタイムアウトする可能性を低くすることができる。また、100回の接続で得られたサンプリングの結果の平均値を101回目の接続時のタイムアウト値に設定することで、101回目以降の接続においてタイムアウトが発生した場合に、ホスト20−1が接続を占有する時間を短くすることができる。
【0085】
さらに、タイムアウトが発生した際に用いられる定数倍の値(定数値)は、目的に応じた値に適宜変更することが可能である。したがって、この定数値を大きくすることで、タイムアウトが発生した以降の接続において、タイムアウトが発生する可能性を低くすることができる。また、定数値を小さくすることで接続の占有時間を短くすることができる。
【0086】
なお、上述したようなサンプリング回数は複数であればよく、100回に限らない。また、上述した定数値は、例えば1.3であるが、これ以外の値でもよい。
【0087】
前記第1の実施形態の第3の動作例(図5参照)では、ストレージ装置10に送信すべきデータフレームがホスト20−1内に残されているにも拘わらずに、ホスト20−1とストレージ装置10との接続が切断される。このような現象の発生を極力防止するために、上述したタイムアウト値151の調整と同様に、タイムアウト値152を調整することも可能である。つまり、モニタ結果取得部132がタイマ131の状態をモニタすることにより、時点t1から時点t3までの経過時間をモニタ結果として取得する。調整部136は、取得された少なくとも1つのモニタ結果に基づいて、ホスト20−1とストレージ装置10とが接続された際に用いられる、タイムアウト値152を調整する。より詳細には調整部136は、タイムアウト値152として用いられた、ホスト20−1に対応付けてイニシエータテーブル138に格納されているタイムアウト値T21[y]を調整する。この調整されたタイムアウト値T21[y]をタイムアウト値152として用いることによって、ホスト20−1による一連のデータフレームの送信が完了した後に上記接続を切断することが可能になる。
【0088】
以上、ホスト20−1とストレージ装置10との接続において、タイマ130及び131にそれぞれタイムアウト値150及び151として用いられるタイムアウト値T11[x]及びT21[y]を調整する方法について説明した。この調整方法は、ホスト20−2,20−3または20−4とストレージ装置10との接続において用いられるタイムアウト値の調整にも同様に適用できる。
【0089】
最後に、第1乃至第3の実施形態で共通に適用されるイニシエータテーブル138について、図10を用いて詳しく説明する。
まず、ホスト20−1〜20−4のそれぞれに関して、上述のt1からt2までの経過時間及びt1からt3までの時間は、異なる可能性が高い。したがって、上述したようなタイムアウト値の最適値は、ホスト毎に異なる。そこで、ホスト毎にタイムアウト値を格納する必要がある。
【0090】
図10は、イニシエータテーブル138のデータ構造例を示した図である。イニシエータテーブル138は、図1に示されるホスト20−1,20−2,203及び20−4にそれぞれ対応した領域138−1、138−2、138−3、138−4から構成される。
【0091】
ホスト20−1に対応した領域138−1について具体的に説明する。領域138−1は、複数のレジスタ、例えば第0乃至第8のレジスタから構成されている。領域138−1の第0乃至第8のレジスタには、ホスト20−1に関する管理情報が格納されている。管理情報は、例えば、SASアドレス及び2つのタイムアウト値を含む。
【0092】
図10の例では、ホスト20−1に対応する領域138−1の第7及び第8レジスタに、前述したタイムアウト値T11[x]及びT21[y]に相当するタイムアウト値T11及びT21が格納されている。ホスト20−1とストレージ装置10とが接続される場合、この領域138−1の第7及び第8レジスタに格納されているタイムアウト値T11及びT21が、それぞれ、タイマ130及び131に設定される。ホスト20−2〜20−4に対応した領域138−2〜138−4についても、ホスト20−1に対応した領域138−1と同様である。
【0093】
このように、ホスト21−i(i=1〜4)に対応したイニシエータテーブル138内の領域に当該ホスト21−iに対応したタイムアウト値(より詳細には、調整されたタイムアウト値)が格納される。これにより、ホスト21−iがストレージ装置10と接続する毎に、当該ホスト21−iに適した調整済みのタイムアウト値をリアルタイムに使用することが可能である。
【0094】
第1乃至第3の実施形態によれば、ホストとストレージ装置との接続が確立した時点t1から接続確立後に最初のフレームが受信された時点t2までの経過時間に基づいてタイムアウト値が調整される。これにより、ホストに適したタイムアウト値にリアルタイムに調整でき、接続が確立しているにも関わらずに最初のフレームがホストから送信されない場合にも、効果的にタイムアウトを発生できる。また第1乃至第3の実施形態によれば、ホストとストレージ装置との接続が確立した後、データフレームの送信に時間を要する場合にも、効果的にタイムアウトを発生できる。
【0095】
以上説明した少なくとも1つの実施形態によれば、接続が確立しているにも関わらずに最初のフレームがホストから送信されないような状況においても、効果的にタイムアウトを発生可能とする、ホストに適したタイムアウト時間を設定することができるインタフェースコントローラ、ストレージ装置及びタイムアウト時間設定方法を提供できる。
【0096】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0097】
10・・・ストレージ装置、20−1〜20−4・・・ホスト、11・・・記憶部、13・・・SASコントローラ、31・・・SASバス、130・・・タイマ(第1のタイマ)、131・・・タイマ(第2のタイマ)、132・・・モニタ結果取得部、134・・・モニタ結果保持部、136・・・調整部、138・・・イニシエータテーブル、140・・・SASバスインタフェース(接続切断手段)、142・・・ストレージインタフェース、151・・・タイムアウト値(第1のタイムアウト値)、152・・・タイムアウト値(第2のタイムアウト値)。
【特許請求の範囲】
【請求項1】
複数のホスト装置から所定のインタフェースバスを介してアクセス可能なストレージ装置におけるインタフェースコントローラであって、
前記インタフェースコントローラが前記複数のホスト装置のうちの第1のホスト装置と接続された第1の時点からの経過時間を計測し、前記計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する第1のタイマと、
前記第1の時点の後で且つ前記第1のタイムアウトの検出前に前記第1のホスト装置からの最初のフレームが受信された第2の時点における前記計測された経過時間を示す値をモニタ結果として取得するモニタ結果取得手段と、
前記取得されたモニタ結果を保持するモニタ結果保持手段と、
前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する調整手段と
を具備するインタフェースコントローラ。
【請求項2】
前記少なくとも1つのモニタ結果は、前記インタフェースコントローラが前記第1のホスト装置と複数回接続された後に前記モニタ結果保持手段に保持されている複数のモニタ結果であり、
前記調整手段は、前記複数のモニタ結果に基づいて前記複数のモニタ結果の傾向を検出し、前記検出された傾向に基づいて、前記第1のタイムアウト値を調整する
請求項1記載のインタフェースコントローラ。
【請求項3】
前記調整手段は、前記複数のモニタ結果の最大の値を前記検出された傾向を表す値として取得し、前記第1のタイムアウト値を前記取得された最大の値に変更する請求項2記載のインタフェースコントローラ。
【請求項4】
前記調整手段は、前記複数のモニタ結果の平均値を前記検出された傾向を表す値として取得し、前記第1のタイムアウト値を前記取得された平均値に変更する請求項2記載のインタフェースコントローラ。
【請求項5】
前記少なくとも1つのモニタ結果は最新のモニタ結果であり、
前記調整手段は、前記第1のタイムアウト値と前記最新のモニタ結果との平均値を計算し、且つ前記第1タイムアウト値を前記計算された平均値に変更する請求項1記載のインタフェースコントローラ。
【請求項6】
前記少なくとも1つのモニタ結果は最新のモニタ結果であり、
前記調整手段は、前記最新のモニタ結果が取得された場合、前記第1のタイムアウト値を所定の値だけ減じる請求項1記載のインタフェースコントローラ。
【請求項7】
前記複数のホスト装置の各々に対応付けてタイムアウト値を保持するタイムアウト値保持手段をさらに具備し、
前記第1のタイマは、前記インタフェースコントローラが前記第1のホスト装置と接続された場合、前記第1のホスト装置に対応付けて前記タイムアウト値保持手段に保持されているタイムアウト値を前記第1のタイムアウト値として使用し、
前記調整手段は、前記第1タイムアウト値として使用された前記タイムアウト値保持手段に保持されているタイムアウト値を調整する
請求項1記載のインタフェースコントローラ。
【請求項8】
前記第1の時点からの経過時間を計測し、前記計測された経過時間と前記第1のタイムアウト値よりも大きい第2のタイムアウトとに基づいて第2のタイムアウトを検出する第2のタイマと、
前記第1のタイムアウトまたは前記第2のタイムアウトの検出に応じて前記第1のホスト装置と前記インタフェースコントローラとの接続を切断する接続切断手段と
をさらに具備する請求項1記載のインタフェースコントローラ。
【請求項9】
記憶手段と、
複数のホスト装置のうちの第1のホスト装置が所定のインタフェースバスを介して前記記憶手段にアクセスするために、前記第1のホスト装置によって送られる接続要求に応じて、前記第1のホスト装置との接続を制御するインタフェースコントローラとを具備し、
前記インタフェースコントローラは、
前記インタフェースコントローラが前記第1のホストと接続された第1の時点からの経過時間を計測し、前記計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する第1のタイマと、
前記第1の時点の後で且つ前記第1のタイムアウトの検出前に前記第1のホストからの最初のフレームが受信された第2の時点における前記計測された経過時間を示す値をモニタ結果として取得するモニタ結果取得手段と、
前記取得されたモニタ結果を保持するモニタ結果保持手段と、
前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する調整手段とを具備する
ストレージ装置。
【請求項10】
複数のホスト装置から所定のインタフェースバスを介してアクセス可能なストレージ装置におけるタイムアウト値調整方法であって、
前記ストレージ装置と前記複数のホスト装置のうちの第1のホスト装置とが接続された第1の時点からの経過時間を計測し、
前記第1の時点から第1のタイムアウト値の示す時間が経過するまでに前記第1のホスト装置からの最初のフレームが受信されなかった場合、第1のタイムアウトを検出し、
前記第1の時点から前記第1のタイムアウト値の示す時間が経過する前の第2の時点に前記第1のホスト装置からの最初のフレームが受信された場合、前記第2の時点における前記計測された経過時間を示す値をモニタ結果として取得し、
前記取得されたモニタ結果をモニタ結果保持手段に保持し、
前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する
タイムアウト値調整方法。
【請求項1】
複数のホスト装置から所定のインタフェースバスを介してアクセス可能なストレージ装置におけるインタフェースコントローラであって、
前記インタフェースコントローラが前記複数のホスト装置のうちの第1のホスト装置と接続された第1の時点からの経過時間を計測し、前記計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する第1のタイマと、
前記第1の時点の後で且つ前記第1のタイムアウトの検出前に前記第1のホスト装置からの最初のフレームが受信された第2の時点における前記計測された経過時間を示す値をモニタ結果として取得するモニタ結果取得手段と、
前記取得されたモニタ結果を保持するモニタ結果保持手段と、
前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する調整手段と
を具備するインタフェースコントローラ。
【請求項2】
前記少なくとも1つのモニタ結果は、前記インタフェースコントローラが前記第1のホスト装置と複数回接続された後に前記モニタ結果保持手段に保持されている複数のモニタ結果であり、
前記調整手段は、前記複数のモニタ結果に基づいて前記複数のモニタ結果の傾向を検出し、前記検出された傾向に基づいて、前記第1のタイムアウト値を調整する
請求項1記載のインタフェースコントローラ。
【請求項3】
前記調整手段は、前記複数のモニタ結果の最大の値を前記検出された傾向を表す値として取得し、前記第1のタイムアウト値を前記取得された最大の値に変更する請求項2記載のインタフェースコントローラ。
【請求項4】
前記調整手段は、前記複数のモニタ結果の平均値を前記検出された傾向を表す値として取得し、前記第1のタイムアウト値を前記取得された平均値に変更する請求項2記載のインタフェースコントローラ。
【請求項5】
前記少なくとも1つのモニタ結果は最新のモニタ結果であり、
前記調整手段は、前記第1のタイムアウト値と前記最新のモニタ結果との平均値を計算し、且つ前記第1タイムアウト値を前記計算された平均値に変更する請求項1記載のインタフェースコントローラ。
【請求項6】
前記少なくとも1つのモニタ結果は最新のモニタ結果であり、
前記調整手段は、前記最新のモニタ結果が取得された場合、前記第1のタイムアウト値を所定の値だけ減じる請求項1記載のインタフェースコントローラ。
【請求項7】
前記複数のホスト装置の各々に対応付けてタイムアウト値を保持するタイムアウト値保持手段をさらに具備し、
前記第1のタイマは、前記インタフェースコントローラが前記第1のホスト装置と接続された場合、前記第1のホスト装置に対応付けて前記タイムアウト値保持手段に保持されているタイムアウト値を前記第1のタイムアウト値として使用し、
前記調整手段は、前記第1タイムアウト値として使用された前記タイムアウト値保持手段に保持されているタイムアウト値を調整する
請求項1記載のインタフェースコントローラ。
【請求項8】
前記第1の時点からの経過時間を計測し、前記計測された経過時間と前記第1のタイムアウト値よりも大きい第2のタイムアウトとに基づいて第2のタイムアウトを検出する第2のタイマと、
前記第1のタイムアウトまたは前記第2のタイムアウトの検出に応じて前記第1のホスト装置と前記インタフェースコントローラとの接続を切断する接続切断手段と
をさらに具備する請求項1記載のインタフェースコントローラ。
【請求項9】
記憶手段と、
複数のホスト装置のうちの第1のホスト装置が所定のインタフェースバスを介して前記記憶手段にアクセスするために、前記第1のホスト装置によって送られる接続要求に応じて、前記第1のホスト装置との接続を制御するインタフェースコントローラとを具備し、
前記インタフェースコントローラは、
前記インタフェースコントローラが前記第1のホストと接続された第1の時点からの経過時間を計測し、前記計測された経過時間と第1のタイムアウト値とに基づいて第1のタイムアウトを検出する第1のタイマと、
前記第1の時点の後で且つ前記第1のタイムアウトの検出前に前記第1のホストからの最初のフレームが受信された第2の時点における前記計測された経過時間を示す値をモニタ結果として取得するモニタ結果取得手段と、
前記取得されたモニタ結果を保持するモニタ結果保持手段と、
前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する調整手段とを具備する
ストレージ装置。
【請求項10】
複数のホスト装置から所定のインタフェースバスを介してアクセス可能なストレージ装置におけるタイムアウト値調整方法であって、
前記ストレージ装置と前記複数のホスト装置のうちの第1のホスト装置とが接続された第1の時点からの経過時間を計測し、
前記第1の時点から第1のタイムアウト値の示す時間が経過するまでに前記第1のホスト装置からの最初のフレームが受信されなかった場合、第1のタイムアウトを検出し、
前記第1の時点から前記第1のタイムアウト値の示す時間が経過する前の第2の時点に前記第1のホスト装置からの最初のフレームが受信された場合、前記第2の時点における前記計測された経過時間を示す値をモニタ結果として取得し、
前記取得されたモニタ結果をモニタ結果保持手段に保持し、
前記モニタ結果保持手段に保持されている少なくとも1つのモニタ結果に基づいて、前記第1のタイムアウト値を調整する
タイムアウト値調整方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2012−128560(P2012−128560A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−278066(P2010−278066)
【出願日】平成22年12月14日(2010.12.14)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願日】平成22年12月14日(2010.12.14)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]