(57)【要約】      （修正有）【課題】ストレージ装置に設けられた高速の記憶装置の有効活用を図る。【解決手段】ストレージ装置１は、第１の記憶装置７と、第１の記憶装置７よりもアクセス速度が高い第２の記憶装置９と、第１の記憶装置７の書込アクセス負荷を監視する監視部１２と、監視部１２が監視した第１の記憶装置７の書込アクセス負荷と負荷しきい値とを比較する比較部６１と、比較部６１によって、第１の記憶装置７の書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを第１の記憶装置７及び第２の記憶装置８に書き込ませる一方、書込アクセス負荷が負荷しきい値を超えたと判定された場合に、書込アクセスの対象データを第１の記憶装置７及び第２の記憶装置８のいずれかに書き込ませる切替部６２と、を有する。【選択図】図２
2015095198.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置と、
前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、
前記第１の記憶装置の書込アクセス負荷を監視する監視部と、
前記監視部が監視した前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較する比較部と、
前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、前記比較部によって、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる切替部と、
を有することを特徴とするストレージ装置。
【請求項２】
前記切替部は、前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値を超える状態が所定時間以上継続していると判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませることを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値以下であると判定された場合に、前記切替部は、前記第１の記憶装置の記憶領域のうち、全アクセス負荷に対する読出アクセス負荷の割合が所定値以上である記憶領域に対する書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませることを特徴とする請求項１又は２記載のストレージ装置。
【請求項４】
前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が、前記負荷しきい値を超える状態から前記負荷しきい値以下に戻ったと判定された場合に、前記切替部は、前記第２の記憶装置に書き込まれた前記データを前記第１の記憶装置に書き戻させる
ことを特徴とする請求項１〜３のいずれか１項に記載のストレージ装置。
【請求項５】
前記ストレージ装置はさらに、
前記第１の記憶装置よりもアクセス速度が高い第３の記憶装置を有し、
前記第３の記憶装置は、
前記第１の記憶装置を制御するドライバであって、前記第３の記憶装置と共通のドライバにより制御されることを特徴とする請求項１〜４のいずれか１項に記載のストレージ装置。
【請求項６】
第１の記憶装置と、前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、をそなえるストレージ装置の制御方法であって、
前記第１の記憶装置の書込アクセス負荷を監視し、
前記監視によって得られた前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較し、
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、
前記比較において、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる
ことを特徴とするストレージ装置の制御方法。
【請求項７】
第１の記憶装置と、前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、をそなえるストレージ装置の制御プログラムであって、
前記第１の記憶装置の書込アクセス負荷を監視し、
前記監視によって得られた前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較し、
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、
前記比較において、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる
処理をプロセッサに実行させることを特徴とするストレージ装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラムに関する。
【背景技術】
【０００２】
例えば、Hard Disk Drive（ＨＤＤ）とSolid State Drive（ＳＳＤ）とを有する階層ストレージシステムの負荷分析の結果から、一部の階層ストレージシステムにおいてノマディックワークロードスパイク（ノマディックワークロードスパイク）が発生することがわかっている。
スパイクとは、ストレージの一部のセグメントにワークロード（負荷）が集中することを指す。ノマディックワークロードスパイクとは、スパイクが比較的短時間（１〜１０分程度）に集まったのち、別のオフセットに発生したスパイクに移動する現象である。
【０００３】
このようなワークロードを解消するために、従来、階層ストレージシステムに、ＨＤＤのほかに、キャッシュとして例えばＳＳＤを設けることにより、性能向上とコストパフォーマンスとの両方を実現してきた。このような方式をＳＳＤキャッシュ方式と呼ぶ。
ＳＳＤキャッシュの例として、フェイスブックフラッシュキャッシュやＦｕｓｉｏｎ−ｉｏダイレクトキャッシュなどがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１５４６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、前述の如きＳＳＤキャッシュ方式は、ライトバックキャッシュ方式を採用している。従って、ｗｒｉｔｅ比の高いノマディックワークロードスパイクに適用すると、スパイクの移動時に問題が発生する。
詳細には、１つ前のスパイクの発生時点で全ＳＳＤキャッシュブロックを使い果たした場合、新しいスパイクとキャッシュブロックを割り当てるには、キャッシュブロックのクリーンアップが必要になる。ここで、ノマディックワークロードスパイクのｗｒｉｔｅ比が高い場合には、ＨＤＤへの書き戻し（ライトバック）が大量に発生する。
【０００６】
ＳＳＤキャッシュブロックは通常４ＫＢ程度と小さいので、ライトバックによりＨＤＤへのランダムアクセスが発生し、大きな遅延の要因となる。
又、ライトバックキャッシュでは、キャッシュ領域を使い果たすとダーティブロック（ＨＤＤの対応するブロックと内容が相違するＳＳＤのブロック）のライトバックが定常的に発生する。ｗｒｉｔｅ比が高いノマディックワークロードスパイクの実行中は、ダーティブロックのライトバックが大量に発生するので、ＳＳＤのユーザが使用可能な帯域が消費されてしまう。
【０００７】
このように、ｗｒｉｔｅ比が高いノマディックワークロードスパイクが発生するワークロードにＳＳＤキャッシュを適用しても、十分な効果が得られないことが多い。
又、ＳＳＤは高価であるため、ＳＳＤの利用度を上げ、ＳＳＤの有効活用を図ることが求められている。
１つの側面では、本発明は、ストレージ装置に設けられた高速の記憶装置の有効活用を図ることを目的とする。
【０００８】
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【０００９】
このため、ストレージ装置は、第１の記憶装置と、前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、前記第１の記憶装置の書込アクセス負荷を監視する監視部と、前記監視部が監視した前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較する比較部と、前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、前記比較部によって、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる切替部と、を有する。
【００１０】
又、第１の記憶装置と、前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、をそなえるストレージ装置の制御方法は、前記第１の記憶装置の書込アクセス負荷を監視し、前記監視によって得られた前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較し、前記比較において、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、前記比較において、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる。
【００１１】
さらに、第１の記憶装置と、前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、をそなえるストレージ装置の制御プログラムは、前記第１の記憶装置の書込アクセス負荷を監視し、前記監視によって得られた前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較し、前記比較において、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、前記比較において、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる処理をプロセッサに実行させる。
【発明の効果】
【００１２】
本発明によれば、ストレージシステムにおいて、ストレージ装置に設けられた高速の記憶装置の有効活用を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態の一例としての階層ストレージシステムのシステム構成を示す模式図である。
【図２】実施形態の一例としての階層ストレージシステムの機能及びハードウェア構成を示す模式図である。
【図３】実施形態の一例としての階層ストレージシステムの階層化ＳＳＤのライトスルーキャッシュモードと階層化キャッシュモードとを示す図である。
【図４】実施形態の一例としてのワークロード分析部によるワークロードスパイクの平均余命時間の計算手法を例示する図である。
【図５】実施形態の一例としてのワークロード分析部によるワークロードスパイクの平均余命時間の計算結果を例示するグラフである。
【図６】実施形態の一例としてのワークロード分析部によるノマディックワークロードスパイクの判定手法を例示する図である。
【図７】階層化ＳＳＤが階層化キャッシュモード時の実施形態の一例としての階層ストレージシステムを示す図である。
【図８】階層化ＳＳＤがライトスルーキャッシュモード時の実施形態の一例としての階層ストレージシステムを示す図である。
【図９】実施形態の一例としての階層化ＳＳＤのライトスルーキャッシュモードから階層化キャッシュモードへの切替を示す図である。
【図１０】実施形態の一例としての階層ストレージシステムで使用される階層化テーブルを例示する図である。
【図１１】実施形態の一例としての階層ストレージシステムで使用される転送テーブルを例示する図である。
【図１２】実施形態の一例としての階層ストレージシステムにおけるデータ収集部によるデータ収集処理を示すフローチャートである。
【図１３】実施形態の一例としての階層ストレージシステムにおけるワークロード分析部及び移動部による移動処理の概要を示すフローチャートである。
【図１４】ワークロード分析部による、図１３の移動候補のセグメントの抽出処理を示すフローチャートである。
【図１５】実施形態の一例としての階層ストレージシステムにおけるライトスルー制御部によるライトスルーキャッシュ処理を示すフローチャートである。
【図１６】実施形態の一例としての階層ストレージシステムのモード切替部による階層化キャッシュモードへの切替処理を示すフローチャートである。
【図１７】実施形態の一例としての階層ストレージシステムにおける移動部によるセグメント移動処理を示すフローチャートである。
【図１８】実施形態の一例としての階層ストレージシステムにおける階層化ドライバによるセグメント移動後の処理を示すフローチャートである。
【図１９】実施形態の一例としての階層ストレージシステムにおける階層化ドライバによるセグメント移動処理を示すフローチャートである。
【図２０】実施形態の一例としての階層ストレージシステムにおける階層化ドライバによるユーザＩＯの処理を示すフローチャートである。
【図２１】実施形態の一例としての階層ストレージシステムにおける階層化キャッシュモードからライトスルーキャッシュモードへの遷移時の処理を示す図である。
【図２２】実施形態の一例としての階層ストレージシステムにおけるライトスルーキャッシュモードから階層化キャッシュモードへの遷移時の処理を示す図である。
【図２３】実施形態の一例としての階層ストレージシステムにおける階層化キャッシュモードの処理を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本技術に係るストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラムの実施の形態を説明する。
（Ａ）構成
以下、図１〜図１１を参照して、実施形態の一例としての階層ストレージシステム（ストレージシステム）１の構成について説明する。
【００１５】
図１は、実施形態の一例としての階層ストレージシステム１のシステム構成を示す模式図である。又、図２は、実施形態の一例としての階層ストレージシステム１の機能及びハードウェア構成を示す模式図である。
階層ストレージシステム１は、情報処理装置２、ＨＤＤ（第１の記憶装置）７、キャッシュＳＳＤ（第３の記憶装置）８、及び階層化ＳＳＤ（第２の記憶装置）９をそなえる。
【００１６】
本階層ストレージシステム１は、後述するＨＤＤ７の特定の領域（セグメント）において、ノマディックワークロードスパイクが所定時間（例えば３０分）以上継続している場合、当該セグメントのデータを後述する階層化ＳＳＤ９に移動し、ストレージシステム２の性能向上を図る。
以降、所定時間以上継続しているノマディックワークロードスパイクを、「持続的ノマディックワークロードスパイク」と呼ぶ。
【００１７】
このような持続的ノマディックワークロードスパイクの発生頻度は大きく変動する。
このため、持続的ノマディックワークロードスパイクが大量に発生していた記憶領域において、ホスト等の上位装置からのアクセス挙動の変化などにより、持続的ノマディックワークロードスパイクの発生が激減する場合が考えられる。
逆に、これまで持続的ノマディックワークロードスパイクがあまり発生していなかった記憶領域において、上位装置からのアクセス挙動の変化により、持続的ノマディックワークロードスパイクが大量に発生することもある。
【００１８】
更に、持続的ノマディックワークロードスパイクの増減が周期的に繰り返される場合も考えられる。
このように、持続的ノマディックワークロードスパイクが発生しない場合、階層化ＳＳＤ９が使用されないことになり、高額な階層化ＳＳＤ９を有効活用できなくなる。
そこで、本実施形態の一例としての階層ストレージシステム１は、持続的ノマディックワークロードスパイクが発生していないときは、階層化ＳＳＤ９をライトスルーキャッシュとして活用する。
【００１９】
ここで、ライトスルーとは、ＨＤＤへのライトを指示されたデータを、ＨＤＤとキャッシュとの両方に書き込む処理方式をいう。ライトスルー方式に使用されるキャッシュは「ライトスルーキャッシュ」と呼ばれる。ライトスルー方式に使用されるキャッシュは「ライトスルーキャッシュ」と呼ばれる。本階層ストレージシステム１においては、階層化ＳＳＤ９をこのライトスルーキャッシュとして使用する。
【００２０】
ライトスルー方式では、ライト対象のデータが全てＨＤＤ７にも書き込まれるので、ダーティブロックが発生しない。
なお、ライトスルーと対比される処理方式として、ライトバックもある。ライトバック方式は、ＨＤＤへのライトを指示されたデータを、キャッシュ（ライトバックキャッシュ）に一旦書き込んだのち、当該データをキャッシュからＨＤＤに書き込む。ライトバック方式に使用されるキャッシュは「ライトバックキャッシュ」と呼ばれる。本階層ストレージシステム１においては、キャッシュＳＳＤ８をこのライトバックキャッシュとして使用する。
【００２１】
情報処理装置２は、例えば、サーバ機能をそなえたコンピュータであり、後述するＨＤＤ７及びキャッシュＳＳＤ８との間において、ＳＣＳＩコマンドやレスポンス等の各種データを、ストレージ接続プロトコルを用いて送受信する。この情報処理装置２は、ＨＤＤ７及びキャッシュＳＳＤ８に対してリード／ライト等のディスクアクセスコマンドを送信することにより、ＨＤＤ７及びキャッシュＳＳＤ８が提供する記憶領域にデータの書き込みや読み出しを行なう。
【００２２】
ＨＤＤ７は、磁性体を塗布した円盤を記録装置として使用し、磁気ヘッドを移動させることで、高速回転している円盤に対して情報の読み書きを行なうストレージドライブである。
キャッシュＳＳＤ８は、半導体素子メモリを記憶装置として使用するストレージドライブであり、シリコンディスクドライブ、半導体ディスクドライブともよばれる。一般に、キャッシュＳＳＤ８は、ＨＤＤ７のような磁気ヘッドの移動に伴うヘッドシークタイムがないため、ＨＤＤ７よりも高速なランダムアクセスが可能である。その一方、半導体メモリを使用するのでＨＤＤ７よりも高価である。
【００２３】
前述のように、キャッシュＳＳＤ８は、ＨＤＤ７のライトバックキャッシュとして用いられる。このため、以降、キャッシュＳＳＤ８を「ライトバックキャッシュＳＳＤ８」とも呼ぶことがある。
本実施形態においては、ＨＤＤ７とキャッシュＳＳＤ８とは、仮想的に一台のディスクとして機能する。詳細には、ＨＤＤ７上にあるデータのうち、アクセスが頻繁に発生するデータが、アクセス速度の高いキャッシュＳＳＤ８上に置かれる。つまり、キャッシュＳＳＤ８はＨＤＤ７のキャッシュとして使用される。このため、以降、ＨＤＤ７とキャッシュＳＳＤ８とをまとめて、フラッシュキャッシュ１０、或いはキャッシュ１０と呼ぶ。或いは、ＨＤＤ７とキャッシュＳＳＤ８とを仮想的に１つのＨＤＤ１０とみなし、ＨＤＤ１０と呼ぶこともある。
【００２４】
なお、キャッシュＳＳＤ８をＨＤＤ７のライトバックキャッシュとして使用する手法については当業界において広く用いられているため、ここではその説明を省略する。
階層化ＳＳＤ９は、半導体素子メモリを記憶装置として使用するストレージドライブであり、シリコンディスクドライブ、半導体ディスクドライブともよばれる。一般に、階層化ＳＳＤ９は、ＨＤＤ７のような磁気ヘッドの移動に伴うヘッドシークタイムがないため、ＨＤＤ７よりも高速なランダムアクセスが可能である。その一方、半導体メモリを使用するのでＨＤＤ７よりも高価である。
【００２５】
階層化ＳＳＤ９は、階層化キャッシュモード（階層化モードとも呼ぶ）とライトスルーキャッシュモードとの２つの動作モードを有する。
図３は、実施形態の一例としての階層ストレージシステム１の階層化ＳＳＤ９のライトスルーキャッシュモードと階層化キャッシュモードとを示す図である。
ＨＤＤ１０において持続的ノマディックワークロードスパイクの発生が検出されると、後述する階層化管理部３によって、階層化ＳＳＤ９が階層化キャッシュモードに設定される（図３の「階層化モード」参照）。このとき、後述のキャッシュドライバ６の制御下で、上位装置からのｗｒｉｔｅ  ＩＯにおいてライトを指示されたデータが、フラッシュキャッシュ１０（ＨＤＤ１０）又は階層化ＳＳＤ９に書き込まれる。
【００２６】
つまり、階層化キャッシュモードにおいては、ノマディックワークロードスパイクが発生している記憶領域（セグメント）のデータがＨＤＤ７から階層化ＳＳＤ９に移動される。そして、階層化ＳＳＤ９に移動したセグメントに対するｗｒｉｔｅ  ＩＯが発生すると、階層化ＳＳＤ９の当該セグメントに対してデータのｗｒｉｔｅが行なわれる。そして、当該セグメントのノマディックワークロードスパイクが収束すると、データが階層化ＳＳＤ９からＨＤＤ７に書き戻される。
【００２７】
或いは、ノマディックワークロードスパイクが発生しておらず、階層化ＳＳＤ９に移動していないＨＤＤ７のセグメントに対するｗｒｉｔｅ  ＩＯが発生すると、ＨＤＤ７の当該セグメントに対してデータのｗｒｉｔｅが行なわれる。
一方、階層化管理部３によって、ＨＤＤ１０において発生していた持続的ノマディックワークロードスパイクが収束したことが検出されると、階層化ＳＳＤ９がライトスルーキャッシュモードに設定される。このとき、全ＩＯに対するｒｅａｄ比の高いセグメント（例えば、ｒｅａｄ比が８０％以上のセグメントなど）に対するＩＯは、後述するライトスルーキャッシュドライバ２４に送られる。例えば、リード比の高いセグメントに対して上位装置からのｗｒｉｔｅ  ＩＯでライトを指示されたデータが、ライトスルーキャッシュドライバ２４の制御下で、フラッシュキャッシュ１０（ＨＤＤ１０）と階層化ＳＳＤ９との両方に書き込まれる。一方、全ＩＯに対するｒｅａｄ比の低いセグメントに対するＩＯは、後述するキャッシュドライバ６に送られる。例えば、ｒｅａｄ比の低いセグメントに対してｗｒｉｔｅ  ＩＯでライトを指示されたデータが、キャッシュドライバ６の制御下でＨＤＤ７に書き込まれる。
【００２８】
階層化ＳＳＤ９の動作モードの切替は、図２を用いて後述するライトスルー制御部６０のモード切替部６２によって切り替えられる。
動作モードの切替時に、モード切替部６２は、階層化ＳＳＤ９の現在の動作モードを示す情報を、後述するメモリ５２（図２参照）内に、使用モード６３（図２参照）として格納する。例えば、モード切替部６２は、階層化ＳＳＤ９がライトスルーキャッシュモードのときは、使用モード６３に値ｗｔ−ｃａｃｈｅを、階層化キャッシュモードのときは、使用モード６３に値ｔｉｅｒｉｎｇを、それぞれ設定する。
【００２９】
図２に示すように、情報処理装置２は、例えば、Central Processing Unit（ＣＰＵ）（プロセッサ）５１、メモリ５２、内蔵ディスク５３、Input/Output（Ｉ／Ｏ）インタフェース５４、及び媒体リーダ５５をそなえる。
ＣＰＵ５１は、情報処理装置２の基本機能を実現するシステムソフトウェアであるオペレーティングシステム（operating system；ＯＳ）４を実行する。又、ＣＰＵ５１は、後述するメモリ５２に格納されているプログラムを実行することにより、各種処理を実行する。
【００３０】
メモリ５２は、ＣＰＵ５１が実行するプログラムや種々のデータや、ＣＰＵ５１の動作により得られたデータ等を格納する。又、メモリ５２は、後述する転送テーブル１３、階層化テーブル２２及び使用モード６３を格納する格納部としても機能する。メモリ５２としては、例えば、Random Access Memory（ＲＡＭ）、Read Only Memory（ＲＯＭ）、不揮発性メモリ、揮発性メモリなど、既存の種々のメモリを使用することができる。又、複数種類のメモリをそなえていてもよい。
【００３１】
内蔵ディスク５３は、情報処理装置２の内蔵の記憶域を提供するディスクドライブであり、例えば、情報処理装置２で実行されているＯＳ４や各種プログラムを記憶している。内蔵ディスク５３は、例えばＨＤＤである。又、内蔵ディスク５３は、後述する負荷データベース（ＤＢ；データセット）１５を格納する格納部としても機能する。
Ｉ／Ｏインタフェース５４は、情報処理装置２と、ＨＤＤ７、キャッシュＳＳＤ８、階層化ＳＳＤ９とを接続するアダプタである。Ｉ／Ｏインタフェース５４は、例えば、Serial Advanced Technology Attachment（ＳＡＴＡ）、Small Computer System Interface（ＳＣＳＩ）、Serial Attached SCSI（ＳＡＳ）、Fibre Channel（ＦＣ）などに準拠したディスクインタフェースカードである。
【００３２】
媒体リーダ５５は、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記録媒体５６を読み出すドライブであり、例えば、ＣＤ−ＲＯＭドライブやＤＶＤ−ＲＯＭドライブである。
ＣＰＵ５１は、ＯＳ４を実行している。
ＯＳ４は、情報処理装置２のハードウェアの管理などの基本機能を実現するシステムソフトウェアである。ＯＳ４は、例えばＬｉｎｕｘ（登録商標）などである。
【００３３】
ＯＳ４は、階層化ドライバ５、キャッシュドライバ６、ライトスルーキャッシュドライバ２４、ディスクドライバ３１〜３４、ｂｌｋｔｒａｃｅコマンド４１、及びｉｏｓｔａｔコマンド４２を有する。
キャッシュドライバ６は、フラッシュキャッシュドライバとも呼ばれ、ＨＤＤ７とキャッシュＳＳＤ８とで定義されるフラッシュキャッシュ１０（ＨＤＤ１０）のキャッシュシステムを実現するために、ディスクドライバ３１とディスクドライバ３２とをライトバック方式で制御する。このため、キャッシュドライバ６を「ライトバックキャッシュドライバ６」と呼ぶこともある。
【００３４】
ライトスルーキャッシュドライバ２４は、階層化ＳＳＤ９がライトスルーキャッシュモードに設定されているときに、階層化ＳＳＤ９をライトスルーキャッシュモードとして使用するために、ディスクドライバ３３とディスクドライバ３４とを制御する。
ディスクドライバ３１は、ＨＤＤ７のハードウェア制御を実行するデバイスドライバである。
【００３５】
ディスクドライバ３２は、キャッシュＳＳＤ８のハードウェア制御を実行するデバイスドライバである。
ディスクドライバ３３は、階層化ＳＳＤ９のハードウェア制御を実行するデバイスドライバである。
ディスクドライバ３４は、階層化ＳＳＤ９がライトスルーキャッシュモードに設定されているときに、ＨＤＤ７のハードウェア制御を実行するデバイスドライバである。
【００３６】
階層化ドライバ５は、後述するように、ＨＤＤ７とキャッシュＳＳＤ８とで定義されるフラッシュキャッシュ１０と、階層化ＳＳＤ９との間における、所定のセグメント単位でのデータの移動（転送）を制御する。
図１に示すように、階層化ドライバ５は、ＩＯマップ部２１を有する。
ＩＯマップ部２１は、後述する階層化テーブル２２を参照して、キャッシュドライバ６及びディスクドライバ３３に対して、所定のセグメント単位でのデータの移動（転送）の指示を行なう。
【００３７】
階層化テーブル２２は、メモリ５２に格納されており、フラッシュキャッシュ（ＨＤＤ）１０と階層化ＳＳＤ９との関連を示すテーブルである。階層化テーブル２２の詳細な構成については、図１０を参照して後述する。
ｂｌｋｔｒａｃｅコマンド４１は、ブロックＩＯレイヤのトレースに使用される。ｂｌｋｔｒａｃｅコマンド４１はブロックＩＯレイヤの入口及び出口、並びにブロックＩＯレイヤ内部でのＩＯ要求の状態をトレースする。このトレースの結果がＩＯトレースである。
【００３８】
後述するデータ収集部１１は、このｂｌｋｔｒａｃｅコマンド４１を定期的に（例えば１分間隔で）実行することにより、ＩＯトレースを負荷データベース１５として蓄積する。
例えば、ＬｉｎｕｘＯＳ上では、データ収集部１１は、ストレージボリュームを、所定の大きさ（例では１ＧＢ）に分割した領域（以下、この領域をセグメントと呼ぶ）毎に、１）ＩＯ数、２）ＩＯサイズごとの割合、３）ｒｅａｄ／ｗｒｉｔｅの割合、４）レスポンスのヒストグラムなどを計測し、負荷データベース１５に格納する。
【００３９】
なお、ＨＤＤ１０のセグメントの位置は、ＨＤＤ１０におけるオフセットによって規定されるので、セグメントを「オフセット範囲」と呼ぶこともある。
ｉｏｓｔａｔコマンド４２は、ＩＯの統計情報を取得するコマンドであり、オプション「−ｘ」を指定することにより、ディスクごとの利用率であるビジー率（％ｕｔｉｌ、１００に近いほど性能限界に近い）等の情報を取得できる。
【００４０】
この％ｕｔｉｌから、ピーク性能比でディスクの性能をどれだけの割合使用しているのかがわかる。
又、階層ストレージシステム１のＣＰＵ５１（図２参照）は、不図示のプログラムを実行することにより、階層化管理部（階層ストレージ制御装置）３及びライトスルー制御部６０として機能する。
【００４１】
階層化管理部３は、ＨＤＤ７とキャッシュＳＳＤ８とで定義されるフラッシュキャッシュ１０から、継続時間が比較的長い（例えば、３分以上）ノマディックワークロードスパイクが発生しているセグメントをリアルタイムに抽出する。そして、そのセグメント（つまり、そのセグメントのデータ）をＨＤＤ１０から階層化ＳＳＤ９へ移動させる。
階層化管理部３は、データ収集部１１、ワークロード分析部（監視部）１２、及び移動部１４をそなえる。
【００４２】
データ収集部１１は、所定の間隔でｂｌｃｔｒａｃｅコマンド４１を実行して、セグメント単位のＩＯ数等のデータをリアルタイムに収集し、負荷データベース１５に格納する。
例えば、フラッシュキャッシュ１０の容量が４．４ＴＢ，セグメントサイズが１ＧＢ、所定の間隔（タイムスライス）が１分の場合を考える。この場合、データ収集部１１は、４４００セグメントのＩＯ数を１分間隔で取得して、負荷データベース１５に格納する。
【００４３】
なお、データ収集部１１の具体的な処理については、図１２を参照して後述する。
ワークロード分析部１２は、データ収集部１１が収集した負荷データベース１５に基づいて、ノマディックワークロードスパイクが発生しているセグメントの特定を行なう。
ここで、ワークロード分析部１２は、ノマディックワークロードスパイクとして、継続時間が比較的長いワークロード（すなわち持続的ノマディックワークロードスパイク）を選択する。その際、ワークロード分析部１２は、ワークロードスパイクの継続時間が長いかどうか（すなわち持続的ノマディックワークロードスパイクであるかどうか）を、ノマディックワークロードスパイクの平均余命時間に基づいて判断する。平均余命時間とは、負荷が継続する継続時間から既に実行済みの実行時間を減じた時間をいう。
【００４４】
詳細には、システム管理者等が、事前に、階層ストレージシステム１のノマディックワークロードスパイク（ワークロード）の継続時間のデータを収集しておき、このデータから、ノマディックワークロードスパイクの継続時間を算出する。
ここで、図４を参照して、ワークロードスパイクの平均余命時間の計算手法の一例を説明する。
【００４５】
図４は、実施形態の一例としてのワークロード分析部１２によるワークロードスパイクの平均余命時間の計算手法を例示する図である。
まず、システム管理者等が、一定期間（例えば直近の６時間）におけるワークロードスパイクの継続時間と、そのサンプリング数（発生回数）とを収集する。
次に、各ワークロードスパイクについて、当該ワークロードスパイクの継続時間から経過時間を引いた値にサンプリング数を掛けた値を中間値として算出する。例えば、図４に示す、継続時間が５分、サンプリング数が８、経過時間が３分のワークロードスパイクの場合、中間値を（５−３）×８＝１６として求める。他のワークロードスパイクも同様に中間値を求める。
【００４６】
次に、経過時間ごとの中間値の合計値を、サンプリング数の合計値で割ることにより、その経過時間における平均余命を算出する。
図４の例では、経過時間が３分の時点での中間値の合計値をｓｕｍ  Ｂとして求め、サンプリング数の合計値をｓｕｍ  Ａとして求める。そして、ｓｕｍ  Ｂをｓｕｍ  Ａで割り、平均余命として、１０．０８６９９分を得る。つまり、３分経過しているワークロードスパイクスパイクの平均余命は約１０分となり、このワークロードスパイクはあと約１０分継続することが予想される。
【００４７】
前述の計算手法を用いてワークロードスパイクスの平均余命を計算した結果を、図５に示す。
図５は、実施形態の一例としてのワークロード分析部１２によるワークロードスパイクの平均余命時間の計算結果を例示するグラフである。
ここでは、８つのワークロード（ｐｒｏｊ１，ｐｒｏｊ２，…）の平均余命時間を計算している。
【００４８】
横軸は、各ワークロードの実行時間（継続時間）、縦軸はその実行時間における各ワークロードの余命を示す。
図５の例では、ｐｒｏｊ４は、ワークロードの検出直後は負荷が２分程度しか継続しないと期待されるが、ワークロードが３分継続した場合、ワークロードがあと１０分継続する可能性があることがわかる。
【００４９】
ワークロード分析部１２は、このようにして求めたワークロードごとの平均余命時間のデータに基づいて、ワークロードが、持続的ノマディックワークロードスパイクであるかどうかを判定する。そして、ワークロード分析部１２は、持続的ノマディックワークロードスパイクであると判定したワークロードスパイクを、階層化ＳＳＤ９へ投機的に移動させる。
【００５０】
図６は、実施形態の一例としてのワークロード分析部１２によるノマディックワークロードスパイクの判定手法を例示する図である。
図６に示すように、ワークロード分析部１２は、所定時間（例えば１分）毎に、データ収集部１１が収集した負荷データベース１５から、フラッシュキャッシュ１０（ＨＤＤ１０）の各セグメントに対して行なわれたＩＯ数を取得する。そしてワークロード分析部１２は、ＨＤＤ１０の各セグメントを、ＩＯ数が多い順にソートする。そして、ワークロード分析部１２は、Ｎ分（図６の例では３分）連続して、ＩＯ数が高負荷判定基準以上となったワークロードスパイクを、持続的ノマディックワークロードスパイクとして判定する。
【００５１】
ここで、高負荷判定基準とは、ＨＤＤ１０の全ＩＯの５０％以上が、ＨＤＤ１０の全容量の１％に相当するセグメントの個数である。図６の例では、高負荷判定基準は３セグメントである。この場合、あるワークロードスパイクが３回連続してＩＯ数の上位３セグメントに入った場合、そのワークロードスパイクは３分連続したことを意味する。このとき、ワークロード分析部１２は、そのワークロードスパイクが持続的ワークロードスパイクであると判定する。
【００５２】
そして、ワークロード分析部１２は、この平均余命時間（図４のｐｒｏｊ４の例では１０分）が、階層移動（ステージング）のためのコスト（検出オーバーヘッドとステージングの時間との和）を上回っている場合には階層移動を行なう。
つまり、ワークロード分析部１２は、一定時間継続したノマディックワークロードスパイク（例えば３分）を検出すると、後述する式（３）に示すように、セグメント数に基づいて階層移動に要するコストを求め、この値と図４の平均余命時間との比較を行なう。
【００５３】
階層移動に要するコストよりも平均余命時間のほうが長いと判定した場合、ワークロード分析部１２は、そのノマディックワークロードスパイクが発生しているセグメントを移動対象として判定する。そして、転送（移動）対象と判定したセグメントの情報を転送テーブル１３に書き込む。転送テーブル１３の詳細な構成については、図１１を参照して説明する。
【００５４】
又、ワークロード分析部１２は、階層化ＳＳＤ９に移動したセグメントが、所定のタイムアウト値分連続してノマディックワークロードスパイクとして判定されなかった場合に、階層化ＳＳＤ９からＨＤＤ１０にそのセグメントを書き戻すように指示する。
なお、ワークロード分析部１２の詳細な動作については、図１３，図１４を参照して後述する。
【００５５】
移動部１４は、ワークロード分析部１２からの指示に基づいて、セグメントを、階層化ＳＳＤ９からＨＤＤ１０へ、或いはその逆方向に移動するように階層化ドライバ５に対して指示を行なう。
なお、移動部１４の詳細な動作については、図１７を参照して後述する。
ライトスルー制御部６０（図２）は、ワークロード分析部１２による、ＨＤＤ１０の持続的ノマディックワークロードスパイクの発生又は収束の検出に応じて、階層化ＳＳＤ９の動作モードを、ライトスルーキャッシュモード及び階層化キャッシュモード間で切り替える。
【００５６】
ライトスルー制御部６０は、切替判定部６１（比較部）とモード切替部（切替部）６２とを有する。
切替判定部６１は、メモリ５２内の使用モード６３の値に基づいて、階層化ＳＳＤ９の現在の動作モードを判定する。そして、切替判定部６１は、階層化ＳＳＤ９のモードが階層化キャッシュモードの場合に、階層化ＳＳＤ９に移動させるべきセグメントが存在するかどうか、転送テーブル１３に階層化ＳＳＤ９への移動対象のセグメントが存在するかどうかを判定する。切替判定部６１は、上記の判定結果に基づいて、階層化ＳＳＤ９の動作モードを切り替える必要があるかどうかを判定する。
【００５７】
モード切替部６２は、切替判定部６１による切替の要／不要の判定結果に基づいて、階層化ＳＳＤ９のモードを、ライトスルーキャッシュモード又は階層化キャッシュモードに切り替える。
ここで、図７〜図９を参照して、階層化ＳＳＤ９の各動作モードと、動作モード間の遷移について説明する。
【００５８】
図７は、階層化ＳＳＤ９が階層化キャッシュモード時の階層ストレージシステム１を示す図である。
階層化ＳＳＤ９が階層化キャッシュモードの時は、ワークロード分析部１２が、負荷データベース１５を用いて、図７の例では、ＨＤＤ１０のセグメント４及びセグメント９で、ノマディックワークロードスパイクの発生を検出する。そして、移動部１４が、ＨＤＤ１０のセグメント４及びセグメント９のデータを、階層化ＳＳＤ９に移動させる。
【００５９】
その後、ワークロード分析部１２により、ＨＤＤ１０のセグメント４及びセグメント９においてノマディックワークロードスパイクが所定時間（例えば３０分）検出されない場合、階層化ＳＳＤ９の動作モードが、階層化キャッシュモードからライトスルーキャッシュモードに切り替えられる。
その際、図８に示すように、モード切替部６２（図２参照）が、階層化ＳＳＤ９の記憶領域を、ライトスルーキャッシュとして使用可能なフォーマットにフォーマットする。そして、モード切替部６２は、ライトスルーキャッシュドライバ２４をＯＳ４にインストールして、階層化ドライバ５の下に組み込む。
【００６０】
図８は、階層化ＳＳＤ９がライトスルーキャッシュモード時の階層ストレージシステム１を示す図である。
階層化ＳＳＤ９がライトスルーキャッシュモードの時は、ワークロード分析部１２が、ｒｅａｄ比の高い負荷が発生しているＨＤＤ１０のセグメントを検出し、そのようなセグメントを、階層化ドライバ５に通知する。通知を受けた階層化ドライバ５は、ワークロード分析部１２から通知されたＨＤＤ１０のセグメントに対するＩＯのみを、ライトスルーキャッシュドライバ２４に送る。
【００６１】
ライトスルーキャッシュモード時に、ワークロード分析部１２がＨＤＤ１０において持続的ノマディックワークロードスパイクの発生を検出した場合、図９に示すように、モード切替部６２（図２参照）は、階層化ＳＳＤ９を階層化キャッシュモードに切り替える。
図９は、階層化ＳＳＤ９のライトスルーキャッシュモードから階層化キャッシュモードへの切替を示す図である。
【００６２】
このとき、モード切替部６２は、階層化ドライバ５に、階層化ＳＳＤ９を階層化キャッシュモードに切り替える旨を通知する。この通知を受けた階層化ドライバ５は、以降、ＨＤＤ１０に対する全てのＩＯを、キャッシュドライバ６に送る。
そして、モード切替部６２は、ライトスルーキャッシュドライバ２４を削除して、階層化ＳＳＤ９と階層化ドライバ５とを直結させ、階層化ＳＳＤ９を階層化キャッシュモードで使用させる。
【００６３】
切替判定部６１及びモード切替部６２の詳細な動作については、図１５を用いて後述する。
図１０は、実施形態の一例としての階層ストレージシステム１で使用される階層化テーブル２２を例示する図である。
図１０に示す例では、階層化テーブル２２は、ＳＳＤオフセット２２１と、これに対応するＨＤＤ１０のオフセット２２２と、状態２２３とを相互に関連させて格納している。
【００６４】
ＳＳＤオフセット２２１は、階層化ＳＳＤ９にデータを移動させたセグメントの位置を、階層化ＳＳＤ９におけるそのセグメントのオフセットにより示す。例えば、このオフセットとして、階層化ＳＳＤ９上での当該セグメントのLogical Block Address（ＬＢＡ）が使用される。
ＨＤＤオフセット２２２は、ＳＳＤオフセット２２１が示す階層化ＳＳＤ９に移動したセグメントの、フラッシュキャッシュ１０上での位置を、フラッシュキャッシュ１０におけるそのセグメントのオフセットにより示す。例えば、オフセットは、フラッシュキャッシュ１０上での当該セグメントのＬＢＡである。ここでは、フラッシュキャッシュ１０を仮想的に１台のＨＤＤ１０上とみなし、フラッシュキャッシュ１０におけるオフセットを「ＨＤＤ１０上オフセット」と呼んでいる。
【００６５】
状態２２３は、ＳＤオフセット２２１が示す階層化ＳＳＤ９に移動したセグメントの状態を示す情報を格納する。状態２２３には、例えば、階層化ＳＳＤ９の空きを示す‘空き’、階層化ＳＳＤ９に割り当て済みであるが実際にはデータが移動されていない‘割り当て済み’、ＨＤＤ１０と階層化ＳＳＤ９間でデータの移動が行なわれている‘Ｍｏｖｉｎｇ’の値が格納される。又、‘Ｍｏｖｉｎｇ’の値には、ＨＤＤ１０から階層化ＳＳＤ９にデータが移動された‘Ｍｏｖｉｎｇ（ＨＤＤ→ＳＳＤ）’と、逆方向にデータが移動された‘Ｍｏｖｉｎｇ（ＳＳＤ→ＨＤＤ）’との２つが存在する。
【００６６】
次に、転送テーブル１３の構成を説明する。
図１１は、実施形態の一例としての階層ストレージシステム１で使用される転送テーブル１３を例示する図である。
転送テーブル１３は、セグメント番号１３１と連続数１３２とを有する。
セグメント番号１３１は、階層化ＳＳＤ９への移動を指示するセグメントの番号を示す。
【００６７】
連続数１３２は、セグメント番号１３１が示すセグメントにおいて、ノマディックワークロードスパイクが発生していると、過去何回、所定のタイムアウト値分連続して判定されたかの回数を示す。
なお、上記の実施形態においては、情報処理装置２のＣＰＵ５１が、ストレージ制御プログラムを実行することにより、図１，２の階層化管理部３、データ収集部１１、ワークロード分析部１２、移動部１４、ライトスルー制御部６０は、切替判定部６１、及びモード切替部６２として機能する。
【００６８】
なお、これらの階層化管理部３、データ収集部１１、ワークロード分析部１２、移動部１４、ライトスルー制御部６０は、切替判定部６１、及びモード切替部６２の機能を実現するためのプログラム（ストレージ制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体５６に記録された形態で提供される。そして、コンピュータはその記録媒体５６からプログラムを読み取って内部記憶装置又は外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体５６）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００６９】
階層化管理部３、データ収集部１１、ワークロード分析部１２、移動部１４、ライトスルー制御部６０は、切替判定部６１、及びモード切替部６２としての機能を実現する際には、内部記憶装置（本実施形態では情報処理装置２のメモリ５２）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態では情報処理装置２のＣＰＵ５１）によって実行される。このとき、記録媒体５６に記録されたプログラムを、媒体リーダ５５を介してコンピュータが読み取って実行するようにしてもよい。
【００７０】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体５６に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置２がコンピュータとしての機能を有しているのである。
【００７１】
（Ｂ）機能及び動作
以下、図面を参照して、実施形態の一例としての階層ストレージシステム１の機能及び動作を説明する。
最初に、図１２を参照して、データ収集部１１の処理について説明する。
図１２は、実施形態の一例としての階層ストレージシステム１におけるデータ収集部１１によるデータ収集処理を示すフローチャート（ステップＳ１〜Ｓ５）である。
【００７２】
ステップＳ１において、データ収集部１１は、ｓ秒（例えば、６０）実行して終了する条件でｂｌｋｔｒａｃｅコマンド４１を起動する。
次に、ステップＳ２において、データ収集部１１は、ｓ秒が経過しｂｌｋｔｒａｃｅコマンド４１が終了したかどうかを判定する。
ｂｌｋｔｒａｃｅコマンド４１が終了していない場合（ステップＳ２のＮＯルート参照）、処理はステップＳ２に戻る。
【００７３】
一方、ｂｌｋｔｒａｃｅコマンド４１が終了している場合（ステップＳ２のＹＥＳルート参照）、ステップＳ３において、データ収集部１１は、ｂｌｋｔｒａｃｅコマンド４１で取得したトレース結果を取り出し、所定のセグメント単位（例えば、１ＧＢセグメント単位）で、オフセット毎のＩＯ数を抽出する。
次に、ステップＳ４において、データ収集部１１は、ステップＳ３で抽出したＩＯ数の抽出結果を、タイムスタンプと共に負荷データベース１５に書き込む。
【００７４】
最後に、ステップＳ５において、データ収集部１１は、ｔ秒（例えば、６０秒）スリープした後、ステップＳ１に戻る。
次に、図１３〜図１４を参照して、ワークロード分析部１２及び移動部１４の処理について説明する。
図１３は、実施形態の一例としての階層ストレージシステム１におけるワークロード分析部１２及び移動部１４による移動処理の概要を示すフローチャート（ステップＳ１１〜Ｓ２５）である。図１４は、ワークロード分析部１２による、図１３の移動候補のセグメントの抽出処理を示すフローチャート（ステップＳ１３１〜Ｓ１４１）である。
【００７５】
まず、図１３のステップＳ１１において、モード切替部６２は、使用モード６３をｔｉｅｒｉｎｇに設定して、階層化ＳＳＤ９を階層化キャッシュモードモードに設定する。
次にステップＳ１２において、ワークロード分析部１２は、負荷データベース１５から、直近のタイムスタンプのセグメント単位のＩＯ数情報を取り出す。
次に、ステップＳ１３において、ワークロード分析部１２は、階層移動対象とするセグメントを抽出する。この抽出処理については、図１４を参照して説明する。
【００７６】
まず、図１４のステップＳ１３１において、ワークロード分析部１２は、変数ｍに１の初期値を与える。この変数ｍは、スパイク発生と判断するＩＯ割合閾値io_rate_valueに達するセグメント数を求めるために使用する。
次に、ステップＳ１３２において、ワークロード分析部１２は、図１３のステップＳ１２で取り出した情報を、ＩＯ数が多いセグメントの順に並べ替え、配列ｓｅｇ＿ｓｏｒｔ（１），…を得る。ここで、ｓｅｇ＿ｓｏｒｔ（ｋ）は、ｋ番目にアクセス数が多いセグメントのＩＯ数である。
【００７７】
次に、ステップＳ１３３において、ワークロード分析部１２は、全セグメントのＩＯ数を合計して、ｉｏ＿ａｌｌを求める。つまり、ｉｏ＿ａｌｌは、分析対象のタイムスライスにおける総ＩＯ数である。
次に、ステップＳ１３４において、ワークロード分析部１２は、ｓｅｇ＿ｓｏｒｔ（１），…について、以下の計算を行なう。
【００７８】
【数１】
2015095198.tif 000003
【００７９】
io_rate = (io_concentration×100) / io_all                            …（２）
ステップＳ１３５において、ワークロード分析部１２は、ｍが、同時に階層化を実行する最大セグメント数ｍａｘ＿ｓｅｇ＿ｎｕｍに達しているか、或いは上記ｉｏ＿ｒａｔｅが、スパイク発生と判断するＩＯ割合しきい値ｉｏ＿ｒａｔｅ＿ｖａｌｕｅを超えているかどうか判定する。
【００８０】
ｍがｍａｘ＿ｓｅｇ＿ｎｕｍに達しているか、或いはｉｏ＿ｒａｔｅがｉｏ＿ｒａｔｅ＿ｖａｌｕｅを超えている場合（ステップＳ１３５のＹＥＳルートを参照）、ステップＳ１３６において、ワークロード分析部１２は、ｍがｍａｘ＿ｓｅｇ＿ｎｕｍに到達しているかを判定する。
ｍがｍａｘ＿ｓｅｇ＿ｎｕｍに到達している場合（ステップＳ１３６のＹＥＳルートを参照）、ステップＳ１３８において、ワークロード分析部１２は、対応するセグメント番号が、連続して何回この上位ｋ個（全ＩＯのｉｏ＿ｒａｔｅ＿ｖａｌｕｅ（％））に入ったかを記録する。
【００８１】
次に、ステップＳ１３９において、ワークロード分析部１２は、前タイムスライスで上位ｋセグメントに入ったセグメント番号のち、今回上位ｋ個から外れたセグメントを、階層移動対象から除外する（リセットする）。
ステップＳ１４０において、ワークロード分析部１２は、ステップＳ１３８で求めた連続回数が、ｍｉｎ＿ｃｏｎｔ＿ｔｉｍｅを超えたセグメントを、階層移動候補のセグメントとして抽出する。ここで、ｍｉｎ＿ｃｏｎｔ＿ｔｉｍｅは、この設定値の時間を超えてスパイクが継続した場合に、そのセグメントを階層移動候補セグメントとするしきい値である。
【００８２】
ステップＳ１４１において、ワークロード分析部１２は、階層移動候補となったｎ個のセグメントについて、以下を計算する。
ｔｉｅｒｉｎｇ＿ｔｉｍｅ＝ｓｅｇ＿ｍｏｖｅ＿ｔｉｍｅ×ｎ＋検出遅延    …（３）
上記式（３）において、ｓｅｇ＿ｍｏｖｅ＿ｔｉｍｅは、１つのセグメントをＨＤＤ１０から階層化ＳＳＤ９へ移動するのに要するコストを、時間（秒）で表わした値であり、例えば、１０秒である。又、検出遅延は、セグメントの移動に要する遅延時間（秒）である。
【００８３】
一方、ｍが、ｍａｘ＿ｓｅｇ＿ｎｕｍに達しておらず、かつｉｏ＿ｒａｔｅがｉｏ＿ｒａｔｅ＿ｖａｌｕｅを超えていない場合（ステップＳ１３５のＮＯルート及びステップＳ１３６のＮＯルート）参照、ステップＳ１３７においてｍが１インクリメントされる。その後、処理がステップＳ１３２に戻る。
図１３に戻ると、ステップＳ１４において、ワークロード分析部１２は、スパイクの平均余命時間ｌｉｆｅ＿ｅｘ＿ｔｉｍｅが、ｔｉｅｒｉｎｇ＿ｔｉｍｅを超えているかどうかを判定する。ここで、ｌｉｆｅ＿ｅｘ＿ｔｉｍｅは、ワークロードごとに決まる値であり、事前に算出され、システム管理者等によって情報処理装置２に設定される。
【００８４】
ｌｉｆｅ＿ｅｘ＿ｔｉｍｅがｔｉｅｒｉｎｇ＿ｔｉｍｅを超えている場合（ステップＳ１４のＹＥＳルート参照）、ステップＳ１５において、切替判定部６１は、使用モード６３（図２参照）の値がｔｉｅｒｉｎｇであるかどうかを判定する。
使用モード６３の値がｔｉｅｒｉｎｇではない場合（ステップＳ１５のＮＯルート参照）、階層化ＳＳＤ９はライトスルーキャッシュモードである。このため、処理は後述する図１６に移行して、階層化キャッシュモードへの切替処理を実行する。
【００８５】
一方、使用モード６３の値がｔｉｅｒｉｎｇの場合（ステップＳ１５のＹＥＳルート参照）、階層化ＳＳＤ９は現在階層化キャッシュモードである。このため、ステップＳ１６において、ワークロード分析部１２は、移動部１４に、階層移動候補セグメント情報を送り、ＨＤＤ１０から階層化ＳＳＤ９への階層移動を指示する。これを受けて、移動部１４は、指示された階層移動候補セグメントをＨＤＤ１０から階層化ＳＳＤ９に移動させる。
【００８６】
そしてステップＳ１７において、ワークロード分析部１２は、階層化ＳＳＤ９への移動を指示したセグメント情報を、ワークロード分析部１２内の転送テーブル１３に記録する。
一方、ステップＳ１４において、ｌｉｆｅ＿ｅｘ＿ｔｉｍｅがｔｉｅｒｉｎｇ＿ｔｉｍｅ以下の場合（ステップＳ１４のＮＯルート参照）、処理がステップＳ２６に移動して、ライトスルーキャッシュ処理を実行したのち、ステップＳ１８に移動する。このライトスルーキャッシュ処理については、図１５を参照して後述する。
【００８７】
次に、ステップＳ１８において、ワークロード分析部１２は、ステップＳ１３で求めた上位ｋ個に入ったセグメント番号と、転送テーブル１３に登録されているセグメント番号とを比較する。
次に、ステップＳ１９において、ワークロード分析部１２は、転送テーブル１３に登録されているセグメント番号ごとに、そのセグメントが、上位ｋ個に入ったかどうかを判定する。
【００８８】
上位ｋ個に入った場合（ステップＳ１９のＹＥＳルート参照）、ステップＳ２０において、ワークロード分析部１２は、セグメント番号の連続数を１インクリメントする。
上位ｋ個に入らなかった場合（ステップＳ１９のＮＯルート参照）、ステップＳ２１において、ワークロード分析部１２は、セグメント番号の連続数を‘０’にリセットする。
次に、ステップＳ２２において、ワークロード分析部１２は、転送テーブル１３に登録されているセグメント番号ごとに、セグメント番号の連続数がｍｏｖｅ＿ｔｏ＿ｈｄｄを超えているかどうかの判断を行なう。なお、ｍｏｖｅ＿ｔｏ＿ｈｄｄは、この値に設定した値、上位ｋ個セグメントから外れると、そのセグメントを階層化ＳＳＤ９からＨＤＤ１０に戻すと判定するしきい値である。
【００８９】
セグメント番号の連続数がｍｏｖｅ＿ｔｏ＿ｈｄｄを超えている場合（ステップＳ２２のＹＥＳルート参照）、ステップＳ２３において、ワークロード分析部１２は、超えている各セグメント番号について、当該セグメント番号を移動部１４に送り、階層化ＳＳＤ９からＨＤＤ７への階層移動を指示する。
そして、ステップＳ２４において、ワークロード分析部１２は、転送テーブル１３に登録されているセグメント番号を削除する。
【００９０】
一方、セグメント番号の連続数がｍｏｖｅ＿ｔｏ＿ｈｄｄ以下の場合（ステップＳ２２のＮＯルート参照）、処理はステップＳ２５に移動する。
次にステップＳ２５において、ワークロード分析部１２は、ｕ秒（例えば６０秒）スリープした後、ステップＳ１２に戻る。
上記図１３，図１４の処理で使用される各種しきい値（ｍａｘ＿ｓｅｇ＿ｎｕｍ、ｉｏ＿ｒａｔｅ＿ｖａｌｕｅ、ｍｉｎ＿ｃｏｎｔ＿ｔｉｍｅ、ｓｅｇ＿ｍｏｖｅ＿ｔｉｍｅ、ｌｉｆｅ＿ｅｘ＿ｔｉｍｅ、ｍｏｖｅ＿ｔｏ＿ｈｄｄ等）は、例えば、事前に情報処理装置２に予め設定されている。これらの値は、工場出荷時に設定されていても、ユーザによって設定されてもよい。又、ユーザが後から変更可能でもよい。
【００９１】
次に、ライトスルー制御部６０によるライトスルーキャッシュ処理について説明する。
図１５は、実施形態の一例としての階層ストレージシステム１におけるライトスルー制御部６０によるライトスルーキャッシュ処理を示すフローチャート（ステップＳ７１〜Ｓ７９）である。
ステップＳ７１において、ライトスルー制御部６０の切替判定部６１は、使用モード６３（図２参照）の値がｔｉｅｒｉｎｇであるかどうかを判定する。
【００９２】
使用モード６３の値がｔｉｅｒｉｎｇではない場合（ステップＳ７１のＮＯルート参照）、階層化ＳＳＤ９は現在ライトスルーキャッシュモードである。このため、処理を後述する図１５に移行させる。
一方、使用モード６３の値がｔｉｅｒｉｎｇの場合（ステップＳ７１のＹＥＳルート参照）、ステップＳ７２において、切替判定部６１は、階層化ＳＳＤ９に移動させるセグメントをＭＭ分（例えば３０分）、連続して抽出できたかどうかを判定する。
【００９３】
階層化ＳＳＤ９に移動させるセグメントを、ＭＭ分連続して抽出できた場合（ステップＳ７２のＹＥＳルート参照）、持続的ノマディックワークロードスパイクが発生しているので、階層化ＳＳＤ９を、引き続き階層化キャッシュモードで使用する必要がある。このため、ライトスルー制御部６０は、本ライトスルーキャッシュ処理を終了して、前述した図１３のステップＳ１８に移動する。
【００９４】
一方、階層化ＳＳＤ９に移動させるセグメントを、ＭＭ分連続して抽出できなかった場合（ステップＳ７２のＮＯルート参照）、ステップＳ７３において、切替判定部６１は、階層化ＳＳＤ９に移動させるセグメントが転送テーブル１３に存在するかどうかを判定する。このとき、切替判定部６１は、階層化ＳＳＤ９に移動させるセグメントが、転送テーブル１３に登録されていない場合は、階層化ＳＳＤ９に移動させるセグメントが転送テーブル１３に存在しないと判定する。
【００９５】
階層化ＳＳＤ９に移動させるセグメントが転送テーブル１３に登録されている場合（ステップＳ７３のＹＥＳルート参照）、階層化ＳＳＤ９は引き続き階層化キャッシュモードで使用する必要がある。このため、ライトスルー制御部６０は、本ライトスルーキャッシュ処理を終了して、前述した図１３のステップＳ１８に移動する。
一方、階層化ＳＳＤ９に移動させるセグメントが転送テーブル１３に存在しない場合（ステップＳ７３のＮＯルート参照）、階層化ＳＳＤ９をライトスルーキャッシュとして使用可能である。このため、ステップＳ７４において、モード切替部６２が、使用モード６３（図２参照）の値をｗｔ−ｃａｃｈｅに設定する。
【００９６】
次に、ステップＳ７５において、モード切替部６２は、例えばｉｎｓｍｏｄコマンドを実行してライトスルーキャッシュドライバ２４をＯＳ４にインストールする。そして、モード切替部６２は、インストールしたライトスルーキャッシュドライバ２４を階層化ドライバ５の下に組み込む。
次にステップＳ７６において、切替判定部６１は、負荷データベース１５から過去ｔ分間のＩＯのデータを取り出す。
【００９７】
ステップＳ７７において、切替判定部６１は、ステップＳ７６で負荷データベース１５から取り出したＩＯデータに基づいて、ＨＤＤ１０のオフセット毎に、全ＩＯ（ｒｅａｄ及びｗｒｉｔｅ）に対するｒｅａｄの比率（ｒｅａｄ比）を求める。
ステップＳ７８において、切替判定部６１は、ステップＳ７７で求めたｒｅａｄ比がＸＸ％（例えば８０％）以上であったＨＤＤ１０のセグメントを抽出する。そして、モード切替部６２が、ｒｅａｄ比がＸＸ％のセグメントで発生するＩＯを、ライトスルーキャッシュドライバ２４に出す（負荷する）よう、階層化ドライバ５に指示する。
【００９８】
ステップＳ７９において、モード切替部６２は、ステップＳ７８で階層化ＳＳＤ９に送るよう指示した以外のセグメントについて、当該範囲で発生するＩＯを、キャッシュドライバに出す（負荷する）よう、階層化ドライバ５に指示する。
その後処理は図１３のステップＳ１８に移動する。
図１６は、実施形態の一例としての階層ストレージシステム１のモード切替部６２による階層化キャッシュモードへの切替処理を示すフローチャート（ステップＳ８１〜Ｓ８３）である。
【００９９】
ステップＳ８１において、モード切替部６２は、ＨＤＤ１０の全てのオフセット（セグメント）で発生するＩＯ負荷を、キャッシュドライバ６に出す（負荷する）ように階層化ドライバ５に指示する。
次に、ステップＳ８２において、モード切替部６２は、階層化ドライバ５からライトスルーキャッシュドライバ２４を切り離し、ライトスルーキャッシュドライバ２４をＯＳ４から削除する（例えばｒｍｍｏｄコマンドを実行する）。
【０１００】
ステップＳ８３において、モード切替部６２は、使用モード６３（図２参照）の値をｔｉｅｒｉｎｇに設定する。その後処理は図１３のステップＳ２３に戻る。
次に、図１７を参照して、移動部１４による移動処理について説明する。
図１７は、実施形態の一例としての階層ストレージシステム１における移動部１４によるセグメント移動処理を示すフローチャート（Ｓ３１〜Ｓ３４）である。
【０１０１】
ステップＳ３１において、移動部１４は、ワークロード分析部１２から階層移動指示の受信を待機する。
ステップＳ３２において、移動部１４は、ワークロード分析部１２から階層移動指示を受信したかどうかを判定する。
階層移動指示を受信した場合（ステップＳ３２のＹＥＳルート参照）、ステップＳ３３において、移動部１４は、ワークロード分析部１２から受信した階層移動指示に含まれるセグメント番号を、ＨＤＤ１０上のオフセット（ＬＢＡ）に変換する。
【０１０２】
例えば、５１２バイト／セクタで、１セグメントのサイズが１ＧＢの場合、移動部１４は、１×１０２４×１０２４×１０２４／５１２を算出する。
次に、ステップＳ３４において、移動部１４は、セグメント番号に対応するオフセット情報（ＨＤＤ１０のＬＢＡ）と、移動方向（ＨＤＤ１０→階層化ＳＳＤ９、又は階層化ＳＳＤ９→ＨＤＤ１０）とを、階層化ドライバ５に伝達する。これを受けて、階層化ドライバ５はこれらの情報に基づいて、セグメントの移動を行なう。その後処理はステップＳ３１に戻る。
【０１０３】
又、ステップＳ３２において階層移動指示を未受信の場合（ステップＳ３２のＮＯルート参照）も、移動部１４はステップＳ３１に戻って階層移動指示の受信を待機する。
次に、図１８を参照して、階層化ドライバ５によるセグメントの移動処理について説明する。
図１８は、実施形態の一例としての階層ストレージシステム１における階層化ドライバ５によるセグメント移動処理を示すフローチャート（ステップＳ４１〜Ｓ４５）である。
【０１０４】
ステップＳ４１において、階層化ドライバ５は、移動部４から階層移動指示の受信を待機する。
ステップＳ４２において、階層化ドライバ５は、移動部４から階層移動指示を受信したかどうかを判定する。
階層移動指示を受信した場合（ステップＳ４２のＹＥＳルート参照）、ステップＳ４３において、階層化ドライバ５は、階層化テーブル２２内のＨＤＤオフセット２２２がＮＵＬＬとなっているエントリを検索する。
【０１０５】
次に、ステップＳ４４において、階層化ドライバ５は、見つかったＮＵＬＬのエントリに、階層化テーブル２２内のＨＤＤオフセット２２２情報と状態（Ｍｏｖｉｎｇ（ＨＤＤ→ＳＳＤ又はＳＳＤ→ＨＤＤ））とを登録する。
最後に、ステップＳ４５において、階層化ドライバ５は、階層化ＳＳＤ９とキャッシュ１０とにセグメントの転送を指示する。詳細には、階層化ドライバ５のＩＯマップ部２１が、キャッシュドライバ６とディスクドライバ３３とにセグメントの転送を指示する。その後処理はステップＳ４１に戻る。
【０１０６】
又、ステップＳ４２において階層移動指示を未受信の場合（ステップＳ４２のＮＯルート参照）も、階層化ドライバ５はステップＳ４１に戻って階層移動指示の受信を待機する。
次に、階層化ドライバ５によるセグメントの移動後の処理について説明する。
図１９は、実施形態の一例としての階層ストレージシステム１における階層化ドライバ５によるセグメント移動後の処理を示すフローチャート（ステップＳ５１〜Ｓ５６）である。
【０１０７】
ステップＳ５１において、階層化ドライバ５は、階層化ＳＳＤ９とキャッシュ１０間のセグメントの転送の完了を待機する。
ステップＳ５２において、階層化ドライバ５は、転送完了を受信したかどうかを判定する。
転送完了報を受信した場合（ステップＳ５２のＹＥＳルート参照）、ステップＳ５３において、階層化ドライバ５は、階層化テーブル２２内で、転送が完了したエントリを、階層化テーブル２２内で検索する。
【０１０８】
次に、ステップＳ５４において、階層化ドライバ５は、見つかったエントリの状態がＭｏｖｉｎｇ（ＨＤＤ→ＳＳＤ）であるかどうかを判定する。
状態がＭｏｖｉｎｇ（ＨＤＤ→ＳＳＤ）である場合（ステップＳ５４のＹＥＳルート参照）、ステップＳ５５において、階層化ドライバ５は、当該エントリの状態を‘割り当て済み’に変更する。その後処理はステップＳ５１に戻る。
【０１０９】
一方、状態がＭｏｖｉｎｇ（ＨＤＤ→ＳＳＤ）ではない場合（ステップＳ５４のＮＯルート参照）、ステップＳ５６において、階層化ドライバ５は、当該エントリの状態を‘空き’に変更し、対応するＨＤＤオフセット２２２に値ＮＵＬＬを設定する。この場合も処理はステップＳ５１に戻る。
又、ステップＳ５２において転送完了を未受信の場合（ステップＳ５２のＮＯルート参照）も、階層化ドライバ５はステップＳ５１に戻って転送完了の受信を待機する。
【０１１０】
次に、階層化ドライバ５によるユーザＩＯの処理について説明する。
図２０は、実施形態の一例としての階層ストレージシステム１における階層化ドライバ５によるユーザＩＯの処理を示すフローチャート（ステップＳ６１〜Ｓ６６）である。
ステップＳ６１において、階層化ドライバ５は、ユーザＩＯの受信を待機する。ユーザＩＯには、例えば、ＩＯ対象のデータのＨＤＤ７上のオフセット、ＩＯ対象のデータのサイズ、及びＩＯがｒｅａｄ／ｗｒｉｔｅのいずれであるかを示す情報が含まれる。
【０１１１】
ステップＳ６２において、階層化ドライバ５は、ユーザＩＯを受信したかどうかを判定する。
ユーザＩＯを受信した場合（ステップＳ６２のＹＥＳルート参照）、ステップＳ６３において、階層化ドライバ５は、階層化テーブル２２に登録されている各エントリを調べる。そして、このユーザＩＯに含まれるオフセットと、各エントリのオフセット２２１，２２２にユーザＩＯに含まれるセグメントサイズとが一致するエントリが存在するかどうかを調べる。更に、階層化ドライバ５は、そのエントリの状態２２３が‘割り当て済み’であるかどうかを調べる。
一致するエントリが存在しその状態２２３が‘割り当て済み’である場合（ステップＳ６４のＹＥＳルート参照）、ユーザＩＯ対象のデータが階層化ＳＳＤに存在するため、ステップＳ６５において、階層化ドライバ５は、ユーザＩＯを仮想化ＳＳＤ９に送信する。詳細には、階層化ドライバ５のＩＯマップ部２１が、ディスクドライバ３３に対してユーザＩＯの実行を指示する。その後、処理はステップＳ６１に戻る。
【０１１２】
一方、一致するエントリが存在しないか、或いはエントリが存在していてもその状態２２３が‘割り当て済み’ではない場合（ステップＳ６４のＮＯルート参照）、ユーザＩＯ対象のデータはキャッシュ化ストレージ１０に存在する。そのため、ステップＳ６６において、階層化ドライバ５は、ユーザＩＯをキャッシュ化ストレージ１０に送信する。詳細には、階層化ドライバ５のＩＯマップ部２１が、キャッシュドライバ６に対してユーザＩＯの実行を指示する。この場合も処理はステップＳ６１に戻る。
【０１１３】
又、ステップＳ６２においてユーザＩＯを未受信の場合（ステップＳ６２のＮＯルート参照）も、階層化ドライバ５はステップＳ６１に戻ってユーザＩＯの受信を待機する。
次に、図２１〜図２３を参照して、実施形態の一例としての階層ストレージシステム１における処理をまとめる。
図２１は、実施形態の一例としての階層ストレージシステム１における階層化キャッシュモードからライトスルーキャッシュモードへの遷移時の処理を示す図である。
【０１１４】
ステップＳ１０１において、ライトスルー制御部６０のモード切替部６２が、使用モード６３の値を、ｔｉｅｒｉｎｇからｗｔ−ｃａｃｈｅに変更する。
ステップＳ１０２において、モード切替部６２が、ｉｎｓｍｏｄコマンド等を実行して、ライトスルーキャッシュドライバ２４のＯＳへの組み込み（インストール）を行なう。
ステップＳ１０３において、ワークロード分析部１２が、負荷データベース１５から、ＨＤＤ１０のセグメントのうち、ｒｅａｄ比がＸＸ％以上のＨＤＤ１０のオフセット範囲（セグメント）を抽出する。
【０１１５】
そして、ステップＳ１０４において、モード切替部６２は、ワークロード分析部１２が抽出したｒｅａｄ比の高いＨＤＤ１０のセグメントに対するＩＯを、ライトスルーキャッシュドライバ２４に出すよう、階層化ドライバ５に指示する。
図２２は、実施形態の一例としての階層ストレージシステム１におけるライトスルーキャッシュモードから階層化キャッシュモードへの遷移時の処理を示す図である。
【０１１６】
ステップＳ１１１において、ワークロード分析部１２が、ＨＤＤ１０においてノマディックワークロードスパイクの発生を検出する。
次にステップＳ１１２において、モード切替部６２は、ＨＤＤ１０に対する全ＩＯを、キャッシュドライバ６に出すよう、階層化ドライバ５に指示する。
ステップＳ１１３において、モード切替部６２は、ライトスルーキャッシュドライバ２４を階層化ドライバ５から切り離し、例えばｒｍｍｏｄコマンドを実行して、ライトスルーキャッシュドライバ２４をＯＳ４から削除する。
【０１１７】
ステップＳ１１４において、ライトスルー制御部６０のモード切替部６２が、使用モード６３の値を、ｗｔ−ｃａｃｈｅからｔｉｅｒｉｎｇに変更する。
図２３は、実施形態の一例としての階層ストレージシステム１における階層化キャッシュモードの処理を示す図である。
ステップＳ１２１において、データ収集部１１によりｂｌｋｔｒａｃｅコマンド４１が実行されてＨＤＤ１０のＩＯ負荷値が負荷データベース１５に登録される。
【０１１８】
ステップＳ１２２において、ワークロード分析部１２が、ステップＳ１２１でｂｌｋｔｒａｃｅコマンド４１の実行結果が登録された負荷データベース１５を用いて、ノマディックワークロードスパイクの発生がない旨を判定する。
ステップＳ１２３において、データ収集部１１によりｂｌｋｔｒａｃｅコマンド４１が実行されてＨＤＤ１０のＩＯ負荷値が負荷データベース１５に登録される。
【０１１９】
ステップＳ１２４において、ワークロード分析部１２が、ステップＳ１２３でｂｌｋｔｒａｃｅコマンド４１の実行結果が登録された負荷データベース１５を用いて、ノマディックワークロードスパイクの発生がない旨を判定する。
ステップＳ１２５において、データ収集部１１によりｂｌｋｔｒａｃｅコマンド４１が実行されてＨＤＤ１０のＩＯ負荷値が負荷データベース１５に登録される。
【０１２０】
ステップＳ１２６において、ワークロード分析部１２が、ステップＳ１２５でｂｌｋｔｒａｃｅコマンド４１の実行結果が登録された負荷データベース１５を用いて、ノマディックワークロードスパイクの発生を検出する。
ステップＳ１２７において、ワークロード分析部１２は、負荷データベース１５を用いて、階層化ＳＳＤ９に移動させるＨＤＤ１０のセグメントを抽出する。
【０１２１】
ステップＳ１２８において、移動部１４が、ステップＳ１２７で抽出したセグメントの階層化ＳＳＤ９への移動を、階層化ドライバ５に指示する。
ステップＳ１２９において、階層化ドライバ５は、ステップＳ１２８で指示されたセグメントを、ＨＤＤ１０から階層化ＳＳＤ９に移動させる。
ステップＳ１３０において、階層化ドライバ５は、階層化テーブル２２内の、ステップＳ１２８で移動させたセグメントのエントリを更新する。
【０１２２】
ステップＳ１３０Ａにおいて、階層化ドライバ５は、階層化テーブル２２の内容に従って、ユーザＩＯを階層化ＳＳＤ１０又はＨＤＤ１０に振り分ける。詳細には、階層化ドライバ５は、ステップＳ１２８で階層化ＳＳＤ９に移動させたセグメントに対するＩＯは、階層化ＳＳＤ９に振り分ける。
（Ｃ）作用・効果
本開示の技術によれば、階層ストレージシステム１においては、ワークロード分析部１２がＳＳＤ９への移動コスト（移動時間）がその持続時間を超えるノマディックワークロードスパイクを検出すると、移動部１４が当該セグメントをＳＳＤ９へ動的に移動させる。
【０１２３】
ここで、階層ストレージシステム１においては、ＳＳＤ９とＨＤＤ７とが階層化されているため、ＳＳＤ９に空きブロックを作るために、ダーティブロックのライトバックが発生することがない。つまり、一旦データがＳＳＤ９へステージングされた後は、ライトバック負荷等が発生しない。このため、ノマディックワークロードスパイクの発生時でもＳＳＤ９を有効に利用することができる。
【０１２４】
さらに、本階層ストレージシステム１においては、ワークロード分析部１２が持続的ノマディックワークロードスパイクの収束を検出すると、モード切替部６２が、階層化ＳＳＤ９をライトスルーキャッシュとして使用するように動作モードを切り替える。階層化ＳＳＤ９をライトスルーキャッシュモードで使用することにより、ライト対象のデータが全てＨＤＤにも書き込まれるので、ダーティブロックの発生を防ぐことができる。
【０１２５】
又、本階層ストレージシステム１は、上位装置であるホスト（不図示）からｗｒｉｔｅ  ＩＯコマンドを受信した際に、ライトバック方式を採用するストレージ装置よりも、ｗｒｉｔｅ  ＩＯレスポンスを早く上位装置に返すことができる。
さらに、本階層ストレージシステム１においては、ワークロード分析部１２が持続的ノマディックワークロードスパイクの発生を監視している。このため、持続的ノマディックワークロードスパイクが発生した場合でも、階層化ＳＳＤ９を直ちに階層化キャッシュモードに切り替えて、持続的ノマディックワークロードスパイクのデータを階層化ＳＳＤ９に移動させることができる。
【０１２６】
このように、本階層ストレージシステム１では、持続的ノマディックワークロードスパイクの発生時には階層化ＳＳＤ９を階層化キャッシュモードで使用し、持続的ノマディックワークロードスパイクのないときにはライトスルーキャッシュモードで使用できる。
これにより、階層化ＳＳＤ９の利用度を上げることができ、階層化ＳＳＤ９の有効活用を図り、その性能を最大限に引き出すことが可能となる。
【０１２７】
（Ｄ）その他
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上記の実施形態の一例においては、ボリュームが１ＧＢセグメントの単位で区分されるが、ボリュームの区分単位は任意に変更することができる。
【０１２８】
なお、上記の実施形態の一例の階層化ストレージシステム２は、ＨＤＤ７、ライトバックキャッシュとしてのキャッシュＳＳＤ８、及び階層化ＳＳＤ９をそなえていたが、ライトバックキャッシュＳＳＤ８を省略してＨＤＤ７のみを用いることも可能である。
又、上記の実施形態の一例の階層化ストレージシステム２においては、階層化ＳＳＤ９とライトバックキャッシュＳＳＤ８として、別個のＳＳＤを使用している。しかし、１つのＳＳＤを複数の領域にパーティショニングして、２つのパーティションを階層化ＳＳＤ９とライトバックキャッシュＳＳＤ８として使用してもよい。
【０１２９】
更に、第１の記憶装置がＨＤＤであり、第１の記憶装置よりも高速な第２の記憶装置がＳＳＤであるとして記載した。しかし、第１の記憶装置よりも第２の記憶装置のほうが高速であれば、これらの記憶装置がほかのタイプの記憶装置でもよい。
又、上記の実施形態の一例においては、各情報処理装置２に搭載されるＯＳ５４の例としてＬｉｎｕｘを採り上げたが、他のＵＮＩＸ（登録商標）ＯＳや、他のＯＳアーキテクチャのＯＳも使用することもできる。その場合、使用するＯＳの対応するコマンドを使用する。例えば、ＯＳ５４としてＷｉｎｄｏｗｓ（登録商標）を使用する場合、対応するＷｉｎｄｏｗｓコマンドを使用してＩＯ数の情報を収集することができる。
【０１３０】
又、上述した階層ストレージシステム１の各構成、各手段及び各機能は、必要に応じて取捨選択されてもよいし、適宜組み合わせられてもよい。即ち、上述した機能を発揮できるように、上記の各構成及び各機能は取捨選択されたり、適宜組み合わせて用いられたりしてもよい。
又、上記の実施形態の一例においては、処理フローのステップの実行順序を変更してもよい。
【０１３１】
又、階層ストレージシステム１において、上記のフローチャートの処理を組み合わせてもよい。
（Ｅ）付記
（付記１）
第１の記憶装置と、
前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、
前記第１の記憶装置の書込アクセス負荷を監視する監視部と、
前記監視部が監視した前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較する比較部と、
前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、前記比較部によって、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる切替部と、
を有することを特徴とするストレージ装置。
【０１３２】
（付記２）
前記切替部は、前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値を超える状態が所定時間以上継続していると判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませることを特徴とする付記１記載のストレージ装置。
【０１３３】
（付記３）
前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値以下であると判定された場合に、前記切替部は、前記第１の記憶装置の記憶領域のうち、全アクセス負荷に対する読出アクセス負荷の割合が所定値以上である記憶領域に対する書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませることを特徴とする付記１又は２記載のストレージ装置。
【０１３４】
（付記４）
前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が、前記負荷しきい値を超える状態から前記負荷しきい値以下に戻ったと判定された場合に、前記切替部は、前記第２の記憶装置に書き込まれた前記データを前記第１の記憶装置に書き戻させる
ことを特徴とする付記１〜３のいずれか１項に記載のストレージ装置。
【０１３５】
（付記５）
前記ストレージ装置はさらに、
前記第１の記憶装置よりもアクセス速度が高い第３の記憶装置を有し、
前記第３の記憶装置は、
前記第１の記憶装置を制御するドライバであって、前記第３の記憶装置と共通のドライバにより制御されることを特徴とする付記１〜４のいずれか１項に記載のストレージ装置。
【０１３６】
（付記６）
第１の記憶装置と、前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、をそなえるストレージ装置の制御方法であって、
前記第１の記憶装置の書込アクセス負荷を監視し、
前記監視によって得られた前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較し、
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、
前記比較において、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる
ことを特徴とするストレージ装置の制御方法。
【０１３７】
（付記７）
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値を超える状態が所定時間以上継続していると判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませることを特徴とする付記６記載のストレージ装置の制御方法。
【０１３８】
（付記８）
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値以下であると判定された場合に、前記第１の記憶装置の記憶領域のうち、全アクセス負荷に対する読出アクセス負荷の割合が所定値以上である記憶領域に対する書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませることを特徴とする付記６又は７記載のストレージ装置の制御方法。
【０１３９】
（付記９）
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が、前記負荷しきい値を超える状態から前記負荷しきい値以下に戻ったと判定された場合に、前記第２の記憶装置に書き込まれた前記データを前記第１の記憶装置に書き戻させる
ことを特徴とする付記６〜８のいずれか１項に記載のストレージ装置の制御方法。
【０１４０】
（付記１０）
前記ストレージ装置はさらに、
前記第１の記憶装置よりもアクセス速度が高い第３の記憶装置を有し、
前記第３の記憶装置は、
前記第１の記憶装置を制御するドライバであって、前記第３の記憶装置と共通のドライバにより制御されることを特徴とする付記６〜９のいずれか１項に記載のストレージ装置の制御方法。
【０１４１】
（付記１１）
第１の記憶装置と、前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、をそなえるストレージ装置の制御プログラムであって、
前記第１の記憶装置の書込アクセス負荷を監視し、
前記監視によって得られた前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較し、
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、
前記比較において、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる
処理をプロセッサに実行させることを特徴とするストレージ装置の制御プログラム。
【０１４２】
（付記１２）
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値を超える状態が所定時間以上継続していると判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置に書き込ませる処理を前記プロセッサに実行させることを特徴とする付記１１記載のストレージ装置の制御プログラム。
【０１４３】
（付記１３）
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が前記負荷しきい値以下であると判定された場合に、前記第１の記憶装置の記憶領域のうち、全アクセス負荷に対する読出アクセス負荷の割合が所定値以上である記憶領域に対する書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませる処理を前記プロセッサに実行させることを特徴とする付記１１又は１２記載のストレージ装置の制御プログラム。
【０１４４】
（付記１４）
前記比較において、前記第１の記憶装置の前記書込アクセス負荷が、前記負荷しきい値を超える状態から前記負荷しきい値以下に戻ったと判定された場合に、前記第２の記憶装置に書き込まれた前記データを前記第１の記憶装置に書き戻させる
処理を前記プロセッサに実行させることを特徴とする付記１１〜１３のいずれか１項に記載のストレージ装置の制御プログラム。
【０１４５】
（付記１５）
前記ストレージ装置はさらに、
前記第１の記憶装置よりもアクセス速度が高い第３の記憶装置を有し、
前記第３の記憶装置は、
前記第１の記憶装置を制御するドライバであって、前記第３の記憶装置と共通のドライバにより制御されることを特徴とする付記１１〜１４のいずれか１項に記載のストレージ装置の制御プログラム。
【０１４６】
（付記１６）
第１の記憶装置と、
前記第１の記憶装置よりもアクセス速度が高い第２の記憶装置と、
前記第１の記憶装置の書込アクセス負荷を監視する監視部と、
前記監視部が監視した前記第１の記憶装置の前記書込アクセス負荷と負荷しきい値とを比較する比較部と、
前記比較部によって、前記第１の記憶装置の前記書込アクセス負荷が負荷しきい値以下であると判定された場合に、当該書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置に書き込ませ、前記比較部によって、前記書込アクセス負荷が前記負荷しきい値を超えたと判定された場合に、前記書込アクセスの対象データを前記第１の記憶装置及び前記第２の記憶装置のいずれかに書き込ませる切替部と、
を有することを特徴とするストレージ装置。
【符号の説明】
【０１４７】
１          階層ストレージシステム（ストレージシステム）
２          情報処理装置
３          階層化管理部
４          ＯＳ
５          階層化ドライバ
６          キャッシュドライバ
７          ＨＤＤ（第１の記憶装置）
８          キャッシュＳＳＤ（第３の記憶装置）
９          階層化ＳＳＤ（第２の記憶装置）
１０        フラッシュキャッシュ
１１        データ収集部
１２        ワークロード分析部（監視部）
１３        転送テーブル
１４        移動部
１５        負荷データベース
２１        ＩＯマップ部
２２        階層化テーブル
２４        ライトスルーキャッシュドライバ
３１〜３４  ディスクドライバ
４１        ｂｌｋｔｒａｃｅコマンド
４２        ｉｏｓｔａｔコマンド
５１        ＣＰＵ（プロセッサ）
５２        メモリ
６０        ライトスルー制御部
６１        切替判定部（比較部）
６２        モード切替部（切替部）
６３        使用モード
【図１】
2015095198.tif 000004
【図２】
2015095198.tif 000005
【図３】
2015095198.tif 000006
【図４】
2015095198.tif 000007
【図５】
2015095198.tif 000008
【図６】
2015095198.tif 000009
【図７】
2015095198.tif 000010
【図８】
2015095198.tif 000011
【図９】
2015095198.tif 000012
【図１０】
2015095198.tif 000013
【図１１】
2015095198.tif 000014
【図１２】
2015095198.tif 000015
【図１３】
2015095198.tif 000016
【図１４】
2015095198.tif 000017
【図１５】
2015095198.tif 000018
【図１６】
2015095198.tif 000019
【図１７】
2015095198.tif 000020
【図１８】
2015095198.tif 000021
【図１９】
2015095198.tif 000022
【図２０】
2015095198.tif 000023
【図２１】
2015095198.tif 000024
【図２２】
2015095198.tif 000025
【図２３】
2015095198.tif 000026