(57)【特許請求の範囲】
【請求項１】
データの入出力要求をするホスト計算機とネットワークを介して接続するストレージ装置であって、
性能の異なる複数種類の記憶装置と、
前記複数種類の記憶装置のそれぞれにより提供される各記憶領域をそれぞれ異なる複数種類の記憶階層により管理するとともに、前記ホスト計算機からの前記データの書き込み要求に応じて、前記複数種類の記憶階層のうち何れかの記憶階層から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、
を備え、
前記制御部は、
前記ホスト計算機から前記データの入出力要求があった場合に、該入出力要求に対応する前記仮想ボリュームの対象領域に対して最上位の記憶階層からページ単位で記憶領域を割り当て、
前記ホスト計算機からの前記データの入出力要求に対する処理速度に応じて、前記仮想ボリュームの所定の領域に対するページ単位の記憶領域の割り当てを、上位の記憶階層から下位の記憶階層に変更し、
ユーザの指定に応じて、前記最上位の記憶階層の所定容量を余白領域とし、
前記ホスト計算機からの前記データの入出力要求に対する処理速度に基づいて、前記最上位の記憶階層の空き容量が枯渇する時刻及び前記余白領域を確保する時間を算出し、
前記空き容量が枯渇する時刻及び前記余白領域を確保する時間から、前記仮想ボリュームの所定の領域に対するページ単位の記憶領域の割り当てを、前記最上位の記憶階層から該最上位の記憶階層より下位の記憶階層に変更する
ことを特徴とするストレージ装置。
【請求項２】
前記制御部は、
該入出力要求に対応する前記仮想ボリュームの対象領域が、前記最上位の記憶階層以外の記憶階層が割り当てられている領域である場合に、該領域に対するページ単位の記憶領域の割り当てを、前記最上位以外の記憶階層から該最上位の記憶階層より下位の記憶階層に変更する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、
前記ホスト計算機から前記データの入出力要求があった場合に、
該入出力要求に対応する前記仮想ボリュームの対象領域が、未だ記憶領域が割り当てられていない領域である場合に、前記最上位の記憶階層からページ単位で記憶領域を割り当てる
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記制御部は、
前記ユーザにより指定された前記最上位の記憶階層の容量に、固定割合の容量を加算した容量を余白領域とする
ことを特徴とする請求項１に記載のストレージ装置。
【請求項５】
前記制御部は、
前記最上位の記憶階層の空き容量を、前記ホスト計算機からの前記最上位の記憶階層に対する前記データの入出力要求に対する処理速度で除算して、前記最上位の記憶階層の空き容量が枯渇する時刻を算出する、
ことを特徴とする請求項１に記載のストレージ装置。
【請求項６】
前記最上位の記憶階層の余白領域の容量を、前記ホスト計算機からの前記最上位の記憶階層の下位の記憶階層に対する前記データの入出力要求に対する処理速度で除算して、前記余白領域を確保する時間を算出する、
ことを特徴とする請求項１に記載のストレージ装置。
【請求項７】
前記ホスト計算機からの前記データの入出力要求に対する処理速度は、過去１分間の実測値の平均値から算出する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項８】
性能の異なる複数種類の記憶装置と、前記複数種類の記憶装置のそれぞれにより提供される各記憶領域をそれぞれ異なる複数種類の記憶階層により管理するとともに、前記複数種類の記憶階層のうちの何れかの記憶階層から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部とを有するストレージ装置におけるデータ管理方法において、
前記制御部が、前記ホスト計算機から前記データの入出力要求があった場合に、該入出力要求に対応する前記仮想ボリュームの対象領域に対して最上位の記憶階層からページ単位で記憶領域を割り当てる第１のステップと、
前記制御部が、前記ホスト計算機からの前記データの入出力要求に対する処理速度に応じて、前記仮想ボリュームの所定の領域に対するページ単位の記憶領域の割り当てを、上位の記憶階層から下位の記憶階層に変更する第２のステップと、
前記制御部が、ユーザの指定に応じて、前記最上位の記憶階層の所定容量を余白領域とし、前記ホスト計算機からの前記データの入出力要求に対する処理速度に基づいて、前記最上位の記憶階層の空き容量が枯渇する時刻及び前記余白領域を確保する時間を算出する第３のステップと、
前記制御部が、空き容量が枯渇する時刻と前記余白領域を確保する時間から、前記仮想ボリュームの所定の領域に対するページ単位の記憶領域の割り当てを、前記最上位の記憶階層から該最上位の記憶階層より下位の記憶階層に変更する第４のステップと、  
を含むことを特徴とするデータ管理方法。
【請求項９】
前記第１のステップにおいて、前記制御部が、該入出力要求に対応する前記仮想ボリュームの対象領域が、前記最上位の記憶階層以外の記憶階層が割り当てられている領域である場合に、該領域に対するページ単位の記憶領域の割り当てを、前記最上位以外の記憶階層から該最上位の記憶階層より下位の記憶階層に変更する
ことを特徴とする請求項８に記載のデータ管理方法。
【請求項１０】
前記第１のステップにおいて、前記制御部が、前記ホスト計算機から前記データの入出力要求があった場合に、該入出力要求に対応する前記仮想ボリュームの対象領域が、未だ記憶領域が割り当てられていない領域である場合に、前記最上位の記憶階層からページ単位で記憶領域を割り当てる
ことを特徴とする請求項８に記載のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びデータ管理方法に関し、例えば、階層型データ管理機能が搭載されたストレージ装置に適用して好適なるものである。
【背景技術】
【０００２】
近年、ストレージ装置に搭載される機能の１つとして、シンプロビジョニング（Thin Provisioning）と呼ばれる仮想化機能が注目されている。シンプロビジョニング機能は、ホスト計算機に対して仮想的な論理ボリューム（以下、これを仮想ボリュームと呼ぶ）を提供し、ホスト計算機から仮想ボリュームに対するデータの書込み要求が与えられたときに、仮想ボリュームに対して動的に記憶領域を割り当てる機能である。このようなシンプロビジョニング機能によれば、現実に提供可能な記憶領域よりも大きな容量の仮想ボリュームをホスト計算機に提供することができ、予め用意すべきストレージ装置内の物理的な記憶容量を削減して、安価に計算機システムを構築できるという利点がある。
【０００３】
また、このようなシンプロビジョニング機能が搭載されたストレージ装置におけるデータ管理方法として、階層型データ管理方法が従来から提案されている（例えば特許文献１）。階層型データ管理方法は、ストレージ装置に搭載された性能の異なる複数種類の記憶装置によりそれぞれ提供される各記憶領域をそれぞれ異なる複数種類の記憶階層として管理し、仮想ボリュームにおけるアクセス頻度の高いデータが格納された領域に対しては高速及び高性能の記憶階層から記憶領域を割り当て、仮想ボリュームにおけるアクセス頻度の低いデータが格納された領域に対しては低速及び低性能の記憶階層から記憶領域を割り当てる方法である。このような階層型データ管理方法によれば、ストレージ装置におけるコストパフォーマンスの向上を図ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１１／０１６７２３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記した階層型データ管理方法では、アクセス頻度に応じて記憶領域（ページ）の割当先を決定していくため、１度アクセスされたページに対して、短い時間の間に再びアクセスされる可能性が高いにもかかわらず、下位の階層に割り当てられたページに対するアクセスが急激に増えても、当該ページが上位階層に割り当てられるまでには時間がかかってしまい、アクセス頻度に見合った応答速度を得ることができないという問題があった。
【０００６】
本発明は以上の点を考慮してなされたもので、特定のページの急激なアクセス頻度の増加に対して最適なページ配置を提供することが可能なストレージ装置及びデータ管理方法を提案しようとするものである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するために本発明においては、データの入出力要求をするホスト計算機とネットワークを介して接続するストレージ装置であって、性能の異なる複数種類の記憶装置と、前記複数種類の記憶装置のそれぞれにより提供される各記憶領域をそれぞれ異なる複数種類の記憶階層により管理するとともに、前記ホスト計算機からの前記データの書き込み要求に応じて、前記複数種類の記憶階層のうち何れかの記憶階層から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、を備え、前記制御部は、前記ホスト計算機から前記データの入出力要求があった場合に、該入出力要求に対応する前記仮想ボリュームの対象領域に対して最上位の記憶階層からページ単位で記憶領域を割り当て、前記ホスト計算機からの前記データの入出力要求に対する処理速度に応じて、前記仮想ボリュームの所定の領域に対するページ単位の記憶領域の割り当てを、上位の記憶階層から下位の記憶階層に変更し、ユーザの指定に応じて、前記最上位の記憶階層の所定容量を余白領域とし、前記ホスト計算機からの前記データの入出力要求に対する処理速度に基づいて、前記最上位の記憶階層の空き容量が枯渇する時刻及び前記余白領域を確保する時間を算出し、前記空き容量が枯渇する時刻及び前記余白領域を確保する時間から、前記仮想ボリュームの所定の領域に対するページ単位の記憶領域の割り当てを、前記最上位の記憶階層から該最上位の記憶階層より下位の記憶階層に変更することを特徴とするストレージ装置が提供される。
【０００８】
かかる構成によれば、ホスト計算機からアクセスがあったページは、最上位の記憶階層に配置され、ホスト計算機からの入出力要求に対する処理速度に応じて、最上位の記憶階層のページを下位の記憶階層に移動する。これにより、ホスト計算機からのアクセスに対して最適なコマンド応答時間を期待させるとともに、ホスト計算機からの入出力処理の速度に応じて最適なページ配置を実行することが可能となる。
【発明の効果】
【０００９】
本発明によれば、特定のページの急激なアクセス頻度の増加に対して最適なページ配置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るストレージシステムのハードウェア構成を示すブロック図である。
【図２】同実施形態にかかるホスト計算機のハードウェア構成を示すブロック図である。
【図３】同実施形態にかかる管理計算機のハードウェア構成を示すブロック図である。
【図４】同実施形態にかかるストレージ装置のハードウェア構成を示すブロック図である。
【図５】同実施形態にかかるストレージ装置の論理構成を示すブロック図である。
【図６】同実施形態にかかるデータ管理方法の概要を説明する説明図である。
【図７】同実施形態にかかるストレージ装置のソフトウェア構成を示すブロック図である。
【図８】同実施形態にかかるプールスケジュール管理テーブルの内容を示す図表である。
【図９】同実施形態にかかるプールスケジュール入力画面の一例を示す概念図である。
【図１０】同実施形態にかかるページ配置先管理テーブルの内容を示す図表である。
【図１１】同実施形態にかかるプロモーション実行予約キューの内容を示す図表である。
【図１２】同実施形態にかかるデモーション実行予約キューの内容を示す図表である。
【図１３】同実施形態にかかるデモーション実行予約キューの内容を示す図表である。
【図１４】同実施形態にかかる計算機システムにおけるデータ書き込み処理の流れを示すフローチャートである。
【図１５】同実施形態にかかるデータの書き込み処理の流れを示すフローチャートである。
【図１６】同実施形態にかかる計算機システムにおけるデータ読み出し処理の流れを示すフローチャートである。
【図１７】同実施形態にかかる計算機システムにおけるデータ読み出し処理の流れを示すフローチャートである。
【図１８】同実施形態にかかる限界マージン入力処理の流れを示すフローチャートである。
【図１９】同実施形態にかかる目安マージン算出処理の流れを示すフローチャートである。
【図２０】同実施形態にかかるフリー容量枯渇時刻算出処理の流れを示すフローチャートである。
【図２１】同実施形態にかかる目安マージン確保時間算出処理の流れを示すフローチャートである。
【図２２】同実施形態にかかるデモーション開始時刻算出処理の流れを示すフローチャートである。
【図２３】同実施形態にかかる目安マージン算出処理の流れを示すフローチャートである。
【図２４】同実施形態にかかるフリー容量枯渇時刻算出処理の流れを示すフローチャートである。
【図２５】同実施形態にかかる目安マージン確保時間算出処理の流れを示すフローチャートである。
【図２６】同実施形態にかかるデモーション開始時刻算出処理の流れを示すフローチャートである。
【図２７】同実施形態にかかるプロモーション判定処理の流れを示すフローチャートである。
【図２８】同実施形態にかかるプロモーション処理の流れを示すフローチャートである。
【図２９】同実施形態にかかるデモーション判定処理の流れを示すフローチャートである。
【図３０】同実施形態にかかるデモーション処理の流れを示すフローチャートである。
【図３１】同実施形態にかかるデモーション処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下図面について、本発明の一実施の形態を詳述する。
【００１２】
（１）計算機システムの構成
（１−１）計算機システムのハードウェア構成
まず、本実施の形態にかかる計算機システム１のハードウェア構成について説明する。図１に示すように、計算機システム１は、ホスト計算機１００と、管理計算機２００と、ストレージ装置３００とから構成されている。
【００１３】
ホスト計算機１００は、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。ホスト計算機１００は、ストレージ装置３００に格納されているデータを参照したり更新したりするために、ネットワークを介してストレージ装置３００に対してリード要求またはライト要求を送信する。また、ホスト計算機１００は、ホストＩ／Ｏネットワーク４００を介してストレージ装置３００と接続されている。ホストＩ／Ｏネットワーク４００は、例えば、ＳＡＮ（Storage Area Network）などから構成され、装置間の通信は、例えばファイバチャネルプロトコルに従って行われる。
【００１４】
ホストＩ／Ｏネットワーク４００は、例えば、ＬＡＮ（Local Area Network）、インターネット、公衆回線または専用回線などであってもよい。ホストＩ／Ｏネットワーク４００がＬＡＮの場合には、装置間の通信は、例えばＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコルに従って行われる。
【００１５】
管理計算機２００は、ＣＰＵ及びメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。管理計算機２００は、管理ＬＡＮネットワーク４１０を介してストレージ装置３００と接続されている。管理ＬＡＮネットワーク４１０は、例えば、ＳＡＮまたはＬＡＮなどから構成される。
【００１６】
また、管理計算機２００のメモリに記憶されているプログラムは、ストレージ装置３００の記憶媒体等を管理するプログラムであって、例えば、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）グループの構成やＲＡＩＤグループの一部から構成される論理ボリュームの容量等を管理する。管理計算機２００は、ユーザ操作等に応じたコマンドをストレージ装置３００に送信してＲＡＩＤの構成情報等を変更したりする。
【００１７】
ストレージ装置３００は、ホストＩ／Ｏネットワーク４００を介してホスト計算機１００と接続され、ホスト計算機１００から送信されたコマンドを解釈してストレージ装置内の記憶媒体へのリード／ライトを実行する。また、ストレージ装置３００は、管理ＬＡＮネットワーク４１０を介して管理計算機２００と接続され、管理計算機２００からの指示に応じてＲＡＩＤ構成を変更したりする。
【００１８】
（１−２）ホスト計算機のハードウェア構成
ホスト計算機１００は、図２に示すように、ＣＰＵ１１０、メモリ１２０、通信インタフェース（図中通信Ｉ／Ｆ）１３０、補助記憶装置１４０、入力装置１５０、出力装置１６０及び記憶装置１８０を備える。
【００１９】
ＣＰＵ１１０は、演算処理装置および制御装置として機能し、各種プログラムに従ってホスト計算機１００内の動作全般を制御する。メモリ１２０は、ＣＰＵ１１０が使用するプログラムや演算パラメータ等を記憶したり、ＣＰＵ１１０の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶したりする。
【００２０】
通信インタフェース１３０は、ホストＩ／Ｏネットワーク４００に接続するための通信デバイス等で構成された通信インタフェースである。また、通信インタフェース１３０は、無線ＬＡＮ（Local Area Network）対応通信装置であっても、ワイヤレスＵＳＢ対応通信装置であっても、有線による通信を行うワイヤー通信装置であってもよい。
【００２１】
補助記憶装置１４０は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記憶媒体などである。入力装置１５０は、例えば、マウス、キーボード、タッチパネル、ボタン、マイク、スイッチおよびレバーなどユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、ＣＰＵ１１０に出力する入力制御回路などから構成されている。出力装置１６０は、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置、ＯＬＥＤ（Organic Light Emitting Display）装置およびランプなどの表示装置と、スピーカおよびヘッドホンなどの音声出力装置で構成される。
【００２２】
記憶装置１８０は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置などを含み、例えば、ＨＤＤ（Hard Disk Drive）で構成される。
【００２３】
（１−３）管理計算機のハードウェア構成
管理計算機２００は、図３に示すように、ＣＰＵ２１０、メモリ２２０、通信インタフェース（図中通信Ｉ／Ｆ）２３０、補助記憶装置２４０、入力装置２５０、出力装置２６０及び記憶装置２８０を備える。
【００２４】
ＣＰＵ２１０は、演算処理装置および制御装置として機能し、各種プログラムに従って管理計算機２００内の動作全般を制御する。メモリ２２０は、ＣＰＵ２１０が使用するプログラムや演算パラメータ等を記憶したり、ＣＰＵ２１０の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶したりする。
【００２５】
通信インタフェース２３０は、ホストＩ／Ｏネットワーク４００に接続するための通信デバイス等で構成された通信インタフェースである。また、通信インタフェース２３０は、無線ＬＡＮ（Local Area Network）対応通信装置であっても、ワイヤレスＵＳＢ対応通信装置であっても、有線による通信を行うワイヤー通信装置であってもよい。
【００２６】
補助記憶装置２４０は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記憶媒体などである。入力装置２５０は、例えば、マウス、キーボード、タッチパネル、ボタン、マイク、スイッチおよびレバーなどユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、ＣＰＵ２１０に出力する入力制御回路などから構成されている。出力装置２６０は、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置、ＯＬＥＤ（Organic Light Emitting Display）装置およびランプなどの表示装置と、スピーカおよびヘッドホンなどの音声出力装置で構成される。
【００２７】
記憶装置２８０は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置などを含み、例えば、ＨＤＤ（Hard Disk Drive）で構成される。
【００２８】
（１−４）ストレージ装置のハードウェア構成
図４に示すように、ストレージ装置３００は、基本筺体３１０、複数の増設筺体３２０から構成される。
【００２９】
ストレージ装置３００は、基本筺体３１０と複数の増設筺体３２０とが直列に接続されることにより構成されている。基本筺体３１０は、複数のディスクコントローラ３３０と、複数のハードディスクドライブ３５０とを備えて構成されている。
【００３０】
各ディスクコントローラ３３０は、ＣＰＵ３３１、ブリッジ３３２、メモリ３３３、通信インタフェース（図中通信Ｉ／Ｆ）３３４、データコントローラ（図中ＤＣＴＬ）３３５、ドライブインタフェース（図中ドライブＩ／Ｆ）３３６、キャッシュメモリ（図中ＣＭ）３３７及びスイッチ３３８を備えている。
【００３１】
ＣＰＵ３３１は、ホスト計算機１００からのデータ入出力要求に応答して、複数のハードディスクドライブ３５０へのＩ／Ｏ処理（ライトアクセス、又はリードアクセス）を制御する。ブリッジ３３２は、ＣＰＵ３３１、メモリ３３３、及びデータコントローラ３３５を相互に接続する。メモリ３３３は、ＣＰＵ３３１の各種プログラムを格納する他、ＣＰＵ３３１のワークエリアとして機能する。通信インタフェース（図中通信Ｉ／Ｆ）３３４は、ホスト計算機１００との間のインタフェースを制御するコントローラであり、例えば、ファイバチャネルプロトコルによるホストシステムからのブロックアクセス要求を受信する機能を有する。
【００３２】
データコントローラ（図中ＤＣＴＬ）３３５は、ブリッジ３３２及びキャッシュメモリ３３７を相互に接続し、ホスト計算機１００とハードディスクドライブ３５０との間のデータ転送を制御する。具体的には、ホスト計算機１００からのライトアクセスが行われると、データコントローラ３３５は、ホスト計算機１００から受け取ったライトデータ（ダーティデータ）をキャッシュメモリ３３７に書き込む。その後、キャッシュメモリ３３７上のライトデータがある程度蓄積された段階で、データコントローラ３３５は、そのライトデータをハードディスクドライブ３５０に非同期書き込みする。一方、ホスト計算機１００からのリードアクセスが行われると、データコントローラ３３５は、ハードディスクドライブ３５０から読み取ったリードデータをキャッシュメモリ３３７に書き込むとともに、ホスト計算機１００に転送する。
【００３３】
ドライブインタフェース（図中ドライブＩ／Ｆ）３３６は、ファイバチャネルプロトコルとＳＡＴＡプロトコルとの間でプロトコル変換を行う。ドライブインタフェース３３６は、スイッチ３３８に接続している。スイッチ３３８は、ハードディスクドライブ３５０とドライブインタフェース３３６とを接続する。
【００３４】
また、コントローラ３３０は、複数のハードディスクドライブ３５０をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤ方式においては、複数のハードディスクドライブ３５０が一つのＲＡＩＤグループ３４０として管理される。ＲＡＩＤグループ３４０上には、ホスト計算機１００からのアクセス単位である複数の論理ボリュームが定義されている。各論理ボリュームには、ＬＵＮ（Logical Unit Number）がアサインされる。
【００３５】
また、ストレージ装置３００は、基本筺体３１０に増設筺体３２０を増設することにより、記憶容量を拡張することができる。
【００３６】
増設筺体３２０は、スイッチ３３８を介して基本筺体３１０のコントローラ３３０と接続されている。基本筺体３１０と同様に、コントローラ３３０は、複数のハードディスクドライブ３５０をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。
【００３７】
（１−５）ストレージ装置の論理構成
図５に、ストレージ装置３００の論理構成を示す。この図５からも明らかなように、ストレージ装置３００では、同一種別（ＳＳＤ、ＳＡＳ／ＦＣ及びＳＡＴＡ等）の１又は複数の記憶装置３５０（図４のハードディスクドライブ３５０）によりＲＡＩＤグループＲＧが定義され、１つのＲＡＩＤグループを構成する１又は複数の記憶装置３５０により提供される記憶領域上に１又は複数のプールボリュームＰＶＯＬが定義される。同一種別の記憶装置３５０により提供される記憶領域上に定義された各プールボリュームＰＶＯＬは同一種別の記憶階層ＳＴとして管理され、互いに異なる記憶階層ＳＴに属する複数のプールボリュームＰＶＯＬが１つの仮想ボリュームプールＶＶＰとして管理される。
【００３８】
本実施の形態の場合、上述のように記憶装置３５０としてＳＳＤ、ＳＡＳディスク、ＦＣディスク及びＳＡＴＡディスクの４種類の記憶装置が用いられており、１又は複数のＳＳＤが提供する記憶領域上に定義されたプールボリュームＰＶＯＬがＴｉｅｒ１という記憶階層（以下、これを第１記憶階層と呼ぶ）ＳＴとして管理され、１又は複数のＳＡＳディスク又はＦＣディスクが提供する記憶領域上に定義されたプールボリュームＰＶＯＬがＴｉｅｒ２という記憶階層（以下、これを第２記憶階層と呼ぶ）ＳＴとして管理され、１又は複数のＳＡＴＡディスクが提供する記憶領域上に定義されたプールボリュームＰＶＯＬがＴｉｅｒ３という記憶階層（以下、これを第３記憶階層と呼ぶ）ＳＴとして管理される。
【００３９】
なお、これら記憶装置３５０の種別（ＳＳＤ、ＳＡＳ／ＦＣ及びＳＡＴＡ）のうち、最も信頼性及び応答性能が高いのはＳＳＤであり、信頼性及び応答性能が次いで高いのはＳＡＳディスク又はＦＣディスクであり、信頼性及び応答性能が最も低いのはＳＡＴＡディスクである。よって、本実施の形態の場合、仮想ボリュームプールＶＶＰを構成する第１〜第３記憶階層ＳＴのうち、最も信頼性及び応答性能が高い記憶階層は第１記憶階層ＳＴであり、信頼性及び応答性能が次いで高い記憶階層は第２記憶階層ＳＴであり、最も信頼性及び応答性能が低い記憶階層は第３記憶階層ＳＴである。
【００４０】
一方、ストレージ装置３００内には、１又は複数の仮想ボリュームＶＶＯＬが定義される。各仮想ボリュームＶＶＯＬには、それぞれ固有の識別子（以下、これをＬＵＮ（Logical Unit Number）と呼ぶ）が付与される。また仮想ボリュームＶＶＯＬ内の領域は、所定の大きさのブロック（以下、これを論理ブロックと呼ぶ）に分割され、各論理ブロックにそれぞれ付与された固有の番号（以下、これをＬＢＡ（Logical Block Address）と呼ぶ）を用いて管理される。ホスト計算機１００から仮想ボリュームＶＶＯＬに対するデータの入出力要求（書込み要求及び読出し要求）は、データを読み書きする仮想ボリュームＶＶＯＬのＬＵＮと、当該仮想ボリュームＶＶＯＬ内のデータを読み書きする領域の先頭の論理ブロックのＬＢＡと、データ長とを指定して行われる。
【００４１】
各仮想ボリュームＶＶＯＬには、それぞれ何れか１つの仮想ボリュームプールＶＶＰが予め対応付けられる。そして、ストレージ装置３００は、ホスト計算機１００から仮想ボリュームＶＶＯＬに対するデータの書込み要求を受信した場合、その書込み要求において指定された仮想ボリュームＶＶＯＬ内の当該書込み要求において指定された領域に対して、当該仮想ボリュームＶＶＯＬに対応付けられた仮想ボリュームプールＶＶＰから必要量の記憶領域をページと呼ばれる所定の大きさ単位で割り当て、割り当てたページに書込み対象のデータを書き込む。
【００４２】
ここで、ページとは、仮想ボリュームＶＶＯＬに対応付けられた仮想ボリュームプールＶＶＰを構成する何れかの記憶階層（第１〜第３記憶階層）ＳＴから仮想ボリュームＶＶＯＬに対して割り当てられる記憶領域の基本単位である。以下の説明では、１つのページと仮想ボリュームＶＶＯＬの１つの論理ブロックとは同じ大きさの記憶領域であるものとして説明するが、必ずしもこれに限られない。
【００４３】
またストレージ装置３００は、仮想ボリュームＶＶＯＬに対して対応する仮想ボリュームプールＶＶＰからページを割り当てる際、割当て可能なプールボリュームＰＶＯＬのうち、最も信頼性及び応答性能が高い記憶階層ＳＴに属するプールボリュームＰＶＯＬから順番にページを割り当てる。従って、ストレージ装置３００は、第１記憶階層ＳＴに属するプールボリュームＰＶＯＬ、第２記憶階層ＳＴに属するプールボリュームＰＶＯＬ及び第３記憶階層ＳＴに属するプールボリュームＰＶＯＬの順番で、そのプールボリュームＰＶＯＬに未割当てのページが枯渇するまで、そのプールボリュームＰＶＯＬから仮想ボリュームＶＶＯＬにページを割り当てていくことになる。
【００４４】
他方、ストレージ装置３００は、上述のような仮想ボリュームＶＶＯＬに対するページの割り当て処理と並行して、仮想ボリュームＶＶＯＬの各論理ブロックに対する単位時間当たりのホスト計算機１００からのアクセス頻度を監視する。
【００４５】
そしてストレージ装置３００は、単位時間当たりのアクセス頻度に基づいて、定期的又は不定期に、アクセス頻度の高い論理ブロックに対してはより信頼性及び応答性能の高い第１又は第２記憶階層ＳＴからページを割り当て、アクセス頻度の低い論理ブロックに対してはより信頼性及び応答性能の低い第２又は第３記憶階層ＳＴからページを割り当てるように、必要に応じてデータを第１〜第３記憶階層ＳＴ間で移行させる。
【００４６】
（１−６）本実施形態によるデータ管理方法の概要
次に、ストレージ装置３００におけるデータ管理方法の概要について説明する。ストレージ装置３００には、上記したように、階層型データ管理機能が搭載されており、仮想ボリュームにおけるアクセス頻度の高いデータが格納された領域に対しては高速及び高性能の記憶階層から記憶領域が割り当てられ、仮想ボリュームにおけるアクセス頻度の低いデータが格納された領域に対しては低速及び低性能の記憶階層から記憶領域が割り当てられる。このような階層型データ管理機能によれば、ストレージ装置３００におけるコストパフォーマンスの向上を図ることができる。
【００４７】
しかし、上記した階層型データ管理方法では、ページ毎のアクセス頻度により記憶領域の割当先の階層が決定されるため、１度アクセスされたページが適切な階層に配置されるまでに数時間以上の時間を要する。このため、急遽頻繁にアクセスされることとなったページが最上位の階層に配置されて、最適なコマンド応答時間が期待できるまでに時間がかかるという問題があった。
【００４８】
そこで、本実施の形態では、以下の方法によって特定のページの急激なアクセス頻度の増加に対して最適なページ配置を提供している。すなわち、図６に示すように、ホスト計算機１００からの初めてのライトアクセスにより新規にページが割り当てられる場合には、第１記憶階層（Ｔｉｅｒ１）に必ず配置させる。また、既にページが割り当てられている領域に対してライトアクセスがあった場合にも、１回のアクセスによって第１記憶階層（Ｔｉｅｒ１）に必ず配置（プロモーション：Promotion）させる。また、アクセス頻度の低いページから順にＬＲＵアルゴリズムにしたがって現在の階層よりも下位の階層に配置（デモーション：Demotion）させる。これにより、常に直近にアクセスされたページが最上位の記憶階層に配置されるため、急遽アクセスされるようになったページについて、即時に最適なコマンド応答時間を期待することができる。
【００４９】
上記したように、ホスト計算機１００からのアクセスによって、新規に割り当てられたページ、第２記憶階層（Ｔｉｅｒ２）及び第３記憶階層（Ｔｉｅｒ３）に配置されていたページにアクセスがあった場合には、いずれのページも第１記憶階層（Ｔｉｅｒ１）に移動する。また、もともと第１記憶階層（Ｔｉｅｒ１）に配置されていたページはそのまま第１の記憶階層（Ｔｉｅｒ）に配置される。
【００５０】
本実施の形態では、第１記憶階層（Ｔｉｅｒ１）に新たに割り当てられたり、第１記憶階層（Ｔｉｅｒ１）以外の記憶階層から移動したりするページを、第１記憶階層（Ｔｉｅｒ１）の余白領域（以下、余白領域をマージン領域と称して説明する。）に格納する。そして、第１記憶階層（Ｔｉｅｒ１）内に存在するページのうち、アクセス頻度が最も低いページのうち、ＬＲＵ理論によって最もアクセスが古いページを第２記憶階層（Ｔｉｅｒ２）に移動する。同様に、第２記憶階層（Ｔｉｅｒ２）内に存在するページのうち、アクセス頻度が最も低いページのうち、ＬＲＵ理論によって最もアクセスが古いページを第３記憶階層（Ｔｉｅｒ３）に移動する。これにより、１度アクセスのあったページについて、当該アクセスを契機として該ページを第１記憶階層（Ｔｉｅｒ１）にプロモーションするために、第１記憶階層（Ｔｉｅｒ１）に所定量のマージン領域を確保することができる。
【００５１】
また、本実施の形態では、ユーザによって指定された第１記憶階層（Ｔｉｅｒ１）のマージン容量の限界値に応じて、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）にページを移動させる時間を算出する。
【００５２】
具体的に、まず、ユーザに指定されたマージン容量の限界値に所定量を加算したマージン容量（目安マージン容量）を算出する（ＳＴＥＰ０１）。そして、現時点でのホスト計算機１００からの入出力要求に対する処理速度から、現在の第１記憶階層（Ｔｉｅｒ１）のフリー容量が枯渇する時刻（第１記憶階層枯渇時刻）を算出する（ＳＴＥＰ０２）。そして、現時点での第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション速度から、目安マージン容量分だけ第１記憶階層から第２記憶階層へページをデモーションした場合の処理時間（目安マージン確保時間）を算出する（ＳＴＥＰ０３）。そして、第１記憶階層枯渇時刻から目安マージン確保時間を減算することにより、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）にデモーションを開始する時刻（デモーション開始時刻）を算出する（ＳＴＥＰ０４）。
【００５３】
本実施の形態では、上記したＳＴＥＰ０１〜ＳＴＥＰ０４の処理を、例えば１分おきに実施して、その都度、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション開始時刻を更新する。これにより、ホスト計算機１００からの入出力要求に対する処理速度や記憶階層間の移動処理の速度に応じた最適なページ配置を実行することが可能となる。
【００５４】
（１−７）ストレージ装置のソフトウェア構成
次に、ストレージ装置３００のソフトウェア構成について説明する。図７に示すように、ストレージ装置３００は、Ｉ／Ｏ処理部３０１、限界マージン入力処理部３０４、目安マージン算出処理部３０５、フリー容量枯渇時刻算出処理部３０６、目安マージン確保時間算出処理部３０７、デモーション開始時刻算出処理部３０８、プールスケジュール管理テーブル３１１、ページ配置先管理テーブル３１２、プロモーション実行予約キュー３１３及びデモーション実行予約キュー３１４から構成される。
【００５５】
Ｉ／Ｏ処理部３０１は、データ書き込み処理部３０２及びデータ読み出し処理部３０３から構成される。データ書き込み処理部３０２は、ホスト計算機１００からのデータ書き込み要求に応じて、ハードディスクドライブ３５０にデータを書き込む機能を有する。上記したように、本実施の形態では、新規ページに対するデータ書き込み処理があった場合には、第１記憶階層（Ｔｉｅｒ１）のページを優先的に割り当てる。また、データ読み出し処理部３０３は、ホスト計算機１００からのデータ読み出し要求に応じて、ハードディスクドライブ３５０からデータを読み出す機能を有する。
【００５６】
限界マージン入力処理部３０４は、ユーザ入力に応じて指定された第１記憶階層（Ｔｉｅｒ１）のマージン容量の限界値（限界マージン容量）を取得して、目安マージン算出処理部３０５に提供する。また、目安マージン算出処理部３０５は、限界マージン入力処理部３０４から提供された限界マージン容量に所定の固定値を加算して、第１記憶階層（Ｔｉｅｒ１）のマージン容量の目安となる値（第１記憶階層の目安マージン容量）を算出する。例えば、限界マージン容量は、ユーザ入力により、第１記憶階層の総容量の１０〜５０％に設定される。また、限界マージン容量に安全係数として固定値の１０％を加算して目安マージン容量を算出する。例えば、第１記憶階層の総容量が５ＴＢ、ユーザ指定の限界マージンを２０％とした場合、第１記憶階層の目安マージン容量は以下により算出される。
【００５７】
第１記憶階層の目安マージン容量＝第１記憶階層の総容量×（ユーザ指定の第１記憶階層の限界マージン＋安全係数）＝５ＴＢ×（２０％＋１０％）＝１．５ＴＢ
【００５８】
また、目安マージン算出処理部３０５は、第２記憶階層（Ｔｉｅｒ２）の合計容量に対する固定割合（案年係数）に相当する容量を、第２記憶階層（Ｔｉｅｒ２）のマージン容量の目安となる値（第２記憶階層の目安マージン容量）として算出する。例えば、第２記憶階層の総容量が５０ＴＢ、安全係数を１０％とした場合、第２記憶階層の目安マージン容量は以下により算出される。
【００５９】
第２記憶階層の目安マージン容量＝第２記憶階層の総容量×安全係数）＝５０ＴＢ×（１０％）＝５ＴＢ
【００６０】
フリー容量枯渇時刻算出処理部３０６は、現時点でのホスト計算機１００のＩ／Ｏ処理速度を及び第１記憶階層（Ｔｉｅｒ１）の使用容量から第１記憶階層（Ｔｉｅｒ１）の空き容量（フリー容量）が枯渇する時刻（第１記憶階層枯渇時刻）を算出する。ここで、ホスト計算機１００のＩ／Ｏ処理速度は、所定時間内にホスト計算機１００から受け付けるＩ／Ｏデータ量であって、例えば過去１分間の実測値[MB/s]の平均値を利用してもよい。
【００６１】
例えば、現在時刻が２０１２年１月１日０時００分、ホスト計算機１００のＩ／Ｏ処理速度が１００ＭＢ／ｓ、フリー容量が４ＴＢであった場合、第１記憶階層のフリー容量枯渇時刻は、現在時刻に第１記憶階層のフリー容量枯渇までの見込み時間加算することにより算出される。
【００６２】
第１記憶階層のフリー容量枯渇までの見込み時間＝フリー容量／ホスト計算機のＩ／Ｏ処理速度＝４ＴＢ／１００ＭＢ＝４００００[ｓ]＝１１．１１[ｈ]
現在時刻2012/1/1,0:00に上記した第１記憶階層のフリー容量枯渇までの見込み時間を加算すると、第１記憶階層のフリー容量枯渇時刻は、2012/1/1,11:07と算出される。
【００６３】
また、ホスト計算機１００の第１記憶階層（Ｔｉｅｒ１）に対するＩ／Ｏ量は、厳密には、プール全体が受領するホスト計算機１００からの総Ｉ／Ｏ量から第１記憶階層（Ｔｉｅｒ１）上の既存ページに対するアクセスの分を差し引いたＩ／Ｏ量となる。しかし、以下では、第１記憶階層（Ｔｉｅｒ１）上の既存ページに対するアクセスを差し引いたＩ／Ｏ量も含めてホスト計算機からのＩ／Ｏ量としている。
【００６４】
また、フリー容量枯渇時刻算出処理部３０６は、現時点での第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度を利用して、第２記憶階層のフリー容量が枯渇する時刻（第２記憶階層枯渇時刻）を算出する。第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度は、例えば、第２記憶階層（Ｔｉｅｒ２）に対するホスト計算機１００のＩ／Ｏ処理の実測値や、実際に再配置を実施した際の実測値や、各ドライブ種別に基づくカタログの使用や、プール作成時に内部的に実施されるＩ／Ｏ動作テスト中の実測値などを利用してもよい。
【００６５】
例えば、現在時刻が２０１２年１月１日０時００分、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度が５０ＭＢ／ｓ、フリー容量が４０ＴＢであった場合、第２記憶階層のフリー容量枯渇時刻は、現在時刻に第２記憶階層のフリー容量枯渇までの見込み時間加算することにより算出される。
【００６６】
第２記憶階層のフリー容量枯渇までの見込み時間＝フリー容量／第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度＝４０ＴＢ／５０ＭＢ＝８０００００[ｓ]＝２２２．２２[ｈ]
現在時刻2012/1/1,0:00に上記した第２記憶階層のフリー容量枯渇までの見込み時間を加算すると、第２記憶階層のフリー容量枯渇時刻は、2012/1/10,6:15と算出される。
【００６７】
目安マージン確保時間算出処理部３０７は、現時点での第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度を用いて、目安マージン算出処理部３０５により算出された第１記憶階層（Ｔｉｅｒ１）の第１記憶階層の目安マージン容量分だけ第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）に再配置処理を実施した場合の処理時間（第１記憶階層の目安マージン確保時間）を算出する。ここで、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度は、例えば、第２記憶階層（Ｔｉｅｒ２）に対するホスト計算機１００のＩ／Ｏ処理の実測値や、実際に再配置を実施した際の実測値や、各ドライブ種別に基づくカタログの使用や、プール作成時に内部的に実施されるＩ／Ｏ動作テスト中の実測値などを利用してもよい。
【００６８】
例えば、第１記憶階層の目安マージン容量が１．５ＴＢ、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度が５０ＭＢ／ｓであった場合に目安マージン確保時間は以下により算出される。
【００６９】
第１記憶階層の目安マージン確保時間＝目安マージン容量／第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理速度＝１．５[ＴＢ]／５０[ＭＢ／ｓ]＝３００００[ｓ]＝８．３３[ｈ]
【００７０】
また、目安マージン確保時間算出処理部３０７は、現時点での第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）へのデモーション処理速度を用いて、目安マージン算出処理部３０５により算出された第２記憶階層の目安マージン容量分だけ第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）に再配置処理を実施した場合の処理時間（第２記憶階層の目安マージン確保時間）を算出する。
【００７１】
例えば、第２記憶階層の目安マージン容量が５ＴＢ、第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）へのデモーション処理速度が４０ＭＢ／ｓであった場合に目安マージン確保時間は以下により算出される。
【００７２】
第２記憶階層の目安マージン確保時間＝目安マージン容量／第２憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）へのデモーション処理速度＝５[ＴＢ]／４０[ＭＢ／ｓ]＝１２５０００[ｓ]＝３４．７２[ｈ]
【００７３】
デモーション開始時刻算出処理部３０８は、目安マージン確保時間算出処理部３０７により算出された第１記憶階層の目安マージン確保時間を第１記憶階層枯渇時刻から逆算することにより、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理の開始時刻を算出する。
【００７４】
例えば、第１記憶階層枯渇時刻が2012/1/1,11:07、第１記憶階層の目安マージン確保時間が８．３３[ｈ]であった場合に、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）へのデモーション処理の開始時刻は2012/1/1,2:47となる。
【００７５】
また、デモーション開始時刻算出処理部３０８は、目安マージン確保時間算出処理部３０７により算出された第２記憶階層の目安マージン確保時間を第２記憶階層枯渇時刻から逆算することにより、第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）へのデモーション処理の開始時刻を算出する。
【００７６】
例えば、第２記憶階層枯渇時刻が2012/1/10,6:15、第２記憶階層の目安マージン確保時間が３４．７２[ｈ]であった場合に、第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）へのデモーション処理の開始時刻は2012/1/9,5:32となる。
【００７７】
プールスケジュール管理テーブル３１１は、プールスケジュール入力画面５００に入力された情報に基づいてプールの構成情報を管理するテーブルである。プールスケジュール管理テーブル３１１は、図８に示すように、プールＮｏ欄３１１１、ＴｉｅｒＮｏ欄３１１２、限界マージン欄３１１３、安全係数欄３１１４、総容量欄３１１５、フリー容量欄３１１６、使用容量欄３１１７、目安マージン容量欄３１１８、ホストＩ／Ｏ性能欄３１１９、デモーション性能欄３１２０、Ｔｉｅｒ枯渇時刻欄３１２１、目安マージン確保時間欄３１２２及びデモーション開始時刻欄３１２３から構成される。
【００７８】
プールＮｏ欄３１１１には、各プールを識別する番号が格納される。ＴｉｅｒＮｏ欄３１１２には、各プールの記憶階層を識別する番号が格納される。限界マージン欄３１１３には、第１記憶階層（Ｔｉｅｒ１）の限界マージン容量を示す情報が格納される。安全係数欄３１１４には、各記憶階層の目安マージン容量を算出するための安全係数が格納される。総容量欄３１１５には、各記憶階層の総容量を示す情報が格納される。
【００７９】
フリー容量欄３１１６には、各記憶階層の空き容量を示す情報が格納される。使用容量欄３１１７には、各記憶階層の使用容量を示す情報が格納される。目安マージン容量欄３１１８には、各記憶階層の目安マージン容量を示す情報が格納される。ホストＩ／Ｏ性能欄３１１９には、ホスト計算機１００の性能を示す情報が格納される。デモーション性能欄３１２０には、各記憶階層から一つ下位の階層にデモーションする際の性能を示す情報が格納される。Ｔｉｅｒ枯渇時刻欄３１２１には、各記憶階層の現在のフリー容量が枯渇する時刻が格納される。目安マージン確保時間欄３１２２には、目安マージン容量を確保する時間が格納される。デモーション開始時刻欄３１２３、各記憶階層から一つ下位の記憶階層へのデモーションを開始する時刻が格納される。
【００８０】
プールスケジュール入力画面５００は、図９に示すように、ユーザにより各プールを作成するための各種情報を設定する入力画面である。例えば、入力欄５０１には、プール番号が入力され、入力欄５０２には、入力欄５０１において設定されたプールの第１記憶階層の目安マージン容量が入力される。
【００８１】
また、入力欄５０３は、プルダウン表示からＲＡＩＤレベルを選択入力可能とし、入力欄５０４は、プルダウン表示からＲＡＩＤ構成を選択入力可能としている。入力欄５０５は、ハードディスクドライブ３５０の数が入力される。入力欄５０６は、ハードディスクドライブ３５０の種類と、当該ハードディスクドライブ３５０の容量が入力される。また、表示欄５０７には、ストレージ装置３００に割り当てられたハードディスクドライブ３５０の情報が表示される。
【００８２】
ページ配置先管理テーブル３１２は、各ページの配置先に関する情報を管理するテーブルであって、図１０に示すように、ＲＡＩＤグループ（ＲＧ）Ｎｏ欄３１２１、ページＮｏ欄３１２２、カウンタ欄３１２３、最終アクセス日時欄３１２４、プールＮｏ欄３１２５、ＬＵＮｏ欄３１２６、ＬＢＡ欄３１２７、現在Ｔｉｅｒ欄３１２８及び目標Ｔｉｅｒ欄３１２９から構成される。
【００８３】
ＲＡＩＤグループ（ＲＧ）Ｎｏ欄３１２１には、各ＲＡＩＤグループを識別する情報が格納される。ページＮｏ欄３１２２には、各ページを識別する情報が格納される。カウンタ欄３１２３には、各ページへのアクセス回数が格納される。最終アクセス日時欄３１２４には、各ページの最終アクセス日時が格納される。プールＮｏ欄３１２５には、各ページが属するプール番号を示す情報が格納される。ＬＵＮｏ欄３１２６には、各ページが属する論理ボリュームを識別する情報が格納される。ＬＢＡ欄３１２７には、各ページに付与された固有の番号（ＬＢＡ）が格納される。現在Ｔｉｅｒ欄３１２８には、各ページが現在属している記憶階層を示す情報が格納される。目標Ｔｉｅｒ欄３１２９には、各ページが目標とする記憶階層を示す情報が格納される。
【００８４】
プロモーション実行予約キュー３１３は、指定されたページを第１記憶階層（Ｔｉｅｒ１）にプロモーションするための実行予約キューであって、図１１に示すように、ＲＡＩＤグループ（ＲＧ）Ｎｏ欄３１３１に格納されたＲＡＩＤグループの番号とページＮｏ欄３１３２に格納されたページ番号とが対応付けられて格納されている。プロモーション実行予約キュー３１３に格納された順に、実行予約キューの各ページが第１記憶階層（Ｔｉｅｒ１）にプロモーションされる。
【００８５】
デモーション実行予約キュー３１４Ａは、指定されたページを第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）にデモーションするための実行予約キューであって、図１２に示すように、ＲＡＩＤグループ（ＲＧ）Ｎｏ欄３１４１に格納されたＲＡＩＤグループの番号とページＮｏ欄３１４２に格納されたページ番号とが対応付けられて格納されている。デモーション実行予約キュー３１４Ａに格納された順に、実行予約キューの各ページが第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）にデモーションされる。
【００８６】
デモーション実行予約キュー３１４Ｂは、指定されたページを第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）にデモーションするための実行予約キューであって、図１３に示すように、ＲＡＩＤグループ（ＲＧ）Ｎｏ欄３１４１に格納されたＲＡＩＤグループの番号とページＮｏ欄３１４２に格納されたページ番号とが対応付けられて格納されている。デモーション実行予約キュー３１４Ｂに格納された順に、実行予約キューの各ページが第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）にデモーションされる。
【００８７】
（２）計算機システムの動作
（２−１）計算機システムにおけるデータ入出力処理
（２−１−１）データ書き込み処理
次に、計算機システム１におけるデータ入出力処理について説明する。まず、計算機システム１におけるデータ書き込み処理について説明する。図１４に示すように、ホスト計算機１００は、ストレージ装置３００の通信インタフェース３３４（以下、単に通信インタフェース３３４と称して説明する。）にデータ書き込み要求を送信する（Ｓ１００）。
【００８８】
通信インタフェース３３４は、ホスト計算機１００から送信されたデータ書き込み要求を受信して（Ｓ１０１）、データコントローラ３３５にデータ書き込み要求を受信したことを通信する（Ｓ１０２）。
【００８９】
ストレージ装置３００のデータコントローラ３３５（以下、単にデータコントローラ３３５と称して説明する。）は、通信インタフェース３３４からデータ書き込み要求の受信通知を受信して（Ｓ１０３）、ハードディスクドライブ３５０に書き込むデータをキャッシュメモリ３３７に書き込む（Ｓ１０４）。そして、データコントローラ３３５は、ストレージ装置３００のドライブインタフェース３３６（以下、単にドライブインタフェース３３６と称して説明する。）にデータの書き込み要求を送信し、通信インタフェース３３４にデータ書き込みの完了を報告する（Ｓ１０７）。
【００９０】
ステップＳ１０７において、データコントローラ３３５は、ホスト計算機１００から要求されたデータの書き込みに際して、新規ページの割り当てが必要か否かを判定する。具体的に、図１５に示すように、データコントローラ３３５は、ホスト計算機１００から要求されたデータの書き込みに際して、新規ページの割り当てが必要か否かを判定する（Ｓ１２１）。ステップＳ１２１において、新規ページの割り当てが必要であると判定された場合には、データコントローラ３３５は、第１記憶階層（Ｔｉｅｒ１）から優先的にページを割り当てるようにドライブインタフェース３３６に指示する（Ｓ１２２）。ステップＳ１２１において、新規ページの割り当てが必要ではないと判定された場合、すなわち、データの書き込み対象にすでにページが割り当てられている場合には、各記憶階層（Ｔｉｅｒ）の既存のページにアクセスするようにドライブインタフェース３３６に指示する（Ｓ１２３）。
【００９１】
通信インタフェース３３４は、データコントローラ３３５からデータ書き込みの完了を報告された後、ホスト計算機１００に完了報告を送信する（Ｓ１０５）。そしてホスト計算機１００は、データ書き込みの完了報告を通信インタフェース３３４から受信する（Ｓ１０６）。
【００９２】
また、ドライブインタフェース３３６は、データコントローラ３３５からドライブ書き込み要求を受信して（Ｓ１０８）、キューからドライブ書き込み要求を読み出す（Ｓ１０９）。そして、ドライブインタフェース３３６は、ステップＳ１０９においてキューから読み出した書き込みデータを記憶装置（ハードディスクドライブ３５０）に書き込む（Ｓ１１０）。そして、ドライブインタフェース３３６は、データ書き込みの完了報告をデータコントローラ３３５に送信する（Ｓ１１１）。データコントローラ３３５は、ステップＳ１１１においてドライブインタフェース３３６から送信されたデータ書き込みの完了報告を受信する（Ｓ１１２）。
【００９３】
（２−１−２）データ読み出し処理
次に、計算機システム１におけるデータ読み出し処理について説明する。読み出しの際にキャッシュミスした場合、すなわち、読み出し対象となるデータがキャッシュメモリ３３７に格納されていない場合を図１６に示す。また、データ読み出しの際にキャッシュヒットした場合、すなわち、読み出し対象となるデータがキャッシュメモリ３３７に格納されている場合を図１７に示す。
【００９４】
図１６に示すように、ホスト計算機１００は、通信インタフェース３３４にデータ読み出し要求を送信する（Ｓ２００）。通信インタフェース３３４は、ホスト計算機１００から送信されたデータ読み出し要求を受信して、データコントローラ３３５に通知する（Ｓ２０１）。
【００９５】
通信インタフェース３３４からデータ読み出し要求を受信したデータコントローラ３３５は、キャッシュヒットしているかキャッシュミスしているか否か、すなわち、キャッシュメモリ３３７に読み出し対象となるデータが格納されているか否かを判定する（Ｓ２０２）。ステップＳ２０２において、キャッシュミスしている場合、すなわち、キャッシュメモリ３３７に読み出し対象となるデータが格納されていない場合には、データコントローラ３３５は、ドライブインタフェース３３６にデータ読み出し要求を送信する。
【００９６】
ドライブインタフェース３３６は、データコントローラ３３５からデータ読み出し要求を受信して（Ｓ２０３）、読み出し対象となるデータを記憶装置(ハードディスクドライブ３５０)から読み出して（Ｓ２０４）、当該データをデータコントローラ３３５に送信する。
【００９７】
データコントローラ３３５は、ドライブインタフェース３３６から受信した読み出しデータをキャッシュメモリ３３７に書き込み（Ｓ２０５）、当該データを通信インタフェース３３４に転送する（Ｓ２０６）。
【００９８】
通信インタフェース３３４は、データコントローラ３３５から転送された読み出しデータをホスト計算機１００に送信する（Ｓ２０７）。ホスト計算機１００は、通信インタフェース３３４から送信された読み出しデータを受信する（Ｓ２０８）。また、データの読み出し完了報告をホスト計算機１００に送信する（Ｓ２０９）。ホスト計算機１００は、通信インタフェース３３４から送信されたデータの読み出し完了報告を受信する（Ｓ２１０）。
【００９９】
図１７に示すように、ホスト計算機１００は、通信インタフェース３３４にデータ読み出し要求を送信する（Ｓ２１１）。通信インタフェース３３４は、ホスト計算機１００から送信されたデータ読み出し要求を受信して、データコントローラ３３５に通知する（Ｓ２１２）。
【０１００】
通信インタフェース３３４からデータ読み出し要求を受信したデータコントローラ３３５は、キャッシュヒットしているか、キャッシュミスしているか否か、すなわち、キャッシュメモリ３３７に読み出し対象となるデータが格納されているか否かを判定する（Ｓ２１３）。ステップＳ２１３において、キャッシュヒットしている場合、すなわち、キャッシュメモリ３３７に読み出し対象となるデータが格納されている場合には、データコントローラ３３５は、キャッシュメモリ３３７の読み出し対象のデータを通信インタフェース３３４に転送する（Ｓ２１４）。
【０１０１】
通信インタフェース３３４は、データコントローラ３３５から転送された読み出しデータをホスト計算機１００に送信する（Ｓ２１５）。ホスト計算機１００は、通信インタフェース３３４から送信された読み出しデータを受信する（Ｓ２１６）。また、データの読み出し完了報告をホスト計算機１００に送信する（Ｓ２１７）。ホスト計算機１００は、通信インタフェース３３４から送信されたデータの読み出し完了報告を受信する（Ｓ２１８）。
【０１０２】
（２−２）ストレージ装置におけるマージン容量確保処理
次に、ストレージ装置におけるマージン容量確保処理について説明する。なお、以下の説明では、各種処理の主体をプログラム（限界マージン入力処理部等）として説明するが、実際上はそのプログラムに基づいて、ストレージ装置３００のデータコントローラ３３５が実行することは言うまでもない。
【０１０３】
以下では、まず、第１記憶階層（Ｔｉｅｒ１）及び第２記憶階層（Ｔｉｅｒ２）にいてマージン容量を確保するマージン容量確保処理について説明する。上記したように、本実施形態では、一度アクセスのあったページについて、当該アクセスを契機として該ページを第１記憶階層（Ｔｉｅｒ１）にプロモーションするために、第１記憶階層（Ｔｉｅｒ１）に所定量のマージン領域を確保する必要がある。そして、ホスト計算機１００からの入出力要求に対する処理速度に応じて、第１記憶階層（Ｔｉｅｒ１）のページを第２記憶階層（Ｔｉｅｒ２）のページにデモーションする時刻を算出している。これにより、ホスト計算機１００からのアクセスに対して最適なコマンド応答時間を期待させるとともに、ホスト計算機１００からの入出力要求に対する処理速度に応じて最適なページ配置を実行することが可能となる。
【０１０４】
次に、第１記憶階層へのページの移動処理（プロモーション処理）、上位階層から下位階層へのページの移動処理（デモーション処理）について説明する。上記したように、本実施形態では、新規に割り当てられたページ、第２記憶階層（Ｔｉｅｒ２）及び第３記憶階層（Ｔｉｅｒ３）に配置されていたページにアクセスがあった場合には、いずれのページも第１記憶階層（Ｔｉｅｒ１）に移動（プロモーション）する。また、もともと第１記憶階層（Ｔｉｅｒ１）に配置されていたページはそのまま第１の記憶階層（Ｔｉｅｒ）に配置される。そして、上記したマージン容量確保処理において算出されたデモーション時刻にしたがって、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）への移動や、第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）へのページの移動（デモーション）が実行される。
【０１０５】
（２−２−１）限界マージン入力処理
図１８に示すように、限界マージン入力処理部３０４は、図９に示したプールスケジュール入力画面５００を介してユーザにより入力されたプール設定に関する情報を取得する（Ｓ３０１）。そして、限界マージン入力処理部３０４は、ステップＳ３０１において指定されたプールに該当する限界マージンの情報を取得して、プールスケジュール管理テーブル３１１の該当プールの第１記憶階層（Ｔｉｅｒ１）の限界マージン欄３１１３に格納する（Ｓ３０２）。
【０１０６】
（２−２−２）目安マージン算出処理
図１９に示すように、目安マージン算出処理部３０５は、プールスケジュール管理テーブル３１１内の、該当プールの第１記憶階層（Ｔｉｅｒ１）の限界マージン欄３１１３の値を一時変数Ａに格納し、安全係数欄３１１４の値を一時変数Ｂに格納し、総容量欄３１１５の値を一時変数Ｃに格納する（Ｓ３１１）。そして、目安マージン算出処理部３０５は、以下の式により目安マージン容量を算出して一時変数Ｄに格納し、プールスケジュール管理テーブル３１１内の、該当プールの第１記憶階層（Ｔｉｅｒ１）の目安マージン容量欄３１１８に変数Ｄの値を格納する（Ｓ３１２）。
【０１０７】
Ｄ（目安マージン容量 ＴＢ）＝Ｃ（総容量 ＴＢ）×（Ａ（限界マージン ％）＋Ｂ（安全係数 ％））
【０１０８】
（２−２−３）第１記憶階層のフリー容量枯渇時刻算出処理
図２０に示すように、フリー容量枯渇時刻算出処理部３０６は、プールスケジュール管理テーブル３１１内の、該当プールの第１記憶階層（Ｔｉｅｒ１）のフリー容量欄３１１６の値を一時変数Ａに格納し、ホストＩ／Ｏ性能欄３１１９の値を一時変数Ｂに格納して、Ａ／Ｂの値を一時変数Ｃ（フリー容量枯渇見込み時間）に格納する（Ｓ３２１）。
【０１０９】
そして、フリー容量枯渇時刻算出処理部３０６は、ストレージ装置３００のマイクロプログラム内で管理されているタイマー関数から現在時刻を取得して一時変数Ｄに格納する（Ｓ３２２）。そして、フリー容量枯渇時刻算出処理部３０６は、以下の式により第１記憶階層のフリー容量枯渇時刻を算出して、プールスケジュール管理テーブル３１１の該当プールの第１記憶階層のＴｉｅｒ枯渇時刻欄３１２１に格納する（Ｓ３２３）。
【０１１０】
Ｅ（Ｔｉｅｒ枯渇時刻YYYY/MM/DD, hh:mm）＝Ｃ（フリー容量枯渇見込み時間）＋Ｄ（現在時刻）
【０１１１】
（２−２−４）目安マージン確保時間算出処理
図２１に示すように、目安マージン確保時間算出処理部３０７は、プールスケジュール管理テーブル３１１内の、該当プールの第１記憶階層のデモーション性能欄３１２３の値を一時変数Ａに格納し、目安マージン容量欄３１２２の値を一時変数Ｂに格納し、Ａ／Ｂの値を一時変数Ｃ（目安マージン確保時間）に格納する（Ｓ３３１）。
【０１１２】
そして、目安マージン確保時間算出処理部３０７は、ステップＳ３３１において算出したＣ（目安マージン確保時間）を、プールスケジュール管理テーブル３１１の該当プールの第１記憶階層の目安マージン確保時間欄３１２２に格納する（Ｓ３３２）。
【０１１３】
（２−２−５）第１記憶階層から第２記憶階層へのデモーション開始時刻算出処理
図２２に示すように、デモーション開始時刻算出処理部３０８は、プールスケジュール管理テーブル３１１内の、該当プールの第１記憶階層（Ｔｉｅｒ１）のＴｉｅｒ枯渇時刻欄３１２１の値を一時変数Ａに格納し、目安マージン確保時間欄３１２２の値を一時変数Ｂに格納し、Ａ−Ｂの値を一時変数Ｃ（デモーション開始時刻）に格納する（Ｓ３４１）。
【０１１４】
そして、デモーション開始時刻算出処理部３０８は、ステップＳ３４１において算出したＣ（デモーション開始時刻）を、プールスケジュール管理テーブル３１１の該当プールの第１記憶階層のデモーション開始時刻３１２３に格納する（Ｓ３４２）。
【０１１５】
（２−２−６）目安マージン算出処理
図２３に示すように、目安マージン算出処理部３０５は、プールスケジュール管理テーブル３１１内の、該当プールの第２記憶階層（Ｔｉｅｒ２）の安全係数欄３１１４の値を一時変数Ａに格納し、総容量欄３１１５の値を一時変数Ｂに格納して、Ａ×Ｂの値を一時変数Ｃ（目安マージン容量）に格納する（Ｓ３５１）。
【０１１６】
そして、目安マージン算出処理部３０５は、ステップＳ３５１において算出したＣ（目安マージン容量）を、プールスケジュール管理テーブル３１１の目安マージン容量欄３１１８に格納する（Ｓ３５２）。
【０１１７】
（２−２−７）第２記憶階層のフリー容量枯渇時刻算出処理
図２４に示すように、フリー容量枯渇時刻算出処理部３０６は、プールスケジュール管理テーブル３１１内の、該当プールの第２記憶階層（Ｔｉｅｒ２）のフリー容量欄３１１６の値を一時変数Ａに格納し、第２記憶階層（Ｔｉｅｒ２）のデモーション性能欄３１２０の値を一時変数Ｂに格納して、Ａ／Ｂの値を一時変数Ｃ（フリー容量枯渇見込み時間）に格納する（Ｓ３６１）。
【０１１８】
そして、フリー容量枯渇時刻算出処理部３０６は、ストレージ装置３００のマイクロプログラム内で管理されているタイマー関数から現在時刻を取得して一時変数Ｄに格納する（Ｓ３６２）。そして、フリー容量枯渇時刻算出処理部３０６は、以下の式により第１記憶階層のフリー容量枯渇時刻を算出して、プールスケジュール管理テーブル３１１の該当プールの第２記憶階層のＴｉｅｒ枯渇時刻欄３１２１に格納する（Ｓ３６３）。
【０１１９】
Ｅ（Ｔｉｅｒ枯渇時刻YYYY/MM/DD, hh:mm）＝Ｃ（フリー容量枯渇見込み時間）＋Ｄ（現在時刻）
【０１２０】
（２−２−８）目安マージン確保時間算出処理
図２５に示すように、目安マージン確保時間算出処理部３０７は、プールスケジュール管理テーブル３１１内の、該当プールの第２記憶階層のデモーション性能欄３１２３の値を一時変数Ａに格納し、目安マージン容量欄３１２２の値を一時変数Ｂに格納し、Ａ／Ｂの値を一時変数Ｃ（目安マージン確保時間）に格納する（Ｓ３７１）。
【０１２１】
そして、目安マージン確保時間算出処理部３０７は、ステップＳ３７１において算出したＣ（目安マージン確保時間）を、プールスケジュール管理テーブル３１１の該当プールの第２記憶階層（Ｔｉｅｒ２）の目安マージン確保時間欄３１２２に格納する（Ｓ３７２）。
【０１２２】
（２−２−９）第２記憶階層から第３記憶階層へのデモーション開始時刻算出処理
図２６に示すように、デモーション開始時刻算出処理部３０８は、プールスケジュール管理テーブル３１１内の、該当プールの第２記憶階層（Ｔｉｅｒ２）のＴｉｅｒ枯渇時刻欄３１２１の値を一時変数Ａに格納し、目安マージン確保時間欄３１２２の値を一時変数Ｂに格納し、Ａ−Ｂの値を一時変数Ｃ（デモーション開始時刻）に格納する（Ｓ３８１）。
【０１２３】
そして、デモーション開始時刻算出処理部３０８は、ステップＳ３８１において算出したＣ（デモーション開始時刻）を、プールスケジュール管理テーブル３１１の該当プールの第２記憶階層（Ｔｉｅｒ２）のデモーション開始時刻３１２３に格納する（Ｓ３８２）。
【０１２４】
（２−３）ストレージ装置におけるプロモーション処理及びデモーション処理
次に、ストレージ装置におけるプロモーション処理及びデモーション処理について説明する。なお、以下の説明では、プロモーション処理及びデモーション処理の主体をＩ／Ｏ処理部３０１として説明するが、実際上はそのプログラムに基づいて、ストレージ装置３００のデータコントローラ３３５が実行することは言うまでもない。
【０１２５】
（２−３−１）プロモーション判定処理
図２７に示すように、Ｉ／Ｏ処理部３０１は、ホスト計算機１００からＩ／Ｏを受領する（Ｓ４０１）。そして、Ｉ／Ｏ処理部３０１は、ページ配置先管理テーブル３１２内の、Ｉ／Ｏ要求に対応するページのカウンタ欄３１２３、最終アクセス日時欄３１２４、目標Ｔｉｅｒ欄３１２９を更新する。具体的に、Ｉ／Ｏ処理部３０１は、カウンタ欄３１２３の値に１を加算する。また、最終アクセス日時欄３１２４の値を現在時刻に更新する。また、目標Ｔｉｅｒ欄３１２９の値を１に更新する（Ｓ４０２）。
【０１２６】
そして、Ｉ／Ｏ処理部３０１は、ページ配置先管理テーブル３１２の該当ページの現在Ｔｉｅｒ欄３１２８を参照して、当該ページの現在のＴｉｅｒが１以外（Ｔｉｅｒ２またはＴｉｅｒ３）かを判定する（Ｓ４０３）。
【０１２７】
ステップＳ４０３において、該当ページの現在のＴｉｅｒが１以外ではない、すなわち、現在のＴｉｅｒが１であると判定された場合には、そのまま処理を終了する。一方、ステップＳ４０３において、該当ページの現在のＴｉｅｒが２または３のいずれかであると判定された場合には、当該ページをプロモーション実行予約キュー３１３の最後尾に登録する（Ｓ４０４）。
【０１２８】
（２−３−２）プロモーション処理
図２８に示すように、Ｉ／Ｏ処理部３０１は、プロモーション実行予約キュー３１３を参照して、プロモーション実行予約キュー３１３に格納されているキューについて、先頭から順にプロモーション処理を実行する（Ｓ４１１）。具体的に、Ｉ／Ｏ処理部３０１は、プロモーション実行予約キュー３１３に格納されているキューに対応するページを、第２記憶階層（Ｔｉｅｒ２）または第３記憶階層（Ｔｉｅｒ３）から、第１記憶階層（Ｔｉｅｒ１）に移動させる。
【０１２９】
（２−３−３）デモーション判定処理
図２９に示すように、Ｉ／Ｏ処理部３０１は、ページ配置先管理テーブル３１２を参照して、カウンタ欄３１２３及び最終アクセス日時欄３１２４に格納されている情報から、カウンタの値が小さい、すなわち、ページのアクセスが少なく、最終アクセス日時の古いページをデモーションの対象ページとしてデモーション実行予約キューに登録する（Ｓ４２１）。具体的に、Ｉ／Ｏ処理部３０１は、デモーションの対象となるページについては、第２記憶階層（Ｔｉｅｒ２）から第１記憶階層（Ｔｉｅｒ１）にデモーションさせるページをＴｉｅｒ２からＴｉｅｒ１へのデモーション実行予約キュー３１４Ａに登録し、第３記憶階層（Ｔｉｅｒ３）から第２記憶階層（Ｔｉｅｒ２）にデモーションさせるページをＴｉｅｒ３からＴｉｅｒ２へのデモーション実行予約キュー３１４Ｂに登録する。
【０１３０】
そして、Ｉ／Ｏ処理部３０１は、ページ配置先管理テーブル３１２のエントリの最後尾までステップＳ４２１の検索を終了した後、再度テーブルの先頭から検索を開始する（Ｓ４２２）。
【０１３１】
（２−３−４）第１記憶階層から第２記憶階層へのデモーション処理
図３０に示すように、Ｉ／Ｏ処理部３０１は、ストレージ装置３００内のマイクロプログラム内で管理されているタイマー関数から現在時刻を取得して、一時変数Ｄに格納する（Ｓ４３１）。そして、プールスケジュール管理テーブル３１１内の第１記憶階層（Ｔｉｅｒ１）のデモーション開始時刻欄３１２３に格納されている時刻が一時変数Ｄの時刻を既に経過しているかを判定する（Ｓ４３２）。
【０１３２】
そして、ステップＳ４３２において、デモーション開始時刻欄３１２３に格納されている時刻が一時変数Ｄの時刻を既に経過していると判定された場合には、Ｉ／Ｏ処理部３０１は、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）への実行予約キュー３１４Ａに登録されているキューの先頭から順にデモーション処理を実行する（Ｓ４３３）。一方、ステップＳ４３２において、デモーション開始時刻欄３１２３に格納されている時刻が一時変数Ｄの時刻を既に経過していないと判定された場合には、Ｉ／Ｏ処理部３０１は、処理を終了する。
【０１３３】
（２−３−５）第２記憶階層から第３記憶階層へのデモーション処理
図３１に示すように、Ｉ／Ｏ処理部３０１は、ストレージ装置３００内のマイクロプログラム内で管理されているタイマー関数から現在時刻を取得して、一時変数Ｄに格納する（Ｓ４４１）。そして、プールスケジュール管理テーブル３１１内の第２記憶階層（Ｔｉｅｒ２）のデモーション開始時刻欄３１２３に格納されている時刻が一時変数Ｄの時刻を既に経過しているかを判定する（Ｓ４４２）。
【０１３４】
そして、ステップＳ４４２において、デモーション開始時刻欄３１２３に格納されている時刻が一時変数Ｄの時刻を既に経過していると判定された場合には、Ｉ／Ｏ処理部３０１は、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）への実行予約キュー３１４Ａに登録されているキューの先頭から順にデモーション処理を実行する（Ｓ４４３）。一方、ステップＳ４４２において、デモーション開始時刻欄３１２３に格納されている時刻が一時変数Ｄの時刻を既に経過していないと判定された場合には、Ｉ／Ｏ処理部３０１は、処理を終了する。
【０１３５】
（３）本実施の形態の効果
以上のように、本実施の形態によれば、新規に割り当てられたページ、第２記憶階層（Ｔｉｅｒ２）及び第３記憶階層（Ｔｉｅｒ３）に配置されていたページにアクセスがあった場合には、いずれのページも第１記憶階層（Ｔｉｅｒ１）に移動（プロモーション）する。また、もともと第１記憶階層（Ｔｉｅｒ１）に配置されていたページはそのまま第１の記憶階層（Ｔｉｅｒ）に配置される。また、一度アクセスのあったページについて、当該アクセスを契機として該ページを第１記憶階層（Ｔｉｅｒ１）にプロモーションするために、第１記憶階層（Ｔｉｅｒ１）に所定量のマージン領域を確保する。そして、ホスト計算機１００からの入出力要求に対する処理速度に応じて、第１記憶階層（Ｔｉｅｒ１）のページを第２記憶階層（Ｔｉｅｒ２）のページにデモーションする時刻を算出して、算出されたデモーション時刻にしたがって、第１記憶階層（Ｔｉｅｒ１）から第２記憶階層（Ｔｉｅｒ２）への移動や、第２記憶階層（Ｔｉｅｒ２）から第３記憶階層（Ｔｉｅｒ３）へのページの移動（デモーション）が実行される。これにより、ホスト計算機１００からのアクセスに対して最適なコマンド応答時間を期待させるとともに、ホスト計算機１００からの入出力要求に対する処理速度に応じて最適なページ配置を実行することが可能となる。
【０１３６】
（５）他の実施の形態
例えば、本明細書のストレージ装置３００の処理における各ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はない。すなわち、ストレージ装置３００の処理における各ステップは、異なる処理であっても並列的に実行されてもよい。
【０１３７】
また、ストレージ装置３００などに内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアを、上述したストレージ装置３００の各構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供される。
【０１３８】
また、上述の実施形態においては、ストレージ装置３００に格納されている各種プログラムに基づいて、ストレージ装置３００のディスクコントローラ３３０が本発明の各種機能を実現しているが、かかる例に限定されない。例えば、ディスクコントローラ３３０をストレージ装置３００とは別体の他の装置に設けて、当該ディスクコントローラ３３０と協同して各種機能を実現するようにしてもよい。また、ストレージ装置３００に格納されている各種プログラムをストレージ装置３００とは別体の他の装置に設けて、当該プログラムがディスクコントローラ３３０に呼び出されることにより各種機能を実現するようにしてもよい。
【符号の説明】
【０１３９】
１      計算機システム
１００  ホスト計算機
２００  管理計算機
３００  ストレージ装置
３０４  限界マージン入力処理部
３０５  目安マージン算出処理部
３０６  フリー容量枯渇時刻算出処理部
３０７  目安マージン確保時間算出処理部
３０８  デモーション開始時刻算出処理部
３１０  基本筺体
３１１  プールスケジュール管理テーブル
３１２  ページ配置先管理テーブル
３１３  プロモーション実行予約キュー
３１４  デモーション実行予約キュー
３２０  増設筺体
３３０  コントローラ
３３０  ディスクコントローラ
３５０  ハードディスクドライブ
【図１】
0005886963.tif 000002
【図２】
0005886963.tif 000003
【図３】
0005886963.tif 000004
【図４】
0005886963.tif 000005
【図５】
0005886963.tif 000006
【図６】
0005886963.tif 000007
【図７】
0005886963.tif 000008
【図８】
0005886963.tif 000009
【図９】
0005886963.tif 000010
【図１０】
0005886963.tif 000011
【図１１】
0005886963.tif 000012
【図１２】
0005886963.tif 000013
【図１３】
0005886963.tif 000014
【図１４】
0005886963.tif 000015
【図１５】
0005886963.tif 000016
【図１６】
0005886963.tif 000017
【図１７】
0005886963.tif 000018
【図１８】
0005886963.tif 000019
【図１９】
0005886963.tif 000020
【図２０】
0005886963.tif 000021
【図２１】
0005886963.tif 000022
【図２２】
0005886963.tif 000023
【図２３】
0005886963.tif 000024
【図２４】
0005886963.tif 000025
【図２５】
0005886963.tif 000026
【図２６】
0005886963.tif 000027
【図２７】
0005886963.tif 000028
【図２８】
0005886963.tif 000029
【図２９】
0005886963.tif 000030
【図３０】
0005886963.tif 000031
【図３１】
0005886963.tif 000032