(57)【要約】【課題】情報処理装置を効率的に使用する。【解決手段】第２の記憶装置３０におけるアクセス集中発生領域のデータを第１の記憶装置２０に移動する場合の第１の想定効果と、移動を行なわずに第１の記憶装置２０のデータのコピーを第２の記憶装置３０に格納してキャッシュとして用いる場合の第２の想定効果とを比較し、第１の想定効果が第２の想定効果よりも大きい場合に、第２の記憶装置におけるアクセス集中が発生した領域のデータを第１の記憶装置２０に移動させる。【選択図】図１
2019191886.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置と、前記第１の記憶装置とは異なる性能の第２の記憶装置との間で、データを移動させる情報処理装置であって、
前記第２の記憶装置におけるアクセス集中発生領域のデータを前記第１の記憶装置に移動する場合の第１の想定効果と、前記移動を行なわずに前記第１の記憶装置のデータのコピーを前記第２の記憶装置に格納してキャッシュとして用いる場合の第２の想定効果とを比較し、
比較の結果、前記第１の想定効果が前記第２の想定効果よりも大きい場合に、前記第２の記憶装置におけるアクセス集中が発生した領域のデータを前記第１の記憶装置に移動させることを判定する
ことを特徴とする、情報処理装置。
【請求項２】
前記第２の記憶装置から前記第１の記憶装置に対する前記データのコピーの転送を所定のデータサイズのページ単位で行なうとともに、
前記第２の記憶装置におけるアクセス集中発生領域から前記第１の記憶装置への前記データの移動を前記ページ単位で管理する
ことを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記第２の記憶装置における前記アクセス集中発生領域のデータを前記第１の記憶装置に移動させる場合に、
前記アクセス集中発生領域における、前記第２の記憶装置から前記第１の記憶装置への移動が未完了の全てのデータ量に相当する数のページを確保し、確保した前記ページを、前記第２の記憶装置から前記第１の記憶装置へのデータ移動を管理するキューに設定する
ことを特徴とする、請求項２記載の情報処理装置。
【請求項４】
前記第１の想定効果を、前記第２の記憶装置から前記第１の記憶装置への１ページ分のデータを移動させるオーバヘッドと、アクセス集中領域における以後の推定継続時間と、アクセス集中領域におけるアクセス数の全アクセス数に対する割合，データ置換時の１アクセス当たりの応答時間増加量および、データ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
ことを特徴とする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第２の想定効果を、アクセス集中領域における以後の推定継続時間、全てのアクセスに対する前記アクセス集中領域へのアクセス数の比およびデータ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
ことを特徴とする、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
第１の記憶装置と、前記第１の記憶装置とは異なる性能の第２の記憶装置との間で、データを移動させる情報処理装置において、
前記第２の記憶装置におけるアクセス集中発生領域のデータを前記第１の記憶装置に移動する場合の第１の想定効果と、前記移動を行なわずに前記第１の記憶装置のデータのコピーを前記第２の記憶装置に格納してキャッシュとして用いる場合の第２の想定効果とを比較し、
比較の結果、前記第１の想定効果が前記第２の想定効果よりも大きい場合に、前記第２の記憶装置におけるアクセス集中が発生した領域のデータを前記第１の記憶装置に移動させることを判定する
ことを特徴とする、情報処理方法。
【請求項７】
第１の記憶装置と、前記第１の記憶装置とは異なる性能の第２の記憶装置との間で、データを移動させる情報処理装置のプロセッサに、
前記第２の記憶装置におけるアクセス集中発生領域のデータを前記第１の記憶装置に移動する場合の第１の想定効果と、前記移動を行なわずに前記第１の記憶装置のデータのコピーを前記第２の記憶装置に格納してキャッシュとして用いる場合の第２の想定効果とを比較し、
比較の結果、前記第１の想定効果が前記第２の想定効果よりも大きい場合に、前記第２の記憶装置におけるアクセス集中が発生した領域のデータを前記第１の記憶装置に移動させる
処理を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
データを格納するストレージシステムとして、複数の記憶媒体（記憶装置）を組み合わせた階層ストレージシステムが用いられることがある。複数の記憶媒体としては、例えば高速アクセスが可能であるが比較的低容量で高価格なＳＳＤ（Solid State Drive）、及び大容量で低価格であるが比較的低速なＨＤＤ（Hard Disk Drive）が挙げられる。なお、このような階層ストレージシステムにおいて、ＳＳＤを階層ＳＳＤという場合がある。
【０００３】
階層ストレージシステムでは、アクセス頻度が低い記憶領域のデータをＨＤＤに配置する一方、アクセス頻度が高い記憶領域のデータを階層ＳＳＤに配置することで、階層ＳＳＤの使用効率を高め、システム全体の性能を高めることができる。従って、階層ストレージシステムの性能を向上させるには、アクセス頻度が高い記憶領域のデータを効率的に階層ＳＳＤに配置することが望ましい。
【０００４】
アクセス頻度が高いデータを階層ＳＳＤに配置する手法としては、例えば、前日のアクセス頻度に応じて、１日単位でアクセス頻度が高い領域を階層ＳＳＤに配置する手法が知られている。
【０００５】
すなわち、階層ＳＳＤにおいてはＩＯ（Input Output）アクセス集中を処理し、ＨＤＤにおいて非ＩＯアクセス集中を処理する。
【０００６】
階層ＳＳＤの記憶領域は、例えば、システムの初期化時に静的に割り当てられ、ＩＯアクセス集中が発生した場合に使用される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１５／１１４８０９号
【特許文献２】特開２０１６−１８４３２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、階層ストレージシステムにおいて、ＩＯアクセス集中は常に発生するわけではないので、予め割り当てられた階層ＳＳＤの記憶領域は常に使用されるわけではない。
【０００９】
従って、従来の階層ストレージシステムにおいては、階層ＳＳＤの記憶領域を効率的に使用することができないという課題がある。
【００１０】
１つの側面では、本発明は、記憶装置を効率的に使用できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
このため、この情報処理装置は、第１の記憶装置と、前記第１の記憶装置とは異なる性能の第２の記憶装置との間で、データを移動させる情報処理装置であって、前記第２の記憶装置におけるアクセス集中発生領域のデータを前記第１の記憶装置に移動する場合の第１の想定効果と、前記移動を行なわずに前記第１の記憶装置のデータのコピーを前記第２の記憶装置に格納してキャッシュとして用いる場合の第２の想定効果とを比較する。比較の結果、前記第１の想定効果が前記第２の想定効果よりも大きい場合に、前記第２の記憶装置におけるアクセス集中が発生した領域のデータを前記第１の記憶装置に移動させることを判定する。
【発明の効果】
【００１２】
一実施形態によれば、記憶装置を効率的に使用できる。
【図面の簡単な説明】
【００１３】
【図１】一実施形態の一例としての階層ストレージシステムの機能構成例を示す図である。
【図２】ＨＤＤの記憶領域におけるＩＯアクセス集中の状態を示す図である。
【図３】実施形態の一例としての階層ストレージシステムにおけるビットマップカウンタを例示する図である。
【図４】実施形態の一例としての階層ストレージシステムにおけるＩＯアクセス集中判定部による処理を説明するための図である
【図５】実施形態の一例としての階層ストレージシステムにおけるサブＬＵＮキャッシング情報を例示する図である。
【図６】図１に示す階層ストレージ制御装置のハードウェア構成例を示す図である。
【図７】実施形態の一例としての階層ストレージシステムにおける階層管理部の処理を説明するフローチャートである。
【図８】実施形態の一例としての階層ストレージシステムにおけるキャッシュドライバのＩＯアクセス集中判定部による処理を説明するフローチャートである。
【図９】実施形態の一例としての階層ストレージシステムにおけるキャッシュドライバのＩＯアクセス集中判定部による処理を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本情報処理装置，情報処理方法およびプログラムにかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１５】
（Ａ）構成
（Ａ−１）階層ストレージ制御装置の機能構成例
図１は一実施形態の一例としての階層ストレージシステム１の機能構成例を示す図である。図１に示すように、階層ストレージシステム１は、例示的に、階層ストレージ制御装置１０、１以上（図１では１つ）のＳＳＤ２０、及び１以上（図１では１つ）のＨＤＤ３０を備える。
【００１６】
階層ストレージシステム１は、複数の記憶装置をそなえるストレージ装置の一例である。階層ストレージシステム１は、ＳＳＤ２０及びＨＤＤ３０等の互いに性能の異なる複数の記憶装置を搭載し、図示しないホスト装置に対して階層化された記憶装置の記憶領域を提供する。一例として、階層ストレージシステム１は、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を用いて複数の記憶装置にデータを分散又は冗長化した状態で保存し、ホスト装置に対してＲＡＩＤグループに基づく１以上のストレージボリューム（ＬＵＮ；Logical Unit Number）を提供してもよい。
【００１７】
階層ストレージ制御装置（情報処理装置）１０は、ネットワークを介したホスト装置等からのＩＯ要求に応じて、ＳＳＤ２０及びＨＤＤ３０へのリード又はライト等の種々のアクセスを行なう。階層ストレージ制御装置１０としては、ＰＣ（Personal Computer）やサーバ、又はコントローラモジュール（ＣＭ；Controller Module）等の情報処理装置（コンピュータ）が挙げられる。
【００１８】
一実施形態にかかる階層ストレージ制御装置１０は、ＩＯ要求のアクセス頻度に応じて、アクセス頻度が低い領域をＨＤＤ３０に配置する一方、アクセス頻度が高い領域をＳＳＤ２０に配置する、動的階層制御を行なう。この動的階層制御をＯＴＦ−ＡＳＴ（On The Fly - Automated Storing Tiering）といってもよい。階層ストレージ制御装置１０は、ＳＳＤ２０とＨＤＤ３０との間で、複数のセグメント（単位領域）におけるデータを移動させる情報処理装置の一例である。
【００１９】
なお、階層ストレージ制御装置１０はＬｉｎｕｘ（登録商標）に実装されているモジュール（プログラム）であるｄｅｖｉｃｅ−ｍａｐｐｅｒの機能を用いてもよい。例えば階層ストレージ制御装置１０は、動的階層制御において、ｄｅｖｉｃｅ−ｍａｐｐｅｒによりストレージボリュームをセグメント（サブＬＵＮ；Sub-LUN）単位で監視し、高負荷となったセグメントのデータをＨＤＤ３０からＳＳＤ２０へ移動することで高負荷セグメントへのＩＯを処理することができる。
【００２０】
ここで、セグメントは、ストレージボリュームを所定のサイズで分割した領域であり、動的階層制御における階層移動の最小単位の領域（単位領域）である。例えばセグメントは１ＧＢ（Byte）程度のサイズとすることができる。
【００２１】
ＳＳＤ２０は、種々のデータやプログラム等を格納する記憶装置の一例であり、ＨＤＤ３０は、ＳＳＤ２０とは異なる性能の（例えばより低速な）記憶装置の一例である。一実施形態において、互いに異なる記憶装置（以下、便宜上、第１及び第２の記憶装置と表記する場合がある）として、ＳＳＤ２０等の半導体ドライブ装置及びＨＤＤ３０等の磁気ディスク装置をそれぞれ例に挙げているが、これらに限定されるものではない。第１及び第２の記憶装置として、例えばリード／ライトの速度差等の互いに性能差のある種々の記憶装置が用いられてもよい。
【００２２】
ＳＳＤ２０及びＨＤＤ３０は、ストレージボリューム上のセグメントのデータを格納可能な記憶領域を含み、階層ストレージ制御装置１０は、セグメント単位でＳＳＤ２０−ＨＤＤ３０間の領域移動を制御する。
【００２３】
なお、図１の例では、階層ストレージシステム１がそれぞれ１つのＳＳＤ２０及びＨＤＤ３０をそなえるものとしているが、これに限定されるものではなく、複数のＳＳＤ２０及び複数のＨＤＤ３０をそなえてもよい。
【００２４】
以下、上述の如き動的階層制御において、高負荷となったセグメントのデータをＨＤＤ３０から移動されるＳＳＤ２０を階層ＳＳＤ（Tiering SSD）２０という場合がある。
【００２５】
また、本階層ストレージシステム１においては、ＳＳＤ２０をＨＤＤ３０のキャッシュとして用いることもできる。キャッシュとして用いられるＳＳＤ２０をキャッシュＳＳＤ２０という場合がある。
【００２６】
まず、階層ストレージ制御装置１０の機能構成例について説明する。
図１に示すように、階層ストレージ制御装置１０は、例示的に、階層管理部１１、キャッシュドライバ１２，ＳＳＤドライバ１３ａ，１３ｂおよびＨＤＤドライバ１４をそなえる。なお、階層管理部１１はユーザ空間で実行されるプログラムとして実現され、キャッシュドライバ１２および，ＳＳＤドライバ１３ａ，１３ｂおよびＨＤＤドライバ１４はＯＳ（Operating System）空間で実行されるプログラムとして実現されてよい。
【００２７】
階層管理部１１は、ストレージボリュームについてトレースされたＩＯの情報に基づいて、領域移動を行なうセグメントを判定し、判定したセグメントのデータの移動をキャッシュドライバ１２に指示する。ＩＯのトレースでは、ブロックＩＯレベルでのＩＯをトレースするコマンドであるｂｌｋｔｒａｃｅが用いられてよい。なお、ｂｌｋｔｒａｃｅに代えて、ディスクＩＯの利用状況を確認するコマンドであるｉｏｓｔａｔが用いられてもよい。ｂｌｋｔｒａｃｅ及びｉｏｓｔａｔはＯＳ空間で実行される。
【００２８】
階層管理部１１は、例示的に、データ収集部１１ａ、分析部１１ｂ，移動指示部１１ｃおよび情報通知部１１ｄとしての機能をそなえる。これらの機能は、階層ストレージ制御装置１０におけるＣＰＵ１０ａ（プロセッサ；図６参照）がストレージ制御プログラム１００（図６参照）を実行することで実現可能になっている。
【００２９】
データ収集部１１ａは、例えばｂｌｋｔｒａｃｅを用いてトレースされたＩＯの情報を所定間隔（例えば１分間隔）で収集及び集計する。データ収集部１１ａは、集計結果を図示しないデータベース等にアクセスログとして格納してもよい。
【００３０】
データ収集部１１ａによるＩＯの情報の集計は、収集したＩＯの情報に基づいて、セグメントごとに、例えばセグメントを特定する情報及びＩＯ数の集計を含んでよい。
【００３１】
分析部１１ｂは、データ収集部１１ａによって収集されたＩＯアクセス情報に基づき、ＳＳＤ２０またはＨＤＤ３０におけるデータの移動元となるサブＬＵＮを選択し、選択したサブＬＵＮに関する情報を移動指示部１１ｃに通知する。
【００３２】
一例として、分析部１１ｂは、ＳＳＤ２０にデータを移動するセグメントとして、セグメント数が同時に階層移動を行なう最大のセグメント数（所定数）に達するまで、ＩＯ数が多い順にセグメントを抽出する。
【００３３】
分析部１１ｂによるセグメントの抽出は、ＩＯ数又はアクセスの集中率（全体に対するＩＯ数の割合）が所定の閾値よりも高いセグメントを抽出することを含んでもよい。また、セグメントの抽出は、ＨＤＤ３０にデータを移動するセグメントとして、例えば、ＩＯ数が上記所定数に入らなかった、又はＩＯ数若しくはアクセスの集中率が所定の閾値以下となった、ＳＳＤ２０上のセグメントを抽出することを含んでもよい。
【００３４】
さらに、セグメントの抽出は、上記のＳＳＤ２０又はＨＤＤ３０にデータを移動するセグメントの抽出条件に所定回数以上連続して該当したときに、当該セグメントを、ＳＳＤ２０又はＨＤＤ３０にデータを移動するセグメントとして抽出することを含んでもよい。なお、上記ＩＯ数等の他に、リードライト比（ｒｗ比）に基づいてセグメントが選択されてもよい。
【００３５】
上述の如く、分析部１１ｂは、ＨＤＤ３０においてＩＯアクセス集中が発生している領域を特定することができる。以下、ＨＤＤ３０においてＩＯアクセス集中が発生している領域を、ＩＯアクセス集中領域という場合がある。ＩＯアクセス集中領域は例えば、ＬＢＡ（Logical Block Addressing）によって表される。
【００３６】
また、分析部１１ｂとしての機能は、上述した機能に限定されるものではなく、種々変形して実施することができる。
【００３７】
移動指示部１１ｃは、分析部１１ｂからの指示に基づいて、キャッシュドライバ１２に、選択されたセグメントのデータの、ＨＤＤ３０からＳＳＤ２０への移動、又は、ＳＳＤ２０からＨＤＤ３０への移動を指示する。移動指示部１１ｃは、ＩＯアクセス集中領域をキャッシュドライバ１２（階層制御部１２３）に通知する。
【００３８】
移動指示部１１ｃによる移動の指示は、選択されたセグメントのストレージボリューム上のオフセットをＨＤＤ３０上のオフセットに変換して、セグメントごとにデータの移動を指示することを含んでよい。例えば、ＨＤＤ３０のセクタサイズが５１２Ｂである場合に、ボリューム上のオフセットが１ＧＢであれば、ＨＤＤ３０上でのオフセットは１×１０２４×１０２４×１０２４／５１２＝２０９７１５２となる。
【００３９】
情報通知部１１ｄは、以下の情報ａ〜ｆをキャッシュドライバ１２に通知する。
ａ：ＩＯアクセス集中領域の範囲を示すＬＢＡ範囲
ｂ：ＩＯアクセス集中領域におけるＩＯアクセス集中の継続時間
ｃ：ＩＯアクセス集中領域における、この後の推定継続時間
ｄ：ＩＯアクセス集中領域におけるＩＯ数の全ＩＯアクセスに対する割合
ｅ：データ置換時のＩＯアクセス当たりの応答時間増加量
ｆ：データ置換後のＩＯアクセス当たりの応答時間削減量
【００４０】
これらの情報のうち、例えば、情報ａ〜ｄはデータ収集部１１ａが収集した情報に基づき算出してよい。また、情報ｅ，ｆは、ＯＳのドライバが測定したものをデータ収集部１１ａを介して取得してもよい。
【００４１】
これらの情報ａ〜ｆは、後述の如くキャッシュドライバ１２において、ＩＯアクセス集中判定部１２４によるＩＯアクセス集中判定に用いられる。
【００４２】
キャッシュドライバ１２は、ＳＳＤ２０およびＨＤＤ３０に対するデータアクセスを制御する。キャッシュドライバ１２は、動的階層制御において、高負荷となったセグメントのデータをＨＤＤ３０から階層ＳＳＤ（Tiering SSD）２０に移動させる動的階層制御機能と、ＳＳＤ２０をＨＤＤ３０のキャッシュとして用いるキャッシング制御機能とを有する。
【００４３】
図１に示すように、キャッシュドライバ１２は、例示的に、キャッシング制御部１２１，空きページ管理部１２２，階層制御部１２３，ＩＯアクセス集中判定部１２４およびディスパッチャ１２５を備える。
【００４４】
空きページ管理部１２２は、ＳＳＤ２０の記憶領域をページ単位で管理する。ページは、ＳＳＤ２０の記憶領域を管理するための所定サイズ（例えば、４ＫＢ）の単位記憶領域である。
【００４５】
例えば、空きページ管理部１２２は、ＳＳＤ２０の記憶領域を複数のページに分割し、各ページの使用状態を管理する。これにより、空きページ管理部１２２は、例えば、ＳＳＤ２０の各ページについて使用中であるか未使用であるかを管理する。以下、未使用（データが格納されていない状態）のページを空きページという場合がある。
【００４６】
また、空きページ管理部１２２は、後述するキャッシング制御部１２１や階層ストレージ制御装置１０からの要求（割り当て要求）に応じて、ＩＯアクセス対象のデータに対してＳＳＤ２０の記憶領域の空きページを割り当てる。
【００４７】
例えば、後述する階層制御部１２３から、空きページ管理部１２２に対して、空きページの割り当て要求とともにＩＯアクセス集中領域のサイズが通知される。空きページ管理部１２２は、通知されたＩＯアクセス集中領域のサイズに基づき、ＩＯアクセス集中領域の全てのデータをステージングするために必要な数の空きページを探して割り当て、割り当てたページを特定する情報を階層制御部１２３に通知する。空きページ管理部１２２は、ＩＯアクセス集中領域のデータを格納するための空きページとして、連続する一群の複数ページを割り当てることが望ましい。
【００４８】
また、例えば、後述するキャッシング制御部１２１から、空きページ管理部１２２に対して、空きページの割り当て要求とともにキャッシング対象のデータサイズが通知される。空きページ管理部１２２は、通知されたデータサイズに基づき、キャッシング対象の全データを格納するために必要な数の空きページを探して割り当て、割り当てたページを特定する情報をキャッシング制御部１２１に通知する。空きページ管理部１２２は、キャッシングするデータを格納するための空きページとして、連続する一群の複数ページを割り当てることが望ましい。
【００４９】
すなわち、空きページ管理部１２２は、キャッシング制御部１２１からのキャッシング制御において用いられる空きページの管理と、階層制御部１２３による動的階層制御において用いられる空きページの管理とを実現する。これにより、空きページ管理部１２２は、ＳＳＤ２０の記憶領域を、キャッシュ制御と動的階層制御とで動的に配分する。
【００５０】
階層制御部１２３は、アクセス頻度が低い領域をＨＤＤ３０に配置する一方、アクセス頻度が高い領域をＳＳＤ２０に配置する、動的階層制御を行なう。
【００５１】
階層制御部１２３は、例えば、階層管理部１１（移動指示部１１ｃ）からのＨＤＤ３０とＳＳＤ２０との間におけるセグメントの移動指示を受信し、この移動指示に従ってＳＳＤ２０とＨＤＤ３０との間でデータの移動を行なう。この動的階層制御によるデータの移動（マイグレーション）は、サブＬＵＮ単位（例えば、１ＧＢ単位）で行なわれる。
【００５２】
なお、階層制御部１２３によるＨＤＤ３０とＳＳＤ２０との間におけるセグメントの移動は、既知の手法で実現することができ、その説明は省略する。
【００５３】
また、階層制御部１２３は、ＨＤＤ３０におけるＩＯアクセス集中領域の全てのデータをステージングするために必要な数のページを空きページ管理部１２２から獲得する。
【００５４】
階層制御部１２３は、階層制御キュー１２９を備える。この階層制御キュー１２９は、ＩＯアクセス集中領域（ＬＢＡ範囲）に対して、空きページ管理部１２２によって割り当てられたページを管理する。この階層制御キュー１２９は、メモリ１０ｂ（図６参照）等により実現される。
【００５５】
階層制御部１２３は、空きページ管理部１２２から必要なＳＳＤ容量の割り当てを受ける。
【００５６】
キャッシング制御部１２１は、キャッシュＳＳＤ２０をＨＤＤ３０のキャッシュとして使用するための制御を行なう。例えば、ＨＤＤ３０の所定の領域に対してホスト装置からＩＯアクセスが生じると、キャッシング制御部１２１は、このＨＤＤ３０におけるＩＯアクセスが生じたデータのコピーをキャッシュＳＳＤ２０に格納する。
【００５７】
キャッシング制御部１２１は、キャッシュテーブル１２６およびキャッシングキュー１２７を備える。
【００５８】
キャッシング制御部１２１は、ＨＤＤ３０においてＩＯアクセス集中が発生していないときは、全てのＳＳＤ２０の記憶領域を運用する。
【００５９】
キャッシュテーブル１２６は、キャッシング機能に関し、キャッシュＳＳＤ２０に格納されているキャッシュデータに関する情報を示す。
【００６０】
後述するディスパッチャ１２５は、ＩＯアクセスにおいて、データの読み出しもしくは書き込みの要求を受けると、このキャッシュテーブル１２６を参照することで、そのアクセス対象のデータがキャッシュＳＳＤ２０上に存在するかを確認する。
【００６１】
なお、キャッシュテーブル１２６は既知の手法を用いて実現することができ、その説明は省略する。
【００６２】
キャッシング制御部１２１は、ＨＤＤ３０にＩＯアクセスが行なわれると、このＩＯアクセスの対象データの複写をキャッシュＳＳＤ２０に格納（キャッシング）する。また、キャッシング制御部１２１は、このキャッシングに伴い、キャッシュテーブル１２６を更新する。キャッシング機能は、既知の手法により実現することができ、その詳細な説明は省略する。
【００６３】
また、キャッシング制御部１２１は、ＬＲＵ（Least Recently Used）方式やＦＩＦＯ（First In, First Out）方式等の置換アルゴリズムを用いて、キャッシュＳＳＤ２０のデータを置換する。なお、キャッシュＳＳＤ２０上のデータの置換は、既知の手法により実現することができ、その詳細な説明は省略する。
【００６４】
キャッシングキュー１２７は、キャッシング機能に関し、キャッシュＳＳＤ２０にキャッシング（格納）されるデータがキューエントリとして記録される。
【００６５】
キャッシングキュー１２７にはページ単位でデータが格納（キューイング）される。
【００６６】
ＩＯアクセス集中判定部１２４は、キャッシング制御による運用状態で、ＩＯアクセス集中がＨＤＤ３０に発生した場合に、動的階層制御へ移行するか否かの判定を行なう。
【００６７】
ＩＯアクセス集中判定部１２４は、キャッシング制御での運用を続けた場合と、動的階層制御に移行した場合とのＩＯアクセス応答時間の削減効果を比較する。ＩＯアクセス集中判定部１２４は、階層ＳＳＤ２０へのデータ置換時のオーバヘッド込みの動的階層制御を行なう場合の効果と、キャッシング制御をそのまま継続した場合の効果とを比較する。
【００６８】
ここで、オーバヘッドとは、ＨＤＤ３０におけるＩＯアクセス集中領域をＳＳＤ２０の記憶領域に移動する際に生じるＩＯアクセスの応答時間の増加分である。
【００６９】
ＩＯアクセス集中判定部１２４は、階層管理部１１から取得した情報ａ〜ｆを用いて判定を行なう。
【００７０】
図２はＨＤＤ３０の記憶領域におけるＩＯアクセス集中の状態を示す図であり、実施形態の一例としての階層ストレージシステム１のＩＯアクセス集中判定部１２４による処理を説明するための図である。
【００７１】
この図２においては、縦軸がＩＯアクセスの発生位置（ＬＢＡ）を示し、横軸が経過時間を示し、ＩＯアクセスの発生個所を濃黒色で示す。
【００７２】
図２においては、時刻（現在時刻）ｔの直前のＸ秒間でのＩＯアクセス集中領域を破線の矩形で環囲して示す。
【００７３】
ＩＯアクセス集中判定部１２４は、このＸ秒間のＩＯアクセス集中について、キャッシング制御によるＳＳＤ２０のアクセス比（ヒット率）と、キャッシング済みページ数を求める。
【００７４】
本階層ストレージシステム１においては、処理の簡素化を図るために、図２に示すように、時刻（現在時刻）ｔの直前のＸ秒間において、Ｙ秒間隔でＮ回のＩＯアクセス数の測定を行なう。すなわち、時刻（現在時刻）ｔの直前のＸ秒間において、Ｙ秒間隔でＮ回分のＩＯアクセス数のデータを保存する。なお、Ｘ=Ｙ×Ｎである。
【００７５】
時間ＸをＹで除算することで、回数Ｎを求めることができる。このＮを求めることをＳをＹの倍数で丸めると表現する場合がある。Ｎ=ｇとする。また、時間Ｘを時間ｂと表す場合がある。
【００７６】
一般にＩＯアクセス毎に測定を行なうと情報量が多くなり煩雑となるのに対して、本階層ストレージシステム１においてはサブＬＵＮ単位でまとめてＩＯアクセスの測定を行なうことで処理を簡素化することができる。
【００７７】
また、ＩＯアクセス集中判定部１２４は、ビットマップカウンタ１２８を備える。
【００７８】
図３は実施形態の一例としての階層ストレージシステム１におけるビットマップカウンタ１２８を例示する図である。
【００７９】
ビットマップカウンタ１２８は、ＨＤＤ３０のサブＬＵＮ毎にキャッシュヒットした回数を計数する。図３に例示するビットマップカウンタ１２８は、横方向（左右方向）にサブＬＵＮ単位のカウンタ１２８ａを複数並べて構成されている。
【００８０】
そして、ホスト装置からのＩＯアクセスにおいて、キャッシュＳＳＤ２０にキャッシュヒットした場合に、このＩＯアクセス先に対応するサブＬＵＮのカウンタ１２８ａのカウント値のカウントアップが行なわれる。ＩＯアクセス集中判定部１２４は、例えば、ホスト装置からのＩＯアクセスにおいてキャッシュヒットしたページのＬＢＡに基づいて対応するサブＬＵＮを特定し、そのカウンタ１２８ａのカウンタ値をインクリメント（＋１）する。
【００８１】
また、ビットマップカウンタ１２８には、キャッシュヒットの有無にかかわらず、ＩＯアクセスが行なわれる度にカウントアップがされるカウンタ（ＡＬＬ  ＩＯアクセスカウンタ）１２８ｂも備えられる。図３に例示するビットマップカウンタ１２８においては、その右端にＡＬＬ  ＩＯアクセスカウンタ１２８ｂが備えられている。以下、上述した複数のカウンタ１２８ａとＡＬＬ  ＩＯアクセスカウンタ１２８ｂとの組み合わせをカウンタセット１２８ｃという場合がある。
【００８２】
さらに、ビットマップカウンタ１２８においては、このカウンタセット１２８ｃをＮ組備え、これらのカウンタセット１２８ｃをＹ秒間隔でサイクリックに切り替えて用いる。図３に示す例においては、３つのカウンタセット１２８ｃを縦方向に３つ（Ｎ=３）並べて示している。複数のカウンタセット１２８ｃはホスト装置からのＩＯアクセスの履歴を表す。
【００８３】
ＩＯアクセス集中判定部１２４は、ビットマップカウンタ１２８を用いて、全体のＩＯアクセス数に対するＩＯアクセス集中領域へのＩＯアクセス数の比（ＩＯアクセス比）を算出する。すなわち、ＩＯアクセス集中判定部１２４は、ＨＤＤ３０への全ＩＯアクセスに対するＩＯアクセス集中領域へのＩＯアクセスの状態を求める。
【００８４】
図４は実施形態の一例としての階層ストレージシステム１におけるＩＯアクセス集中判定部１２４による処理を説明するための図である。
【００８５】
ＩＯアクセス集中判定部１２４は、ビットマップカウンタ１２８を参照して、現在（Current）を起点として直前の「Ｙ×ｍ」秒間に、ＬＢＡ_ｓｔａｒｔ〜ＬＢＡ＿ｅｎｄの範囲に発生したＩＯアクセスの全ＩＯアクセスに対する割合（ＩＯアクセス集中領域アクセス比）を求める。
【００８６】
なお、ＬＢＡ_ｓｔａｒｔはＩＯアクセス集中領域の先頭位置を示し、ＬＢＡ＿ｅｎｄはＩＯアクセス集中領域の末尾位置を示す。
【００８７】
ＩＯアクセス集中判定部１２４は、ビットマップカウンタ１２８を参照して、現在（Current）の１つ前からｍ個（ｍ組）の、すなわち過去ｍ個分のカウンタセット１２８ｃに基づき、ＬＢＡ_ｓｔａｒｔ〜ＬＢＡ＿ｅｎｄの範囲の各カウンタ１２８ａのカウンタ値を取得して合計する。このキャッシュヒットしたＩＯアクセス数の合計値をαとする。
【００８８】
また、ＩＯアクセス集中判定部１２４は、現在（Current）の１つ前からｍ個（ｍ組）の、すなわち過去ｍ個分のカウンタセット１２８ｃの各ＡＬＬ  ＩＯアクセスカウンタ１２８ｂのカウンタ値を取得して合計する。このＩＯアクセス数の合計値をβとする。
【００８９】
ＩＯアクセス集中判定部１２４は、以下の式（１）に基づき、ＩＯアクセス集中領域アクセス比γを算出する。
【００９０】
ＩＯアクセス集中領域アクセス比γ=α×１００／β  ・・・（１）
このＩＯアクセス集中領域アクセス比γは、ＩＯアクセス集中領域のヒット率であるといえる。
【００９１】
また、ＩＯアクセス集中判定部１２４は、キャッシングキュー１２７に挿入したページに対応するサブＬＵＮをサブＬＵＮキャッシング情報１３０を用いて管理する。
【００９２】
図５は実施形態の一例としての階層ストレージシステム１におけるサブＬＵＮキャッシング情報１３０を例示する図である。
【００９３】
サブＬＵＮキャッシング情報１３０は、ＨＤＤ３０におけるサブＬＵＮ毎にビットマップ（Bit map）を備える。
【００９４】
なお、ビットマップはビットマッププールにおいて管理されてもよい。各ビットマップにはオンまたはオフが設定され、例えば、キャッシングキュー１２７に挿入されたページのＬＢＡに対応するサブＬＵＮのビットマップにオンが設定される。また、キャッシングキュー１２７から削除されたページのＬＢＡに対応するサブＬＵＮのビットマップにはオフが設定される。
【００９５】
ＩＯアクセス集中判定部１２４は、キャッシングキュー１２７に挿入されたページのＬＢＡに対応するサブＬＵＮを求め、このサブＬＵＮに対応するビットマップにオンを設定する。また、キャッシングキュー１２７からページが削除されると、ＩＯアクセス集中判定部１２４は、このページのＬＢＡに対応するサブＬＵＮのビットマップにオフを設定する。ビットマップにオフを設定することをビットマップオフといってもよい。
【００９６】
サブＬＵＮのデータサイズが１ＧＢであり、ページサイズが４ＫＢである場合には、１つのビットマップあたり３２ＫＢとなる。
【００９７】
そして、ＩＯアクセス集中判定部１２４は、ホスト装置からのＩＯアクセス要求を、動的階層制御とキャッシング制御とのいずれを用いて処理するかの判定（切り分け）を行なう。
【００９８】
以下に、ＩＯアクセス集中判定部１２４による判定方法の概要を示す。
【００９９】
まず、ＩＯアクセス集中判定部１２４は、本階層ストレージシステム１においては、ＩＯアクセス集中の継続時間Ｘ（=ｂ）をＹの倍数に丸め、データ保存回数ｇを求める。データ保存回数ｇは、ＩＯアクセス集中の継続時間Ｘ（=ｂ）中においてデータ保存を実行した回数を示す。
【０１００】
ＩＯアクセス集中判定部１２４は、直前のｇ回のデータ収集の間にＩＯアクセス集中領域ａの範囲に発生したＩＯアクセス比を求める。さらに、ＩＯアクセス集中判定部１２４は、ａの範囲を全てＳＳＤ２０に置くためには、後いくつのページが必要なのかを求める。
【０１０１】
ＩＯアクセス集中判定部１２４は、上記式（１）に基づき、ＩＯアクセス集中領域アクセス比γを計算する。γをｈと表す場合がある（γ＝ｈ）。
【０１０２】
さらに、ＩＯアクセス集中判定部１２４は、後何ページの置換が必要であるか（残必要ページ数）を、サブＬＵＮキャッシング情報１３０におけるビットマップのオフ数を計数することで求める。この残必要ページ数をｉと表す。
【０１０３】
ＩＯアクセス集中判定部１２４は、上記情報ｃ，ｄ，ｅ，ｆ，ｉを用いてＩＯアクセス集中領域を全て置換した場合、すなわち、動的階層制御を行なった場合の効果（想定効果）を見積もる。この効果をｊと表す。
【０１０４】
本実施形態においては、短縮される応答時間（削減時間）を効果（想定効果）として用いる。
【０１０５】
［動的階層制御による効果の算出］  
ＩＯアクセス集中判定部１２４は、以下の式（２）を用いて、ＩＯアクセス集中領域のデータに動的階層制御を行なうことにより生じる効果（第１の想定効果）ｊを算出（シミュレート，試算）する。
【０１０６】
ｊ＝（ｃ−ＥＥ１×ｉ）×ｆ×ｄ−ＥＥ１×ｉ×ｅ    ・・・（２）
ここで、ＥＥ１は、１ページ分のデータをＨＤＤ３０とＳＳＤ２０との間で置換するのに必要な時間（オーバヘッド）である。ＥＥ１は、経験に基づいて予め任意の値を用いてもよく、また、本階層ストレージシステム１の運用中に測定することで決定してもよい。
【０１０７】
「ＥＥ１×ｉ」は、ＩＯアクセス集中領域のデータにおいて未置換データを置換するために要する時間（オーバヘッド）を示す。また、キャッシュヒットしたＩＯアクセスのみによって応答時間短縮の効果が実現されるので、ＩＯアクセス集中領域におけるＩＯ数の全ＩＯアクセスに対する割合であるｄを「ｃ−ＥＥ１×ｉ」に乗算する。
【０１０８】
一方、置換時の応答時間の短縮は全てのＩＯアクセスに生じるので、減算する「ＥＥ１×ｉ×ｅ」にｄは乗算しない。
【０１０９】
［キャッシング制御による効果の算出］
また、ＩＯアクセス集中判定部１２４は、情報ｈ，ｆを用いてキャッシング制御で運用した場合の効果（第２の想定効果）ｋを算出（シミュレート，試算）する。
【０１１０】
具体的には、ＩＯアクセス集中判定部１２４は、以下の式（３）を用いて、キャッシング制御を行なうことにより生じる効果ｋを算出する。
【０１１１】
ｋ＝ｃ×ｈ×ｆ  ・・・（３）
なお、ｃはＩＯアクセス集中領域における、この後の推定継続時間であり、ｈはＩＯアクセス集中領域アクセス比であり、ｆはデータ置換後のＩＯアクセス当たりの応答時間削減量である。ただし、ＩＯアクセス集中領域におけるヒット率ｈがこの後も継続することを前提とする。
【０１１２】
ＩＯアクセス集中判定部１２４は、算出した効果ｊと効果ｋとを比較する。
【０１１３】
この比較の結果、ｊ＞ｋの場合、すなわち、動的階層制御を行なう方がキャッシング制御を行なうよりも効果が大きいと判断した場合に、ＩＯアクセス集中判定部１２４は、ＩＯアクセス集中領域に発生したＩＯアクセスを階層制御部１２３によって管理させる。
【０１１４】
具体的には、ＩＯアクセス集中判定部１２４は、ＩＯアクセス集中領域の範囲を全てステージングするのに必要なページを獲得し階層制御キュー１２９に挿入する。
【０１１５】
例えば、ＩＯアクセス集中判定部１２４は、キャッシングキュー１２７内から、領域ａのデータを格納するためのページを取得する。この獲得したページをｍで表す。
【０１１６】
また、キャッシングキュー１２７内の空きページだけでは不足する場合には、ＩＯアクセス集中判定部１２４は、空きページ管理部１２２から空きページを獲得する。この獲得したページをｎで表す。
【０１１７】
さらに、空きページ管理部１２２によって管理される空きページを用いても足りない場合には、ＩＯアクセス集中判定部１２４は、キャッシングキュー１２７において使用中のページの中から優先度の低いページを必要とする数だけ抜き取ることで獲得する。この獲得したページを０で表す。優先度の低いページとはアクセス頻度が低いページであってもよい。
【０１１８】
階層制御部１２３は、これらのページｍ〜ｏに、まだ置換を行なっていない（未置換の）データを転送することで動的階層制御を行なう。
【０１１９】
ディスパッチャ１２５は、ホスト装置から発行されたＩＯ要求を処理する。すなわち、ディスパッチャ１２５は、ＩＯ要求をＳＳＤドライバ１３ａ，１３ｂ，ＨＤＤドライバ１４のいずれかに振り分ける。
【０１２０】
ディスパッチャ１２５は、階層制御部１２３の階層テーブルと、キャッシング制御部１２１のキャッシュテーブル１２６とのそれぞれを参照することで、ＩＯ要求の振り分け先を決定する。
【０１２１】
ディスパッチャ１２５がＩＯ要求をＨＤＤドライバ１４に割り振ることで、ＨＤＤ３０に対してＩＯ要求が発行される。また、ディスパッチャ１２５がＩＯ要求をＳＳＤドライバ１３ａに割り振ることで、階層ＳＳＤ２０に対してＩＯ要求が発行される。さらに、ディスパッチャ１２５がＩＯ要求をＳＳＤドライバ１３ｂに割り振ることで、キャッシュＳＳＤ２０に対してＩＯ要求が発行される。
【０１２２】
ディスパッチャ１２５は、例えば、階層制御部１２３の階層テーブルを参照して、ＩＯ要求のアクセス先が階層テーブルに設定されている場合には、ＩＯ要求をＳＳＤドライバ１３ａに振り分け、ＳＳＤドライバ１３ａからのＩＯレスポンスをホスト装置に返す処理を行なう。
【０１２３】
また、ディスパッチャ１２５は、キャッシング制御部１２１のキャッシュテーブル１２６を参照して、ＩＯ要求のアクセス先がキャッシュテーブル１２６に設定されている場合には、ＩＯ要求をＳＳＤドライバ１３ｂに振り分け、ＳＳＤドライバ１３ｂからのＩＯレスポンスをホスト装置に返す処理を行なう。
【０１２４】
そして、ディスパッチャ１２５は、階層制御部１２３の階層テーブルにもキャッシング制御部１２１のキャッシュテーブル１２６にもＩＯ要求のアクセス先が設定されていない場合には、ＩＯ要求をＨＤＤドライバ１４に振り分ける。また、ＨＤＤドライバ１４からのＩＯレスポンスをホスト装置に返す。
【０１２５】
（Ａ−２）階層ストレージ制御装置のハードウェア構成例
次に、図６を参照して、図１に示す階層ストレージ制御装置１０のハードウェア構成例について説明する。図６に示すように、階層ストレージ制御装置１０は、例示的に、ＣＰＵ１０ａ、メモリ１０ｂ、記憶部１０ｃ、インタフェース部１０ｄ、及び入出力部１０ｅをそなえる。
【０１２６】
ＣＰＵ１０ａは、種々の制御や演算を行なうプロセッサの一例である。ＣＰＵ１０ａは、階層ストレージ制御装置１０内の各ブロックとバスで相互に通信可能に接続されてよい。なお、プロセッサとしては、ＣＰＵ１０ａに代えて、電子回路、例えばＭＰＵ（Micro Processing Unit）等の集積回路（ＩＣ；Integrated Circuit）が用いられてもよい。
【０１２７】
メモリ１０ｂは、種々のデータやプログラムを格納するハードウェアの一例である。図１に示す階層制御キュー１２９，ビットマップカウンタ１２８，キャッシュテーブル１２６およびキャッシングキュー１２７の少なくとも１つは、メモリ１０ｂの記憶領域によって実現されてもよい。メモリ１０ｂとしては、例えばＲＡＭ（Random Access Memory）等の揮発性メモリが挙げられる。
【０１２８】
記憶部１０ｃは、種々のデータやプログラム等を格納するハードウェアの一例である。記憶部１０ｃとしては、例えばＨＤＤ等の磁気ディスク装置、ＳＳＤ等の半導体ドライブ装置、フラッシュメモリやＲＯＭ（Read Only Memory）等の不揮発性メモリ等の各種記憶装置が挙げられる。
【０１２９】
例えば記憶部１０ｃは、階層ストレージ制御装置１０の各種機能の全部若しくは一部を実現するストレージ制御プログラム１００を格納してもよい。この場合、ＣＰＵ１０ａは、記憶部１０ｃに格納されたストレージ制御プログラム１００をメモリ１０ｂに展開して実行することにより、階層ストレージ制御装置１０の機能を実現することができる。
【０１３０】
インタフェース部１０ｄは、ＳＳＤ２０、ＨＤＤ３０、図示しないホスト装置、又は作業者の作業端末等との間の接続及び通信の制御等を行なう通信インタフェースの一例である。例えばインタフェース部１０ｄは、各種コントローラ、デバイスを接続するアダプタ、及び記録媒体１０ｆに記録されたデータやプログラムを読み出す読取部をそなえてよい。コントローラは、例えばＳＳＤ２０及びＨＤＤ３０との間の通信を制御するＩＯＣ（I/O Controller）を含んでよく、アダプタは、例えばＳＳＤ２０及びＨＤＤ３０を接続するＤＡ（Device Adapter）、及びホスト装置を接続するＣＡ（Channel Adapter）等を含んでよい。なお、ＣＡとしては、例えばＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、ＦＣ（Fibre Channel）、インフィニバンド（InfiniBand）等に準拠したＣＡが挙げられる。
【０１３１】
読取部は、コンピュータ読取可能な記録媒体１０ｆを接続又は挿入可能な接続端子又は装置を含んでよい。読取部としては、例えばＵＳＢ（Universal Serial Bus）等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、ＳＤカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体１０ｆにはストレージ制御プログラム１００が格納されてもよい。
【０１３２】
入出力部１０ｅは、マウス、キーボード、操作ボタン等の入力部、並びにディスプレイ等の出力部の少なくとも一部を含むことができる。例えば入力部は、使用者又はオペレータ等による設定の登録や変更、システムのモード選択（切替）等の各種操作やデータの入力等の作業に用いられてもよく、出力部は、作業者等による設定の確認や各種通知等の出力に用いられてもよい。
【０１３３】
なお、上述した階層ストレージ制御装置１０のハードウェア構成は例示である。従って、階層ストレージ制御装置１０内でのハードウェアの増減（例えば任意のブロックの追加や省略）、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
【０１３４】
（Ｂ）動作
上述の如く構成された実施形態の一例としての階層ストレージシステム１における階層管理部１１の処理を、図７に示すフローチャート（ステップＡ１〜Ａ３）に従って説明する。
【０１３５】
ステップＡ１において、階層管理部１１は、ＩＯアクセス集中領域の範囲を示すＬＢＡ範囲ａ，ＩＯアクセス集中領域におけるＩＯアクセス集中の継続時間ｂ，ＩＯアクセス集中領域における、この後の推定継続時間ｃ，ＩＯアクセス集中領域におけるＩＯ数の全ＩＯアクセスに対する割合ｄ，データ置換時のＩＯアクセス当たりの応答時間増加量ｅ，およびデータ置換後のＩＯアクセス当たりの応答時間削減量ｆをそれぞれ生成する。
【０１３６】
ステップＡ２において、階層管理部１１は、ステップＡ１において生成した情報ａ〜ｆの各値をキャッシュドライバ１２に通知する。
【０１３７】
ステップＡ３において、一定時間が経過するまで待機（スリープ）した後、ステップＡ１に戻る。
【０１３８】
次に、図８および図９に従い、実施形態の一例としての階層ストレージシステム１におけるキャッシュドライバ１２のＩＯアクセス集中判定部１２４による処理を説明する。なお、図８はステップＢ１，Ｂ２，Ｂ６〜Ｂ８の処理を示し、図９はステップＢ３〜Ｂ５の処理を示す。
【０１３９】
図８のステップＢ１において、ＩＯアクセス集中判定部１２４は、階層管理部１１から情報ａ〜ｆが通知されるのを待つ。
【０１４０】
図８のステップＢ２において、ＩＯアクセス集中判定部１２４は、ＩＯアクセス集中の継続時間ｂ（=Ｘ）をＹの倍数に丸め、保存回数ｇを求める。
【０１４１】
また、ＩＯアクセス集中判定部１２４は、直前のｇ回のデータ収集の間にＩＯアクセス集中領域であるａの範囲に発生したＩＯアクセス数比を求める。さらに、ＩＯアクセス集中判定部１２４は、ａの範囲を全てＳＳＤ２０に置くためには、後いくつのページが必要なのかを求める。これにより、処理が図９のステップＢ３に移行する。
【０１４２】
ステップＢ３において、ＩＯアクセス集中判定部１２４は、ビットマップカウンタ１２８を参照して、Currentの１つ前からｇ個（ｇ回分）のカウンタセット１２８ｃを選択する。そして、ＩＯアクセス集中判定部１２４は、ＩＯアクセス集中領域であるａの範囲に相当するサブＬＵＮの各カウンタ１２８ａからカウンタ値を取り出して合計する。この合計値をαとする。
【０１４３】
図９のステップＢ４において、ＩＯアクセス集中判定部１２４は、ステップＢ３において選択したもの同じｇ個のカウンタセット１２８ｃから、各ＡＬＬ  ＩＯアクセスカウンタ１２８ｂのカウンタ値を取り出して合計する。この合計値をβとする。
【０１４４】
さらに、ＩＯアクセス集中判定部１２４は、上記式（１）に基づき、ＩＯアクセス集中領域アクセス比（ｈ）を算出する。
【０１４５】
図９のステップＢ５において、ＩＯアクセス集中判定部１２４は、サブＬＵＮキャッシング情報１３０を参照して、ＩＯアクセス集中領域であるａの範囲となるサブＬＵＮに対応するビットマップをビットマッププールより抽出し、ビットマップオフになっているビットマップの数を計数する。この計数したビットマップオフのビットマップの数をｉで表す。
【０１４６】
このビットマップの数ｉは、ＩＯアクセス集中領域のデータをメモリ（ＳＳＤ２０）に置くために、後、いくつの空きページが必要であるかを示す。
【０１４７】
図８のステップＢ６において、ＩＯアクセス集中判定部１２４は、１ページ置換するために必要な時間ＥＥ１を求める。そして、採取したデータと上記式（２）とを用いて、動的階層制御を行なった場合の効果ｊを算出する。
【０１４８】
図８のステップＢ７において、ＩＯアクセス集中判定部１２４は、上記式（３）を用いて、キャッシング制御を行なった場合の効果ｋを算出する。
【０１４９】
図８のステップＢ８において、ＩＯアクセス集中判定部１２４は、ｊ＞ｋの場合、すなわち、動的階層制御を行なう方がキャッシング制御を行なうよりも効果が大きいと判断した場合に、ＩＯアクセス集中領域に発生したＩＯアクセスを階層制御部１２３によって管理させる。
【０１５０】
すなわち、ＩＯアクセス集中判定部１２４は、ＩＯアクセス集中領域の範囲を全てステージングするのに必要なページを獲得し階層制御キュー１２９に挿入する。
【０１５１】
例えば、ＩＯアクセス集中判定部１２４は、キャッシングキュー１２７内から、領域ａデータを格納するためのページｍを取得する。
【０１５２】
また、キャッシングキュー１２７内の空きページだけでは不足する場合には、ＩＯアクセス集中判定部１２４は、空きページ管理部１２２から空きページｎを獲得する。
【０１５３】
さらに、空きページ管理部１２２によって管理される空きページを用いても足りない場合には、ＩＯアクセス集中判定部１２４は、キャッシングキュー１２７において使用中のページの中から優先度の低いページｏを必要とする数だけ抜き取ることで獲得する。
【０１５４】
階層制御部１２３は、これらのｍ〜ｏのページに、まだ置換を行なっていない（未置換の）データを転送することで動的階層制御を行なう。
【０１５５】
（Ｃ）効果
このように、本発明の一実施形態としての階層ストレージシステム１によれば、ＩＯアクセス集中判定部１２４が、動的階層制御を行なった場合の効果ｊと、キャッシング制御を行なった場合の効果ｋとを算出する。そして、ＩＯアクセス集中判定部１２４は、動的階層制御を行なう方がキャッシング制御を行なうよりも効果が大きいと判断した場合に、ＳＳＤ２０を階層ＳＳＤ２０として用いて、ＩＯアクセス集中領域のデータについて動的階層制御を行なわせる。
【０１５６】
一方で、ＩＯアクセス集中判定部１２４は、動的階層制御を行なわない場合には、ＳＳＤ２０をキャッシュＳＳＤ２０として用いることでキャッシング制御を行なう。
【０１５７】
ＨＤＤ３０において、ＩＯアクセス集中は常に発生するわけではなく、ＳＳＤ２０を動的階層制御を行なわない場合はキャッシュＳＳＤ２０として用いることで、ＳＳＤ２０の記憶領域を効率的に用いることができる。
【０１５８】
また、ＩＯアクセス集中判定部１２４が動的階層制御を行なう方がキャッシング制御を行なうよりも効果が大きいと判断しない場合には、ＳＳＤ２０を階層ＳＳＤ２０として用いた動的階層制御を行なわせないことで、ＩＯ要求に対する応答時間を短縮することができる。
【０１５９】
空きページ管理部１２２が、階層制御部１２３およびキャッシング制御部１２１のそれぞれからの割り当て要求に応じて、空きページを一元的に管理することで、ＳＳＤ２０の記憶領域を動的階層制御とキャッシング制御とで動的に配分することができる。これによってもＳＳＤ２０の記憶領域を効率的に用いることができる。
【０１６０】
階層制御部１２３が、キャッシング制御部１２１によるＨＤＤ３０とキャッシュＳＳＤ２０との間でのデータ転送に用いられるのと同じページ単位で、ＨＤＤ３０と階層ＳＳＤ２０との間のデータ移動を行なう。これにより動的階層制御によるデータ移動の進捗を容易に把握することができる。
【０１６１】
（Ｄ）その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０１６２】
例えば、一実施形態において、ＨＤＤ３０およびＳＳＤ２０を用いた階層ストレージシステム１について説明したが、これに限定されるものではなく、例えばキャッシュメモリと主記憶装置とを用いた階層記憶システムにも同様に適用することができる。すなわち、本発明は、不揮発性記憶装置の階層記憶システムだけでなく、揮発性記憶装置を含む階層記憶システムにも同様に適用することができる。
【０１６３】
また、一実施形態に係る階層ストレージシステムＨＤＤ３０およびＳＳＤ２０の他に、速度差のある記憶装置にも適用することが可能である。例えばＳＳＤ２０と、ＳＳＤよりも高速なアクセス速度を有する半導体メモリとを用いた階層ストレージシステム等にも適用することが可能である。
【０１６４】
また、ＨＤＤ３０に代えて、ＳＳＤ２０よりも大容量だが低速なテープドライブ等の磁気記録装置を用いた階層ストレージシステム等にも適用してもよい。
【０１６５】
さらに、一実施形態において、階層ストレージ制御装置１０の動作を１つのＳＳＤ２０及び１つのＨＤＤ３０に着目して説明したが、複数のＳＳＤ２０及び複数のＨＤＤ３０が階層ストレージシステム１にそなえられる場合も同様である。
【０１６６】
また、図１に示す階層ストレージ制御装置１０の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
例えば、図８および図９に示したフローチャートにおいて、図９に示したステップＢ３〜Ｂ５の処理を、ＩＯアクセス集中判定部１２４とは別に設けた処理部に実行させてもよい。
【０１６７】
また、上述した実施形態では、本発明を階層ストレージに適用した場合について説明したが、これに限定されるものでなく、本発明は、ＳＳＤ等の第１の記憶装置がキャッシュメモリである場合についても上述した実施形態と同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
【０１６８】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１６９】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１７０】
（付記１）
第１の記憶装置と、前記第１の記憶装置とは異なる性能の第２の記憶装置との間で、データを移動させる情報処理装置であって、
前記第２の記憶装置におけるアクセス集中発生領域のデータを前記第１の記憶装置に移動する場合の第１の想定効果と、前記移動を行なわずに前記第１の記憶装置のデータのコピーを前記第２の記憶装置に格納してキャッシュとして用いる場合の第２の想定効果とを比較し、
比較の結果、前記第１の想定効果が前記第２の想定効果よりも大きい場合に、前記第２の記憶装置におけるアクセス集中が発生した領域のデータを前記第１の記憶装置に移動させることを判定する
ことを特徴とする、情報処理装置。
【０１７１】
（付記２）
前記第２の記憶装置から前記第１の記憶装置に対する前記データのコピーの転送を所定のデータサイズのページ単位で行なうとともに、
前記第２の記憶装置におけるアクセス集中発生領域から前記第１の記憶装置への前記データの移動を前記ページ単位で管理する
ことを特徴とする、付記１記載の情報処理装置。
【０１７２】
（付記３）
前記第２の記憶装置における前記アクセス集中発生領域のデータを前記第１の記憶装置に移動させる場合に、
前記アクセス集中発生領域における、前記第２の記憶装置から前記第１の記憶装置への移動が未完了の全てのデータ量に相当する数のページを確保し、確保した前記ページを、前記第２の記憶装置から前記第１の記憶装置へのデータ移動を管理するキューに設定する
ことを特徴とする、付記２記載の情報処理装置。
【０１７３】
（付記４）
前記第１の想定効果を、前記第２の記憶装置から前記第１の記憶装置への１ページ分のデータを移動させるオーバヘッドと、アクセス集中領域における以後の推定継続時間と、アクセス集中領域におけるアクセス数の全アクセスに対する割合，データ置換時の１アクセス当たりの応答時間増加量および、データ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
ことを特徴とする、付記１〜３のいずれか１項に記載の情報処理装置。
【０１７４】
（付記５）
前記第２の想定効果を、アクセス集中領域における以後の推定継続時間、全てのアクセスに対する前記アクセス集中領域へのアクセス数の比およびデータ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
ことを特徴とする、付記１〜４のいずれか１項に記載の情報処理装置。
【０１７５】
（付記６）
第１の記憶装置と、前記第１の記憶装置とは異なる性能の第２の記憶装置との間で、データを移動させる情報処理装置において、
前記第２の記憶装置におけるアクセス集中発生領域のデータを前記第１の記憶装置に移動する場合の第１の想定効果と、前記移動を行なわずに前記第１の記憶装置のデータのコピーを前記第２の記憶装置に格納してキャッシュとして用いる場合の第２の想定効果とを比較し、
比較の結果、前記第１の想定効果が前記第２の想定効果よりも大きい場合に、前記第２の記憶装置におけるアクセス集中が発生した領域のデータを前記第１の記憶装置に移動させることを判定する
ことを特徴とする、情報処理方法。
【０１７６】
（付記７）
前記第２の記憶装置から前記第１の記憶装置に対する前記データのコピーの転送を所定のデータサイズのページ単位で行なうとともに、
前記第２の記憶装置におけるアクセス集中発生領域から前記第１の記憶装置への前記データの移動を前記ページ単位で管理する
ことを特徴とする、付記６記載の情報処理方法。
【０１７７】
（付記８）
前記第２の記憶装置における前記アクセス集中発生領域のデータを前記第１の記憶装置に移動させる場合に、
前記アクセス集中発生領域における、前記第２の記憶装置から前記第１の記憶装置への移動が未完了の全てのデータ量に相当する数のページを確保し、確保した前記ページを、前記第２の記憶装置から前記第１の記憶装置へのデータ移動を管理するキューに設定する
ことを特徴とする、付記７記載の情報処理方法。
【０１７８】
（付記９）
前記第１の想定効果を、前記第２の記憶装置から前記第１の記憶装置への１ページ分のデータを移動させるオーバヘッドと、アクセス集中領域における以後の推定継続時間と、アクセス集中領域におけるアクセス数の全アクセスに対する割合，データ置換時の１アクセス当たりの応答時間増加量および、データ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
ことを特徴とする、付記６〜８のいずれか１項に記載の情報処理方法。
【０１７９】
（付記１０）
前記第２の想定効果を、アクセス集中領域における以後の推定継続時間、全てのアクセスに対する前記アクセス集中領域へのアクセス数の比およびデータ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
ことを特徴とする、付記６〜９のいずれか１項に記載の情報処理方法。
【０１８０】
（付記１１）
第１の記憶装置と、前記第１の記憶装置とは異なる性能の第２の記憶装置との間で、データを移動させる情報処理装置のプロセッサに、
前記第２の記憶装置におけるアクセス集中発生領域のデータを前記第１の記憶装置に移動する場合の第１の想定効果と、前記移動を行なわずに前記第１の記憶装置のデータのコピーを前記第２の記憶装置に格納してキャッシュとして用いる場合の第２の想定効果とを比較し、
比較の結果、前記第１の想定効果が前記第２の想定効果よりも大きい場合に、前記第２の記憶装置におけるアクセス集中が発生した領域のデータを前記第１の記憶装置に移動させる
処理を実行させる、プログラム。
【０１８１】
（付記１２）
前記第２の記憶装置から前記第１の記憶装置に対する前記データのコピーの転送を所定のデータサイズのページ単位で行なうとともに、
前記第２の記憶装置におけるアクセス集中発生領域から前記第１の記憶装置への前記データの移動を前記ページ単位で管理する
処理を前記プロセッサに実行させる、付記１１記載のプログラム。
【０１８２】
（付記１３）
前記第２の記憶装置における前記アクセス集中発生領域のデータを前記第１の記憶装置に移動させる場合に、
前記アクセス集中発生領域における、前記第２の記憶装置から前記第１の記憶装置への移動が未完了の全てのデータ量に相当する数のページを確保し、確保した前記ページを、前記第２の記憶装置から前記第１の記憶装置へのデータ移動を管理するキューに設定する
処理を前記プロセッサに実行させる、付記１２記載のプログラム。
【０１８３】
（付記１４）
前記第１の想定効果を、前記第２の記憶装置から前記第１の記憶装置への１ページ分のデータを移動させるオーバヘッドと、アクセス集中領域における以後の推定継続時間と、アクセス集中領域におけるアクセス数の全アクセスに対する割合，データ置換時の１アクセス当たりの応答時間増加量および、データ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
処理を前記プロセッサに実行させる、付記１１〜１３のいずれか１項に記載のプログラム。
【０１８４】
（付記１５）
前記第２の想定効果を、アクセス集中領域における以後の推定継続時間、全てのアクセスに対する前記アクセス集中領域へのアクセス数の比およびデータ置換後の１アクセス当たりの応答時間削減量に基づいて算出する
処理を前記プロセッサに実行させる、付記１１〜１４のいずれか１項に記載のプログラム。
【符号の説明】
【０１８５】
１    階層ストレージシステム
１０    階層ストレージ制御装置（情報処理装置）
１０ａ    ＣＰＵ
１０ｂ    メモリ
１０ｃ    記憶部
１０ｄ    インタフェース部
１０ｅ    入出力部
１０ｆ    記録媒体
１１    階層管理部
１１ａ    データ収集部
１１ｂ    分析部
１１ｃ    移動指示部
１１ｄ    情報通知部
１２    キャッシュドライバ
１２１    キャッシング制御部
１２２    空きページ管理部
１２３    階層制御部
１２４    ＩＯアクセス集中判定部
１２５    ディスパッチャ
１２６    キャッシュテーブル
１２７    キャッシングキュー
１２８    ビットマップカウンタ
１２８ａ    カウンタ
１２８ｂ    ＡＬＬ  ＩＯアクセスカウンタ
１２８ｃ    カウンタセット
１２９    階層制御キュー
１３０    サブＬＵＮキャッシング情報
【図１】
2019191886.tif 000003
【図２】
2019191886.tif 000004
【図３】
2019191886.tif 000005
【図４】
2019191886.tif 000006
【図５】
2019191886.tif 000007
【図６】
2019191886.tif 000008
【図７】
2019191886.tif 000009
【図８】
2019191886.tif 000010
【図９】
2019191886.tif 000011