(57)【要約】アプリケーションの特性に応じて、適切な粒度でデータを階層記憶に配置する。ストレージ装置は、性能の異なる複数種類の記憶媒体により提供される記憶領域をプールとして管理し、ホスト計算機からのデータの書き込み要求に応じて、前記プールを構成する複数種類の階層記憶のうち何れかの階層記憶から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、を備え、前記制御部は、前記ホスト計算機により管理される特定のデータについて、当該特定のデータの編成情報に基づいて、当該特定のデータのうち参照頻度の高い領域を特定し、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる。
2013061382.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置と、前記ストレージ装置へのデータの書き込みを要求するホスト計算機と、前記ストレージ装置と前記ホスト計算機とを管理する管理計算機と、がネットワークを介してそれぞれ相互に接続された計算機システムであって、
前記ストレージ装置は、
性能の異なる複数種類の記憶媒体により提供される記憶領域をプールとして管理し、前記ホスト計算機からの前記データの書き込み要求に応じて、前記プールを構成する複数種類の階層記憶のうち何れかの階層記憶から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、を備え、
前記制御部は、
前記ホスト計算機により管理される特定のデータについて、当該特定のデータの編成情報に基づいて、当該特定のデータのうち参照頻度の高い領域を特定し、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる
ことを特徴とする、計算機システム。
【請求項２】
前記ストレージ装置の前記制御部は、
前記仮想ボリュームの所定の領域に対して割当られた記憶領域に格納されているデータを、所定の条件にしたがって、既に割り当てられている一の前記階層記憶から性能の異なる他の前記階層記憶に移動させる
ことを特徴とする、請求項１に記載の計算機システム。
【請求項３】
前記ストレージ装置の前記制御部は、
前記仮想ボリュームの所定の領域に対して割当られた記憶領域に格納されているデータを、当該データのアクセス頻度に応じて、既に割り当てられている一の前記階層記憶から性能の異なる他の前記階層記憶に移動させる
ことを特徴とする、請求項２に記載の計算機システム。
【請求項４】
前記ストレージ装置の前記制御部は、
前記特定のデータのうち参照頻度の高い領域を前記特定のデータの編成情報に基づいて移動させた場合に、移動後の前記階層記憶から当該階層記憶と異なる前記階層記憶への前記特定のデータの移動を抑止する、
ことを特徴とする、請求項１に記載の計算機システム。
【請求項５】
前記管理計算機は、
前記特定のデータの編成情報に基づいて、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる際に、前記他の階層記憶に空き領域がなかった場合には、前記ホスト計算機により実行されている複数のプログラムの優先度を比較し、当該優先度に応じて前記プログラムが使用する前記データを前記階層記憶間で移動させるように前記ストレージ装置を制御する
ことを特徴とする、請求項１に記載の計算機システム。
【請求項６】
前記管理計算機は、
前記特定のデータの編成情報に基づいて、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる際に、前記他の階層記憶に空き領域がなかった場合には、前記ホスト計算機により実行されている複数のプログラムの優先度を比較し、前記特定のデータの移動先となる前記他の階層記憶の領域に記憶されている前記データを利用しているプログラムのうち、優先度の低い前記プログラムが使用する前記データを、既に割り当てられている一の前記階層記憶から、より性能の低い他の階層記憶に移動させるように前記ストレージ装置を制御する
ことを特徴とする、請求項５に記載の計算機システム。
【請求項７】
前記管理計算機は、
前記ホスト計算機により実行されている一のプログラムとは異なる他のプログラムの実行が開始され、前記他のプログラムが使用するデータのうち参照頻度の高い領域を、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる際に、前記他の階層記憶に空き領域が存在せず、前記一のプログラムが前記他のプログラムよりも優先度が低い場合に、前記一のプログラムが使用するデータを、既に割り当てられている一の前記階層記憶からより性能の低い他の前記階層記憶に移動させるように前記ストレージ装置を制御する
ことを特徴とする、請求項６に記載の計算機システム。
【請求項８】
前記管理計算機は、
前記ホスト計算機により実行されている一のプログラム終了時に、前記一のプログラムよりも後に実行される他のプログラムが前記一のプログラムと同一のデータを使用する場合に、前記一のプログラム終了後に、当該データが配置されている一の階層記憶から他の階層記憶への移動を抑止するように前記ストレージ装置を制御する
ことを特徴とする、請求項５に記載の計算機システム。
【請求項９】
ストレージ装置と、前記ストレージ装置へのデータの書き込みを要求するホスト計算機と、前記ストレージ装置と前記ホスト計算機とを管理する管理計算機と、がネットワークを介してそれぞれ相互に接続された計算機システムにおけるストレージ管理方法であって、
前記ストレージ装置は、
性能の異なる複数種類の記憶媒体により提供される記憶領域をプールとして管理し、前記ホスト計算機からの前記データの書き込み要求に応じて、前記プールを構成する複数種類の階層記憶のうち何れかの階層記憶から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、を備え、
前記制御部が、
前記ホスト計算機により管理される特定のデータについて、当該特定のデータの編成情報に基づいて、当該特定のデータのうち参照頻度の高い領域を特定する第１のステップと、
既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる第２のステップと、
を含むことを特徴とする、ストレージ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム及びストレージ管理方法に関し、アプリケーションプログラムが使用するデータを階層管理する計算機システム及びストレージ管理方法に適用して好適なるものである。
【背景技術】
【０００２】
最近では、情報システムが普及し、多様な領域で広く利用されるようになった。従来、人手で実施されていた作業も現在は情報システムに置き変わってきており、情報システムに期待される処理量も膨大になってきている。その結果、情報処理システムに課された処理が、目標とする時間までに完了できないことが課題となっている。【０００３】
そこで、特許文献１では、重要度の高いアプリケーションプログラム（以降、アプリケーションプログラムを単にアプリケーションと称する。）に対し、当該アプリケーションにより使用されるデータを、適切な入出力性能を有する記憶装置にファイル単位で配置する技術が開示されている。特許文献１によれば、少なくとも優先度の高いアプリケーションについては、目標とする時間までに処理を完了することが可能となる。ここで、記憶装置が複数の異なる特性（入出力性能や信頼性など）を示す記憶領域を備える場合、それぞれの記憶領域を階層記憶と称し、複数の階層記憶のいずれかに計算機システムが使用するデータを配置する技術を階層記憶制御と称して以下説明する。【０００４】
また、特許文献２では、記憶装置が装置内の仮想的な記憶領域に書き込まれたデータを、ファイルなどよりも細かい断片に分割して、指定された階層記憶に配置する。そして、記憶装置は、データが指定された階層記憶に配置された後に、ホスト計算機によって当該断片にアクセスされる頻度に応じて、適切な入出力性能を有する階層記憶の当該断片を再配置する技術が開示されている。特許文献２によれば、一般的に高価な入出力性能の高い階層記憶（上位階層記憶と称する。）に、その性能が必要なデータのみを配置することが可能となり、これにより高価な上位階層記憶の利用を最小にして、上位階層記憶の入出力性能と同様の性能を期待することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１７３８７３号公報
【特許文献２】特開２００７−０６６２５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１では、優先度の高いアプリケーションのデータを上位階層記憶に配置することができるが、ファイルよりも細かな単位で階層記憶制御を実行することができないため、ファイル内でアクセス頻度の低い断片があっても、当該ファイルは上位階層記憶に配置されてしまうため、無駄に上位階層記憶が消費されてしまうという課題があった。また、特許文献２では、アプリケーションのデータのうち、ホスト計算機に頻繁に参照される断片のみを上位階層記憶に配置することができるが、データの参照頻度に応じた階層記憶制御であるため、アプリケーションの優先度に応じた階層記憶制御をすることができないという課題があった。【０００７】
本発明は以上の点を考慮してなされたもので、アプリケーションの特性に応じて、適切な粒度でデータを階層記憶に配置することが可能な計算機システム及びストレージ管理方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するために本発明においては、ストレージ装置と、前記ストレージ装置へのデータの書き込みを要求するホスト計算機と、前記ストレージ装置と前記ホスト計算機とを管理する管理計算機と、がネットワークを介してそれぞれ相互に接続された計算機システムであって、前記ストレージ装置は、前記性能の異なる複数種類の記憶媒体により提供される記憶領域をプールとして管理し、前記ホスト計算機からの前記データの書き込み要求に応じて、前記プールを構成する複数種類の階層記憶のうち何れかの階層記憶から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、を備え、前記制御部は、前記ホスト計算機により管理される特定のデータについて、当該特定のデータの編成情報に基づいて、当該特定のデータのうち参照頻度の高い領域を特定し、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させることを特徴とする、計算機システムが提供される。【０００９】
かかる構成によれば、アプリケーションが使用するデータのファイル編成を管理計算機で管理することで、ファイル編成の特性を利用して、アプリケーションのデータ使用特性を引き出すことが可能となり、ＯＳなどで管理するファイルなどの単位よりも細やかな階層制御を実現することができる。これにより、アプリケーションの特性に応じて、適切な粒度でデータを階層記憶に配置して、使用者が求める高い入出力性能を提供することが可能となる。
【発明の効果】
【００１０】
本発明によれば、アプリケーションの特性に応じて、適切な粒度でデータを階層記憶に配置して、効率的に記憶装置を利用することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態に係る計算機システムのハードウェア構成を示すブロック図である。
【図２】同実施形態にかかる管理計算機の構成を示すブロック図である。
【図３】同実施形態にかかるホスト計算の構成を示すブロック図である。
【図４】同実施形態にかかるストレージ装置の構成を示すブロック図である。
【図５】同実施形態にかかる計算機システムの処理の概要を説明する概念図である。
【図６Ａ】同実施形態にかかる階層記憶制御の概要を説明する概念図である。
【図６Ｂ】同実施形態にかかる階層記憶制御の概要を説明する概念図である。
【図７】同実施形態にかかる実行中ジョブ管理テーブルの内容を示す図表である。
【図８】同実施形態にかかる制御対象データ管理テーブルの内容を示す図表である。
【図９】同実施形態にかかるユーザ設定情報管理テーブルの内容を示す図表である。
【図１０】同実施形態にかかる入出力頻度管理テーブルの内容を示す図表である。
【図１１】同実施形態にかかる階層記憶利用状況管理テーブルの内容を示す図表である。
【図１２】同実施形態にかかる階層テーブルの内容を示す図表である。
【図１３】同実施形態にかかるホスト構成管理テーブルの内容を示す図表である。
【図１４】同実施形態にかかる過去階層保持テーブルの内容を示す図表である。
【図１５】同実施形態にかかるボリューム管理情報の内容を示す図表である。
【図１６】同実施形態にかかる仮想論理ボリューム管理情報の内容を示す図表である。
【図１７】同実施形態にかかる階層記憶プール管理情報の内容を示す図表である。
【図１８】同実施形態にかかるストレージ基本情報の内容を示す図表である。
【図１９】同実施形態にかかるストレージ情報テーブルの内容を示す図表である。
【図２０】同実施形態にかかるＩＯ要求の内容を示す図表である。
【図２１】同実施形態にかかるデータアクセス処理の処理手順を示すフローチャートである。
【図２２】同実施形態にかかるプールからのページ割り当て処理の処理手順を示すフローチャートである。
【図２３】同実施形態にかかる階層記憶制御処理の処理手順を示すフローチャートである。
【図２４】同実施形態にかかる階層記憶制御要求処理の処理手順を示すフローチャートである。
【図２５】同実施形態にかかるアプリケーション及びジョブの概念について説明する概念図である
【図２６】同実施形態にかかる環境構築段階の動作の詳細を示すフローチャートである。
【図２７】同実施形態にかかる管理計算機１００の入力画面の一例を示す図表である。
【図２８】同実施形態にかかる階層記憶割り当て動作を示すフローチャートである。
【図２９】同実施形態にかかる細粒度階層記憶割り当て処理の処理手順を示すフローチャートである。
【図３０】同実施形態にかかる過去データセット割り当て階層記憶再現処理の処理手順を示すフローチャートである。
【図３１】同実施形態にかかる横取り処理の処理手順を示すフローチャートである。
【図３２】同実施形態にかかる階層記憶の優先度変更処理の処理手順を示すフローチャートである。
【図３３】同実施形態にかかる階層記憶割り当て解除処理の処理手順を示すフローチャートである。
【図３４】同実施形態にかかる仮想テープシステムのハードウェア構成を示すブロック図である。
【図３５】同実施形態にかかるテープフォーマットのデータを示す概念図である。
【図３６】同実施形態にかかる入出力頻度管理テーブルの内容を示す図表である。
【発明を実施するための形態】
【００１２】
以下図面について、本発明の一実施の形態を詳述する。
なお、以下の説明では、「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。
【００１３】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、コントローラに含まれるプロセッサ（例えばＣＰＵ（Central  Processing  Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インターフェースデバイス（例えば通信ポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する管理システム（例えば、表示用計算機（例えばクライアント）又は管理用計算機（例えばサーバ））が行う処理としても良い。また、コントローラは、プロセッサそれ自体であっても良いし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから各コントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
【００１４】
なお、管理計算機は入出力デバイスを有する。入出力デバイスの例としてはディスプレイとキーボードとポインタデバイスが考えられるが、これ以外のデバイスであってもよい。また、入出力デバイスの代替としてシリアルインターフェースやイーサーネットインターフェース（イーサーネットは登録商標）を入出力デバイスとし、当該インターフェースにディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機を接続し、表示用情報を表示用計算機に送信したり、入力用情報を表示用計算機から受信することで、表示用計算機で表示を行ったり、入力を受け付けることで入力デバイスでの入力及び表示を代替してもよい。
【００１５】
以後、計算機システムを管理し、ストレージシステムを管理制御する一つ以上の計算機の集合を管理システムと呼ぶことがある。管理計算機が表示用情報を表示する場合は管理計算機が管理システムである。また、管理計算機と表示用計算機の組み合わせも管理システムである。また、管理処理の高速化や高信頼化のために複数の計算機で管理計算機と同等の処理を実現してもよく、この場合は当該複数の計算機（表示を表示用計算機が行う場合は表示用計算機も含め）が管理システムである。
【００１６】
また、以下の説明では、「時刻」という言葉を用いるが、時刻は年、月、日といった情報も指し示しても良く、当然ながら時、分、秒（含む小数点以下の秒）を指し示しても良い。
【００１７】
（１）第１の実施の形態
（１−１）本実施の形態の概要
最近では、情報システムが普及し、多様な領域で広く利用されるようになった。従来、人手で実施されていた作業も現在は情報システムに置き変わってきており、情報システムに期待される処理量も膨大になってきている。その結果、情報処理システムに課された処理が、目標とする時間までに完了できないことが課題となっている。
【００１８】
そこで、重要度の高いアプリケーションプログラム（以降、アプリケーションプログラムを単にアプリケーションと称する。）に対し、当該アプリケーションにより使用されるデータを、適切な入出力性能を有する記憶装置にファイル単位で配置する技術が開示されている。当該技術によれば、少なくとも優先度の高いアプリケーションについては、目標とする時間までに処理を完了することが可能となる。ここで、記憶装置が複数の異なる特性（入出力性能や信頼性など）を示す記憶領域を備える場合、それぞれの記憶領域を階層記憶と称し、複数の階層記憶のいずれかに計算機システムが使用するデータを配置する技術を階層記憶制御と称して以下説明する。
【００１９】
また、記憶装置が装置内の仮想的な記憶領域に書き込まれたデータを、ファイルなどよりも細かい断片に分割して、指定された階層記憶に配置する技術が開示されている。さらに、記憶装置は、データが指定された階層記憶に配置された後に、ホスト計算機によって当該断片にアクセスされる頻度に応じて、適切な入出力性能を有する階層記憶の当該断片が再配置される。当該技術によれば、一般的に高価な入出力性能の高い階層記憶（上位階層記憶と称する。）に、その性能が必要なデータのみを配置することが可能となり、これにより高価な上位階層記憶の利用を最小にして、上位階層記憶の入出力性能と同様の性能を期待することができる。
【００２０】
しかし、上記した前段の技術では、優先度の高いアプリケーションのデータを上位階層記憶に配置することができるが、ファイルよりも細かな単位で階層記憶制御を実行することができない。このため、ファイル内でアクセス頻度の低い断片があっても、当該ファイルは上位階層記憶に配置されてしまうため、無駄に上位階層記憶が消費されてしまうという課題があった。また、上記した後段のアプリケーションのデータのうち、ホスト計算機に頻繁に参照される断片のみを上位階層記憶に配置することができるが、データの参照頻度に応じた階層記憶制御であるため、アプリケーションの優先度に応じた階層記憶制御をすることができないという課題があった。例えば、応答時間が短いことが重要なデータであっても、参照頻度が低い場合には低位の階層記憶に配置されてしまったり、優先度が低いアプリケーションであっても、参照頻度が高い場合には上位の階層記憶に配置されてしまったりするため、効率的な階層記憶制御が実現できなかった。
【００２１】
そこで、本実施の形態では、アプリケーションの優先度や特性に応じて、ファイルよりも細かな単位でデータを階層記憶に配置することを可能としている。これにより、無駄な階層記憶を消費することなく、指定されたアプリケーションに対し、同一の性能、同一の実行時間、同一のトランザクション性能を提供することを可能とした。
【００２２】
（１−２）計算機システムのハードウェア構成
図１に、計算機システム１０のハードウェア構成を示す。計算機システム１０は、管理計算機１００、ホスト計算機２００及びストレージ装置３００から構成される。計算機システム１０において、管理計算機１００及びホスト計算機２００は、同一計算機であってもよいし、それぞれ１台であってもよいし、複数台であってもよい。また、計算機システム１０において、ストレージ装置３００は、１台であってもよいし、複数台であってもよい。
【００２３】
管理計算機１００、ホスト計算機２００及びストレージ装置３００は、通信ネットワーク（例えばＳＡＮ（Storage Area Network））５００を介して相互に接続される。また、管理計算機１００は、ホスト計算機２００及びストレージ装置３００に、通信ネットワーク（例えばＬＡＮ（Local Area Network））５５０を介して接続される。
【００２４】
図２に、管理計算機１００の構成を示す。管理計算機１００は、メモリ１１０、プロセッサ１２０及びＩＯ処理部１３０を有する計算機である。メモリ１１０、プロセッサ１２０及びＩＯ処理部１３０は、内部ネットワーク（図示省略）を介して相互に接続されている。
【００２５】
プロセッサ１２０は、メモリ１１０に記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ１２０は、ストレージ装置３００にＩＯ要求を送信することによって、ストレージ装置３００によって実行される階層記憶を制御する。ＩＯ要求は、例えば、データアクセス指示又は階層制御指示などを含む。ＩＯ要求については、後で詳細に説明する。
【００２６】
メモリ１１０には、プロセッサ１２０によって実行されるプログラム及びプロセッサ１２０によって必要とされる情報等が記憶されている。具体的には、メモリ１１０には、ストレージ管理プログラム１１１、実行中ジョブ管理テーブル１１２、制御対象データ管理テーブル１１３、ユーザ設定情報管理テーブル１１４、入出力頻度管理テーブル１１５、階層記憶利用状況管理テーブル１１６、階層テーブル１１７、ホスト構成管理テーブル１１８、過去階層保持テーブル１１９及びストレージ情報テーブル１０１が記憶されている。更に、メモリ１１０には、ＯＳ（Operating System）及びアプリケーションプログラム（AP）が記憶されても良い。
【００２７】
ストレージ管理プログラム１１１は、ストレージ装置３００を管理するためのプログラムである。実行中ジョブ管理テーブル１１２は、後述するジョブを管理するための情報である。制御対象データ管理テーブル１１３は、ジョブにより使用されるデータに関する情報である。ユーザ設定情報管理テーブル１１４は、制御対象のデータに関して、計算機システム１０の使用者によりあらかじめ設定された情報である。入出力頻度管理テーブル１１５は、アプリケーションの参照特性に関する情報である。階層記憶利用状況管理テーブル１１６は、後述する階層記憶の利用状況に関する情報などを保持する情報である。階層テーブル１１７は、指定した論理ボリュームが後述する階層記憶制御によってどの実ボリュームに配置されているかを保持するテーブルである。この階層テーブル１１７は、正ボリュームに割り当てられている実記憶領域を有する記憶媒体の特性を特定することのできる特性情報である。ホスト構成管理テーブル１１８は、後述する階層制御対象となるアプリケーションのデータを使用するホスト計算機管理用の情報である。過去階層保持テーブル１１９は、過去にジョブが実行された際に当該ジョブが使用したデータセットに割り当てられていた階層記憶を復元するための情報である。ストレージ情報テーブル１０１は、管理計算機１００によって管理されるストレージ装置３００に関する情報である。メモリ１１０に記憶されている各種テーブルについては、後で詳細に説明する。
【００２８】
ＩＯ処理部１３０は、通信ネットワーク５００を介してホスト計算機２００及びストレージ装置３００に接続されるインターフェースである。
【００２９】
図３にホスト計算機２００の構成を示す。ホスト計算機２００は、メモリ２１０、プロセッサ２２０及びＩＯ処理部２３０を有する計算機である。メモリ２１０、プロセッサ２２０及びＩＯ処理部２３０は、内部ネットワーク（図示省略）を介して相互に接続されている。
【００３０】
プロセッサ２２０は、メモリ２１０に記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ２２０は、ストレージ装置３００にＩＯ要求を送信することによって、そのストレージ装置３００で管理される論理ボリューム（実論理ボリューム、仮想論理ボリューム）のデータにアクセスする。
【００３１】
メモリ２１０には、プロセッサ２２０によって実行されるプログラム及びプロセッサ２２０によって必要とされる情報等が記憶される。具体的には、メモリ２１０には、１か複数のアプリケーションプログラム２１１、ＯＳ２１２及びエージェントプログラム２１３が記憶される。
【００３２】
アプリケーションプログラム２１１は、各種処理を実行する。例えば、アプリケーションプログラム２１１は、データベース機能又はメールサーバ機能を提供する。ＯＳ２１２は、ホスト計算機２００の処理の全体を制御する。エージェントプログラム２１３は、管理計算機１００からの指示を受け付ける。
【００３３】
ＩＯ処理部２３０は、通信ネットワーク５００を介して管理計算機１００及びストレージ装置３００と通信するためのインターフェースである。具体的には、例えば、ＩＯ処理部２３０は、ストレージ装置３００にＩＯ要求を送信する。
【００３４】
図４にストレージ装置３００の構成を示す。ストレージ装置３００は、記憶制御装置１０００、複数のディスクドライブ１５００及び管理端末１６００を備える。図４では、管理端末１６００は、ストレージ装置３００内において記憶制御装置１０００に直接的に接続されているが、通信ネットワーク５００及び５５０のうちの少なくとも一つを介してストレージ装置３００に接続されていてもよい。記憶制御装置１０００と、複数のディスクドライブ１５００とは内部ネットワークを介して相互に接続されている。
【００３５】
ディスクドライブ１５００は、ディスク型の記憶メディアのドライブであり、ホスト計算機２００から書き込み要求されたデータを記憶する。ストレージ装置３００では、ディスクドライブ１５００に加えて、又は、ディスクドライブ１５００に代えて、他種の記憶メディアを有する記憶デバイス（例えばフラッシュメモリドライブ）を備えてもよい。
【００３６】
記憶制御装置１０００は、ストレージ装置３００の動作を制御する。例えば、記憶制御装置１０００は、ディスクドライブ１５００へのデータの書き込み及びディスクドライブ１５００からのデータの読み出しを制御する。また、記憶制御装置１０００は、１つ以上の論理ボリュームを管理計算機１００、及び、ホスト計算機２００に提供する。１つ以上の論理ボリュームは、実ボリュームと仮想ボリュームのいずれか一方から構成される。実ボリュームは１つ以上のディスクドライブ１５００の記憶空間を基に形成された論理的な１つ以上の記憶領域である。また、仮想ボリュームは、当該実ボリュームの一部の領域を利用する仮想的なボリュームである。実ボリューム及び仮想ボリュームについては、後で詳細に説明する。
【００３７】
記憶制御装置１０００は、キャッシュメモリ１１００、共有メモリ１２００、入出力制御部１３００及びディスク制御部１４００を備える。キャッシュメモリ１１００、共有メモリ１２００、入出力制御部１３００及びディスク制御部１４００は、内部ネットワーク（図示省略）を介して相互に接続されている。
【００３８】
キャッシュメモリ１１００は、ディスクドライブ１５００へ書き込まれるデータ及びディスクドライブ１５００から読み出されるデータを、一時的に記憶する。ディスク制御部１４００は、ディスクドライブ１５００へのデータの書き込み及びディスクドライブ１５００からのデータの読み出しを制御する。また、ディスク制御部１４００は、１つ以上のディスクドライブ１５００の記憶空間から実ボリュームを生成する。
【００３９】
入出力制御部１３００は、プロセッサ１３１０、ＩＯ送受信部１３２０及びメモリ１３３０を備える。プロセッサ１３１０、ＩＯ送受信部１３２０及びメモリ１３３０は、内部ネットワーク（図示省略）を介して相互に接続されている。ＩＯ送受信部１３２０は、通信ネットワーク５００を介して他の装置（例えば、管理計算機１００、ホスト計算機２００及び他のストレージ装置３００の少なくとも一つ）と通信するインターフェースである。具体的には、例えば、ＩＯ送受信部１３２０は、管理計算機１００又はホスト計算機２００からＩＯ要求を受信する。また、ＩＯ送受信部１３２０は、ディスクドライブ１５００から読み出されたデータを、管理計算機１００又はホスト計算機２００に送信する。プロセッサ１３１０は、メモリ１３３０又は共有メモリ１２００に記憶されるプログラムを実行することによって、各種処理を行う。具体的には、例えば、プロセッサ１３１０は、ＩＯ送受信部１３２０によって受信されたＩＯ要求を処理する。メモリ１３３０には、プロセッサ１３１０によって実行されるプログラム及びプロセッサ１３１０によって必要とされる情報等が記憶されている。
【００４０】
共有メモリ１２００には、プロセッサ１３１０によって実行されるプログラム及びプロセッサ１３１０によって必要とされる情報等が記憶される。更に、共有メモリ１２００には、ディスク制御部１４００によって実行されるプログラム及びディスク制御部１４００によって必要とされる情報等が記憶されている。具体的には、例えば、共有メモリ１２００には、仮想ボリューム処理プログラム１２２０、入出力処理プログラム１２４０、ボリューム管理情報１２５０、仮想論理ボリューム管理情報１２７０及び階層記憶プール管理情報１２９０が記憶されている。
【００４１】
仮想ボリューム処理プログラム１２２０は、仮想ボリュームに対する処理を実行するプログラムである。コピー処理プログラム１２３０は、ローカルコピーを行うプログラムである。入出力処理プログラム１２４０は、ＩＯ送受信部１３２０によって受信されたＩＯ要求を処理するプログラムである。
【００４２】
ボリューム管理情報１２５０は、ストレージ装置３００によって提供される論理ボリュームを管理するための情報である。仮想論理ボリューム管理情報１２７０は、仮想論理ボリュームの仮想的な記憶領域と実ボリュームの割当領域（実記憶領域）の対応情報である。階層記憶プール管理情報１２９０は、仮想論理ボリュームに割り当て可能な論理ボリュームを管理するための情報である。共有メモリ１２００に記憶されている各種管理情報については、後で詳細に説明する。
【００４３】
管理端末１６００は、プロセッサ、メモリ及びインターフェース（図示省略）を備える計算機である。管理端末１６００は、システム使用者（ユーザ）から入力された情報を、ストレージ装置３００の記憶制御装置１０００に送信する。
【００４４】
（１−３）計算機システムの処理の概要
次に、図５を参照して、計算機システム１０の処理の概要について説明する。はじめに、本実施の形態で前提となる論理ボリューム、実論理ボリューム、仮想論理ボリュームの関係を説明する。
【００４５】
図５は、ストレージ装置３００がホスト計算機２００に２０ＧＢと１０ＧＢの２つの論理ボリュームを提供する際の、ストレージ装置３００の動作を示している。論理ボリュームは実ボリューム、仮想ボリュームのいずれか一方から構成される。本実施の形態では、実ボリュームと仮想ボリュームとを区別するために、実ボリュームから構成される論理ボリュームを実論理ボリューム、仮想ボリュームから構成される論理ボリュームを仮想論理ボリュームと称して以下説明する。
【００４６】
図５では、Ｖｏｌ２が実論理ボリュームに該当し、Ｖｏｌ１が仮想論理ボリュームに該当する。実ボリュームは１つ以上のディスクドライブ１５００の記憶領域から形成される論理的な１つ以上の記憶領域である。本実施の形態におけるストレージ装置３００は、複数の異なる特性を備えた実ボリュームを有する。特性の違いとは、例えば、半導体ドライブ（例ＳＳＤ：Solid State Drive）、磁性体ドライブ（例ＨＤＤ：Hard Disk Drive）などの記憶素子の違い、ＦＣ、ＳＡＳ、ＳＡＴＡなどのインターフェースの違いや、ディスクドライブから記憶領域を形成する方法（ＲＡＩＤレベルなど）の違いを意味する。この特性の違いにより、データを読み書きするために必要となる時間や、ハードウェア障害からの回復の可能性が異なってくる。
【００４７】
ここで、ＲＡＩＤとは、Redundant Array of Inexpensive Disksの略である。また、ＲＡＩＤレベルとは、実ボリュームの信頼性や性能の分類である。ＲＡＩＤレベルは、データの記録方法により分類される。具体的には、ＲＡＩＤレベルは、ホスト計算機２００から書き込まれたデータを分割・複製することでデータの断片を複数のディスクドライブ１５００に分散、かつ、重複して保持したり、データを復元するために必要なパリティなどのデータを生成しホスト計算機２００のデータと同時に保持したり、などの違いにより分類される。
【００４８】
仮想論理ボリュームは、当該仮想論理ボリュームに更新のあった領域分のデータだけを実ボリュームに保存する仮想的なボリュームである。図５では、その一例として、ホスト計算機２００からのデータＩＯ要求で仮想論理ボリューム（Ｖｏｌ１）の１つの領域に、データ要素Ｄ３が記憶されている。実際には、その領域（データ要素Ｄ３）に割り当てられた実ボリュームの記憶領域の断片（Ｐ３）にデータ要素Ｄ３が記憶される。このように、仮想論理ボリュームへの読み、書きで実ボリュームに割り当てられた「記憶領域の断片」を、以後、「ページ」とよび、ページに記憶されるデータ（言い換えれば、ページの割当て先の仮想領域に記憶されるデータ）を、「データ要素」とよぶ。
【００４９】
図５では、ページＰ３は、実ボリューム（Ｖｏｌ１３）から提供される。また、通常、ホスト計算機２００からアクセスされる実論理ボリューム用の実ボリュームと、仮想論理ボリューム用の実ボリュームとを区別するために、ストレージ装置３００では、仮想論理ボリューム用の実ボリュームは特別なグループ（以下、「プール」とよぶ）に登録し、管理される。プールには特性の異なる１又は複数の実ボリュームが特性情報とともに登録される。
【００５０】
また、ストレージ装置３００では仮想論理ボリュームにおいて、実ボリュームの特性情報を基に、プール内で特性の異なる実ボリューム間でページ上のデータ要素を移動させる。このような処理を、以下では、階層記憶制御と称して説明する。また、ページ上のデータ要素を実ボリューム間で移動させる処理を単にページ移動とよぶ。
【００５１】
階層記憶制御の動作例について、図５を参照して説明する。ストレージ装置３００では、ホスト計算機２００によるデータの読み書きの応答時間の違いを特性情報（図５では、高性能や、中性能）として管理しているものとする。ここで、ホスト計算機２００からページＤ２へのデータアクセス頻度が過去との比較で高まったと判断した場合、ストレージ装置３００は、低性能（Ｖｏｌ１１）から中性能（Ｖｏｌ１２）な実ボリュームにページＤ２を移動させる。上記のようなページ移動を実施することで、ストレージ装置３００は、ホスト計算機２００がデータにアクセスする頻度に応じ、適切な性能の論理ボリュームを提供することができる。
【００５２】
以上のように、階層記憶制御においては、プール内の特性の異なる実ボリューム間でページの移動を実施する。なお、本実施の形態では階層記憶制御でページ移動の鍵となる実ボリュームの特性の違いを「階層」の違いと表記することにする。また、以降、本発明の実施の形態では特に断らない限り３階層で説明する。ただし、本発明の実施の形態は３階層に限定されるものではない。
【００５３】
次に図６Ａ及び図６Ｂを参照して、本実施の形態におけるアプリケーションの優先度や特性に基づく階層記憶制御の概要を説明する。
【００５４】
図６Ａは、ホスト計算機２００によるストレージ装置３００へのデータ参照処理を示した概念図である。また、図６Ｂは、ホスト計算機２００により参照されたデータが、ストレージ装置３００内でどのように配置されるかを示した概念図である。
【００５５】
ホスト計算機２００は、アプリケーションが必要とするストレージ装置３００内の論理ボリュームに配置されたデータを参照する場合、次のように動作する。
【００５６】
図６Ａに示すように、ホスト計算機２００は、参照対象のデータがどのような構成で配置されているかが規定されるファイル編成情報を、ＯＳまたはボリュームの特定領域（ＶＴＯＣ：Ｖｏｌｕｍｅ  Ｔａｂｌｅ  ｏｆ  Ｃｏｎｔｅｎｔｓなど）から取得する。
【００５７】
次に、ホスト計算機２００は、ＯＳまたはＶＴＯＣから得られた情報を基に、データアクセスを開始する。ここで、ファイル編成には索引編成、順編成、区分編成、仮想記憶アクセス編成、直接編成などがあり、アプリケーションのデータ参照特性に合わせ適切な編成が選択されている。言い換えると、アプリケーションのデータ参照特性はファイル編成を知ることで、ある程度予測することができる。
【００５８】
図６Ａでは、データ参照特性の一例として、ファイル編成が索引編成の場合を示している。索引編成の場合、データは索引領域とデータ領域に分かれている。索引領域には、論理的に分割されたデータの断片（レコード）の配置アドレスが１つか複数個保存される。データ領域には、実際のデータ断片が保存される。図６Ａでは、ホスト計算機２００は、はじめに索引領域を参照し、対象とするレコードの配置アドレスを取得する。次に、ホスト計算機２００は、取得したアドレスを指定し、対象とするレコードを参照する。
【００５９】
このように、索引編成で論理ボリューム上のデータが参照される場合、索引領域が必ずホスト計算機２００から参照され、次に目的とする任意のレコードが参照される。すなわち、索引編成の場合、データの中でも特に索引領域が高頻度に参照される。その一方で索引編成の場合、データ領域はアプリケーションで必要となるレコードが任意に参照されるため、データ領域上のどの部位（レコード）が高頻度に参照されるか不定となる。
【００６０】
データのファイル編成が索引編成であるため、高頻度に参照される索引領域が高速に参照できることが好ましい。そこで、図６Ｂに示すように、当該索引領域上のデータを上位階層記憶に割り当て、以後の階層制御によってページ移動を起こさないようにする。このページ移動後に階層制御によりページを移動させない処理をページロックと称して以下説明する。一方、データ領域上のデータの参照頻度はアプリケーション動作に基づくもので静的には特定が難しいため、従来の階層記憶制御処理に従い配置する。すなわち、データ領域上のデータについて、データ配置後の参照頻度に基づいたページ移動により、性能の適正化を実現している。
【００６１】
このように、本実施の形態におけるアプリケーションの優先度や特性に基づく階層記憶制御では、データのファイル編成から、静的に判定可能なデータ部位別の参照頻度を特定する。そして、参照頻度が高い領域のデータを上位階層記憶に割り当てて、当該データ要素をページロックする。このような処理を実行することにより、優先度の高いアプリケーションで、あらかじめ高いＩＯ処理性能が必要であることがわかっているような場合、特に参照頻度の高いデータ領域を高速に参照可能なように制御することができる。
【００６２】
（１−４）各種テーブルの内容
図７は管理計算機１００のメモリ１１０に記憶されている実行中ジョブ管理テーブル１１２の内容を示す図表である。実行中ジョブ管理テーブル１１２は、実行中のジョブを管理するテーブルであって、図７に示すように、ジョブ名欄１１２０１、データセット名欄１１２０２、制御領域欄１１２０３、優先度欄１１２０４及び開始時刻欄１１２０５から構成される。
【００６３】
ジョブ名欄１１２０１には、ホスト計算機２００上で動作するＯＳがアプリケーションを実行する時に使用するジョブの名称が格納される。データセット名欄１１２０２には、ジョブ名欄１１２０１のジョブで起動されるアプリケーションが使用するデータセットの名称が格納される。制御領域欄１１２０３には、管理計算機１００による階層制御対象となる論理ボリューム上の領域に関する情報が格納される。例えば、先頭シリンダ、ヘッダ、最後尾シリンダまたはヘッダなどが格納される。優先度欄１１２０４には、階層制御を対象とする場合の優先度の情報が格納される。開始時刻欄１１２０５には、ジョブが実行された時刻が格納される。
【００６４】
図８は、管理計算機１００のメモリ１１０に記憶されている制御対象データ管理テーブル１１３の内容を示す図表である。制御対象データ管理テーブル１１３は、ジョブにより使用されるデータに関する情報であって、図８に示すように、データセット名欄１１３０１、デバイスＩＤ欄１１３０２、格納アドレス（格納ＡＤＲ）欄１１３０３、ファイル編成欄１１３０４、ファイル編成詳細欄１１３０５及び過去階層ポインタ欄１１３０６から構成される。
【００６５】
データセット名欄１１３０１には、ホスト計算機２００上で主に動作するアプリケーションが使用するデータで、特にメインフレームＯＳで管理される論理的な単位であるデータセットの名称が格納される。オープンシステムでは、例えば、ファイル名がデータセット名に相当する。デバイスＩＤ欄１１３０２には、当該データセットが配置される論理ボリュームをホスト計算機２００上のＯＳが一意に識別するための識別子（例えばデバイス番号など）が格納される。格納アドレス（格納ＡＤＲ）１１３０３欄には、データセットの格納デバイスＩＤのアドレスが格納される。具体的には、後述するホスト構成管理テーブル１１８の格納デバイスＩＤ欄１１８３のアドレスがデバイスＩＤ欄１１３０２に格納される。例えば、当該データセットの先頭シリンダ、ヘッダ数、および、最後尾シリンダ、ヘッダ数が格納される。通信ネットワーク５００がＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）の場合はＬＢＡ（Logical Block Address）であっても構わない。ファイル編成欄１１３０４には、データセットに設定されているファイル編成の名称が格納される。ファイル編成詳細欄１１３０５には、ファイル編成に基づき階層制御対象とする領域の情報が格納される。例えば、先頭シリンダ、ヘッダ、最後尾シリンダ、ヘッダで表される。過去階層ポインタ欄１１３０６には、後述する過去階層保持テーブル１１９を参照するためのポインタが格納される。過去階層保持テーブル１１９は、後述するように、過去にジョブが実行された際に、当該ジョブが使用したデータセットに割り当てられていた階層記憶を復元するための情報を管理するテーブルである。
【００６６】
図９は、管理計算機１００のメモリ１１０に記憶されるユーザ設定情報管理テーブル１１４の内容を示す図表である。ユーザ設定情報管理テーブル１１４は、制御対象のデータに関して、計算機システム１０の使用者によりあらかじめ設定された情報であって、図９に示すように、項目優先度欄１１４０１、項目欄１１４０２、設定内容欄１１４０３及び階層記憶優先度欄１１４０４から構成される。
【００６７】
項目優先度欄１１４０１には、後述の初期設定で管理計算機１００の使用者により設定された複数の項目における優先度が格納される。項目欄１１４０２には、当該使用者により指定された項目が格納される。項目には、例えば、時刻、ジョブ名、ジョブクラス、データセット名、ユーザ名などを例示できる。設定内容１１４０３欄には、指定された項目１１４０２の内容が格納される。例えば時刻の場合はＴ３からＴ４といった時刻範囲が指定される。階層記憶優先度１１４０４欄には、使用者により指定された項目に該当するデータセットが優先度の高いものなのか否かの情報が格納される。
【００６８】
図１０は、管理計算機１００のメモリ１１０に記憶される入出力頻度管理テーブル１１５の内容を示す図表である。入出力頻度管理テーブル１１５は、アプリケーションの参照特性に関する情報であって、図１０に示すように、ファイル編成欄１１５０１、高頻度入出力１欄１１５０２、高頻度入出力２欄１１５０３及び取得方法欄１１５０４から構成される。
【００６９】
ファイル編成欄１１５０１には、制御対象のデータセットに設定されているファイル編成の名称が格納される。高頻度入出力１欄１１５０２には、当該ファイル編成で最も高頻度にデータが参照される領域の情報が格納される。高頻度入出力２欄１１５０２は、当該ファイル編成で高頻度入出力１の次に高頻度にデータが参照される領域の情報が格納される。
【００７０】
ここで、ファイル編成が、仮想記憶アクセス編成（ＶＳＡＭともよばれる）の場合の、高頻度入出力欄１及び２に設定される情報について説明する。仮想記憶アクセス編成は、高い入出力性能が必要なアプリケーションであるデータベースで利用されるファイル編成である。当該編成のデータ参照には、データセット全体に高い入出力性能が求められ、その中でも特にＩｎｄｅｘ領域に高い入出力性能が求められる。そこで、高頻度入出力１にはＩｎｄｅｘを、高頻度入出力２にはデータセット全体を登録する。取得方法１１５０４欄には、当該高頻度入出力領域の論理ボリューム上の領域を取得するために必要となる手段（OS utility1）の情報が格納される。
【００７１】
図１１は、管理計算機１００のメモリ１１０に記憶される階層記憶利用状況管理テーブル１１６の内容を示す図表である。階層記憶利用状況管理テーブル１１６は、階層記憶の利用状況に関する情報などを保持する情報であって、階層番号欄１１６０１、全体容量欄１１６０２、空き容量欄１１６０３、ページロック済み容量（高優先）欄１１６０４及びページロック済み容量（低優先）欄１１６０５から構成される。
【００７２】
階層番号欄１１６０１には、後述する階層記憶の番号が格納される。例えば、本実施の形態では、この階層番号１１６０１の値が小さいものほど、性能が高い階層記憶であることを示す。全体容量欄１１６０２には、ストレージ装置３００内の階層番号に対応する階層記憶の全容量の情報が格納される。空き容量欄１１６０３には、当該階層記憶において未だ階層制御対象ではない容量の情報が格納される。ページロック済み容量欄１１６には、本実施の形態で使用されるページロック制御が実施されている領域の情報が格納され、優先度の高いジョブ向けに割り当てた階層記憶の容量が高優先欄１１６０４に格納され、優先度の低いジョブ向けに割り当てた階層記憶の容量が低優先欄１１６０５に格納される。
【００７３】
図１２は、管理計算機１００のメモリ１１０に記憶される階層テーブル１１７の内容を示す図表である。階層テーブル１１７は、複数のアドレスマップから構成され、アドレスマップは仮想アドレス欄１１７０２及び階層番号欄１１７０３から構成される。仮想アドレス欄１１７０２には、仮想ボリュームの領域を示す情報が格納される。階層番号欄１１７０３には、後述する階層記憶の番号が格納される。
【００７４】
図１３は、管理計算機１００のメモリ１１０に記憶されるホスト構成管理テーブル１１８の内容を示す図表である。ホスト構成管理テーブル１１８は、階層制御の対象となるアプリケーションのデータを使用するホスト計算機２００を管理するためのテーブルであって、図１３に示すように、ホストＩＤ欄１１８１、データセット名欄１１８２、格納デバイス欄ＩＤ１１８３、格納アドレス（格納ＡＤＲ）欄１１８４、ストレージＩＤ欄１１８５及びボリュームＩＤ欄１１８６から構成される。
【００７５】
ホストＩＤ１１８１欄には、ホスト計算機２００を識別する識別子が格納される。例えば、ホストＩＤ１１８１欄には、ＴＣＰ／ＩＰのＨｏｓｔ  ＮａｍｅとＩＰアドレスとの組み合わせが格納される。データセット名欄１１８２には、ホスト計算機２００で主に動作するアプリケーションが使用するデータで、特にメインフレームＯＳで管理される論理的な単位であるデータセットの名称が格納される。例えば、オープンシステムではファイル名がデータセットに相当する。格納デバイスＩＤ欄１１８３には、当該データセットが配置されている論理ボリュームを、ホスト計算機２００上のＯＳが一意に識別するための識別子（例えばデバイス番号など）が格納される。格納アドレス１１８４欄には、対応するデータセットが配置されている格納デバイスＩＤ１１８３欄に対応するアドレスが格納される。例えば、当該データセットの先頭シリンダ、ヘッダ数、および、最後尾シリンダ、ヘッダ数が格納される。ＳＣＳＩなどの場合はＬＢＡ（Logical Block Address）であっても構わない。ストレージＩＤ欄１１８５には、管理計算機１００によって管理されるストレージ装置３００を識別するための識別子が格納される。ボリュームＩＤ欄１１８６には、ストレージＩＤ欄１１８５によって識別されるストレージ装置３００が付与した論理ボリュームを識別するための識別子が格納される。
【００７６】
図１４は、管理計算機１００のメモリ１１０に記憶されている過去階層保持テーブル１１９の内容を示す図表である。過去階層保持テーブル１１９は、指定した論理ボリュームが階層記憶制御によってどのボリュームに配置されているかを管理するテーブルであって、図１４に示すように、データセット名欄１１９０１及びアドレスマップから構成され、アドレスマップはさらに仮想アドレス欄１１９０２及び階層番号欄１１９０３から構成される。
【００７７】
データセット名欄１１９０１には、ホスト計算機２００で主に動作するアプリケーションが使用するデータで、特にメインフレームＯＳで管理される論理的な単位であるデータセットの名称が格納される。仮想アドレス欄１１９０２には、ストレージ装置３００が仮想ボリュームを識別するために使用する識別子が格納される。階層番号欄１１９０３には、後述する階層記憶の番号が格納される。
【００７８】
図１５は、ストレージ装置３００の共有メモリ１２００に記憶されるボリューム管理情報１２５０の内容を示す図表である。ボリューム管理情報１２５０は、論理ボリュームを管理するための情報であって、図１５に示すように、論理ボリュームＩＤ欄１２５０１、ボリューム状態欄１２５０２、容量欄１２５０３、実ボリュームＩＤ欄１２５０６及び仮想フラグ欄１２５０７から構成される。
【００７９】
論理ボリュームＩＤ欄１２５０１には、ボリューム管理情報１２５０を記憶するストレージ装置３００によって提供される論理ボリュームを識別するための識別子が格納される。ボリューム状態欄１２５０２には、論理ボリュームＩＤ１２５０１によって識別される論理ボリュームの現在の状態を示す情報が格納される。例えば、ボリューム状態１２５０２には、正常、異常又は未実装を示す情報のうち少なくとも１つが格納される。より具体的には、例えば、論理ボリュームＩＤによって識別される論理ボリュームにホスト計算機２００が正常にアクセスできる場合、ボリューム状態情報欄１２５０２は、「正常」を示す情報が格納される。また、論理ボリュームＩＤによって識別される論理ボリュームにホスト計算機２００が正常にアクセスできない場合、ボリューム状態情報欄１２５０２には、「異常」を示す情報が格納される。例えば、ディスクドライブ１５００の故障時、コピーの障害時には、ボリューム状態情報欄１２５０２には、「異常」を示す情報が格納される。また、論理ボリュームＩＤによって識別される論理ボリュームにデータが格納されていない場合、ボリューム状態情報欄１２５０２には、「未実装」を示す情報が格納される。
【００８０】
容量欄１２５０３には、論理ボリュームＩＤによって識別される論理ボリュームの容量（記憶容量）が格納される。実ボリュームＩＤ欄１２５０６には、論理ボリュームＩＤに対応する論理ボリュームに対応付けられた実ボリュームを識別する識別子が格納される。仮想フラグ欄１２５０７には、論理ボリュームが仮想ボリュームから構成されるか否かを示す情報が格納される。仮想フラグが１の場合、論理ボリュームが仮想論理ボリュームであることを意味する。また、仮想フラグが０の場合、論理ボリュームが実論理ボリュームであることを意味する。
【００８１】
図１６は、ストレージ装置３００に記憶される仮想論理ボリューム管理情報１２７０の内容を示す図表である。仮想論理ボリューム管理情報１２７０は、仮想論理ボリュームを管理する情報であって、仮想論理ボリューム管理情報１２７０の数は、ストレージ装置３００が保持する仮想論理ボリュームの個数と同数である。つまり、１つの仮想論理ボリュームに対して１つの仮想論理ボリューム管理情報１２７０が作成される。仮想論理ボリューム管理情報１２７０は、図１６に示すように、ボリュームＩＤ欄１２７０１、プールＩＤ欄１２７０２及びアドレスマップ（１２７０３、１２７０４、１２７０５、１２７０６、１２７０７）から構成される。以下、この仮想論理ボリューム管理情報１２７０を記憶するストレージ装置３００を「このストレージ装置３００」とよび、この仮想論理ボリューム管理情報１２７０に対応する仮想論理ボリュームを「この仮想論理ボリューム」とよぶ。
【００８２】
ボリュームＩＤ欄１２７０１には、このストレージ装置３００によって識別される実ボリュームの識別子が格納される。プールＩＤ欄１２７０２には、このストレージ装置３００によって管理される階層記憶プール管理情報１２９０を識別する識別子が格納される。プールＩＤ欄１２７０２に格納されるプールＩＤは、この仮想論理ボリュームにページを提供する実ボリューム群を特定するために使用される。
【００８３】
アドレスマップは、仮想アドレス欄１２７０３、階層番号欄１２７０４、階層アドレスポインタ欄１２７０５、参照フラグ欄１２７０６及びロックフラグ欄１２７０７から構成される。仮想アドレス欄１２７０３には、仮想論理ボリュームにおける一単位の仮想領域を示すアドレスが格納される。仮想領域の１単位のサイズは、ページのサイズと同一である。ホスト計算機２００からのＩＯ要求において、仮想論理ボリュームが指定される場合、仮想論理ボリュームにおけるアクセス先の仮想領域を表す仮想アドレスも指定される。階層番号欄１２７０４には、プールＩＤが示す階層記憶プール管理情報１２９０の特定の階層記憶を示す番号が格納される。階層アドレスポインタ欄１２７０５には、プールＩＤ１２７０３が示す階層記憶プール管理情報１２９０の特定階層の階層記憶アドレスマップの一領域を指すポインタが格納される。つまり、階層記憶プール管理情報１２９０には、いくつかの階層があり、各階層には階層記憶アドレスマップが対応付けられている。さらに、階層記憶アドレスマップは、線形的な記憶領域を提供しており、階層番号欄１２７０４の階層番号と階層アドレスポインタ欄１２７０５の階層アドレスポインタにより、そのプール内の階層番号と当該階層番号毎に提供される階層記憶アドレスマップの１アドレスが指定される。なお、仮想領域にページが割り当てられていない場合、その仮想領域の仮想アドレス１２７０３に対応した階層アドレスポインタ１２７０５には、「空き」を示す情報が格納される。参照フラグ１２７０６には、この仮想アドレスが示す領域（ページ）に書き込みもしくは書き込み参照があったことを示すフラグが格納される。ロックフラグ欄１２７０７には、この仮想アドレスが指す領域（ページ）が前述のページロック制御中であることを示すフラグが格納される。
【００８４】
図１７は、ストレージ装置３００の共有メモリ１２００に記憶される階層記憶プール管理情報１２９０の内容を示す図表である。階層記憶プール管理情報１２９０は、プールを管理するための情報であって、階層記憶プール管理情報１２９０の数は、このストレージ装置３００内におけるプールの数と同数である。つまり、１つのプールに対して１つの階層記憶プール管理情報１２９０が作成される。階層記憶プール管理情報１２９０は、プールＩＤ１２９０１、階層記憶アドレスマップ情報（１２９０２〜１２９１０）から構成される。以下、この階層記憶プール管理情報１２９０に対応するプールを「このプール」とよぶ。プールＩＤ１２９０１は、このプールを一意に示す識別子である。階層記憶アドレスマップ情報は、このプールに１又は複数存在する階層に割り当てられた１又は複数の実ボリュームを管理するための情報である。階層記憶アドレスマップ情報は、このプールに登録される階層の個数分存在し、各階層の記憶領域を線形的なアドレスで参照可能にする情報である。
【００８５】
階層記憶アドレスマップ情報は、階層番号欄１２９０２、総実ボリューム数欄１２９０３、総容量情報欄１２９０４、空き総容量情報欄１２９０５、アドレス欄１２９０６、割当情報欄１２９０７、アクセス頻度欄１２９１０、ボリュームＩＤ欄１２９０８及び実アドレス欄１２９０９から構成される。以下、この階層記憶アドレスマップ情報に対応する実ボリュームを「この実ボリューム」とよぶ。
【００８６】
階層番号欄１２９０２には、階層記憶の階層を表す番号が格納される。総実ボリューム数欄１２９０３には、この階層番号が指す階層に登録される実ボリュームの個数が格納される。総容量情報欄１２９０４には、この階層番号が指す階層に登録される実ボリュームの総容量が格納される。空き総容量欄１２９０５には、この階層番号が指す階層に登録される実ボリュームで、ページが割り当てられていない空き領域の総容量が格納される。アドレス欄１２９０６には、階層記憶アドレスマップが提供する線形的なアドレス空間のアドレスが格納される。割当情報欄１２９０７には、アドレス１２９０６に対応する領域が割当て済みか又は未割当か（つまり、割当不可能か割当可能か）、又はページロック制御中かを表す情報が格納される。アクセス頻度欄１２９１０には、アドレス１２９０６に対応する領域が割当済みの場合にこの領域割当後に、何回参照されたかの情報（アクセス頻度）が格納される。ボリュームＩＤ欄１２９０８には、実ボリュームを一意に識別する識別子が格納される。実アドレス欄１２９０９には、実ボリュームＩＤが指す実ボリュームのアドレスが格納される。
【００８７】
図１８は、ストレージ装置３００の共有メモリ１２００に記憶されるストレージ基本情報１２６０の内容を示す図表である。ストレージ基本情報１２６０は、ストレージ装置３００の情報を管理するテーブルであって、ＩＰアドレス欄１２６０１及びストレージＩＤ１２６０２から構成される。ＩＰアドレス欄１２６０１には、ストレージ装置３００に付与されたＩＰアドレスが格納される。ストレージＩＤ欄１２６０２は、ＩＰアドレスが示すストレージ装置３００を一意に識別する識別子が格納される。
【００８８】
図１９は、管理計算機１００に記憶されるストレージ情報テーブル１０１の内容を示す図表である。ストレージ情報テーブル１０１は、ストレージＩＤ欄１０１１、ボリュームＩＤ欄１０１２及び仮想フラグ欄１０１３から構成される。ストレージＩＤ欄１０１１には、管理計算機１００によって管理されるストレージ装置３００を一意に識別する識別子が格納される。ボリュームＩＤ欄１０１２には、ストレージＩＤによって識別されるストレージ装置３００により付与された論理ボリュームを一意に識別する識別子が格納される。仮想フラグ欄１０１３には、仮想論理ボリュームであることを示すフラグが格納される。
【００８９】
図２０は、ＩＯ要求７３００の内容を示す図表である。ＩＯ要求７３００は、管理計算機１００又はホスト計算機２００によって発行される。ＩＯ要求７３００は、宛先７３００１、指示内容７３００２、通し番号７３００３及びオプション７３００４から構成される。
【００９０】
宛先７３００１は、このＩＯ要求７３００についての宛先に関する情報であって、例えば、このＩＯ要求７３００の送信先となるストレージ装置３００の識別子と、そのストレージ装置３００における論理ボリューム（例えば仮想論理ボリューム或いは実論理ボリューム）の識別子と、その論理ボリュームにおける記憶領域（例えば、仮想領域、或いは実領域）のアドレス（ボリュームアドレス）とを含む情報である。
【００９１】
指示内容７３００２は、このＩＯ要求７３００によって指示される処理の内容である。例えば、指示内容７３００２は、階層制御指示か、或いは、データアクセスの指示等である。階層制御指示としては、例えば、ページ階層移動、ページロック開始、ページロック解除、ボリューム階層状態取得、又はプール状態取得などが挙げられる。また、データアクセスの指示としては、例えば、データ書き込み又はデータ読み込みなどが挙げられる。
【００９２】
通し番号７３００３は、このＩＯ要求７３００が発行された順番を示す。通し番号７３００３は、このＩＯ要求７３００の発行元である管理計算機１００又はホスト計算機２００によって決められる。オプション７３００４は、このＩＯ要求７３００によって書き込みが要求されるデータの内容及び、ページ移動する場合の移動後のアドレスマップ情報などが挙げられる。
【００９３】
（１−５）各装置の動作の詳細
（１−５−１）ストレージ装置の動作の詳細
まず、ストレージ装置３００の動作の詳細について説明する。図２１は、ストレージ装置３００におけるデータアクセス処理の処理手順を示すフローチャートである。
【００９４】
ストレージ装置３００の入出力制御部１３００は、ホスト計算機２００からＩＯ要求７３００を受信すると、そのＩＯ要求７３００の宛先７３００１が仮想論理ボリュームを表しているか否かを判定する（Ｓ５０００）。具体的には、例えば、入出力制御部１３００のプロセッサ１３１０（以下、入出力制御部１３００として説明する。）は、ＩＯ要求７３００の宛先７３００１を参照し、宛先７３００１に含まれているボリュームＩＤを取得する。次に、入出力制御部１３００は、取得したボリュームＩＤに合致する論理ボリュームに関する情報を、図１５に示すボリューム管理情報１２５０から取得する。
【００９５】
そして、ボリューム管理情報１２５０の仮想フラグ１２５０７が仮想論理ボリュームを表している場合には、入出力制御部１３００は、ステップＳ５００５以降を実行する。一方、仮想論理ボリュームを表していない場合、入出力制御部１３００は、ステップＳ５０９５を実行する。以下、図２１及び図２２の説明において、上記取得したボリュームＩＤに対応する仮想論理ボリュームを「この仮想論理ボリューム」と称して以下説明する。
【００９６】
ステップＳ５００５において、入出力制御部１３００は、図１６に示す１又は複数の仮想論理ボリューム管理情報１２７０から、上記取得したボリュームＩＤに対応する仮想論理ボリューム管理情報１２７０を参照する。以下、図２１及び図２２の説明において、この特定された仮想論理ボリューム管理情報１２７０を「この仮想論理ボリューム管理情報１２７０」と称して以下説明する。
【００９７】
入出力制御部１３００は、この仮想論理ボリューム管理情報１２７０から、ＩＯ要求７３００の宛先７３００１に含まれているボリュームアドレス（以下、図２１及び図２２の説明において「このボリュームアドレス」と言う）に対応する仮想アドレス１２７０３を特定する。入出力制御部１３００は、特定した仮想アドレス１２７０３に対応する仮想アドレスエントリを参照する。ここで、仮想アドレスエントリとは、仮想アドレス１２７０３、階層番号１２７０４、及び階層アドレスポインタ１２７０５及び、参照フラグ１２７０６及びロックフラグ１２７０７からなる情報要素（エントリ）である。以下、入出力制御部１３００が特定した仮想アドレスエントリをこの仮想アドレスエントリと称する。
【００９８】
次に、入出力制御部１３００は、この仮想論理ボリューム管理情報１２７０の参照フラグ１２７０６欄に参照があったことを示すフラグを登録する（Ｓ５００７）。
【００９９】
次に、入出力制御部１３００は、このＩＯ要求７３００の指示内容７３００２が、階層制御指示か否かを判定する（Ｓ５００９）。このＩＯ要求７３００の指示内容７３００２が階層制御指示の場合には、後述する階層記憶制御処理を実行して（Ｓ５０２０）、入出力処理を終了する。このＩＯ要求７３００の指示内容７３００２が階層制御指示ではない場合、次のステップＳ５０１０を実行する。
【０１００】
次に、入出力制御部１３００は、ＩＯ要求７３００の指示内容７３００２が、データ読み込み参照か否かを判定する（Ｓ５０１０）。ＩＯ要求７３００の指示内容７３００２がデータ読み込み参照ではない場合には、入出力制御部１３００は、ステップＳ５０６０の処理を実行する。
【０１０１】
ステップＳ５０６０において、入出力制御部１３００は、この仮想アドレスエントリに割り当てページがあるかを判定する（Ｓ５０６０）。具体的に、入出力制御部１３００は、階層アドレスポインタ１２７０５を参照して、階層アドレスポインタ１２７０５が「空き」（割当ページがないこと）を表しているかを判定する。
【０１０２】
ステップＳ５０６０において、仮想アドレスエントリに割り当てページがあると判定された場合には、入出力制御部１３００は、プールからページを割り当てる処理を実行する（Ｓ５０７０）。ステップＳ５０７０におけるページを割り当てる処理については後で詳細に説明する。
【０１０３】
ステップＳ５０１０において、ＩＯ要求７３００における指示内容７３００２がデータ読み込み参照である場合には、入出力制御部１３００は、この仮想アドレスエントリに割り当てページがあるかを判定する（Ｓ５０４０）。具体的に、入出力制御部１３００は、階層アドレスポインタ１２７０５を参照して、階層アドレスポインタ１２７０５が「空き」（割当ページがないこと）を表しているかを判定する。
【０１０４】
ステップＳ５０４０において、仮想アドレスエントリに割り当てページがあると判定された場合には、入出力制御部１３００は、ＩＯ要求７３００でデータ参照の結果を０として（つまり、０を表すデータ要素が読み出されたとして）、ホスト計算機２００にデータ要素０を返信し（Ｓ５０５０）、データアクセス処理を終了する。
【０１０５】
ステップＳ５０７０におけるプールからページを割り当てる処理の後、または、ステップ５０６０の判定で階層アドレスポインタ１２７０５が「空き」を表していないと判定された場合（割当ページがある場合）には、入出力制御部１３００は、ステップ５０９５を実施する。
【０１０６】
ステップＳ５０４０において階層アドレスポインタ１２７０５が「空き」を表していないと判定された場合、または、ステップＳ５０００においてそのボリューム管理情報１２５０の仮想フラグ１２５０７が仮想論理ボリュームを表していないと判定された場合、入出力制御部１３００は、その論理ボリューム（仮想論理ボリューム又は実論理ボリューム）へのデータアクセス処理を実行する（Ｓ５０９５）。
【０１０７】
論理ボリュームへのデータアクセス処理で、ＩＯ要求７３００の宛先７３００１が表す論理ボリュームが仮想論理ボリュームである場合、入出力制御部１３００は、この仮想アドレスエントリの階層アドレスポインタ１２７０５から特定されるページにアクセスする。また、ＩＯ要求７３００の宛先７３００１が表す論理ボリュームが実論理ボリュームである場合、入出力制御部１３００は、宛先７３００１におけるボリュームアドレスから特定される実領域にアクセスする。
【０１０８】
以上、ストレージ装置３００におけるデータアクセス処理の流れの一例を説明した。なお、図２１の説明において、入出力制御部１３００が行う処理を、例えば、入出力処理プログラム１２４０を実行するプロセッサ１３１０が行ってもよい。プロセッサ１３１０は、仮想ボリューム処理プログラム１２２０に仮想ボリュームに関わる処理を実行させてもよい。
【０１０９】
図２２は、図２１のステップＳ５０７０において実行されるストレージ装置３００におけるプールからのページ割り当て処理の処理手順を示すフローチャートである。
【０１１０】
まず、ストレージ装置３００の入出力制御部１３００は、この仮想論理ボリュームの仮想論理ボリューム管理情報１２７０におけるプールＩＤ１２７０２が示す階層記憶プール管理情報１２９０を参照する。次に入出力制御部１３００は、１又は複数の階層記憶アドレスマップ情報のうち、階層番号が最も小さい階層（性能や信頼性が最も高いと設定される最上位の階層）を選定する（Ｓ５１００）。
【０１１１】
次に、入出力制御部１３００は、この階層番号の階層記憶アドレスマップ情報のいずれかの割当情報１２９０７に「空き」を表しているものがあるか否かを判定する（Ｓ５１２０）。
【０１１２】
ここで、ステップＳ５１２０において、階層記憶アドレスマップ情報のいずれかの割当情報１２９０７に「空き」のあるエントリ（アドレス１２９０６、割当情報１２９０７、ボリュームＩＤ１２９０８、実アドレス１２９０９からなる階層記憶アドレスマップ情報の行）が見つかったと判定された場合には、入出力制御部１３００は、このエントリの情報を参照し、ボリュームＩＤ１２９０８と実アドレス１２９０９を取得し、アクセス対象のページを特定する。さらに、入出力制御部１３００は、このエントリの割当情報１２９０７を、割当ありにし、さらにこの情報に含まれるアクセス頻度１２９１０の値に１を加算する（Ｓ５１５０）。
【０１１３】
次に、入出力制御部１３００は、この階層記憶アドレスマップの情報を更新する（Ｓ５１６０）。具体的に、入出力制御部１３００は、空き総容量情報１２９０５の空き総容量から割り当てに必要なページ容量分を削減する（Ｓ５１６０）。
【０１１４】
次に、入出力制御部１３００は、仮想論理ボリューム管理情報１２７０の階層アドレスポインタ１２７０５をこのエントリに変更する。階層アドレスポインタ１２７０５は、階層記憶プール管理情報１２９０の階層番号及びアドレスから構成される。
【０１１５】
一方、ステップ５１２０において、階層記憶アドレスマップ情報のいずれもの割当情報１２９０７に「空き」が無いと判定された場合には、入出力制御部１３００は、この階層記憶アドレスマップ情報の階層番号よりも一つ下位の階層（現在の階層番号＋１）の階層記憶アドレスマップ情報の有無を確認する（Ｓ５１３０）。
【０１１６】
ステップＳ５１３０において、一つ下位の階層の階層記憶アドレスマップ情報が存在する場合には、入出力制御部１３００は、現在よりも一つ下位の階層の階層記憶アドレスマップ情報（現在の階層番号＋１）を選定し（Ｓ５１１０）、再度ステップＳ５１２０を実行する。
【０１１７】
ステップＳ５１３０において、一つ下位の階層の階層記憶アドレスマップ情報が存在しない場合には、入出力制御部１３００は、ＩＯエラーをＩＯ要求発行元のホスト計算機２００に返す（Ｓ５１４０）。入出力制御部１３００は、ステップＳ５１４０において、ＩＯエラーのホスト計算機２００にＩＯエラーを返すだけでなく、管理端末１６００や、メールなどで使用者にＩＯエラーを通知しても良い。
【０１１８】
以上、ストレージ装置３００におけるページ割当て処理の流れの一例を説明した。なお、図２２の説明において、入出力制御部１３００が行う処理を、例えば、入出力処理プログラム１２４０を実行するプロセッサ１３１０が行ってもよい。プロセッサ１３１０は、仮想ボリューム処理プログラム１２２０に仮想ボリュームに関わる処理を実行させてもよい。
【０１１９】
図２３は、図２１のステップＳ５０２０において実行されるストレージ装置３００における階層記憶制御処理の処理手順を示すフローチャートである。階層記憶制御処理は、定期的に実行される階層記憶制御もしくは管理計算機１００の指示により実行される階層記憶制御で使用される処理である。以下では、各プールにおける階層記憶制御処理について説明している。
【０１２０】
まず、ストレージ装置３００の入出力制御部１３００は、指定されたプールの階層記憶プール管理情報１２９０における割当情報１２９０７を参照する（Ｓ８０００）。ステップＳ８０００において、入出力制御部１３００は、最下位階層の階層記憶アドレスマップ情報の上位エントリから順に参照する。以下、説明のため、入出力制御部１３００が現時点のページの置き換え元として参照している階層をソース階層、階層記憶プール管理情報１２９０のソース階層の階層記憶アドレスマップ情報のエントリをソースエントリと称する。また、ページの置き換え先として参照する階層をターゲット階層、階層記憶プール管理情報１２９０のターゲット階層の階層アドレスマップ情報のエントリをターゲットエントリと称する。
【０１２１】
次に、入出力制御部１３００は、今回の階層制御処理が階層記憶制御指示によるものなのかを判定する（Ｓ８００５）。ここで、階層記憶制御指示によるものである場合、後述の階層制御要求処理（Ｓ８２００）を実行する。一方、階層記憶制御指示ではない場合、入出力制御部１３００は、ステップＳ８０１０以降の処理を実行する。
【０１２２】
入出力制御部１３００は、ソース階層に対して規定されている基準アクセス頻度（基準値）と、該当エントリの割当情報１２９０７に記載されているアクセス頻度を比較する（Ｓ８０１０）。階層記憶制御処理では、各階層には基準となるアクセス頻度（基準アクセス頻度）が、あらかじめ使用者等により指定されている。ステップＳ８０１０では、この基準アクセス頻度を超えている場合に、階層の異なる実ボリューム間でページ移動が実行される。
【０１２３】
ステップＳ８０１０において、ソースエントリのアクセス頻度１２９１０が基準値を上回る場合には、入出力制御部１３００は、さらに、ソース階層に上位階層があるかを判定する（Ｓ８０９０）。ステップＳ８０９０において、ソース階層よりも一つ上位の階層がある場合には、入出力制御部１３００は、当該階層をターゲット階層として選定し（Ｓ８０７０）、当該階層の基準値と比較する（Ｓ８０１０）。ここで、ターゲット階層の初期値はソース階層と同じ値として設定されている。
【０１２４】
入出力制御部１３００は、上記処理を繰り返し、基準値を超えないターゲット階層を特定する。なお、ステップＳ８０９０において、ソース階層に上位階層がないと判定された場合には、入出力制御部１３００は、対応するページの移動をせずに（Ｓ８１２０）、ステップ８０２５以降の処理を実行する。このように、ソース階層に上位階層が無い場合、すなわち、ソース階層が最上位階層であると入出力制御部１３００が判断した場合、最上位階層を使い続けるために、入出力制御部１３００は、ソースエントリのページ移動をせず、そのまま処理を継続する。
【０１２５】
一方、ステップＳ８０１０において、ソースエントリのアクセス頻度１２９１０が基準値以下である場合には、入出力制御部１３００は、ソース階層とターゲット階層が同一かを判定する（Ｓ８０１３）。ステップＳ８０１３において、ソース階層とターゲット階層が同一であると判定された場合には、入出力制御部１３００は、ソースエントリが示すページは現状配置されている階層記憶の基準値を満たしており、ソースエントリのページ移動の必要が無いと判断し、ステップ８０２５以降の処理を実行する。
【０１２６】
一方、ステップＳ８０１３において、ソース階層とターゲット階層が同一でないと判定された場合には、入出力制御部１３００は、ソースエントリが示すページは現状配置されている階層記憶の基準値を満たしておらず、ソースエントリのページ移動の必要があると判断し、ターゲット階層の階層記憶アドレスマップ情報の空き総容量１２９０５を参照し、ターゲット階層にページ移動が可能な空きのある実ボリュームが存在するかを確認する（Ｓ８０１５）。
【０１２７】
ステップＳ８０１５において、ターゲット階層に空きが無いと判定された場合には、入出力制御部１３００は、ターゲット階層にソースエントリのアクセス頻度１２９１０の参照頻度よりも低い参照頻度のエントリでかつ割り当て情報がページロック以外であるか否かを判定する（Ｓ８１００）。
【０１２８】
ステップＳ８１００において、ターゲット階層にソースエントリのアクセス頻度１２９１０よりも低い参照頻度のエントリが無い、または、ターゲット階層にソースエントリのアクセス頻度１２９１０よりも低い参照頻度のエントリはあるがその割り当て情報１２９０７がページロックのものしか無いと判定された場合には、入出力制御部１３００は、ターゲット階層よりも一つ下位の階層をターゲット階層に選定し（Ｓ８１０７）、ターゲット階層がソース階層と同一かを判定する（Ｓ８０１３）。
【０１２９】
ステップＳ８１００において、ターゲット階層にソースエントリのアクセス頻度１２９１０の参照頻度よりも低い参照頻度のエントリがあり、かつ、当該エントリの割り当て情報１２９０７がページロック以外の場合には、入出力制御部１３００は、ソースエントリとターゲットエントリとのページの入れ替えを実行する（Ｓ８１１０）。
【０１３０】
一方、ステップＳ８０１５において、ターゲット階層にページ移動が可能な空きのある実ボリュームが存在する場合には、入出力制御部１３００は、ターゲット階層の空きが存在する実ボリュームに対しページ移動を実行する（Ｓ８０２０）。
【０１３１】
入出力制御部１３００は、ステップＳ８０２０、ステップＳ８１１０、または、ステップＳ８１２０を実行した後、ソースエントリを次のエントリに変更する（Ｓ８０２５）。
【０１３２】
次に、入出力制御部１３００は、プール内のソース階層の全ソースエントリについて判定処理を実行したかを確認し（Ｓ８０３０）、未処理のエントリがある場合には、ステップＳ８０１０以降の処理を再度実行する。
【０１３３】
一方、ステップＳ８０３０において、ソース階層に未処理のエントリが無い場合、ソース階層よりも一つ高位の階層をソース階層に設定する（Ｓ８０４０）。ステップＳ８０４０において設定された階層が最上位階層を上回っていない、すなわち、ソース階層よりも一つ高位の階層が存在する場合には（Ｓ８０５０でＮｏ）、入出力制御部１３００は、ステップＳ８０００から再度処理を実行する。
【０１３４】
一方、ステップＳ８０４０において設定された階層が最上位階層を上回っている場合、すなわち、ソース階層よりも１階層高い階層が存在しない場合には（Ｓ８０５０でＹｅｓ）、入出力制御部１３００は、プール内の全階層の階層記憶アドレスマップ情報におけるアクセス頻度１２９１０の参照頻度を０にリセットして（Ｓ８１３０）、階層記憶制御処理を終了する。
【０１３５】
図２４は、図２３のステップＳ８２００において実行されるストレージ装置における階層記憶制御要求処理の処理手順を示すフローチャートである。階層記憶制御要求処理は、管理計算機１００の指示によりストレージ装置３００において実行される階層記憶制御処理が実行されることを前提としている。図２３に示した階層記憶制御処理は定期的に実行される処理であるのに対し、階層記憶制御要求処理は、管理計算機１００による指示のもと実行される処理である。また、階層記憶制御要求処理は、ページ単位に実行されることを前提に説明するが、ＩＯ要求のオプション領域に指定されたアドレスマップに複数のページが含まれる場合は、ページの個数分、本処理を繰り返し実行される。以下では、各プールにおける階層記憶制御要求処理について説明している。
【０１３６】
まず、ストレージ装置３００の入出力制御部１３００は、ＩＯ要求７３００により指定された指示内容７３００２がページロック開始またはページロック解除であるか否かを判定する（Ｓ８２１０）。ステップＳ８２１０において、指示内容７３００２がページロック開始または解除であると判定された場合には、ページロック処理のための判定処理（Ｓ８２１５）を実行する。
【０１３７】
ステップＳ８２１５において、入出力制御部１３００はさらにＩＯ要求の指示内容７３００２がページロック開始かを判定する。ステップＳ８２１５において、指示内容７２００２がページロック開始であると判定された場合には、ステップＳ８２３５を実行する。一方、ステップＳ８２１５において、指示内容７２００２がページロックではなく、ページ解除であると判定された場合には、ステップＳ８２４５を実行する。
【０１３８】
ステップＳ８２３５において、入出力制御部１３００は、ＩＯ要求の宛先７３００１に指定されたページをページロックする。具体的に、入出力制御部１３００は、ＩＯ要求の宛先７３００１に指定された仮想論理ボリュームのアドレスが指す仮想論理ボリューム管理情報１２７０の該当エントリのページロックフラグをＹｅｓに設定する。さらに、入出力制御部１３００は、仮想論理ボリューム管理情報１２７０内の該当エントリの階層アドレスポインタから、階層記憶プール管理情報１２９０の該当アドレス内の割当情報１２９０７をページロックする。その後、階層記憶制御要求処理を終了し、呼び出し元の処理に戻る。
【０１３９】
また、ステップＳ８２４５において、入出力制御部１３００は、ＩＯ要求の宛先７３００１に指定されたページを解放する。具体的に、入出力制御部１３００は、ＩＯ要求の宛先７３００１に指定された仮想論理ボリュームのアドレスが指す仮想論理ボリューム管理情報１２７０の該当エントリのページロックフラグをＮｏに設定する。さらに、入出力制御部１３００は、仮想論理ボリューム管理情報１２７０内該当エントリの階層アドレスポインタから、階層記憶プール管理情報１２９０の該当アドレス内割当情報１２９０７のページロックを解除する。その後、階層記憶制御要求処理を終了し、呼び出し元の処理に戻る。
【０１４０】
一方、ステップＳ８２１０の判定の結果、指示内容７３００２がページロック開始でも解除でもない場合には、入出力制御部１３００は、ＩＯ要求の指示内容７３００２がページ移動であり、かつ、ＩＯ要求で指定されたページが現状配置されている階層記憶の階層よりもＩＯ要求で指定された階層が下位であるかを判定する（Ｓ８２２０）。ステップＳ８２２０において、入出力制御部１３００は、ＩＯ要求に指定されたページが配置されている階層記憶を取得するため、ＩＯ要求に指定されたアドレスに対応する仮想論理ボリューム管理情報１２７０のエントリを参照し、当該エントリの階層番号１２７０４を参照する。ステップＳ８２２０において、現状の階層記憶よりも下位の階層記憶にページ移動すると判定された場合には、入出力制御部１３００は、ステップＳ８２４０の処理を実行する。
【０１４１】
ステップＳ８２４０において、入出力制御部１３００は、ＩＯ要求に指定されたページが配置されている階層記憶に空き実ボリュームがあるかを判定する（Ｓ８２４０）。具体的に、入出力制御部１３００は、階層記憶プール管理情報１２９０の空き総容量１２９０５を参照して、ＩＯ要求に指定されたページが配置されている階層記憶の空き総容量を取得する。これにより、入出力制御部１３００は、得られた空き総容量から該当する階層記憶に新たなページの配置が可能かを判定する。
【０１４２】
ステップＳ８２４０において、該当する階層記憶に新たなページの配置が可能と判定された場合には、入出力制御部１３００は、ＩＯ要求で指定されたページを現状の階層記憶から指定された階層記憶に移動する（Ｓ８２９５）。
【０１４３】
一方、ステップＳ８２４０において、該当する階層記憶に新たなページの配置ができないと判定された場合には、入出力制御部１３００はＩＯ要求で指定されたページと移動先の階層記憶の１ページの入れ替えを実施する。移動先である階層記憶から選出するページは、該当階層記憶の中で最もアクセス頻度の高いページである。これは、ページの入れ替えにより移動する階層記憶が現在配置されている階層記憶よりも上位のものになるため、移動先である上位階層記憶の高い性能を有効に活用する狙いがある。具体的に、入出力制御部１３００は、階層記憶プール管理情報１２９０のＩＯ要求７３００で指定された移動先の階層記憶アドレスマップ情報の該当エントリにあるアクセス頻度１２９１０を参照し、その頻度が最大のものを選出する（Ｓ８２５０）。
【０１４４】
次に、入出力制御部１３００は、ＩＯ要求７３００で指定されたページとステップ８２５０で選出した移動先ページとを入れ替える（Ｓ８２６０）。入れ替え完了後、入出力制御部は呼び出し元の処理に戻る。
【０１４５】
一方、ステップ８２２０において、現状の階層記憶よりも下位の階層記憶にページを移動しないと判定された場合には、入出力制御部１３００は、ステップＳ８２３０を実行する。
【０１４６】
ステップＳ８２３０において、入出力制御部１３００は、ＩＯ要求の指示内容７３００２がページ移動であり、かつ、ＩＯ要求で指定されたページが現状配置されている階層記憶の階層よりもＩＯ要求で指定された階層が上位であるか否かを判定する（Ｓ８２３０）。ステップＳ８２３０の判定においても、ステップＳ８２２０で実施した判定と同様の手順で、ＩＯ要求７３００で指定されたページが上位階層記憶に移動するか否かを判定する。
【０１４７】
ステップＳ８２３０において、現状の階層記憶よりも上位の階層記憶にページ移動すると判定された場合には、入出力制御部１３００は、ステップＳ８２７０を実行する。
【０１４８】
ステップＳ８２７０において、入出力制御部１３００は、ＩＯ要求に指定されたページが配置されている階層記憶の空き総容量を、ステップＳ８２４０と同様の手順で取得し、得られた空き総容量から該当する階層記憶に新たなページの配置が可能かを判定する。
【０１４９】
ステップＳ８２７０において、該当する階層記憶に新たなページの配置が可能であると判定された場合には、入出力制御部１３００は、ＩＯ要求で指定されたページを現状の階層記憶から指定された階層記憶に移動する（Ｓ８２９５）。
【０１５０】
一方、ステップＳ８２７０において、該当する階層記憶に新たなページの配置ができないと判定された場合には、入出力制御部１３００は、ＩＯ要求で指定されたページと移動先の階層記憶の１ページの入れ替えを実行する。後述するステップＳ８２９０において、移動先である階層記憶から選出されるページは、該当階層記憶の中で最もアクセス頻度の低いページである。これは、ページの入れ替えにより移動する階層記憶が現在配置されている階層記憶よりも下位になるため、移動先の下位階層記憶の低い性能でも十分にその階層記憶を活用できるようにすることを意図している。
【０１５１】
具体的に、入出力制御部１３００は、階層記憶プール管理情報１２９０のＩＯ要求７３００で指定された移動先の階層記憶アドレスマップ情報の該当エントリにあるアクセス頻度１２９１０を参照し、その頻度が最小のものを選出する（Ｓ８２８０）。
【０１５２】
次に、入出力制御部１３００は、ＩＯ要求７３００で指定されたページとステップ８２８０で選出した移動先ページとを入れ替えを行う（Ｓ８２９０）。入れ替え完了後、入出力制御部は呼び出し元の処理に戻る。
【０１５３】
一方、ステップ８２３０において、現状の階層記憶よりも上位の階層記憶にページ移動するものではないと判定された場合には、入出力制御部１３００は、ＩＯ要求の階層制御指示がボリューム階層状態取得であるとして、ステップＳ８２３２を実行する。
【０１５４】
ステップ８２３２において、入出力制御部１３００は、ＩＯ要求が指定した仮想論理ボリュームの階層配置を取得し、ＩＯ要求７３００の要求元に返送する。具体的に、入出力制御部１３００は、ＩＯ要求７３００の宛先で指定される論理ボリュームが指す仮想論理ボリューム管理情報１２７０のアドレスマップを参照し、そのアドレスマップ内の仮想アドレス１２７０３、階層番号１２７０４をアドレスマップから抜き出し、当該情報をＩＯ要求７３００の要求元に返送する（ステップ８２３２）。その後、入出力制御部１３００は、呼び出し元の処理に戻る。
【０１５５】
以上のように、階層記憶制御要求処理をストレージ装置３００で実施することで、管理計算機１００の指示に基づいて、ストレージ装置３００上の階層記憶をページ単位で制御することが可能となる。
【０１５６】
（１−５−２）ホスト計算機の動作の詳細
次に、ホスト計算機２００の動作の詳細について説明する。図２５は、ホスト計算機２００上で起動するアプリケーション及びジョブの概念について説明する概念図である。
【０１５７】
ホスト計算機２００では、１つまたは複数のアプリケーションを同時に実行させることができる。アプリケーションを実行する場合には、ジョブとよばれるスクリプトプログラムに実行対象のアプリケーション名、アプリケーションが使用するデータセット名などを規定し、そのジョブを実行（ＳＵＢＭＩＴ）する。具体的に、ジョブはアプリケーション名やデータセット名だけではなく、ジョブ名、ジョブの種別であるジョブクラス、ジョブの使用者等を規定することも出来る。ジョブの実行が使用者により指示されると、ＯＳ２１２の指示に従って、ホスト計算機２００はジョブを開始する。
【０１５８】
図２５に示すように、ＯＳ２１２には、ホスト計算機２００でジョブを処理するための３つの処理部が備えられている。具体的に、ＯＳ２１２内には、ジョブ受付、ジョブスプール、アプリケーション実行部が備わっている。例えば、ジョブ実行を使用者に指示されると、ＯＳ内のジョブ受付部がそのジョブを受け付け、ジョブで規定されている種々の情報を取得するための処理をホスト計算機２００に指示する。ここで、使用者により実行が指示されたジョブをこのジョブとよぶことにする。
【０１５９】
ホスト計算機２００は、ジョブで規定されている情報を取得後、このジョブに関しジョブスプール部の処理を実行する。ジョブスプール部では、アプリケーション実行部でこのジョブの処理が可能になるまで、このジョブの実行が保留される。
【０１６０】
アプリケーション実行部で新しいジョブの処理が可能になると、ホスト計算機２００はこのジョブに関する処理を、ジョブスプール部からアプリケーション実行部の処理に切り替える。アプリケーション実行部では、ジョブに規定されているアプリケーションが実行される。アプリケーションが実行されて初めて、当該ジョブに規定されたアプリケーションプログラム用データが参照される。
【０１６１】
アプリケーション実行部での処理が終了する（すなわち、このジョブに規定されたアプリケーションの処理が完了する）と、ホスト計算機２００は、このジョブの終了処理を実行し、ジョブを終了させる。
【０１６２】
（１−５−３）管理計算機の動作の詳細
次に、管理計算機１００の動作の詳細について説明する。管理計算機１００は、準備段階及び運用段階の２段階の動作を行う。基本的に、管理計算機１００は、ストレージ装置３００に指示を出す場合、ホスト計算機２００のメモリ２１０に存在するエージェントプログラム２１３に指示を出し、ホスト計算機２００は、当該エージェントプログラム２１３の指示に従い、ストレージ装置３００にＩＯ要求を発行する。また、ホスト計算機２００は、ホスト計算機２００上のＯＳやアプリケーションの状態の変更を検知することができ、検知した場合はその内容を管理計算機１００に通信ネットワーク５５０を介して通知する。ホスト計算機２００から検知結果を通知された管理計算機１００は、通知内容にしたがって、ホスト計算機２００またはストレージ装置３００に指示を発行し、当該機器を制御する。このように、ホスト計算機２００と管理計算機１００を分離する理由は、複数のホスト計算機２００を１管理計算機で集中して管理するためである。
【０１６３】
まず、準備段階における管理計算機１００の動作の詳細について説明する。図２６は管理計算機１００における環境構築段階の動作の詳細を示すフローチャートである。
【０１６４】
準備段階の動作は、管理計算機１００のプロセッサ１２０がストレージ管理プログラム１１１に基づいて処理を実行することで実現される。以下、フローチャートでは、単に管理計算機１００を主語にして説明を行うが、すべての動作は管理計算機１００のプロセッサ１２０が実行するものである。
【０１６５】
まず、管理計算機１００は、計算機システム１０上に存在するホスト計算機２００を検出する（Ｓ４０１０）。ホスト計算機２００を検出するための情報として、例えば、管理計算機１００の使用者によるＩＰアドレスの入力を使用する。アドレスの入力は、例えば、１９２．１６８．１．１から１９２．１６８．１．５０といったＩＰアドレスの範囲を入力でも良いし、特定のＩＰアドレスを入力してもよい。管理計算機１００は、ホスト計算機２００のエージェントプログラム２１３用の情報取得要求を作成し、入力されたＩＰアドレスに向けて発行する。ホスト計算機２００が情報取得要求を受信した場合、このホスト計算機２００上のエージェントプログラム２１３の指示に基づき、このホスト計算機２００が存在することを管理計算機１００に返信する。管理計算機１００はホスト計算機２００から返信があるものに対し、この返信に含まれる情報を基にして、ホスト構成管理テーブル１１８を作成する。ただしこの時点では、管理計算機１００はホスト構成管理テーブル１１８のホストＩＤ１１８１にのみ応答のあったホスト計算機２００のＩＰアドレス、ホストＩＤ等のホスト計算機を識別するための情報を設定する。
【０１６６】
次に、管理計算機１００は、計算機システム１０上に存在するストレージ装置３００を検出する（Ｓ４０２０）。ステップＳ４０２０におけるストレージ装置３００の検出は、ステップＳ４０１０と同様に、管理計算機１００の使用者によって入力されたＩＰアドレスを基に、管理計算機１００により、ストレージ装置３００向けの情報取得要求が作成される。ストレージ装置３００では、記憶制御装置１０００のプロセッサ１３１０がこの情報取得要求を受信すると、共有メモリ１２００に格納されるボリューム管理情報１２５０と、ストレージ基本情報１２６０とを参照し、それら情報をまとめて管理計算機１００に返信する。管理計算機１００は、ストレージ装置３００から返信があるものに対し、この返信に含まれる情報を基にして、ストレージ情報テーブル１０１を作成する。
【０１６７】
次に、管理計算機１００は、制御対象となるアプリケーションデータとその優先度を設定する（Ｓ４０３０）。アプリケーションデータの設定には、直接データを設定するデータセット指定の他、指定された時刻に実行されるアプリケーション全てを対象とする時刻指定、アプリケーションを起動するためにジョブを指定するジョブ指定、ジョブの種別を指定するジョブクラス指定、ある特定の使用者が実行するジョブすべてを対象とするユーザ名指定等がある。これ以外に間接的に階層記憶対象のデータを指定してもよい。これらのデータの指定は複数の項目を指定することが出来る。
【０１６８】
また、複数の項目を指定する場合、それぞれの項目の優先度を指定する。一方、データの優先度には、高優先、低優先がある。制御対象のデータを複数指定する場合、指定した項目に該当するデータ全てが階層記憶制御の対象となる。ただし、複数の項目に１つのデータが該当する場合、入力項目の優先度の高い項目を優先する。管理計算機１００は、使用者により指定された項目をユーザ設定情報管理テーブル１１４に格納する。ここで、管理計算機１００の使用者は管理計算機１００の入力画面をみながら、入力デバイスなどを介し、上記を設定することができる。
【０１６９】
ここで、図２７に管理計算機１００の入力画面の一例を示す。図２７の入力画面１４０では、時刻指定、ジョブ名、ジョブクラスを指定することができ、それぞれの項目に対し、例えば時刻Ｔ１〜Ｔ２に実行されるジョブが使用するデータすべてを、低優先で階層制御することを指定する。ここで低優先に設定され、かつ、上位階層記憶に配置されたデータについては、ページロックされていたとしても、ページ置き換えの対象になる場合がある。例えば、後続の高優先で設定されたデータの階層制御のために、上位階層記憶に空き領域を作る必要がある場合に、ページの置き換え処理が実行される。このようなページ置き換え処理を横取り処理と称して以降説明する。横取り処理については、後で詳細に説明する。
【０１７０】
次に、管理計算機１００は、データを検出する（Ｓ４０４０）。管理計算機１００は、ホスト計算機２００のＯＳ２１２に登録されているボリューム情報と、ステップ４０２０で作成したストレージ情報テーブル１０１を基にデータを検出する。具体的に、ホスト計算機２００が認識するボリュームの内、仮想論理ボリュームであるものを選出する。データの検出処理は、管理計算機１００が、ホスト計算機２００のエージェントプログラム２１３向けの情報取得要求を作成し、当該要求をホスト計算機２００に発行し指示することにより実行される。
【０１７１】
ホスト計算機２００が情報取得要求を受信した場合、このホスト計算機２００上のエージェントプログラム２１３の指示に基づき、このホスト計算機２００の構成情報を管理計算機１００に返信する。この構成情報には、データの名称とそのデータが格納される論理ボリューム及び論理ボリュームの格納アドレス（格納アドレスとは、例えば、論理ボリュームのシリンダ、ヘッダ数、もしくはＳＣＳＩのＬＢＡなどである）の情報が含まれる。
【０１７２】
管理計算機１００は、構成情報から検出した論理ボリュームをホスト構成管理テーブル１１８のボリューム情報（１１８２、１１８３、１１８４、１１８５，１１８６）に登録する。さらに、管理計算機１００は、階層記憶制御処理の対象となる仮想論理ボリュームのみを絞り込むため、ストレージ情報テーブル１０１内の仮想フラグ１０１３が仮想論理ボリュームであるボリューム情報だけを、制御対象データ管理テーブル１１３のデータセット名１１３０１、デバイスＩＤ１１３０２、及び、格納ＡＤＲ１１３０３に登録する。
【０１７３】
次に、管理計算機１００は、入出力頻度管理テーブル１１５を参照する。これにより管理計算機１００は、制御対象データ管理テーブル１１３に登録された仮想論理ボリュームで、そのボリュームに配置されたデータに関するファイル編成や頻繁にアクセスされる領域を検出するための必要な情報を取得することができる。管理計算機１００は、入出力頻度管理テーブル１１５の取得方法１１５０４に指定されている手段を使用し、制御対象データ管理テーブル１１３に登録されているデータのファイル編成、ファイル編成詳細を取得する。ここで、ファイル編成にはＯＳ２１２のファイル編成特定のためのツールの実施結果が登録され、ファイル編成詳細には、入出力頻度管理テーブル１１５の情報の取得方法１１５０４に記載の手段で取得したデータ内で高頻度に入出力される領域の情報が登録されている。
【０１７４】
次に、運用段階における管理計算機１００の動作の詳細について説明する。運用段階では、実行されるジョブの状態により、３つの動作、すなわち、階層記憶割り当て動作、階層記憶の優先度変更動作、階層記憶割り当て解除動作がある。以下、運用段階におけるそれぞれの段階の管理計算機１００による動作の詳細を順次説明する。
【０１７５】
まず、図２８を参照して、運用段階における階層記憶割り当て動作について説明する。管理計算機１００による階層記憶割り当て動作は、階層記憶制御対象のジョブがホスト計算機２００で実行された時点で開始される。上記ジョブの実行を検出するべく、ホスト計算機２００は、エージェントプログラム２１３の指示にしたがって、ホスト計算機２００のＯＳ２１２の処理を監視する。
【０１７６】
管理計算機１００は、ホスト計算機２００上でジョブが実行されたかを判定する（Ｓ３０１０）。上記したように、ホスト計算機２００は、ＯＳ２１２を介してジョブが投入されたことを検出する。ホスト計算機２００は、ＯＳ２１２を介してジョブが実行されたことを検出し、管理計算機１００にジョブが実行されたことを通知する。ここで、ホスト計算機２００で実行されたジョブを実行ジョブとよぶことにする。
【０１７７】
次に、管理計算機１００は、実行ジョブに関する情報の収集をホスト計算機２００に指示する（Ｓ３０２０）。実行ジョブに関する情報収集の指示を受け取ったホスト計算機２００は、ＯＳ２１３に問い合わせを実施し、実行ジョブに関する情報を収集して、管理計算機１００に通知する。ステップＳ３０２０において収集される実行ジョブに関する情報は、ジョブ名、データセット名、ユーザ名、ジョブクラスなどが挙げられる。
【０１７８】
次に、管理計算機１００は、ステップＳ３０２０において収集したジョブの情報が階層記憶制御対象のジョブであるかを判定する（Ｓ３０３０）。管理計算機１００は、ユーザ設定情報管理テーブル１１４を参照し、使用者により設定された項目に、実行ジョブが該当するかを比較することによりステップＳ３０３０の判定を実行する。ステップＳ３０３０において、実行ジョブが階層記憶制御対象でないと判定された場合には、処理を終了する。
【０１７９】
一方、ステップ３０３０において、実行ジョブが階層記憶制御対象である場合には、管理計算機１００はステップＳ３０２０において得られた実行ジョブの情報と、ユーザ設定情報管理テーブル１１４に該当する項目の階層記憶優先度１１４０４を基に、実行中ジョブ管理テーブル１１２を作成する（Ｓ３０４０）。
【０１８０】
次に、管理計算機１００は、実行ジョブが過去にホスト計算機２００上で実行されたことがあるかを判定する（Ｓ３０５０）。ステップＳ３０５０では、作成した実行中ジョブ管理テーブル１１２のデータセット名１１２０２と同名のデータセット名が制御対象データ管理テーブル１１３にあり、かつ、そのデータセット名に関連する制御対象データ管理テーブル１１３上の過去階層ポインタ１１３０６が登録されている場合に、管理計算機１００は過去に実行ジョブが実行されていると判定する。ステップ３０５０において、過去に実行ジョブが実行されていたと判定された場合には、管理計算機１００は、後述の過去実行ジョブ割り当て階層記憶処理（Ｓ３２００）を実行し、処理を終了する。
【０１８１】
一方、ステップＳ３０５０において、過去に実行ジョブが実行されていないと判定された場合には、後述の細粒度階層記憶割り当て処理（Ｓ３５００）を実行し、処理を終了する。
【０１８２】
以上の管理計算機１００による階層記憶割り当て動作により、ホスト計算機２００で実行されるジョブの中で、階層記憶制御対象であるものが選出され、さらに、実行されるジョブが過去にも実行される場合、過去のジョブ実行の実績に基づいた階層記憶制御処理が実行される。また、過去にジョブの実行がない場合も、ファイル編成の特性に基づき階層記憶を細やかな単位で制御することができる。
【０１８３】
次に、図２８のステップＳ３５００における細粒度階層記憶割り当て処理について説明する。図２９は、管理計算機１００による細粒度階層記憶割り当て処理の処理手順を示すフローチャートである。
【０１８４】
まず、管理計算機１００は、ストレージ装置３００の階層記憶の状態を取得する（Ｓ３５０１）。具体的に、管理計算機１００は、ストレージ装置３００の階層記憶の状態を把握するため、ホスト計算機２００にストレージ装置３００における階層記憶容量の状態に関する問い合わせを指示する。ホスト計算機２００は、管理計算機１００の指示により、指示内容としてプール状態取得を指定したＩＯ要求７３００を作成し、ストレージ装置３００に発行する。当該ＩＯ要求を受け取ったストレージ装置３００は、ＩＯ要求に指示されたプールＩＤをもつ階層記憶プール管理情報１２９０を参照し、階層記憶番号とその総容量情報、空き総容量情報などをホスト計算機２００に返す。ＩＯ要求の応答を受け取ったホスト計算機２００は、取得した情報を管理計算機１００に転送する。管理計算機１００はホスト計算機２００から情報を受信すると、階層記憶利用状況管理テーブル１１６の該当領域（全体容量１１６０２、空き容量１１６０３）を更新する。
【０１８５】
次に、管理計算機１００は、階層記憶割り当て動作で検出した実行ジョブのファイル編成に基づいて、階層記憶制御処理を実行する。具体的に、管理計算機１００は、実行ジョブのファイル編成を制御対象データ管理テーブル１１３から取得して、ファイル編成が仮想記憶アクセス（ＶＳＡＭ）かを判定する（Ｓ３５１０）。
【０１８６】
ステップＳ３５１０において、得られたファイル編成が仮想記憶アクセス（ＶＳＡＭ）である場合には、管理計算機１００は、仮想記憶アクセスファイル編成用の階層記憶制御のための処理（ステップ３５１１、３５１２、３５１３、３５１４）を実行する。
【０１８７】
ステップ３５１１において、管理計算機１００は、上位階層記憶の容量がデータセット（ＤＳ）分あるかを判定する（Ｓ３５１１）。具体的に、管理計算機１００は、入出力頻度管理テーブル１１５の仮想記憶アクセスファイル編成の情報を取得して、実行ジョブ使用のデータのファイル編成に関する入出力頻度情報を取得する。そして、管理計算機１００は、入出力頻度管理テーブル１１５を取得することにより、最も入出力頻度の高い領域がＩｎｄｅｘ領域であり、次に高い領域がデータセット全体であることを把握する。そこで、管理計算機１００は、階層記憶利用状況管理テーブル１１６の空き容量１１６０３を参照して、実行ジョブが使用するデータセット全体が上位の階層記憶に配置可能かを判定する。ステップＳ３５１１では、ストレージ装置３００から最大の入出力性能を得るために、実行ジョブが使用するデータセット全体が上位の階層記憶に配置可能であるかを判定している。
【０１８８】
ステップＳ３５１１において、上位階層にデータセット全体が配置可能であると判定された場合には、管理計算機１００は、データセット全体を上位階層に割り当てる（Ｓ３５１２）。具体的に、管理計算機１００は、データセット全体とその階層番号を階層テーブル１１７に登録し、階層テーブル１１７を基に、ページ階層移動およびページロック開始を、ホスト計算機２００に指示する。上記指示を受け付けたホスト計算機２００は、指示内容にページ階層移動、オプションに階層テーブル１１７の内容を登録したＩＯ要求を作成し、ストレージ装置３００に指示する。次に、ホスト計算機２００は、指示内容にページロック開始、オプションに階層テーブル１１７の内容を登録したＩＯ要求を作成し、ストレージ装置３００に指示する。ストレージ装置３００は、上記２つのＩＯ要求を受信し、ＩＯ要求に指定された記憶領域に関し、ページ移動、およびページロック処理を実施する。ストレージ装置３００の階層記憶制御完了後、管理計算機１００は、制御対象データ管理テーブル１１３のファイル編成詳細１１３０５をデータセットに変更する。そして、管理計算機１００は、階層記憶利用状況管理テーブル１１６のページロック済み容量１１６０４、１１６０５の値を更新する。ここで、高優先か、低優先のいずれを更新するかは、実行中ジョブ管理テーブルの優先度１１２０４に設定された内容に基づき実施する。すなわち、実行中ジョブ管理テーブル１１２の優先度１１２０４が高優先の場合、階層記憶利用状況管理テーブル１１６の高優先１１６０４の情報を更新する。
【０１８９】
ステップ３５１１において、上位階層にデータセット全体が配置不可能であると判定された場合には、管理計算機１００は、上位階層の容量がＩｎｄｅｘ分あるかを判定する（Ｓ３５１３）。具体的に、管理計算機１００は、階層記憶利用状況管理テーブル１１６の空き容量１１６０３を参照して、実行ジョブが使用するデータセットで最も参照頻度の高いＩｎｄｅｘ領域が上位階層記憶に配置可能かを判定する。
【０１９０】
ステップＳ３５１３において、上位階層へのＩｎｄｅｘ領域の配置が可能であると判定された場合には、ステップＳ３５１２で説明した処理と同様にＩｎｄｅｘ領域分の階層記憶制御をストレージ装置３００に指示する。ストレージ装置３００の階層記憶制御完了後、管理計算機１００は、制御対象データ管理テーブル１１３のファイル編成詳細１１３０５をＩｎｄｅｘに変更する。次に、管理計算機１００は、階層記憶利用状況管理テーブル１１６のページロック済み容量１１６０４，１１６０５の値を更新する（Ｓ３５１４）。
【０１９１】
ステップＳ３５１３において、上位階層へのＩｎｄｅｘ領域の配置が不可能であると判定された場合には、管理計算機１００は、後述の横取り処理を実行する（Ｓ３６００）。
【０１９２】
一方、ステップＳ３５１０において、実行ジョブのファイル編成がＶＳＡＭではなく、区分である場合には、管理計算機１００は、区分ファイル編成用の階層記憶制御のための処理（ステップＳ３５２１、Ｓ３５２２）を実行する。
【０１９３】
ステップＳ３５２１において、管理計算機１００は、上位階層記憶の容量がデータセットの先頭領域分あるかを判定する（Ｓ３５２１）。具体的に、管理計算機１００は、入出力頻度管理テーブル１１５における区分の情報を取得して、実行ジョブ使用データのファイル編成に関する入出力頻度情報を取得する。管理計算機１００は、入出力頻度管理テーブル１１５から情報を取得することにより、最も入出力頻度の高い領域がＤｉｒｅｃｔｏｒｙ領域であることを把握する。そこで、管理計算機１００は、階層記憶利用状況管理テーブル１１６の空き容量１１６０３を参照して、実行ジョブが使用するデータセットの内、Ｄｉｒｅｃｔｏｒｙ領域が上位階層記憶に配置可能かを判定する。ステップＳ３５２１では、ストレージ装置３００から最大の入出力性能を得るために、実行ジョブが使用するデータセットの内、Ｄｉｒｅｃｔｏｒｙ領域が上位階層記憶に配置可能かを判定している。
【０１９４】
ステップＳ３５２１において、上位階層へのＤｉｒｅｃｔｏｒｙ領域の配置が可能であると判定された場合には、管理計算機１００は、Ｄｉｒｅｃｔｏｒｙ領域を上位階層に割り当てる指示を行う（Ｓ３５２２）。具体的に、管理計算機１００は、Ｄｉｒｅｃｔｏｒｙ領域とその階層番号を階層テーブル１１７に登録し、階層テーブル１１７を基に、ページ階層移動およびページロック開始を、ホスト計算機２００に指示する。上記指示を受け付けたホスト計算機２００は、指示内容にページ階層移動、オプションに階層テーブル１１７の内容を登録したＩＯ要求を作成し、ストレージ装置３００に指示する。次に、ホスト計算機２００は、指示内容にページロック開始、オプションに階層テーブル１１７の内容を登録したＩＯ要求を作成し、ストレージ装置３００に指示する。ストレージ装置３００は、上記２つのＩＯ要求を受信し、ＩＯ要求に指定された記憶領域に関し、ページ移動、およびページロック処理を実行する。ストレージ装置３００の階層記憶制御完了後、管理計算機１００は制御対象データ管理テーブル１１３のファイル編成詳細１１３０５をデータセットに変更する。次に、管理計算機１００は、階層記憶利用状況管理テーブル１１６のページロック済み容量１１６０４，１１６０５の値を更新する。ここで、高優先か、低優先のいずれを更新するかは、実行中ジョブ管理テーブルの優先度１１２０４に設定された内容に基づき実施する。すなわち、実行中ジョブ管理テーブル１１２の優先度１１２０４が高優先の場合、階層記憶利用状況管理テーブル１１６の高優先１１６０４の情報を更新する。
【０１９５】
ステップＳ３５２１において、上位階層へのＤｉｒｅｃｔｏｒｙ領域の割り当てが不可能であると判定された場合には、管理計算機１００は、後述の横取り処理を実行する（ステップ３６００）。
【０１９６】
一方、ステップＳ３５２０において、実行ジョブのファイル編成が区分ではないと判定され、順次であると判定された場合には、管理計算機１００は、順次ファイル編成用の階層記憶制御のための処理（ステップＳ３５３１、Ｓ３５３２）を実行する。
【０１９７】
ステップＳ３５３１において、管理計算機１００は、上位階層記憶の容量がＶＴＯＣ領域分あるかを判定する。具体的に、管理計算機１００は、入出力頻度管理テーブル１１５における区分の情報を取得して、実行ジョブの使用データのファイル編成に関する入出力頻度情報を取得する。入出力頻度管理テーブル１１５から情報を取得することにより、管理計算機１００は、最も入出力頻度の高い領域がＶＴＯＣ領域であることを把握する。そこで、管理計算機１００は、階層記憶利用状況管理テーブル１１６の空き容量１１６０３を参照して、実行ジョブが使用するデータセットの内、ＶＴＯＣ領域が上位階層記憶に配置可能かを判定する。ステップＳ３５３１では、することでストレージ装置３００から最大の入出力性能を得るために、ＶＴＯＣ領域が上位階層記憶に配置可能かを判定している。
【０１９８】
ステップＳ３５３１において、上位階層へのＶＴＯＣ領域の配置が可能であると判定された場合には、管理計算機１００は、ＶＴＯＣ領域を上位階層に割り当てる指示を行う（Ｓ３５３２）。具体的に、管理計算機１００は、ＶＴＯＣ領域とその階層番号を階層テーブル１１７に登録し、階層テーブル１１７を基に、ページ階層移動およびページロック開始を、ホスト計算機２００に指示する。上記指示を受け付けると、ホスト計算機２００は指示内容にページ階層移動、オプションに階層テーブル１１７の内容を登録したＩＯ要求を作成し、ストレージ装置３００に指示する。次に、ホスト計算機２００は、指示内容にページロック開始、オプションに階層テーブル１１７の内容を登録したＩＯ要求を作成し、ストレージ装置３００に指示する。ストレージ装置３００は、上記２つのＩＯ要求を受信し、ＩＯ要求に指定された記憶領域に関し、ページ移動、およびページロック処理を実施する。ストレージ装置３００の階層記憶制御完了後、管理計算機１００は制御対象データ管理テーブル１１３のファイル編成詳細１１３０５をデータセットに変更する。次に、管理計算機１００は、階層記憶利用状況管理テーブル１１６のページロック済み容量１１６０４，１１６０５の値を更新する。ここで、高優先か、低優先のいずれを更新するかは、実行中ジョブ管理テーブルの優先度１１２０４に設定された内容に基づき実施する。すなわち、実行中ジョブ管理テーブル１１２の優先度１１２０４が高優先の場合、階層記憶利用状況管理テーブル１１６の高優先１１６０４の情報を更新する。
【０１９９】
一方、ステップＳ３５３０において、実行ジョブのファイル編成が順次ではなくそれ以外のファイル編成であると判定された場合には、管理計算機１００は、入出力頻度管理テーブル１１５に基づき、上記ファイル編成がＶＳＡＭもしくは区分である場合の処理と同様の処理を実行する。
【０２００】
次に、図２８のステップＳ３２００における過去データセット割り当て階層記憶再現処理について説明する。図３０は、管理計算機１００による過去データセット割り当て階層記憶再現処理の処理手順を示すフローチャートである。
【０２０１】
過去データセット割り当て階層記憶再現処理は、過去に階層記憶制御処理が実行され、所定の要件に合致する高い入出力性能が得られた場合に、当該階層記憶制御処理による階層記憶へのデータ配置を再現する処理である。過去データセット割り当て階層記憶再現処理は、同一ジョブが実行される毎に繰り返される。当該処理により、繰り返し実行されることが前提となるホスト計算機２００のジョブの実行において、常に高い入出力性能を提供することが可能となる。
【０２０２】
まず、管理計算機１００は、ストレージ装置３００の階層記憶の状況を取得する（Ｓ３２１０）。具体的に、管理計算機１００は、ストレージ装置３００の階層記憶の状態を把握するため、ホスト計算機２００にストレージ装置３００における階層記憶容量の状態に関し問い合わせを指示する。ホスト計算機２００は、管理計算機１００の指示により、指示内容としてプール状態取得を指定したＩＯ要求７３００を作成し、ストレージ装置３００に発行する。当該ＩＯ要求を受け取ったストレージ装置３００は、ＩＯ要求に指示されたプールＩＤをもつ階層記憶プール管理情報１２９０を参照し、階層記憶番号とその総容量情報、空き総容量情報などをホスト計算機２００に返す。ＩＯ要求の応答を受け取ったホスト計算機２００は、取得した情報を管理計算機１００に転送する。管理計算機１００は、ホスト計算機２００から情報を受信すると、階層記憶利用状況管理テーブル１１６の該当領域（全体容量１１６０２、空き容量１１６０３）を更新する。
【０２０３】
次に、管理計算機１００は、階層記憶毎の空き容量が、過去のデータセットを再現するための容量分あるかを判定する（Ｓ３２２０）。具体的に、管理計算機１００は、制御対象データ管理テーブル１１３において、実行ジョブが使用するデータセットと名称が合致するテーブル内の行にある過去階層ポインタ１１３０６から、過去階層保持テーブル１１９を参照して、実行ジョブ使用データに対し、過去の同一ジョブの実行で割り当てた階層記憶の情報を取得する。管理計算機１００は、この過去階層保持テーブル１１９における階層番号が共通のアドレスマップ内の行数を数えることで、階層番号毎に必要な空き容量を算出する。そして、管理計算機１００は、階層記憶利用状況管理テーブル１１６の空き容量１１６０３を参照して、算出した階層番号（階層記憶）毎の空き容量がストレージ装置３００の該当プールに存在しているかを判定する。
【０２０４】
ステップＳ３２２０において、階層記憶に過去データセット再現分の空きがあると判定された場合には、過去の実行ジョブが使用したデータセットに割り当てていた階層記憶を再現する（Ｓ３２３０）。具体的に、管理計算機１００は、上記の過去階層保持テーブル１１９の内容を階層テーブル１１７に複製し、ＩＯ要求７３００を作成し、ホスト計算機２００を経由して、ストレージ装置３００に指示を出す。管理計算機１００は、２種類のＩＯ要求７３００を作成し、順次ストレージ装置３００に発行する。１つめのＩＯ要求７３００は、指示内容にページ階層移動、オプションに階層テーブル１１７の内容が登録されたものである。２つめのＩＯ要求７３００は、指示内容にページロック開始、オプションに階層テーブル１１７を登録したものである。
【０２０５】
ステップＳ３２２０において、階層記憶に過去データセット再現分の空きがないと判定された場合には、管理計算機１００は、上記した細粒度階層記憶割り当て処理を実行して（Ｓ３５００）、処理を呼び出し元に戻す。
【０２０６】
次に、図２９のステップＳ３６００における横取り処理について説明する。図３１は、管理計算機１００による横取り処理の処理手順を示すフローチャートである。当該横取り処理は、制御対象のアプリケーションデータを階層記憶に割り当てる際、割当先の階層記憶に空きが無い場合、当該アプリケーションデータよりも優先度の低いデータで上位階層記憶を利用しているデータがあれば、当該領域を制御対象のデータで置き換える処理である。これにより、優先度の高いアプリケーションデータを極力高い入出力性能の階層記憶に配置することが可能となり、結果として優先度の高いアプリケーションの処理を優先的に高い性能で処理させることが可能となる。
【０２０７】
まず、管理計算機１００は、現状の階層記憶の割り当て状況を確認する（Ｓ３６１０）。具体的に、管理計算機１００は、階層記憶利用状況管理テーブル１１６を参照し、上位階層記憶（例えば階層番号１１６０１の値が１）で低優先のページロック済み容量を取得する。
【０２０８】
次に、管理計算機１００は、階層記憶制御対象のデータと優先度の低い上位階層記憶に配置されるデータとの置き換えが可能か否かを判定する（Ｓ３６２０）。具体的に、管理計算機１００は、階層記憶制御対象のデータの容量がステップＳ３６１０で得られた空き容量よりも小さいか否かを判定する。
【０２０９】
ステップＳ３６２０において、階層記憶制御対象のデータの容量がステップＳ３６１０で得られた空き容量よりも小さいか、等しいと判定された場合には、階層記憶制御対象のデータと優先度の低い上位階層記憶に配置されるデータとを置き換えて（Ｓ３６４０）、呼び出し元に処理を戻す。
【０２１０】
一方、ステップＳ３６２０において、階層記憶制御対象のデータの容量がステップＳ３６１０で得られた空き容量よりも大きいと判定された場合には、管理計算機１００は、横取り処理の実行が不可能であると判定し、アラートを管理計算機１００の使用者に通知し（ステップＳ３６３０）、呼び出し元に処理を戻す。
【０２１１】
次に、運用段階における階層記憶の優先度変更処理について説明する。図３２は、管理計算機１００による階層記憶の優先度変更処理の処理手順を示すフローチャートである。
【０２１２】
ホスト計算機２００では、ＯＳ２１２のアプリケーション処理部の指示により、アプリケーションが実行される。アプリケーション処理部では、アプリケーションの実行時間があまりにも長い場合、当該アプリケーションの優先度を変更し、早期に処理を完了させる場合がある。階層記憶の優先度変更処理では、アプリケーションの優先度が変更になった場合に、階層記憶制御で対応するための処理である。例えば、優先度が高まったアプリケーションに対しては、当該アプリケーションが利用するデータで、低位の階層記憶に配置されているものを上位階層記憶に移動させることにより、アプリケーションの優先度の変更に対応することができる。
【０２１３】
まず、管理計算機１００は、階層記憶制御処理を行っているジョブの優先度が変更したかを判定する（Ｓ６０１０）。ホスト計算機２００でアプリケーションの優先度が変更になる場合、ホスト計算機２００はエージェントプログラムの指示により、優先度が変更になったアプリケーションに関する情報（ジョブ名など）を管理計算機１００に通知する。以下、優先度が変更になったジョブを該当ジョブと称して説明する。
【０２１４】
ステップＳ６０１０において、ホスト計算機２００からの通知により、ジョブの優先度が変更したと判定された場合には、管理計算機１００は、階層記憶の状況を取得する（Ｓ６０２５）。具体的に、管理計算機１００は、ホスト計算機２００から優先度が変更したことを通知されると、該当ジョブが入出力優先の処理か否かの調査をホスト計算機２００のエージェントプログラム２１３に指示する。
【０２１５】
一方、ステップＳ６０１０において、入出力優先に関する処理ではないと判定された場合には、処理を終了する。
【０２１６】
そして、ステップＳ６０２５の後、管理計算機１００は、ステップＳ６０３０の処理を実行する。ステップＳ６０３０では、管理計算機１００は、ホスト計算機２００にストレージ装置３００における階層記憶容量の状態に関し問い合わせを指示する。ホスト計算機２００は、管理計算機１００の指示により、指示内容としてプール状態取得を指定したＩＯ要求７３００を作成し、ストレージ装置３００に発行する。当該ＩＯ要求を受け取ると、ストレージ装置３００は、ストレージ装置３００のＩＯ要求に指示されたプールＩＤをもつ階層記憶プール管理情報１２９０を参照し、階層記憶番号とその総容量情報、空き総容量情報などをホスト計算機２００に返す。ＩＯ要求の応答を受け取ると、ホスト計算機２００は得られた情報を管理計算機１００に転送する。管理計算機１００は上記情報を受信すると、階層記憶利用状況管理テーブル１１６の該当領域（全体容量１１６０２、空き容量１１６０３）を更新する。
【０２１７】
そして、管理計算機１００は、ホスト計算機２００に該当ジョブが使用するデータがストレージ装置３００のどの階層記憶に配置されているかを調査する。具体的に、管理計算機１００は、該当ジョブが使用するデータを、実行中ジョブ管理テーブル１１２を参照することで特定する。さらに、実行中ジョブ管理テーブル１１２を参照することで得られたデータセット名を下に、制御対象データ管理テーブル１１３を参照し、当該データがストレージ装置３００のどのボリュームに配置されているかを特定する。そして、管理計算機１００は、ホスト計算機２００を介して、ストレージ装置３００に指示内容をボリューム階層状態取得にしたＩＯ要求７３００を発行して、上記データがストレージ装置３００のどの階層記憶に配置されているかを調査する。ストレージ装置３００は、上記ＩＯ要求を受信すると、指定された論理ボリュームのアドレスと階層番号との関係を、仮想論理ボリューム管理情報１２７０を参照することで取得し、その情報をＩＯ要求の応答と共に返す。管理計算機１００は、ストレージ装置３００からＩＯ要求の応答が戻ると、ＩＯ要求の応答から得られた情報を階層テーブル１１７に設定する。
【０２１８】
次に、管理計算機１００は、上位階層に空き容量があるかを判定する（Ｓ６０４０）。具体的に、管理計算機１００は、階層テーブル１１７を参照し、中位階層記憶に配置されているデータの容量を計算する。そして、管理計算機１００は、計算した容量がステップＳ６０２５で取得した階層記憶利用状況管理テーブル１１６の高位階層記憶の空き容量１１６０３よりも小さいことを確認する。
【０２１９】
ステップＳ６０４０において、中位階層記憶に配置されているデータが上位階層記憶の空き容量よりも小さいか等しいと判定された場合には、管理計算機１００は、階層テーブル１１７のデータで、階層番号１１７０３が中位階層であるものを上位階層に書き換え、ホスト計算機２００を介して２種類のＩＯ要求７３００をストレージ装置３００に発行することにより、上位階層記憶に中位階層記憶に配置されているデータを移動する。ここで、２つのＩＯ要求７３００とは、１つ目のＩＯ要求の指示内容がページ階層移動であり、２つめのＩＯ要求の指示内容がページロックである。
【０２２０】
ステップＳ６０４０において、中位階層記憶に配置されているデータが上位階層記憶の空き容量よりも大きいと判定された場合には、管理計算機１００は、上記した横取り処理３６００を実行する（Ｓ３６００）。
【０２２１】
次に、管理計算機１００は、中位階層に空き容量があるかを判定する（Ｓ６０６０）。具体的に、管理計算機１００は、階層テーブル１１７を参照し、下位階層記憶に配置されているデータの容量を計算する。そして、管理計算機１００は、計算した容量がステップＳ６０２５で取得した階層記憶利用状況管理テーブル１１６の中位階層記憶の空き容量１１６０３よりも小さいことを確認する。
【０２２２】
ステップＳ６０６０において、下位階層記憶に配置されているデータが中位階層記憶の空き容量よりも小さいか等しいと判定された場合には、管理計算機１００は、階層テーブル１１７に格納されたデータのうち、階層番号１１７０３が下位階層であるものを中位階層に書き換える。そして、ステップ６０５０同様、ホスト計算機２００を介して２種類のＩＯ要求７３００をストレージ装置３００に発行することにより、中位階層記憶に下位階層記憶に配置されているデータを移動する。
【０２２３】
ステップＳ６０４０において、下位階層記憶に配置されているデータが中位階層記憶の空き容量よりも大きいと判定された場合には、管理計算機１００は、上記した横取り処理３６００を実行し、処理を終了する。
【０２２４】
次に、運用段階における階層記憶割り当て解除処理について説明する。図３３は、管理計算機１００による階層記憶割り当て解除処理の処理手順を示すフローチャートである。階層記憶割り当て解除処理は、ホスト計算機２００で実行されるジョブが終了することを検出すると、後続ジョブで同一データを使うものが無い限り、当該ジョブが使用するデータへの階層制御処理も終了する。
【０２２５】
まず、管理計算機１００は、ホスト計算機２００のエージェントプログラム２１３を介し、定期的にジョブの実行状況を監視して、実行中のジョブが終了したかを判定する（Ｓ９００５）。
【０２２６】
ステップＳ９００５において、実行中のジョブが終了したと判定された場合には、終了するジョブの情報を収集する。収集する情報は、ジョブ名、ジョブ開始時刻などである。ここで、管理計算機１００によって検出される終了するジョブを終了ジョブとよぶことにする。
【０２２７】
次に、管理計算機１００は、実行中ジョブ管理テーブル１１２を参照し、終了ジョブと同一のジョブが後続に実行されているかを判定する（ステップＳ９０１０）。具体的に、管理計算機１００は、実行中ジョブ管理テーブル１１２を参照し、同テーブルに終了ジョブと同一ジョブ名のジョブが、終了ジョブとは別に存在しているかを確認する。
【０２２８】
ステップＳ９０１０において、終了ジョブと同一ジョブが存在していると判定された場合には、階層記憶制御を終了せず本処理を終了する。これにより、後続のジョブで終了ジョブと同一ジョブが実行された場合に、終了ジョブ使用データに割り当てた階層記憶を後続ジョブでも再利用することが可能となる。
【０２２９】
ステップＳ９０１０で後続ジョブに終了ジョブと同一ジョブが存在しない場合には、管理計算機１００は、後続ジョブで終了ジョブが使用したデータセットと同一データセットを参照するものがあるか否かを確認する（Ｓ９０２０）。具体的に、管理計算機１００は、実行中ジョブ管理テーブル１１２を参照し、終了ジョブが使用するデータセットと同一なデータセットを参照するジョブが存在しているか否かを確認する。
【０２３０】
ステップＳ９０２０において、終了ジョブと同一のデータセットを参照するジョブが存在していると判定された場合には、階層記憶制御を終了せず本処理を終了する。これにより、後続のジョブで終了ジョブと同一データセットが参照されるものと判定し、終了ジョブ使用データに割り当てた階層記憶を後続ジョブでも再利用することができる。
【０２３１】
ステップＳ９０２０において、後続ジョブが終了ジョブと同一のデータセットを参照するジョブが存在しないと判定された場合には、管理計算機１００は、近い将来に終了ジョブと同一ジョブが再度実行されるかを判定する（Ｓ９０３０）。具体的に、管理計算機１００は、ホスト計算機２００のＯＳ２１２などが備えるジョブスケジューラに終了ジョブと同一ジョブが登録されていないかを確認する。ジョブスケジューラに終了ジョブと同一ジョブが登録されている場合、さらに、管理計算機１００は、スケジューラの該当ジョブが終了ジョブの終了時刻から近い間隔で実行されるものかを確認する。
【０２３２】
ステップＳ９０３０において、近い時間間隔で終了ジョブと同一ジョブが実行されると判定された場合には、スケジューラで実行される当該ジョブのために、階層記憶制御を終了せずに本処理を終了する。
【０２３３】
一方、ステップＳ９０３０において、近い時間間隔で終了ジョブと同一ジョブが実行されないと判定された場合には、ステップＳ９０４０の処理を実行する。
【０２３４】
ステップＳ９０４０では、管理計算機１００は、現状の階層記憶の割り当て状況を取得して、当該割り当て状況を保存する。具体的に、管理計算機１００は、ホスト計算機２００を経由して、ストレージ装置３００にＩＯ要求（指示内容はボリューム階層状態取得）を発行し、終了ジョブが使用したデータへの階層記憶配置を取得する。ストレージ装置３００は、上記ＩＯ要求を受け取ると、仮想論理ボリューム管理情報１２７０を参照し、同テーブル内の仮想アドレス１２７０３と階層番号１２７０４を抜き取り、ＩＯ要求の応答としてＩＯ要求発行元に返す。管理計算機１００は、ＩＯ要求の結果を基に、終了ジョブ使用データセット向けに過去階層保持テーブル１１９を作成し、保管する。
【０２３５】
ここで、管理計算機１００は、別手段でジョブ使用データの入出力性能を監視しておき、その性能に基づき、過去階層保持テーブル１１９に保存する情報を変更しても良い。例えば、管理計算機１００は、ジョブ使用データの入出力性能が想定よりも低いものであった場合、ストレージシステムから得られた階層記憶配置を変更し、階層記憶の低いものを高いものに変更して過去階層保持テーブル１１９に保存するといった処理をしても良い。この処理により、ジョブ使用データの実際の入出力性能結果に基づき、後続ジョブの入出力性能を適正化し、本来使用者が設定したジョブの入出力性能の要求値に近づけることができる。
【０２３６】
次に、管理計算機１００は、過去のジョブが使用したデータセットに割当たっている階層記憶を解除する手続きを行う（Ｓ９０４０）。具体的に、管理計算機１００は、過去のジョブが使用するデータセットが配置されているボリュームを宛先に設定し、ページロック解除を指示内容にしたＩＯ要求７３００をストレージ装置３００に発行する。ストレージ装置３００は、当該ＩＯ要求７３００を受け取ると、ページロックしていた該当仮想論理ボリューム上の指定ページを解除する。
【０２３７】
以上、運用段階における階層記憶割り当て解除処理により、終了ジョブが使用したデータを後続ジョブで再利用することができる。これにより、高い入出力性能を常に再現することが可能となる。さらに、後続ジョブが実行されない間は、ページロックを解除することにより、上位階層記憶を別のジョブで使いまわすことができ、高価な階層記憶を有効に利用することが可能となる。
【０２３８】
（１−６）本実施の形態の効果
以上のように、本実施の形態によれば、アプリケーションが使用するデータのファイル編成を管理計算機１００で管理することで、ファイル編成の特性を利用して、アプリケーションのデータ使用特性を引き出すことが可能となり、ＯＳなどで管理するファイルなどの単位よりも細やかな階層制御を実現することができる。また、ホスト計算機２００が備えるジョブの動作と連動することで、アプリケーションが動作する期間に相当するジョブ使用期間だけに、高価な上位階層を割り当てるように、限りある階層記憶の資源を有効に利用することが可能となる。これにより、本実施の形態による計算機システム１０は、制御対象として設定したアプリケーションデータに関して、常に使用者が求める高い入出力性能を提供することが可能となる。
【０２３９】
また、計算機システム１０では、ホスト計算機２００で実行されるジョブとそのジョブが使用するデータを検出し、当該データのファイル編成を調査することで、当該データの中で参照頻度の高い領域を特定し、ストレージシステム内に配置された当該領域を上位階層記憶に移動し、ストレージシステム内の他階層記憶に移動しないように制御する。さらに、ジョブ終了を検出した際には、ジョブ使用データをストレージシステム内の上位階層記憶から移動が可能なように制御する。以上により、ジョブ実行時は当該ジョブが参照するデータを常に高い入出力性能で参照可能にするように制御することができる。また、ジョブが実行されていない場合は、当該ジョブのデータを上位階層記憶に配置しないようにすることで、資源に限りのあるストレージシステム内の階層記憶を有効に活用することが可能となり、計算機システム全体で高い入出力性能を提供することが可能となる。
【０２４０】
（２）第２の実施の形態
（２−１）計算機システムのハードウェア構成
次に、本発明の第２の実施の形態に係る計算機システムについて説明する。本発明の第２の実施の形態によれば、ファイル編成を持たない計算機システムであっても、アプリケーションの挙動に基づいて、階層記憶を細やかに利用して効率的な制御が可能となる。
【０２４１】
本実施の形態の一例として、例えば、図３４に示す仮想テープシステム２０を例示できる。仮想テープシステム２０は、管理計算機１００、ホスト計算機２００Ａ、仮想テープサーバ２００Ｂ及びストレージ装置３００から構成される。
【０２４２】
仮想テープサーバ２００Ｂは、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。ＣＰＵは、演算処理装置として機能し、メモリに記憶されているプログラムや演算パラメータ等にしたがって、ホスト計算機２００の動作を制御する。また、仮想テープサーバ２００Ｂは、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを備えている。
【０２４３】
また、仮想テープサーバ２００Ｂは、ネットワーク（図示せず）を介して管理計算機１００、ホスト計算機２００Ａ及びストレージ装置３００と接続されている。
【０２４４】
なお、本実施の形態にかかる管理計算機１００、ホスト計算機２００Ａ及びストレージ装置３００の構成は、第１の実施の形態にかかる管理計算機１００、ホスト計算機２００及びストレージ装置３００と同様の構成であるため、詳細な説明は省略する。
【０２４５】
（２−２）仮想テープシステムの動作の詳細
仮想テープシステム２０で、仮想テープサーバ２００Ｂなどがストレージ装置３００を仮想化して、ホスト計算機２００Ａからのテープ制御指示に基づいて、ホスト計算機２００Ａにはあたかもテープが動作しているものとして見せるシステムである。このように、仮想テープシステム２０では、ストレージ装置３００を仮想テープとして仮想化して、ホスト計算機から受信したテープ制御指示に含まれるデータをディスクドライブに保存し、ホスト計算機２００Ａの要求により、保存したディスクドライブからデータを読み出している。
【０２４６】
また、仮想テープシステム２０では、論理ボリューム１５１にはテープフォーマットのデータが保存される。図３５に、テープフォーマットのデータの一例を示す。
【０２４７】
図３５に示すように、仮想テープフォーマット１５１０は、テープ関連の情報が保管されるヘッダ１５１１に加え、データを分割して保管するためのギャップ１５１２と、データそのもので、ホスト計算機に転送するために適切な容量であるレコード１５１３から構成される。
【０２４８】
仮想テープが参照される場合は、テープ同様にテープフォーマットの先頭（ヘッダ）から参照される。したがって、仮想テープのフォーマットでは、先頭に近いデータほど参照頻度が高いと言える。そこで、図３６のように、管理計算機１００の入出力頻度管理テーブル１１５に、ファイル編成が「仮想テープ」である仮想のデータセットを管理する。すなわち、ファイル編成が「仮想テープ」である場合に、高頻度入出力１欄１１５０２に入出力頻度が最も高いデータとして「ヘッダ」が格納され、高頻度入出力２欄１１５０３に入出力頻度が次いで高いデータとして「上位領域」が格納され、取得方法１１５０４欄に当該高頻度入出力領域の論理ボリューム上の領域を取得するための手段として「仮想サーバツール」が格納される。
【０２４９】
上記した入出力頻度管理テーブル１１５を活用することにより、第１の実施の形態で説明したファイル編成と同様の細やかな階層制御を実現することが可能となる。
【０２５０】
また、仮想テープシステム２０では、ホスト計算機２００からのテープマウント指示により、ストレージ装置３００へのデータ参照を開始する。また、ホスト計算機２００からのテープアンマウント指示により、ストレージ装置３００へのデータ参照を終了する。これは、上記した第１の実施の形態のジョブ開始とジョブ終了にそれぞれ相当する。
【０２５１】
本実施の形態では、管理計算機１００が、ホスト計算機２００Ａによるテープ制御指示を仮想テープサーバ２００Ｂが受信したことを検出する。管理計算機１００は、検出したテープ制御指示を解析し、そのテープ制御指示がテープマウント指示である場合には、図２８に示したジョブ投入に基づいた階層制御処理を実行する。一方、管理計算機１００は、解析したテープ制御指示がテープアンマウント指示である場合、図３３の階層記憶割り当て解除処理を実行する。
【符号の説明】
【０２５２】
１００    管理計算機
１０１    ストレージ情報テーブル
１１１    ストレージ管理プログラム
１１２    実行中ジョブ管理テーブル
１１３    制御対象データ管理テーブル
１１４    ユーザ設定情報管理テーブル
１１５    入出力頻度管理テーブル
１１６    階層記憶利用状況管理テーブル
１１７    階層テーブル
１１８    ホスト構成管理テーブル
１１９    過去階層保持テーブル
２００    ホスト計算機
２１１    アプリケーションプログラム
２１３    エージェントプログラム
３００    ストレージ装置
１２００  共有メモリ
１２２０  仮想ボリューム処理プログラム
１２３０  コピー処理プログラム
１２４０  入出力処理プログラム
１２５０  ボリューム管理情報
１２６０  ストレージ基本情報
１２７０  仮想論理ボリューム管理情報
１２９０  階層記憶プール管理情報
１３００  入出力制御部
１３１０  プロセッサ
１３２０  送受信部
１３３０  メモリ
１４００  ディスク制御部
１５００  ディスクドライブ
【図１】
2013061382.tif 000003
【図２】
2013061382.tif 000004
【図３】
2013061382.tif 000005
【図４】
2013061382.tif 000006
【図５】
2013061382.tif 000007
【図６Ａ】
2013061382.tif 000008
【図６Ｂ】
2013061382.tif 000009
【図７】
2013061382.tif 000010
【図８】
2013061382.tif 000011
【図９】
2013061382.tif 000012
【図１０】
2013061382.tif 000013
【図１１】
2013061382.tif 000014
【図１２】
2013061382.tif 000015
【図１３】
2013061382.tif 000016
【図１４】
2013061382.tif 000017
【図１５】
2013061382.tif 000018
【図１６】
2013061382.tif 000019
【図１７】
2013061382.tif 000020
【図１８】
2013061382.tif 000021
【図１９】
2013061382.tif 000022
【図２０】
2013061382.tif 000023
【図２１】
2013061382.tif 000024
【図２２】
2013061382.tif 000025
【図２３】
2013061382.tif 000026
【図２４】
2013061382.tif 000027
【図２５】
2013061382.tif 000028
【図２６】
2013061382.tif 000029
【図２７】
2013061382.tif 000030
【図２８】
2013061382.tif 000031
【図２９】
2013061382.tif 000032
【図３０】
2013061382.tif 000033
【図３１】
2013061382.tif 000034
【図３２】
2013061382.tif 000035
【図３３】
2013061382.tif 000036
【図３４】
2013061382.tif 000037
【図３５】
2013061382.tif 000038
【図３６】
2013061382.tif 000039
【手続補正書】
【提出日】平成26年3月28日(2014.3.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージ装置と、前記ストレージ装置へのデータの書き込みを要求するホスト計算機と、前記ストレージ装置と前記ホスト計算機とを管理する管理計算機と、がネットワークを介してそれぞれ相互に接続された計算機システムであって、
前記ストレージ装置は、
性能の異なる複数種類の記憶媒体により提供される記憶領域をプールとして管理し、前記ホスト計算機からの前記データの書き込み要求に応じて、前記プールを構成する複数種類の階層記憶のうち何れかの階層記憶から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、を備え、
前記制御部は、
前記ホスト計算機により管理される特定のデータについて、当該特定のデータの編成情報に基づいて、当該特定のデータのうち参照頻度の高い領域を特定し、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に前記特定のデータのうち参照頻度の高い領域を移動し、
データの編成情報と当該データのうち参照頻度が高い領域の情報とが対応付けられており、
前記データの編成情報に基づいて、参照頻度の高い領域が上位の階層記憶に配置される
ことを特徴とする、計算機システム。
【請求項２】
前記ストレージ装置の前記制御部は、
前記仮想ボリュームの所定の領域に対して割当られた記憶領域に格納されているデータを、所定の条件にしたがって、既に割り当てられている一の前記階層記憶から性能の異なる他の前記階層記憶に移動させる
ことを特徴とする、請求項１に記載の計算機システム。
【請求項３】
前記ストレージ装置の前記制御部は、
前記仮想ボリュームの所定の領域に対して割当られた記憶領域に格納されているデータを、当該データのアクセス頻度に応じて、既に割り当てられている一の前記階層記憶から性能の異なる他の前記階層記憶に移動させる
ことを特徴とする、請求項２に記載の計算機システム。
【請求項４】
前記ストレージ装置の前記制御部は、
前記特定のデータのうち参照頻度の高い領域を前記特定のデータの編成情報に基づいて移動させた場合に、移動後のより性能の高い前記階層記憶から当該階層記憶と異なるより性能の高い前記階層記憶への前記特定のデータの移動を抑止する、
ことを特徴とする、請求項１に記載の計算機システム。
【請求項５】
前記管理計算機は、
前記特定のデータの編成情報に基づいて、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる際に、より性能の高い前記他の階層記憶に空き領域がなかった場合には、前記ホスト計算機により実行されている複数のプログラムの優先度を比較し、当該優先度に応じて前記複数のプログラムが使用する前記データを前記複数階層の階層記憶間で移動させるように前記ストレージ装置を制御する
ことを特徴とする、請求項１に記載の計算機システム。
【請求項６】
前記管理計算機は、
前記特定のデータの編成情報に基づいて、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる際に、より性能の高い前記他の階層記憶に空き領域がなかった場合には、前記ホスト計算機により実行されている複数のプログラムの優先度を比較し、前記特定のデータの移動先となるより性能の高い前記他の階層記憶の領域に記憶されている前記データを利用している複数のプログラムのうち、優先度の低い前記複数のプログラムが使用する前記データを、既に割り当てられている一の前記階層記憶から、より性能の低い他の階層記憶に移動させるように前記ストレージ装置を制御する
ことを特徴とする、請求項５に記載の計算機システム。
【請求項７】
前記管理計算機は、
前記ホスト計算機により実行されている一のプログラムとは異なる他のプログラムの実行が開始され、前記他のプログラムが使用するデータのうち参照頻度の高い領域を、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる際に、前記他の階層記憶に空き領域が存在せず、前記一のプログラムが前記他のプログラムよりも優先度が低い場合に、前記一のプログラムが使用するデータを、既に割り当てられている一の前記階層記憶からより性能の低い他の前記階層記憶に移動させるように前記ストレージ装置を制御する
ことを特徴とする、請求項６に記載の計算機システム。
【請求項８】
前記管理計算機は、
前記特定のデータの編成情報に基づいて、既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に移動させる際に、より性能の高い前記他の階層記憶に空き領域がなかった場合には、前記ホスト計算機により実行されている複数のプログラムの優先度を比較し、当該優先度に応じて前記複数のプログラムが使用する前記データを前記複数階層の階層記憶間で移動させるように前記ストレージ装置を制御し、
前記ホスト計算機により実行されている複数のプログラムのうちの一のプログラム終了時に、前記複数のプログラムのうちの一のプログラムよりも後に実行される他の複数のプログラムが前記複数のプログラムのうちの一のプログラムと同一のデータを使用する場合に、前記複数のプログラムのうちの一のプログラム終了後に、当該データが配置されている複数階層のうちのいずれかの一の階層記憶から他の階層記憶への移動を抑止するように前記ストレージ装置を制御する
ことを特徴とする、請求項１に記載の計算機システム。
【請求項９】
ストレージ装置と、前記ストレージ装置へのデータの書き込みを要求するホスト計算機と、前記ストレージ装置と前記ホスト計算機とを管理する管理計算機と、がネットワークを介してそれぞれ相互に接続された計算機システムにおけるストレージ管理方法であって、
前記ストレージ装置は、
性能の異なる複数種類の記憶媒体により提供される記憶領域をプールとして管理し、前記ホスト計算機からの前記データの書き込み要求に応じて、前記プールを構成する複数種類の階層記憶のうち何れかの階層記憶から仮想ボリュームに対してページ単位で記憶領域を割り当てる制御部と、を備え、
前記制御部が、
前記ホスト計算機により管理される特定のデータについて、当該特定のデータの編成情報に基づいて、当該特定のデータのうち参照頻度の高い領域を特定する第１のステップと、
既に割り当てられている一の前記階層記憶からより性能の高い他の前記階層記憶に前記特定のデータのうち参照頻度の高い領域を移動させる第２のステップと、
を含み、
データの編成情報と当該データのうち参照頻度が高い領域の情報とが対応付けられており、
前記データの編成情報に基づいて、参照頻度の高い領域が上位の階層記憶に配置される
ことを特徴とする、ストレージ管理方法。
【国際調査報告】
2013061382.tif 000040
2013061382.tif 000041