(57)【要約】【課題】ボリュームに対するアクセスに応じて使用されるキャッシュ領域内のブロックの数の低減化を図ること。【解決手段】ストレージ制御装置１００は、上位装置からの論理ボリューム１１０に対するアクセスの開始位置と終了位置とを示す情報を受け付ける。ストレージ制御装置１００は、受け付けた１以上の情報に基づいて、論理ボリューム１１０のデータの位置の変更により、論理ボリューム１１０に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されるか否かを判定する。ストレージ制御装置１００は、低減されると判定した場合、論理ボリューム１１０のデータの位置を変更する。【選択図】図１
2019020814.tif 000002
【特許請求の範囲】
【請求項１】
上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付け、
受け付けた１以上の前記情報に基づいて、前記ボリュームのデータの位置の変更により、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記領域を含む前記ボリューム内の１以上の単位領域に対応するキャッシュ領域内のブロックの数が低減されるか否かを判定し、
低減されると判定した場合、前記ボリュームのデータの位置を変更する、
制御部を有することを特徴とするストレージ制御装置。
【請求項２】
前記制御部は、
低減されると判定した場合、前記ボリュームのデータを、当該データの前記ボリュームの先頭からの位置を所定量ずらした位置に対応する、前記ボリュームとは異なる第２ボリュームの先頭からの位置に複製し、
複製した後、前記上位装置からの前記ボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付けた場合、前記開始位置と前記終了位置とを前記所定量ずらした位置に対応する、前記第２ボリュームの位置をアクセス先にする、ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記制御部は、
低減されると判定した場合、前記ボリュームのデータの位置を所定量ずらし、
前記ボリュームのデータの位置を所定量ずらした後、前記上位装置からの前記ボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付けた場合、前記開始位置と前記終了位置とを前記所定量ずらす、ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項４】
前記制御部は、
受け付けた前記情報ごとに、当該情報に対応するアクセスに応じて使用される前記キャッシュ領域内のブロックの数が低減されるか否かを判定し、
低減されると判定された前記情報ごとに、当該情報が示す開始位置と、前記ボリュームのいずれかの単位領域の先頭位置との差分を示す数を算出し、算出した前記差分を示す数ごとに、当該差分を示す数が算出された前記情報の数を算出し、
算出した前記情報の数のうち、相対的に大きい前記情報の数に対応する前記差分を示す数を、前記所定量に設定する、ことを特徴とする請求項２または３に記載のストレージ制御装置。
【請求項５】
前記制御部は、
所定時間が経過した後、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記キャッシュ領域内のブロックの数が低減されるか否かを判定する、ことを特徴とする請求項４に記載のストレージ制御装置。
【請求項６】
前記制御部は、
いずれかの前記差分を示す数に対応する前記情報の数が、所定閾値以上である場合、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記キャッシュ領域内のブロックの数が低減されると判定する、ことを特徴とする請求項４または５に記載のストレージ制御装置。
【請求項７】
前記制御部は、
受け付けた前記情報の数に対する、低減されると判定された前記情報の数の比率が、所定閾値以上である場合、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記キャッシュ領域内のブロックの数が低減されると判定する、ことを特徴とする請求項４〜６のいずれか一つに記載のストレージ制御装置。
【請求項８】
コンピュータに、
上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付け、
受け付けた１以上の前記情報に基づいて、前記ボリュームのデータの位置の変更により、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記領域を含む前記ボリューム内の１以上の単位領域に対応するキャッシュ領域内のブロックの数が低減されるか否かを判定し、
低減されると判定した場合、前記ボリュームのデータの位置を変更する、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置では、例えば、論理ボリュームは１２８ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）ごとに単位領域に区切られ、キャッシュ領域は１２８ＬＢＡごとにブロックに区切られており、キャッシュ領域内のブロックを管理するＣＢＥ（Ｃａｃｈｅ  Ｂｕｎｄｌｅ  Ｅｌｅｍｅｎｔ）が用意される。上位装置からの論理ボリュームに対するアクセスがあると、アクセス先の領域を含む論理ボリューム内の単位領域ごとにＣＢＥが割り当てられ、キャッシュ領域内のブロックが対応付けられる。
【０００３】
先行技術としては、例えば、ダイレクトメモリアクセスユニットが、キャッシュメモリにアクセスし、プロセッサが停止している間に、キャッシュヒット、またはキャッシュミスについて判断するものがある。また、例えば、各プロセッサパッケージが、各論理デバイスのオーナ権を持ち、１つの論理デバイス内の分割位置に跨るアドレスを指定したホスト装置からの入出力コマンドを分割し、複数のプロセッサパッケージで入出力処理を分担する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−８２０１１号公報
【特許文献２】国際公開第２０１５／０５６３３２号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、論理ボリューム内の単位領域に対応付けるキャッシュ領域内のブロックが枯渇しやすい。例えば、アクセス先の領域が、論理ボリューム内の１つの単位領域のサイズより小さいサイズでも、２つの単位領域に跨っている場合、２つの単位領域に２つのＣＢＥが割り当てられ、キャッシュ領域内の２つのブロックが対応付けられる。
【０００６】
１つの側面では、本発明は、ボリュームに対するアクセスに応じて使用されるキャッシュ領域内のブロックの数の低減化を図ることができるストレージ制御装置、およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付け、受け付けた１以上の前記情報に基づいて、前記ボリュームのデータの位置の変更により、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記領域を含む前記ボリューム内の１以上の単位領域に対応するキャッシュ領域内のブロックの数が低減されるか否かを判定し、低減されると判定した場合、前記ボリュームのデータの位置を変更するストレージ制御装置、およびストレージ制御プログラムが提案される。
【発明の効果】
【０００８】
一態様によれば、論理ボリュームに対するアクセスに応じて使用されるキャッシュ領域内のブロックの数の低減化を図ることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるストレージ制御方法の一実施例を示す説明図である。
【図２】図２は、ストレージ制御装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、開始ＬＢＡ管理テーブル３００の記憶内容の一例を示す説明図である。
【図４】図４は、ボリュームアライメント管理テーブル４００の記憶内容の一例を示す説明図である。
【図５】図５は、ストレージ制御装置１００の機能的構成例を示すブロック図である。
【図６】図６は、実施例を示す説明図（その１）である。
【図７】図７は、実施例を示す説明図（その２）である。
【図８】図８は、実施例を示す説明図（その３）である。
【図９】図９は、ＩＯ処理手順の一例を示すフローチャートである。
【図１０】図１０は、アライメント処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかるストレージ制御装置、およびストレージ制御プログラムの実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかるストレージ制御方法の一実施例）
図１は、実施の形態にかかるストレージ制御方法の一実施例を示す説明図である。ストレージ制御装置１００は、論理ボリューム１１０へのアクセスを制御し、論理ボリューム１１０とキャッシュ領域との対応関係を制御するコンピュータである。キャッシュ領域は、論理ボリューム１１０に比べて高速にアクセス可能である。
【００１２】
ストレージ制御装置１００は、例えば、ストレージ装置、サーバ、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。アクセスは、データのＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）である。アクセスは、例えば、上位装置から要求される。上位装置は、例えば、ホスト装置である。上位装置は、具体的には、サーバ、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。
【００１３】
ここで、キャッシュ領域は、所定長のブロックに区切られて管理されることがある。キャッシュ領域は、例えば、１２８ＬＢＡごとにブロックに区切られて管理される。キャッシュ領域内のブロックごとにＣＢＥが用意される。ＣＢＥは、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）リンクで管理される。
【００１４】
一方で、論理ボリューム１１０は、所定長の単位領域ごとに区切られて管理されることがある。例えば、論理ボリューム１１０は、１２８ＬＢＡごとに単位領域に区切られて管理される。それぞれの単位領域の先頭位置は、論理ボリューム１１０内の単位領域間の境界位置を示し、バウンダリと呼ばれることがある。以下の説明では、単位領域の先頭位置を「バウンダリ」と表記する場合がある。
【００１５】
そして、上位装置からの論理ボリューム１１０に対するアクセスがあると、アクセス先の領域を含む論理ボリューム１１０内の単位領域ごとに、ＣＢＥが割り当てられ、キャッシュ領域内のブロックが対応付けられ、キャッシュ領域内のブロックが確保される。このため、上位装置からのアクセスに応じて確保される、キャッシュ領域内のブロックの数の増大化を招いてしまうことがある。
【００１６】
結果として、論理ボリューム１１０内の単位領域に対応付けられるキャッシュ領域内のブロックが枯渇しやすくなってしまう。例えば、上位装置から論理ボリューム１１０内のＬＢＡ２５４〜２６４の領域に対するアクセスがあった場合、論理ボリューム１１０内のＬＢＡ１２８〜３８４の２つの単位領域に２つのＣＢＥが割り当てられ、キャッシュ領域内の２つのブロックが対応付けられる。このように、アクセス先の領域が、論理ボリューム１１０内の１つの単位領域のサイズより小さいサイズでも、２つの単位領域に跨っている場合、２つの単位領域に２つのＣＢＥが割り当てられ、実際にはキャッシュ領域内の２つのブロックが確保されてしまう。
【００１７】
また、アクセスの待ち合わせが発生しやすくなってしまい、アクセスの性能低下を招きやすくなってしまう。例えば、いずれかのＣＢＥが管理するＬＢＡの範囲内の一部分に対してライトバック（ＷｒｉｔｅＢａｃｋ）が行われている間、同じ範囲内の別の部分に対するアクセスであっても排他的に扱うため、アクセスの待ち合わせが発生する。したがって、上位装置からのアクセスに応じて確保される、キャッシュ領域内のブロックの数が増大するほど、アクセスの待ち合わせが発生しやすくなる。
【００１８】
そこで、本実施の形態では、論理ボリューム１１０へのアクセスの傾向を学習し、今後の論理ボリューム１１０へのアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減可能であるか否かを判定するストレージ制御方法について説明する。ストレージ制御方法は、低減可能であると判定すると、今後の論理ボリューム１１０へのアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されるように、論理ボリューム１１０のデータの位置を変更する。
【００１９】
図１の例では、（１−１）ストレージ制御装置１００は、上位装置からの論理ボリューム１１０に対するアクセスの開始位置と終了位置とを示す情報を受け付ける。アクセスの開始位置と終了位置とを示す情報は、アクセスの開始位置を開始ＬＢＡで示し、アクセスの終了位置を開始ＬＢＡから最終ＬＢＡまでのＬＢＡ数で示す情報である。アクセスの開始位置と終了位置とを示す情報は、具体的には、ＩＯ要求である。ストレージ制御装置１００は、例えば、ホスト装置からＩＯ要求を受け付ける。
【００２０】
（１−２）ストレージ制御装置１００は、受け付けた１以上の情報に基づいて、論理ボリューム１１０のデータの位置の変更により、論理ボリューム１１０に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されるか否かを判定する。論理ボリューム１１０に対するアクセスに応じて使用される、キャッシュ領域内のブロックは、上位装置が指定したアクセス先の領域を含む論理ボリューム１１０内の１以上の単位領域のそれぞれの単位領域に対応付けられるブロックである。
【００２１】
ここで、いずれかのＩＯ要求が示す開始ＬＢＡ〜最終ＬＢＡまでのＩＯ要求範囲が、範囲１２０である場合について示す。この場合、範囲１２０の最終ＬＢＡは、ＬＢＡ（３８４＋１２８ｎ）にあるバウンダリを跨いでいる。このため、範囲１２０には、ＣＢＥ１４０と、ｎ個のＣＢＥ１５０ｓと、ＣＢＥ１６０とが割り当てられ、キャッシュ領域内のｎ＋２個のブロックが使用されることになる。
【００２２】
一方で、範囲１２０にあるデータの先頭位置が、ＬＢＡ２５６にあるバウンダリに一致するように、範囲１２０にあるデータを、範囲１２０から範囲１３０に移動しておく場合が考えられる。この場合、範囲１３０の最終ＬＢＡは、ＬＢＡ（３８４＋１２８ｎ）にあるバウンダリを跨がない。このため、ＣＢＥを割り当て直すと、範囲１３０には、ＣＢＥ１４０と、ｎ個のＣＢＥ１５０ｓとが割り当てられ、キャッシュ領域内のｎ＋１個のブロックが使用されることになる。
【００２３】
ストレージ制御装置１００は、例えば、論理ボリューム１１０のデータの位置を変更すれば、今後、範囲１２０を示すＩＯ要求の代わりに、比較的小さい数のブロックを使用すればよい、範囲１３０を示すＩＯ要求を受け付けることになる。そこで、ストレージ制御装置１００は、過去に範囲１２０を示すＩＯ要求を受け付けた場合、論理ボリューム１１０のデータの位置の変更により、今後使用されるキャッシュ領域内のブロックの数の低減化を図ることができると判定する。
【００２４】
（１−３）ストレージ制御装置１００は、低減されると判定した場合、論理ボリューム１１０のデータの位置を変更する。ストレージ制御装置１００は、例えば、範囲１２０にあるデータの先頭位置が、ＬＢＡ２５６にあるバウンダリに一致するように、論理ボリューム１１０のデータの位置を変更する。
【００２５】
ストレージ制御装置１００は、論理ボリューム１１０のデータの位置の変更に備えて、論理ボリューム１１０の先頭領域または末尾領域を、空データを記憶する領域として設定してもよい。一方で、ストレージ制御装置１００は、低減されないと判定した場合、論理ボリューム１１０のデータの位置を変更しない。
【００２６】
これにより、ストレージ制御装置１００は、上位装置からのアクセスに応じて確保される、キャッシュ領域内のブロックの数の低減化を図ることができる。結果として、ストレージ制御装置１００は、論理ボリューム１１０内の単位領域に対応付けるキャッシュ領域内のブロックを枯渇しにくくすることができる。
【００２７】
また、ストレージ制御装置１００は、アクセスの待ち合わせを発生しにくくすることができ、アクセスの性能低下を抑制することができる。また、ストレージ制御装置１００は、今後のＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数の低減化を図るため、今後のＩＯを効率よく実行しやすくすることができる。
【００２８】
ここでは、ストレージ制御装置１００が論理ボリューム１１０のデータの位置を変更する場合について説明したが、これに限らない。例えば、ストレージ制御装置１００がＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）グループのデータの位置を変更する場合があってもよい。例えば、ストレージ制御装置１００が物理ボリュームのデータの位置を変更する場合があってもよい。
【００２９】
ストレージ制御装置１００は、論理ボリューム１１０のデータの位置を変更した後、キャッシュ領域内のブロックに記憶されたデータを、論理ボリューム１１０に反映させ、または、削除してもよい。ストレージ制御装置１００は、例えば、論理ボリューム１１０のデータの位置を変更した後、キャッシュ領域内のブロックにライトバック済みではないデータがあれば論理ボリューム１１０に反映させる。ストレージ制御装置１００は、例えば、論理ボリューム１１０のデータの位置を変更した後、キャッシュ領域内のブロックにライトバック済みのデータがあれば削除してもよい。
【００３０】
ストレージ制御装置１００は、例えば、論理ボリューム１１０のデータの位置を変更する前に、キャッシュ領域内のブロックにライトバック済みではないデータがあれば論理ボリューム１１０に反映させてもよい。そして、ストレージ制御装置１００は、反映後の論理ボリューム１１０のデータの位置を変更する。
【００３１】
（ストレージ制御装置１００のハードウェア構成例）
次に、図２を用いて、ストレージ制御装置１００のハードウェア構成例について説明する。
【００３２】
図２は、ストレージ制御装置１００のハードウェア構成例を示すブロック図である。図２において、ストレージ制御装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、メモリ２０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０３と、記録媒体Ｉ／Ｆ２０４と、記録媒体２０５とを有する。また、各構成部は、バス２００によってそれぞれ接続される。
【００３３】
ここで、ＣＰＵ２０１は、ストレージ制御装置１００の全体の制御を司る。メモリ２０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ２０１のワークエリアとして使用される。メモリ２０２に記憶されるプログラムは、ＣＰＵ２０１にロードされることで、コーディングされている処理をＣＰＵ２０１に実行させる。メモリ２０２は、例えば、キャッシュ領域を記憶する。メモリ２０２は、例えば、ＣＢＥを記憶する。
【００３４】
ネットワークＩ／Ｆ２０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ２０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ２０３には、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどを採用することができる。
【００３５】
記録媒体Ｉ／Ｆ２０４は、ＣＰＵ２０１の制御に従って記録媒体２０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ２０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体２０５は、記録媒体Ｉ／Ｆ２０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体２０５は、論理ボリュームを記憶する。記録媒体２０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体２０５は、ストレージ制御装置１００から着脱可能であってもよい。
【００３６】
ストレージ制御装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、ストレージ制御装置１００は、記録媒体Ｉ／Ｆ２０４や記録媒体２０５を有していなくてもよい。
【００３７】
（開始ＬＢＡ管理テーブル３００の記憶内容）
次に、図３を用いて、開始ＬＢＡ管理テーブル３００の記憶内容について説明する。開始ＬＢＡ管理テーブル３００は、例えば、図２に示したストレージ制御装置１００のメモリ２０２や記録媒体２０５などの記憶領域により実現される。
【００３８】
図３は、開始ＬＢＡ管理テーブル３００の記憶内容の一例を示す説明図である。図３に示すように、開始ＬＢＡ管理テーブル３００は、バウンダリと開始ＬＢＡのずれｄと、ＩＯ要求の回数とのフィールドを有する。開始ＬＢＡ管理テーブル３００は、バウンダリと開始ＬＢＡのずれｄごとに各フィールドに情報を設定することにより、開始ＬＢＡ管理情報がレコードとして記憶される。
【００３９】
バウンダリと開始ＬＢＡのずれｄのフィールドには、ＩＯ要求が示す開始ＬＢＡと、ＩＯ要求が示す開始ＬＢＡの直前にあるバウンダリとのずれｄになりうる値が設定される。バウンダリと開始ＬＢＡのずれｄは、例えば、１ＬＢＡ〜１２７ＬＢＡである。ＩＯ要求の回数のフィールドには、バウンダリから、ずれｄの分後ろにある開始ＬＢＡを示すＩＯ要求の回数が設定される。開始ＬＢＡ管理テーブル３００は、ボリュームごとに用意される。以下の説明では、開始ＬＢＡ管理テーブル３００を「ＳＬＴ３００」と表記する場合がある。
【００４０】
（ボリュームアライメント管理テーブル４００の記憶内容）
次に、図４を用いて、ボリュームアライメント管理テーブル４００の記憶内容について説明する。ボリュームアライメント管理テーブル４００は、例えば、図２に示したストレージ制御装置１００のメモリ２０２や記録媒体２０５などの記憶領域により実現される。
【００４１】
図４は、ボリュームアライメント管理テーブル４００の記憶内容の一例を示す説明図である。図４に示すように、ボリュームアライメント管理テーブル４００は、ボリューム番号と、アライメント補正値αとのフィールドを有する。ボリュームアライメント管理テーブル４００は、ボリュームごとに各フィールドに情報を設定することにより、ボリュームアライメント管理情報がレコードとして記憶される。
【００４２】
ボリューム番号のフィールドには、論理ボリュームを識別する番号が設定される。アライメント補正値αのフィールドには、論理ボリューム内でデータの記憶に使用される領域の先頭を、論理ボリュームの先頭から移動させた移動量を示すアライメント補正値αが設定される。アライメント補正値αは、論理ボリューム内でデータの記憶に使用される領域の開始ＬＢＡの、ＬＢＡ０を基準点としたオフセット値である。アライメント補正値αは、ＬＢＡαより後ろの領域がデータの記憶に使用される領域であることを示し、ＬＢＡ０〜αの領域はデータの記憶に使用されない領域であることを示す。以下の説明では、ボリュームアライメント管理テーブル４００を「ＶＡＴ４００」と表記する場合がある。
【００４３】
（上位装置のハードウェア構成例）
上位装置のハードウェア構成例は、例えば、図２に示したストレージ制御装置１００のハードウェア構成例と同様であるため、説明を省略する。上位装置が有するメモリは、キャッシュ領域やＣＢＥを記憶していなくてもよい。上位装置が有する記録媒体は、論理ボリュームを記憶していなくてもよい。
【００４４】
（ストレージ制御装置１００の機能的構成例）
次に、図５を用いて、ストレージ制御装置１００の機能的構成例について説明する。
【００４５】
図５は、ストレージ制御装置１００の機能的構成例を示すブロック図である。ストレージ制御装置１００は、記憶部５００と、取得部５０１と、判定部５０２と、移動部５０３と、出力部５０４とを含む。
【００４６】
記憶部５００は、例えば、図２に示したメモリ２０２や記録媒体２０５などの記憶領域によって実現される。取得部５０１〜出力部５０４は、制御部となる機能である。取得部５０１〜出力部５０４は、具体的には、例えば、図２に示したメモリ２０２や記録媒体２０５などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、ネットワークＩ／Ｆ２０３により、その機能を実現する。各機能部の処理結果は、例えば、図２に示したメモリ２０２や記録媒体２０５などの記憶領域に記憶される。
【００４７】
記憶部５００は、判定部５０２や移動部５０３で用いられる、トータルＩＯカウンタＣ、アライメントカウンタＣ１、閾値Ｘ、および、閾値Ｙなどを記憶する。記憶部５００は、判定部５０２や移動部５０３で用いられる、図３に示したＳＬＴ３００や図４に示したＶＡＴ４００などを記憶する。これにより、記憶部５００は、判定部５０２や移動部５０３が、トータルＩＯカウンタＣ、アライメントカウンタＣ１、閾値Ｘ、閾値Ｙ、図３に示したＳＬＴ３００、および、図４に示したＶＡＴ４００などを参照可能にすることができる。
【００４８】
取得部５０１は、上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付ける。上位装置は、ホスト装置である。ボリュームは、論理ボリュームである。ボリュームは、ＲＡＩＤグループであってもよい。ボリュームは、物理ボリュームであってもよい。アクセスは、データのＩＯである。
【００４９】
アクセスの開始位置と終了位置とを示す情報は、アクセスの開始位置を開始ＬＢＡで示し、アクセスの終了位置を開始ＬＢＡから最終ＬＢＡまでのＬＢＡ数で示す情報である。アクセスの開始位置と終了位置とを示す情報は、具体的には、ＩＯ要求である。取得部５０１は、例えば、ホスト装置からＩＯ要求を受け付ける。これにより、取得部５０１は、過去のＩＯ要求が示す、アクセス先の領域を特定可能にすることができる。
【００５０】
判定部５０２は、取得部５０１が受け付けた１以上の情報に基づいて、ボリュームのデータの位置の変更により、上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されるか否かを判定する。上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックは、当該領域を含むボリューム内の１以上の単位領域に対応付けられるブロックである。これにより、判定部５０２は、ボリュームのデータの位置を変更した方が好ましいか否かを判定することができる。
【００５１】
判定部５０２は、所定時間が経過した後、上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されるか否かを判定してもよい。判定部５０２は、例えば、いずれかのタイミングから所定時間が経過する都度、ホスト装置からのＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数が低減されるか否かを判定する。これにより、判定部５０２は、比較的短い時間に受け付けたＩＯ要求に基づいて、ボリュームのデータの位置を変更した方が好ましいか否かを判定してしまい、統計的に判定の精度が悪くなることを防止することができる。
【００５２】
判定部５０２は、受け付けた情報ごとに、当該情報に対応するアクセスに応じて使用されるキャッシュ領域内のブロックの数が低減されるか否かを判定する。判定部５０２は、例えば、ＩＯ要求を受け付ける都度、当該ＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数が低減されるか否かを判定する。判定部５０２は、ＩＯ要求を受け付ける都度、トータルＩＯ要求カウンタＣをインクリメントする。判定部５０２は、ＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数が低減されると判定する都度、アライメントカウンタＣ１をインクリメントする。
【００５３】
次に、判定部５０２は、低減されると判定された情報ごとに、当該情報が示す開始位置と、ボリュームのいずれかの単位領域の先頭位置との差分を示す数を算出し、算出した差分を示す数ごとに、当該差分を示す数が算出された情報の数を算出する。判定部５０２は、低減されると判定したＩＯ要求ごとに、ＩＯ要求が示すＩＯ要求範囲の開始ＬＢＡとバウンダリとのずれｄを算出し、算出したずれｄに対応する、ＳＬＴ３００のＩＯ要求の回数をインクリメントする。
【００５４】
そして、判定部５０２は、いずれかの差分を示す数に対応する情報の数が、所定閾値以上である場合、上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されると判定する。判定部５０２は、例えば、実施例に後述するように、ＳＬＴ３００のいずれかのＩＯ要求の回数＞閾値Ｘである場合、今後、ホスト装置からのＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数が低減されると判定する。これにより、判定部５０２は、ボリュームのデータの位置を変更した結果、今後使用されるキャッシュ領域内のブロックの数が低減されると判断されるＩＯ要求の数が、比較的大きいか否かを判定することができる。
【００５５】
また、判定部５０２は、受け付けた情報の数に対する、低減されると判定された情報の数の比率が、所定閾値以上である場合、上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されると判定する。判定部５０２は、実施例に後述するように、アライメントカウンタＣ１／トータルＩＯ要求カウンタＣ＞閾値Ｙである場合、今後、ホスト装置からのＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数が低減されると判定する。これにより、ストレージ制御装置１００は、使用されるキャッシュ領域内のブロックの数が増加するリスクを抑制することができる。
【００５６】
また、判定部５０２は、算出した差分を示す数のばらつきの大きさを示す指標値を算出してもよい。判定部５０２は、算出した指標値に基づいて、算出した差分を示す数のばらつきの大きさが所定以上である場合、キャッシュ領域内のブロックの数が低減されると判定する。これにより、判定部５０２は、差分を示す数のばらつきが小さく、いずれかの差分に基づいてボリュームのデータの位置を変更した場合に、他の差分に対応するＩＯ要求の性能が悪化する可能性が比較的大きいか否かを判定することができる。
【００５７】
移動部５０３は、判定部５０２が、上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されると判定した場合、ボリュームのデータの位置を変更する。移動部５０３は、ボリュームのデータの位置を変更した後、変更量に合わせて、上位装置から受け付ける情報を変換する。一方で、移動部５０３は、判定部５０２が、上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されないと判定した場合、ボリュームのデータの位置を変更しない。
【００５８】
移動部５０３は、例えば、低減されると判定した場合、ボリュームのデータを、当該データのボリュームの先頭からの位置を所定量ずらした位置に対応する、ボリュームとは異なる第２ボリュームの先頭からの位置に複製する。移動部５０３は、複製した後、上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付けた場合、開始位置と終了位置とを所定量ずらした位置に対応する、第２ボリュームの位置をアクセス先にする。これにより、移動部５０３は、複製中には複製元のボリュームを、ホスト装置からのアクセス先にすることができ、複製中にホスト装置からのＩＯ要求に関する処理が停止することを防止することができる。
【００５９】
移動部５０３は、例えば、上位装置からのボリューム内の領域に対するアクセスに応じて使用される、キャッシュ領域内のブロックの数が低減されると判定した場合、ボリュームのデータの位置を所定量ずらす。移動部５０３は、ボリュームのデータの位置を所定量ずらした後、上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付けた場合、開始位置と終了位置とを所定量ずらす。
【００６０】
移動部５０３は、算出した情報の数のうち、相対的に大きい情報の数に対応する差分を示す数を、所定量に設定する。移動部５０３は、例えば、ＳＬＴ３００に基づいて、ＩＯ要求の回数のフィールドの値が最も大きくなるずれｄを、アライメント補正値αに設定する。これにより、移動部５０３は、ボリュームのデータの位置の変更により、今後使用されるキャッシュ内のブロックの数が低減されるＩＯ要求の数が大きくなりやすいようにすることができる。
【００６１】
出力部５０４は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ２０３による外部装置への送信、または、メモリ２０２や記録媒体２０５などの記憶領域への記憶である。これにより、出力部５０４は、利用者に、ボリュームの状態、または、ボリュームのデータの移動の状態などを把握させることができる。
【００６２】
（実施例）
次に、図６〜図８を用いて、実施例について説明する。
【００６３】
図６〜図８は、実施例を示す説明図である。図６に示すように、実施例では、ＩＯ要求が示すＩＯ要求範囲６００の先頭から、ＩＯ要求範囲６００の先頭より前にあるバウンダリ６０１までのＬＢＡ数を「ａ」とする。
【００６４】
また、ＩＯ要求が示すＩＯ要求範囲６００の末尾から、ＩＯ要求範囲６００の末尾より後ろにあるバウンダリ６０３までのＬＢＡ数を「ｂ」とする。また、ＩＯ要求が示すＩＯ要求範囲６００の先頭から、ＩＯ要求範囲６００の先頭より後ろにあるバウンダリ６０２までのＬＢＡ数を「ｄ」とする。次に、図７の説明に移行する。
【００６５】
図７に示すように、ＩＯ要求は、論理ボリュームのデータの位置の変更により、使用されるキャッシュ領域内のブロックの数が低減可能であるパターン７０１と、使用されるキャッシュ領域内のブロックの数が低減可能ではないパターン７０２とが存在する。
【００６６】
パターン７０１は、例えば、ａ＋ｂ≧１２８になるパターンである。ａ＋ｂ≧１２８のパターンは、具体的には、論理ボリュームのデータの位置を変更すると、使用されるキャッシュ領域内のブロックの数が低減されるか、使用されるキャッシュ領域内のブロックの数が変わらないかのいずれかになる。
【００６７】
一方で、パターン７０２は、例えば、ａ＋ｂ＜１２８になるパターンである。ａ＋ｂ＜１２８のパターンは、具体的には、論理ボリュームのデータの位置を変更すると、使用されるキャッシュ領域内のブロックの数が低減されず増加してしまうか、使用されるキャッシュ領域内のブロックの数が変わらないかのいずれかになる。
【００６８】
このため、過去のＩＯ要求のうち、ａ＋ｂ＜１２８になるパターンの数より、ａ＋ｂ≧１２８になるパターンの数が大きい場合に、論理ボリュームのデータの位置を変更した方が好ましいと判断される。次に、図８の説明に移行する。
【００６９】
図８において、ストレージ制御装置１００は、ＩＯ要求の傾向を学習するためにＳＬＴ３００を用意する。ストレージ制御装置１００は、アライメント補正値αを管理するためにＶＡＴ４００を用意する。ストレージ制御装置１００は、論理ボリュームのデータの位置を変更するか否かを判定するために、ＩＯ要求の合計回数を計数するトータルＩＯ要求カウンタＣ、ａ＋ｂ≧１２８になるパターンのＩＯ要求の回数を計数するアライメントカウンタＣ１を用意する。ストレージ制御装置１００は、論理ボリュームのデータの位置を変更するか否かを判定するために、閾値Ｘ、閾値Ｙを用意する。
【００７０】
ストレージ制御装置１００は、ホスト装置からＩＯ要求を受け付ける。ストレージ制御装置１００は、ＩＯ要求を受け付ける都度、受け付けたＩＯ要求が示す開始ＬＢＡと最終ＬＢＡとに基づいて、受け付けたＩＯ要求が、ａ＋ｂ≧１２８になるパターンのＩＯ要求であるか否かを判定する。
【００７１】
ここで、ストレージ制御装置１００は、ＩＯ要求を受け付ける都度、トータルＩＯ要求カウンタＣをインクリメントする。ストレージ制御装置１００は、ａ＋ｂ≧１２８になるパターンのＩＯ要求であると判定する都度、アライメントカウンタＣ１をインクリメントする。
【００７２】
ストレージ制御装置１００は、ａ＋ｂ≧１２８になるパターンのＩＯ要求であると判定した場合、さらに、開始ＬＢＡとバウンダリとのずれｄを、ｄ＝１２８−ａにより算出する。ストレージ制御装置１００は、算出したずれｄに対応する、ＳＬＴ３００のＩＯ要求の回数をインクリメントする。
【００７３】
ストレージ制御装置１００は、ＩＯ要求を受け付け、ａ＋ｂ≧１２８になるパターンのＩＯ要求であるか否かを判定する都度、さらに、以下に示す第１条件〜第３条件を満たすか否かを判定する。ストレージ制御装置１００は、いずれかの条件を満たさなければ、次のＩＯ要求を待つ。
【００７４】
第１条件は、所定時間が経過したことである。第１条件は、比較的短い時間に受け付けたＩＯ要求に基づいて、論理ボリュームのデータの位置を変更した方が好ましいか否かを判定してしまうことを防止するための条件である。第１条件は、例えば、比較的短い時間に受け付けたＩＯ要求に基づいて、論理ボリュームのデータの位置を変更した方が好ましいか否かを判定し、統計的に判定の精度が悪くなることを防止するための条件である。
【００７５】
第２条件は、ＳＬＴ３００のいずれかのＩＯ要求の回数＞閾値Ｘであることである。第２条件は、ａ＋ｂ≧１２８になるパターンのＩＯ要求の回数が閾値Ｘより大きくなる、ずれｄが存在することを示す。このため、第２条件は、論理ボリュームのデータの位置を変更すれば、今後、使用されるキャッシュ領域内のブロックの数が低減されるＩＯ要求の数が、比較的大きくなると判断するための条件である。
【００７６】
第３条件は、アライメントカウンタＣ１／トータルＩＯ要求カウンタＣ＞閾値Ｙであることである。ここで、ａ＋ｂ≧１２８になるパターンのＩＯ要求は、論理ボリュームのデータの位置を変更する変更量に関わらず、使用されるキャッシュ領域内のブロックの数が増加することがない。そして、アライメントカウンタＣ１／トータルＩＯ要求カウンタＣがある程度大きければ、ａ＋ｂ≧１２８になるパターンのＩＯ要求の割合が大きいことになる。このため、第３条件は、アライメントカウンタＣ１／トータルＩＯ要求カウンタＣがある程度大きければ、使用されるキャッシュ領域内のブロックの数が増加するリスクを抑制することができると判断するための条件である。
【００７７】
ストレージ制御装置１００は、第１条件〜第３条件を満たす場合、ＳＬＴ３００のＩＯ要求の回数が最も大きくなるずれｄを、アライメント補正値αとして設定する。ストレージ制御装置１００は、アライメント補正値αに基づいて、論理ボリュームのデータの位置を変更する。
【００７８】
ここで、ホスト装置が認識する論理ボリュームのアドレスをＯＬＢＡと定義し、ストレージ制御装置１００が認識する論理ボリュームのアドレスをＳＬＢＡと定義する。ストレージ制御装置１００は、論理ボリュームのＳＬＢＡをアライメント補正値αの分だけＯＬＢＡからずらすことになる。
【００７９】
ストレージ制御装置１００は、例えば、ＳＬＢＡをアライメント補正値αの分だけＯＬＢＡからずらした論理ボリュームに対応する、当該論理ボリュームとは異なる他の論理ボリュームを生成する。これにより、ストレージ制御装置１００は、ホスト装置が認識する論理ボリュームのデータの位置の変更を実現する。
【００８０】
ストレージ制御装置１００は、具体的には、論理ボリューム８０１のデータを、ＳＬＢＡをアライメント補正値αの分だけＯＬＢＡからずらした他の論理ボリューム８０２に複製する。そして、ストレージ制御装置１００は、ホスト装置からのアクセス先を、複製元の論理ボリューム８０１から複製先の論理ボリューム８０２に変更する。ストレージ制御装置１００は、複製後、ＶＡＴ４００の複製先の論理ボリューム８０２に対応するアライメント補正値αを更新する。ストレージ制御装置１００は、複製後、複製元の論理ボリューム８０１を削除する。
【００８１】
これにより、ストレージ制御装置１００は、ホスト装置が認識する論理ボリューム８０１のデータの位置を変更することができる。また、ストレージ制御装置１００は、論理ボリューム８０１のデータを、他の論理ボリューム８０２に複製するため、複製中には複製元の論理ボリューム８０１を、ホスト装置からのアクセス先として用いることができる。そして、ストレージ制御装置１００は、複製中にホスト装置からのＩＯ要求に関する処理が停止することを防止することができる。
【００８２】
ストレージ制御装置１００は、ＳＬＴ３００と、アライメントカウンタＣ１と、トータルＩＯ要求カウンタＣとを初期化する。初期化は、例えば、０を設定することである。
【００８３】
ストレージ制御装置１００は、ホスト装置から複製先の論理ボリューム８０２に対するＩＯ要求があると、ＶＡＴ４００に基づいて、ＩＯ要求が示す先頭ＯＬＢＡを、ＳＬＢＡ＝ＯＬＢＡ＋αにより、先頭ＳＬＢＡに変換する。これにより、ストレージ制御装置１００は、複製先の論理ボリューム８０２に対するＩＯを実現する。
【００８４】
これにより、ストレージ制御装置１００は、今後、ホスト装置からのＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数の低減化を図ることができる。ストレージ制御装置１００は、例えば、論理ボリューム８０１では、あるデータのＩＯ要求に応じて、４つのＣＢＥを割り当てることになるが、論理ボリューム８０２では、同じデータのＩＯ要求に応じて、２つのＣＢＥを割り当てればよい。このように、今後、ホスト装置からのＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数が低減される。
【００８５】
結果として、ストレージ制御装置１００は、キャッシュ領域内のブロックを枯渇しにくくすることができる。また、ストレージ制御装置１００は、アクセスの待ち合わせを発生しにくくすることができ、アクセスの性能低下を抑制することができる。また、ストレージ制御装置１００は、今後のＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数の低減化を図るため、今後のＩＯを効率よく実行しやすくすることができる。
【００８６】
ストレージ制御装置１００は、論理ボリューム８０１のデータを、論理ボリューム８０２に複製した後、キャッシュ領域内のブロックに記憶されたデータを、論理ボリューム８０２に反映させ、または、削除してもよい。ストレージ制御装置１００は、例えば、キャッシュ領域内のブロックにライトバック済みではないデータがあれば、複製後の論理ボリューム８０２に反映させる。ストレージ制御装置１００は、例えば、キャッシュ領域内のブロックにライトバック済みのデータがあれば削除してもよい。
【００８７】
ストレージ制御装置１００は、例えば、論理ボリューム８０１のデータを論理ボリューム８０２に複製する前に、キャッシュ領域内のブロックにライトバック済みではないデータがあれば、論理ボリューム８０１に反映させてもよい。そして、ストレージ制御装置１００は、反映後の論理ボリューム８０１のデータを、論理ボリューム８０２に複製するようにしてもよい。
【００８８】
（ＩＯ処理手順の一例）
次に、図９を用いて、ＩＯ処理手順の一例について説明する。
【００８９】
図９は、ＩＯ処理手順の一例を示すフローチャートである。図９において、ストレージ制御装置１００は、ＩＯ要求を受け付ける（ステップＳ９０１）。
【００９０】
次に、ストレージ制御装置１００は、ＩＯ要求の対象である論理ボリュームが、図１０に後述するアライメント処理による複製中であるか否かを判定する（ステップＳ９０２）。ここで、複製中ではない場合（ステップＳ９０２：Ｎｏ）、ストレージ制御装置１００は、ステップＳ９０４の処理に移行する。
【００９１】
一方で、複製中である場合（ステップＳ９０２：Ｙｅｓ）、ストレージ制御装置１００は、ＩＯ要求の対象である論理ボリュームを、複製元の論理ボリュームに設定する（ステップＳ９０３）。そして、ストレージ制御装置１００は、ステップＳ９０４の処理に移行する。
【００９２】
ステップＳ９０４では、ストレージ制御装置１００は、ＣＢＥがヒットしたか否かを判定する（ステップＳ９０４）。ここで、ヒットした場合（ステップＳ９０４：Ｙｅｓ）、ストレージ制御装置１００は、ステップＳ９０６の処理に移行する。
【００９３】
一方で、ヒットしていない場合（ステップＳ９０４：Ｎｏ）、ストレージ制御装置１００は、ＩＯ要求範囲を含む１以上の単位領域にＣＢＥを割り当て、キャッシュ領域内のブロックを対応付ける（ステップＳ９０５）。そして、ストレージ制御装置１００は、ステップＳ９０６の処理に移行する。
【００９４】
ステップＳ９０６では、ストレージ制御装置１００は、図１０に後述するアライメント処理を起動する（ステップＳ９０６）。次に、ストレージ制御装置１００は、ＩＯ要求の対象である論理ボリュームが、図１０に後述するアライメント処理による複製中であるか否かを判定する（ステップＳ９０７）。ここで、複製中ではない場合（ステップＳ９０７：Ｎｏ）、ストレージ制御装置１００は、ステップＳ９０９の処理に移行する。
【００９５】
一方で、複製中である場合（ステップＳ９０７：Ｙｅｓ）、ストレージ制御装置１００は、ＩＯ要求を、複製先の論理ボリュームに反映する（ステップＳ９０８）。そして、ストレージ制御装置１００は、ステップＳ９０９の処理に移行する。
【００９６】
ステップＳ９０９では、ストレージ制御装置１００は、ＩＯ応答を生成し、ホスト装置に出力する（ステップＳ９０９）。そして、ストレージ制御装置１００は、ＩＯ処理を終了する。これにより、ストレージ制御装置１００は、今後のＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数の低減化を図ることができる。
【００９７】
（アライメント処理手順の一例）
次に、図１０を用いて、アライメント処理手順の一例について説明する。
【００９８】
図１０は、アライメント処理手順の一例を示すフローチャートである。図１０において、ストレージ制御装置１００は、ＶＡＴ４００を参照し、ＩＯ要求が示すＩＯ要求範囲についてのＯＬＢＡをＳＬＢＡに変換する（ステップＳ１００１）。
【００９９】
次に、ストレージ制御装置１００は、トータルＩＯカウンタＣをインクリメントする（ステップＳ１００２）。そして、ストレージ制御装置１００は、ａ＋ｂ≧１２８ＬＢＡの条件を満たすＩＯ要求であるか否かを判定する（ステップＳ１００３）。ここで、ａ＋ｂ≧１２８ＬＢＡの条件を満たすＩＯ要求ではない場合（ステップＳ１００３：Ｎｏ）、ストレージ制御装置１００は、ステップＳ１００６の処理に移行する。
【０１００】
一方で、ａ＋ｂ≧１２８ＬＢＡの条件を満たすＩＯ要求である場合（ステップＳ１００３：Ｙｅｓ）、ストレージ制御装置１００は、アライメントカウンタＣ１をインクリメントする（ステップＳ１００４）。次に、ストレージ制御装置１００は、ＩＯ要求が示すＩＯ要求範囲のずれｄを算出し、ずれｄに対応するＳＬＴ３００のＩＯ要求の回数のフィールドの値をインクリメントする（ステップＳ１００５）。そして、ストレージ制御装置１００は、ステップＳ１００６の処理に移行する。
【０１０１】
ステップＳ１００６では、ストレージ制御装置１００は、一定時間が経過したか否かを判定する（ステップＳ１００６）。ここで、一定時間が経過していない場合（ステップＳ１００６：Ｎｏ）、ストレージ制御装置１００は、アライメント処理を終了する。
【０１０２】
一方で、一定時間が経過している場合（ステップＳ１００６：Ｙｅｓ）、ストレージ制御装置１００は、ＳＬＴ３００のＩＯ要求の回数のフィールドの値が、閾値Ｘより大きいか否かを判定する（ステップＳ１００７）。ここで、閾値Ｘ以下である場合（ステップＳ１００７：Ｎｏ）、ストレージ制御装置１００は、アライメント処理を終了する。
【０１０３】
一方で、閾値Ｘより大きい場合（ステップＳ１００７：Ｙｅｓ）、ストレージ制御装置１００は、アライメントカウンタＣ１／トータルＩＯカウンタＣが、閾値Ｙより大きいか否かを判定する（ステップＳ１００８）。ここで、閾値Ｙ以下である場合（ステップＳ１００８：Ｎｏ）、ストレージ制御装置１００は、アライメント処理を終了する。
【０１０４】
一方で、閾値Ｙより大きい場合（ステップＳ１００８：Ｙｅｓ）、ストレージ制御装置１００は、ＳＬＴ３００を参照し、アライメント補正値αを決定する（ステップＳ１００９）。次に、ストレージ制御装置１００は、アライメント補正値αに基づいて、論理ボリュームのデータを、他の論理ボリュームに複製する（ステップＳ１０１０）。そして、ストレージ制御装置１００は、ＶＡＴ４００における、複製先の論理ボリュームに対応するアライメント補正値αを更新する（ステップＳ１０１１）。
【０１０５】
次に、ストレージ制御装置１００は、ＳＬＴ３００と、アライメントカウンタＣ１と、トータルＩＯカウンタＣとを初期化する（ステップＳ１０１２）。そして、ストレージ制御装置１００は、アライメント処理を終了する。これにより、ストレージ制御装置１００は、論理ボリュームのデータを他の論理ボリュームに複製することができる。
【０１０６】
以上説明したように、ストレージ制御装置１００によれば、ホスト装置からの論理ボリューム１１０に対するＩＯ要求を受け付けることができる。ストレージ制御装置１００によれば、受け付けた１以上のＩＯ要求に基づいて、論理ボリューム１１０のデータの位置の変更により、今後のＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数が低減されるか否かを判定することができる。ストレージ制御装置１００によれば、低減されると判定した場合、論理ボリューム１１０のデータの位置を変更することができる。これにより、ストレージ制御装置１００は、ホスト装置からのＩＯ要求に応じて確保される、キャッシュ領域内のブロックの数の低減化を図ることができる。
【０１０７】
ストレージ制御装置１００によれば、低減されると判定した場合、論理ボリューム１１０のデータを、論理ボリューム１１０における位置から所定量ずらした位置に対応する、第２論理ボリュームにおける位置に複製することができる。ストレージ制御装置１００によれば、複製した後、ホスト装置からの論理ボリューム１１０に対するＩＯ要求を受け付けると、ＩＯ要求が示す開始ＬＢＡと最終ＬＢＡとを所定量ずらした位置に対応する、第２論理ボリュームの位置をアクセス先にすることができる。これにより、ストレージ制御装置１００は、複製中には複製元の論理ボリューム１１０を、ホスト装置からのアクセス先にすることができ、複製中にホスト装置からのＩＯ要求に関する処理が停止することを防止することができる。
【０１０８】
ストレージ制御装置１００によれば、低減されると判定した場合、論理ボリューム１１０のデータの位置を所定量ずらすことができる。ストレージ制御装置１００によれば、論理ボリューム１１０のデータの位置を所定量ずらした後、ホスト装置からの論理ボリューム１１０に対するＩＯ要求を受け付けた場合、ＩＯ要求が示す開始ＬＢＡと最終ＬＢＡとを所定量ずらすことができる。これにより、ストレージ制御装置１００は、論理ボリューム１１０のデータの位置を所定量ずらした後、論理ボリューム１１０に対するＩＯを実現することができる。
【０１０９】
ストレージ制御装置１００によれば、受け付けたＩＯ要求ごとに、当該ＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数が低減されるか否かを判定することができる。ストレージ制御装置１００によれば、低減されると判定されたＩＯ要求ごとに、当該ＩＯ要求が示す開始ＬＢＡと、論理ボリューム１１０のいずれかのバウンダリとのずれｄを算出することができる。ストレージ制御装置１００によれば、ずれｄごとに、当該ずれｄが算出されたＩＯ要求の数を算出することができる。ストレージ制御装置１００によれば、算出したＩＯ要求の数のうち、相対的に大きいＩＯ要求の数に対応するずれｄを、所定量に設定することができる。これにより、ストレージ制御装置１００は、今後の論理ボリューム１１０に対するＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数を、効率よく低減することができる。
【０１１０】
ストレージ制御装置１００によれば、所定時間が経過した後、ホスト装置からの論理ボリューム１１０に対するＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数が低減されるか否かを判定することができる。これにより、ストレージ制御装置１００は、比較的短い時間に受け付けたＩＯ要求に基づいて、論理ボリューム１１０のデータの位置を変更した方が好ましいか否かを判定してしまい、統計的に判定の精度が悪くなることを防止することができる。
【０１１１】
ストレージ制御装置１００によれば、いずれかのずれｄに対応するＩＯ要求の数が、所定閾値以上である場合、今後のホスト装置からのＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数が低減されると判定することができる。これにより、ストレージ制御装置１００は、論理ボリューム１１０のデータの位置を変更した結果、今後使用されるキャッシュ領域内のブロックの数が低減されると判断されるＩＯ要求の数が、比較的大きくなるか否かを判定することができる。そして、ホスト装置からの論理ボリューム１１０に対するＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数が低減されるか否かを判定する精度の向上を図ることができる。
【０１１２】
ストレージ制御装置１００によれば、受け付けたＩＯ要求の数に対する、低減されると判定されたＩＯ要求の数の比率を算出することができる。ストレージ制御装置１００によれば、算出した比率が、所定閾値以上である場合、今後のホスト装置からの論理ボリューム１１０に対するＩＯ要求に応じて使用される、キャッシュ領域内のブロックの数が低減されると判定することができる。これにより、ストレージ制御装置１００は、使用されるキャッシュ領域内のブロックの数が増加するリスクを抑制することができる。
【０１１３】
ストレージ制御装置１００によれば、算出したずれｄのばらつきの大きさを示す指標値を算出することができる。ストレージ制御装置１００によれば、算出した指標値に基づいて、算出したずれｄのばらつきの大きさが所定以上である場合、今後使用されるキャッシュ領域内のブロックの数が低減されると判定することができる。これにより、ストレージ制御装置１００は、今後の論理ボリューム１１０に対するＩＯ要求に応じて使用されるキャッシュ領域内のブロックの数を、効率よく低減することができる。
【０１１４】
ストレージ制御装置１００によれば、低減されないと判定した場合、論理ボリューム１１０のデータの位置を変更しないようにすることができる。これにより、ストレージ制御装置１００は、論理ボリューム１１０のデータの位置を変更してしまうと、今後使用されるキャッシュ領域内のブロックの数が増大する場合には、論理ボリューム１１０のデータの位置を変更しないようにすることができる。
【０１１５】
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したストレージ制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１１６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１１７】
（付記１）上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付け、
受け付けた１以上の前記情報に基づいて、前記ボリュームのデータの位置の変更により、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記領域を含む前記ボリューム内の１以上の単位領域に対応するキャッシュ領域内のブロックの数が低減されるか否かを判定し、
低減されると判定した場合、前記ボリュームのデータの位置を変更する、
制御部を有することを特徴とするストレージ制御装置。
【０１１８】
（付記２）前記制御部は、
低減されると判定した場合、前記ボリュームのデータを、当該データの前記ボリュームの先頭からの位置を所定量ずらした位置に対応する、前記ボリュームとは異なる第２ボリュームの先頭からの位置に複製し、
複製した後、前記上位装置からの前記ボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付けた場合、前記開始位置と前記終了位置とを前記所定量ずらした位置に対応する、前記第２ボリュームの位置をアクセス先にする、ことを特徴とする付記１に記載のストレージ制御装置。
【０１１９】
（付記３）前記制御部は、
低減されると判定した場合、前記ボリュームのデータの位置を所定量ずらし、
前記ボリュームのデータの位置を所定量ずらした後、前記上位装置からの前記ボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付けた場合、前記開始位置と前記終了位置とを前記所定量ずらす、ことを特徴とする付記１に記載のストレージ制御装置。
【０１２０】
（付記４）前記制御部は、
受け付けた前記情報ごとに、当該情報に対応するアクセスに応じて使用される前記キャッシュ領域内のブロックの数が低減されるか否かを判定し、
低減されると判定された前記情報ごとに、当該情報が示す開始位置と、前記ボリュームのいずれかの単位領域の先頭位置との差分を示す数を算出し、算出した前記差分を示す数ごとに、当該差分を示す数が算出された前記情報の数を算出し、
算出した前記情報の数のうち、相対的に大きい前記情報の数に対応する前記差分を示す数を、前記所定量に設定する、ことを特徴とする付記２または３に記載のストレージ制御装置。
【０１２１】
（付記５）前記制御部は、
所定時間が経過した後、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記キャッシュ領域内のブロックの数が低減されるか否かを判定する、ことを特徴とする付記４に記載のストレージ制御装置。
【０１２２】
（付記６）前記制御部は、
いずれかの前記差分を示す数に対応する前記情報の数が、所定閾値以上である場合、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記キャッシュ領域内のブロックの数が低減されると判定する、ことを特徴とする付記４または５に記載のストレージ制御装置。
【０１２３】
（付記７）前記制御部は、
受け付けた前記情報の数に対する、低減されると判定された前記情報の数の比率が、所定閾値以上である場合、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記キャッシュ領域内のブロックの数が低減されると判定する、ことを特徴とする付記４〜６のいずれか一つに記載のストレージ制御装置。
【０１２４】
（付記８）前記制御部は、
算出した前記差分を示す数のばらつきの大きさを示す指標値を算出し、
算出した前記指標値に基づいて、算出した前記差分を示す数のばらつきの大きさが所定以上である場合、前記キャッシュ領域内のブロックの数が低減されると判定する、ことを特徴とする付記４〜７のいずれか一つに記載のストレージ制御装置。
【０１２５】
（付記９）前記制御部は、
低減されないと判定した場合、前記ボリュームのデータの位置を変更しない、ことを特徴とする付記１〜８のいずれか一つに記載のストレージ制御装置。
【０１２６】
（付記１０）コンピュータに、
上位装置からのボリュームに対するアクセスの開始位置と終了位置とを示す情報を受け付け、
受け付けた１以上の前記情報に基づいて、前記ボリュームのデータの位置の変更により、前記上位装置からの前記ボリューム内の領域に対するアクセスに応じて使用される、前記領域を含む前記ボリューム内の１以上の単位領域に対応するキャッシュ領域内のブロックの数が低減されるか否かを判定し、
低減されると判定した場合、前記ボリュームのデータの位置を変更する、
処理を実行させることを特徴とするストレージ制御プログラム。
【符号の説明】
【０１２７】
１００  ストレージ制御装置
１１０，８０１，８０２  論理ボリューム
１２０，１３０  範囲
１４０，１５０ｓ，１６０  ＣＢＥ
２００  バス
２０１  ＣＰＵ
２０２  メモリ
２０３  ネットワークＩ／Ｆ
２０４  記録媒体Ｉ／Ｆ
２０５  記録媒体
２１０  ネットワーク
３００  開始ＬＢＡ管理テーブル
４００  ボリュームアライメント管理テーブル
５００  記憶部
５０１  取得部
５０２  判定部
５０３  移動部
５０４  出力部
６００  ＩＯ要求範囲
６０１〜６０３  バウンダリ
７０１，７０２  パターン
【図１】
2019020814.tif 000003
【図２】
2019020814.tif 000004
【図３】
2019020814.tif 000005
【図４】
2019020814.tif 000006
【図５】
2019020814.tif 000007
【図６】
2019020814.tif 000008
【図７】
2019020814.tif 000009
【図８】
2019020814.tif 000010
【図９】
2019020814.tif 000011
【図１０】
2019020814.tif 000012