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