(57)【要約】【課題】ストレージシステムへのリード要求があった場合における制御装置間の通信負荷を軽減させる技術を提供する。【解決手段】自制御装置配下の単位記憶領域と他の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を制御する制御装置は、読み出し処理が自制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、シーケンシャル読み出し処理の読み出し対象領域が単位記憶領域における最終アドレスを含むか否かを判定し、最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を他の制御装置に通知する。【選択図】図１
2014182755.tif 000002
【特許請求の範囲】
【請求項１】
自制御装置配下の単位記憶領域と他の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を制御する制御装置であって、
前記読み出し処理が自制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、該シーケンシャル読み出し処理の読み出し対象領域が該単位記憶領域における最終アドレスを含むか否かを判定する第１の判定部と、
前記第１の判定部により判定された前記最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を前記他の制御装置に通知する第１の通知部と、
を備えることを特徴とする制御装置。
【請求項２】
前記他の制御装置から通知された前記制御情報に基づいて、自制御装置配下の単位記憶領域の読み出し処理と通知元の制御装置の読み出し処理とが前記シーケンシャル読み出し処理であるかを判定する第２の判定部と、
前記第２の判定部により判定されたシーケンシャル読み出し処理に関わる自制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行うプリフェッチ部と、
を備えることを特徴とする請求項１に記載の制御装置。
【請求項３】
前記制御装置は、さらに、
前記シーケンシャル読み出し処理における前記論理アドレス順の読み出し回数を計測する計測部
を備え、
前記第１の通知部は、前記読み出し処理の読み出し対象領域が自制御装置配下の単位記憶領域における最終アドレスを含む場合、計測された前記回数を前記他の制御装置に通知し、
前記プリフェッチ部は、自制御装置において前記論理アドレス順の読み出し回数に前記通知された回数を加算した値が、所定の閾値以上の場合、前記プリフェッチを行う
ことを特徴とする請求項２に記載の制御装置。
【請求項４】
前記制御装置は、さらに、
前記プリフェッチにより読み出す情報の情報量を記憶する記憶部と、
前記情報量に基づいて、前記プリフェッチにより読み出すプリフェッチ対象領域が、前記他の制御装置配下の単位記憶領域を含むか否かを判定する第３の判定部と、
前記プリフェッチ対象領域が前記他の制御装置配下の単位記憶領域を含むと判定された場合、前記他の制御装置配下の前記単位記憶領域に関するプリフェッチ情報を前記他の制御装置に通知する第２の通知部と、
を備え、
前記プリフェッチ部は、他の制御装置から前記プリフェッチ情報が通知された場合、通知された該プリフェッチ情報に基いて、該プリフェッチ情報に対応する単位記憶領域の情報の前記プリフェッチを行う
ことを特徴とする請求項１〜３のうちいずれか１項に記載の制御装置。
【請求項５】
第１の制御装置配下の単位記憶領域と第２の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を行なうストレージシステムであって、
前記第１の制御装置は、
前記読み出し処理が第１の制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、該シーケンシャル読み出し処理の読み出し対象領域が該単位記憶領域における最終アドレスを含むか否かを判定する第１の判定部と、
前記第１の判定部により判定された前記最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を前記第２の制御装置に通知する第１の通知部と、を備え、
前記第２の制御装置は、
前記第１の制御装置から通知された前記制御情報に基づいて、第２の制御装置配下の単位記憶領域の読み出し処理と通知元の第１の制御装置の読み出し処理とが前記シーケンシャル読み出し処理であるかを判定する第２の判定部と、
前記第２の判定部により判定されたシーケンシャル読み出し処理に関わる第２の制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行うプリフェッチ部と、
を備えることを特徴とするストレージシステム。
【請求項６】
前記ストレージシステムは、複数のストレージ装置を筐体間で接続したものであり、各ストレージ装置は、前記筐体内に、前記単位記憶領域を割り当てる記憶装置群と該記憶装置群を制御する制御部を含む記憶ユニットと、前記前記第１の制御装置および前記第２の制御装置として動作する制御ユニットを備える
ことを特徴とする請求項５に記載のストレージシステム。
【請求項７】
自制御装置配下の単位記憶領域と他の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を制御する処理をプロセッサに実行させる制御プログラムであって、
前記読み出し処理が自制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、該シーケンシャル読み出し処理の読み出し対象領域が該単位記憶領域における最終アドレスを含むか否かを判定し、
前記判定された前記最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を前記他の制御装置に通知する
処理をプロセッサに実行させることを特徴とする制御プログラム。
【請求項８】
自制御装置配下の単位記憶領域と他の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を制御する処理をプロセッサに実行させる制御プログラムであって、
前記他の制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理の読み出し対象領域の前記単位記憶領域における最終アドレスを含む、前記他の制御装置から通知されたシーケンシャル読み出し処理に関する制御情報に基づいて、自制御装置配下の単位記憶領域の読み出し処理と通知元の制御装置の読み出し処理とがシーケンシャル読み出し処理であるかを判定し、
前記判定されたシーケンシャル読み出し処理に関わる自制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行う
処理をプロセッサに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムの制御に関する。
【背景技術】
【０００２】
ストレージシステムにおいては、物理的な記憶装置を直接計算機に提供するのではなく、物理的な記憶装置を組み合わせた論理的な記憶領域を仮想的に提供する技術がある。具体的なストレージシステムの仮想化機能としては、システム内の複数の物理記憶装置を組み合わせて冗長化及び高速化を実現するＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）機能がある。
【０００３】
また、複数の物理記憶装置を所定のＲＡＩＤレベルで一つにまとめたものをＲＡＩＤグループと呼び、ＲＡＩＤグループを複数組み合わせて、論理的な記憶領域を仮想的に提供し、ストレージシステムの記憶容量の拡張性の向上が図られている。このようなストレージシステムにおいて、論理ボリュームが複数のＲＡＩＤグループに分散配置されるワイドストライピング（Ｗｉｄｅ  Ｓｔｒｉｐｉｎｇ）機能が知られている。このワイドストライピング機能により、入出力（Ｉ／Ｏ）負荷を各ＲＡＩＤにグループに分散することで、ランダムＩ／Ｏの性能を向上させることができる。
【０００４】
ワイドストライピング機能を実装したストレージシステムにおいて、複数のＲＡＩＤグループのそれぞれを制御する担当制御モジュールを別々にすることで、ＲＡＩＤグループへのアクセスパスやキャッシュメモリ等も分散できるため、Ｉ／Ｏ性能の向上が見込める。
【０００５】
しかしながら、独立した制御モジュール毎にワイドストライピング化された論理ボリューム（以下、ＷＳＶと記す）に対するＩ／Ｏを制御するため、論理ボリューム全体としての制御を行うことは難しい。特に、論理ボリュームをシーケンシャルにリードする際、複数の異なる制御モジュールを介してアクセスが行われるため、複数のＲＡＩＤグループにまたがってＷＳＶを先読みする処理を行なうことができず、リードのＩ／Ｏの性能を向上させることが難しい。
【０００６】
一方、ホスト装置に対する接続ポートが複数パスあるディスクアレイ装置において、以下の機能を持つことにより、Ｉ／Ｏを複数ポートに分割して要求されてもスループットの向上を図ることができる技術がある。この装置が持つ機能とはすなわち、アクセスするデータが自系キャッシュメモリに保管されているかどうかを検索する自系キャシュサーチ機能と、他系キャッシュメモリに保管されているかどうかをデータパスを介して検索する他系キャシュサーチ機能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２７３１６号公報
【特許文献２】特開２００１−１２５７５３号公報
【特許文献３】特開２００７−２４１９２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、このような自系および他系のキャッシュメモリを相互にアクセスする手法を利用した場合、制御モジュール間通信パスの帯域を消費し、制御モジュールの性能が低下する虞がある。
【０００９】
そこで、１つの側面では、本発明は、ストレージシステムへのリード要求があった場合における制御装置間の通信負荷を軽減させる技術を提供する。
【課題を解決するための手段】
【００１０】
一態様の第１の制御装置は、第１の判定部、及び第１の通知部を含む。第１の判定部は、読み出し処理が自制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、シーケンシャル読み出し処理の読み出し対象領域が単位記憶領域における最終アドレスを含むか否かを判定する。第１の通知部は、第１の判定部により判定された最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を他の制御装置に通知する。
【００１１】
一態様の第２の制御装置は、第２の判定部、及びプリフェッチ部を含む。第２の判定部は、他の制御装置から通知された制御情報に基づいて、自制御装置配下の単位記憶領域の読み出し処理と通知元の制御装置の読み出し処理とがシーケンシャル読み出し処理であるかを判定する。プリフェッチ部は、第２の判定部により判定されたシーケンシャル読み出し処理に関わる自制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行う。
【発明の効果】
【００１２】
本実施形態に係る情報処理装置によれば、ストレージシステムへのリード要求があった場合における制御装置間の通信負荷を軽減させることができる。
【図面の簡単な説明】
【００１３】
【図１】ストレージシステムの機能ブロック図の一例を示す。
【図２】第１の実施形態に係るストレージ装置のハードウェア構成の一例を示す
【図３】ワイドストライピングを説明するための図である。
【図４】第１の実施形態に係るストレージ装置のＣＭの構成を示す図である。
【図５】ワイドストライピングを実行しているストレージ装置の読み込み要求受信時におけるステージング開始までの動作を説明するための図である。
【図６】分割した読み込み要求コマンドのデータ構造の一例である。
【図７】ワイドストライピングを実行しているストレージ装置に対する読み込み要求発行時のステージング開始からホストに応答するまでの動作を説明するための図である。
【図８】検出テーブルの一例を示す。
【図９】読み込み対象領域がＷＳＶユニットバウンダリを含む場合の検出回数の引継ぎを説明するための図である。
【図１０】ＣＭのシーケンシャル性の検出およびプリフェッチステージングの動作フローを示す。
【図１１】検出回数通知を受信したＣＭの動作フローを示す。
【図１２】プリフェッチ対象領域が自ＣＭ以外のＣＭが管理するＳＬＵに及ぶ場合の一例を示す。
【図１３】プリフェッチステージングにおいて、プリフェッチする領域が自ＣＭ以外のＣＭが管理するＳＬＵに及ぶ場合のストレージ装置の動作フローを示す。
【図１４】プリフェッチ対象領域通知を受信した際のストレージ装置の動作フローを示す。
【図１５】第２の実施形態に係るストレージ装置のハードウェア構成の一例を示す。
【図１６】第３の実施形態に係るストレージ装置のハードウェア構成の一例を示す。
【発明を実施するための形態】
【００１４】
図１は、ストレージシステムの機能ブロック図の一例を示す。ストレージシステム１２は、第１の制御装置１、第２の制御装置８、記憶装置１１を含む。
第１の制御装置１は、第１の判定部２、第１の通知部３、計測部４、記憶部５、第３の判定部６、及び第２の通知部７を含む。
【００１５】
第１の判定部２は、読み出し処理が自制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、シーケンシャル読み出し処理の読み出し対象領域が単位記憶領域における最終アドレスを含むか否かを判定する。
【００１６】
第１の通知部３は、第１の判定部により判定された最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を他の制御装置に通知する。また、第１の通知部は、読み出し処理の読み出し対象領域が自制御装置配下の単位記憶領域における最終アドレスを含む場合、計測された回数を他の制御装置に通知する。
【００１７】
計測部４は、シーケンシャル読み出し処理における論理アドレス順の読み出し回数を計測する。
記憶部５は、プリフェッチにより読み出す情報の情報量を記憶する。
【００１８】
第３の判定部６は、記憶部に記憶された情報量に基づいて、プリフェッチにより読み出すプリフェッチ対象領域が、他の制御装置配下の単位記憶領域を含むか否かを判定する。
【００１９】
第２の通知部７は、プリフェッチ対象領域が他の制御装置配下の単位記憶領域を含むと判定された場合、他の制御装置配下の単位記憶領域に関するプリフェッチ情報を他の制御装置に通知する。
【００２０】
第２の制御装置８は、第２の判定部９、及びプリフェッチ部１０を含む。
第２の判定部９は、他の制御装置から通知された制御情報に基づいて、自制御装置配下の単位記憶領域の読み出し処理と通知元の制御装置の読み出し処理とがシーケンシャル読み出し処理であるかを判定する。
【００２１】
プリフェッチ部１０は、第２の判定部により判定されたシーケンシャル読み出し処理に関わる自制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行う。また、プリフェッチ部１０は、自制御装置において論理アドレス順の読み出し回数に通知された回数を加算した値が、所定の閾値以上の場合、プリフェッチを行う。また、プリフェッチ部１０は、他の制御装置からプリフェッチ情報が通知された場合、通知されたプリフェッチ情報に基いて、プリフェッチ情報に対応する単位記憶領域の情報のプリフェッチを行う。
【００２２】
記憶装置１１は、所定の情報が所定単位で分割された情報である分割情報が分散されて格納され、複数の記憶装置１１のそれぞれは、分割情報を単位記憶領域に格納する。
【００２３】
（実施形態１）
図２は、第１の実施形態に係るストレージ装置のハードウェア構成の一例を示す。
【００２４】
ストレージ装置２１は、複数のディスクを含み、それらを一つの論理ボリュームとして扱うことのできるＲＡＩＤを構成する。
ストレージ装置２１は、コントローラモジュール＃０（以下、ＣＭ＃０と記す）（ＣＭ２２Ａ）、コントローラモジュール＃１（以下、ＣＭ＃１と記す）（ＣＭ２２Ｂ）、デバイスエンクロージャ（以下、ＤＥと記す）（ＤＥ２３）を含む。また、ストレージ装置２１は、例えばネットワークを介してホスト２０に接続される。
【００２５】
ＣＭ＃０、ＣＭ＃１は、ストレージシステムにおける種々の制御を行なうものであり、ホスト２０から送信されたＩ／Ｏコマンドに基づいて、ＤＥ２３に対するアクセス制御を行なう。ＣＭ＃０とＣＭ＃１は、それぞれ接続されるＤＥ２３内の記憶装置が異なる。また、ＣＭ＃０とＣＭ＃１は、例えばルータを介して、ＰＣＩ  Ｅｘｐｒｅｓｓ等のバス２９またはネットワークで接続される。尚、図の例ではＣＭの数は２つであるが、さらにＣＭが接続された構成としてもよい。
【００２６】
ＣＭ＃０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２４Ａ、キャッシュメモリ２５Ａ、ＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）２６Ａ、ＤＩ（Ｄｉｓｋ  Ｉｎｔｅｒｆａｃｅ）２７Ａを含む。以下、キャッシュメモリを「キャッシュ」と称する。
【００２７】
ＣＭ＃１は、ＣＰＵ２４Ｂ、キャッシュ２５Ｂ、ＣＡ２６Ｂ、ＤＩ２７Ｂを含む。
以下の説明では、ＣＭ２２ＡとＣＭ２２Ｂを特に区別しない場合には単にＣＭ２２と記す。同様に、それぞれ、ＣＰＵ２４ＡとＣＰＵ２４Ｂ、キャッシュ２５Ａとキャッシュ２５Ｂ、ＣＡ２６ＡとＣＡ２６Ｂ、ＤＩ２７ＡとＤＩ２７Ｂを特に区別しない場合には、単にＣＰＵ２４、キャッシュ２５、ＣＡ２６、ＤＩ２７と記す。
【００２８】
ＣＰＵ２４は、プログラムを実行することにより種々の演算および制御を行なう演算装置であり、図示しないメモリやＲＯＭに格納されたプログラムを実行することにより各種機能を実現する。
【００２９】
キャッシュ２５は、ＤＩ２７に格納された情報をホスト２０に転送する際、その転送効率を向上させるために使用される記憶領域である。
ＣＡ２６は、ホスト２０と接続するためのアダプタである。
【００３０】
ＤＩ２７は、ＣＭ２２内に配置され、ＤＥ２３と接続されるインターフェースである。
ＤＥ２３は、複数のディスクを含むエンクロージャである。ＤＥ２３はＣＭ＃０、ＣＭ＃１のＤＩ２７にバス等で接続される。図２においては、ＤＥ２３と各ＣＭ２２とを接続する経路は２つであるが、この経路の数は限定されない。さらに、ＤＥ２３とＤＩ２７の間に種々の中継装置を設けてもよい。また、ＤＥ２３が含むものはディスクに限定されず、種々の記憶装置としてもよい。
【００３１】
ＤＥ２３内の複数のディスクはディスクグループを構成する。一つのディスクグループは複数のディスクから構成される。このようなディスクグループをＲＬＵ（ＲＡＩＤ  Ｇｒｏｕｐ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）と呼ぶ。
【００３２】
図２の例の場合、ＲＬＵ＃０（ＲＬＵ２８Ａ）はＣＭ＃０に管理され、ＲＬＵ＃１（ＲＬＵ２８Ｂ）はＣＭ＃１に管理される。尚、ＲＬＵの数は２つに限定されない。
【００３３】
ホスト２０が認識する論理ボリューム（ＯＬＵ：Ｏｐｅｎ  ｖｏｌｕｍｅ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）は、ＲＬＵ＃０及びＲＬＵ＃１の領域から構成される。そして、この論理ボリュームに記憶されるデータは、ＲＬＵ＃０及びＲＬＵ＃１をまたいでストライピングされて記憶される。
【００３４】
ここで、複数のＲＬＵをまたいでストライピングが行われる論理ボリュームをワイドストライピングボリューム（ＷＳＶ：Ｗｉｄｅ  Ｓｔｒｉｐｉｎｇ  Ｖｏｌｕｍｅ）と記す。また、ＲＬＵをまたいだストライピングをワイドストライピングと記す。
【００３５】
ワイドストライピングにおいては、所定のデータ量毎にＷＳＶの領域を分割して、分割した領域を所定の順序で複数のＲＬＵに分散して割り当てる。分割した所定のデータ量のデータをＷＳＶユニットと呼び、ＷＳＶユニットのデータのサイズをＷＳＶユニットサイズと呼ぶ。
【００３６】
また、ＲＬＵの所定のサイズの領域をＳＬＵ（Ｓｈａｒｅｄ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）と呼ぶ。
【００３７】
ワイドストライピングボリュームを構成するＲＬＵのうちの１つのＲＬＵはＷＳＶの代表ＲＬＵとして設定される。また、各ＲＬＵには一意の識別番号であるＲＬＵ番号が振られる。代表ＲＬＵは、ＷＳＶユニットを所定の順序で複数のＲＬＵに分散して割り当てる際に起点となるＲＬＵである。ＷＳＶユニットが各ＲＬＵに割り当てられる際には、代表ＲＬＵに先頭のＷＳＶユニットが割り当てられる。次以降のＷＳＶユニットは、例えばＲＬＵ番号の昇順でＲＬＵに割り当てられ、ＷＳＶユニットがすべてのＲＬＵに割り当てられると、次のＷＳＶユニットは先頭ＲＬＵ（代表ＲＬＵ）に戻って割り当てられる。
【００３８】
図３は、ワイドストライピングを説明するための図である。
図３の例では、複数のディスクから構成されるＲＬＵが複数構成されている（ＲＬＵ＃０、ＲＬＵ＃１、ＲＬＵ＃２、ＲＬＵ＃３）。また、ＲＬＵ＃１は、ＷＳＶの代表ＲＬＵとして設定される。ＯＬＵはホスト２０が認識する論理ボリュームである。図３のＯＬＵでは異なるＣＭ２２により管理される複数のＲＬＵにまたがってストライピングが行われている。そのため、このＯＬＵはワイドストライピングボリューム（ＷＳＶ）であるともいえる。図３に示すように、所定のデータ量ごとに分割されたＷＳＶの領域の各々がＷＳＶユニットであり、所定の順序で複数のＲＬＵに分散して割り当てられている。また、ＳＬＵはＲＬＵの所定のサイズの領域であり、ＳＬＵには複数のＷＳＶユニットが含まれる。図３においては、先頭ＷＳＶユニットであるＷＳＶユニット「１」の領域は代表ＲＬＵであるＲＬＵ＃０の「１」の領域に割り当てられる。そして、次のＷＳＶユニット「２」の領域はＲＬＵ＃１の「２」の領域に、ＷＳＶユニット「３」の領域はＲＬＵ＃２の「３」の領域に・・・と順に割り当てられる。
【００３９】
尚、各ＲＬＵは異なるＲＡＩＤレベルを構成してもよい。また、ホスト２０は例えばサーバである。
【００４０】
図４は、第１の実施形態に係るストレージ装置２１のＣＭ２２の構成を示す図である。ＣＭ２２は、キャッシュ３１、キャッシュ制御部３２、検出部３３、プリフェッチ制御部３４、記憶部３５、及び通信部３６を含む。キャッシュ制御部３２は、プリフェッチ部１０の一例である。検出部３３は、第１の判定部２、第１の通知部３、計測部４、第２の判定部９の一例である。プリフェッチ制御部３４は、第３の判定部６、第２の通知部７の一例である。記憶部３５は、記憶部５の一例である。
【００４１】
キャッシュ３１は、ホスト２０から読み込み要求があった際に、ＤＥ２３のディスクに格納されているデータをホスト２０に対して転送する効率を向上させるために使用される記憶領域である。尚、キャッシュ３１は図２のキャッシュ２５に対応している。
【００４２】
キャッシュ制御部３２は、ホスト２０から読み込み要求があった場合、先ず、キャッシュ３１内に読み込み対象データが存在するか否かを判定し、存在する場合キャッシュ３１内のデータをホスト２０に返す。また、読み込み対象データがキャッシュ３１内に存在しない場合、ディスクから読み込み対象データをキャッシュ３１に読み出すとともに、その読み込み対象データをホスト２０に返す。また、キャッシュ制御部３２は、ホスト２０から書き込み要求があった場合は、先ず、キャッシュ３１内に書き込み対象データが存在するか否かを判定し、存在する場合キャッシュ３１内のデータを書き換える。また、書き込み対象データがキャッシュ３１内に存在しない場合、ディスクから書き込み対象データをキャッシュ３１に読み出し、その読み込み対象データに対して書き込みを行う。書き込み処理が行われたキャッシュ３１内のデータは、キャッシュ３１内のデータに対して書き込み処理が行われた直後にディスクに書き込まれてもよいし、所定のタイミングでディスクに書き込まれてもよい。
【００４３】
キャッシュ制御部３２は、ホスト２０からの読み込み要求に対してシーケンシャル性が検出された場合に、後続する読み込み要求を待たずに、論理ボリュームのアドレスが連続する記憶装置内のデータを予めキャッシュ３１に先読みする。この先読み動作をプリフェッチステージング（Ｐｒｅｆｅｔｃｈ  Ｓｔａｇｉｎｇ）と呼ぶ。プリフェッチステージングを行うことで、ホスト２０からのシーケンシャルな読み込み要求（ＲＥＡＤ  Ｉ／Ｏ）のスループットを向上させることができる。プリフェッチステージングの読み込み動作のタイミング及び、先読みする対象領域のアドレスの情報については、キャッシュ制御部３２はプリフェッチ制御部３４から受け取る。キャッシュ制御部３２の機能は、ＣＰＵ２４により提供される。
【００４４】
検出部３３は、ホスト２０からの読み込み要求に対してシーケンシャル性を検出し、プリフェッチ制御部３４に対して、プリフェッチステージングの実行を指示する。具体的には、検出部３３は、読み込み対象の論理ブロックアドレスが連続する読み込み要求が所定の閾値以上連続した場合に、プリフェッチ制御部３４にプリフェッチステージングの実行を指示する。これにより、ＷＳＶに対する読み込み要求については、ＳＬＵ、及びコントローラをまたいだシーケンシャル性の検出が可能である。検出部３３の機能は、ＣＰＵ２４により提供される。
【００４５】
プリフェッチ制御部３４は、検出部３３からプリフェッチステージングの実行通知を受けると、プリフェッチステージングの対象領域を算出する。そしてプリフェッチ制御部３４は、算出した対象領域の情報とともに、キャッシュ制御部にプリフェッチステージングの実行を指示する通知を送信する。また、プリフェッチ制御部３４は、他ＣＭ２２が管理するＳＬＵにプリフェッチステージングの対象領域が及ぶ場合、他ＣＭ２２のプリフェッチ制御部３４に対してその対象領域のプリフェッチを行うように通信部３６を介して指示する。プリフェッチ制御部３４の機能は、ＣＰＵ２４により提供される。
【００４６】
記憶部３５は、検出部３３がシーケンシャル性の検出のために用いる検出テーブルを記憶する。また、ＯＬＵを構成するＷＳＶユニットがどのＲＬＵ２８に割り当てられているかを示す情報、及び、各ＷＳＶユニットの境界のアドレス（以下、ＷＳＶユニットバウンダリと記す）の情報を記憶する。ここで、ＯＬＵを構成するＷＳＶユニットがどのＲＬＵ２８に割り当てられているかを示す情報には、ＷＳＶユニットのＲＬＵへの割り当て順及びＲＬＵ２８を管理するＣＭの情報が含まれる。ＯＬＵを構成するＷＳＶユニットがどのＲＬＵ２８に割り当てられているかを示す情報、及び各ＷＳＶユニットの境界のアドレスは、例えばＷＳＶを構成するＲＬＵのリスト、代表ＲＬＵ、及びＷＳＶユニットサイズから算出できるのでこれらの情報を記憶してもよい。また、記憶部３５は、プリフェッチステージングにおけるプリフェッチ量の情報が格納される。
【００４７】
記憶部３５の機能は、図２には図示していないが、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、またはフラッシュメモリ等の半導体メモリによって提供される。
【００４８】
通信部３６は、各ＣＭ２２が管理するＷＳＶユニットをまたがって論理ボリューム全体としてシーケンシャル性を検出するために、他ＣＭ２２に対してシーケンシャル性検出に関する情報の送受信を行う。また、通信部３６は、プリフェッチステージングにおいて、プリフェッチする領域が自ＣＭ以外のＣＭ２２が管理するＳＬＵに及ぶ場合、他のＣＭ２２に対してプリフェッチ対象領域の情報の送受信を行う。
【００４９】
次に、ホスト２０からの読み込み要求発生時のストレージ装置の動作を説明する。図５、図６は、ワイドストライピングを実行しているストレージ装置２１が読み込み要求を受信したときの動作を説明するための図である。
【００５０】
先ず図５を参照して、ワイドストライピングを実行しているストレージ装置２１の読み込み要求受信時におけるステージング開始までの動作を説明する。
【００５１】
ＣＭ＃０は、ホスト２０から発行された読み込み要求コマンドを受信すると、受信した読み込み要求コマンドに記された読み込み対象領域を参照する。そして、ＣＭ＃０は、読み込み対象領域がどのＲＬＵ２８に位置するかを特定する。ＣＭ＃０は、受信した読み込み要求コマンドの読み込み対象領域が、自身が管理するＲＬＵ２８以外のＲＬＵ２８のアドレスを含む場合、異なるＣＭ２２が管理する読み込み対象領域ごとに、読み込み要求コマンドを生成する（１）。図５の例では、ＣＭ＃０は、読み込み要求コマンドＲ０とＲ１を生成する。Ｒ０は、読み込み要求コマンドの読み込み対象アドレスのうち、ＣＭ＃０が管理するＲＬＵ２８ＡのＳＬＵの領域を読み込み対象とする読み込みコマンドである。Ｒ１は、ＣＭ＃１が管理するＲＬＵ２８ＢのＳＬＵの領域を読み込み対象とする読み込みコマンドである。
【００５２】
ここで、分割した読み込み要求コマンドが含むデータ構造の一例を示す。図６は、生成した読み込み要求コマンドのデータ構造の一例である。読み込み要求コマンド５０は、「ＳＬＵ番号」５１、「先頭ＳＬＢＡ」５２、「最終ＳＬＢＡ」５３を含む。
【００５３】
「ＳＬＵ番号」５１は、読み込み要求コマンド５１の読み込み対象であるＳＬＵの識別情報を示す。「先頭ＳＬＢＡ」５２、「最終ＳＬＢＡ」５３は、それぞれ、「ＳＬＵ番号」５１に格納されたＳＬＵ番号で表されるＳＬＵの読み込み対象領域の先頭ＳＬＢＡ、最終ＳＬＢＡのアドレスを示す。図６の例は、「ＳＬＵ番号」５１、「先頭ＳＬＢＡ」５２、「最終ＳＬＢＡ」５３の値として、それぞれ「a」、「b」、「c」が格納されている例を示している。
【００５４】
尚、読み込み要求コマンドの読み込み対象アドレスがＯＬＵの論理アドレスで記されている場合には、ＣＭ＃０はアドレス変換テーブル等を用いて物理アドレスに変換する動作を行ってもよい。
【００５５】
次にＣＭ＃０は、ＣＭ間通信を通じてＣＭ＃１にＲ１を転送する（２）。
次にＣＭ＃０及びＣＭ＃１は、Ｒ０またはＲ１の読み込み対象データがキャッシュ２５Ａ，２５Ｂに存在するか否かを判定する（３）。キャッシュ２５Ａ，２５Ｂに読み込み対象データが存在しない場合、ＣＭ＃０及びＣＭ＃１は、Ｒ０またはＲ１に対してシーケンシャル性の判定を行い、シーケンシャル性を検出した場合はプリフェッチステージングを開始する。また、ＣＭ＃０及びＣＭ＃１はシーケンシャル性を検出しなかった場合は、読み込み対象データをＲＬＵの物理アドレスからキャッシュへの読み出しを開始する（４）。
【００５６】
次に、図７を参照してワイドストライピングを実行しているストレージ装置に対する読み込み要求発行時のステージング開始からホスト２０に応答するまでの動作を説明する。
ＣＭ＃０は、Ｒ０の読み込み領域に格納されていたデータであるＤａｔａ０をキャッシュ２５Ａに読み出す。また、ＣＭ＃１は、Ｒ１の読み込み領域に格納されていたデータであるＤａｔａ１をキャッシュ２５Ｂに読み出す（５）。尚、（３）、（４）、（５）の処理はＣＭ＃０とＣＭ＃１で並行して実行される。
【００５７】
次に、ＣＭ＃１は、キャッシュ２５ＢのＤａｔａ１をＣＭ＃０のキャッシュ２５Ａにバス２９を通じて転送する（６）。
【００５８】
次に、ＣＭ＃０は、Ｄａｔａ０とＤａｔａ１を結合して、ホスト２０から読み込み要求のあったデータであるＤａｔａを生成する（７）。そして、ＣＭ＃０はホスト２０に生成したＤａｔａを転送する（８）。
【００５９】
尚、読み込み要求コマンドの分割及び結合の処理は、ＣＭ２２のＣＰＵ２４が行う。以下の説明では、検出部３３が受信する読み込み要求コマンドは分割後の読み込み要求コマンドとして説明する。
【００６０】
次に、ワイドストラインピングを実行しているストレージ装置において、シーケンシャル性の検出動作について詳細に説明する。
記憶部３５はシーケンシャル性の検出のために使用する検出テーブルをＳＬＵ毎に対応付けて保持する。図８に検出テーブルの一例を示す。検出テーブル４０は、「ＳＬＵ番号」４１、「先頭ＳＬＢＡ（ＳＬＵ  Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）」４２、「最終ＳＬＢＡ」４３、「検出回数４４」、及び「タイムスタンプ」４５のデータ項目を含む。
【００６１】
「ＳＬＵ番号」４１は、対応するＳＬＵの識別情報が格納される。「先頭ＳＬＢＡ」４２は、読み込み要求の読み込み対象領域の先頭のＳＬＢＡの値が示される。「最終ＳＬＢＡ」４３は、直近の読み込み要求においてアクセス対象となったＳＬＢＡの値が示される。「検出回数」４４は、読み込み対象の論理ブロックアドレスが連続する読み込み要求が、直近で何回連続して発生しているかを示す値が格納される。「タイムスタンプ」４５は、検出テーブルが更新された日時を示す情報が格納される。
【００６２】
記憶部３５は１つのＳＬＵに対応する検出テーブル４０を複数保持し、ＣＭ２２は１つのＳＬＵに対応する検出テーブル４０の数だけの多重度のシーケンシャル読み込み要求を検出することができる。ここで、１つのＳＬＵに対応する検出テーブル４０の数の最大値をＭとする。
【００６３】
１つのＳＬＵに対してホスト２０からの読み込み要求が並行して多数発生した場合、検出部３３は、シーケンシャル性検出のためそれぞれの読み込み要求に付き１つの検出テーブル４０を使用して、シーケンシャル性を検出する。検出テーブル４０の数が最大値Ｍに達しているときに新たに読み込み要求が発生した場合、検出部３３は「タイムスタンプ」４５が最も古く現在使用されていない検出テーブル４０を削除して、新たに検出テーブル４０を作成する。
【００６４】
検出部３３は、ホスト２０からの読み込み要求を受信すると、最終ＳＬＢＡ４３の値がホスト２０からの読み込み要求の先頭のＳＬＢＡに対して連続している検出テーブル４０を検索する。そして検出部３３は、検索した結果発見された検出テーブル４０の検出回数４４の値をインクリメントする。インクリメントした結果、検出回数４４の値が所定の閾値を超えた場合、検出部３３は、ホスト２０からの読み込み要求に対してシーケンシャル性が検出されたと判定する。
【００６５】
検出部３３はシーケンシャル性を検出した場合、プリフェッチ制御部３４に対してプリフェッチステージングの実行を指示する。プリフェッチ制御部３４は、プリフェッチステージングの実行指示を受け取ると、プリフェッチ対象領域を算出する。具体的には、プリフェッチ制御部３４は、検出テーブル４０の最終ＳＬＢＡ４３に対応するＯＬＢＡの次のアドレスから、ＯＬＢＡにおいてアドレスが連続するプリフェッチデータ量のデータが格納されている領域を、プリフェッチ対象領域として算出する。ここで、プリフェッチデータ量の情報は記憶部３５に格納されている。そして、プリフェッチ制御部３４は、プリフェッチ対象領域の情報とともに、プリフェッチステージングの実行指示をキャッシュ制御部３２に送信する。キャッシュ制御部３２は、プリフェッチ制御部３４からプリフェッチステージングの実行指示を受信すると、プリフェッチ対象領域に格納されたデータをキャッシュ２５に読み出す。
【００６６】
読み込み要求の対象領域がＷＳＶユニットバウンダリを含む場合、検出部３３は、次のＷＳＶユニットを管理するＣＭ２２に対して検出回数を通知し、通知を受けたＣＭ２２の検出部３３は、その検出回数を引き継ぐ。これにより、各ＣＭ２２が管理するＷＳＶユニットをまたがって、論理ボリューム全体としてシーケンシャル性を検出することができる。ただし、次のＷＳＶユニットを管理するＣＭ２２が自装置である場合、通知は行わなくてもよい。図９は、読み込み対象領域がＷＳＶユニットバウンダリを含む場合の検出回数の引継ぎを説明するための図である。
【００６７】
図９の例の場合、ＷＳＶユニット９０１はＲＬＵ＃Ａに含まれ、ＷＳＶユニット９０２はＲＬＵ＃Ｂに含まれる。また、ＲＬＵ＃Ａを管理するＣＭ２２はＣＭ＃０であり、ＲＬＵ＃Ｂを管理するＣＭ２２はＣＭ＃１である。
【００６８】
ＷＳＶユニット９０１に対する読み込み要求がＷＳＶユニットバウンダリに達した場合、ＣＭ＃０の検出部３３は、次のＷＳＶユニットが含まれるＲＬＵ＃Ｂを管理するＣＭ＃１に、検出テーブル４０の検出回数４４の値と最終ＳＬＢＡ４３の値とを通知する。
【００６９】
ＣＭ＃１はシーケンシャル性についての互いに関連のない読み込み要求毎の複数の検出テーブル４０を保持しているため、通知された値に関する読み込み要求に対応する検出テーブル４０を特定する。具体的にはＣＭ＃１の検出部３３は、自ＣＭ２２がもつ検出テーブル４０のうち、先頭ＳＬＢＡ４２の値に相当するＯＬＢＡが、通知された最終ＳＬＢＡ４３に相当するＯＬＢＡの次のＬＢＡであるテーブルを検索し、抽出する。そして、ＣＭ＃１の検出部３３は、抽出した検出テーブル４０の検出回数４４に、ＣＭ＃０から通知された検出回数４４の値を加算する。そしてＣＭ＃１の検出部３３は、検出回数４４の値が所定の閾値を超えた場合、ホスト２０からの読み込み要求に対してシーケンシャル性が検出されたと判定する。
【００７０】
次に、シーケンシャル性検出とプリフェッチステージングの動作フローを説明する。図１０は、ＣＭ２２のシーケンシャル性の検出およびプリフェッチステージングの動作フローを示す。図１０のフローは各ＣＭが、ＣＭ毎に分割された読み込み要求を受信した場合に開始される。
【００７１】
検出部３３は、読み込み要求を受信する（Ｓ４０１）と、最終ＳＬＢＡ４３の値が読み込み要求の読み込み対象領域の先頭ＳＬＢＡに対して連続する検出テーブル４０を検索する（Ｓ４０２）。
【００７２】
最終ＳＬＢＡ４３の値が読み込み対象領域の先頭ＳＬＢＡに対して連続する検出テーブル４０が存在しない場合（Ｓ４０２でＮｏ）、検出部３３はタイムスタンプ４５が最も古い検出テーブル４０を削除する（Ｓ４０３）。
【００７３】
そして、検出部３３は、受信した読み込み要求に関する検出テーブル４０を新規作成する（Ｓ４０４）。また、検出部３３は、検出テーブル４０の作成時刻を検出テーブル４０のタイムスタンプ４５に格納する。
【００７４】
次に、検出部３３はＳ４０４で作成した検出テーブル４０の先頭ＳＬＢＡ４２、最終ＳＬＢＡ４３、及び検出回数４４の値を設定する（Ｓ４０５）。すなわち検出部３３は、受信した読み込み要求の読み込み対象領域の先頭ＳＬＢＡを検出テーブル４０の先頭ＳＬＢＡ４２に格納し、読み込み対象領域の最終ＳＬＢＡを検出テーブルの最終ＳＬＢＡ４３に格納する。また、検出部３３は、検出テーブル４０の検出回数４４の値を「０」に設定する。そして、処理は終了する。
【００７５】
Ｓ４０２における検索の結果、条件に該当する検出テーブル４０を発見した場合（Ｓ４０２でＮｏ）、検出部３３は、発見したテーブルの最終ＳＬＢＡ４３の値を読み込み対象領域の最終ＳＬＢＡに更新する（Ｓ４０６）。また検出部３３は、検出テーブル４０のタイムスタンプ４５の値を、最終ＳＬＢＡ４３が更新された時刻に更新する。
【００７６】
次に、検出部３３は、検出テーブル４０の検出回数４４の値をインクリメントする（Ｓ４０７）。
【００７７】
次に、検出部３３は、検出テーブル４０の検出回数４４の値が所定の閾値以上か否かを判定する（Ｓ４０８）。
【００７８】
所定の閾値以上と判定した場合（Ｓ４０８でＹｅｓ）、検出部３３は、シーケンシャル性が検出されたと判定し、プリフェッチ制御部３４に対してプリフェッチステージングを実行するよう通知する。通知を受信すると、プリフェッチ制御部３４は、プリフェッチ対象領域を算出し、キャッシュ制御部３２にプリフェッチの実行指示とプリフェッチ対象領域の情報を送信する。キャッシュ制御部３２はプリフェッチ実行指示とプリフェッチ対象領域の情報を受信すると、プリフェッチステージングを実行する（Ｓ４０９）。
【００７９】
次に、検出部３３は、検出テーブル４０の最終ＳＬＢＡ４３の値をＳ４０９でプリフェッチされたデータの最終ＳＬＢＡの値に更新する（Ｓ４１０）。
【００８０】
そして、検出部３３は、検出テーブル４０の検出回数４４の値を０にする（Ｓ４１１）。そして処理は終了する。
【００８１】
Ｓ４０８において、所定の閾値未満と判定した場合（Ｓ４０８でＮｏ）、検出部３３は、最終ＳＬＢＡ４３の値がＷＳＶユニットバウンダリに到達したか否かを判定する（Ｓ４１２）。例えば、検出部３３は、最終ＳＬＢＡ４３がＷＳＶユニットバウンダリか否かを判定する。
【００８２】
最終ＳＬＢＡ４３の値がＷＳＶユニットバウンダリに到達していないと判定された場合（Ｓ４１２でＮｏ）、処理は終了する。
【００８３】
Ｓ４１２において、最終ＳＬＢＡ４３の値がＷＳＶユニットバウンダリに到達したと判定した場合（Ｓ４１２でＮｏ）、検出部３３は、最終ＳＬＢＡ４３と検出回数４４を、検出回数通知として他のＣＭ２２に送信する（Ｓ４１３）。ここで、検出部３３が通知する他のＣＭ２２は、最終ＳＬＢＡに対応するＯＬＢＡにおけるアドレスの次のアドレスに対応するＲＬＵ２８を管理するＣＭ２２である。検出部３３は、記憶部３５に記憶されたＯＬＵを構成するＷＳＶユニットがどのＲＬＵ２８に割り当てられているかを示す情報を参照し、通知するＣＭ２２を特定する。尚、検出部３３は、通信部３６を介して他のＣＭ２２に検出回数通知を送信する。
そして、処理は通知を受けたＣＭ２２の処理へ移行する。
【００８４】
次に、Ｓ４１３で発行された検出回数通知を受信したＣＭ２２の動作について説明する。図１１は、検出回数通知を受信したＣＭ２２の動作フローを示す。
【００８５】
検出部３３は検出回数通知を受信すると（Ｓ５００）、自ＣＭ２２がもつ検出テーブル４０のうち、先頭ＳＬＢＡ４２の値に相当するＯＬＢＡが、通知された最終ＳＬＢＡ４３に相当するＯＬＢＡの次のＬＢＡであるテーブルを検索する（Ｓ５０１）。ここで検索により抽出された検出テーブル４０を検出テーブル４０ｂと記す。
【００８６】
そして、Ｓ５０１で検出テーブル４０ｂを抽出した場合（Ｓ５０１でＹｅｓ）、検出部３３は、検出回数通知に基づいて検出テーブル４０ｂの情報を更新する（Ｓ５０２）。具体的には、検出部３３は、検出テーブル４０ｂの検出回数４４に、検出回数通知の検出回数４４の値を加える。
【００８７】
そして、検出部３３は、検出テーブル４０ｂの検出回数４４の値が所定の閾値以上か否かを判定する（Ｓ５０３）。所定の閾値未満である場合（Ｓ５０３でＮｏ）、処理は終了する。
【００８８】
所定の閾値以上と判定した場合（Ｓ５０３でＹｅｓ）、検出部３３は、シーケンシャル性が検出されたと判定し、プリフェッチ制御部３４に対してプリフェッチステージングを実行するよう通知する。通知を受信すると、プリフェッチ制御部３４は、プリフェッチ対象領域を算出し、キャッシュ制御部３２にプリフェッチの実行指示とプリフェッチ対象領域の情報を送信する。キャッシュ制御部３２はプリフェッチ実行指示とプリフェッチ対象領域の情報を受信すると、プリフェッチステージングを実行する（Ｓ５０４）。
【００８９】
次に、検出部３３は、検出テーブル４０ｂの最終ＳＬＢＡ４３の値をＳ５０４でプリフェッチされたデータの最終ＳＬＢＡの値に更新する（Ｓ５０５）。
【００９０】
そして、検出部３３は、検出テーブル４０の検出回数４４の値を０にする（Ｓ５０６）。そして処理は終了する。
【００９１】
Ｓ５０１において、先頭ＳＬＢＡ４２の値に相当するＯＬＢＡが、通知された最終ＳＬＢＡ４３に相当するＯＬＢＡの次のＬＢＡであるテーブルが見つからなかった場合、検出部３３は検出テーブル４０を新規作成する（Ｓ５０７）。
【００９２】
そして、検出部はＳ５０７で作成した検出テーブル４０の検出回数４４の値を、検出回数通知の検出回数４４の値に設定する（Ｓ５０８）。そして、処理は終了する。
【００９３】
プリフェッチステージングにおいて、プリフェッチが開始されるアドレスやプリフェッチ量によっては、プリフェッチ対象領域が自ＣＭ以外のＣＭ２２が管理するＳＬＵに及ぶ場合がある。この場合の動作について説明する。
【００９４】
図１２は、プリフェッチ対象領域が自ＣＭ以外のＣＭ２２が管理するＳＬＵに及ぶ場合の一例を示す。
図１２の例では、ワイドストライピングにおいて、ＳＬＵ＃０、ＳＬＵ＃１、ＳＬＵ＃２、ＳＬＵ＃３、ＳＬＵ＃０、ＳＬＵ＃１、・・・の順でＷＳＶユニットにデータの書き込みが行われる。図１２の例の場合、プリフェッチステージングのプリフェッチ対象範囲は網かけ部分となり、自ＣＭ以外のＣＭ２２が管理するＳＬＵに及んでいる。すなわち、プリフェッチ対象範囲は、ＳＬＵ＃０のプリフェッチ開始ＯＬＢＡ相当ＳＬＢＡからスタートし、ＳＬＵ＃１、ＳＬＵ＃２、ＳＬＵ＃３を経由してＳＬＵ＃０の次ＷＳＶユニットのプリフェッチ終了ＯＬＢＡ相当ＳＬＢＡまでである。
【００９５】
シーケンシャル性が検出され、検出部３３からプリフェッチステージングの実行通知を受けると、プリフェッチ制御部３４はプリフェッチステージングの対象領域を算出する。そして、プリフェッチ制御部３４は、他ＣＭ２２が管理するＳＬＵにプリフェッチステージングの対象領域が及ぶ場合、他ＣＭ２２に対してその対象領域のプリフェッチを行うように指示する。他のＣＭ２２に対するプリフェッチステージングの指示には、指示するＣＭ２２が行うプリフェッチステージングのプリフェッチ対象領域のアドレスの情報を含む。図１２の例の場合、ＣＭ＃０のプリフェッチ制御部３４は、ＳＬＵ＃２及びＳＬＵ＃３を管理するＣＭ＃１に対して、網掛け部分の領域のデータをステージングするように指示する。
【００９６】
次に、プリフェッチステージングにおいて、プリフェッチする領域が自ＣＭ以外のＣＭ２２が管理するＳＬＵに及ぶ場合の動作フローについて説明する。図１３は、プリフェッチステージングにおいて、プリフェッチする領域が自ＣＭ以外のＣＭ２２が管理するＳＬＵに及ぶ場合のストレージ装置の動作フローを示す。
【００９７】
シーケンシャル性が検出され、検出部３３からプリフェッチを実行するよう通知を受けると、プリフェッチ制御部３４は、先ずプリフェッチステージングの対象領域を算出する（Ｓ６０１）。具体的には、プリフェッチ制御部３４は記憶部３５に記憶されたプリフェッチ量を取得する。また、プリフェッチ制御部３４は検出テーブル４０の最終ＳＬＢＡ４３の値を取得する。そして、プリフェッチ制御部３４は、最終ＳＬＢＡ４３の値に対応するＯＬＢＡの次のアドレスからプリフェッチ量の範囲のＯＬＢＡのアドレスまでをプリフェッチ対象領域として算出する。
【００９８】
次に、プリフェッチ制御部３４は、自ＣＭ２２が管理するＲＬＵ２８内にプリフェッチ対象領域が収まるか否かを判定する（Ｓ６０２）。すなわち、プリフェッチ制御部３４はプリフェッチ対象領域が、他ＣＭ２２により管理されるＷＳＶユニットとのＷＳＶユニットバウンダリをまたぐか否かを判定する。自ＣＭ２２が管理するＲＬＵ内にプリフェッチ対象領域が収まると判定された場合（Ｓ６０２でＹｅｓ）、処理はＳ６０４に遷移する。
【００９９】
自ＣＭ２２が管理するＲＬＵ内にプリフェッチ対象領域が収まらないと判定された場合（Ｓ６０２でＮｏ）、プリフェッチ制御部３４は、プリフェッチ対象領域を含むＳＬＵを管理する他のＣＭ２２にプリフェッチ対象領域を通知する（Ｓ６０３）。具体的には、プリフェッチ制御部３４は、記憶部３５に記憶されている、ＯＬＵを構成するＷＳＶユニットがどのＲＬＵ２８に割り当てられているかを示す情報、及び各ＷＳＶユニットの境界のアドレスの情報を参照する。そして、プリフェッチ制御部３４は、ＯＬＢＡにおけるプリフェッチ対象領域を元に、ＳＬＵ毎の、プリフェッチ領域の先頭ＳＬＢＡとプリフェッチデータ量を求める。そして、プリフェッチ制御部３４は、各ＳＬＵを管理するＣＭ２２に対して、そのＳＬＵに対応する、プリフェッチ先頭ＳＬＢＡとプリフェッチデータ量の情報をプリフェッチ対象領域通知として送信する。
【０１００】
そして、プリフェッチ制御部３４は自ＣＭ２２内のＲＬＵのプリフェッチ対象領域に対してプリフェッチを行い（Ｓ６０４）、処理が終了する。
【０１０１】
次に、Ｓ６０３において発行されたプリフェッチ対象領域通知を受信したＣＭ２２の動作を説明する。図１４は、プリフェッチ対象領域通知を受信した際のストレージ装置の動作を示す。
【０１０２】
プリフェッチ対象領域通知を受信すると（Ｓ７００）、プリフェッチ制御部３４は、受信した通知に含まれるプリフェッチ先頭ＳＬＢＡとプリフェッチデータ量とに基づいて、プリフェッチ対象領域を特定する。そして、プリフェッチ制御部３４は、キャッシュ制御部３２にプリフェッチ対象領域のデータをプリフェッチステージングするよう指示し、キャッシュ制御部３２は、プリフェッチステージングを実施する（Ｓ７０１）。そして処理は終了する。
【０１０３】
本実施形態では、ＷＳＶのデータ配置を考慮することで、ＣＭ間のデータのやりとりを最小化しつつ、独立した複数ＣＭ２２で連携してプリフェッチステージングが可能となる。プリフェッチステージングを検出するための検出テーブルは各ＣＭ２２で独立して記憶される。ＣＭ２２は、検出テーブル上の最終ＬＢＡがＷＳＶユニットバウンダリを超えた場合に他ＣＭ２２にテーブル情報を通信するため、ＣＭ間の通信を極小化できる。
【０１０４】
また、ＣＭ２２は、プリフェッチステージングの対象範囲が他ＣＭにまたがるかどうかを判定し、またがる場合には他ＣＭに対してそのＣＭで実行するプリフェッチ対象領域を通知することで、ＣＭ間にまたがったプリフェッチステージングの実行を可能とする。
【０１０５】
（実施形態２）
実施形態２のストレージシステムは、実施形態１におけるストレージ装置２１を筐体間で接続した構成である。図１５は実施形態２に係るストレージシステムのハードウェア構成の一例を示す。
【０１０６】
実施形態２に係るストレージシステムは、ストレージ装置２１とストレージ装置１０１とがバスまたはネットワーク１０２で接続されている。ストレージ装置２１とストレージ装置１０１は、スイッチやルータを介して接続されてもよい。
【０１０７】
ストレージ装置２１は、実施形態１で説明したものと同様である。ストレージ装置１０１は、ＣＭ２２とＤＥ２３を一つずつ含む構成となっているが、これに限定されず、複数台ずつ含んでもよい。ＣＭ２２Ｃ及びＤＥ２３Ｃの各機能は実施形態１で説明したＣＭ２２及びＤＥ２３にそれぞれ対応する。ＲＬＵ２８Ａ、ＲＬＵ２８Ｂ、及びＲＬＵ２８Ｃでワイドストライピングボリュームが構成される。
【０１０８】
（実施形態３）
実施形態３のストレージシステムでは、実施形態１におけるＣＭ２２の機能の一部を、例えばサーバ等のプロセッサユニット（以下、ＰＵと記す）が実現する。図１６は実施形態３に係るストレージシステムのハードウェア構成の一例を示す。
【０１０９】
実施形態３に係るストレージシステムは、基本ノード８２及び拡張ノード８３を含む。基本ノード８２はＰＵ＃１（８４Ａ）、ＰＵ＃２（８４Ｂ）、スイッチ（以下、ＳＷと記す）＃１（ＳＷ８５Ａ）、ＳＷ＃２（ＳＷ８５Ｂ）、ストレージユニット（以下、ＳＵと記す）＃１（ＳＵ８６Ａ）を含む。拡張ノード８３は、ＰＵ＃３（ＰＵ８４Ｃ）、ＳＷ＃３（ＳＷ８５Ｃ）、ＳＵ＃２（ＳＵ８６Ｂ）を含む。基本ノード８２及び拡張ノード８３は、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）８１等のネットワークを介して業務サーバ８０等のホストコンピュータに接続される。また、ＰＵ＃１、ＰＵ＃２、ＰＵ＃３、ＳＵ＃１、及びＳＵ＃２は、ＳＷ＃１またはＳＷ２を介して、バスまたはネットワークで接続され、データの送受信が行われる。各ＰＵ８４と各ＳＵ８６に対して、スイッチを介して交差してアクセスできる。
【０１１０】
以下の説明では、ＰＵ８４Ａ、ＰＵ８４Ｂ、ＰＵ８４Ｃのそれぞれを特に区別しない場合には、単にＰＵ８４と記す。同様に、ＳＷ、ＳＵ、ＣＰＵ、メモリについても同様に記す。
【０１１１】
ＰＵ８４は、ＣＰＵ８７とメモリ８８を含んで構成される。
ＣＰＵ８７は、業務サーバ８０からＳＵ８６のディスクに対するＩ／Ｏの制御を行う。また、ＣＰＵ８７は、ＰＵ８４及びＳＵ８６の種々の動作を制御する。また、ＣＰＵ８７は、ＳＵ８６Ａ及びＳＵ８６Ｂのディスクの領域で構成されたＷＳＶの管理を行う。
【０１１２】
メモリ８８は、例えば半導体メモリであり、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）領域およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）領域を含んで構成される。
【０１１３】
ＳＵ８６は、図１６に図示してはいないが、実施形態１のＣＭ２２とＤＥ２３の構成を含む。また、ＳＵ８６ＡとＳＵ８６Ｂのディスクの領域にはＷＳＶが構成されている。
【０１１４】
実施形態３に係るストレージシステムの構成は図４に示したものと同じである。ただし、検出部３３、プリフェッチ制御部３４、及び通信部３６の機能はＳＵ内の図示しないＣＰＵによってではなく、ＣＰＵ８７により提供される。また、記憶部３５の機能はＳＵ内の図示しないメモリによってではなく、メモリ８８により提供される。
【０１１５】
キャッシュ３１は、ＳＵ８６の図示しないキャッシュにより実現されるとしたが、ＰＵ８４にキャッシュメモリを設けて、ＰＵ内のキャッシュメモリにより実現してもよい。また、キャッシュ制御部３２は、ＳＵ８６の図示しないＣＰＵにより実現されるとしたが、ＣＰＵ８７により実現してもよい。
【０１１６】
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１１７】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
自制御装置配下の単位記憶領域と他の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を制御する制御装置であって、
前記読み出し処理が自制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、該シーケンシャル読み出し処理の読み出し対象領域が該単位記憶領域における最終アドレスを含むか否かを判定する第１の判定部と、
前記第１の判定部により判定された前記最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を前記他の制御装置に通知する第１の通知部と、
を備えることを特徴とする制御装置。
（付記２）
前記他の制御装置から通知された前記制御情報に基づいて、自制御装置配下の単位記憶領域の読み出し処理と通知元の制御装置の読み出し処理とが前記シーケンシャル読み出し処理であるかを判定する第２の判定部と、
前記第２の判定部により判定されたシーケンシャル読み出し処理に関わる自制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行うプリフェッチ部と、
を備えることを特徴とする付記１に記載の制御装置。
（付記３）
前記制御装置は、さらに、
前記シーケンシャル読み出し処理における前記論理アドレス順の読み出し回数を計測する計測部
を備え、
前記第１の通知部は、前記読み出し処理の読み出し対象領域が自制御装置配下の単位記憶領域における最終アドレスを含む場合、計測された前記回数を前記他の制御装置に通知し、
前記プリフェッチ部は、自制御装置において前記論理アドレス順の読み出し回数に前記通知された回数を加算した値が、所定の閾値以上の場合、前記プリフェッチを行う
ことを特徴とする付記２に記載の制御装置。
（付記４）
前記制御装置は、さらに、
前記プリフェッチにより読み出す情報の情報量を記憶する記憶部と、
前記情報量に基づいて、前記プリフェッチにより読み出すプリフェッチ対象領域が、前記他の制御装置配下の単位記憶領域を含むか否かを判定する第３の判定部と、
前記プリフェッチ対象領域が前記他の制御装置配下の単位記憶領域を含むと判定された場合、前記他の制御装置配下の前記単位記憶領域に関するプリフェッチ情報を前記他の制御装置に通知する第２の通知部と、
を備え、
前記プリフェッチ部は、他の制御装置から前記プリフェッチ情報が通知された場合、通知された該プリフェッチ情報に基いて、該プリフェッチ情報に対応する単位記憶領域の情報の前記プリフェッチを行う
ことを特徴とする付記１〜３のうちいずれか１項に記載の制御装置。
（付記５）
第１の制御装置配下の単位記憶領域と第２の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を行なうストレージシステムであって、
前記第１の制御装置は、
前記読み出し処理が第１の制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、該シーケンシャル読み出し処理の読み出し対象領域が該単位記憶領域における最終アドレスを含むか否かを判定する第１の判定部と、
前記第１の判定部により判定された前記最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を前記第２の制御装置に通知する第１の通知部と、を備え、
前記第２の制御装置は、
前記第１の制御装置から通知された前記制御情報に基づいて、第２の制御装置配下の単位記憶領域の読み出し処理と通知元の第１の制御装置の読み出し処理とが前記シーケンシャル読み出し処理であるかを判定する第２の判定部と、
前記第２の判定部により判定されたシーケンシャル読み出し処理に関わる第２の制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行うプリフェッチ部と、
を備えることを特徴とするストレージシステム。
（付記６）
前記第１の制御装置は、さらに、
前記シーケンシャル読み出し処理における前記論理アドレス順の読み出し回数を計測する計測部
を備え、
前記第１の判定部は、前記読み出し処理の読み出し対象領域が前記第１の制御装置配下の単位記憶領域における最終アドレスを含む場合、計測された前記回数を前記第２の制御装置に通知し、
前記プリフェッチ部は、前記第２の制御装置において前記論理アドレス順の読み出し回数に前記通知された回数を加算した値が、所定の閾値以上の場合、前記プリフェッチを行う
ことを特徴とする付記５に記載のストレージシステム。
（付記７）
前記第２の制御装置は、さらに、
前記プリフェッチにより読み出す情報の情報量を記憶する記憶部と、
前記情報量に基づいて、前記プリフェッチにより読み出すプリフェッチ対象領域が、第３の制御装置配下の単位記憶領域を含むか否かを判定する第３の判定部と、
前記プリフェッチ対象領域が前記第３の制御装置配下の前記単位記憶領域を含むと判定された場合、前記第３の制御装置配下の前記単位記憶領域に関するプリフェッチ情報を前記第３の制御装置に通知する第２の通知部と、
を備え、
前記プリフェッチ部は、第４の制御装置から前記プリフェッチ情報が通知された場合、通知された該プリフェッチ情報に基いて、該プリフェッチ情報に対応する単位記憶領域の情報の前記プリフェッチを行う
ことを特徴とする付記５または６に記載のストレージシステム。
（付記８）
前記ストレージシステムは、複数のストレージ装置を筐体間で接続したものであり、各ストレージ装置は、前記筐体内に、前記単位記憶領域を割り当てる記憶装置群と該記憶装置群を制御する制御部を含む記憶ユニットと、前記前記第１の制御装置および前記第２の制御装置として動作する制御ユニットを備える
ことを特徴とする付記５〜７のうちいずれか１項に記載のストレージシステム。
（付記９）
前記制御ユニットは、前記筐体内に設けられたサーバであり、筐体間で接続された他のストレージ装置の前記記憶ユニットに対する入出力処理を行なう
ことを特徴とする付記８に記載のストレージシステム。
（付記１０）
自制御装置配下の単位記憶領域と他の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を制御する処理をプロセッサに実行させる制御プログラムであって、
前記読み出し処理が自制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理であり、該シーケンシャル読み出し処理の読み出し対象領域が該単位記憶領域における最終アドレスを含むか否かを判定し、
前記判定された前記最終アドレスを含むシーケンシャル読み出し処理に関する制御情報を前記他の制御装置に通知する
処理をプロセッサに実行させることを特徴とする制御プログラム。
（付記１１）
プロセッサに、
前記シーケンシャル読み出し処理における前記論理アドレス順の読み出し回数を計測し、
前記読み出し処理の読み出し対象領域が前記自制御装置配下の単位記憶領域における最終アドレスを含む場合、計測された前記回数を前記他の制御装置に通知する
処理を実行させることを特徴とする付記１０に記載の制御プログラム。
（付記１２）
プロセッサに、
記憶部に記憶されたプリフェッチにより読み出す情報の情報量に基づいて、前記プリフェッチにより読み出すプリフェッチ対象領域が、前記他の制御装置配下の単位記憶領域を含むか否かを判定し、
前記プリフェッチ対象領域が前記他の制御装置配下の単位記憶領域を含むと判定された場合、前記他の制御装置の配下の前記単位記憶領域に関するプリフェッチ情報を前記他の制御装置に通知する
処理を実行させることを特徴とする付記１１に記載の制御プログラム。
（付記１３）
自制御装置配下の単位記憶領域と他の制御装置配下の単位記憶領域に分散して格納された情報の読み出し処理を制御する処理をプロセッサに実行させる制御プログラムであって、
前記他の制御装置配下の単位記憶領域に格納された情報を論理アドレス順に読み出すシーケンシャル読み出し処理の読み出し対象領域の前記単位記憶領域における最終アドレスを含む、前記他の制御装置から通知されたシーケンシャル読み出し処理に関する制御情報に基づいて、自制御装置配下の単位記憶領域の読み出し処理と通知元の制御装置の読み出し処理とがシーケンシャル読み出し処理であるかを判定し、
前記判定されたシーケンシャル読み出し処理に関わる自制御装置配下の単位記憶領域の情報を予め読み出してキャッシュメモリに記憶させるプリフェッチを行う
処理をプロセッサに実行させることを特徴とする制御プログラム。
（付記１４）
プロセッサに、
前記他の制御装置の前記シーケンシャル読み出し処理における前記論理アドレス順の読み出し回数を、自制御装置における論理アドレス順の読み出し回数に加算した値が、所定の閾値以上の場合、前記プリフェッチを行う
処理を実行させることを特徴とする付記１３に記載の制御プログラム。
（付記１５）
プロセッサに、
前記他の制御装置から通知された、自制御装置配下の単位記憶領域に関するプリフェッチ情報に基いて、該プリフェッチ情報に対応する単位記憶領域の情報の前記プリフェッチを行う
処理を実行させることを特徴とする付記１４に記載の制御プログラム。
【符号の説明】
【０１１８】
１      第１の制御装置
２      第１の判定部
３      第１の通知部
４      計測部
５      記憶部
６      第３の判定部
７      第２の通知部
８      第２の制御装置
９      第２の判定部
１０      プリフェッチ部
１１      記憶装置
１２      ストレージシステム
２０      ホスト
２１      ストレージ装置
２２      ＣＭ
２３      ＤＥ
２４      ＣＰＵ
２５      キャッシュ
２６      ＣＡ
２７      ＤＩ
２８      ＲＬＵ
２９      バス
３１      キャッシュ
３２      キャッシュ制御部
３３      検出部
３４      プリフェッチ制御部
３５      記憶部
３６      通信部
４０      検出テーブル
４１      ＳＬＵ番号
４２      先頭ＳＬＢＡ
４３      最終ＳＬＢＡ
４４      検出回数
４５      タイムスタンプ
【図１】
2014182755.tif 000003
【図２】
2014182755.tif 000004
【図４】
2014182755.tif 000005
【図５】
2014182755.tif 000006
【図６】
2014182755.tif 000007
【図７】
2014182755.tif 000008
【図８】
2014182755.tif 000009
【図１０】
2014182755.tif 000010
【図１１】
2014182755.tif 000011
【図１３】
2014182755.tif 000012
【図１４】
2014182755.tif 000013
【図１５】
2014182755.tif 000014
【図１６】
2014182755.tif 000015
【図３】
2014182755.tif 000016
【図９】
2014182755.tif 000017
【図１２】
2014182755.tif 000018