(57)【要約】【課題】アクセス性能を改善する。【解決手段】制御部１２は、論理ボリューム１２ａに対する第１のデータブロックの書き込みが要求されたとき、第１のデータブロックの書き込み先アドレスに対するアクセス頻度が低い場合には、重複除去を行ってデータが格納され、記憶装置２１よりアクセス性能の低い記憶装置３１に第１のデータブロックを格納し、論理ボリューム１２ａからの読み出しが要求された第２のデータブロックに基づくハッシュ値と、第２のデータブロックの読み出し頻度を示す指標とを対応付けて、読み出し頻度情報１１ａに登録し、記憶装置３１に格納された第１のデータブロックのうち、読み出し頻度情報１１ａに基づいて読み出し頻度が高いと判定された第３のデータブロックを、記憶装置３１から記憶装置２１に移動させる。【選択図】図１
2017211920.tif 000002
【特許請求の範囲】
【請求項１】
読み出し頻度情報を記憶する記憶部と、制御部とを有し、
前記制御部は、
ホスト装置から論理ボリュームに対する第１のデータブロックの書き込みが要求されたとき、前記論理ボリュームにおける前記第１のデータブロックの書き込み先アドレスに対するアクセス頻度が高い場合には、重複除去を行ってデータが格納される第１の記憶装置に前記第１のデータブロックを格納し、前記書き込み先アドレスに対するアクセス頻度が低い場合には、重複除去を行ってデータが格納され、前記第１の記憶装置よりアクセス性能の低い第２の記憶装置に前記第１のデータブロックを格納し、
前記論理ボリュームに格納された前記第１のデータブロックのうち、前記ホスト装置から読み出しが要求された第２のデータブロックに基づくハッシュ値と、前記第２のデータブロックの読み出し頻度を示す指標とを対応付けて、前記読み出し頻度情報に登録し、
前記第２の記憶装置に格納された前記第１のデータブロックのうち、前記読み出し頻度情報に基づいて読み出し頻度が高いと判定された第３のデータブロックを、前記第２の記憶装置から前記第１の記憶装置に移動させる、
ストレージ制御装置。
【請求項２】
前記第２の記憶装置には、前記第２の記憶装置の記憶領域によって実現される他の論理ボリュームが設定され、前記他の論理ボリュームに書き込みが要求された前記第１のデータブロックを、重複除去を行って前記第２の記憶装置に格納する他の制御部が接続されており、
前記第３のデータブロックの移動では、前記読み出し頻度情報に登録されたハッシュ値のうち、前記第３のデータブロックに対応する特定ハッシュ値を前記他の制御部に指定することで、前記第３のデータブロックが書き込まれたアドレスを前記他の制御部から取得し、取得したアドレスを前記他の制御部に指定することで前記他の論理ボリュームから前記第３のデータブロックを読み出し、前記第１の記憶装置に転送する、
請求項１記載のストレージ制御装置。
【請求項３】
前記記憶部は、前記第１の記憶装置の記憶領域によって実現される他の論理ボリュームに含まれるアドレスごとに、書き込み頻度が登録された書き込み頻度情報をさらに記憶し、
前記制御部はさらに、
前記論理ボリュームに含まれるアドレスのうち、前記ホスト装置からのアクセス頻度が高いと判定された第１のアドレスに対する第４のデータブロックの書き込みが前記ホスト装置から要求されると、前記第４のデータブロックの前記他の論理ボリュームにおける書き込み先を第２のアドレスに決定し、
前記書き込み頻度情報に基づいて前記第２のアドレスについての書き込み頻度が低いと判定した場合には、重複除去を行って前記第４のデータブロックを前記第１の記憶装置に格納し、
前記書き込み頻度情報に基づいて前記第２のアドレスについての書き込み頻度が高いと判定し、かつ、前記第４のデータブロックが前記第１の記憶装置の第３のアドレスにすでに格納されている場合には、前記第４のデータブロックを前記第１の記憶装置の第４のアドレスに格納する、
請求項１または２記載のストレージ制御装置。
【請求項４】
重複除去を行って第１の記憶装置にデータを格納する第１のストレージ装置と、
重複除去を行って前記第１の記憶装置よりアクセス速度の低い第２の記憶装置にデータを格納する第２のストレージ装置と、
読み出し頻度情報を記憶する記憶部と制御部とを備えるストレージ制御装置と、
を有し、
前記制御部は、
ホスト装置から論理ボリュームに対する第１のデータブロックの書き込みが要求されたとき、前記論理ボリュームにおける前記第１のデータブロックの書き込み先アドレスに対するアクセス頻度が高い場合には、前記第１のデータブロックを前記第１の記憶装置に格納するように前記第１のストレージ装置に要求し、前記書き込み先アドレスに対するアクセス頻度が低い場合には、前記第１のデータブロックを前記第２の記憶装置に格納するように前記第２のストレージ装置に要求し、
前記論理ボリュームに格納された前記第１のデータブロックのうち、前記ホスト装置から読み出しが要求された第２のデータブロックに基づくハッシュ値と、前記第２のデータブロックの読み出し頻度を示す指標とを対応付けて、前記読み出し頻度情報に登録し、
前記第２の記憶装置に格納された前記第１のデータブロックのうち、前記読み出し頻度情報に基づいて読み出し頻度が高いと判定された第３のデータブロックを、前記第２の記憶装置から前記第１の記憶装置に移動させる、
ストレージシステム。
【請求項５】
前記制御部はさらに、
前記論理ボリュームに含まれるアドレスのうち、前記ホスト装置からのアクセス頻度が高いと判定された第１のアドレスに対する第４のデータブロックの書き込みが前記ホスト装置から要求されると、前記第４のデータブロックの前記他の論理ボリュームにおける書き込み先を第２のアドレスに決定し、
前記第１の記憶装置の記憶領域によって実現される他の論理ボリュームにおける第２のアドレスに対する前記第４のデータブロックの書き込みを、前記第２のストレージ装置に要求し、
前記第２のストレージ装置は、
前記他の論理ボリュームに含まれるアドレスごとに、書き込み頻度が登録された書き込み頻度情報を記憶する他の記憶部と、
前記書き込み頻度情報に基づいて前記第２のアドレスについての書き込み頻度が低いと判定した場合には、重複除去を行って前記第４のデータブロックを前記第１の記憶装置に格納し、前記書き込み頻度情報に基づいて前記第２のアドレスについての書き込み頻度が高いと判定し、かつ、前記第４のデータブロックが前記第１の記憶装置の第３のアドレスにすでに格納されている場合には、前記第４のデータブロックを前記第１の記憶装置の第４のアドレスに格納する他の制御部と、
を有する、
請求項４記載のストレージシステム。
【請求項６】
前記他の制御部はさらに、前記第４のデータブロックを前記第４のアドレスに格納した後、前記第１のアドレスに対する第５のデータブロックの書き込みが前記ホスト装置から要求されると、前記第５のデータブロックを前記第４のアドレスに上書きする、
請求項５記載のストレージシステム。
【請求項７】
コンピュータが、
ホスト装置から論理ボリュームに対する第１のデータブロックの書き込みが要求されたとき、前記論理ボリュームにおける前記第１のデータブロックの書き込み先アドレスに対するアクセス頻度が高い場合には、重複除去を行ってデータが格納される第１の記憶装置に前記第１のデータブロックを格納し、前記書き込み先アドレスに対するアクセス頻度が低い場合には、重複除去を行ってデータが格納され、前記第１の記憶装置よりアクセス性能の低い第２の記憶装置に前記第１のデータブロックを格納し、
前記論理ボリュームに格納された前記第１のデータブロックのうち、前記ホスト装置から読み出しが要求された第２のデータブロックに基づくハッシュ値と、前記第２のデータブロックの読み出し頻度を示す指標とを対応付けて、記憶部に記憶された読み出し頻度情報に登録し、
前記第２の記憶装置に格納された前記第１のデータブロックのうち、前記読み出し頻度情報に基づいて読み出し頻度が高いと判定された第３のデータブロックを、前記第２の記憶装置から前記第１の記憶装置に移動させる、
ストレージ制御方法。
【請求項８】
コンピュータに、
ホスト装置から論理ボリュームに対する第１のデータブロックの書き込みが要求されたとき、前記論理ボリュームにおける前記第１のデータブロックの書き込み先アドレスに対するアクセス頻度が高い場合には、重複除去を行ってデータが格納される第１の記憶装置に前記第１のデータブロックを格納し、前記書き込み先アドレスに対するアクセス頻度が低い場合には、重複除去を行ってデータが格納され、前記第１の記憶装置よりアクセス性能の低い第２の記憶装置に前記第１のデータブロックを格納し、
前記論理ボリュームに格納された前記第１のデータブロックのうち、前記ホスト装置から読み出しが要求された第２のデータブロックに基づくハッシュ値と、前記第２のデータブロックの読み出し頻度を示す指標とを対応付けて、記憶部に記憶された読み出し頻度情報に登録し、
前記第２の記憶装置に格納された前記第１のデータブロックのうち、前記読み出し頻度情報に基づいて読み出し頻度が高いと判定された第３のデータブロックを、前記第２の記憶装置から前記第１の記憶装置に移動させる、
処理を実行させるストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
ストレージシステムの技術の一例として、重複するデータを記憶装置に格納しないようにして、記憶装置の記憶領域を効率的に使用する「重複除去」と呼ばれる技術が知られている。また、ストレージシステムの技術の他の例として、アクセス頻度の高いデータを高速であるが高価な記憶装置に格納し、アクセス頻度の低いデータを低速であるが安価な記憶装置に格納する「階層化」と呼ばれる技術も知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−０４１４５２号公報
【特許文献２】特開２０１１−１９２２５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ストレージシステムにおいて重複除去技術と階層化技術とを同時に使用する方法としては、例えば、先に階層化処理を実行し、その後に重複除去処理を実行する方法が考えられる。この場合例えば、論理ボリュームのある論理アドレスに対するデータの書き込みがホスト装置から要求されると、この論理アドレスに対するアクセス頻度が判定される。アクセス頻度が低い場合、データの書き込み先が低速な記憶装置に決定され、次に、このデータが低速な記憶装置にすでに格納されているかが判定される。このデータが低速な記憶装置に格納されていない場合、データは低速な記憶装置に格納されるが、格納されている場合には、データが低速な記憶装置に格納されずに、このデータが格納されている物理アドレスが上記論理アドレスに対応付けられる。一方、アクセス頻度が高い場合、データの書き込み先は高速な記憶装置に決定され、高速な記憶装置を処理対象として上記と同様の重複除去処理が実行される。
【０００５】
しかし、この方法では次のような問題がある。この方法によれば、論理ボリュームにおける異なる複数の論理アドレスから短期間に同じデータが読み出された場合、個々の論理アドレスでのアクセス頻度は低いと判定されるので、これらのデータは低速な記憶装置に格納される。また、重複除去処理によって、これらの論理アドレスには低速な記憶装置上の１つの物理アドレスが割り当てられる。このため、実際には、低速な記憶装置上の同じ物理アドレスから複数回データの読み出しが行われることになる。このように、実際には頻繁に読み出しが行われているデータであるにもかかわらず、このデータが低速な記憶装置に格納された状態になり、アクセス速度が低くなるケースがあるという問題がある。
【０００６】
１つの側面では、本発明は、アクセス性能が改善されたストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、記憶部と制御部とを有する次のようなストレージ制御装置が提供される。記憶部は、読み出し頻度情報を記憶する。制御部は、ホスト装置から論理ボリュームに対する第１のデータブロックの書き込みが要求されたとき、論理ボリュームにおける第１のデータブロックの書き込み先アドレスに対するアクセス頻度が高い場合には、重複除去を行ってデータが格納される第１の記憶装置に第１のデータブロックを格納し、書き込み先アドレスに対するアクセス頻度が低い場合には、重複除去を行ってデータが格納され、第１の記憶装置よりアクセス性能の低い第２の記憶装置に第１のデータブロックを格納し、論理ボリュームに格納された第１のデータブロックのうち、ホスト装置から読み出しが要求された第２のデータブロックに基づくハッシュ値と、第２のデータブロックの読み出し頻度を示す指標とを対応付けて、読み出し頻度情報に登録し、第２の記憶装置に格納された第１のデータブロックのうち、読み出し頻度情報に基づいて読み出し頻度が高いと判定された第３のデータブロックを、第２の記憶装置から第１の記憶装置に移動させる。
【０００８】
また、１つの案では、第１のストレージ装置と、第２のストレージ装置と、ストレージ制御装置とを含む次のようなストレージシステムが提供される。第１のストレージ装置は、重複除去を行って第１の記憶装置にデータを格納する。第２のストレージ装置は、重複除去を行って第１の記憶装置よりアクセス速度の低い第２の記憶装置にデータを格納する。ストレージ制御装置は、記憶部と制御部とを備える。記憶部は、読み出し頻度情報を記憶する。制御部は、ホスト装置から論理ボリュームに対する第１のデータブロックの書き込みが要求されたとき、論理ボリュームにおける第１のデータブロックの書き込み先アドレスに対するアクセス頻度が高い場合には、第１のデータブロックを第１の記憶装置に格納するように第１のストレージ装置に要求し、書き込み先アドレスに対するアクセス頻度が低い場合には、第１のデータブロックを第２の記憶装置に格納するように第２のストレージ装置に要求し、論理ボリュームに格納された第１のデータブロックのうち、ホスト装置から読み出しが要求された第２のデータブロックに基づくハッシュ値と、第２のデータブロックの読み出し頻度を示す指標とを対応付けて、読み出し頻度情報に登録し、第２の記憶装置に格納された第１のデータブロックのうち、読み出し頻度情報に基づいて読み出し頻度が高いと判定された第３のデータブロックを、第２の記憶装置から第１の記憶装置に移動させる。
【０００９】
さらに、１つの案では、上記のストレージ制御装置と同様の処理をコンピュータが実行するストレージ制御方法が提供される。
また、１つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、アクセス性能を改善できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】サーバ装置およびＣＭのハードウェア構成例を示す図である。
【図４】サーバ装置およびＣＭが備える処理機能の構成例を示すブロック図である。
【図５】ユーザボリュームテーブルの構成例を示す図である。
【図６】ＳＳＤボリュームテーブルおよびＳＳＤプール管理用のハッシュテーブルの構成例を示す図である。
【図７】ＨＤＤボリュームテーブルおよびＨＤＤプール管理用のハッシュテーブルの構成例を示す図である。
【図８】第１の問題点について説明するための図（その１）である。
【図９】第１の問題点について説明するための図（その２）である。
【図１０】第２の問題点について説明するための図である。
【図１１】第１の問題点を解決するための制御の概要を示す図である。
【図１２】書き込み回数テーブルの更新処理手順の例を示すフローチャートである。
【図１３】第２の問題点を解決するための制御の概要を示す図である。
【図１４】ユーザボリュームからの読み出しが要求された場合の処理手順の例を示すフローチャートである。
【図１５】ユーザボリュームへの書き込み処理手順の例を示すフローチャートである。
【図１６】ＨＤＤボリュームからＳＳＤボリュームへのデータ移動処理手順の例を示すフローチャートである。
【図１７】ＳＳＤボリュームからＨＤＤボリュームへのデータ移動処理手順の例を示すフローチャートである。
【図１８】ＳＳＤボリュームへの書き込み処理手順の例を示すフローチャート（その１）である。
【図１９】ＳＳＤボリュームへの書き込み処理手順の例を示すフローチャート（その２）である。
【図２０】ＨＤＤボリュームへの書き込み処理手順の例を示すフローチャートである。
【図２１】バックグラウンドでのデータ移動処理手順の例を示すフローチャートである。
【図２２】第３の実施の形態に係るストレージシステムの構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。図１に示すストレージ制御装置１０は、記憶部１１と制御部１２を有する。記憶部１１は、例えば、ストレージ制御装置１０が備える記憶装置の記憶領域として実装される。制御部１２は、例えば、ストレージ制御装置１０が備えるプロセッサとして実装される。
【００１３】
また、ストレージ制御装置１０は、記憶装置２１，３１にアクセス可能になっている。記憶装置２１には、重複除去を行ってデータが格納される。図１の例では、記憶装置２１はストレージ装置２０に搭載され、ストレージ装置２０に搭載された制御部２２が、重複除去を行って記憶装置２１にデータを格納する。記憶装置３１にも、重複除去を行ってデータが格納される。図１の例では、記憶装置３１はストレージ装置３０に搭載され、ストレージ装置３０に搭載された制御部３２が、重複除去を行って記憶装置３１にデータを格納する。
【００１４】
さらに、記憶装置２１のアクセス性能は、記憶装置３１のアクセス性能より高い。一方、ストレージ制御装置１０には、記憶装置２１，３１の各記憶領域によって実現される論理ボリューム１２ａが設定される。ストレージ制御装置１０の制御部１２は、図示しないホスト装置からの要求に応じた論理ボリューム１２ａに対するアクセスを制御する。
【００１５】
記憶部１１は、読み出し頻度情報１１ａを記憶する。読み出し頻度情報１１ａには、論理ボリューム１２ａに対してホスト装置から書き込まれたデータブロックのうち、ホスト装置から読み出しが要求されたデータブロックに基づくハッシュ値と、このデータブロックの読み出し頻度を示す指標とが、対応付けて登録される。すなわち、読み出し頻度情報１１ａには、論理ボリューム１２ａに書き込まれたデータブロックについて、同一内容のデータブロック単位で、ハッシュ値と読み出し頻度とが保持される。なお、図１において、ハッシュ値Ｈ１は、データブロックＤ１に基づいて算出された値であり、ハッシュ値Ｈ２は、データブロックＤ２に基づいて算出された値である。
【００１６】
制御部１２は、論理ボリューム１２ａの各アドレスでのアクセス頻度を監視する。そして、制御部１２は、ホスト装置から論理ボリューム１２ａに対する書き込みが要求されたとき、書き込みが要求されたデータブロックの書き込み先を次のように決定する。制御部１２は、論理ボリューム１２ａにおける書き込み先アドレスに対するアクセス頻度が高い場合には、データブロックを高速な記憶装置２１に格納する。一方、制御部１２は、書き込み先アドレスに対するアクセス頻度が低い場合には、データブロックを低速な記憶装置３１に格納するように制御する。
【００１７】
ここで、論理ボリューム１２ａ上の異なる複数のアドレスに対して、同一内容のデータブロックＤ１の書き込みがホスト装置から要求されたとする。また、各アドレスへの書き込み要求の受信時において、各アドレスでのアクセス頻度は低いと判定されたとする。この場合、制御部１２は、各アドレスに対して書き込みが要求されたデータブロックＤ１を、低速な記憶装置３１に書き込むようにストレージ装置３０に要求する。ストレージ装置３０の制御部３２は、重複除去を行ってデータブロックＤ１を記憶装置３１に格納する。したがって、論理ボリューム１２ａ上の各アドレスに書き込みが要求されたデータブロックＤ１は、実際には記憶装置３１の１つのアドレスに格納される。
【００１８】
この状態で、ホスト装置から、論理ボリューム１２ａの各アドレスからデータブロックＤ１の読み出しが要求されたとする。制御部１２は、要求されたデータブロックＤ１をストレージ装置３０から受信してホスト装置へ送信するとともに、読み出し頻度情報１１ａにおいてデータブロックＤ１に基づくハッシュ値Ｈ１に対応付けられた読み出し頻度を更新する。同じデータブロックＤ１に対する読み出しが繰り返し要求されるので、ハッシュ値Ｈ１に対応する読み出し頻度は高くなっていく。
【００１９】
ここで、データブロックＤ１は論理ボリューム１２ａの異なるアドレスから分散して読み出されるので、アドレスそれぞれでのアクセス頻度は高くならない。このため、このままでは、データブロックＤ１は低速な記憶装置３１に格納され続ける。しかし、データブロックＤ１は、実際には記憶装置３１の１つのアドレスにのみ格納されている。このため、データブロックＤ１が記憶装置３１に格納されたままだと、記憶装置３１の１つのアドレスからデータブロックＤ１が繰り返し読み出されることになる。この場合、読み出し速度は低くなり、処理効率が悪い。
【００２０】
このような問題に対して、制御部１２は、読み出し頻度情報１１ａを参照して次のような処理を実行する。制御部１２は、ある時点で、例えばハッシュ値Ｈ１に対応付けられた読み出し頻度が所定のしきい値を超えることで、ハッシュ値Ｈ１に対応するデータブロックＤ１の読み出し頻度が高くなったと判定する。すると、制御部１２は、データブロックＤ１を低速な記憶装置３１から高速な記憶装置２１に移動させるように、ストレージ装置２０，３０を制御する。
【００２１】
データブロックＤ１が記憶装置２１に移動されると、制御部２２による重複除去によって、データブロックＤ１は記憶装置２１内の１つのアドレスにのみ格納される。この状態で、論理ボリューム１２ａの複数アドレスからの同じデータブロックＤ１の読み出しがさらに要求されると、データブロックＤ１は高速な記憶装置２１内のアドレスから繰り返し読み出される。したがって、データブロックＤ１が低速な記憶装置３１に格納された状態と比較して、読み出し速度が向上する。
【００２２】
以上の第１の実施の形態によれば、ストレージ制御装置１０は、読み出し頻度情報１１ａを用いて、論理ボリューム１２ａ内のデータブロック単位で読み出し頻度を管理する。そして、ストレージ制御装置１０は、データブロックＤ１の読み出し頻度が高くなったと判定すると、データブロックＤ１を低速な記憶装置３１から高速な記憶装置２１に移動させる。これによって、論理ボリューム１２ａの複数のアドレスから同一のデータブロックＤ１が読み出された場合の読み出し速度を、向上させることができる。その結果、論理ボリューム１２ａに対するアクセス性能を改善することができる。
【００２３】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、サーバ装置１００、ストレージ装置２００，３００、ホスト装置４００，４００ａおよびスイッチ５００を含む。なお、サーバ装置１００は、図１のストレージ制御装置１０の一例であり、ストレージ装置２００，３００は、図１のストレージ装置２０，３０のそれぞれ一例である。
【００２４】
サーバ装置１００は、スイッチ５００を介してストレージ装置２００，３００と接続されている。ホスト装置４００，４００ａは、スイッチ５００を介してサーバ装置１００と接続されている。これらの各装置を接続するネットワークは、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）である。なお、ホスト装置は、ストレージシステムに１台のみ含まれてもよいし、３台以上含まれてもよい。
【００２５】
サーバ装置１００は、論理ボリューム（後述するユーザボリューム）を作成し、ホスト装置４００，４００ａからの要求に応じてこの論理ボリュームに対するアクセスを制御する。論理ボリュームは、ストレージ装置２００，３００から提供される記憶領域によって実現される仮想的な記憶領域である。サーバ装置１００は、論理ボリューム上の各ブロックに書き込みが要求されたデータを、ストレージ装置２００，３００のどちらかに送信し、そのデータの書き込みを要求する。
【００２６】
ストレージ装置２００は、ＣＭ（Controller Module）２００ａとＤＥ（Drive Enclosure）２００ｂを有する。ＤＥ２００ｂには、複数台の記憶装置が搭載されている。ＣＭ２００ａとＤＥ２００ｂ内の各記憶装置とは、例えば、ＳＡＳ（Serial Attached SCSI）によって接続されている。ＣＭ２００ａは、サーバ装置１００からの要求に応じて、ＤＥ２００ｂ内の記憶装置へのアクセスを制御する。
【００２７】
ストレージ装置３００も同様に、ＣＭ３００ａとＤＥ３００ｂを有する。ＤＥ３００ｂには、複数台の記憶装置が搭載されている。ＣＭ３００ａとＤＥ３００ｂ内の各記憶装置とは、例えば、ＳＡＳによって接続されている。ＣＭ３００ａは、サーバ装置１００からの要求に応じて、ＤＥ３００ｂ内の記憶装置へのアクセスを制御する。
【００２８】
ここで、ＤＥ２００ｂに搭載された記憶装置のアクセス性能は、ＤＥ３００ｂに搭載された記憶装置より高い。したがって、サーバ装置１００が作成する論理ボリュームに割り当て可能な記憶領域として、ストレージ装置２００は高速な記憶領域を提供し、ストレージ装置３００は低速な記憶領域を提供する。本実施の形態では例として、ＤＥ２００ｂには複数台のＳＳＤが搭載され、ＤＥ３００ｂには複数台のＨＤＤが搭載されているものとする。
【００２９】
後述するように、サーバ装置１００は、論理ボリュームにおけるアクセス頻度の高いブロックのデータを高速な記憶装置に格納し、アクセス頻度の低いブロックのデータを低速な記憶装置に格納する「階層化処理」を実行する。また、ＣＭ２００ａは、ＤＥ２００ｂの記憶領域に同じデータが重複して格納されないように制御する「重複除去処理」を実行する。ＣＭ３００ａは、ＤＥ３００ｂの記憶領域に同じデータが重複して格納されないように制御する「重複除去処理」を実行する。
【００３０】
ホスト装置４００，４００ａは、サーバ装置１００から提供される論理ボリュームにアクセスすることにより、業務処理などの所定の処理を実行する。
スイッチ５００は、サーバ装置１００とストレージ装置２００，３００との間、およびホスト装置４００，４００ａとサーバ装置１００との間で送受信されるデータを中継する。
【００３１】
図３は、サーバ装置およびＣＭのハードウェア構成例を示す図である。
サーバ装置１００は、プロセッサ１０１、ＲＡＭ（Random Access Memory）１０２、ＳＳＤ１０３およびネットワークインタフェース（Ｉ／Ｆ）１０４を有する。これらの構成要素は、図示しないバスを介して接続されている。
【００３２】
プロセッサ１０１は、サーバ装置１００全体を統括的に制御する。プロセッサ１０１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３３】
ＲＡＭ１０２は、サーバ装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。ＳＳＤ１０３は、サーバ装置１００の補助記憶装置として使用される。ＳＳＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。ネットワークインタフェース１０４は、スイッチ５００を介してＣＭ２００ａ，３００ａおよびホスト装置４００，４００ａと通信する。
【００３４】
ＣＭ２００ａは、プロセッサ２０１、ＲＡＭ２０２、ＳＳＤ２０３、ネットワークインタフェース（Ｉ／Ｆ）２０４およびドライブインタフェース（Ｉ／Ｆ）２０５を有する。これらの構成要素は、図示しないバスを介して接続されている。
【００３５】
プロセッサ２０１は、ＣＭ２００ａ全体を統括的に制御する。プロセッサ１０１と同様に、プロセッサ２０１は、例えば、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣまたはＰＬＤである。また、プロセッサ２０１は、これらのうちの２以上の要素の組み合わせであってもよい。
【００３６】
ＲＡＭ２０２は、ＣＭ２００ａの主記憶装置として使用される。ＲＡＭ２０２には、プロセッサ２０１に実行させるＯＳプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２０２には、プロセッサ２０１による処理に必要な各種データが格納される。ＳＳＤ２０３は、ＣＭ２００ａの補助記憶装置として使用される。ＳＳＤ２０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。
【００３７】
ネットワークインタフェース１０４は、スイッチ５００を介してサーバ装置１００と通信する。ドライブインタフェース２０５は、ＤＥ２００ｂに搭載されたＳＳＤと通信する。ドライブインタフェース２０５は、例えば、ＳＡＳインタフェースである。
【００３８】
ＣＭ３００ａは、ＣＭ２００ａと同様のハードウェアによって実現される。すなわち、ＣＭ３００ａは、プロセッサ３０１、ＲＡＭ３０２、ＳＳＤ３０３、ネットワークインタフェース（Ｉ／Ｆ）３０４およびドライブインタフェース（Ｉ／Ｆ）３０５を有する。これらの構成要素は、図示しないバスを介して接続されている。プロセッサ３０１、ＲＡＭ３０２、ＳＳＤ３０３、ネットワークインタフェース３０４およびドライブインタフェース３０５は、それぞれＣＭ２００ａのプロセッサ２０１、ＲＡＭ２０２、ＳＳＤ２０３、ネットワークインタフェース２０４およびドライブインタフェース２０５に対応するので、ここでは説明を省略する。
【００３９】
なお、図示しないが、ホスト装置４００，４００ａは、例えば、サーバ装置１００と同様のハードウェア構成を有するコンピュータとして実現可能である。
図４は、サーバ装置およびＣＭが備える処理機能の構成例を示すブロック図である。
【００４０】
サーバ装置１００は、階層化処理部１１０と記憶部１２０を有する。階層化処理部１１０の処理は、例えば、サーバ装置１００のプロセッサ１０１が所定のアプリケーションプログラムを実行することで実現される。記憶部１２０は、サーバ装置１００が備える記憶装置（例えばＲＡＭ１０２）の記憶領域によって実現される。
【００４１】
ＣＭ２００ａは、重複除去処理部２１０と記憶部２２０を有する。重複除去処理部２１０の処理は、例えば、ＣＭ２００ａのプロセッサ２０１が所定のアプリケーションプログラムを実行することで実現される。記憶部２２０は、ＣＭ２００ａが備える記憶装置（例えばＲＡＭ２０２）の記憶領域によって実現される。
【００４２】
ＣＭ３００ａは、重複除去処理部３１０と記憶部３２０を有する。重複除去処理部３１０の処理は、例えば、ＣＭ３００ａのプロセッサ３０１が所定のアプリケーションプログラムを実行することで実現される。記憶部３２０は、ＣＭ３００ａが備える記憶装置（例えばＲＡＭ３０２）の記憶領域によって実現される。
【００４３】
また、図４には、サーバ装置１００およびＣＭ２００ａ，３００ａに設定される論理記憶領域と処理機能との関係についても示している。このような論理記憶領域として、サーバ装置１００にはユーザボリューム１３０が設定され、ＣＭ２００ａにはＳＳＤボリューム２３１とＳＳＤプール２３２が設定され、ＣＭ３００ａにはＨＤＤボリューム３３１とＨＤＤプール３３２が設定される。これらの論理記憶領域は、例えば４キロバイトのブロックに分割して管理され、各ブロックにはＬＢＡ（Logical Block Address）が付与されている。
【００４４】
ＳＳＤプール２３２は、ＤＥ２００ｂ内の１台以上のＳＳＤによって実現される論理記憶領域である。一方、ＨＤＤプール３３２は、ＤＥ３００ｂ内の１台以上のＨＤＤによって実現される論理記憶領域である。このため、ＳＳＤプール２３２のアクセス性能は、ＨＤＤプール３３２より高い。
【００４５】
なお、ＳＳＤプール２３２は、１台以上のＳＳＤの記憶領域の単なる集合として実現されてもよいし、ＲＡＩＤ（Redundant Array of Inexpensive Disks）によって制御される複数のＳＳＤによって実現される論理記憶領域であってもよい。ＨＤＤプール３３２も同様に、１台以上のＨＤＤの記憶領域の単なる集合として実現されてもよいし、ＲＡＩＤによって制御される複数のＨＤＤによって実現される論理記憶領域であってもよい。
【００４６】
ＳＳＤボリューム２３１は、ＳＳＤプール２３２の記憶領域によって実現される仮想的な論理記憶領域である。一方、ＨＤＤボリューム３３１は、ＨＤＤプール３３２の記憶領域によって実現される仮想的な論理記憶領域である。このため、ＳＳＤボリューム２３１のアクセス性能は、ＨＤＤボリューム３３１より高い。
【００４７】
ユーザボリューム１３０は、ＳＳＤボリューム２３１およびＨＤＤボリューム３３１によって実現される仮想的な論理記憶領域である。また、ユーザボリューム１３０は、例として、ホスト装置４００，４００ａのうちホスト装置４００に認識されるものとする。なお、以下の説明では、ユーザボリューム１３０は１つだけ設定されるものとするが、１組のＳＳＤボリューム２３１およびＨＤＤボリューム３３１を用いて複数のユーザボリューム１３０が設定されてもよい。
【００４８】
ホスト装置４００は、ユーザボリューム１３０に対するアクセスをブロック単位でサーバ装置１００に要求する。階層化処理部１１０は、ホスト装置４００からのアクセス要求を受け付ける。
【００４９】
階層化処理部１１０は、ユーザボリューム１３０のブロックに対するデータの書き込みが要求されると、このデータのＳＳＤボリューム２３１への書き込み、またはＨＤＤボリューム３３１への書き込みを、それぞれ重複除去処理部２１０，３１０に要求する。重複除去処理部２１０へ書き込みが要求された場合、重複除去処理部２１０から、データの書き込み先とされるＳＳＤボリューム２３１のブロックのＬＢＡが通知される。また、重複除去処理部３１０へ書き込みが要求された場合、重複除去処理部３１０から、データの書き込み先とされるＨＤＤボリューム３３１のブロックのＬＢＡが通知される。階層化処理部１１０は、通知されたブロックをユーザボリューム１３０の書き込み要求先ブロックに割り当てる。
【００５０】
基本的に、階層化処理部１１０は、ユーザボリューム１３０における書き込み要求先ブロックのアクセス頻度が高い場合には、このブロックにＳＳＤボリューム２３１のブロックを割り当てる。一方、階層化処理部１１０は、書き込み要求先ブロックのアクセス頻度が低い場合には、このブロックにＨＤＤボリューム３３１のブロックを割り当てる。これにより、ユーザボリューム１３０におけるアクセス頻度が高いブロックのデータが、高速な記憶装置に格納されるようになる。
【００５１】
また、階層化処理部１１０は、ユーザボリューム１３０のブロックからの読み出しが要求されると、このブロックに割り当てられたＳＳＤボリューム２３１またはＨＤＤボリューム３３１のブロックのＬＢＡを指定して、重複除去処理部２１０，３１０のいずれかに読み出しを要求する。階層化処理部１１０は、指定されたブロックのデータを重複除去処理部２１０，３１０のいずれかから取得して、ホスト装置４００に送信する。
【００５２】
重複除去処理部２１０は、階層化処理部１１０からＳＳＤボリューム２３１のブロックに対するデータの書き込みが要求されると、このブロックに対してＳＳＤプール２３２のブロックを割り当て、ＳＳＤプール２３２の割り当て先ブロックにデータを格納する。このとき、重複除去処理部２１０は基本的に、書き込みが要求されたデータがＳＳＤプール２３２に格納済みである場合には、そのデータを格納せずに、ＳＳＤプール２３２において同じデータが格納済みのブロックをＳＳＤボリューム２３１の書き込み要求先ブロックに割り当てる。これにより、ＳＳＤプール２３２に格納されるデータが重複しなくなり、ＳＳＤプール２３２の使用効率が向上する。
【００５３】
また、重複除去処理部２１０は、階層化処理部１１０からＳＳＤボリューム２３１のブロックからの読み出しが要求されると、このブロックに割り当てられたＳＳＤプール２３２のブロックからデータを読み出し、階層化処理部１１０に出力する。
【００５４】
重複除去処理部３１０は、階層化処理部１１０からＨＤＤボリューム３３１のブロックに対するデータの書き込みが要求されると、このブロックに対してＨＤＤプール３３２のブロックを割り当て、ＨＤＤプール３３２の割り当て先ブロックにデータを格納する。このとき、重複除去処理部３１０は基本的に、書き込みが要求されたデータがＨＤＤプール３３２に格納済みである場合には、そのデータを格納せずに、ＨＤＤプール３３２において同じデータが格納済みのブロックをＨＤＤボリューム３３１の書き込み要求先ブロックに割り当てる。これにより、ＨＤＤプール３３２に格納されるデータが重複しなくなり、ＨＤＤプール３３２の使用効率が向上する。
【００５５】
また、重複除去処理部３１０は、階層化処理部１１０からＨＤＤボリューム３３１のブロックからの読み出しが要求されると、このブロックに割り当てられたＨＤＤプール３３２のブロックからデータを読み出し、階層化処理部１１０に出力する。
【００５６】
記憶部１２０は、階層化処理部１１０の処理で利用される各種のデータを記憶する。例えば、記憶部１２０は、ユーザボリューム１３０を管理するためのユーザボリュームテーブルを記憶する。記憶部２２０は、重複除去処理部２１０の処理で利用される各種のデータを記憶する。例えば、記憶部２２０は、ＳＳＤボリューム２３１を管理するためのＳＳＤボリュームテーブルや、重複データの格納先を管理するためのハッシュテーブルを記憶する。記憶部３２０は、重複除去処理部３１０の処理で利用される各種のデータを記憶する。例えば、記憶部３２０は、ＨＤＤボリューム３３１を管理するためのＨＤＤボリュームテーブルや、重複データの格納先を管理するためのハッシュテーブルを記憶する。
【００５７】
ここで、図５〜図７を用いてこれらのテーブルについて説明する。
図５は、ユーザボリュームテーブルの構成例を示す図である。図５に示すユーザボリュームテーブル１２１は、ユーザボリューム１３０の各ブロックに割り当てられたＳＳＤボリューム２３１またはＨＤＤボリューム３３１のブロックと、アクセス頻度とを管理するためのテーブルである。ユーザボリュームテーブル１２１は、サーバ装置１００の記憶部１２０に記憶され、サーバ装置１００の階層化処理部１１０によって更新され、参照される。
【００５８】
ユーザボリュームテーブル１２１には、ユーザボリューム１３０の全ブロックに対応するレコードが設定される。また、ユーザボリュームテーブル１２１は、ユーザボリューム１３０のＬＢＡ、アクセス回数、デバイス種別および割り当て先ボリュームのＬＢＡの各項目を有する。
【００５９】
ユーザボリューム１３０のＬＢＡの項目には、ユーザボリューム１３０のブロックのＬＢＡが登録される。アクセス回数の項目には、ユーザボリューム１３０のブロックに対してホスト装置４００から直近の所定時間にアクセスされた回数が登録される。このアクセス回数は、階層化処理部１１０によって計測される。そして、階層化処理部１１０は、アクセス回数に基づいて、ユーザボリューム１３０の対応するブロックに対して、ＳＳＤボリューム２３１とＨＤＤボリューム３３１のどちらのブロックを割り当てるかを判定する。
【００６０】
デバイス種別の項目には、ユーザボリューム１３０のブロックに対して、ＳＳＤボリューム２３１とＨＤＤボリューム３３１のどちらのブロックが割り当てられたかを示す識別情報が登録される。前者の場合には「ＳＳＤ」と登録され、後者の場合には「ＨＤＤ」と登録される。割り当て先ボリュームのＬＢＡの項目には、ユーザボリューム１３０のブロックに割り当てられた、ＳＳＤボリューム２３１またはＨＤＤボリューム３３１のブロックのＬＢＡが登録される。
【００６１】
なお、ユーザボリューム１３０が作成された直後の初期状態では、ユーザボリュームテーブル１２１にはユーザボリューム１３０の全ブロックに対応するレコードが作成される。このとき、各レコードにおけるアクセス回数、デバイス種別および割り当て先ボリュームのＬＢＡの各項目は、空欄となる。
【００６２】
図６は、ＳＳＤボリュームテーブルおよびＳＳＤプール管理用のハッシュテーブルの構成例を示す図である。図６に示すＳＳＤボリュームテーブル２２１およびハッシュテーブル２２２は、ＣＭ２００ａの記憶部２２０に記憶され、ＣＭ２００ａの重複除去処理部２１０によって更新され、参照される。
【００６３】
ＳＳＤボリュームテーブル２２１には、ＳＳＤボリューム２３１のブロックのうち、データが書き込まれた各ブロックに対応するレコードが設定される。また、ＳＳＤボリュームテーブル２２１は、ＳＳＤボリューム２３１のＬＢＡおよびＳＳＤプール２３２のＬＢＡの各項目を有する。ＳＳＤボリューム２３１のＬＢＡの項目には、ＳＳＤボリューム２３１のブロックのＬＢＡが登録される。ＳＳＤプール２３２のＬＢＡの項目には、ＳＳＤボリューム２３１のブロックに割り当てられた、ＳＳＤプール２３２のブロックのＬＢＡが登録される。このＳＳＤボリュームテーブル２２１によって、ＳＳＤボリューム２３１の各ブロックに割り当てられたＳＳＤプール２３２のブロックが管理される。
【００６４】
ハッシュテーブル２２２は、ＳＳＤプール２３２についての重複除去処理で使用されるテーブルである。ハッシュテーブル２２２は、ハッシュ値およびＳＳＤプール２３２のＬＢＡの各項目を有する。ハッシュ値の項目には、ＳＳＤプール２３２に書き込まれたデータを基に算出されたハッシュ値が登録される。ＳＳＤプール２３２のＬＢＡの項目には、ハッシュ値に対応するデータが書き込まれた、ＳＳＤプール２３２上のブロックのＬＢＡが登録される。
【００６５】
ＳＳＤプール２３２についての重複除去処理は、ハッシュテーブル２２２を用いて次のように実行される。重複除去処理部２１０は、階層化処理部１１０からの要求に応じてＳＳＤボリューム２３１のあるブロックにデータを書き込む際、このデータを基に、例えばＳＨＡ−１（Secure Hash Algorithm 1）のハッシュ関数を用いてハッシュ値を算出する。重複除去処理部２１０は、算出したハッシュ値がハッシュテーブル２２２に登録されているかを判定する。登録されていない場合、重複除去処理部２１０は、ＳＳＤプール２３２の空きブロックを１つ選択し、選択した空きブロックにデータを書き込む。また、重複除去処理部２１０は、選択した空きブロックのＬＢＡをハッシュ値に対応付けてハッシュテーブル２２２に登録するとともに、このＬＢＡを、ＳＳＤボリューム２３１の書き込み先ブロックのＬＢＡに対応付けてＳＳＤボリュームテーブル２２１に登録する。
【００６６】
一方、算出したハッシュ値がハッシュテーブル２２２に登録されている場合、重複除去処理部２１０は、ハッシュテーブル２２２において算出したハッシュ値に対応付けられたＳＳＤプール２３２のＬＢＡを抽出する。重複除去処理部２１０は、ＳＳＤプール２３２へのデータの格納を行わずに、ハッシュテーブル２２２から抽出したＬＢＡを、ＳＳＤボリューム２３１の書き込み先ブロックのＬＢＡに対応付けてＳＳＤボリュームテーブル２２１に登録する。
【００６７】
図７は、ＨＤＤボリュームテーブルおよびＨＤＤプール管理用のハッシュテーブルの構成例を示す図である。図７に示すＨＤＤボリュームテーブル３２１およびハッシュテーブル３２２は、ＣＭ３００ａの記憶部３２０に記憶され、ＣＭ３００ａの重複除去処理部３１０によって更新され、参照される。
【００６８】
ＨＤＤボリュームテーブル３２１には、ＨＤＤボリューム３３１のブロックのうち、データが書き込まれた各ブロックに対応するレコードが設定される。また、ＨＤＤボリュームテーブル３２１は、ＨＤＤボリュームのＬＢＡおよびＨＤＤプールのＬＢＡの各項目を有する。ＨＤＤボリューム３３１のＬＢＡの項目には、ＨＤＤボリューム３３１のブロックのＬＢＡが登録される。ＨＤＤプール３３２のＬＢＡの項目には、ＨＤＤボリューム３３１のブロックに割り当てられた、ＨＤＤプール３３２のブロックのＬＢＡが登録される。このＨＤＤボリュームテーブル３２１によって、ＨＤＤボリューム３３１の各ブロックに割り当てられたＨＤＤプール３３２のブロックが管理される。
【００６９】
ハッシュテーブル３２２は、ＨＤＤプール３３２についての重複除去処理で使用されるテーブルである。ハッシュテーブル３２２は、ハッシュ値およびＨＤＤプール３３２のＬＢＡの各項目を有する。ハッシュ値の項目には、ＨＤＤプール３３２に書き込まれたデータを基に算出されたハッシュ値が登録される。ＨＤＤプール３３２のＬＢＡの項目には、ハッシュ値に対応するデータが書き込まれた、ＨＤＤプール３３２上のブロックのＬＢＡが登録される。
【００７０】
ＨＤＤプール３３２についての重複除去処理は、ハッシュテーブル３２２を用いて次のように実行される。重複除去処理部３１０は、階層化処理部１１０からの要求に応じてＨＤＤボリューム３３１のあるブロックにデータを書き込む際、このデータを基に、例えばＳＨＡ−１のハッシュ関数を用いてハッシュ値を算出する。重複除去処理部３１０は、算出したハッシュ値がハッシュテーブル３２２に登録されているかを判定する。登録されていない場合、重複除去処理部３１０は、ＨＤＤプール３３２の空きブロックを１つ選択し、選択した空きブロックにデータを書き込む。また、重複除去処理部３１０は、選択した空きブロックのＬＢＡをハッシュ値に対応付けてハッシュテーブル３２２に登録するとともに、このＬＢＡを、ＨＤＤボリューム３３１の書き込み先ブロックのＬＢＡに対応付けてＨＤＤボリュームテーブル３２１に登録する。
【００７１】
一方、算出したハッシュ値がハッシュテーブル３２２に登録されている場合、重複除去処理部３１０は、ハッシュテーブル３２２において算出したハッシュ値に対応付けられたＨＤＤプール３３２のＬＢＡを抽出する。重複除去処理部３１０は、ＨＤＤプール３３２へのデータの格納を行わずに、ハッシュテーブル３２２から抽出したＬＢＡを、ＨＤＤボリューム３３１の書き込み先ブロックのＬＢＡに対応付けてＨＤＤボリュームテーブル３２１に登録する。
【００７２】
以上の図５〜図７に示したユーザボリュームテーブル１２１、ＳＳＤボリュームテーブル２２１、ＨＤＤボリュームテーブル３２１およびハッシュテーブル２２２，３２２は、階層化処理と重複除去処理とを実現するための基本的な管理情報である。次に、図５〜図７に示した各テーブルを用いて階層化処理と重複除去処理とを単純に組み合わせた場合の問題点について、図８〜図１０を用いて説明する。
【００７３】
図８、図９は、第１の問題点について説明するための図である。図８の上側に示すように、ホスト装置４００から、ユーザボリューム１３０のＬＢＡ「４」のブロックに対して連続してデータの書き込みが要求されたものとする。具体的には、ユーザボリューム１３０のＬＢＡ「４」のブロックに対して、時刻ｔ０でデータｃの書き込みが要求され、時刻ｔ１でデータｄの書き込みが要求され、時刻ｔ２でデータｅの書き込みが要求されたとする。
【００７４】
この場合、階層化処理部１１０は、ユーザボリューム１３０のＬＢＡ「４」のブロックでのアクセス頻度が高いと判定し、このブロックに書き込みが要求されたデータをアクセス性能の高いＳＳＤボリューム２３１に書き込むようにＣＭ２００ａに要求する。これにより、時刻ｔ２では、ユーザボリューム１３０のＬＢＡ「４」のブロックに対して、ＳＳＤボリューム２３１のＬＢＡ「１」のブロックが割り当てられたとする。図８の下側には、時刻ｔ２でのユーザボリュームテーブル１２１の状態を示している。
【００７５】
図９の上側には、時刻ｔ０，ｔ１，ｔ２でのＳＳＤボリューム２３１およびＨＤＤボリューム３３１の状態の遷移を示す。また、図９の下側には、時刻ｔ２でのＳＳＤプール２３２およびＨＤＤプール３３２の状態を示す。図９の例では、ＳＳＤボリューム２３１のＬＢＡ「１」のブロックのデータが、データｃ、データｄ、データｅの順に更新される。このようにＳＳＤボリューム２３１のＬＢＡ「１」のブロックのデータが新たなデータによって更新されるたびに、このブロックに対してＳＳＤプール２３２の新たなブロックが割り当てられる。図９の例では、ＳＳＤボリューム２３１のＬＢＡ「１」のブロックに対して、時刻ｔ０，ｔ１，ｔ２においてそれぞれＳＳＤプール２３２のＬＢＡ「１」，「２」，「３」のブロックが割り当てられている。これにより、ＳＳＤプール２３２のＬＢＡ「１」，「２」，「３」のブロックに、それぞれデータｃ，ｄ，ｅが格納される。
【００７６】
図９に示すハッシュテーブル２２２，３２２は、時刻ｔ２での状態を示す。ハッシュ値Ａ，Ｂ，Ｃ，Ｄ，Ｅは、それぞれデータａ，ｂ，ｃ，ｄ，ｅに基づいて算出された値である。ハッシュテーブル２２２においては、データｃに基づくハッシュ値Ｃ、データｄに基づくハッシュ値Ｄ、データｅに基づくハッシュ値Ｅに対して、それぞれＳＳＤプール２３２のＬＢＡ「１」，「２」，「３」が対応付けられている。
【００７７】
以上の図８、図９の例のように、ユーザボリューム１３０の同じブロックが何回も書き替えられた場合、その都度ＳＳＤプール２３２の新たなブロックが使用され、高速な記憶装置の使用領域が増加する。一般的に、高速な記憶装置の容量は低速な記憶装置より小さいことが多い。このため、上記のようなケースでは、ＳＳＤプール２３２から解放可能なブロックを探索して解放する「ガベージコレクション」という処理を実行しないと、ＳＳＤプール２３２の容量が圧迫されて新たなデータの書き込みが早期にできなくなるという問題がある。
【００７８】
図１０は、第２の問題点について説明するための図である。図１０では、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」の各ブロックに同じデータａが書き込まれているとする。また、図１０のユーザボリュームテーブル１２１に示すように、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」のブロックに対しては、それぞれＨＤＤボリューム３３１のＬＢＡ「０」，「１」，「２」，「３」のブロックが割り当てられているとする。この状態では、図１０の下側に示すように、ＨＤＤボリューム３３１におけるＬＢＡ「０」〜「３」の各ブロックに同じデータａが書き込まれている。また、重複除去処理部３１０の重複除去機能によって、データａは実際には、ＨＤＤプール３３２の１つのブロック、具体的にはＬＢＡ「０」のブロックに格納されている。
【００７９】
このような状態から、所定の期間においてユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」のブロックからのデータａの読み出しが、それぞれ２回、２回、２回、１回要求されたとする。図１０のユーザボリュームテーブル１２１はこの状態を示しており、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」についてのアクセス回数はそれぞれ２，２，２，１となる。
【００８０】
例えば、階層化処理部１１０は、ユーザボリューム１３０のブロックのうちアクセス回数が高い上位３つのブロックに対して、高速なＳＳＤボリューム２３１のブロックを割り当てるとする。この場合、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」の各ブロックについてのアクセス回数は低いと判定される。その結果、各ブロックに対しては低速なＨＤＤボリューム３３１のブロックが割り当てられたままになる。したがって、データａはＨＤＤプール３３２のＬＢＡ「０」のブロックに格納されたままになる。
【００８１】
すなわち、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」の各ブロックからのデータａの読み出しが要求されたとき、実際にはＨＤＤプール３３２の同じＬＢＡ「０」のブロックからデータａが読み出される。このケースのように、ユーザボリューム１３０の異なるブロックから同じデータが連続して読み出される場合には、低速な記憶装置からの読み出しが連続して行われ、読み出し速度が低くなるという問題がある。このようなケースでは、データが高速な記憶装置に格納されることが望ましいが、階層化処理と重複除去処理とを単純に組み合わせただけではそうすることができない。
【００８２】
以上のような問題に対し、本実施の形態のサーバ装置１００およびＣＭ２００ａ，３００ａは、次の図１１〜図１３に示すような制御を行う。
図１１は、第１の問題点を解決するための制御の概要を示す図である。ＣＭ２００ａの記憶部２２０には、図１１に示すような書き込み回数テーブル２２３がさらに記憶される。書き込み回数テーブル２２３には、ＳＳＤボリューム２３１のブロックを示すＬＢＡに対して、そのブロックにおける直近の期間における書き込み回数を示す書き込み回数指標が登録される。ただし、ＳＳＤボリューム２３１の全ブロックについての書き込み回数指標が登録されると、書き込み回数テーブル２２３のデータ量が過多になり、記憶部２２０の容量が圧迫される。そこで、書き込み回数テーブル２２３には、ＳＳＤボリューム２３１のブロックのうち、書き込み回数指標が上位の一定数のブロックに対応するレコードのみ登録され、それらのブロックについての書き込み回数指標が登録される。なお、書き込み回数テーブル２２３の具体的な更新方法については図１２で後述する。
【００８３】
重複除去処理部２１０は、階層化処理部１１０からの要求に応じてＳＳＤボリューム２３１のあるブロックにデータを書き込むとき、そのブロックに対応するレコードが書き込み回数テーブル２２３に存在するかを判定する。レコードが存在する場合、重複除去処理部２１０は、そのブロックでの直近の期間での書き込み頻度が高いと判定し、重複除去処理を行わずに、そのブロックに対してＳＳＤプール３３１の固有のブロックを割り当て、データの上書きを許容した書き込み処理を実行する。
【００８４】
例えば、図１１に示すように、時刻ｔ０においてＳＳＤボリューム２３１のＬＢＡ「１」のブロックにデータｃが書き込まれ、このブロックにＳＳＤプール３３１のＬＢＡ「１」が割り当てられているとする。この状態から、図９の例と同様に、時刻ｔ１において、ＳＳＤボリュームのＬＢＡ「１」のブロックにデータｄが書き込まれ、さらに時刻ｔ２において、同じブロックにデータｅが書き込まれるとする。また、時刻ｔ１，ｔ２のどちらでも、ＳＳＤボリュームのＬＢＡ「１」が書き込み回数テーブル２２３に登録されており、かつ、ＳＳＤプール３３１のＬＢＡ「１」のブロックはＳＳＤボリューム２３１のＬＢＡ「１」のブロックにのみ割り当てられているとする。
【００８５】
このような場合、重複除去処理部２１０は、時刻ｔ１，ｔ２において、ＳＳＤボリュームのＬＢＡ「１」のブロックに対するＳＳＤプール３３１のブロックの割り当て先を変化させない。すなわち、重複除去処理部２１０は、ＳＳＤプール３３１のＬＢＡ「１」のブロックに対して、時刻ｔ１でデータｄを上書きし、時刻ｔ２でデータｅをさらに上書きする。これにより、ユーザボリューム１３０の同じブロックに対するデータの更新が連続して要求された場合に、その都度ＳＳＤプール３３１の新たなブロックが使用されなくなる。したがって、ＳＳＤプール３３１が枯渇しにくくなり、ＳＳＤプール３３１の使用効率が改善される。
【００８６】
また、例えば、時刻ｔ１において、ＳＳＤボリュームのＬＢＡ「１」が書き込み回数テーブル２２３に登録されているが、ＳＳＤプール３３１のＬＢＡ「１」のブロックがＳＳＤボリューム２３１のＬＢＡ「１」以外のブロックにも割り当てられているとする。この場合、重複除去処理部２１０は、ＳＳＤボリュームのＬＢＡ「１」のブロックに対して、ＳＳＤプール３３１の新たなブロック（例えばＬＢＡ「２」のブロック）を割り当て、ＳＳＤプール３３１のＬＢＡ「２」のブロックにデータを格納する。その後、ＳＳＤボリューム２３１の同じＬＢＡ「１」のブロックに対するデータの更新が要求され、このブロックのＬＢＡ「１」が書き込み回数テーブル２２３に登録されている場合には、重複除去処理部２１０は、このブロックに割り当てられているＳＳＤプール３３１のＬＢＡ「２」のブロックに更新データを上書きする。
【００８７】
これにより、上記と同様にユーザボリューム１３０の同じブロックに対するデータの更新が連続して要求された場合に、その都度ＳＳＤプール３３１の新たなブロックが使用されなくなる。したがって、ＳＳＤプール３３１の使用効率が改善される。
【００８８】
図１２は、書き込み回数テーブルの更新処理手順の例を示すフローチャートである。図１２の処理は、ＳＳＤボリューム２３１のあるブロック（書き込み先ブロック）にデータを書き込む際に実行される。
【００８９】
［ステップＳ１１］重複除去処理部２１０は、書き込み先ブロックのＬＢＡが書き込み回数テーブル２２３に登録されているかを判定する。登録されている場合、ステップＳ１２の処理が実行され、登録されていない場合、ステップＳ１３の処理が実行される。
【００９０】
［ステップＳ１２］重複除去処理部２１０は、書き込み回数テーブル２２３において書き込み先ブロックＬＢＡに対応付けて登録されている書き込み回数指標を更新する。
［ステップＳ１３］重複除去処理部２１０は、書き込み回数テーブル２２３から最小の書き込み回数指標が登録されたレコードを選択する。重複除去処理部２１０は、選択したレコードに登録されたＬＢＡを、書き込み先ブロックのＬＢＡに書き替える。
【００９１】
［ステップＳ１４］重複除去処理部２１０は、ステップＳ１３で選択したレコードに登録されている書き込み回数指標を更新する。
以上のステップＳ１３，Ｓ１４の処理により、書き込み回数テーブル２２３のレコードのうち最小の書き込み回数指標が登録されていたレコードが、書き込み先ブロックに対応するレコードに書き替えられる。
【００９２】
ここで、ステップＳ１２，Ｓ１４での書き込み回数指標の更新方法としては、次の２つの方法がある。第１の更新方法では、ステップＳ１２，Ｓ１４のどちらにおいても、重複除去処理部２１０はまず、書き込み回数テーブル２２３の全レコードの書き込み回数指標を、０より大きく１未満の定数（例えば０．９９）を乗算することで更新する。ステップＳ１２では、重複除去処理部２１０は次に、書き込み回数テーブル２２３において書き込み先ブロックＬＢＡに対応付けて登録されている書き込み回数指標に、１を加算する。ステップＳ１４では、重複除去処理部２１０は次に、ステップＳ１３で選択したレコードに登録されている書き込み回数指標を１に書き替える。この第１の更新方法によれば、書き込み回数テーブル２２３の各レコードにおける書き込み回数指標は、小数を含み得る０より大きい値となる。
【００９３】
一方、第２の更新方法では、ステップＳ１２において、重複除去処理部２１０は、書き込み回数テーブル２２３において書き込み先ブロックＬＢＡに対応付けて登録されている書き込み回数指標に、１を加算する。ステップＳ１４では、重複除去処理部２１０は、ステップＳ１３で選択したレコードに登録されている書き込み回数指標に、１を加算する。この第２の更新方法によれば、書き込み回数テーブル２２３の各レコードにおける書き込み回数指標は、１以上の整数となる。
【００９４】
第１の更新方法と第２の更新方法のどちらでも、簡易な処理により、書き込み回数テーブル２２３を、直近の所定期間における書き込み回数が多い順に一定数のＬＢＡが登録された状態と、ほぼ同等の状態にすることができる。
【００９５】
図１３は、第２の問題点を解決するための制御の概要を示す図である。サーバ装置１００の記憶部１２０には、図１３に示すような読み出し回数テーブル１２２がさらに記憶される。読み出し回数テーブル１２２には、ホスト装置４００からユーザボリューム１３０に書き込みが要求されたデータに基づくハッシュ値ごとにレコードが登録される。各レコードには、対応するデータの直近の期間における読み出し回数を示す読み出し回数指標と、対応するデータがＳＳＤボリューム２３１とＨＤＤボリューム３３１のどちらに書き込まれているかを示すデバイス種別とが登録される。デバイス種別の項目には、ＳＳＤボリューム２３１に書き込まれている場合は「ＳＳＤ」と登録され、ＨＤＤボリューム３３１に書き込まれている場合は「ＨＤＤ」と登録される。
【００９６】
ただし、ホスト装置４００から読み出しが要求された全データに対応するハッシュ値のレコードが登録されると、読み出し回数テーブル１２２のデータ量が過多になり、記憶部１２０の容量が圧迫される。そこで、読み出し回数テーブル１２２には、書き込み回数テーブル２２３と同様の方法により、読み出しが要求されたデータのうち、読み出し回数指標が上位の一定数のデータに基づくハッシュ値についてのレコードのみ登録され、それらのハッシュ値に対応する読み出し回数指標とデバイス種別とが登録される。なお、読み出し回数テーブル１２２の具体的な更新方法については、図１４で説明する。
【００９７】
階層化処理部１１０は、読み出し回数テーブル１２２に登録されているハッシュ値に対応するデータを、読み出し頻度が高いデータと判定する。階層化処理部１１０は、デバイス種別から、そのようなデータが低速なＨＤＤボリューム３３１に書き込まれている場合には、そのデータをＨＤＤボリューム３３１からＳＳＤボリューム２３１に移動させる。これにより、ユーザボリューム１３０の異なるブロックから同じデータが連続して読み出される場合に、そのデータはＳＳＤボリューム２３１に格納されるようになり、そのデータの読み出し速度が向上する。
【００９８】
データの移動タイミングは複数考えられる。例えば、ユーザボリューム１３０に対する書き込み要求を契機としてデータ移動を実行する方法がある。図１３では、このようなケースの例を示している。図１３の左下に示すユーザボリュームテーブル１２１は、図１０と同様の状態になっており、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」の各ブロックに同じデータａが書き込まれている。また、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」のブロックに対してはＨＤＤボリューム３３１のブロックが割り当てられている。この状態では、図１０の右下と同様に、ＨＤＤプール３３２の１つのブロックにデータａが格納されている。
【００９９】
この状態で、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」の各ブロックからのデータａの読み出しがホスト装置４００から連続して要求されたとする。この場合、データａについての直近の期間における読み出し回数が多くなり、読み出し回数テーブル１２２に、データａに基づくハッシュ値Ａを含むレコードが登録された状態となる。
【０１００】
この状態で、ユーザボリューム１３０のＬＢＡ「２」のブロックに対してデータａを書き込むようにホスト装置４００から要求されたとする。このとき、階層化処理部１１０は、データａを基にハッシュ値Ａを算出する。算出されたハッシュ値Ａは読み出し回数テーブル１２２に登録されていることから、階層化処理部１１０は、データａを高速なＳＳＤボリューム２３１に書き込むように重複除去処理部２１０に要求する。このとき、図１３の右下に示すように、ユーザボリューム１３０のＬＢＡ「２」のブロックに対してＳＳＤボリューム２３１のブロックが割り当てられる。これとともに、階層化処理部１１０は、ＨＤＤボリューム３３１に書き込まれていた、ユーザボリューム１３０のＬＢＡ「０」，「１」，「７」，「８」の各ブロックのデータａを、ＳＳＤボリューム２３１に移動させる。なお、ＣＭ２００ａでは、重複除去処理が実行されて、ＳＳＤプール２３２の１つのブロックにデータａが格納される。
【０１０１】
また、以上の図１３のような例の他、ユーザボリューム１３０からの読み出し要求に伴う読み出し回数テーブル１２２の更新を契機として、データ移動が実行されてもよい。さらに、書き込み要求や読み出し要求のタイミングとは関係なく、読み出し回数テーブル１２２が定期的に参照され、ＨＤＤボリューム３３１に書き込まれている読み出し回数指標の高いデータがある場合に、そのデータが移動されてもよい。
【０１０２】
次に、サーバ装置１００およびＣＭ２００ａ，３００ａの処理手順について、フローチャートを用いて説明する。
まず、図１４は、ユーザボリュームからの読み出しが要求された場合の処理手順の例を示すフローチャートである。
【０１０３】
［ステップＳ３１］サーバ装置１００の階層化処理部１１０は、ホスト装置４００から、ユーザボリューム１３０からのデータの読み出し要求を受信する。このとき、ホスト装置４００からは、ユーザボリューム１３０における読み出し元ブロックのＬＢＡが指定される。階層化処理部１１０は、ユーザボリュームテーブル１２１から、読み出し元ブロックに対応付けられているＳＳＤボリューム２３１またはＨＤＤボリューム３３１のブロックのＬＢＡを抽出する。階層化処理部１１０は、抽出されたＬＢＡのブロックからのデータの読み出しを、ＣＭ２００ａまたはＣＭ３００ａに要求する。抽出されたＬＢＡのブロックがＳＳＤボリューム２３１のブロックの場合、ＣＭ２００ａに読み出しが要求され、ＨＤＤボリューム３３１のブロックの場合、ＣＭ３００ａに読み出しが要求される。階層化処理部１１０は、ＣＭ２００ａまたはＣＭ３００ａから要求したデータを受信すると、受信したデータをホスト装置４００に送信する。
【０１０４】
［ステップＳ３２］階層化処理部１１０は、ユーザボリュームテーブル１２１においてユーザボリューム１３０の読み出し元ブロックのＬＢＡに対応付けられたアクセス回数を、インクリメントする。なお、ユーザボリュームテーブル１２１の各レコードのアクセス回数は、直近の所定期間におけるアクセス回数が登録されるように階層化処理部１１０によって管理される。
【０１０５】
［ステップＳ３３］階層化処理部１１０は、ステップＳ３１でＣＭ２００ａまたはＣＭ３００ａから受信したデータに基づいて、ハッシュ値を算出する。
［ステップＳ３４］階層化処理部１１０は、算出したハッシュ値が読み出し回数テーブル１２２に登録されているかを判定する。登録されている場合、ステップＳ３５の処理が実行され、登録されていない場合、ステップＳ３６の処理が実行される。
【０１０６】
［ステップＳ３５］階層化処理部１１０は、読み出し回数テーブル１２２において、算出されたハッシュ値に対応付けられている読み出し回数指標を更新する。
［ステップＳ３６］階層化処理部１１０は、読み出し回数テーブル１２２から最小の読み出し回数指標が登録されたレコードを選択する。
【０１０７】
［ステップＳ３７］階層化処理部１１０は、選択したレコードにおけるデバイス種別の項目に「ＳＳＤ」が登録されているかを判定する。「ＳＳＤ」が登録されている場合、ステップＳ３８の処理が実行され、「ＨＤＤ」が登録されている場合、ステップＳ４０の処理が実行される。
【０１０８】
［ステップＳ３８］階層化処理部１１０は、ＳＳＤボリューム２３１に書き込まれたデータのうち、選択したレコードに登録されているハッシュ値に対応するすべてのデータを、ＨＤＤボリューム３３１に移動させる処理を実行する。このステップＳ３８では、読み出し回数テーブル１２２から削除されるハッシュ値に対応するすべてのデータが、低速なＨＤＤボリューム３３１に移動される。なお、ステップＳ３８の処理の詳細については、図１７で説明する。
【０１０９】
［ステップＳ３９］階層化処理部１１０は、選択したレコードにおけるデバイス種別の項目を「ＨＤＤ」に書き替える。
［ステップＳ４０］階層化処理部１１０は、選択したレコードに登録されたハッシュ値を、ステップＳ３３で算出したハッシュ値に書き替える。
【０１１０】
［ステップＳ４１］階層化処理部１１０は、選択したレコードに登録されている読み出し回数指標を更新する。
以上のステップＳ３６〜Ｓ４１の処理により、読み出し回数テーブル１２２のレコードのうち最小の読み出し回数指標が登録されていたレコードが、読み出しが要求されたデータに基づくハッシュ値に対応するレコードに書き替えられる。
【０１１１】
ここで、ステップＳ３５，Ｓ４１での読み出し回数指標の更新方法としては、次の２つの方法がある。第１の更新方法では、ステップＳ３５，Ｓ４１のどちらにおいても、階層化処理部１１０はまず、読み出し回数テーブル１２２の全レコードの読み出し回数指標を、０より大きく１未満の定数（例えば０．９９）を乗算することで更新する。ステップＳ３５では、階層化処理部１１０は次に、読み出し回数テーブル１２２において、ステップＳ３３で算出したハッシュ値に対応付けて登録されている読み出し回数指標に、１を加算する。ステップＳ４１では、階層化処理部１１０は次に、選択したレコードに登録されている読み出し回数指標を１に書き替える。この第１の更新方法によれば、読み出し回数テーブル１２２の各レコードにおける読み出し回数指標は、小数を含み得る０より大きい値となる。また、第１の更新方法によれば、アクセス傾向が変わったときに、過去の読み出し頻度の情報に引きずられず、直近のアクセス傾向を反映してデータを配置できるという特徴がある。
【０１１２】
一方、第２の更新方法では、ステップＳ３５において、階層化処理部１１０は、読み出し回数テーブル１２２において、ステップＳ３３で算出したハッシュ値に対応付けて登録されている読み出し回数指標に、１を加算する。ステップＳ４１では、階層化処理部１１０は、ステップＳ３６で選択したレコードに登録されている読み出し回数指標に、１を加算する。この第２の更新方法によれば、読み出し回数テーブル１２２の各レコードにおける読み出し回数指標は、１以上の整数となる。
【０１１３】
第１の更新方法と第２の更新方法のどちらでも、簡易な処理により、読み出し回数テーブル１２２を、直近の所定期間における読み出し回数が多い順に一定数のハッシュ値が登録された状態と、ほぼ同等の状態にすることができる。
【０１１４】
図１５は、ユーザボリュームへの書き込み処理手順の例を示すフローチャートである。
［ステップＳ６１］サーバ装置１００の階層化処理部１１０は、ホスト装置４００から、ユーザボリューム１３０に対するデータの書き込み要求を受信する。このとき、ホスト装置４００からは、ユーザボリューム１３０における書き込み先ブロックのＬＢＡが指定されるとともに、書き込みデータが送信される。階層化処理部１１０は、受信した書き込みデータに基づいて、ハッシュ値を算出する。
【０１１５】
［ステップＳ６２］階層化処理部１１０は、算出したハッシュ値が読み出し回数テーブル１２２に登録されているかを判定する。登録されている場合、ステップＳ６４の処理が実行され、登録されていない場合、ステップＳ６３の処理が実行される。
【０１１６】
［ステップＳ６３］階層化処理部１１０は、ユーザボリュームテーブル１２１から、ユーザボリューム１３０における書き込み先ブロックのＬＢＡに対応付けて登録されたアクセス回数を抽出する。階層化処理部１１０は、抽出したアクセス回数が所定のしきい値以上かを判定する。しきい値以上の場合、ステップＳ６４の処理が実行され、しきい値未満の場合、ステップＳ６７の処理が実行される。
【０１１７】
［ステップＳ６４］階層化処理部１１０は、書き込みデータをＳＳＤボリューム２３１に書き込む処理を実行する。
ここで、ホスト装置４００から書き込み済みブロックへのデータの上書きが要求されている場合、ユーザボリュームテーブル１２１のレコードのうち、ユーザボリューム１３０における書き込み先ブロックのＬＢＡが登録されたレコードには、デバイス種別と割り当て先ボリュームのＬＢＡとがすでに登録されている。デバイス種別が「ＳＳＤ」の場合、階層化処理部１１０は、このレコードに登録された割り当て先ボリュームのＬＢＡを書き込み先として指定して、ＳＳＤボリューム２３１に対する書き込みデータの書き込みをＣＭ２００ａに要求する。
【０１１８】
一方、デバイス種別が「ＨＤＤ」の場合、階層化処理部１１０は、ＳＳＤボリューム２３１の未書き込みブロックのＬＢＡをＣＭ２００ａに問い合わせる。ＣＭ２００ａの重複除去処理部２１０から該当ブロックのＬＢＡが通知されると、階層化処理部１１０は、通知されたＬＢＡを書き込み先として指定して、ＳＳＤボリューム２３１に対する書き込みデータの書き込みをＣＭ２００ａに要求する。また、階層化処理部１１０は、ユーザボリュームテーブル１２１から、ユーザボリューム１３０の書き込み先ブロックのＬＢＡに対応付けられている割り当て先ボリュームのＬＢＡを抽出する。階層化処理部１１０は、抽出したＬＢＡを指定して、ＨＤＤボリューム３３１からのデータの消去をＣＭ３００ａに要求する。ＣＭ３００ａの重複除去処理部３１０は、ＨＤＤボリューム３３１における指定されたＬＢＡのブロックに格納されているデータを消去する。さらに、階層化処理部１１０は、ユーザボリュームテーブル１２１のレコードのうち、ユーザボリューム１３０における書き込み先ブロックのＬＢＡが登録されたレコードを、次のように更新する。階層化処理部１１０は、デバイス種別の項目に「ＳＳＤ」を登録し、割り当て先ボリュームのＬＢＡの項目に、重複除去処理部２１０から通知されたＳＳＤボリューム２３１のＬＢＡを登録する。
【０１１９】
また、ホスト装置４００からの未書き込みブロックへのデータの書き込みが要求されている場合、階層化処理部１１０は、上記と同様の手順で、ＣＭ２００ａの重複除去処理部２１０からＳＳＤボリューム２３１の未書き込みブロックのＬＢＡの通知を受ける。階層化処理部１１０は、通知されたＬＢＡを書き込み先として指定して、ＳＳＤボリューム２３１に対する書き込みデータの書き込みをＣＭ２００ａに要求する。また、階層化処理部１１０は、ユーザボリュームテーブル１２１のレコードのうち、ユーザボリューム１３０における書き込み先ブロックのＬＢＡが登録されたレコードを、次のように更新する。階層化処理部１１０は、デバイス種別の項目に「ＳＳＤ」を登録し、割り当て先ボリュームのＬＢＡの項目に、重複除去処理部２１０から通知されたＳＳＤボリューム２３１のＬＢＡを登録する。
【０１２０】
［ステップＳ６５］階層化処理部１１０は、ユーザボリュームテーブル１２１においてユーザボリューム１３０の書き込み先ブロックのＬＢＡに対応付けられたアクセス回数を、インクリメントする。
【０１２１】
［ステップＳ６６］階層化処理部１１０は、ＨＤＤボリューム３３１に書き込まれたデータのうち、ステップＳ６１で算出したハッシュ値に対応するすべてのデータを、ＳＳＤボリューム２３１に移動させる処理を実行する。この処理の詳細については、図１６で説明する。
【０１２２】
［ステップＳ６７］階層化処理部１１０は、書き込みデータをＨＤＤボリューム３３１に書き込む処理を実行する。この処理は、ステップＳ６４において書き込み先をＳＳＤボリューム２３１からＨＤＤボリューム３３１に変更した処理と同様であるので、詳しい説明を省略する。
【０１２３】
［ステップＳ６８］階層化処理部１１０は、ユーザボリュームテーブル１２１においてユーザボリューム１３０の書き込み先ブロックのＬＢＡに対応付けられたアクセス回数を、インクリメントする。
【０１２４】
［ステップＳ６９］階層化処理部１１０は、ＳＳＤボリューム２３１に書き込まれたデータのうち、ステップＳ６１で算出したハッシュ値に対応するすべてのデータを、ＨＤＤボリューム３３１に移動させる処理を実行する。この処理の詳細については、図１７で説明する。
【０１２５】
以上の図１５の処理によれば、ホスト装置４００から書き込みが要求されたデータに基づくハッシュ値が読み出し回数テーブル１２２に登録されている場合、これと同じ内容のデータに対する読み出し頻度が高いと判定される。この場合、書き込みデータがＳＳＤボリューム２３１に書き込まれるとともに、ユーザボリューム１３０における同じデータが書き込まれた他のブロックについても、データがＨＤＤボリューム３３１からＳＳＤボリューム２３１に移動される。これにより、ユーザボリューム１３０上の異なるブロックから同じデータが連続して読み出される場合の読み出し速度を向上させることができる。
【０１２６】
図１６は、ＨＤＤボリュームからＳＳＤボリュームへのデータ移動処理手順の例を示すフローチャートである。この図１６の処理は、例えば、図１５のステップＳ６６の処理に対応する。
【０１２７】
［ステップＳ８１］サーバ装置１００の階層化処理部１１０は、ハッシュ値をＣＭ３００ａに対して指定し、指定したハッシュ値に対応するデータが格納されたＨＤＤボリューム３３１上のブロックのＬＢＡを、ＣＭ３００ａに問い合わせる。図１６の処理が図１５のステップＳ６６に対応する場合、指定されるハッシュ値は、図１５のステップＳ６１で算出された値である。
【０１２８】
ＣＭ３００ａの重複除去処理部３１０は、指定されたハッシュ値を用いてハッシュテーブル３２２を検索し、このハッシュ値に対応付けられたＨＤＤプール３３２のＬＢＡを抽出する。さらに、重複除去処理部３１０は、抽出したＬＢＡに対応付けられたＨＤＤボリューム３３１のＬＢＡを、ＨＤＤボリュームテーブル３２１から抽出する。重複除去処理部３１０は、上記の問い合わせの応答として、ＨＤＤボリュームテーブル３２１から抽出したＨＤＤボリューム３３１のＬＢＡを、サーバ装置１００の階層化処理部１１０に送信する。階層化処理部１１０は、送信されたＨＤＤボリューム３３１のＬＢＡを受信する。
【０１２９】
［ステップＳ８２］階層化処理部１１０は、ユーザボリュームテーブル１２１から、デバイス種別が「ＨＤＤ」で、割り当て先ボリュームのＬＢＡがステップＳ８１で受信したＨＤＤボリューム３３１のＬＢＡに一致するレコードを特定する。特定されたレコードに登録されたユーザボリューム１３０のＬＢＡは、ステップＳ８１で指定したハッシュ値に対応するデータが書き込まれているブロックを指す。すなわち、ステップＳ８２では、ユーザボリューム１３０のＬＢＡの中から、ハッシュ値に対応するデータが書き込まれているブロックのＬＢＡが判別される。
【０１３０】
［ステップＳ８３］階層化処理部１１０は、ステップＳ８２で判別されたユーザボリューム１３０のＬＢＡを１つずつ選択しながら、ステップＳ８５までのデータ移動ループを繰り返し実行する。
【０１３１】
［ステップＳ８４］階層化処理部１１０は、選択したＬＢＡに対応付けられた割り当て先ボリュームのＬＢＡをＣＭ３００ａに指定して、そのＬＢＡに対応するＨＤＤボリューム３３１のブロックからのデータ読み出しをＣＭ３００ａに要求する。ＣＭ３００ａの重複除去処理部３１０からは、要求したデータが送信される。
【０１３２】
階層化処理部１１０は、ＣＭ３００ａから受信したデータをＳＳＤボリューム２３１に書き込むようにＣＭ２００ａに要求する。ＣＭ２００ａの重複除去処理部２１０は、ＳＳＤボリューム２３１の空きブロックに受信したデータを書き込む処理を実行するとともに、その空きブロックのＬＢＡを階層化処理部１１０に通知する。階層化処理部１１０は、受信したＬＢＡによって、選択したＬＢＡに対応付けられた割り当て先ボリュームのＬＢＡを更新する。また、選択したＬＢＡに対応付けられたデバイス種別を「ＳＳＤ」に更新する。
【０１３３】
［ステップＳ８５］階層化処理部１１０は、選択したＬＢＡに対応付けられた割り当て先ボリュームのＬＢＡをＣＭ３００ａに指定して、そのＬＢＡに対応するＨＤＤボリューム３３１のブロックに書き込まれたデータの消去をＣＭ３００ａに要求する。ＣＭ３００ａの重複除去処理部３１０は、要求されたデータを消去する。これにより、該当データの移動が完了する。
【０１３４】
［ステップＳ８６］階層化処理部１１０は、ステップＳ８２で判別されたユーザボリューム１３０のＬＢＡのすべてについて処理済みになった場合、処理を終了する。
図１７は、ＳＳＤボリュームからＨＤＤボリュームへのデータ移動処理手順の例を示すフローチャートである。この図１７の処理は、例えば、図１４のステップＳ３８および図１５のステップＳ６９の処理に対応する。
【０１３５】
［ステップＳ９１］サーバ装置１００の階層化処理部１１０は、ハッシュ値をＣＭ３００ａに対して指定し、指定したハッシュ値に対応するデータが格納されたＳＳＤボリューム２３１上のブロックのＬＢＡを、ＣＭ２００ａに問い合わせる。図１７の処理が図１４のステップＳ３８に対応する場合、指定されるハッシュ値は、図１４のステップＳ３３で算出された値である。また、図１７の処理が図１５のステップＳ６９に対応する場合、指定されるハッシュ値は、図１５のステップＳ６１で算出された値である。
【０１３６】
ＣＭ２００ａの重複除去処理部２１０は、指定されたハッシュ値を用いてハッシュテーブル２２２を検索し、このハッシュ値に対応付けられたＳＳＤプール２３２のＬＢＡを抽出する。さらに、重複除去処理部２１０は、抽出したＬＢＡに対応付けられたＳＳＤボリューム２３１のＬＢＡを、ＳＳＤボリュームテーブル２２１から抽出する。重複除去処理部２１０は、上記の問い合わせの応答として、ＳＳＤボリュームテーブル２２１から抽出したＳＳＤボリューム２３１のＬＢＡを、サーバ装置１００の階層化処理部１１０に送信する。階層化処理部１１０は、送信されたＳＳＤボリューム２３１のＬＢＡを受信する。
【０１３７】
［ステップＳ９２］階層化処理部１１０は、ユーザボリュームテーブル１２１から、デバイス種別が「ＳＳＤ」で、割り当て先ボリュームのＬＢＡがステップＳ９１で受信したＳＳＤボリューム２３１のＬＢＡに一致するレコードを特定する。特定されたレコードに登録されたユーザボリューム１３０のＬＢＡは、ステップＳ９１で指定したハッシュ値に対応するデータが書き込まれているブロックを指す。すなわち、ステップＳ９２では、ユーザボリューム１３０のＬＢＡの中から、ハッシュ値に対応するデータが書き込まれているブロックのＬＢＡが判別される。
【０１３８】
［ステップＳ９３］階層化処理部１１０は、ステップＳ９２で判別されたユーザボリューム１３０のＬＢＡを１つずつ選択しながら、ステップＳ９５までのデータ移動ループを繰り返し実行する。
【０１３９】
［ステップＳ９４］階層化処理部１１０は、選択したＬＢＡに対応付けられた割り当て先ボリュームのＬＢＡをＣＭ２００ａに指定して、そのＬＢＡに対応するＳＳＤボリューム２３１のブロックからのデータ読み出しをＣＭ２００ａに要求する。ＣＭ２００ａの重複除去処理部２１０からは、要求したデータが送信される。
【０１４０】
階層化処理部１１０は、ＣＭ２００ａから受信したデータをＨＤＤボリューム３３１に書き込むようにＣＭ３００ａに要求する。ＣＭ３００ａの重複除去処理部３１０は、ＨＤＤボリューム３３１の空きブロックに受信したデータを書き込む処理を実行するとともに、その空きブロックのＬＢＡを階層化処理部１１０に通知する。階層化処理部１１０は、受信したＬＢＡによって、選択したＬＢＡに対応付けられた割り当て先ボリュームのＬＢＡを更新する。また、選択したＬＢＡに対応付けられたデバイス種別を「ＨＤＤ」に更新する。
【０１４１】
［ステップＳ９５］階層化処理部１１０は、選択したＬＢＡに対応付けられた割り当て先ボリュームのＬＢＡをＣＭ２００ａに指定して、そのＬＢＡに対応するＳＳＤボリューム２３１のブロックに書き込まれたデータの消去をＣＭ２００ａに要求する。ＣＭ２００ａの重複除去処理部２１０は、要求されたデータを消去する。これにより、該当データの移動が完了する。
【０１４２】
［ステップＳ９６］階層化処理部１１０は、ステップＳ９２で判別されたユーザボリューム１３０のＬＢＡのすべてについて処理済みになった場合、処理を終了する。
図１８、図１９は、ＳＳＤボリュームへの書き込み処理手順の例を示すフローチャートである。
【０１４３】
［ステップＳ１１１］ＣＭ２００ａの重複除去処理部２１０は、サーバ装置１００の階層化処理部１１０から、ＳＳＤボリューム２３１に対するデータの書き込み要求を受ける。重複除去処理部２１０は、書き込みが要求されたデータを基にハッシュ値を算出する。
【０１４４】
［ステップＳ１１２］重複除去処理部２１０は、ＳＳＤボリューム２３１における書き込み先のブロックを示すＬＢＡが、書き込み回数テーブル２２３に登録されているかを判定する。登録されていない場合、ステップＳ１１３の処理が実行され、登録されている場合、ステップＳ１２１の処理が実行される。
【０１４５】
［ステップＳ１１３］重複除去処理部２１０は、ステップＳ１１１で算出したハッシュ値がハッシュテーブル２２２に登録されているかを判定する。登録されている場合、ステップＳ１１７の処理が実行され、登録されていない場合、ステップＳ１１４の処理が実行される。
【０１４６】
［ステップＳ１１４］重複除去処理部２１０は、書き込みが要求されたデータをＳＳＤプール２３２の空きブロックに格納する。
［ステップＳ１１５］重複除去処理部２１０は、ＳＳＤボリュームテーブル２２１を更新する。具体的には、重複除去処理部２１０は、ＳＳＤボリュームテーブル２２１に対して、ＳＳＤボリューム２３１における書き込み先のブロックを示すＬＢＡと、ステップＳ１１４でデータを格納したＳＳＤプール２３２のブロックを示すＬＢＡとを対応付けて登録する。
【０１４７】
［ステップＳ１１６］重複除去処理部２１０は、ハッシュテーブル２２２に新たなレコードを作成する。重複除去処理部２１０は、作成したレコードに、ステップＳ１１１で算出したハッシュ値と、ステップＳ１１４でデータを格納したＳＳＤプール２３２のブロックを示すＬＢＡとを対応付けて登録する。
【０１４８】
［ステップＳ１１７］ステップＳ１１３でＹｅｓと判定された場合、重複除去処理部２１０は、ＳＳＤプール２３２へのデータの格納を行わずに、ＳＳＤボリュームテーブル２２１を更新する。具体的には、重複除去処理部２１０は、ステップＳ１１１で算出したハッシュ値に対応付けられたＳＳＤプール２３２のＬＢＡを、ハッシュテーブル２２２から抽出する。重複除去処理部２１０は、ＳＳＤボリュームテーブル２２１に対して、ＳＳＤボリューム２３１における書き込み先のブロックを示すＬＢＡと、ハッシュテーブル２２２から抽出されたＳＳＤプール２３２のＬＢＡとを対応付けて登録する。
【０１４９】
［ステップＳ１１８］重複除去処理部２１０は、書き込み回数テーブル２２３を更新する書き込み回数記録処理を実行する。この処理は、図１２で説明した通りである。
［ステップＳ１２１］重複除去処理部２１０は、ステップＳ１１１で算出したハッシュ値が、ハッシュテーブル２２２に登録されているかを判定する。登録されている場合、ステップＳ１２２の処理が実行され、登録されていない場合、ステップＳ１２４の処理が実行される。
【０１５０】
［ステップＳ１２２］重複除去処理部２１０は、算出したハッシュ値に対応付けられているＳＳＤプール２３２のＬＢＡをハッシュテーブル２２２から抽出する。重複除去処理部２１０は、抽出したＬＢＡを用いてＳＳＤボリュームテーブル２２１を検索し、ＳＳＤボリューム２３１における書き込み先のブロック以外のブロックに、抽出したＳＳＤプール２３２のＬＢＡが割り当てられているかを判定する。割り当てられている場合、ステップＳ１２３の処理が実行され、割り当てられていない場合、ステップＳ１２４の処理が実行される。
【０１５１】
［ステップＳ１２３］重複除去処理部２１０は、ＳＳＤボリューム２３１における書き込み先のブロックに、ＳＳＤプール２３２の空きブロックを示す新たなＬＢＡを割り当てる。重複除去処理部２１０は、割り当てたＬＢＡが示すＳＳＤプール２３２のブロックに、書き込みが要求されたデータを格納する。また、重複除去処理部２１０は、ＳＳＤボリュームテーブル２２１において、ＳＳＤボリューム２３１における書き込み先ブロックのＬＢＡに対して、新たに割り当てられたＳＳＤプール２３２のブロックのＬＢＡを対応付けて登録する。この後、ステップＳ１１８の処理が実行される。
【０１５２】
［ステップＳ１２４］重複除去処理部２１０は、算出したハッシュ値に対応付けられているＳＳＤプール２３２のＬＢＡをハッシュテーブル２２２から抽出する。重複除去処理部２１０は、抽出したＬＢＡが示すＳＳＤプール２３２のブロックに、書き込みが要求されたデータを上書きする。この後、ステップＳ１１８の処理が実行される。
【０１５３】
上記のステップＳ１２１〜Ｓ１２４の処理により、図１１で説明した処理が実行される。すなわち、ステップＳ１２３では、重複除去が行われずに、データの書き込み先としてＳＳＤプール２３２から新たなブロックが割り当てられる。その後にさらにＳＳＤボリューム２３１上の同じブロックのデータが更新されると、ステップＳ１２４の処理により、ＳＳＤプール２３２における対応するブロックにデータが上書きされる。このように、ＳＳＤボリューム２３１における書き込み頻度の高いブロックに、ＳＳＤプール２３２から固有のブロックが割り当てられ、そのブロックに対してさらなる更新データが格納されることで、ＳＳＤプール２３２の空きブロックが短時間で枯渇する事態を回避できる。したがって、ＳＳＤプール２３２の使用効率が高まり、ユーザボリューム１３０のアクセス性能を向上させることができる。
【０１５４】
図２０は、ＨＤＤボリュームへの書き込み処理手順の例を示すフローチャートである。
［ステップＳ１４１］ＣＭ３００ａの重複除去処理部３１０は、サーバ装置１００の階層化処理部１１０から、ＨＤＤボリューム３３１に対するデータの書き込み要求を受ける。重複除去処理部３１０は、書き込みが要求されたデータを基にハッシュ値を算出する。
【０１５５】
［ステップＳ１４２］重複除去処理部３１０は、ステップＳ１４１で算出したハッシュ値がハッシュテーブル３２２に登録されているかを判定する。登録されている場合、ステップＳ１４６の処理が実行され、登録されていない場合、ステップＳ１４３の処理が実行される。
【０１５６】
［ステップＳ１４３］重複除去処理部３１０は、書き込みが要求されたデータをＨＤＤプール３３２の空きブロックに格納する。
［ステップＳ１４４］重複除去処理部３１０は、ＨＤＤボリュームテーブル３２１を更新する。具体的には、重複除去処理部３１０は、ＨＤＤボリュームテーブル３２１に対して、ＨＤＤボリューム３３１における書き込み先のブロックを示すＬＢＡと、ステップＳ１４３でデータを格納したＨＤＤプール３３２のブロックを示すＬＢＡとを対応付けて登録する。
【０１５７】
［ステップＳ１４５］重複除去処理部３１０は、ハッシュテーブル３２２に新たなレコードを作成する。重複除去処理部３１０は、作成したレコードに、ステップＳ１４１で算出したハッシュ値と、ステップＳ１４３でデータを格納したＨＤＤプール３３２のブロックを示すＬＢＡとを対応付けて登録する。
【０１５８】
［ステップＳ１４６］ステップＳ１４２でＹｅｓと判定された場合、重複除去処理部３１０は、ＨＤＤプール３３２へのデータの格納を行わずに、ＨＤＤボリュームテーブル３２１を更新する。具体的には、重複除去処理部３１０は、ステップＳ１４１で算出したハッシュ値に対応付けられたＨＤＤプール３３２のＬＢＡを、ハッシュテーブル３２２から抽出する。重複除去処理部３１０は、ＨＤＤボリュームテーブル３２１に対して、ＨＤＤボリューム３３１における書き込み先のブロックを示すＬＢＡと、ハッシュテーブル３２２から抽出されたＨＤＤプール３３２のＬＢＡとを対応付けて登録する。
【０１５９】
なお、上記の第２の実施の形態では、読み出し回数テーブル１２２に基づくＨＤＤボリューム３３１からＳＳＤボリューム２３１へのデータの移動を、ユーザボリューム１３０に対する書き込み要求を契機として実行した。しかし、例えば、ユーザボリューム１３０に対する読み出し要求を契機としてデータが移動されてもよい。あるいは、書き込み要求や読み出し要求とは無関係に、バックグラウンドの処理としてデータ移動が実行されてもよい。
【０１６０】
図２１は、バックグラウンドでのデータ移動処理手順の例を示すフローチャートである。サーバ装置１００の階層化処理部１１０は、例えば、以下の処理を定期的に実行する。
［ステップＳ１６１］階層化処理部１１０は、読み出し回数テーブル１２２を参照し、ＨＤＤボリューム３３１に格納されているデータに対応するハッシュ値、すなわち、デバイス種別「ＨＤＤ」に対応付けられたハッシュ値があるかを判定する。該当するハッシュ値がある場合、ステップＳ１６２の処理が実行される。該当するハッシュ値がない場合、処理を終了する。
【０１６１】
［ステップＳ１６２］階層化処理部１１０は、ステップＳ１６１での該当するハッシュ値を用いて、図１６に示したＨＤＤボリューム３３１からＳＳＤボリューム２３１へのデータ移動処理を実行する。
【０１６２】
〔第３の実施の形態〕
図２２は、第３の実施の形態に係るストレージシステムの構成例を示す図である。なお、図２２では、図４に示した構成要素に対応する構成要素には同じ符号を付して示し、その説明を省略する。
【０１６３】
図２２に示すストレージシステムは、ストレージ装置６００とホスト装置４００を含む。ストレージ装置６００は、ＣＭ６００ａとＤＥ６００ｂを有する。ＤＥ６００ｂには、１台以上のＳＳＤと１台以上のＨＤＤが搭載されている。ＣＭ６００ａは、階層化処理部１１０と重複除去処理部２１０，３１０を有する。また、ＣＭ６００ａは、図４の記憶部１２０，２２０，３２０に記憶されている情報を記憶する記憶部６３０を有する。
【０１６４】
なお、ＣＭ６００ａは、例えば、ＣＭ２００ａ，３００ａと同様のハードウェア構成によって実現される。階層化処理部１１０と重複除去処理部２１０，３１０の処理は、例えば、ＣＭ６００ａが備えるプロセッサが所定のアプリケーションプログラムを実行することで実現される。記憶部６３０は、ＣＭ６００ａが備える記憶装置の記憶領域によって実現される。また、第３の実施の形態では、ＳＳＤプール２３２は、ＤＥ６００ｂ内の１台以上のＳＳＤの記憶領域によって実現され、ＨＤＤプール３３２は、ＤＥ６００ｂ内の１台以上のＨＤＤの記憶領域によって実現される。
【０１６５】
以上の第３の実施の形態によれば、第２の実施の形態のサーバ装置１００およびＣＭ２００ａ，３００ａ，６００ａの機能が、１台のＣＭ６００ａによって実現される。
なお、上記の各実施の形態に示した装置（例えば、ストレージ制御装置１０、サーバ装置１００、ＣＭ２００ａ，３００ａ）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１６６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１６８】
１０  ストレージ制御装置
１１  記憶部
１１ａ  読み出し頻度情報
１２  制御部
１２ａ  論理ボリューム
２０，３０  ストレージ装置
２１，３１  記憶装置
２２，３２  制御部
【図１】
2017211920.tif 000003
【図２】
2017211920.tif 000004
【図３】
2017211920.tif 000005
【図４】
2017211920.tif 000006
【図５】
2017211920.tif 000007
【図６】
2017211920.tif 000008
【図７】
2017211920.tif 000009
【図８】
2017211920.tif 000010
【図９】
2017211920.tif 000011
【図１０】
2017211920.tif 000012
【図１１】
2017211920.tif 000013
【図１２】
2017211920.tif 000014
【図１３】
2017211920.tif 000015
【図１４】
2017211920.tif 000016
【図１５】
2017211920.tif 000017
【図１６】
2017211920.tif 000018
【図１７】
2017211920.tif 000019
【図１８】
2017211920.tif 000020
【図１９】
2017211920.tif 000021
【図２０】
2017211920.tif 000022
【図２１】
2017211920.tif 000023
【図２２】
2017211920.tif 000024