(57)【要約】【課題】ゾーン分割によりディスクアクセス時のシークロスを改善する機能において、ゾーン分割の効果を維持しつつ、コマンドの沈み込みを防ぐこと。【解決手段】モード判断部２８がＨＤＤへのアクセス状況に基づいて応答時間を優先させるかスループットを優先させるか判断し、モード切替部２９がモード判断部２８の判断結果に基づいて連続発行数の閾値を更新する。また、モード判断部２８は、シーケンシャルアクセスが行われているかランダムアクセスが行われているか及びReadコマンド数とWriteコマンド数の比に基づいて応答時間を優先させるかスループットを優先させるかを判断する。【選択図】図３
2015158725.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域を分割して得られるゾーン毎にコマンドをキューイングして各ゾーンのキューから連続してコマンドを発行するストレージ制御装置において、
前記記憶領域へのアクセス状況に基づいて１つのゾーンへのコマンドの連続発行数の閾値を更新する更新部と、
前記更新部により更新される閾値に基づいて各ゾーンからのコマンドの発行を制御する発行制御部と、
を備えたことを特徴とするストレージ制御装置。
【請求項２】
前記記憶領域へのアクセス状況に基づいて応答時間を優先すべきかスループットを優先すべきかを判断する判断部をさらに備え、
前記更新部は、前記判断部による判断結果に基づいて前記閾値を更新することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記記憶領域へのアクセス状況に基づいてシーケンシャルアクセスが行われているかランダムアクセスが行われているかを判定する判定部をさらに備え、
前記判断部は、前記判定部による判定結果に基づいて応答時間を優先すべきかスループットを優先すべきかを判断することを特徴とする請求項２に記載のストレージ制御装置。
【請求項４】
前記判定部は、ランダムアクセスが行われていると判定した場合に、書き込み中心か読出し中心かを判定し、
前記判断部は、前記判定部により書き込み中心のランダムアクセスが行われていると判定された場合に、スループットを優先すると判断し、前記判定部により読み出し中心のランダムアクセスが行われていると判定された場合に、応答時間を優先すると判断することを特徴とする請求項３に記載のストレージ制御装置。
【請求項５】
前記更新部は、応答時間及びスループットについての目標値及び最悪値に基づいて前記閾値を更新することを特徴とする請求項１〜４のいずれか１つに記載のストレージ制御装置。
【請求項６】
前記更新部は、応答時間を優先すべきでもスループットを優先すべきでもない場合に、応答時間もスループットも最悪値より悪いときは、応答時間の最悪値に対する比とスループットの最悪値に対する比に基づいて前記閾値を更新することを特徴とする請求項５に記載のストレージ制御装置。
【請求項７】
前記更新部は、応答時間を優先すべきでもスループットを優先すべきでもない場合に、応答時間もスループットも目標値より良いとき、又は応答時間もスループットも目標値と最悪値の範囲内であるときは、応答時間の目標値に対する比とスループットの目標値に対する比に基づいて前記閾値を更新することを特徴とする請求項５に記載のストレージ制御装置。
【請求項８】
記憶装置と該記憶装置を分割して得られるゾーン毎にコマンドをキューイングして各ゾーンのキューから連続してコマンドを発行するストレージ制御装置とを有するストレージ装置において、
前記ストレージ制御装置は、
前記記憶装置へのアクセス状況に基づいて１つのゾーンへのコマンドの連続発行数の閾値を更新する更新部と、
前記更新部により更新される閾値に基づいて各ゾーンからのコマンドの発行を制御する発行制御部と
を備えたことを特徴とするストレージ装置。
【請求項９】
記憶領域を分割して得られるゾーン毎にコマンドをキューイングして各ゾーンのキューから連続してコマンドを発行するストレージ制御プログラムにおいて、
前記記憶領域へのアクセス状況に基づいて１つのゾーンへのコマンドの連続発行数の閾値を更新し、
更新した閾値に基づいて各ゾーンからのコマンドの発行を制御する
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ装置及びストレージ制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置で用いられるＨＤＤ（Hard  Disk  Drive）のアクセス時間には、シーク時間、回転待ち時間及びデータ転送時間が含まれる。このうち、シーク時間が最も時間がかかる。そこで、シーク時間を短縮する従来技術として、ディスク内の領域を複数のゾーンに区切り、特定のゾーンへアクセスするコマンドを連続して発行することで、シークロスを抑える技術がある。
【０００３】
また、シーク時間を短縮する従来技術として、上位計算機から送出されたコマンドをデータのアドレスにより連続領域をアクセスするように並び替える技術がある。また、ヘッダが位置付けされているシリンダに最も近いシリンダをアクセスするコマンドの処理順位を最優先とするコマンドリオーダリングにより優先順位を低くされたコマンドがタイムアウトとならないようにする従来技術がある。
【０００４】
また、コマンドキューイング機能を有する装置に対して発行済で且つ終了報告を受けていないコマンド数が制限数より小さくない場合には新たなコマンドを発行しない従来技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１６０２７号公報
【特許文献２】特開平６−２５９１９８号公報
【特許文献３】特開平５−１３４８１０号公報
【特許文献４】特開２０００−９９４４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ディスク内の領域を複数のゾーンに区切り、特定のゾーンへアクセスするコマンドを連続して発行する技術には、コマンドの沈み込みが発生するという問題がある。ここで、コマンドの沈み込みとは、あるコマンドの発行が他のコマンドの発行により長く待たされることを意味する。
【０００７】
図１８は、コマンドの沈み込みの一例を示す図である。図１８は、２０個のゾーンキュー0〜ゾーンキュー19があり、ゾーンキュー0には５１個のコマンドがある場合を示す。また、１つのゾーンキューから連続して発行されるコマンドの最大数を示す閾値は５０であるとする。
【０００８】
図１８において、ゾーンキュー0から５０個のコマンドが発行されると、コマンドが発行されるゾーンキューが切り替えられる。したがって、ゾーンキュー0の５１番目のコマンドは最大で閾値（５０）×（ゾーン数（２０）−１）＝９５０個のコマンドの発行を待つ必要があり、コマンドの沈み込みが発生する。
【０００９】
コマンドの沈み込みを防ぐためには、閾値の値を小さくすることが考えられるが、閾値の値が小さすぎると、コマンドが発行されるゾーンキューの切り替えが頻繁に発生し、ゾーンキューを用いる利点がなくなる。
【００１０】
本発明は、１つの側面では、ゾーン分割によりディスクアクセス時のシークロスを改善する機能において、ゾーン分割の効果を維持しつつ、コマンドの沈み込みを防ぐことを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示するストレージ制御装置は、１つの態様において、記憶領域を分割して得られるゾーン毎にコマンドをキューイングして各ゾーンのキューから連続してコマンドを発行するストレージ制御装置である。ストレージ制御装置は、前記記憶領域へのアクセス状況に基づいて１つのゾーンへのコマンドの連続発行数の閾値を更新する更新部と、前記更新部により更新される閾値に基づいて各ゾーンからのコマンドの発行を制御する発行制御部とを備える。
【発明の効果】
【００１２】
１実施態様によれば、ゾーン分割の効果を維持しつつ、コマンドの沈み込みを防ぐことができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係るストレージディスクアレイ装置の構成を示す図である。
【図２】図２は、ＣＭファームウェアの格納場所とＣＰＵによるＣＭファームウェアの実行を示す図である。
【図３】図３は、ＨＤＤドライブ部の機能構成を示す図である。
【図４】図４は、キューイング動作例を示す図である。
【図５】図５は、デキュー動作例を示す図である。
【図６】図６は、シーケンシャルアクセスの判定方法の一例を示す図である。
【図７】図７は、モード判断方法を示す図である。
【図８】図８は、各モードに対応する閾値例を示す図である。
【図９】図９は、モード判断処理のフローを示すフローチャートである。
【図１０】図１０は、コマンド受信処理のフローを示すフローチャートである。
【図１１】図１１は、コマンド発行処理のフローを示すフローチャートである。
【図１２】図１２は、実施例２に係るＨＤＤドライブ部の機能構成を示す図である。
【図１３】図１３は、調整値記憶部が記憶する調整値の一例を示す図である。
【図１４】図１４は、性能比に基づく調整値の一例を示す図である。
【図１５】図１５は、実施例２に係る閾値更新処理のフローを示すフローチャートである。
【図１６】図１６は、閾値の決定結果を保持する決定テーブルの一例を示す図である。
【図１７】図１７は、実施例３に係る閾値決定処理のフローを示すフローチャートである。
【図１８】図１８は、コマンドの沈み込みの一例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するストレージ制御装置、ストレージ装置及びストレージ制御プログラムの実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【実施例１】
【００１５】
まず、実施例１に係るストレージディスクアレイ装置の構成について説明する。ここで、ストレージディスクアレイ装置とは、複数のディスクを搭載した記憶システムである。図１は、実施例１に係るストレージディスクアレイ装置の構成を示す図である。図１に示すように、ストレージディスクアレイ装置１は、２つのＣＭ（Controller  Module）２と、２つのＤＥ（Drive  Enclosure）３とを有する。なお、ここでは説明の便宜上、２つのＤＥを示したが、ストレージディスクアレイ装置１は、任意の個数のＤＥ３を有してよい。
【００１６】
ＣＭ２は、ストレージディスクアレイ装置１を制御するコントローラであり、二重化されている。ＣＭ２は、ＣＡ（Channel  Adapter）４と、ＣＰＵ（Central  Processing  Unit）５と、ＤＩＭＭ（Dual  Inline  Memory  Module）６と、ＢＵＤ（Bootup  and  Utility  Device）７と、ＤＩ（Drive  Interface）８とを有する。
【００１７】
ＣＡ４は、ストレージディスクアレイ装置１を使用するサーバ９０とのインタフェースである。ＣＰＵ（Central  Processing  Unit）５は、ＤＩＭＭ６が記憶するＣＭファームウェアを実行することによりストレージディスクアレイ装置１の制御機能を実現する中央処理装置である。ＤＩＭＭ６は、複数のＤＲＡＭ（Dynamic  Random  Access  Memory）を搭載したメモリモジュールであり、プログラムやデータを記憶する。
【００１８】
ＢＵＤ（Bootup  and  Utility  Device）７は、ファームウェアなどを記憶する不揮発性メモリであり、例えばＳＳＤ（Solid  State  Drive）である。ＤＩ８は、ＤＥ３とのインタフェースである。ＤＥ３は、４つのＨＤＤ９を搭載する記憶装置である。なお、ここでは説明の便宜上、４つのＨＤＤ９を示したが、ＤＥ３は、任意の個数のＨＤＤ９を有してよい。
【００１９】
図２は、ＣＭファームウェアの格納場所とＣＰＵ５によるＣＭファームウェアの実行を示す図である。図２に示すように、ＣＭファームウェア１０は、ＢＵＤ７に格納される。そして、ＣＭファームウェア１０は、ＢＵＤ７からＤＩＭＭ６のファームウェア用領域１１にロードされ、ＣＰＵ５によりＤＩＭＭ６から読み出されて実行される。なお、ＤＩＭＭ６は、ファームウェア用領域１１以外に、データのキャッシュに使用されるキャッシュ領域１２を有する。
【００２０】
ＣＭファームウェア１０は、キャッシュ制御プログラム１６と、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）制御プログラム１７と、ＨＤＤドライバ１８を含む。キャッシュ制御プログラム１６は、キャッシュ領域１２を用いてキャッシュ制御を行う。ＲＡＩＤ制御プログラム１７は、ＤＥ３のＲＡＩＤ制御を行う。
【００２１】
ＨＤＤドライバ１８は、サーバ９０から受信したコマンドに基づいてＨＤＤ９へのコマンドの発行の制御を行う。また、ＨＤＤドライバ１８は、ＨＤＤ９からの応答結果をサーバ９０へ送信する。
【００２２】
次に、ＨＤＤドライバ１８がＣＰＵ５で実行されることにより実現されるＨＤＤドライブ部の機能構成について説明する。図３は、ＨＤＤドライブ部の機能構成を示す図である。図３に示すように、ＨＤＤドライブ部２０は、記憶部２１と制御部２２とを有する。
【００２３】
記憶部２１は、データを記憶する領域であり、Ｎ個のゾーンキュー２３と、その他キュー２４と、閾値記憶部３０とを有する。Ｎ個のゾーンキュー２３は、ストレージディスクアレイ装置１が提供するデータ記憶領域をＮ個に分割して得られるＮ個のゾーンのそれぞれに対応付けられたキューである。各ゾーンキュー２３は、各ゾーンに発行されるReadコマンド及びWriteコマンドを記憶する。
【００２４】
ＨＤＤ９はコマンドを同時に受領できる数に上限があり、上限以上のコマンドをＨＤＤ９に発行すると、ＨＤＤ９はTASK  SET  FULLで応答する。そのため、ＨＤＤドライブ部２０は、ＨＤＤ９への過剰な量のコマンド発行をしないよう、キューイング機能によって各ゾーンへのコマンド発行数の管理、制御を行う。
【００２５】
各ゾーンキュー２３は、ＨＤＤドライブ部２０の定める最大コマンド発行数を超える数のコマンドのキューイングを行っている。ＨＤＤ９からのコマンド応答などによりＨＤＤ９へのコマンド発行が可能になった場合、ＨＤＤドライブ部２０はゾーンキュー２３の先頭よりコマンドをデキューし、ＨＤＤ９に発行する。
【００２６】
その他キュー２４は、Readコマンド及びWriteコマンド以外のコマンドをキューイングする。閾値記憶部３０は、１つのゾーンキュー２３から連続してデキューされるコマンド数の閾値を記憶する。
【００２７】
制御部２２は、記憶部２１を用いてＨＤＤ９へのコマンドの発行処理、ＨＤＤ９からの応答に対する処理を行う。制御部２２は、コマンド受信部２５と、コマンド応答部２６と、コマンド発行部２７と、モード判断部２８と、モード切替部２９とを有する。
【００２８】
コマンド受信部２５は、ＣＡ４を介してサーバ９０からのコマンドを受け付け、コマンドを直ぐに発行できる場合には、ＨＤＤ９にコマンドを発行する。一方、コマンドを直ぐに発行できない場合には、コマンド受信部２５は、コマンドの種類とアクセス先のアドレスとに基づいてＮ個のゾーンキュー２３とその他キュー２４のいずれかにコマンドをキューイングする。
【００２９】
また、コマンド受信部２５は、ゾーンキュー２３にキューイングする際、コマンドにタイムスタンプを付加してキューの最後尾にキューイングする。タイムスタンプは、デキュー対象となるゾーンキュー２３(以下、「ターゲットキュー」と呼ぶ)の選択に用いられる。また、コマンドは、ゾーン内ではＦＩＦＯ（First  In  First  Out）で処理される。
【００３０】
図４は、キューイング動作例を示す図である。図４は、ストレージディスクアレイ装置１が提供するデータ記憶領域を５個に分割した場合を示す。図４において、ゾーンキュー２３内の長方形はコマンドを示し、長方形内の数字はタイムスタンプを示す。図４に示すように、１〜８のタイムスタンプを有するコマンドがキューイングされているときに、新たなコマンドがキューイングされる場合には、タイムスタンプ９が付加される。
【００３１】
図３に戻って、コマンド応答部２６は、発行したコマンドに対するＨＤＤ９からの応答を受け付け、ＣＡ４を介してサーバ９０へ応答する。
【００３２】
コマンド発行部２７は、コマンドの発行が可能であり、かつ、キューイングされているコマンドがある場合には、いずれかのキューよりコマンドをデキューし、ＨＤＤ９へコマンドを発行する。その際、その他キュー２４に積まれるコマンドは、ＨＤＤ９の制御に関するコマンドであり、優先的に実施したいコマンドである。そのため、コマンド発行部２７は、その他キュー２４にキューイングされている場合、その他キュー２４のコマンドを優先してデキューし、その他キュー２４にコマンドが無い場合には、ゾーンキュー２３からデキューする。
【００３３】
コマンド発行部２７は、ゾーンキュー２３からのデキュー時にはシークロス削減のため、同じゾーンへのコマンドを連続で発行する。コマンド発行部２７は、Ｎ個のゾーンキュー２３のうち、ターゲットキューを保持し、デキュー時に、ターゲットキューからコマンドをデキューすることで、同一ゾーンへ連続でコマンドを発行する。
【００３４】
コマンド発行部２７は、デキュー時にターゲットキューの更新判定を行う。具体的には、コマンド発行部２７は、現ターゲットキューよりデキューされたコマンド数が閾値に達したか否を判定することによって、ターゲットキューの更新判定を行う。すなわち、コマンド発行部２７は、現ターゲットキューよりデキューされたコマンド数が閾値に達した場合に、ターゲットキューの更新を行う。ここで、閾値は、静的な固定値ではなく、アクセス状況により変化する動的な値であり、モード切替部２９により変更される値である。
【００３５】
コマンド発行部２７は、各ゾーンキュー２３の先頭コマンドのタイムスタンプを比較し、先頭コマンドのタイムスタンプが最も古いコマンドがキューイングされているゾーンキュー２３をターゲットキューとする。
【００３６】
図５は、デキュー動作例を示す図である。図５では、ターゲットキューからの連続発行数の閾値が２である場合を示す。図５に示すゾーンキュー２３の状態でデキューが行われる場合、５つのゾーンキュー２３のうち先頭コマンドのタイムスタンプが最も古いゾーンキュー２３は、タイムスタンプが１であるコマンドを記憶するゾーンキュー1である。したがって、まずゾーンキュー1がターゲットキューとして選ばれ、タイムスタンプが１と２のコマンドが発行される。
【００３７】
次に、５つのゾーンキュー２３のうち先頭コマンドのタイムスタンプが最も古いゾーンキュー２３は、タイムスタンプが３であるコマンドを記憶するゾーンキュー1であるので、ゾーンキュー1がターゲットキューとして再度選ばれる。その結果、タイムスタンプが３と４のコマンドが発行される。
【００３８】
次に、５つのゾーンキュー２３のうち先頭コマンドのタイムスタンプが最も古いゾーンキュー２３は、タイムスタンプが５であるコマンドを記憶するゾーンキュー3であるので、ゾーンキュー3がターゲットキューとして選ばれる。その結果、タイムスタンプが５と８のコマンドが発行される。
【００３９】
次に、５つのゾーンキュー２３のうち先頭コマンドのタイムスタンプが最も古いゾーンキュー２３は、タイムスタンプが６であるコマンドを記憶するゾーンキュー4であるので、ゾーンキュー4がターゲットキューとして選ばれる。その結果、タイムスタンプが６と７のコマンドが発行される。
【００４０】
そして最後に、５つのゾーンキュー２３のうち先頭コマンドのタイムスタンプが最も古いゾーンキュー２３は、タイムスタンプが９であるコマンドを記憶するゾーンキュー3であるので、ゾーンキュー3がターゲットキューとして選ばれる。その結果、タイムスタンプが９のコマンドが発行される。
【００４１】
このように、先頭コマンドのタイムスタンプが最も古いゾーンキュー２３をターゲットキューとして選択することにより、選択したゾーンキュー２３の先頭は、必ず最古のコマンドとなるため、ＨＤＤドライブ部２０は、コマンドの沈み込みを抑制することができる。
【００４２】
図３に戻って、モード判断部２８は、ＨＤＤ９へのアクセス状況に基づいて応答時間を優先させるかスループットを優先させるかを判断する。ここで、応答時間は、サーバ９０からコマンドを受け取ってから応答までにかかる時間であり、スループットは、単位時間あたりのキャッシュデータ転送量である。
【００４３】
モード判断部２８は、応答時間を優先させる場合は、レスポンス優先モードであると判断し、スループットを優先させる場合は、スループット優先モードであると判断する。また、モード判断部２８は、レスポンス優先モードでもスループット優先モードでもない場合は、ニュートラルモードであると判断する。
【００４４】
具体的には、モード判断部２８は、シーケンシャルアクセスが行われているかランダムアクセスが行われているかと、Writeコマンド及びReadコマンドの比率とに基づいて、モードを判断する。シーケンシャルアクセスは連続データのアクセスであるため、同じゾーンにコマンドを連続発行することでスループット性能を向上することができる。逆に、ランダムアクセスで過度な連続発行をすると、コマンドの停滞によるレスポンス（応答時間）の低下や、レスポンスの低下によるタイムアウトの発生などがあるため、レスポンスについての考慮が必要となってくる。
【００４５】
また、キャッシュのデータをＨＤＤ９に書き込むWriteback処理は、Writeコマンドのホストレスポンスと非同期であるため、ＨＤＤドライブ部２０の応答時間の影響を受けない。したがって、Writeコマンド中心である場合には、スループットを向上させることを優先させたい。逆に、ReadコマンドはホストレスポンスがＨＤＤドライブ部２０の応答時間の影響を受けるため、Readコマンド中心である場合には、応答時間の悪化はできるだけ避けることが望まれる。
【００４６】
そこで、モード判断部２８は、シーケンシャルアクセスが行われている場合には、スループット優先モードであると判断する。また、モード判断部２８は、ランダムアクセスが行われている場合には、Write中心であるときは、スループット優先モードであると判断し、Read中心であるときはレスポンス優先モードであると判断する。
【００４７】
図６は、シーケンシャルアクセスの判定方法の一例を示す図である。ストレージディスクアレイ装置１は、ＲＬＵ（RAID  Logical  Unit）単位でサーバ９０からのアクセス範囲をチェックしている。モード判断部２８は、図６に示すように、連続する領域へのアクセスコマンドが一定数(例えば３)以上続いている場合に、そのＲＬＵに対してのアクセスがシーケンシャルアクセスであると判断し、そうでなかった場合はランダムアクセスと判断する。モード判断部２８は、対象となるＨＤＤ９を含むＲＬＵのアクセス傾向をＨＤＤ９へのアクセス傾向とみなし、利用する。
【００４８】
また、モード判断部２８は、Readコマンドの数とWriteコマンドの数の比率に基づいて、Read中心であるかWrite中心であるかを判断する。すなわち、モード判断部２８は、Readコマンドがコマンド全体の一定の割合（例えば９割）以上である場合には、Read中心であると判断し、Writeコマンドがコマンド全体の一定の割合（例えば９割）以上である場合には、Write中心であると判断する。また、モード判断部２８は、Read中心でもなく、Write中心でもない場合には、ReadとWriteが混在すると判断する。なお、Readコマンド数及びWriteコマンド数は、コマンドをキューイングする際にコマンド受信部２５によりカウントされる。
【００４９】
図７は、モード判断方法を示す図である。図７に示すように、アクセスがシーケンシャルの場合には、モード判断部２８は、Readコマンドの数とWriteコマンドの数の比率に関係なくスループット優先モードであると判断する。一方、アクセスがランダムである場合には、モード判断部２８は、Read中心のときはレスポンス優先モードであると判断し、Write中心のときはスループット優先モードであると判断し、ReadとWriteが混在するときはニュートラルモードであると判断する。
【００５０】
モード切替部２９は、モード判断部２８によるモード判断結果に基づいて、ターゲットキューから連続して発行するコマンド数の閾値を更新する。図８は、各モードに対応する閾値例を示す図である。図８に示すように、スループット優先モードの場合には、閾値は大であり、例えば４０である。ニュートラルモードの場合には、閾値は中であり、例えば２０である。レスポンス優先モードの場合には、閾値は小であり、例えば１０である。
【００５１】
次に、モード判断処理のフローについて説明する。図９は、モード判断処理のフローを示すフローチャートである。図９に示すように、モード判断部２８は、まず、アクセスの状態を取得する（ステップＳ１）。そして、モード判断部２８は、アクセスの状態がランダムであるかシーケンシャルであるかを判断する（ステップＳ２）。その結果、モード判断部２８は、アクセスの状態がシーケンシャルである場合には、スループット優先モードであると判断する（ステップＳ３）。
【００５２】
一方、アクセスの状態がシーケンシャルでない場合には、モード判断部２８は、Writeコマンド数とReadコマンド数の比率を計算し（ステップＳ４）、Write中心であるか否かを判定する（ステップＳ５）。その結果、モード判断部２８は、Write中心である場合には、スループット優先モードであると判断し（ステップＳ３）、Write中心でない場合には、Read中心であるか否かを判断する（ステップＳ６）。その結果、モード判断部２８は、Read中心である場合には、レスポンス優先モードであると判断し（ステップＳ７）、Read中心でない場合には、ニュートラルモードであると判断する（ステップＳ８）。
【００５３】
このように、モード判断部２８がモードを判断することによって、モード切替部２９はターゲットキューから連続して発行するコマンド数の閾値をモードに基づいて動的に変更することができる。
【００５４】
次に、コマンド受信処理のフローについて説明する。図１０は、コマンド受信処理のフローを示すフローチャートである。図１０に示すように、コマンド受信部２５は、コマンドを受信すると、キューイングが必要であるか否かを判定し（ステップＳ１１）、キューイングが必要でない場合には、ＨＤＤ９へコマンドを発行する（ステップＳ１６）。
【００５５】
一方、キューイングが必要である場合には、コマンド受信部２５は、受信したコマンドがReadコマンド又はWriteコマンドであるか否かを判定する（ステップＳ１２）。その結果、ReadコマンドでもWriteコマンドでもない場合には、コマンド受信部２５は、コマンドをその他キュー２４の末尾にキューイングする（ステップＳ１３）。
【００５６】
一方、Readコマンド又はWriteコマンドである場合には、コマンド受信部２５は、コマンドがアクセスする領域を含むゾーン（ｘ）を特定し（ステップＳ１４）、コマンドにタイムスタンプを付加してゾーン（ｘ）のゾーンキュー２３の末尾にキューイングする（ステップＳ１５）。
【００５７】
このように、コマンド受信部２５がコマンドをゾーンキュー２３にキューイングすることによって、コマンド発行部２７は同一ゾーンにアクセスするコマンドを連続して発行することができる。
【００５８】
次に、コマンド発行処理のフローについて説明する。図１１は、コマンド発行処理のフローを示すフローチャートである。図１１に示すように、コマンド発行部２７は、ＨＤＤ９よりコマンド応答があると、コマンドが発行可能か否かを判定する（ステップＳ２１）。その結果、コマンドが発行可能でない場合には、コマンド発行部２７は、処理を終了する。
【００５９】
一方、コマンドが発行可能である場合には、コマンド発行部２７は、キューイングコマンドがあるか否かを判定し（ステップＳ２２）、キューイングコマンドがない場合には、処理を終了する。
【００６０】
一方、キューイングコマンドがある場合には、コマンド発行部２７は、その他キュー２４にコマンドがあるか否かを判定する（ステップＳ２３）。その結果、その他キュー２４にコマンドがある場合には、コマンド発行部２７は、その他キュー２４の先頭からデキューし（ステップＳ２４）、ＨＤＤ９へコマンドを発行する（ステップＳ２５）。
【００６１】
一方、その他キュー２４にコマンドがない場合には、コマンド発行部２７は、ターゲットキューの先頭からデキューし（ステップＳ２６）、ＨＤＤ９へコマンドを発行する（ステップＳ２７）。そして、コマンド発行部２７は、連続発行数をインクリメントし（ステップＳ２８）、連続発行数を閾値と比較することにより、ターゲットキューを更新するか否かを判定する（ステップＳ２９）。その結果、ターゲットキューを更新しない場合には、コマンド発行部２７は、処理を終了する。
【００６２】
一方、ターゲットキューを更新する場合には、コマンド発行部２７は、先頭のコマンドが最古のゾーンキュー２３をターゲットキューに変更し（ステップＳ３０）、連続発行数を０リセットする（ステップＳ３１）。そして、モード判断部２８がモードを判断し、モード切替部２９がモードに基づいて連続発行数の閾値を更新する（ステップＳ３２）。
【００６３】
このように、ターゲットキューを更新する際に、モード判断部２８がモードを判断し、モード切替部２９がモードに基づいて連続発行数の閾値を更新することによって、ＨＤＤドライブ部２０は、連続発行数の閾値を動的に変更することができる。
【００６４】
上述してきたように、実施例１では、モード判断部２８がＨＤＤ９へのアクセス状況に基づいて応答時間を優先させるかスループットを優先させるか判断し、モード切替部２９がモード判断部２８の判断結果に基づいて連続発行数の閾値を更新する。したがって、ＨＤＤドライブ部２０は、ゾーン分割の効果を維持しつつ、コマンドの沈み込みを防ぐことができる。
【００６５】
また、実施例１では、モード判断部２８は、シーケンシャルアクセスが行われているかランダムアクセスが行われているか及びReadコマンド数とWriteコマンド数の比に基づいて応答時間を優先させるかスループットを優先させるかを判断する。したがって、モード判断部２８は、ＨＤＤ９へのアクセス状況に基づいて適切にモードを判断することができる。
【実施例２】
【００６６】
ところで、上記実施例１では、ＨＤＤ９に発行されるコマンドの傾向に基づいて連続発行回数の閾値を変更したが、ストレージディスクアレイ装置１の要件として、維持したい性能値がある場合がある。例えば、タイムアウトを防ぐためにある時間内にサーバ９０に応答してほしい、あるいは、処理が停滞しないよう、一定以上のスループットを維持したいなどの性能値がある。そこで、実施例２では、予め装置として優先したい性能の種類と、応答時間とスループットの性能の最悪値及び目標値とを持ち、これらの値と実測値との比較を基に閾値を調整することで、性能値を達成するストレージディスクアレイ装置について説明する。
【００６７】
なお、最悪値は、この値を下回ったら、早急に改善する必要のある性能値であり、例えばタイムアウトの危険が出てくる応答時間などである。目標値は、装置として、可能な限り達成したい性能値である。実測値は、装置内で採取している装置の実際の性能値である。また、各性能の実測値の取り方は、応答時間については直近の３コマンドの応答時間の平均とし、スループットについては性能採取を実施した時点のスループット性能のスナップショットとする。
【００６８】
まず、実施例２に係るＨＤＤドライブ部の機能構成について説明する。図１２は、実施例２に係るＨＤＤドライブ部の機能構成を示す図である。なお、ここでは説明の便宜上、図３に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００６９】
図１２に示すように、ＨＤＤドライブ部４０の記憶部４１は、Ｎ個のゾーンキュー２３と、その他キュー２４と、閾値記憶部３０と、性能値記憶部４３と、調整値記憶部４４とを有する。性能値記憶部４３は、優先したい性能の種類である優先項目として、レスポンス優先、スループット優先又はニュートラルを記憶し、応答時間とスループットについてそれぞれ最悪値及び目標値を記憶する。ユーザは、優先項目、最悪値及び目標値を設定してもよいし、性能値記憶部４３に予め設定されているものを利用してもよい。
【００７０】
調整値記憶部４４は、優先項目毎に閾値の調整値を記憶する。図１３は、調整値記憶部４４が記憶する調整値の一例を示す図である。図１３に示すように、調整値記憶部４４は、レスポンス優先、スループット優先及びニュートラルの場合について、応答時間及びスループットの実測値と最悪値及び目標値との関係に基づく調整値を３つの参照テーブルで記憶する。
【００７１】
具体的には、優先項目毎に各テーブルで、スループットの実測値が最悪値より小さい場合、スループットの実測値が最悪値以上で目標値以下の場合及びスループットの実測値が目標値より大きい場合のそれぞれについて、応答時間を場合分けして調整値を記憶する。応答時間の場合分けとしては、応答時間の実測値が最悪値より大きい場合、応答時間の実測値が目標値以上で最悪値以下の場合及び応答時間の実測値が目標値より小さい場合がある。なお、図１３において、スループットの実測値は「スループット」で表され、応答時間の実測値は「応答時間」で表される。
【００７２】
調整値は、プラスの場合、ターゲットキューからのコマンドの連続発行数を増加させるので、スループットを改善し、マイナスの場合、ターゲットキューからのコマンドの連続発行数を減少させるので、応答時間を改善する。
【００７３】
例えば、レスポンス優先において、スループットの実測値が最悪値より小さく、応答時間の実測値が最悪値より大きい場合は、応答時間を短くする必要があるので、閾値を小さくする必要があり、調整値は−２である。一方、スループット優先において、スループットの実測値が最悪値より小さく、応答時間の実測値が最悪値より大きい場合は、スループットを大きくする必要があるので、閾値を大きくする必要があり、調整値は＋２である。
【００７４】
また、レスポンス優先において、スループットが目標値より大きく、応答時間が目標値より小さい場合は、どちらも目標を上回っているがレスポンス優先なので、調整値は−１である。一方、スループット優先において、スループットが目標値より大きく、応答時間が目標値より小さい場合は、どちらも目標を上回っているがスループット優先なので、調整値は＋１である。
【００７５】
また、ニュートラルにおいて、スループットと応答時間の両方が最悪値より悪い場合は、調整値はスループットと応答時間の最悪値との性能比に基づく値となる。一方、スループットと応答時間の両方が目標値を上回っている場合又はスループットと応答時間の両方が最悪値と目標値の範囲にある場合は、調整値はスループットと応答時間の目標値との性能比に基づく値となる。
【００７６】
図１４は、性能比に基づく調整値の一例を示す図である。図１４に示すように、スループットと応答時間の両方が最悪値より悪い場合は、調整値はスループットと応答時間の最悪値に対する実測値の比に基づいて比率が悪い方を改善するような値となる。また、スループットと応答時間の両方が目標値を上回っている場合又はスループットと応答時間の両方が最悪値と目標値の範囲にある場合は、調整値はスループットと応答時間の目標値に対する実測値の比に基づいて比率が悪い方をより良くするような値となる。なお、性能比に基づく調整値も調整値記憶部４４に記憶される。
【００７７】
図１２に戻って、ＨＤＤドライブ部４０の制御部４２は、コマンド受信部２５と、コマンド応答部２６と、コマンド発行部２７と、閾値調整部４５とを有する。閾値調整部４５は、性能値記憶部４３及び調整値記憶部４４に基づいてターゲットキューからのコマンドの連続発行数の閾値を更新する。なお、閾値の初期値は、例えば３０などの所定の値である。
【００７８】
次に、実施例２に係る閾値更新処理のフローについて説明する。図１５は、実施例２に係る閾値更新処理のフローを示すフローチャートである。図１５に示すように、閾値調整部４５は、スループット性能及びレスポンス性能を取得する（ステップＳ５１）。ここで、スループット性能は、スループットの実測値であり、レスポンス性能は、応答時間の実測値である。
【００７９】
そして、閾値調整部４５は、レスポンス性能と最悪値及び目標値を比較し（ステップＳ５２）、スループット性能と最悪値及び目標値を比較する（ステップＳ５３）。そして、閾値調整部４５は、優先項目を確認し、参照テーブルを決定する（ステップＳ５４）。そして、閾値調整部４５は、レスポンス性能及びスループット性能それぞれについて最悪値及び目標値との比較結果で参照テーブルを引き、閾値の調整値を決定する（ステップＳ５５）。
【００８０】
また、閾値調整部４５は、参照テーブルを引いた結果、スループット性能比とレスポンス性能比の比較が必要か否かを判定する（ステップＳ５６）。ここで、スループット性能比は、スループットの実測値と目標値又は最悪値との比であり、レスポンス性能比は、応答時間の実測値と目標値又は最悪値との比である。ただし、スループット性能比が実測値と目標値との比であれば応答性能比も実測値と目標値との比であり、スループット性能比が実測値と最悪値との比であれば応答性能比も実測値と最悪値との比である。
【００８１】
そして、閾値調整部４５は、スループット性能比とレスポンス性能比の比較が必要であると判断した場合には、スループット性能比とレスポンス性能比を比較し、閾値の調整値を決定する（ステップＳ５７）。
【００８２】
そして、閾値調整部４５は、決定した調整値を用いて閾値を更新する（ステップＳ５８）。
【００８３】
上述してきたように、実施例２では、閾値調整部４５は、応答時間及びスループットについての目標値及び最悪値に基づいて閾値を更新する。したがって、ＨＤＤドライブ部４０は、装置の要件として維持したい性能値がある場合に、性能値を維持するようにＨＤＤ９へのコマンド発行を制御することができる。
【００８４】
また、実施例２では、応答時間を優先すべきでもスループットを優先すべきでもない場合に、応答時間もスループットも最悪値より悪いときは、応答時間の最悪値に対する比とスループットの最悪値に対する比に基づいて閾値を更新する。したがって、ＨＤＤドライブ部４０は、応答時間とスループットのうち最悪値に対する性能比が悪い方を改善することができる。
【００８５】
また、実施例２では、応答時間を優先すべきでもスループットを優先すべきでもない場合に、応答時間もスループットも目標値より良いときは、応答時間の目標値に対する比とスループットの目標値に対する比に基づいて閾値を更新する。したがって、ＨＤＤドライブ部４０は、応答時間とスループットのうち目標値に対する性能比が悪い方を改善することができる。
【００８６】
また、実施例２では、応答時間を優先すべきでもスループットを優先すべきでもない場合に、応答時間もスループットも目標値と最悪値の範囲内であるときは、応答時間の目標値に対する比とスループットの目標値に対する比に基づいて閾値を更新する。したがって、ＨＤＤドライブ部４０は、応答時間とスループットのうち目標値に対する性能比が悪い方を改善することができる。
【実施例３】
【００８７】
実施例１では、応答時間を優先すべきかスループットを優先すべきかを判断して閾値を決定する場合について説明し、実施例２では、応答時間及びスループットについての目標値及び最悪値に基づいて閾値を更新する場合について説明した。実施例１と実施例２は、それぞれ実施することが可能であるが、実施例１と実施例２を組み合わせることもできる。そこで、実施例３では、実施例１と実施例２を組み合わせる場合について説明する。
【００８８】
実施例３に係るＨＤＤドライブ部は、実施例１に基づいて閾値の基準値を決定し、実施例２に基づいて閾値の調整値を決定する。図１６は、閾値の決定結果を保持する決定テーブルの一例を示す図である。
【００８９】
図１６に示すように、実施例３に係るＨＤＤドライブ部は、実施例１に基づいてスループット優先であるかレスポンス優先であるかニュートラルであるかを判断し、閾値の基準値を決定する。例えば、実施例３に係るＨＤＤドライブ部は、スループット優先である場合には閾値の基準値を４０とし、ニュートラルである場合には閾値の基準値を２０とし、レスポンス優先である場合には閾値の基準値を１０とする。
【００９０】
そして、実施例３に係るＨＤＤドライブ部は、実施例２に基づいて優先項目並びに応答時間及びスループットの実測値と目標値及び最悪値から調整値を決定する。例えば、実施例３に係るＨＤＤドライブ部は、スループット優先である場合には閾値の調整値を３とし、ニュートラルである場合には閾値の調整値を−３とし、レスポンス優先である場合には閾値の調整値を２とする。ただし、調整値の範囲は例えば絶対値で５以内とする。
【００９１】
そして、実施例３に係るＨＤＤドライブ部は、基準値と調整値の合計を閾値とする。例えば、実施例３に係るＨＤＤドライブ部は、スループット優先である場合には閾値を４３とし、ニュートラルである場合には閾値を１７とし、レスポンス優先である場合には閾値を１２とする。
【００９２】
なお、各モードの調整値を決定テーブルとして保持しておく理由は、"スループット優先→ニュートラル→スループット優先"といったように、再びあるモードに戻ってきた時に、以前にそのモードであった時の調整結果をＨＤＤドライブ部が再利用するためである。
【００９３】
次に、実施例３に係る閾値決定処理のフローについて説明する。図１７は、実施例３に係る閾値決定処理のフローを示すフローチャートである。図１７に示すように、モード判断部２８は、まず、アクセスの状態を取得する（ステップＳ６１）。そして、モード判断部２８は、アクセスの状態がランダムであるかシーケンシャルであるかを判断する（ステップＳ６２）。その結果、モード判断部２８は、アクセスの状態がシーケンシャルである場合には、モードをスループット優先モードに設定する（ステップＳ６３）。
【００９４】
一方、アクセスの状態がシーケンシャルでない場合には、モード判断部２８は、Writeコマンド数とReadコマンド数の比率を計算し（ステップＳ６４）、Write中心であるか否かを判定する（ステップＳ６５）。その結果、モード判断部２８は、Write中心である場合には、モードをスループット優先モードに設定し（ステップＳ６３）、Write中心でない場合には、Read中心であるか否かを判定する（ステップＳ６６）。その結果、モード判断部２８は、Read中心である場合には、モードをレスポンス優先モードに設定し（ステップＳ６７）、Read中心でない場合には、モードをニュートラルモードに設定する（ステップＳ６８）。
【００９５】
そして、実施例３に係るＨＤＤドライブ部は、モードが変わらないか否かを判定し（ステップＳ６９）、モードが変わる場合には、基準値に基づいて閾値を決定する（ステップＳ７７）。
【００９６】
一方、モードが変わらない場合には、閾値調整部４５は、スループット性能及びレスポンス性能を取得する（ステップＳ７０）。そして、閾値調整部４５は、レスポンス性能と最悪値及び目標値を比較し（ステップＳ７１）、スループット性能と最悪値及び目標値を比較する（ステップＳ７２）。そして、閾値調整部４５は、優先項目を確認し、参照テーブルを決定する（ステップＳ７３）。そして、閾値調整部４５は、レスポンス性能及びスループット性能それぞれについて最悪値及び目標値との比較結果で参照テーブルを引き、閾値の調整値を決定する（ステップＳ７４）。
【００９７】
また、閾値調整部４５は、参照テーブルを引いた結果、スループット性能比とレスポンス性能比の比較が必要か否かを判定する（ステップＳ７５）。そして、閾値調整部４５は、スループット性能比とレスポンス性能比の比較が必要であると判断した場合には、スループット性能比とレスポンス性能比を比較し、閾値の調整値を決定する（ステップＳ７６）。そして、閾値調整部４５は、決定した基準値及び調整値を用いて閾値を更新する（ステップＳ７７）。
【００９８】
上述してきたように、実施例３に係るＨＤＤドライブ部は、実施例１に基づいて決定した基準値と、実施例２に基づいて決定した調整値を用いて閾値を決定する。したがって、実施例３に係るＨＤＤドライブ部は、ＨＤＤ９へのアクセス状況に基づいて適切な閾値を決定することができる。
【００９９】
また、実施例では、ストレージディスクアレイ装置について説明したが、本発明はこれに限定されるものではなく、シーク動作を行う記憶装置を用いるストレージ装置にも同様に適用することができる。
【符号の説明】
【０１００】
１    ストレージディスクアレイ装置
２    ＣＭ
３    ＤＥ
４    ＣＡ
５    ＣＰＵ
６    ＤＩＭＭ
７    ＢＵＤ
８    ＤＩ
９    ＨＤＤ
１０    ＣＭファームウェア
１１    ファームウェア用領域
１２    キャッシュ領域
１６    キャッシュ制御プログラム
１７    ＲＡＩＤ制御プログラム
１８    ＨＤＤドライバ
２０，４０    ＨＤＤドライブ部
２１，４１    記憶部
２２，４２    制御部
２３    ゾーンキュー
２４    その他キュー
２５    コマンド受信部
２６    コマンド応答部
２７    コマンド発行部
２８    モード判断部
２９    モード切替部
３０    閾値記憶部
４３    性能値記憶部
４４    調整値記憶部
４５    閾値調整部
【図１】
2015158725.tif 000003
【図２】
2015158725.tif 000004
【図３】
2015158725.tif 000005
【図４】
2015158725.tif 000006
【図５】
2015158725.tif 000007
【図６】
2015158725.tif 000008
【図７】
2015158725.tif 000009
【図８】
2015158725.tif 000010
【図９】
2015158725.tif 000011
【図１０】
2015158725.tif 000012
【図１１】
2015158725.tif 000013
【図１２】
2015158725.tif 000014
【図１３】
2015158725.tif 000015
【図１４】
2015158725.tif 000016
【図１５】
2015158725.tif 000017
【図１６】
2015158725.tif 000018
【図１７】
2015158725.tif 000019
【図１８】
2015158725.tif 000020