(57)【要約】【課題】記憶装置への、シーケンシャルアクセスに関するアクセス要求とランダムアクセスに関するアクセス要求とが混在する状況下でのランダムアクセスに関するアクセス要求に対する応答の遅延を防止する。【解決手段】ランダム特性を有するアクセス要求に対応するコマンドの発行数と、シーケンシャル特性を有するアクセス要求に対応するコマンドの発行数との比率と閾値とを比較した結果に応じて、記憶装置に発行されたコマンドの実行順を記憶装置に決定させることを指示する第１の識別情報を付与したコマンド、又は記憶装置が受け取ったコマンド順にコマンドを実行することを指示する第２の識別情報を付与したコマンドを生成して記憶装置に発行し、取得したアクセス要求がランダム特性の場合、コマンド発行から記憶装置からの応答があるまでの時間を計測し、今回の計測時間と前回の計測時間とを比較した結果に応じて閾値を調整することにより、上記課題の解決を図る。【選択図】図１
2014010709.tif 000002
【特許請求の範囲】
【請求項１】
ランダムアクセスにより情報を記憶する記憶装置へアクセスすることを指示するランダム特性を有するアクセス要求、またはシーケンシャルアクセスにより該記憶装置にアクセスすることを指示するシーケンシャル特性を有するアクセス要求を取得する取得部と、
前記ランダム特性を有する前記アクセス要求に対応する前記記憶装置へのコマンドの発行数と、前記シーケンシャル特性を有する前記アクセス要求に対応する前記記憶装置へのコマンドの発行数と、の比率と閾値とを比較する比較部と、
前記発行数の比率と前記閾値とを比較した結果に応じて、前記記憶装置に対して発行されたコマンドの実行順を前記記憶装置に決定させることを指示する第１の識別情報を付与したコマンド、または、前記記憶装置が受け取ったコマンド順にコマンドを実行することを指示する第２の識別情報を付与したコマンドを生成する生成部と、
前記記憶装置に対して、生成した前記コマンドを発行する発行部と、
取得した前記アクセス要求がランダム特性を有する場合、前記コマンドを発行してから前記記憶装置からの応答があるまでの時間を計測する計測部と、
前記計測による今回の計測時間と前回の計測時間とを比較した結果に応じて、前記閾値を調整する調整部と、
を備えることを特徴とするストレージ制御装置。
【請求項２】
前記今回の計測時間が前記前回の計測時間より短い場合、前記調整部は、前回、前記閾値から所定値を減算している場合には該閾値から所定値を減算し、前回、前記閾値に所定値を加算している場合には、該閾値に所定値を加算する
ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記今回の計測時間が前記前回の計測時間より長い場合、前記調整部は、前回、前記閾値から所定値を減算している場合には該閾値に所定値を加算し、前回、前記閾値に所定値を加算している場合には、該閾値から所定値を減算する
ことを特徴とする請求項１または２に記載のストレージ制御装置。
【請求項４】
前記生成部は、先に発行したコマンドのアクセス先のアドレスが、発行しようとするランダム特性を有するアクセス要求のアクセス先のアドレスと同一トラックにある場合、前記第１の識別情報を付与したコマンドを生成する
ことを特徴とする請求項１〜３のうちいずれか１項に記載のストレージ制御装置。
【請求項５】
コンピュータに、
ランダムアクセスにより情報を記憶する記憶装置へアクセスすることを指示するランダム特性を有するアクセス要求、またはシーケンシャルアクセスにより該記憶装置にアクセスすることを指示するシーケンシャル特性を有するアクセス要求を取得し、
前記ランダム特性を有する前記アクセス要求に対応する前記記憶装置へのコマンドの発行数と、前記シーケンシャル特性を有する前記アクセス要求に対応する前記記憶装置へのコマンドの発行数と、の比率と閾値とを比較し、
前記発行数の比率と前記閾値とを比較した結果に応じて、前記記憶装置に対して発行されたコマンドの実行順を前記記憶装置に決定させることを指示する第１の識別情報を付与したコマンド、または、前記記憶装置が受け取ったコマンド順にコマンドを実行することを指示する第２の識別情報を付与したコマンドを生成し、
前記記憶装置に対して、生成した前記コマンドを発行し、
取得した前記アクセス要求がランダム特性を有する場合、前記コマンドを発行してから前記記憶装置からの応答があるまでの時間を計測し、
前記計測による今回の計測時間と前回の計測時間とを比較した結果に応じて、前記閾値を調整する、
処理を実行させることを特徴とするストレージ制御プログラム。
【請求項６】
前記今回の計測時間が前記前回の計測時間より短い場合、前記コンピュータに、前回、前記閾値から所定値を減算している場合には該閾値から所定値を減算し、前回、前記閾値に所定値を加算している場合には、該閾値に所定値を加算する
ことを実行させること特徴とする請求項５に記載のストレージ制御プログラム。
【請求項７】
前記今回の計測時間が前記前回の計測時間より長い場合、前記コンピュータに、前回、前記閾値から所定値を減算している場合には該閾値に所定値を加算し、前回、前記閾値に所定値を加算している場合には、該閾値から所定値を減算する
ことを実行させること特徴とする請求項５または６に記載のストレージ制御プログラム。
【請求項８】
先に発行したコマンドのアクセス先のアドレスが、発行しようとするランダム特性を有するアクセス要求のアクセス先のアドレスと同一トラックにある場合、前記コンピュータに、前記第１の識別情報を付与したコマンドを生成する
ことを実行させること特徴とする請求項５〜７のうちいずれか１項に記載のストレージ制御プログラム。
【請求項９】
コンピュータにより実行されるストレージの制御を行うストレージ制御方法であって、
前記コンピュータは、
ランダムアクセスにより情報を記憶する記憶装置へアクセスすることを指示するランダム特性を有するアクセス要求、またはシーケンシャルアクセスにより該記憶装置にアクセスすることを指示するシーケンシャル特性を有するアクセス要求を取得し、
前記ランダム特性を有する前記アクセス要求に対応する前記記憶装置へのコマンドの発行数と、前記シーケンシャル特性を有する前記アクセス要求に対応する前記記憶装置へのコマンドの発行数と、の比率と閾値とを比較し、
前記発行数の比率と前記閾値とを比較した結果に応じて、前記記憶装置に対して発行されたコマンドの実行順を前記記憶装置に決定させることを指示する第１の識別情報を付与したコマンド、または、前記記憶装置が受け取ったコマンド順にコマンドを実行することを指示する第２の識別情報を付与したコマンドを生成し、
前記記憶装置に対して、生成した前記コマンドを発行し、
取得した前記アクセス要求がランダム特性を有する場合、前記コマンドを発行してから前記記憶装置からの応答があるまでの時間を計測し、
前記計測による今回の計測時間と前回の計測時間とを比較した結果に応じて、前記閾値を調整する、
処理を実行することを特徴とするストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムの制御技術に関する。
【背景技術】
【０００２】
ストレージ装置とは、複数のディスク装置を搭載したディスク記憶システムである。ディスク装置では、データをディスク上に記録することができる。ディスクへのアクセス方法には、シーケンシャルアクセス、ランダムアクセスが含まれる。シーケンシャルアクセスの場合、ディスク上において、連続したブロックに対して順次アクセスが実施される。ランダムアクセスの場合、ディスク上において、離散したブロックに対してアクセスが実施される。
【０００３】
SCSI（Small Computer System Interface）においては、ディスク装置へのアクセスを制御するメッセージが規格化されている。「Simple Queue Tag」メッセージは、コマンドキューを制御してディスク装置内の最適化を図るために、ディスク装置が実行順番を決めるメッセージである。「Ordered Queue Tag」メッセージは、既にキューイングされているキューを実行する、すなわちディスク装置が受け付けたコマンド順にコマンドを実行させるためのメッセージである。「Head Of Queue Tag」メッセージは、最優先でコマンドをディスク装置に実行させるメッセージである。
【０００４】
ディクスへのアクセスの際には、Simple Queue Tagが指定されることが多い。Simple Queue Tagが指定された場合には、物理アドレスが近い位置にあるアクセス先についてのコマンドが優先して処理されるという特性がある。
【０００５】
例えば、ディスクに対してシーケンシャルアクセスとランダムアクセスが、シーケンシャルアクセスの方が多い割合で競合したとする。また、コマンドA，B，D，Eによるアクセス先が、ディスク上において連続したブロック１，２，３，４であるとする。コマンドCによるアクセス先が、ディスク上においてブロック１〜４から離れたブロックであるとする。この場合に、ディスク装置が、コマンド１（シーケンシャルアクセス）、コマンド２（シーケンシャルアクセス）、コマンド３（ランダムアクセス）、コマンド４（シーケンシャルアクセス）、コマンド５（シーケンシャルアクセス）の順で、コマンドを受け付けたとする。すると、コマンド１（シーケンシャルアクセス）、コマンド２（シーケンシャルアクセス）、コマンド４（シーケンシャルアクセス）、コマンド５（シーケンシャルアクセス）、コマンド３（ランダムアクセス）の順で処理が行われる。
【０００６】
ディスク装置について、レスポンスを確保する技術として、例えば、次の技術がある。
第1の技術として、所定時間を経過しても実行されていないコマンドが検出された時にディスク装置のコマンド処理の促進を促すように制御を行う技術がある。
【０００７】
第２の技術として、次の技術がある。外部記憶制御部のコマンドバッチ生成部は、予測値テーブルによるコマンドの処理時間予測値の和が所定時間となる数のコマンドをグループ（バッチ）として受入キューから読み出す。バッチは送出キューに格納される。コマンドキューイング部はその中のコマンド処理時間の予測値が最長のディスク装置を選択し、それに対するコマンドを取り出して対応するディスク装置に発行するという動作を繰り返す。送出キューは空になると、これに次のバッチが読み込まれる。
【０００８】
第３の技術として、次の技術がある。記憶装置は、コマンドキューイングの機能を有し、コマンドを受領した順番で実行しないことがあり、後から来たコマンドに追い越される回数を制限する機能を有する。その記憶装置に、追い越される回数の制限数を二つ以上用意する。そして、その記憶装置にリードコマンドとライトコマンドで別々の値を適用する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０００−１８１８５３号公報
【特許文献２】特開平９−２５８９０７号公報
【特許文献３】特開２００１−２４９７７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、Simple Queue Tagが指定された場合には、シーケンシャルアクセスで指定されたコマンドについての処理が優先されて、ランダムアクセスで指定されたコマンドについての処理が取り残されることになる。一方で、ディスク装置において取り残されるコマンドを処理する技術があるが、そのコマンドが沈み込んでいる時間が長い。そこで、例えば、第１の技術のように、所定時間を経過しても実行されていないコマンドが検出された時に、 Ordered Queue Tag を発行することが考えられる。
【００１１】
しかしながら、第１の技術では、所定時間を経過しても実行されていないコマンドが検出された場合には全てOrdered Queue Tag が発行されるので、Ordered Queue Tagを発行し過ぎて、ディスク装置において最適化機能が動作しない可能性がある。その結果、ディスク装置の性能が劣化し、ディスク装置へのアクセスに対する応答の遅延につながる可能性がある。
【００１２】
そこで、本発明では、１つの側面として、記憶装置への、シーケンシャルアクセスに関するアクセス要求とランダムアクセスに関するアクセス要求とが混在する状況下でのランダムアクセスに関するアクセス要求に対する応答の遅延を防止する技術を提供する。
【課題を解決するための手段】
【００１３】
ストレージ制御装置は、取得部、比較部、生成部、計測部、調整部を含む。取得部は、ランダムアクセスにより情報を記憶する記憶装置へアクセスすることを指示するランダム特性を有するアクセス要求、またはシーケンシャルアクセスにより記憶装置にアクセスすることを指示するシーケンシャル特性を有するアクセス要求を取得する。比較部は、ランダム特性を有するアクセス要求に対応する記憶装置へのコマンドの発行数と、シーケンシャル特性を有するアクセス要求に対応する記憶装置へのコマンドの発行数と、の比率と閾値とを比較する。生成部は、発行数の比率と閾値とを比較した結果に応じて、第１の識別情報を付与したコマンド、または、第２の識別情報を付与したコマンドを生成する。第１の識別情報は、記憶装置に対して発行されたコマンドの実行順を記憶装置に決定させることを指示する識別情報である。第２の識別情報は、記憶装置が受け取ったコマンド順にコマンドを実行することを指示する識別情報である。発行部は、記憶装置に対して、生成したコマンドを発行する。計測部は、取得したアクセス要求がランダム特性を有する場合、コマンドを発行してから記憶装置からの応答があるまでの時間を計測する。調整部は、計測による今回の計測時間と前回の計測時間とを比較した結果に応じて、閾値を調整する。
【発明の効果】
【００１４】
本発明の１つの側面として、記憶装置への、シーケンシャルアクセスに関するアクセス要求とランダムアクセスに関するアクセス要求とが混在する状況下でのランダムアクセスに関するアクセス要求に対する応答の遅延を防止することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態におけるストレージシステムのブロック図を示す。
【図２】本実施形態におけるストレージシステムの一例を示す。
【図３】コントローラモジュールからディスク装置へ送信されるコマンド情報のデータ構造を示す。
【図４】本実施形態におけるコントローラモジュールにおいて管理されるパラメータの一例を示す。
【図５Ａ】本実施形態におけるコントローラモジュールによる処理フロー（その１）を示す。
【図５Ｂ】本実施形態におけるコントローラモジュールによる処理フロー（その２）を示す。
【発明を実施するための形態】
【００１６】
上述のように、Simple Queue Tagが指定された場合には、シーケンシャルアクセスで指定されたコマンドについての処理が優先されて、ランダムアクセスで指定されたコマンドについての処理が取り残されることになる。一方で、ディスク内部において、取り残されるコマンドを処理する技術があるが、そのコマンドが沈み込んでいる時間が長い。
【００１７】
このような問題を回避する方法の例として、第１の技術のように、所定時間を経過しても実行されていないコマンドが検出された時に、 Ordered Queue Tag を発行することが考えられる。
【００１８】
しかしながら、第１の技術では、上述したように、所定時間を経過しても実行されていないコマンドが検出された場合には全てOrdered Queue Tag が発行されるので、Ordered Queue を発行し過ぎて、ディスク装置において最適化が動作しない可能性がある。その結果、ディスク装置の性能劣化につながる可能性がある。第1の技術では、ディスクアクセスのアドレス位置によらずに、Ordered Queue Tagが指定されている。例えば、アドレスA，B，C が昇順で配置されているとする。ディスクアクセス時のコマンドは、アドレスC，A，Bの順で発行されたとする。ディスク装置において最適化が行わない場合は、それらのアドレスへのアクセス順は、コマンドの発行順と同じになる。アドレスCへのアクセス終了後、アドレスAへアクセスする場合、ディスクはアドレスCからアドレスAまで約１回転するので、その間待ち時間が発生し、ディスク装置へのアクセスに対する応答の遅延に繋がる。
【００１９】
上記第１の技術以外にも、次の方法が挙げられる。
例えば、sequential write（シーケンシャルアクセスによる書き込み処理）とrandom read（ランダムアクセスによるリード処理）が競合する場合には、次の方法が考えられる。例えば、メインフレームシステムにおいて、sequential writeとrandom readが競合する場合に、random readに対して Ordered  Queue Tagを指定することが考えられる。
【００２０】
しかしながら、sequential read/random read、またはsequential write/random write 等のsequential writeとrandom readとの組み合わせ以外の組み合わせが競合した場合には、Ordered  Queue Tagが指定されないので、応答遅延の問題を救済できない。また、メインフレームシステム以外のオープンシステムにおいては、当該方法を行っていない。また、sequential writeとrandom readが競合し、random readの性能劣化が見られない場合にも、Ordered Queue Tagで発行してしまうので、結果的に性能劣化につながる可能性がある。また、Ordered Queue Tag 発行時間が例えば約1秒間継続するため、結果的に性能劣化につながる可能性がある。
【００２１】
また、ディスク装置に対して ｍ（ｍ：整数）個毎に Ordered Queue Tag が発行されるように設定することが考えられる。この場合、システムエンジニア（SE）またはカスタマエンジニア（CE）が手動でｍの値を設定する必要がある。
【００２２】
しかしながら、ｍに誤った値が設定された場合は期待する効果が期待できない。ｍに誤って大きな値が設定された場合、シーケンシャルアクセスとランダムアクセスとが競合したときには、ランダムアクセスによるコマンドについての処理が遅延する恐れがある。ｍに誤って小さな値が設定された場合、シーケンシャルアクセスとランダムアクセスとが競合したときには、シーケンシャルアクセスだけの入力／出力の場合、性能劣化する可能性がある。また、サーバ装置がアクセス方法について最適な値を設定するは難しい。また、システムの都合でアクセスパターンが変わるとｍの値の変更が必要になる可能性ある。また、同一RAID（Redundant Arrays of Independent Disks）グループ内に論理ユニット番号（LUN：logical unit number）が増えると、ｍの値の変更が必要になる可能性ある。
【００２３】
そこで、本実施形態では、ストレージ装置に内蔵するハードディスクドライブ（HDD）等のディスク装置へのアクセス制御技術について説明する。具体的には、ストレージ装置のコントローラによる、ディスク装置へのアクセスについてシーケンシャル特性とランダム特性のアクセスが混在した状況で顕著化するランダム特性のアクセスのレスポンスの遅延を防止する技術について説明する。
【００２４】
図１は、本実施形態におけるストレージシステムのブロック図を示す。ストレージシステム１は、ストレージ制御装置２と、記憶装置９を含む。記憶装置９は、情報を記憶する。記憶装置９の一例としては、後述するディスク装置１９が挙げられる。
【００２５】
ストレージ制御装置２は、取得部３、比較部４、生成部５、発行部６、計測部７、調整部８を含む。ストレージ制御装置２の一例として、後述するコントローラモジュール１３が挙げられる。
【００２６】
取得部３は、ランダムアクセスにより記憶装置９へアクセスすることを指示するランダム特性を有するアクセス要求、またはシーケンシャルアクセスにより記憶装置９にアクセスすることを指示するシーケンシャル特性を有するアクセス要求を取得する。取得部３の一例として、後述するＣＰＵ１５によるＳ１の処理が挙げられる。
【００２７】
比較部４は、ランダム特性を有するアクセス要求に対応する記憶装置９へのコマンドの発行数と、シーケンシャル特性を有するアクセス要求に対応する記憶装置９へのコマンドの発行数と、の比率と閾値とを比較する。比較部４の一例として、後述するＣＰＵ１５によるＳ５の処理が挙げられる。
【００２８】
生成部５は、発行数の比率と閾値とを比較した結果に応じて、第１の識別情報を付与したコマンド、または、第２の識別情報を付与したコマンドを生成する。第１の識別情報は、記憶装置９に対して発行されたコマンドの実行順を記憶装置９に決定させることを指示する識別情報である。第１の識別情報は、記憶装置９が受け取ったコマンド順にコマンドを実行することを指示する識別情報である。生成部５の一例として、後述するＣＰＵ１５によるＳ４、Ｓ９の処理が挙げられる。
【００２９】
発行部６は、記憶装置９に対して、生成したコマンドを発行する。発行部６の一例として、後述するＣＰＵ１５によるＳ１０、Ｓ１２の処理が挙げられる。
計測部７は、取得したアクセス要求がランダム特性を有する場合、コマンドを発行してから記憶装置９からの応答があるまでの時間を計測する。計測部７の一例として、後述するＣＰＵ１５によるＳ１３の処理が挙げられる。
【００３０】
調整部８は、計測による今回の計測時間と前回の計測時間とを比較した結果に応じて、閾値を調整する。調整部８の一例として、後述するＣＰＵ１５によるＳ１４〜Ｓ１６の処理が挙げられる。
【００３１】
このように構成することにより、記憶装置９に対するシーケンシャル特性とランダム特性のアクセス（Read／Write）が混在した状況で顕著化するランダム特性のアクセスのレスポンスの遅延を回避することができる。
【００３２】
今回の計測時間が前回の計測時間より短い場合、調整部８は、前回、閾値から所定値を減算している場合には閾値から所定値を減算し、前回、閾値に所定値を加算している場合には、閾値に所定値を加算する。また、今回の計測時間が前回の計測時間より長い場合、調整部は、前回、閾値から所定値を減算している場合には閾値に所定値を加算し、前回、閾値に所定値を加算している場合には、閾値から所定値を減算する。
【００３３】
このように構成することにより、ランダムアクセスの際の応答時間の増加・減少に応じて、コマンドにOrdered Queue Tagを付与して、ランダムアクセスによるコマンドの実行タイミングを調整することができる。
【００３４】
また、生成部５は、先に発行したコマンドのアクセス先のアドレスが、発行しようとするランダム特性を有するアクセス要求のアクセス先のアドレスと同一トラックにある場合、第１の識別情報を付与したコマンドを生成する。
【００３５】
このように構成することにより、記憶装置９へのアクセス先のアドレスの近傍か否かを判定することにより、 記憶装置９が有するアクセスの最適化機能も十分に活用することができる。
【００３６】
本実施形態について、以下に、より詳細に説明する。
図２は、本実施形態におけるストレージシステムの一例を示す。ストレージシステム１１は、複数のディスク装置１９を搭載したディスク記憶システムである。ホストコンピュータ（以下、ホストと称する）２１からディスク装置１９へのアクセスに関して、冗長化のために、各ディスク装置１９に対して、２本のアクセスパスが存在している。またデータ自体についても、RAIDを用いて複数台のディスクにデータが分散されて、冗長化した状態で保存されている。
【００３７】
ストレージシステム１１は、ホストコンピュータ（以下、ホストと称する）２１、ファイバチャネル（ＦＣ）スイッチ２２、コントローラエンクロージャ（ＣＥ）１２、ドライブエンクロージャ（ＤＥ）１８を含む。ストレージシステム１１は、ドライブエンクロージャ（ＤＥ）１８と、ホスト２１とが、ＦＣスイッチ２２、コントローラモジュール（ＣＭ）１３を介して接続されている。
【００３８】
ホスト２１は、ＦＣスイッチ２２を介してコントローラエンクロージャ（ＣＥ）１２と通信をして、ドライブエンクロージャ（ＤＥ）１８が有するディスク装置１９からデータを読み出したり、ディスク装置１９にデータを書き込んだりする。なお、図２では、１つのホスト２１を図示しているが、複数のホスト２１が、コントローラエンクロージャ（ＣＥ）１２に接続されていてもよい。
【００３９】
コントローラエンクロージャ（ＣＥ）１２は、複数のコントローラモジュール（ＣＭ）１３を含む。コントローラモジュール１３は、ディスク装置１９の動作制御を行う。各コントローラモジュール１３は、ストレージ制御装置として機能する。ストレージシステム１１は、運用に使用するコントローラモジュール（ＣＭ）１３を２以上有することで、冗長性を確保する。
【００４０】
コントローラモジュール（ＣＭ）１３は、アクセス指示情報として入出力（Ｉ／Ｏ）コマンドをドライブエンクロージャ（ＤＥ）１８に送信し、ディスク装置１９の記憶領域に対するデータの入出力指令を行う。また、入出力指令からアクセス監視時間が経過しても応答が得られないときは、コントローラモジュール（ＣＭ）１３は、このＩ／Ｏ処理を中断するアボート指示コマンドをドライブエンクロージャ（ＤＥ）１３に送信する。
【００４１】
コントローラモジュール１３は、チャネルアダプタ（ＣＡ）１４、中央演算装置（ＣＰＵ：Central Processing Unit）１５、記憶部１６、デバイスアダプタ（ＤＡ）１７を含む。チャネルアダプタ（ＣＡ）１４、ＣＰＵ１５、記憶部１６、デバイスアダプタ（ＤＡ）１７は、内部バスを介して接続されている。
【００４２】
チャネルアダプタ（ＣＡ）１４は、ＦＣスイッチ２２を介して、ホスト２１と接続されている。ＣＰＵ１５は、コントローラモジュール１３全体を制御する。
記憶部１６は、例えば、キャッシュメモリ、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等の情報を記録するデバイスである。記憶部１６には、コントローラモジュール１３を動作させるために用いるデータ、及び本実施形態に係るプログラム及び本実施形態で用いるデータ等が格納される。
【００４３】
デバイスアダプタ（ＤＡ）１７は、ドライブエンクロージャ（ＤＥ）１８に接続される。ＣＰＵ１５は、デバイスアダプタ１７を介してドライブエンクロージャ（ＤＥ）１８との間でデータの送受信を行う。
【００４４】
ドライブエンクロージャ（ＤＥ）１８は、１以上のドライブエンクロージャ（ＤＥ）より形成される。ドライブエンクロージャ（ＤＥ）１８は、複数のディスク装置１９を含み、冗長性を考慮したRAID構成を有する。なお、ディスク装置１９は、ハードディスクドライブ（HDD）に限らず、例えばＳＳＤ（Solid State Drive）や、光磁気ディスク等であってもよい。また、本実施形態では、記憶装置の一例として、ディスク装置１９を用いたが、これに限定されず、ランダムアクセス及びシーケンシャルアクセスのいずれのアクセス方法も可能な記憶装置であればよい。
【００４５】
図３は、コントローラモジュールからディスク装置へ送信されるコマンド情報のデータ構造を示す。アクセス要求情報３１は、タグフィールド３２、コマンドフィールド３３を含む。タグフィールド３２には、「Simple Queue Tag」、「Ordered Queue Tag」、「Head Of Queue Tag」等の、ＳＣＳＩ規格によるキュータグが設定される。コマンドフィールド３３には、データの書き込み命令、データの読み込み命令についてのコマンドが設定される。
【００４６】
図４は、本実施形態におけるコントローラモジュールにおいて管理されるパラメータの一例を示す。コントローラモジュール１３は、シーケンシャル特性発行回数ｉ（ｉ：整数）、規定値Ｎ（Ｎ：整数）、今回のレスポンスタイムＴ１（Ｔ１：実数）、前回のレスポンスタイムＴ２（Ｔ２：実数）、前回更新方向フラグＤ等のパラメータを記憶部１６（ＲＡＭ等）に格納している。
【００４７】
シーケンシャル特性発行回数ｉは、シーケンシャル特性を有するアクセス要求に対応してディスク装置１９に発行したコマンドの回数を示す。ｉには初期値として「０」が格納されている。規定値Ｎ（Ｎ：整数）は、シーケンシャル特性発行回数ｉの閾値であり、予め設定されている。
【００４８】
今回計測したレスポンスタイムＴ１には、コマンドを発行してから、そのコマンドに対する応答情報を受信するまでの今回の計測時間が格納される。前回計測したレスポンスタイムＴ２には、コマンドを発行してから、そのコマンドに対する応答情報を受信するまでの前回の計測時間が格納される。
【００４９】
前回更新方向フラグＤは、前回、規定値Ｎに所定値を加算したか、または、規定値Ｎから所定値を減算したかを判定する情報であり、例えば「＋」または「−」、「１」または「０」等のフラグ情報が格納されている。なお、本実施形態では、所定値として「１」を用いているが、これに限定されない。
【００５０】
図５Ａ及び図５Ｂは、本実施形態におけるコントローラモジュールによる処理フローを示す。以下で説明する処理は、コントローラモジュール１３、具体的にはＣＰＵ１５が実行する処理である。
【００５１】
まず、コントローラモジュール１３は、ＦＣスイッチ２２及びチャネルアダプタ（ＣＡ）１４を介して、ホスト２１から、ディスク装置１９に対するアクセス要求を取得する（Ｓ１）。
【００５２】
コントローラモジュール１３は、そのアクセス要求がシーケンシャル特性か、ランダム 特性かを、アクセス領域のアドレスによって判定する（Ｓ２）。すなわち、コントローラモジュール１３は、前回取得したアクセス要求と今回取得したアクセス要求について、アクセス先のアドレスが連続している場合には、シーケンシャル特性と判定し、不連続の場合にはランダム特性と判定する。
【００５３】
アクセス要求がシーケンシャル特性であると判定した場合（Ｓ２で「Ｎｏ」）、コントローラモジュール１３は、シーケンシャル特性発行回数ｉに、「１」を加算する（Ｓ３）。それから、コントローラモジュール１３は、ホスト２１から取得したアクセス要求に基づいて、キュータグ「Simple Queue Tag」を付加したコマンドを生成する（Ｓ４）。
【００５４】
アクセス要求がランダム特性であると判定した場合（Ｓ２で「Ｙｅｓ」）、コントローラモジュール１３は、シーケンシャル特性発行回数ｉが、規定値Ｎに達したか否かを判定する（Ｓ５）。
【００５５】
シーケンシャル特性発行回数ｉが、規定値Ｎに達していない場合（Ｓ５で「Ｎｏ」）、コントローラモジュール１３は、ホスト２１から取得したアクセス要求に基づいて、キュータグ「Simple Queue Tag」を付加したコマンドを生成する（Ｓ４）。
【００５６】
シーケンシャル特性発行回数ｉが、規定値Ｎに達していない場合（Ｓ５で「Ｙｅｓ」）、コントローラモジュール１３は、シーケンシャル特性発行回数ｉを初期化して「０」にする（Ｓ６）。
【００５７】
シーケンシャル特性発行回数ｉの初期化後、コントローラモジュール１３は、先行するコマンドのアクセス領域のアドレスが、発行しようとするランダム特性のアクセス要求のアクセス領域のアドレスの近傍であるか否かを判定する（Ｓ７）。ここで、アクセス領域のアドレスの近傍とは、例えば、先行するコマンドのアクセス領域のアドレスが、発行しようとするランダム特性のアクセス要求のアクセス領域のアドレスとがディスク上の同一トラックに存在する場合を示す。
【００５８】
先行するコマンドのアクセス領域のアドレスが、発行しようとするランダム特性のアクセス要求のアクセス領域のアドレスの近傍である場合（Ｓ７で「Ｙｅｓ」）、コントローラモジュール１３は、次の処理を行う。すなわち、コントローラモジュール１３は、ホスト２１から取得したアクセス要求に基づいて、キュータグ「Simple Queue Tag」を付加したコマンドを生成する（Ｓ４）。
【００５９】
コントローラモジュール１３は、ディスク装置１９に対して、Ｓ４で付加したキュータグを含むコマンドを発行する（Ｓ１０）。コントローラモジュール１３は、ディスク装置１９から、そのコマンドに対する応答情報を取得し（Ｓ１１）、その応答情報をホスト２１へ返信する。
【００６０】
先行するコマンドのアクセス領域のアドレスが、発行しようとするランダム特性のアクセス要求のアクセス領域のアドレスの近傍である場合（Ｓ７で「Ｎｏ」）、コントローラモジュール１３は、タイマの監視を開始する（Ｓ８）。それから、コントローラモジュール１３は、ホスト２１から取得したアクセス要求に基づいて、キュータグ「Ordered Queue Tag」を付加したコマンドを生成する（Ｓ９）。
【００６１】
コントローラモジュール１３は、ディスク装置１９に対して、Ｓ９で付加したキュータグを含むコマンドを発行する（Ｓ１２）。コントローラモジュール１３は、ディスク装置１９から、そのコマンドに対する応答情報を取得し（Ｓ１３）、その応答情報をホスト２１へ返信する。このとき、コントローラモジュール１３は、Ｓ１２においてコマンドを発行してから、Ｓ１３においてコマンドに対する応答情報を受信するまでの時間（レスポンスタイム）Ｔ１を計測する。
【００６２】
コントローラモジュール１３は、今回計測したレスポンスタイムＴ１が前回計測したレスポンスタイムＴ２より短いか否かを判定する（Ｓ１４）。
【００６３】
今回計測したレスポンスタイムＴ１が前回計測したレスポンスタイムＴ２より短い場合（Ｓ１４で「Ｙｅｓ」）、コントローラモジュール１３は、前回更新方向フラグＤに基づいて、前回更新した方向に規定値Ｎを更新する（Ｓ１５）。前回規定値Ｎをプラス側に更新した場合（前回更新方向フラグＤに「＋」が設定されている場合）、コントローラモジュール１３は、さらに、規定値Ｎをプラス側に更新する。前回、規定値Ｎをマイナス側に更新した場合（前回更新方向フラグＤに「−」が設定されている場合）、コントローラモジュール１３は、さらに、規定値Ｎをマイナス側に更新する。例えば、前回、規定値Ｎに「１」を加算している場合（前回更新方向フラグＤに「＋」が設定されている場合）には、今回、コントローラモジュール１３は、さらに規定値Ｎに「１」を加算する。また、前回、規定値Ｎから「１」を減算している場合には（前回更新方向フラグＤに「−」が設定されている場合）、今回、コントローラモジュール１３は、さらに規定値Ｎから「１」を減算する。
【００６４】
今回計測したレスポンスタイムＴ１が前回計測したレスポンスタイムＴ２と同じまたはより長い場合（Ｓ１４で「Ｎｏ」）、コントローラモジュール１３は、前回更新した方向に逆方向に規定値Ｎを更新する（Ｓ１６）。すなわち、前回、規定値Ｎをプラス側に更新した場合（前回更新方向フラグＤに「＋」が設定されている場合）、コントローラモジュール１３は、規定値Ｎをマイナス側に更新する。前回、規定値Ｎをマイナス側に更新した場合（前回更新方向フラグＤに「−」が設定されている場合）、コントローラモジュール１３は、規定値Ｎをプラス側に更新する。例えば、前回、規定値Ｎに「１」を加算している場合（前回更新方向フラグＤに「＋」が設定されている場合）には、今回、コントローラモジュール１３は、規定値Ｎから「１」を減算する。また、前回、規定値Ｎから「１」を減算している場合（前回更新方向フラグＤに「−」が設定されている場合）には、今回、コントローラモジュール１３は、規定値Ｎに「１」を加算する。
【００６５】
Ｓ１５またはＳ１６の処理後、コントローラモジュール１３は、規定値Ｎを加減に応じて、前回更新方向フラグＤを更新する（Ｓ１６）。すなわち、規定値Ｎに「１」を加算した場合、コントローラモジュール１３は、前回更新方向フラグＤに「＋」を設定する。規定値Ｎから「１」を減算した場合、コントローラモジュール１３は、前回更新方向フラグＤに「−」を設定する。
【００６６】
さらに、コントローラモジュール１３は、前回計測したレスポンスタイムＴ２を、今回計測したレスポンスタイムＴ１の値で更新する（Ｓ１７）。
ホスト２１からのアクセス要求が発生する度に、コントローラモジュール１３は、Ｓ１〜Ｓ１８の処理を行う。
【００６７】
このように、本実施形態では、コントローラモジュール１３は、ディスク装置１９へのアクセス要求がシーケンシャル特性か、ランダム特性かを判定する。コントローラモジュール１３は、シーケンシャル特性のコマンド発行数ｎ（＝規定値Ｎ）に対してランダム特性１の割合でキュータグに「Ordered Queue Tag」を指定し、ディスク装置１９にコマンドを発行する。
【００６８】
キュータグに「Ordered Queue Tag」が指定されている場合、コントローラモジュール１３は、発行したコマンドに対するディスク装置１９からの応答を受け取るまでのレスポンスタイムをチェックする。ランダム特性の場合のレスポンスタイムが現在保持しているレスポンスタイムよりも改善された場合、コントローラモジュール１３は、コマンド発行数ｎの値を、前回変更した方向に変更する。ランダム特性の場合のレスポンスタイムが現在保持しているレスポンスタイムよりも悪化した場合、コントローラモジュール１３は、コマンド発行数ｎの値を、前回変更した方向とは逆の方向に変更する。コントローラモジュール１３は、「シーケンシャル特性ｎ：ランダム特性１」のコマンド発行数ｎを、レスポンスタイムが最適になるように調整する。
【００６９】
これにより、ディスク装置に対するシーケンシャル特性とランダム特性のアクセスが混在した状況で顕著化するランダム特性のアクセスのレスポンスの遅延を防止することができる。
【００７０】
ただし、先行するコマンド（シーケンシャル／ランダム特性に関わらない）のアクセス領域のアドレスが、発行しようとするランダム特性のアクセス要求のアクセス領域のアドレスの近傍である場合は、コントローラモジュール１３は、次の処理を行う。すなわち、コントローラモジュール１３は、例外として、Queue Tagを「Simple Queue Tag」に設定してコマンドを発行する。
【００７１】
これにより、ディスク装置へのアクセス先のアドレスの近傍か否かを判断する事で ディスク装置１９が有するアクセスの最適化機能も十分に活用し、かつ、レスポンス遅延の発生を予防することができる。これにより、ディスク装置から最適なレスポンスを保証することができる。
【００７２】
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００７３】
１      ストレージシステム
２      ストレージ制御装置
３      取得部
４      比較部
５      生成部
６      発行部
７      計測部
８      調整部
９      記憶装置
１１      ストレージシステム
１２      コントローラエンクロージャ（ＣＥ）
１３      コントローラモジュール（ＣＭ）
１４      チャネルアダプタ（ＣＡ）
１５      ＣＰＵ
１６      記憶部
１７      デバイスアダプタ（ＤＡ）
１８      ドライブエンクロージャ（DE）１８
１９      ディスク装置
２１      ホスト
２２      ＦＣスイッチ
【図１】
2014010709.tif 000003
【図２】
2014010709.tif 000004
【図３】
2014010709.tif 000005
【図４】
2014010709.tif 000006
【図５Ａ】
2014010709.tif 000007
【図５Ｂ】
2014010709.tif 000008