(57)【要約】【課題】データがアクセスされてからの経過時間に応じた移行先ストレージにデータを移行させること。【解決手段】移行元ストレージとなるストレージｓｔ１に記憶されている移行対象データ１０２を特定した場合、ストレージ制御装置１０１は、移行対象データ１０２がユーザからのアクセス要求に応じてアクセスされてからの経過時間１０３を取得する。次に、ストレージ制御装置１０１は、各々のストレージに移行するデータのストレージ毎の条件を参照して、ストレージ群の中から、経過時間１０３が満たす条件が設定された移行先ストレージを特定する。ストレージ制御装置１０１は、経過時間１０３が満たす条件が設定されたストレージｓｔ３を移行先ストレージとして特定して、移行元ストレージとなるストレージｓｔ１から、特定した移行先ストレージとなるストレージｓｔ３に移行対象データ１０２を移行させる。【選択図】図１
2014038463.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理を実行することを特徴とするストレージ制御方法。
【請求項２】
前記コンピュータが、
前記各々のストレージの応答性能に基づいて、前記各々のストレージの応答性能が高いほど前記条件となる経過時間の範囲の上限値または下限値が小さくなるように、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする請求項１に記載のストレージ制御方法。
【請求項３】
前記コンピュータが、
前記各々のストレージの記憶容量に基づいて、前記各々のストレージの記憶容量が大きいほど前記条件となる経過時間の範囲が長くなるように、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする請求項１または２に記載のストレージ制御方法。
【請求項４】
前記コンピュータが、
前記ストレージ群の記憶容量の合計に対する前記ストレージ群のうちの前記各々のストレージよりも応答性能が高いストレージ群の記憶容量の合計の割合に基づいて、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする請求項１〜３のいずれか一つに記載のストレージ制御方法。
【請求項５】
前記コンピュータが、
前記ストレージ群のうちの特定のストレージに記憶されているデータを、前記ストレージ群のうちの前記特定のストレージとは異なる他のストレージに移行させる処理を実行し、
前記取得する処理は、
前記他のストレージに移行させた後、前記他のストレージのうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間に基づいて、前記他のストレージの中から前記移行対象データが満たす条件が設定された移行先ストレージを特定することを特徴とする請求項１〜４のいずれか一つに記載のストレージ制御方法。
【請求項６】
前記記憶部は、前記特定のストレージとなる、前記アクセス要求の単位時間あたりの回数の条件を前記ストレージ毎に記憶しており、
前記コンピュータが、
前記アクセス要求の回数を前記単位時間毎に計数し、
前記記憶部に記憶されている前記アクセス要求の回数の条件を参照して、前記ストレージ群のうちの、計数した前記回数が満たす条件が設定された前記特定のストレージを検索する処理を実行し、
前記他のストレージに移行させる処理は、
前記特定のストレージを検索した場合、前記特定のストレージに記憶されているデータを、前記他のストレージに移行させることを特徴とする請求項５に記載のストレージ制御方法。
【請求項７】
前記記憶部は、前記各々のストレージについて、前記特定のストレージとなる、所定期間のうちの前記アクセス要求の単位時間あたりの回数を満たす期間の数の条件を前記ストレージ毎に記憶しており、
前記計数する処理は、
前記所定期間のうちの前記アクセス要求の回数を前記単位時間毎に計数し、
前記検索する処理は、
前記記憶部に記憶されている前記アクセス要求の回数を満たす期間の数の条件を参照して、前記ストレージ群のうちの、計数した前記回数を満たす期間の数が満たす条件が設定された前記特定のストレージを検索することを特徴とする請求項６に記載のストレージ制御方法。
【請求項８】
前記コンピュータが、
前記アクセス要求を受け付けて前記移行対象データを移行させた後、所定時間内の前記アクセス要求の回数が所定数以上か否かを判断し、
前記所定時間内のアクセス数が前記所定数以上であると判断した場合、前記アクセス要求があったデータを記憶しているストレージから、前記アクセス要求があったデータを記憶しているストレージより応答性能が高いストレージに前記アクセス要求があったデータを移行させる処理を実行することを特徴とする請求項１〜７のいずれか一つに記載のストレージ制御方法。
【請求項９】
アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得する取得部と、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、前記取得部によって取得された前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定する特定部と、
前記移行元ストレージから、前記特定部によって特定された前記移行先ストレージに前記移行対象データを移行させる移行部と、
を有することを特徴とするストレージ制御装置。
【請求項１０】
コンピュータに、
アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御方法、ストレージ制御装置、およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
従来、複数のストレージを制御する技術がある。たとえば、記憶ディスクが故障した場合、記憶ディスク・アレイにおける再構築に使用するための記憶スペースを提供する技術がある。また、複数のストレージが混在する環境下において、複数のストレージに分散されたデータを再配置する技術がある。また、高速小容量の記憶装置を用いた１次ストレージと、低速大容量の記憶装置を用いた２次ストレージを有する技術がある。また、データの単位時間当たりのアクセスを継続的に蓄積することによりアクセスの変動周期を取得して、取得した変動周期を参照して、データをストレージ階層間で予め適当な性能のストレージに移動させる技術がある。（たとえば、下記特許文献１〜４を参照。）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−２２１８７６号公報
【特許文献２】特開２００６−９９７４８号公報
【特許文献３】特開２００７−９４９４６号公報
【特許文献４】特開２００３−２１６４６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術において、応答性能が異なる３階層以上のストレージ群では、データの移行先候補が複数存在する場合があり、アクセス状況によって変化するアクセス頻度に応じた移行先ストレージを決定してデータを移行させることが難しい。
【０００５】
１つの側面では、本発明は、データがアクセスされてからの経過時間に応じた移行先ストレージにデータを移行させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データがアクセス要求に応じてアクセスされてからの経過時間を取得し、ストレージ群の各々のストレージに移行するデータの条件をストレージ毎に記憶する記憶部を参照して、取得した経過時間に基づいて、ストレージ群の中から移行対象データが満たす条件が設定された移行先ストレージを特定し、移行元ストレージから、特定した移行先ストレージに移行対象データを移行させるストレージ制御方法、ストレージ制御装置、およびストレージ制御プログラムが提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、データがアクセスされてからの経過時間に応じた移行先ストレージにデータを移行させることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかるストレージ制御装置の動作例を示す説明図である。
【図２】図２は、階層ストレージシステムの接続例を示す説明図である。
【図３】図３は、階層ストレージシステムのソフトウェア構成例を示す説明図である。
【図４】図４は、ストレージ制御装置のハードウェア構成例を示すブロック図である。
【図５】図５は、マッピングテーブルの記憶内容の一例を示す説明図である。
【図６】図６は、階層情報テーブルの記憶内容の一例を示す説明図である。
【図７】図７は、アクセス特性閾値テーブルの記憶内容の一例を示す説明図である。
【図８】図８は、アクセス特性テーブルの記憶内容の一例を示す説明図である。
【図９】図９は、Ｓｙｎｃ先決定閾値テーブルの記憶内容の一例を示す説明図である。
【図１０】図１０は、ストレージ制御装置の機能構成例を示すブロック図である。
【図１１】図１１は、仮想ボリュームの階層設定の一例を示す説明図である。
【図１２Ａ】図１２Ａは、アクセス頻度に基づいた階層設定の一例を示す説明図である。
【図１２Ｂ】図１２Ｂは、アクセス頻度に基づいた階層設定の他の例を示す説明図である。
【図１３】図１３は、Ｓｙｎｃ先決定処理の動作の一例を示す説明図である。
【図１４】図１４は、Ｒｅｃａｌｌ制御処理の動作の一例を示す説明図である。
【図１５】図１５は、キュー制御処理の動作の一例を示す説明図である。
【図１６】図１６は、仮想ボリューム作成処理手順の一例を示すフローチャートである。
【図１７Ａ】図１７Ａは、仮想ボリュームに対してのアクセス処理手順の一例を示すフローチャート（その１）である。
【図１７Ｂ】図１７Ｂは、仮想ボリュームに対してのアクセス処理手順の一例を示すフローチャート（その２）である。
【図１８】図１８は、Ｓｙｎｃ先階層特定処理の一例を示すフローチャートである。
【図１９】図１９は、Ｓｙｎｃ先決定閾値テーブル更新処理の一例を示すフローチャートである。
【図２０】図２０は、使用階層選択処理手順の一例を示すフローチャートである。
【図２１】図２１は、階層ｉに対する使用階層設定処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、開示のストレージ制御方法、ストレージ制御装置、およびストレージ制御プログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかるストレージ制御装置の動作例を示す説明図である。階層ストレージシステム１００は、アクセス要求に対する応答性能が異なるストレージｓｔ１〜ｓｔ３と、ストレージｓｔ１〜ｓｔ３を制御するストレージ制御装置１０１を含む。階層ストレージシステム１００は、ユーザに、ストレージｓｔ１〜ｓｔ３の総容量を提供するシステムである。ストレージｓｔ１〜ｓｔ３は、データを記憶する装置である。また、ストレージｓｔ１〜ｓｔ３は、ストレージｓｔ１〜ｓｔ３内の記録媒体と、記録媒体を制御するドライバまたはコントローラを含む。また、応答性能の具体的な違いとして、ストレージのアクセス要求から応答までにかかる時間の違いや、ストレージがランダムアクセス可能であるか、またはストレージがシーケンシャルアクセスしか行えないか、といった内容がある。また、アクセス要求から応答までにかかる時間が同一であっても、消費電力が異なれば、電力効率の点からみれば、消費電力が低いストレージの方が、消費電力が高いストレージよりも応答性能がよいといえる。
【００１１】
ストレージｓｔ１〜ｓｔ３の応答性能について、ストレージｓｔ１の応答性能が最も高く、ストレージｓｔ２の応答性能が次に高く、ストレージｓｔ３の応答性能が最も低いものとする。ストレージ制御装置１０１は、階層ストレージシステム１００が記憶しているデータ群の各々のデータを、データのアクセス頻度に応じたストレージに記憶させて、階層ストレージシステム１００全体の処理性能を向上させる。
【００１２】
移行元ストレージとなるストレージｓｔ１に記憶されている移行対象データ１０２を特定した場合、ストレージ制御装置１０１は、移行対象データ１０２がユーザからのアクセス要求に応じてアクセスされてからの経過時間１０３を取得する。
【００１３】
移行対象データ１０２が特定される契機としては、たとえば、移行対象データ１０２の経過時間１０３が、ストレージｓｔ１の経過時間の条件である時刻ｔ０から時刻ｔ１に含まれなくなった場合である。経過時間１０３は、現在時刻ｔ０から、移行対象データ１０２に最後にアクセスしたアクセス時刻ｔまでの時間である。また、たとえば、ストレージｓｔ１の空き容量が所定の閾値を下回った場合でもよい。また、移行対象データ１０２の特定方法として、たとえば、ストレージ制御装置１０１は、ストレージｓｔ１のデータの中から、アクセスされてからの経過時間が最も長いデータを、移行対象データとして特定してもよい。
【００１４】
次に、ストレージ制御装置１０１は、ストレージ毎に設定された各々のストレージに移行するデータの条件を参照して、ストレージ群の中から、経過時間１０３が満たす条件が設定された移行先ストレージを特定する。また、条件は、各々のストレージの応答性能に応じて設定されている。図１の例では、ストレージｓｔ２に移行するデータの条件は、データの経過時間が時刻ｔ１から、アクセス時刻ｔより短い時刻ｔ２までに設定されている。また、ストレージｓｔ３に移行するデータの条件は、データの経過時間が時刻ｔ２から、アクセス時刻ｔより長い時刻ｔ３までに設定されている。
【００１５】
ストレージ制御装置１０１は、ストレージｓｔ２に移行するデータの条件と、ストレージｓｔ３に移行するデータの条件と、を参照し、移行対象データ１０２が満たす条件が設定されたストレージを移行先ストレージとして特定する。ストレージｓｔ２に移行するデータの条件は経過時間が時刻ｔ１から時刻ｔ２までの範囲であり、移行対象データ１０２は条件を満たさない。ストレージｓｔ３に移行するデータの条件は経過時間が時刻ｔ２から時刻ｔ３までの範囲であり、移行対象データ１０２は条件を満たす。したがって、ストレージ制御装置１０１は、経過時間１０３が満たす条件が設定されたストレージｓｔ３を移行先ストレージとして特定する。
【００１６】
続けて、ストレージ制御装置１０１は、移行元ストレージとなるストレージｓｔ１から、特定した移行先ストレージとなるストレージｓｔ３に移行対象データ１０２を移行させる。具体的な移行方法として、ストレージ制御装置１０１は、移行対象データをストレージｓｔ１から読み込んで、読み込んだデータをストレージｓｔ３に書き込んでもよい。または、ストレージ制御装置１０１は、ストレージｓｔ１が他のストレージへの送信機能を有していれば、ストレージｓｔ１に、移行対象データ１０２をストレージｓｔ３に送信するよう指示してもよい。
【００１７】
このように、本実施の形態にかかるストレージ制御装置１０１は、アクセスからの経過時間が短いデータほど高階層に移行させる。具体的に、ストレージ制御装置１０１は、移行対象データ１０２の今後のアクセス頻度が高いか否かを、経過時間１０３を用いて予測している。そして、ストレージ制御装置１０１は、経過時間１０３が短ければ応答性能が高いストレージに移行させ、経過時間１０３が長ければ応答性能が低いストレージに移行させる。これにより、ストレージ制御装置１０１は、今後予測されるアクセス頻度に応じてデータを分散配置するとともに高頻度にアクセスされるデータの応答性能を向上させることができる。以下、ストレージ制御装置１０１の詳細について、図２〜図２１を用いて説明する。
【００１８】
図２は、階層ストレージシステムの接続例を示す説明図である。図２では、階層ストレージシステム１００に含まれる装置群の説明を行う。階層ストレージシステム１００は、ストレージ制御装置１０１＃１、１０１＃２と、ストレージｓｔ１〜ｓｔ５と、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ（ＦＣ）スイッチｆｃ１、ｆｃ２と、サーバｓｅ１〜ｓｅ３とを含む。
【００１９】
また、各装置の接続関係として、サーバｓｅ１は、ＦＣスイッチｆｃ１、ｆｃ２と接続している。サーバｓｅ２とサーバｓｅ３も、ＦＣスイッチｆｃ１、ｆｃ２と接続している。ストレージ制御装置１０１＃１は、ＦＣスイッチｆｃ１、ｆｃ２と接続している。ストレージ制御装置１０１＃２も、ＦＣスイッチｆｃ１、ｆｃ２と接続している。また、ストレージｓｔ１は、ＦＣスイッチｆｃ１、ｆｃ２と接続している。ストレージｓｔ２〜ｓｔ５も、ＦＣスイッチｆｃ１、ｆｃ２と接続している。
【００２０】
ストレージ制御装置１０１＃１、１０１＃２は、アクセス要求に対する応答性能が異なるストレージ群を仮想化し、仮想化したストレージへのアクセスをサーバｓｅ１〜ｓｅ３に提供する装置である。ストレージの仮想化は、複数のストレージを１つに束ねてユーザに提供する技術である。
【００２１】
ストレージｓｔ１〜ｓｔ５は、データを記憶する装置である。具体的に、ストレージｓｔ１は、半導体ドライブである。ストレージｓｔ２は、ＦＣディスクである。ストレージｓｔ３は、ニアラインディスクである。ストレージｓｔ４とストレージｓｔ５は、テープドライブである。ニアラインディスクは、ＦＣディスクとテープドライブとの中間の応答性能を有しており、たとえば、ハードディスクである。ストレージｓｔ１〜ｓｔ５は、図２に示した左側にあるストレージほど、高速、小容量、高価であり、右側にあるストレージほど、低速、大容量、安価である。
【００２２】
ＦＣスイッチｆｃ１、ｆｃ２は、ストレージｓｔ１〜ｓｔ５とサーバｓｅ１〜ｓｅ３の通信の中継を行う装置である。サーバｓｅ１〜ｓｅ３は、たとえば、Ｗｅｂサーバやアプリケーションサーバといった、何らかの業務を行う装置である。
【００２３】
また、以下の説明では、階層ストレージシステム１００を３つのレイヤに分割して説明する。３つのレイヤは、サーバレイヤと、ネットワークレイヤと、ストレージレイヤである。サーバレイヤは、サーバｓｅ１〜ｓｅ３を含む。ネットワークレイヤは、ＦＣスイッチｆｃ１、ｆｃ２を含む。ストレージレイヤは、ストレージｓｔ１〜ｓｔ５を含む。
【００２４】
図３は、階層ストレージシステムのソフトウェア構成例を示す説明図である。ストレージ制御装置１０１＃１、１０１＃２は、ストレージｓｔ１〜ｓｔ５内の物理ボリュームｐｖ１〜ｐｖ５を、１つの仮想ストレージプール３０１として扱う。また、ストレージ制御装置１０１＃１、１０１＃２は、仮想ストレージプール３０１に、ストレージ制御装置１０１＃１内の記憶装置ｓｄ１と、ストレージ制御装置１０１＃２内の記憶装置ｓｄ２とを含めてもよい。本実施の形態では、ディスクｄｉ１とディスクｄｉ２が仮想ストレージプール３０１に含まれるものとして説明する。物理ボリュームは、ＯＳによってフォーマットされた一つながりの連続した記憶領域である。一つのストレージ内に、複数のボリュームがあってもよい。
【００２５】
また、ストレージ制御装置１０１＃１、１０１＃２は、仮想ストレージプール３０１から、仮想ボリューム群３０２を作成する。図３の例では、ストレージ制御装置１０１＃１、１０１＃２は、仮想ストレージプール３０１から、仮想ボリュームｖｖ１〜ｖｖ３を作成する。仮想ボリュームｖｖ１〜ｖｖ３は、記憶装置ｓｄ１、ｓｄ２、ストレージｓｔ１〜ｓｔ５の組み合わせとなる。
【００２６】
また、ストレージ制御装置１０１＃１、１０１＃２は、記憶装置ｓｄ１、ｓｄ２、ストレージｓｔ１〜ｓｔ５を階層化して制御する。具体的に、ストレージ制御装置１０１＃１、１０１＃２は、応答性能が最も高い記憶装置ｓｄ１、ｓｄ２を、階層１のストレージとする。次に、ストレージ制御装置１０１＃１、１０１＃２は、記憶装置ｓｄ１、ｓｄ２の次に応答性能が高いストレージｓｔ１を、階層２のストレージとする。続けて、ストレージ制御装置１０１＃１、１０１＃２は、ストレージｓｔ１の次に応答性能が高いストレージｓｔ２を、階層３のストレージとする。次に、ストレージ制御装置１０１＃１、１０１＃２は、ストレージｓｔ２の次に応答性能が高いストレージｓｔ３を、階層４のストレージとする。続けて、ストレージ制御装置１０１＃１、１０１＃２は、応答性能が最も低いストレージｓｔ４、ｓｔ５を、階層５のストレージとする。
【００２７】
具体的なストレージ制御装置１０１＃１、１０１＃２による制御内容として、ストレージ制御装置１０１＃１、１０１＃２は、上位の階層のストレージに記憶されているデータを、下位の階層のストレージに移行する。データを下位の階層のストレージに移行させることを、以下、「Ｓｙｎｃ」と称する。また、ストレージ制御装置１０１＃１、１０１＃２は、下位の階層のストレージに記憶されているデータを、上位の階層のストレージに移行する。データを上位の階層のストレージに移行させることを、以下、「Ｒｅｃａｌｌ」と称する。また、以下、階層ｎのストレージを、単に「階層ｎ」と称する。ｎは、１以上の整数である。
【００２８】
たとえば、階層１の記憶容量が最大限に達した場合、ストレージ制御装置１０１＃１は、階層１に記憶されているデータの中から、たとえばアクセスしてからの経過時間が最も長いデータを、階層２にＳｙｎｃする。また、サーバｓｅ１から、階層５に記憶されているデータにアクセスがあった場合、ストレージ制御装置１０１＃１は、アクセスがあったデータを、階層１にＲｅｃａｌｌする。
【００２９】
図４は、ストレージ制御装置のハードウェア構成例を示すブロック図である。図４において、ストレージ制御装置１０１＃１は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）４０１と、Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）４０２と、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）４０３と、を含む。また、ストレージ制御装置１０１＃１は、記憶装置ｓｄ１としてディスクドライブ４０４およびディスク４０５と、通信インターフェース４０６と、を含む。また、ＣＰＵ４０１〜通信インターフェース４０６はバス４０７によってそれぞれ接続されている。また、図４では図示していないが、ストレージ制御装置１０１＃２も、ストレージ制御装置１０１＃１と同様のハードウェア構成を有する。
【００３０】
ＣＰＵ４０１は、ストレージ制御装置１０１＃１の全体の制御を司る演算処理装置である。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される揮発性メモリである。
【００３１】
ディスクドライブ４０４は、ＣＰＵ４０１の制御に従ってディスク４０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ４０４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク４０５は、ディスクドライブ４０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ４０４が磁気ディスクドライブである場合、ディスク４０５には、磁気ディスクを採用することができる。また、ディスクドライブ４０４がソリッドステートドライブである場合、ディスク４０５には、半導体素子メモリを採用することができる。
【００３２】
通信インターフェース４０６は、ネットワーク４０８と内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース４０６は、通信回線を通じてネットワーク４０８となるＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）、インターネットなどに接続され、ネットワーク４０８を介して他の装置に接続される。通信インターフェース４０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。また、ストレージ制御装置１０１＃１は、光ディスクドライブ、光ディスク、キーボード、マウスを有していてもよい。
【００３３】
次に図５〜図９を用いて、ストレージ制御装置１０１＃１、１０１＃２がアクセス可能なテーブルの記憶内容の一例を示す。各テーブルの記憶内容について、ストレージ制御装置１０１＃１、１０１＃２が、同一の記憶内容となるテーブルをそれぞれ有してもよいし、ストレージ制御装置１０１＃１、１０１＃２のいずれかが記憶していてもよい。
【００３４】
図５は、マッピングテーブルの記憶内容の一例を示す説明図である。マッピングテーブル５０１は、仮想ボリュームと物理ボリュームとを紐づけるテーブルである。図５に示すマッピングテーブル５０１は、レコード５０１−１〜５０１−１７を記憶している。マッピングテーブル５０１は、データ名、仮想ボリューム情報、物理ボリューム情報という３つのフィールドを含む。データ名フィールドには、紐づけ対象となるデータの名称が格納される。仮想ボリューム情報フィールドには、該当のデータが記憶されている仮想ボリュームの識別情報が格納される。物理ボリューム情報フィールドには、該当のデータが実際に記憶されている物理ボリュームの識別情報が格納される。
【００３５】
たとえば、レコード５０１−１は、仮想ボリュームｖｖ１に記憶されているデータ１＿６は、物理ボリュームｐｖ１に記憶されていることを示す。また、以降の説明において、データ１＿１〜１＿８は、仮想ボリュームｖｖ１に記憶されているデータであるとする。同様に、データ２＿１〜２＿６は、仮想ボリュームｖｖ２に記憶されているデータであり、データ３＿１〜３＿３は、仮想ボリュームｖｖ３に記憶されているデータであるとする。
【００３６】
図６は、階層情報テーブルの記憶内容の一例を示す説明図である。階層情報テーブル６０１は、各階層に関する情報を記憶するテーブルである。図６に示す階層情報テーブル６０１は、レコード６０１−１〜６０１−５を記憶している。さらに、レコード６０１−１〜６０１−５は、サブレコードを含む。たとえば、レコード６０１−１は、サブレコード６０１−１−１〜６０１−１−３を含む。
【００３７】
階層情報テーブル６０１は、階層情報、使用量、全体量、キュー情報およびタイムスタンプ情報、仮想ボリューム情報、使用中フラグ、サーバ情報、ミラーリング情報という８つのフィールドを含む。仮想ボリューム情報フィールド〜ミラーリング情報フィールドは、サブレコードに含まれるフィールドである。
【００３８】
階層情報フィールドには、該当の階層を識別する情報が格納される。使用量フィールドには、該当の階層の記憶容量のうち、使用中の記憶容量が格納される。全体量フィールドには、該当の階層の最大記憶容量が格納される。
【００３９】
キュー情報およびタイムスタンプ情報フィールドには、該当の階層に記憶されているデータの識別情報の一覧が、データがアクセスされてからの経過時間の順序で格納される。さらに、キュー情報およびタイムスタンプ情報フィールドには、データの識別情報に関連付けて、データにアクセスした時刻であるタイムスタンプ情報が格納される。タイムスタンプ情報は、該当のデータに最後にアクセスされた時刻である。図６の例では、キュー情報内の、左側に格納されたデータほど、データにアクセスされてからの経過時間が長く、右側に格納されたデータほど、データにアクセスされてからの経過時間が短いことを示す。
【００４０】
仮想ボリューム情報フィールドには、該当の階層を用いることができる仮想ボリュームの識別情報が格納される。使用中フラグフィールドには、該当の階層を仮想ボリュームが使用しているか否かを示す識別子が格納される。たとえば、該当の階層を仮想ボリュームが使用している場合、使用中フラグフィールドには、“使用中”識別子が格納される。また、該当の階層を仮想ボリュームが使用していない場合、使用中フラグフィールドには、“不使用”識別子が格納される。
【００４１】
サーバ情報フィールドには、仮想ボリュームが割り当てられたサーバが格納される。ミラーリング情報フィールドには、仮想ボリュームが該当の階層に対応するストレージとは別のストレージにミラーリングしているか否かを示す識別子が格納される。たとえば、該当の仮想ボリュームが別のストレージにミラーリングしている場合、ミラーリング情報フィールドには、“有”識別子が格納される。また、該当の仮想ボリュームが別のストレージにミラーリングしていない場合、ミラーリング情報フィールドには、“無”識別子が格納される。
【００４２】
たとえば、レコード６０１−１は、階層１が、使用中の記憶容量が０．９［ＴＢ］であり、最大記憶容量が１［ＴＢ］であり、データ２＿５とデータ２＿６を記憶している。さらに、サブレコード６０１−１−１は、仮想ボリュームｖｖ１が、階層１を使用していなく、サーバｓｅ１に割り当てられており、階層１とは別のストレージにミラーリングしていることを示す。また、サブレコード６０１−１−２は、仮想ボリュームｖｖ２が、階層１を使用しており、サーバｓｅ１に割り当てられており、階層１とは別のストレージにミラーリングしていることを示す。また、サブレコード６０１−１−３は、仮想ボリュームｖｖ３が、階層１を使用していなく、サーバｓｅ２に割り当てられており、ミラーリングしていないことを示す。
【００４３】
また、各仮想ボリュームの最上位の階層を、「プライマリ階層」と呼称する。たとえば、仮想ボリュームｖｖ１のプライマリ階層は、階層２である。また、仮想ボリュームｖｖ２のプライマリ階層は、階層１である。同様に、仮想ボリュームｖｖ３のプライマリ階層は、階層２である。各仮想ボリュームのプライマリ階層は、ストレージ制御装置１０１の記憶領域に記憶しておいてもよいし、仮想ボリュームのプライマリ階層を取得する際に、使用中フラグを参照して、仮想ボリュームのプライマリ階層を特定してもよい。
【００４４】
図７は、アクセス特性閾値テーブルの記憶内容の一例を示す説明図である。アクセス特性閾値テーブル７０１は、各々の階層について、各々のストレージが特定の階層となる、アクセス要求の単位時間あたりの回数の条件を記憶する。特定の階層とは、仮想ボリュームが使用しない階層であり、アクセス特性閾値テーブル７０１は、仮想ボリュームから各々の階層が使用されない条件を記憶する。また、アクセス特性閾値テーブル７０１は、仮想ボリュームから各々の階層が使用される条件をストレージ毎に記憶していてもよい。本実施の形態では、アクセス特性閾値テーブル７０１は、各々の階層が使用される条件を記憶するものとする。
【００４５】
また、アクセス特性閾値テーブル７０１は、各々のストレージについて、各々の階層が特定のストレージとなる、所定期間のうちのアクセス要求の単位時間あたりの回数を満たす期間の数の条件をストレージ毎に記憶していてもよい。
【００４６】
図７に示すアクセス特性閾値テーブル７０１は、レコード７０１−１〜７０１−ｎを記憶する。アクセス特性閾値テーブル７０１は、階層情報、使用条件という２つのフィールドを含む。階層情報フィールドには、階層を識別する情報が格納される。使用条件フィールドには、該当の階層を使用する条件が格納される。さらに、使用条件フィールドは、アクセス回数条件と、単位時間条件という２つのサブフィールドを含む。アクセス回数条件サブフィールドには、アクセス要求の単位時間あたりの回数の条件が格納されている。単位時間条件サブフィールドには、所定期間のうちのアクセス要求の単位時間あたりの回数を満たす期間の数の条件が格納されている。
【００４７】
たとえば、レコード７０１−１は、階層１を使用する条件として、アクセス回数条件がｐ［回］以上であり、さらに、アクセス回数条件がｐ［回］以上となった日数がＡ［日］以上であることを示している。
【００４８】
図８は、アクセス特性テーブルの記憶内容の一例を示す説明図である。アクセス特性テーブル８０１は、仮想ボリューム毎に、アクセス要求の回数を単位時間毎に記憶する。図８に示すアクセス特性テーブル８０１は、レコード８０１＿ｖｖ１−１〜８０１＿ｖｖ１−ｍ、８０１＿ｖｖ２−１〜８０１＿ｖｖ２−ｍ、８０１＿ｖｖ３−１〜８０１＿ｖｖ３−ｍを記憶している。ｍは、１以上の整数である。また、レコード８０１＿ｖｖ１−１〜８０１＿ｖｖ１−ｍは、仮想ボリュームｖｖ１に対するアクセス要求の回数を記憶している。同様に、レコード８０１＿ｖｖ２−１〜８０１＿ｖｖ２−ｍは、仮想ボリュームｖｖ２に対するアクセス要求の回数を記憶しており、レコード８０１＿ｖｖ３−１〜８０１＿ｖｖ３−ｍは、仮想ボリュームｖｖ３に対するアクセス要求の回数を記憶している。また、図８で示すレコード８０１＿ｖｖ１−１〜８０１＿ｖｖ３−ｍは、単位時間が１日である場合の例を示している。
【００４９】
アクセス特性テーブル８０１は、日数、アクセス回数という２つのフィールドを含む。日数フィールドには、対象となる日数が格納される。アクセス回数フィールドには、日数フィールドに格納された日数で指定される日のアクセス数が格納される。たとえば、レコード８０１＿ｖｖ１−１は、仮想ボリュームｖｖ１に対するアクセス要求のうち、１日前のアクセス要求の回数がｖ１＿ａ［回］であることを示す。
【００５０】
図９は、Ｓｙｎｃ先決定閾値テーブルの記憶内容の一例を示す説明図である。Ｓｙｎｃ先決定閾値テーブル９０１は、階層群の各々の階層に移行するデータのアクセスされてからの経過時間の条件を記憶するテーブルである。図９に示すＳｙｎｃ先決定閾値テーブル９０１は、経過時間条件、Ｓｙｎｃ先という２つのフィールドを含む。経過時間条件フィールドには、Ｓｙｎｃ対象データがアクセスされてからの経過時間の条件が格納される。Ｓｙｎｃ先フィールドには、Ｓｙｎｃ対象データが経過時間条件フィールドに格納された条件を満たした場合のＳｙｎｃ先となる階層を識別する情報が格納される。
【００５１】
たとえば、レコード９０１−１は、Ｓｙｎｃ対象データがアクセスされてからの経過時間が１週間未満である場合、Ｓｙｎｃ対象データのＳｙｎｃ先を階層２にすることを示している。
【００５２】
（ストレージ制御装置１０１の機能）
次に、ストレージ制御装置１０１の機能について説明する。図１０は、ストレージ制御装置の機能構成例を示すブロック図である。ストレージ制御装置１０１は、階層制御部１００１と、仮想化機構部１００２を含む。
【００５３】
階層制御部１００１は、受付部１０１１と、移行対象データ特定部１０１２と、取得部１０１３と、算出部１０１４と、移行先階層特定部１０１５と、判断部１０１６と、移行部１０１７と、を含む。また、階層制御部１００１は、階層情報テーブル６０１と、Ｓｙｎｃ先決定閾値テーブル９０１とにアクセス可能である。また、仮想化機構部１００２は、仮想ストレージプール管理部１０２１と、仮想ボリューム管理部１０２２と、ミラーリング制御部１０２３と、計数部１０２４と、検索部１０２５と、を含む。また、仮想化機構部１００２は、マッピングテーブル５０１と、アクセス特性閾値テーブル７０１と、アクセス特性テーブル８０１とにアクセス可能である。マッピングテーブル５０１〜Ｓｙｎｃ先決定閾値テーブル９０１は、ＲＡＭ４０３、ディスク４０５といった記憶装置に格納されている。
【００５４】
階層制御部１００１、仮想化機構部１００２は、記憶装置に記憶されたプログラムをＣＰＵ４０１が実行することにより、階層制御部１００１、仮想化機構部１００２の機能を実現する。記憶装置とは、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、ディスク４０５などである。または、通信インターフェース４０６を経由して他のＣＰＵが実行することにより、階層制御部１００１、仮想化機構部１００２の機能を実現してもよい。
【００５５】
階層制御部１００１は、階層１〜階層ｎを制御する。階層制御部１００１の具体的な機能が、受付部１０１１〜移行部１０１７の機能となる。仮想化機構部１００２は、ストレージの仮想化を実現する機構を有する。仮想化機構部１００２の具体的な機能が、仮想ストレージプール管理部１０２１〜検索部１０２５の機能となる。
【００５６】
受付部１０１１は、サーバからのアクセス要求を受け付ける。アクセス要求は、書き込み要求または読み込み要求を含む。なお、抽出されたデータは、ＲＡＭ４０３、ディスク４０５などの記憶領域に記憶される。
【００５７】
移行対象データ特定部１０１２は、移行先階層に記憶されているデータの中から、移行対象データを特定する。たとえば、移行対象データ特定部１０１２は、最上位の階層にデータを書き込もうとする際に最上位の階層の記憶領域の空きがない場合、に記憶されているデータの中から、アクセスされてからの経過時間が最も長いデータを、移行対象データとして特定する。または、移行対象データ特定部１０１２は、最上位の階層に記憶されているデータに対して、アクセス回数を記憶しておいて、アクセス回数が最も少ないデータを、移行対象データとして特定してもよい。書き込みを行おうとしている階層が最上位の階層か否かは、階層情報テーブル６０１を参照することにより判断できる。なお、移行対象データとして特定されたデータの識別情報は、ＲＡＭ４０３、ディスク４０５などの記憶領域に記憶される。
【００５８】
取得部１０１３は、アクセス要求に対する応答性能が異なる３以上の階層群のうちの移行元階層に記憶されている、移行対象データ特定部１０１２によって特定された移行対象データがアクセス要求に応じてアクセスされてからの経過時間を取得する。たとえば、取得部１０１３は、階層２に記憶されているデータ１＿６の経過時間を取得する。具体的に、取得部１０１３は、現在時刻から、タイムスタンプ情報が示す時刻を引くことにより、経過時間を取得する。また、タイムスタンプ情報が示す時刻は、該当のデータに最後にアクセスされた時刻であるが、たとえば、過去数回のアクセスされた時刻の平均値などでもよい。
【００５９】
また、取得部１０１３は、移行部１０１７によって階層群のうち不使用の階層とは異なる他の階層に移行させた後、他の階層のうちの移行元階層に記憶されている移行対象データがアクセス要求に応じてアクセスされてからの経過時間を取得してもよい。たとえば、階層２、階層４、階層５のうち、不使用の階層となった階層２とは異なる階層４、階層５に、移行部１０１７によって階層２のデータを移行させた後、取得部１０１３は、階層４のデータ１＿４の経過時間を取得する。なお、抽出されたデータは、ＲＡＭ４０３、ディスク４０５などの記憶領域に記憶される。
【００６０】
算出部１０１４は、各々の階層の応答性能に基づいて、各々の階層の応答性能が高いほど条件となる経過時間の範囲の上限値または下限値が小さくなるように、各々の階層に設定される条件となる経過時間の範囲を算出する。たとえば、算出部１０１４は、階層ｉの経過時間の下限値を、（ｉ−２）×３０［日］として算出してもよい。前述の算出式を適用すると、算出部１０１４は、階層２の下限値を、（２−２）×３０＝０［日］と算出し、階層３の下限値を、（３−２）×３０＝３０［日］と算出する。また、経過時間の範囲は、上位の階層と下位の階層で一部重なってもよい。
【００６１】
また、算出部１０１４は、各々の階層の記憶容量に基づいて、各々の階層の記憶容量が大きいほど条件となる経過時間の範囲が長くなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。階層の記憶容量は、階層の空き容量でもよいし、階層の最大記憶容量でもよい。たとえば、算出部１０１４は、階層ｉの経過時間の上限値を、（階層ｉの記憶容量／１［ＴＢ］）×１０［日］としてもよい。たとえば、階層２の最大記憶容量が１０［ＴＢ］であるとすると、算出部１０１４は、階層２の経過時間の上限値を、（１０／１）×１０＝１００［日］と算出する。
【００６２】
また、算出部１０１４は、各々の階層の記憶容量に基づいて、各々の階層の記憶容量が大きいほど条件となる経過時間の範囲が長くなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。具体的な算出方法は、図１３にて後述する。なお、算出されたデータは、ＲＡＭ４０３、ディスク４０５などの記憶領域に記憶される。
【００６３】
さらに、算出部１０１４は、算出した条件となる経過時間の範囲を各々の階層に設定してＳｙｎｃ先決定閾値テーブル９０１に記憶する。たとえば、算出部１０１４は、階層２の経過時間の上限値１００［日］と下限値０［日］をレコード９０１−１に記憶する。
【００６４】
移行先階層特定部１０１５は、Ｓｙｎｃ先決定閾値テーブル９０１を参照して、取得部１０１３によって取得された経過時間に基づいて、階層群の中から移行対象データが満たす条件が設定された移行先階層を特定する。たとえば、取得部１０１３が取得した経過時間が１０［日］であるとする。このとき、移行先階層特定部１０１５は、図９に示したＳｙｎｃ先決定閾値テーブル９０１を参照して、階層３を移行先階層として特定する。
【００６５】
また、移行先階層特定部１０１５は、Ｓｙｎｃ先決定閾値テーブル９０１を参照して、取得した経過時間に基づいて、階層群のうち不使用の階層とは異なる他の階層の中から移行対象データが満たす条件が設定された移行先階層を特定してもよい。たとえば、移行先階層特定部１０１５は、階層２、階層４、階層５のうち、不使用の階層となった階層２とは異なる階層４、階層５の中から、移行対象データが満たす条件が設定された移行先階層を特定する。なお、特定された階層の識別情報は、ＲＡＭ４０３、ディスク４０５などの記憶領域に記憶される。
【００６６】
判断部１０１６は、受付部１０１１がアクセス要求を受け付けて移行対象データを移行させた後、所定時間内のアクセス要求の回数が所定数以上か否かを判断する。たとえば、判断部１０１６は、所定時間として、２４時間以内のアクセス要求の回数が、所定数として２回以上あったか否かを判断する。なお、判断結果は、ＲＡＭ４０３、ディスク４０５などの記憶領域に記憶される。
【００６７】
移行部１０１７は、移行元階層から、移行先階層特定部１０１５によって特定された移行先階層に移行対象データを移行させる。たとえば、移行部１０１７は、移行元階層となった階層２から、移行先階層となった階層３に移行対象データを移行させる。
【００６８】
また、移行部１０１７は、階層群のうちの不使用の階層に記憶されているデータを、階層群のうちの不使用の階層とは異なる他の階層に移行させてもよい。また、移行部１０１７は、検索部１０２５によって不使用の階層が検索された場合、不使用の階層に記憶されているデータを、他の階層に移行させてもよい。たとえば、階層２、階層４、階層５のうち、検索部１０２５が、階層２を不使用の階層として検索したとする。この場合、移行部１０１７は、階層２に記憶されているデータを、階層４、階層５に移行させる。
【００６９】
また、移行部１０１７は、判断部１０１６によって所定時間内のアクセス数が所定数以上であると判断された場合、アクセス要求があったデータを記憶している階層から、前述の階層より応答性能が高い階層にアクセス要求があったデータを移行させる。たとえば、判断部１０１６が、２４時間以内のアクセス要求の回数が２回以上あったと判断したとする。この場合、移行部１０１７は、アクセス要求があったデータを記憶している階層３から、前述の階層より応答性能が高い階層２にアクセス要求があったデータを移行させる。
【００７０】
仮想ストレージプール管理部１０２１は、仮想ストレージプール３０１に取り込んだ物理ボリュームの情報を記憶する。具体的に、仮想ストレージプール管理部１０２１は、取り込んだ物理ボリュームのＬｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ（ＬＵＮ）の大きさや、ストレージｓｔ１〜ｓｔ５へのパス情報として、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｐｏｒｔ  Ｎａｍｅ（ＷＷＰＮ）と、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎｏｄｅ  Ｎａｍｅ（ＷＷＮＮ）を記憶する。
【００７１】
仮想ボリューム管理部１０２２は、マッピングテーブル５０１を用いて、仮想ボリュームと物理ボリュームの紐づけを管理する。ミラーリング制御部１０２３は、仮想ボリュームのミラーリング制御を行う。
【００７２】
計数部１０２４は、受付部１０１１が受け付けたアクセス要求の回数を単位時間毎に計数する。また、計数部１０２４は、所定期間のうちのアクセス要求の回数を単位時間毎に計数する。たとえば、計数部１０２４は、所定期間として、３６５日間のうちのアクセス要求の回数を１日毎に計数する。なお、単位時間毎のアクセス要求の回数は、アクセス特性テーブル８０１などの記憶領域に記憶される。
【００７３】
検索部１０２５は、アクセス特性閾値テーブル７０１に記憶されているアクセス要求の回数の条件を参照して、階層群のうちの、計数部１０２４が計数した回数が満たす条件が設定された不使用の階層を検索する。
【００７４】
また、検索部１０２５は、アクセス特性閾値テーブル７０１に記憶されているアクセス要求の回数を満たす期間の数の条件を参照して、階層群のうちの、計数部１０２４が計数した回数を満たす期間の数が満たす条件が設定された不使用の階層を検索してもよい。なお、判断結果は、ＲＡＭ４０３、ディスク４０５などの記憶領域に記憶される。
【００７５】
図１１は、仮想ボリュームの階層設定の一例を示す説明図である。仮想ボリュームの階層設定は、手動設定として、利用者が設定してもよいし、自動設定として、全階層を選択し、アクセス頻度に基づいた使用階層選択処理を実行してもよい。図１１では、使用階層として、階層１と、階層３、階層５が指定されており、手動設定または自動設定によって、使用階層を減らす変更を行った場合と、使用階層を増やす変更を行った場合の例について説明する。
【００７６】
使用階層を減らす変更について、図１１の例では、階層３を不使用に設定した例を示す。階層３を不使用に設定した場合、ストレージ制御装置１０１は、不使用に設定された階層にあるデータを、不使用に設定された階層よりも下位の階層に移行させる。ただし、最下位の階層が不使用に設定された場合、ストレージ制御装置１０１は、不使用に設定された階層にあるデータを、不使用に設定された階層よりも上位の階層に移行させる。また、データ移行後、ストレージ制御装置１０１は、マッピングテーブル５０１および階層情報テーブル６０１を更新する。
【００７７】
一方、使用階層を増やす変更について、図１１の例では、階層２を使用に設定した例を示す。階層２を使用に設定した場合、使用階層を増やす変更を行ったときには、ストレージ制御装置１０１は、データの移行を行わない。階層１のデータの中からＳｙｎｃ対象データが特定された場合、ストレージ制御装置１０１は、Ｓｙｎｃ対象データを階層２に移行させるときもある。Ｓｙｎｃ対象データが階層２に記憶された場合に、階層２が使用される。階層３から階層２へＲｅｃａｌｌは行わない。
【００７８】
また、階層を不使用に設定した場合、不使用階層に記憶されているデータの移行先は、上述の説明では、単に下位の階層としている。他の移行先を決定する方法として、たとえば、ストレージ制御装置１０１は、不使用階層に記憶されているデータがアクセスされてからの経過時間を参照して、どの階層に移行するか決定してもよい。たとえば、ストレージ制御装置１０１は、不使用階層に記憶されているデータ群の各々のデータに対して、Ｓｙｎｃ先決定閾値テーブル９０１を参照して、条件を満たした階層に移行させてもよい。
【００７９】
または、ストレージ制御装置１０１は、上位の階層のデータのうち、アクセスされてからの経過時間が最も長いデータの経過時間と、不使用階層に記憶されているデータ群の各々のデータがアクセスされてからの経過時間と、を比較する。続けて、ストレージ制御装置１０１は、アクセスされてからの経過時間が最も長いデータの経過時間より短いデータを、上位の階層に移行させる。次に、図１２Ａと、図１２Ｂを用いて、アクセス頻度に基づいた使用階層選択処理の例を示す。
【００８０】
図１２Ａは、アクセス頻度に基づいた階層設定の一例を示す説明図である。図１２Ａでは、図１２Ａに示すアクセス特性閾値テーブル７０１＿Ａに従って、使用階層選択処理を行った場合の例を示す。アクセス特性閾値テーブル７０１＿Ａは、レコード７０１−１＿Ａ〜７０１−５＿Ａを記憶している。レコード７０１−１＿Ａ〜７０１−４＿Ａは、レコード７０１−１〜７０１−４と同一の記憶内容である。また、レコード７０１−５＿Ａは、階層５に関して、アクセス回数条件フィールドがｒ［回］未満であり、単位時間条件フィールドがＥ［日］であることを示している。
【００８１】
図１２Ａの（Ａ）では、仮想ボリューム作成直後はアクセス回数が多く、以降アクセス回数が徐々に少なくなる場合の例を示している。図１２Ａの（Ａ）の例では、アクセス特性テーブル８０１のレコードが、アクセス特性閾値テーブル７０１＿Ａの階層１〜階層５の条件を全て満たすため、ストレージ制御装置１０１は、仮想ボリュームに階層１〜階層５を含めるように設定する。
【００８２】
一方、図１２Ａの（Ｂ）では、仮想ボリューム作成後、アクセス回数が多くなく、また、アクセス回数が時間とともに少なくなる場合の例を示している。図１２Ａの（Ｂ）の例では、アクセス特性閾値テーブル７０１＿Ａの階層１、階層２のアクセス回数条件を満たすレコードがないため、ストレージ制御装置１０１は、仮想ボリュームに階層３〜階層５を含めるように設定する。
【００８３】
図１２Ｂは、アクセス頻度に基づいた階層設定の他の例を示す説明図である。図１２Ｂでは、図１２Ｂに示すアクセス特性閾値テーブル７０１＿Ｂに従って、使用階層選択処理を行った場合の例を示す。アクセス特性閾値テーブル７０１＿Ｂは、レコード７０１−１＿Ｂ〜７０１−５＿Ｂを記憶している。たとえば、レコード７０１−１＿Ｂは、アクセス回数条件フィールドが１００００［回］以上であり、単位時間条件フィールドが２［日］である。
【００８４】
図１２Ｂの（Ｃ）では、仮想ボリューム作成直後はアクセス回数が多いが、以降、アクセス回数が急激に少なくなる場合の例を示している。図１２Ｂの（Ｃ）の例では、アクセス特性テーブル８０１のレコードが、アクセス特性閾値テーブル７０１＿Ｂの階層１〜階層５の条件を全て満たしている。しかしながら、階層３に対して、アクセス回数が５０００［回］以上８０００［回］未満となった日数が５［日］未満であったため、ストレージ制御装置１０１は、階層３を不使用階層に設定する。同様に、階層４に対して、アクセス回数が２０００［回］以上５０００［回］未満となった日数が１０［日］未満であったため、ストレージ制御装置１０１は、階層４を不使用階層に設定する。以上により、ストレージ制御装置１０１は、仮想ボリュームに階層１、階層２、階層５を含めるように設定する。
【００８５】
図１３は、Ｓｙｎｃ先決定処理の動作の一例を示す説明図である。図１３では、上位の階層に空き領域がなくなった場合の、Ｓｙｎｃ先となる階層の決定方法の一例を説明する。ストレージ制御装置１０１は、Ｓｙｎｃ先決定閾値テーブル９０１を参照して、Ｓｙｎｃ先となる階層を決定する。Ｓｙｎｃ先決定閾値テーブル９０１は、手動設定として、利用者が設定してもよいし、自動設定として、階層の応答性能に基づいてストレージ制御装置１０１が設定してもよい。
【００８６】
ストレージ制御装置１０１が条件を設定する場合、ストレージ制御装置１０１は、下記（１）式を用いて、経過時間条件の上限値を算出する。
【００８７】
階層ｉにＳｙｎｃする経過時間の上限値  ＝  ３６５×（階層ｉまでの記憶容量の合計）／（全階層の記憶容量の合計）−１  …（１）
【００８８】
また、経過時間条件の下限値は、１つ上の階層の上限値より１日大きい値となる。最上位の階層の経過時間条件の下限値は、０となる。また、最下位の階層の条件は、経過時間条件の下限値より、アクセスされてからの経過時間が長いデータとなる。図１３の例では、ストレージ制御装置１０１が階層１に記憶されているデータ２＿５を階層２〜階層５のいずれかに移行する場合を例として説明する。さらに、図１３の例では、データ２＿５を記憶している仮想ボリュームが、階層２〜階層５を使用中であるとする。
【００８９】
このとき、ストレージ制御装置１０１は、（１）式に従って、階層２〜階層５に移行させる経過時間の条件を算出する。たとえば、ストレージ制御装置１０１は、（１）式を利用して、階層２にＳｙｎｃする経過時間の上限値を算出する。
【００９０】
階層２にＳｙｎｃする経過時間の上限値  ＝  ３６５×（階層２までの記憶容量の合計）／（全階層の記憶容量の合計）−１
階層２にＳｙｎｃする経過時間の上限値  ＝  ３６５×（１＋５）／１００−１＝２１［日］
【００９１】
また、階層２は、移行対象となる階層のうち、最上位の階層となるため、ストレージ制御装置１０１は、階層２にＳｙｎｃする経過時間の下限値を、０に設定する。したがって、ストレージ制御装置１０１は、階層２の経過時間条件を、２１日以下に設定する。続けて、ストレージ制御装置１０１は、階層３の経過時間条件を２２日から５８日に設定し、階層４の経過時間条件を５９日から１３１日に設定し、階層５の経過時間条件を１３２日以上に設定する。
【００９２】
上述で説明した例は、データ２＿５を記憶している仮想ボリュームが、階層２〜階層５を使用中であるとしている。もし、階層２〜階層５のうち、不使用の階層がある場合、ストレージ制御装置１０１は、（１）式の“全階層の記憶容量の合計”を“使用中の階層の記憶容量の合計”として算出する。
【００９３】
また、空き容量がなくなったか否かの判断方法として、ストレージ制御装置１０１は、プライマリ階層に設定された階層について、使用中の記憶容量が最大記憶容量に対する一定量を超えた場合に、空き容量がなくなったと判断してもよい。一定量は、最大記憶容量の半分の容量などである。
【００９４】
図１４は、Ｒｅｃａｌｌ制御処理の動作の一例を示す説明図である。図１４では、Ｒｅｃａｌｌを行うか否かを判断する処理について説明する。たとえば、サーバｓｅ１により、２０１１年１月２日に階層５に記憶されているデータ１＿１がアクセスされたとする。このとき、ストレージ制御装置１０１は、サーバ毎に用意してあるＲｅｃａｌｌビットマップテーブル１４０１を参照して、アクセスがあった日のビットが設定されていない場合、アクセスがあった２０１１年１月２日と、前後数日とのビットを設定する。たとえば、図１４の例では、２０１１年１月２日と、前後１日のビットを設定する。
【００９５】
次に、サーバｓｅ１により、２０１１年１月３日に階層５に記憶されているデータ１＿２がアクセスされたとする。このとき、ストレージ制御装置１０１は、サーバ毎に用意してあるＲｅｃａｌｌビットマップテーブル１４０１を参照して、アクセスがあった日のビットが設定されている場合、アクセスがあったデータをＲｅｃａｌｌする。図１４の例では、ストレージ制御装置１０１は、データ１＿２を階層２に移行させる。
【００９６】
また、ストレージ制御装置１０１は、ビットを設定した一定時間後にビットの設定を解除する。このように、ストレージ制御装置１０１は、アクセス要求を頻繁に発行するサーバのデータをＲｅｃａｌｌすることになるため、アクセス回数が多くなると予想されるサーバのデータの応答性能を向上することになる。したがって、階層ストレージシステム１００の性能を向上することができる。また、ストレージ制御装置１０１は、データ毎にＲｅｃａｌｌビットマップテーブル１４０１を用意して、アクセス回数が多くなると予想されるデータに対する応答性能を向上してもよい。
【００９７】
図１５は、キュー制御処理の動作の一例を示す説明図である。図１５では、各階層が記憶しているデータの制御の動作について説明する。サーバからアクセスされたデータがプライマリ階層にある場合、ストレージ制御装置１０１は、該当のデータのＩ／Ｏ処理を行うとともに、該当のデータのタイムスタンプ情報を更新する。
【００９８】
また、サーバからアクセスされたデータがプライマリ階層にない場合、ストレージ制御装置１０１は、該当のデータのＩ／Ｏ処理を行うとともに、該当のデータのタイムスタンプ情報を更新する。さらに、ストレージ制御装置１０１は、プライマリ階層に該当のデータをＲｅｃａｌｌして、プライマリ階層のキュー情報の最後尾に、該当データを格納する。
【００９９】
また、プライマリ階層に空き領域がない場合、ストレージ制御装置１０１は、プライマリ階層が記憶しているデータの中から、Ｓｙｎｃ対象データを特定して、下位の階層にＳｙｎｃする。Ｓｙｎｃ対象データは、たとえば、プライマリ階層が記憶しているデータのうち、アクセスしてからの経過時間が最も長いデータである。
【０１００】
以下、サーバからアクセスされたデータがプライマリ階層になく、さらに、プライマリ階層に空き領域がない場合についての一連の処理を、図１５を用いて説明する。たとえば、サーバｓｅ１が、データ１＿２に対してアクセス要求を発行したとする。このとき、ストレージ制御装置１０１は、データ１＿２をプライマリ階層である階層２に移行させようとする。しかしながら、階層２に空き領域がないため、ストレージ制御装置１０１は、階層２が記憶しているデータのうち経過時間が最も長いデータであるデータ１＿６をＳｙｎｃ対象データに特定し、サーバｓｅ１の使用階層である階層４にＳｙｎｃする。これにより、階層２に領域が確保できたため、ストレージ制御装置１０１は、データ１＿２を階層２にＲｅｃａｌｌし、タイムスタンプ情報を更新する。
【０１０１】
なお、各階層のキュー情報は、全仮想ボリュームで共有するため、Ｓｙｎｃ対象データが記憶されている仮想ボリュームと、Ｒｅｃａｌｌ対象のデータが記憶されている仮想ボリュームとが同一の仮想ボリュームとならない場合もありうる。たとえば、階層２が記憶しているデータのうち経過時間が最も長いデータがデータ３＿３となった場合、ストレージ制御装置１０１は、データ３＿３を、仮想ボリュームｖｖ３の下位の使用階層３にＳｙｎｃする。
【０１０２】
続けて、図１６〜図２１を用いて、本実施の形態にかかるストレージ制御装置１０１が実行する処理についてのフローチャートについて説明する。図１６〜図２１にて示すフローチャートの実行主体は、ストレージ制御装置１０１＃１でもよいし、ストレージ制御装置１０１＃２でもよい。以降の説明では、ストレージ制御装置１０１＃１が実行するものとする。
【０１０３】
図１６は、仮想ボリューム作成処理手順の一例を示すフローチャートである。仮想ボリューム作成処理は、仮想ストレージプール３０１から仮想ボリュームを生成する処理である。初めに、ストレージ制御装置１０１＃１は、物理ボリュームを認識する（ステップＳ１６０１）。次に、ストレージ制御装置１０１＃１は、認識した物理ボリュームを種類別にグルーピングする（ステップＳ１６０２）。
【０１０４】
続けて、ストレージ制御装置１０１＃１は、仮想ストレージプール３０１に物理ボリュームを取り込む（ステップＳ１６０３）。次に、ストレージ制御装置１０１＃１は、作成する仮想ボリュームのサイズを指定する（ステップＳ１６０４）。続けて、ストレージ制御装置１０１＃１は、使用階層を選択する（ステップＳ１６０５）。使用階層の選択について、手動設定として、利用者が設定してもよいし、自動設定として、全階層を選択し、図１８にて示す、アクセス頻度に基づいた使用階層選択処理を実行してもよい。
【０１０５】
次に、ストレージ制御装置１０１＃１は、階層情報テーブル６０１を更新する（ステップＳ１６０６）。具体的な更新内容として、ストレージ制御装置１０１＃１は、階層情報テーブル６０１の各階層のレコードに、作成する仮想ボリュームのサブレコードを追加する。続けて、ストレージ制御装置１０１＃１は、ステップＳ１６０５の処理にて選択された階層のレコード内の、作成する仮想ボリュームのサブレコードについて、階層情報テーブル６０１の使用中フラグに“使用中”を設定する（ステップＳ１６０７）。次に、ストレージ制御装置１０１＃１は、使用中となった階層のうち、最上位の階層をプライマリ階層に設定する（ステップＳ１６０８）。
【０１０６】
続けて、ストレージ制御装置１０１＃１は、使用する階層を有する仮想ボリュームを定義する（ステップＳ１６０９）。ステップＳ１６０９の処理について、ストレージ制御装置１０１＃１は、シン・プロビジョニングを適用して、作成する仮想ボリュームの実体が空の領域に設定してもよい。書き込み要求が初めてあった場合に、ストレージ制御装置１０１＃１は、仮想ボリュームに実際の容量を割り当てる。次に、ストレージ制御装置１０１＃１は、定義した仮想ボリュームをサーバへ割り当てる（ステップＳ１６１０）。
【０１０７】
ステップＳ１６１０の実行終了後、ストレージ制御装置１０１＃１は、仮想ボリューム作成処理を終了する。仮想ボリューム作成処理を実行することにより、階層ストレージシステム１００は、サーバが仮想ボリュームにアクセスできるようにすることができる。
【０１０８】
図１７Ａは、仮想ボリュームに対してのアクセス処理手順の一例を示すフローチャート（その１）である。仮想ボリュームに対してのアクセス処理は、サーバからアクセス要求が発行されたときに実行される処理である。
【０１０９】
ストレージ制御装置１０１＃１は、サーバが仮想ボリュームに対してアクセス要求を発行する（ステップＳ１７０１）。次に、ストレージ制御装置１０１＃１は、アクセス要求が新規書き込み要求か否かを判断する（ステップＳ１７０２）。アクセス要求が新規書き込み要求である場合（ステップＳ１７０２：Ｙｅｓ）、ストレージ制御装置１０１＃１は、マッピングテーブル５０１に、仮想ボリュームと物理ボリュームの新たな関連付け情報を作成する（ステップＳ１７０３）。アクセス要求が新規書き込み要求でない場合（ステップＳ１７０２：Ｎｏ）、ストレージ制御装置１０１＃１は、物理アクセス先をマッピングテーブル５０１から取得する（ステップＳ１７０４）。
【０１１０】
ステップＳ１７０３、またはステップＳ１７０４の実行終了後、ストレージ制御装置１０１＃１は、データにアクセスしてサーバに応答を通知する（ステップＳ１７０５）。具体的に、アクセス要求が書き込み要求である場合、ストレージ制御装置１０１＃１は、ストレージ制御装置１０１＃１のキャッシュメモリに格納し、サーバに書き込み終了の応答を通知する。一方、アクセス要求が読み込み要求であり、キャッシュメモリにアクセス要求のあったデータの内容が記憶されている場合、ストレージ制御装置１０１＃１は、記憶していたデータの内容をサーバに通知する。また、アクセス要求が読み込み要求であり、キャッシュメモリにアクセス要求のあったデータの内容が記憶されていない場合、ストレージ制御装置１０１＃１は、いずれかの階層からデータを読み込んで、記憶していたデータの内容をサーバに通知する。
【０１１１】
次に、ストレージ制御装置１０１＃１は、ミラーリング情報が“有”であり、かつアクセス要求が書込要求か否かを判断する（ステップＳ１７０６）。前述の条件に当てはまる場合（ステップＳ１７０６：Ｙｅｓ）、ストレージ制御装置１０１＃１は、ミラーボリュームにデータを書き込む（ステップＳ１７０７）。ステップＳ１７０７の終了後、または、条件に当てはまらない場合（ステップＳ１７０６：Ｎｏ）、ストレージ制御装置１０１＃１は、図１７Ｂに示すステップＳ１７０８の処理に移行する。
【０１１２】
図１７Ｂは、仮想ボリュームに対してのアクセス処理手順の一例を示すフローチャート（その２）である。ストレージ制御装置１０１＃１は、アクセス先のデータがプライマリ階層にあるか否かを判断する（ステップＳ１７０８）。アクセス先のデータがプライマリ階層にない場合（ステップＳ１７０８：Ｎｏ）、ストレージ制御装置１０１＃１は、Ｒｅｃａｌｌビットマップテーブル１４０１を参照して、Ｒｅｃａｌｌ条件に合致しているか否かを判断する（ステップＳ１７０９）。合致している場合（ステップＳ１７０９：Ｙｅｓ）、ストレージ制御装置１０１＃１は、プライマリ階層にアクセスデータ分の空き領域があるか否かを判断する（ステップＳ１７１０）。
【０１１３】
プライマリ階層に空き領域がない場合（ステップＳ１７１０：Ｎｏ）、ストレージ制御装置１０１＃１は、空き領域を確保するためのＳｙｎｃ対象データをタイムスタンプ情報から決定する（ステップＳ１７１１）。次に、ストレージ制御装置１０１＃１は、Ｓｙｎｃ先階層特定処理を実行する（ステップＳ１７１２）。Ｓｙｎｃ先階層特定処理の詳細は、図１８にて後述する。続けて、ストレージ制御装置１０１＃１は、Ｓｙｎｃ対象データをＳｙｎｃ先階層にＳｙｎｃする（ステップＳ１７１３）。次に、ストレージ制御装置１０１＃１は、マッピングテーブル５０１と階層情報テーブル６０１を更新する（ステップＳ１７１４）。続けて、ストレージ制御装置１０１＃１は、全てのＳｙｎｃが完了したか否かを判断する（ステップＳ１７１５）。Ｓｙｎｃが完了していない場合（ステップＳ１７１５：Ｎｏ）、ストレージ制御装置１０１＃１は、ステップＳ１７１１の処理に移行する。
【０１１４】
プライマリ階層に空き領域がある場合（ステップＳ１７１０：Ｙｅｓ）、または、全てのＳｙｎｃが完了した場合（ステップＳ１７１５：Ｙｅｓ）、ストレージ制御装置１０１＃１は、アクセスのあったデータを最上位の階層にＲｅｃａｌｌする（ステップＳ１７１６）。ステップＳ１７１６の処理について、図１７Ａ、図１７Ｂにて示す仮想ボリュームに対してのアクセス処理は、２回目以降のデータをＲｅｃａｌｌ対象としている。ステップＳ１７１６を通過した際に、１回目のデータをＲｅｃａｌｌ対象としたい場合、ストレージ制御装置１０１は、ステップＳ１７１７の処理について、Ｒｅｃａｌｌビットマップテーブル１４０１にビットを設定するとともに、データ名を合わせて記憶しておく。続けて、ストレージ制御装置１０１は、ステップＳ１７１６の処理を実行する際に、アクセスのあったデータと、記憶しておいたデータ名に対応するデータをＲｅｃａｌｌする。
【０１１５】
ステップＳ１７１６の実行終了後、または、合致していない場合（ステップＳ１７０９：Ｎｏ）、ストレージ制御装置１０１＃１は、アクセスのあったデータに対するＲｅｃａｌｌビットマップテーブル１４０１のビットを設定する（ステップＳ１７１７）。ステップＳ１７１７の実行終了後、または、アクセス先のデータがプライマリ階層にある場合（ステップＳ１７０８：Ｙｅｓ）、ストレージ制御装置１０１＃１は、マッピングテーブル５０１と階層情報テーブル６０１を更新する（ステップＳ１７１８）。
【０１１６】
次に、ストレージ制御装置１０１＃１は、アクセスのあったデータのタイムスタンプ情報を更新する（ステップＳ１７１９）。ステップＳ１７１９の実行終了後、ストレージ制御装置１０１＃１は、仮想ボリュームに対してのアクセス処理を終了する。仮想ボリュームに対してのアクセス処理を実行することにより、階層ストレージシステム１００は、アクセス要求を契機として、データのアクセス頻度に応じた最適な階層にデータを移行することができる。
【０１１７】
図１８は、Ｓｙｎｃ先階層特定処理の一例を示すフローチャートである。Ｓｙｎｃ先階層特定処理は、階層群の中から、Ｓｙｎｃ先となる階層を特定する処理である。ストレージ制御装置１０１＃１は、Ｓｙｎｃ対象データがサーバからのアクセス要求に応じてアクセスされてからの経過時間を取得する（ステップＳ１８０１）。次に、ストレージ制御装置１０１＃１は、Ｓｙｎｃ対象データを記憶している仮想ボリュームが使用する階層群を選択する（ステップＳ１８０２）。続けて、ストレージ制御装置１０１＃１は、Ｓｙｎｃ先決定閾値テーブル９０１を参照して、選択した階層群の中から、Ｓｙｎｃ先階層を特定する（ステップＳ１８０３）。次に、ストレージ制御装置１０１＃１は、特定したＳｙｎｃ先階層の階層にＳｙｎｃ対象データが記憶できる領域があるか否かを判断する（ステップＳ１８０４）。
【０１１８】
記憶できる領域がない場合（ステップＳ１８０４：Ｎｏ）、ストレージ制御装置１０１＃１は、選択した階層群のうち、特定したＳｙｎｃ階層を除いた階層群を再度選択する（ステップＳ１８０５）。ステップＳ１８０５の実行終了後、ストレージ制御装置１０１＃１は、ステップＳ１８０３の処理に移行する。記憶できる領域がある場合（ステップＳ１８０４：Ｙｅｓ）、ストレージ制御装置１０１＃１は、特定したＳｙｎｃ先階層の識別情報を出力する（ステップＳ１８０６）。ステップＳ１８０６の実行終了後、ストレージ制御装置１０１は、Ｓｙｎｃ先階層特定処理を終了する。Ｓｙｎｃ先階層特定処理を実行することにより、階層ストレージシステム１００は、データのアクセス頻度に応じた階層を特定することができる。
【０１１９】
図１９は、Ｓｙｎｃ先決定閾値テーブル更新処理の一例を示すフローチャートである。Ｓｙｎｃ先閾値テーブル更新処理は、Ｓｙｎｃ先決定閾値テーブル９０１に格納されている、各階層の経過時間条件を更新する処理である。
【０１２０】
ストレージ制御装置１０１＃１は、仮想ボリュームの使用階層が変更された、または階層の記憶容量が変化したか否かを判断する（ステップＳ１９０１）。仮想ボリュームの使用階層が変更される場合としては、たとえば、図２０、図２１にて示す使用階層選択処理が実行された場合や、ユーザにより、使用階層が追加、または削除された場合である。また、階層の記憶容量が変化した場合とは、たとえば、新たな物理ボリュームが追加され、ある階層の記憶容量が増大した場合等である。
【０１２１】
仮想ボリュームの使用階層が変更されていなく、かつ、階層の記憶容量が変化していない場合（ステップＳ１９０１：Ｎｏ）、ストレージ制御装置１０１＃１は、一定時間経過後、ステップＳ１９０１の処理を再び実行する。
【０１２２】
仮想ボリュームの使用階層が変更されている場合、または、階層の記憶容量が変化している場合（ステップＳ１９０１：Ｙｅｓ）、ストレージ制御装置１０１＃１は、各階層の経過時間条件を算出する（ステップＳ１９０２）。具体的に、ストレージ制御装置１０１＃１は、（１）式を用いて各階層の経過時間条件を算出する。次に、ストレージ制御装置１０１＃１は、算出した経過時間条件を、Ｓｙｎｃ先決定閾値テーブル９０１に設定する（ステップＳ１９０３）。ステップＳ１９０３の実行終了後、ストレージ制御装置１０１＃１は、ステップＳ１９０１の処理に移行する。Ｓｙｎｃ先決定閾値テーブル更新処理を実行することにより、ストレージ制御装置１０１＃１は、各階層の使用状況や記憶容量に応じて、記憶するデータの条件を動的に変更することができる。
【０１２３】
図２０は、使用階層選択処理手順の一例を示すフローチャートである。使用階層選択処理は、階層群から、使用階層を選択する処理である。また、使用階層選択処理は、仮想ボリュームが作成された後、一定周期で実行される。また、使用階層選択処理は、仮想ボリューム毎に行う。図２０および図２１では、複数の仮想ボリュームのうちの１つの仮想ボリュームを対象としている。対象となった仮想ボリュームを、図２０および図２１では、「対象の仮想ボリューム」と呼称する。
【０１２４】
ストレージ制御装置１０１＃１は、対象の仮想ボリュームが使用できる全階層を使用階層選択処理の対象に設定する（ステップＳ２００１）。次に、ストレージ制御装置１０１＃１は、アクセス回数の計数を開始する（ステップＳ２００２）。続けて、ストレージ制御装置１０１＃１は、変数ｉを１に設定する（ステップＳ２００３）。次に、ストレージ制御装置１０１＃１は、階層ｉに対する使用階層設定処理を実行する（ステップＳ２００４）。使用階層設定処理は、図２１にて後述する。
【０１２５】
続けて、ストレージ制御装置１０１＃１は、全階層について、使用階層更新処理が完了したか否かを判断する（ステップＳ２００５）。まだ使用階層設定処理を実行していない階層がある場合（ステップＳ２００５：Ｎｏ）、ストレージ制御装置１０１＃１は、変数ｉをインクリメントする（ステップＳ２００６）。次に、ストレージ制御装置１０１＃１は、ステップＳ２００４の処理に移行する。
【０１２６】
使用階層設定処理を全ての階層に対して完了した場合（ステップＳ２００５：Ｙｅｓ）、ストレージ制御装置１０１＃１は、一定時間スリープする（ステップＳ２００７）。次に、ストレージ制御装置１０１＃１は、ステップＳ２００３の処理に移行する。使用階層選択処理を実行することにより、階層ストレージシステム１００は、仮想ボリュームが使用するべき階層の最適化が行える。
【０１２７】
図２１は、階層ｉに対する使用階層設定処理手順の一例を示すフローチャートである。階層ｉに対する使用階層設定処理は、各階層を使用階層、または不使用階層に設定する処理である。
【０１２８】
ストレージ制御装置１０１＃１は、アクセス特性閾値テーブル７０１を参照して、アクセス特性テーブル８０１の対象の仮想ボリュームのレコードが、階層ｉのアクセス回数条件と単位時間条件とを満たしているか否かを判断する（ステップＳ２１０１）。満たしている場合（ステップＳ２１０１：Ｙｅｓ）、ストレージ制御装置１０１＃１は、階層ｉに対する使用中フラグが“使用中”か否かを判断する（ステップＳ２１０２）。使用中フラグが“不使用”である場合（ステップＳ２１０２：Ｎｏ）、ストレージ制御装置１０１＃１は、階層ｉに対する対象の仮想ボリュームの使用中フラグに“使用中”を設定する（ステップＳ２１０３）。次に、ストレージ制御装置１０１＃１は、階層情報テーブル６０１を更新する（ステップＳ２１０４）。
【０１２９】
続けて、ストレージ制御装置１０１＃１は、対象の仮想ボリュームの使用中の階層のうち、階層ｉが最上位の階層か否かを判断する（ステップＳ２１０５）。階層ｉがプライマリ階層である場合（ステップＳ２１０５：Ｙｅｓ）、ストレージ制御装置１０１＃１は、階層ｉをプライマリ階層に設定する（ステップＳ２１０６）。
【０１３０】
ステップＳ２１０６の実行終了後、または、使用中フラグが“使用中”である場合（ステップＳ２１０２：Ｙｅｓ）、または、階層ｉがプライマリ階層でない場合（ステップＳ２１０５：Ｎｏ）、ストレージ制御装置１０１＃１は、階層ｉに対する使用階層設定処理を終了する。
【０１３１】
満たしていない場合（ステップＳ２１０１：Ｎｏ）、ストレージ制御装置１０１＃１は、階層ｉに対する使用中フラグが“使用中”か否かを判断する（ステップＳ２１０７）。使用中フラグが“使用中”である場合（ステップＳ２１０７：Ｙｅｓ）、ストレージ制御装置１０１＃１は、階層ｉに対する対象の仮想ボリュームの使用中フラグを“不使用”に設定する（ステップＳ２１０８）。次に、ストレージ制御装置１０１＃１は、階層情報テーブル６０１を更新する（ステップＳ２１０９）。
【０１３２】
続けて、ストレージ制御装置１０１＃１は、対象の仮想ボリュームの使用中の階層のうち、階層ｉが最下位の階層か否かを判断する（ステップＳ２１１０）。階層ｉが最下位の階層である場合（ステップＳ２１１０：Ｙｅｓ）、ストレージ制御装置１０１＃１は、階層ｉのデータを階層ｉより上位の階層にＲｅｃａｌｌする（ステップＳ２１１１）。また、階層ｉが最下位の階層でない場合（ステップＳ２１１０：Ｎｏ）、ストレージ制御装置１０１＃１は、階層ｉのデータを階層ｉより下位の階層にＳｙｎｃする（ステップＳ２１１２）。
【０１３３】
ステップＳ２１１１、またはステップＳ２１１２の実行終了後、ストレージ制御装置１０１＃１は、マッピングテーブル５０１と階層情報テーブル６０１を更新する（ステップＳ２１１３）。ステップＳ２１１３の実行終了後、または、使用中フラグが“不使用”である場合（ステップＳ２１０７：Ｎｏ）、ストレージ制御装置１０１＃１は、階層ｉに対する使用階層設定処理を終了する。階層ｉに対する使用階層設定処理を実行することにより、階層ストレージシステム１００は、各階層の使用、不使用を、アクセス頻度に応じて切り替えることができる。
【０１３４】
以上説明したように、ストレージ制御装置１０１によれば、応答性能が異なる階層群のうちの移行元階層にある移行対象データが各階層に設定されている応答性能による条件を満たす階層を特定して、移行対象データを移行させる。これにより、ストレージ制御装置１０１は、頻繁にアクセスされる可能性が高いデータが、応答性能が高い階層に移行されるため、高頻度にアクセスされるであろうデータの応答性能を向上できる。
【０１３５】
また、ストレージ制御装置１０１によれば、各々の階層の応答性能に基づいて、各々の階層の応答性能が高いほど条件となる経過時間の範囲の上限値または下限値が小さくなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。頻繁にアクセスされる可能性が高いデータは、経過時間が短いため、応答性能が高い階層に移行される。したがって、ストレージ制御装置１０１は、高頻度にアクセスされるであろうデータの応答性能を向上できる。
【０１３６】
また、ストレージ制御装置１０１によれば、各々の階層の記憶容量に基づいて、各々の階層の記憶容量が大きいほど条件となる経過時間の範囲が長くなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。これにより、階層ストレージシステム１００は、記憶容量が大きい階層に対して大量のデータを記憶させるようにすることができる。また、ストレージ制御装置１０１は、記憶容量が動的に変更する場合であっても、変更後の状態に合わせて、条件となる経過時間の範囲を設定することができる。
【０１３７】
また、ストレージ制御装置１０１によれば、階層群の記憶容量の合計に対する階層群のうちの各々の階層よりも応答性能が高い階層群の記憶容量の合計の割合に基づいて、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。これにより、階層ストレージシステム１００は、頻繁にアクセスされる可能性が高いデータを、応答性能が高い階層に移行させることと、記憶容量が大きい階層に対して大量のデータを記憶させることを両立することができる。
【０１３８】
また、ストレージ制御装置１０１によれば、不使用の階層に記憶されているデータを、階層群のうちの不使用の階層とは異なる他の階層に移行させてもよい。したがって、ストレージ制御装置１０１は、階層群のうち、使用する階層を限定することができる。使用する階層を限定することにより、制御対象となる階層数が減ることから、処理時間を短縮することができる。たとえば、仮想ボリューム内の検索を行う場合、対象となる階層数が減少するため、処理時間を短縮することができる。また、全ての仮想ボリュームから不使用となった階層があれば、ストレージ制御装置１０１は、該当の階層をスリープモードに設定し、消費電力を抑制させてもよい。
【０１３９】
また、ストレージ制御装置１０１によれば、不使用のストレージとなるアクセス要求の単位時間あたりの回数の条件を記憶しておき、単位時間当たりのアクセス要求の回数を計数して、条件を満たす階層を検索してもよい。これにより、ストレージ制御装置１０１は、ユーザが特に意識しなくても、常に最適な階層をユーザに利用させることができる。
【０１４０】
また、ストレージ制御装置１０１によれば、所定期間のうちの、不使用のストレージとなるアクセス要求の単位時間あたりの回数を満たす期間の数の条件を記憶しておき、単位時間当たりのアクセス要求の回数を計数して、条件を満たす階層を検索してもよい。たとえば、記憶容量が大きい階層は、期間の数の条件を大きくするように設定することにより、ストレージ制御装置１０１は、記憶容量に応じた最適な階層をユーザに利用させることができる。
【０１４１】
また、ストレージ制御装置１０１によれば、所定時間内のアクセス要求の回数が所定数以上であれば、アクセス要求があったデータを記憶している階層から、前述のデータを記憶している階層より応答性能が高い階層に前述のデータを移行させてもよい。これにより、ストレージ制御装置１０１は、これからアクセスが頻繁にされるであろうデータを応答性能が高い階層にＲｅｃａｌｌすることができるため、余計なＲｅｃａｌｌ処理を行わずに済み、結果、Ｓｙｎｃ処理を抑制することができる。
【０１４２】
また、階層ストレージシステム１００は、データの価値に応じてＳｙｎｃ先階層を決定することにより、データの価値に対応した適当な階層にデータを格納することができる。また、階層ストレージシステム１００は、サーバｓｅ１〜ｓｅ３と、ストレージｓｔ１〜ｓｔ５の中間となるネットワークレイヤにストレージ制御装置１０１を配置することにより、自由な記録媒体、自由なストレージの階層数のシステムを構築することができる。また、階層ストレージシステム１００は、旧ストレージとなる仮想ボリュームと、新ストレージとなる仮想ボリュームをミラーリングしてデータ移行を行うことにより、業務を運用し続けたまま、ストレージを交換することができる。
【０１４３】
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４４】
上述した本実施の形態に関し、さらに以下の付記を開示する。
【０１４５】
（付記１）コンピュータが、
アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理を実行することを特徴とするストレージ制御方法。
【０１４６】
（付記２）前記コンピュータが、
前記各々のストレージの応答性能に基づいて、前記各々のストレージの応答性能が高いほど前記条件となる経過時間の範囲の上限値または下限値が小さくなるように、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする付記１に記載のストレージ制御方法。
【０１４７】
（付記３）前記コンピュータが、
前記各々のストレージの記憶容量に基づいて、前記各々のストレージの記憶容量が大きいほど前記条件となる経過時間の範囲が長くなるように、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする付記１または２に記載のストレージ制御方法。
【０１４８】
（付記４）前記コンピュータが、
前記ストレージ群の記憶容量の合計に対する前記ストレージ群のうちの前記各々のストレージよりも応答性能が高いストレージ群の記憶容量の合計の割合に基づいて、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする付記１〜３のいずれか一つに記載のストレージ制御方法。
【０１４９】
（付記５）前記コンピュータが、
前記ストレージ群のうちの特定のストレージに記憶されているデータを、前記ストレージ群のうちの前記特定のストレージとは異なる他のストレージに移行させる処理を実行し、
前記取得する処理は、
前記他のストレージに移行させた後、前記他のストレージのうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間に基づいて、前記他のストレージの中から前記移行対象データが満たす条件が設定された移行先ストレージを特定することを特徴とする付記１〜４のいずれか一つに記載のストレージ制御方法。
【０１５０】
（付記６）前記記憶部は、前記特定のストレージとなる、前記アクセス要求の単位時間あたりの回数の条件を前記ストレージ毎に記憶しており、
前記コンピュータが、
前記アクセス要求の回数を前記単位時間毎に計数し、
前記記憶部に記憶されている前記アクセス要求の回数の条件を参照して、前記ストレージ群のうちの、計数した前記回数が満たす条件が設定された前記特定のストレージを検索する処理を実行し、
前記他のストレージに移行させる処理は、
前記特定のストレージを検索した場合、前記特定のストレージに記憶されているデータを、前記他のストレージに移行させることを特徴とする付記５に記載のストレージ制御方法。
【０１５１】
（付記７）前記記憶部は、前記各々のストレージについて、前記特定のストレージとなる、所定期間のうちの前記アクセス要求の単位時間あたりの回数を満たす期間の数の条件を前記ストレージ毎に記憶しており、
前記計数する処理は、
前記所定期間のうちの前記アクセス要求の回数を前記単位時間毎に計数し、
前記検索する処理は、
前記記憶部に記憶されている前記アクセス要求の回数を満たす期間の数の条件を参照して、前記ストレージ群のうちの、計数した前記回数を満たす期間の数が満たす条件が設定された前記特定のストレージを検索することを特徴とする付記６に記載のストレージ制御方法。
【０１５２】
（付記８）前記コンピュータが、
前記アクセス要求を受け付けて前記移行対象データを移行させた後、所定時間内の前記アクセス要求の回数が所定数以上か否かを判断し、
前記所定時間内のアクセス数が前記所定数以上であると判断した場合、前記アクセス要求があったデータを記憶しているストレージから、前記アクセス要求があったデータを記憶しているストレージより応答性能が高いストレージに前記アクセス要求があったデータを移行させる処理を実行することを特徴とする付記１〜７のいずれか一つに記載のストレージ制御方法。
【０１５３】
（付記９）アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得する取得部と、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、前記取得部によって取得された前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定する特定部と、
前記移行元ストレージから、前記特定部によって特定された前記移行先ストレージに前記移行対象データを移行させる移行部と、
を有することを特徴とするストレージ制御装置。
【０１５４】
（付記１０）アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得する取得部と、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、前記取得部によって取得された前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定する特定部と、
前記移行元ストレージから、前記特定部によって特定された前記移行先ストレージに前記移行対象データを移行させる移行部と、
を含むコンピュータを有することを特徴とするストレージ制御装置。
【０１５５】
（付記１１）コンピュータに、
アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理を実行させることを特徴とするストレージ制御プログラム。
【０１５６】
（付記１２）アクセス要求に対する応答性能が異なる３以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【０１５７】
１０１  ストレージ制御装置
７０１  アクセス特性閾値テーブル
９０１  Ｓｙｎｃ先決定閾値テーブル
１０１１  受付部
１０１２  移行対象データ特定部
１０１３  取得部
１０１４  算出部
１０１５  移行先階層特定部
１０１６  判断部
１０１７  移行部
１０２４  計数部
１０２５  検索部
【図１】
2014038463.tif 000003
【図２】
2014038463.tif 000004
【図３】
2014038463.tif 000005
【図４】
2014038463.tif 000006
【図５】
2014038463.tif 000007
【図６】
2014038463.tif 000008
【図７】
2014038463.tif 000009
【図８】
2014038463.tif 000010
【図９】
2014038463.tif 000011
【図１０】
2014038463.tif 000012
【図１１】
2014038463.tif 000013
【図１２Ａ】
2014038463.tif 000014
【図１２Ｂ】
2014038463.tif 000015
【図１３】
2014038463.tif 000016
【図１４】
2014038463.tif 000017
【図１５】
2014038463.tif 000018
【図１６】
2014038463.tif 000019
【図１７Ａ】
2014038463.tif 000020
【図１７Ｂ】
2014038463.tif 000021
【図１８】
2014038463.tif 000022
【図１９】
2014038463.tif 000023
【図２０】
2014038463.tif 000024
【図２１】
2014038463.tif 000025