実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
なお、以下の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶことができる。さらに、テーブル内の各列の値からなる情報要素をエントリと呼び、「aaaテーブル」のエントリを、説明のために、「aaaテーブルエントリ」と称する。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、コントローラに含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えば通信ポート)を用いながら行うため、処理の主語がプログラムとされても良い。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機(例えば、管理計算機、ホスト計算機、ストレージ装置等)が行う処理としても良い。また、コントローラは、プロセッサそれ自体であっても良いし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから各コントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
(1)第1実施形態
(1−1)計算機システムのハードウェア構成
図1は、第1実施形態に係る計算機システムのハードウェア構成図である。
計算機システム10は、管理計算機100、ホスト計算機200及びストレージ装置300を備える。管理計算機100及びホスト計算機200は、同一計算機であっても良いし、それぞれ1台であっても良いし、また、少なくとも一方が複数台であっても良い。ここで、管理計算機100又はホスト計算機200は、特許請求の範囲でいう管理システムの一例である。
管理計算機100、ホスト計算機200及びストレージ装置300は、IO処理用の通信ネットワーク(例えば、SAN(Storage Area Network))500を介して相互に接続される。ホスト計算機200は、通信ネットワーク500を介して、ストレージ装置300に対して、各種データ、例えば、データアクセス(データ入出力)又は記憶階層制御の指示を行うためのIO要求600(図25参照)を送信する。ストレージ装置300は、通信ネットワーク500を介して、ホスト計算機200に対して、受信したIO要求600に対する応答を送信する。
管理計算機100は、ホスト計算機200及びストレージ装置300に、装置管理用の通信ネットワーク(例えば、LAN(Local Area Network))550を介して接続される。管理計算機100は、通信ネットワーク550を介して、ホスト計算機200又はストレージ装置300に対して、各種データ、例えば、記憶階層制御を指示するデータを送信する。なお、通信ネットワーク500と通信ネットワーク550とは、単一の通信ネットワークでも良い。
図4は、第1実施形態に係るストレージ装置の構成図である。
ストレージ装置300は、メモリ310、コントローラ320、管理ポート330、IOポート340、キャッシュメモリ(CM)350、記憶装置360(360A、360B、360C)、入出力部370及び内部ネットワーク390を備える。コントローラ320は、内部ネットワーク390を介して、メモリ310、管理ポート330、IOポート340、キャッシュメモリ350、記憶装置360及び入出力部370に接続される。
メモリ310は、コントローラ320によって実行されるプログラム及びコントローラ320によって必要とされる情報等を記憶する。具体的には、メモリ310は、ページ割当て制御プログラム3101、入出力処理プログラム3102、ストレージ装置管理プログラム3103、ストレージ基本情報3110、論理ボリューム管理テーブル3111、プール内ページ管理テーブル3112及び実ボリューム管理テーブル3113を記憶する。
ページ割当て制御プログラム3101は、記憶階層制御を行うためのプログラムである。入出力処理プログラム3102は、IOポート340を介して受信したIO要求600を処理するためのプログラムである。IO要求600は、例えば、データアクセス指示又は記憶階層制御指示などを含む。IO要求600の詳細は、後述する。ストレージ装置管理プログラム3103は、ユーザからの入出力部370による入力を受け付けて、ストレージ装置300の設定を行うためのプログラムである。
ストレージ基本情報3110は、通信ネットワーク550におけるストレージ装置300の識別子の情報である。論理ボリューム管理テーブル3111は、論理ボリュームを管理するための情報を格納する。プール内ページ管理テーブル3112は、ページを管理するための情報を格納する。実ボリューム管理テーブル3113は、実ボリュームを管理するための情報を格納する。論理ボリューム管理テーブル3111、プール内ページ管理テーブル3112、及び実ボリューム管理テーブル3113の詳細は、後述する。
コントローラ320は、メモリ310に記憶されるプログラムを実行することによって、各種処理を行う。例えば、コントローラ320は、IOポート340を介して受信したIO要求600を処理することによって、指定された論理ボリュームへのデータアクセスを行う。管理ポート330は、通信ネットワーク550を介して管理計算機100及びホスト計算機200に接続するためのインタフェースである。IOポート340は、通信ネットワーク500を介して管理計算機100及びホスト計算機200に接続するためのインタフェースである。キャッシュメモリ350は、記憶装置360に書き込まれるデータ及び記憶装置360から読み出されるデータを一時的に記憶する。
記憶装置360は、記憶メディアを備え、ホスト計算機200から書き込み要求がなされたデータを記憶する。なお、ストレージ装置300は、1又は複数の記憶装置360を備える。記憶装置360としては、例えば、記憶装置(SSD(Solid State Disk))360A、記憶装置(SAS(Serial
Attached SCSI))360B、記憶装置(SATA(Serial ATA))360C等がある。
入出力部370は、ユーザからの入力を受け付ける入力部(例えば、キーボード、スイッチ、ポインティングデバイス及び/又はマイクロフォン等)とユーザに対して各種情報を表示する出力部(例えば、ディスプレイ装置及び/又はスピーカ等)とを有する。
図3は、第1実施形態に係るホスト計算機の構成図である。
ホスト計算機200は、メモリ210、プロセッサ220、管理ポート230、IOポート240、入出力部250及び内部ネットワーク290を有する。メモリ210、プロセッサ220、管理ポート230、IOポート240及び入出力部250は、内部ネットワーク290を介して相互に接続される。
メモリ210は、プロセッサ220によって実行されるプログラム及びプロセッサ220によって必要とされる情報等を記憶する。具体的には、メモリ210は、Operating System(OS)2101、1又は複数のアプリケーションプログラム(AP)2102、ユーザ設定情報入力プログラム2103、ジョブ制御情報取得プログラム2104、ページ制御プログラム2105、ページ割当て状態監視プログラム2106、ユーザ設定情報管理テーブル2110、ジョブ情報管理テーブル2111、データ構成管理テーブル2112、ページ構成管理テーブル2113、階層利用状況管理テーブル2114及び制御対象ページ管理テーブル2115を記憶する。
OS2101は、ホスト計算機200の処理の全体を制御するためのプログラムである。AP2102は、ホスト計算機200のプロセッサ220が実行する各種処理を定義するプログラムである。例えば、ホスト計算機200のプロセッサ220は、AP2102の定義に基づいて処理を実行し、データベース機能又はメールサーバ機能を提供する。ユーザ設定情報入力プログラム2103は、入出力部250を介してユーザからの情報の入力を受け付けるためのプログラムである。ジョブ制御情報取得プログラム2104は、OS2101が持つジョブに関する情報を取得するためのプログラムである。ジョブの詳細は、後述する。ページ制御プログラム2105は、AP2102がアクセスするデータに対して記憶階層制御を行うためのプログラムである。ページ割当て状態監視プログラム2106は、AP2102がアクセスするデータに対する記憶階層制御の状態を監視するためのプログラムである。
ユーザ設定情報管理テーブル2110は、ユーザにより入力された各種情報を格納する。ユーザ設定情報管理テーブル2110には、ユーザ設定情報入力プログラム2103が受け付けたユーザの入力情報が格納される。ジョブ情報管理テーブル2111は、ジョブを管理するための情報を格納する。データ構成管理テーブル2112は、ストレージ装置300に格納しているデータに関する情報を格納する。ページ構成管理テーブル2113は、ページとデータとの対応付けを行うための情報を格納する。階層利用状況管理テーブル2114は、ストレージ装置300の記憶階層の利用状況に関する情報を格納する。制御対象ページ管理テーブル2115は、記憶階層制御における制御対象のページに関する情報を格納する。ユーザ設定情報管理テーブル2110、ジョブ情報管理テーブル2111、データ構成管理テーブル2112、ページ構成管理テーブル2113、階層利用状況管理テーブル2114及び制御対象ページ管理テーブル2115の詳細は後述する。
プロセッサ220は、メモリ210に記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ220は、ストレージ装置300にIO要求600を送信することによって、ストレージ装置300によって実行される記憶階層制御又はストレージ装置300によって管理される論理ボリュームのデータへのアクセスを行う。管理ポート230は、通信ネットワーク550を介して管理計算機100及びストレージ装置300に接続するためのインタフェースである。IOポート240は、通信ネットワーク500を介して管理計算機100及びストレージ装置300に接続するためのインタフェースである。入出力部250は、ユーザからの入力を受け付ける入力部(例えば、キーボード、スイッチ、ポインティングデバイス及び/又はマイクロフォン等)と各種情報をユーザに対して表示する出力部(例えば、ディスプレイ装置及び/又はスピーカ等)とを有する。
図2は、第1実施形態に係る管理計算機の構成図である。
管理計算機100は、メモリ110、プロセッサ120、管理ポート130、IOポート140、入出力部150及び内部ネットワーク190を有する。メモリ110、プロセッサ120、管理ポート130、IOポート140及び入出力部150は、内部ネットワーク190を介して相互に接続される。
メモリ110は、プロセッサ120によって実行されるプログラム及びプロセッサ120によって必要とされる情報等を記憶する。具体的には、メモリ110は、集中ユーザ設定情報入力プログラム1101、集中ジョブ制御情報取得プログラム1102、集中ページ制御プログラム1103、集中ページ割当て状態監視プログラム1104、ホスト計算機管理テーブル1110、ユーザ設定情報集中管理テーブル1111、ジョブ情報集中管理テーブル1112、データ構成集中管理テーブル1113、ページ構成集中管理テーブル1114、階層利用状況集中管理テーブル1115及び制御対象ページ集中管理テーブル1116を記憶する。なお、メモリ110は、OS及びAPを記憶しても良い。
集中ユーザ設定情報入力プログラム1101は、入出力部150を介してユーザからの情報の入力を受け付けるためのプログラムである。集中ジョブ制御情報取得プログラム1102は、1又は複数のホスト計算機200のメモリ210に記憶されるOS2101が持つジョブに関する情報を取得するためのプログラムである。集中ページ制御プログラム1103は、1又は複数のホスト計算機200のメモリ210に記憶されるAP2102がアクセスするデータに対して記憶階層制御を行うためのプログラムである。集中ページ割当て状態監視プログラム1104は、1又は複数のホスト計算機200のメモリ210に記憶されるAP2102がアクセスするデータに対する記憶階層制御の状態を監視するためのプログラムである。
ホスト計算機管理テーブル1110は、管理計算機100が管理対象とする1以上のホスト計算機200に関する情報を格納する。ユーザ設定情報集中管理テーブル1111は、
ユーザにより入力された各種情報を格納する。ユーザ設定情報集中管理テーブル1111には、集中ユーザ設定情報入力プログラム1101が受け付けたユーザの入力情報が格納される。ジョブ情報集中管理テーブル1112は、ジョブを管理するための情報を格納する。データ構成集中管理テーブル1113は、ストレージ装置300に格納しているデータに関する情報を格納する。ページ構成集中管理テーブル1114は、ページとデータとの対応付けを行うための情報を格納する。階層利用状況集中管理テーブル1115は、記憶階層の利用状況に関する情報を格納する。制御対象ページ集中管理テーブル1116は、記憶階層制御の制御対象のページに関する情報を格納する。
プロセッサ120は、メモリ110に記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ120は、ホスト計算機200に記憶階層制御を指示することで、ホスト計算機200を介して、ストレージ装置300により実行される記憶階層制御を制御する。管理ポート130は、通信ネットワーク550を介してホスト計算機200及びストレージ装置300に接続するためのインタフェースである。IOポート140は、通信ネットワーク500を介してホスト計算機200及びストレージ装置300に接続するためのインタフェースである。入出力部150は、ユーザからの入力を受け付ける入力部(例えば、キーボード、スイッチ、ポインティングデバイス及び/又はマイクロフォン等)と各種情報をユーザに対して表示する出力部(例えば、ディスプレイ装置及び/又はスピーカ等)から構成される。
(1−2)計算機システムの処理の概要
図5は、第1実施形態に係る計算機システムの処理の概要を説明する概念図である。
ここで、以下の説明においては、単にストレージ装置300を主語にして処理の説明を行うが、これら処理はストレージ装置300のコントローラ320が実行していることを示している。同様に、単にホスト計算機200を主語にして処理の説明を行っている場合には、ホスト計算機200のプロセッサ220が処理を実行していることを示し、管理計算機100を主語にして処理の説明を行っている場合には、管理計算機100のプロセッサ120が、処理を実行していることを示している。
はじめに、本実施形態で前提となる実ボリューム、プール及び論理ボリュームの関係を説明する。
実ボリュームは、ストレージ装置300によって、1又は複数の記憶装置360(360A、360B、360C)の記憶領域(実記憶領域)から作成される論理的な記憶領域である。図5では、例えば、高性能な記憶装置360の記憶領域から構成される実ボリューム(以下、実ボリューム(高性能))は、複数の記憶装置360Aの記憶領域から構成されている。
本実施形態では、ストレージ装置300は、特性が異なる複数の記憶装置360を有しており、記憶領域を提供する記憶装置の違いによって、複数の特性が異なる実ボリュームを有することができる。特性が異なるとは、例えば、半導体ドライブ(例えば、SSD)や磁性体ドライブ(例えば、HDD:Hard Disk Drive)などの記憶素子の違い、FC、SAS、SATAなどのインタフェースの違い又は記憶装置から記憶領域を形成する方法(例RAIDレベル)の違いを意味する。特性が異なることによって、データのアクセスに要する時間やハードウェア障害からの回復の可能性が異なる。なお、RAIDとは、Redundat Array of Inexpensive Disksの略である。また、RAIDレベルとは、実ボリュームの信頼性や性能の分類である。RAIDレベルは、データの記録方法によって分類される。具体的には、RAIDレベルは、ホスト計算機200から書き込まれたデータを分割・複製することでデータの断片を複数の記憶装置360に分散及び重複して記憶したり、データの復元に必要なパリティなどのデータを生成して、ホスト計算機200のデータと同時に記憶したり、などの違いにより分類される。
プールは、ホスト計算機200によって、論理ボリュームに対してデータの書き込みがなされた際、当該データを記憶する記憶領域を提供するための実ボリュームの集合である。ストレージ装置300は、プールごとに、論理ボリュームと、論理ボリュームに対して記憶領域を提供する実ボリュームと、を管理している。プールには、特性の異なる1又は複数の実ボリュームが管理される。例えば、図5において、3つの実ボリューム(高性能、中性能、及び低性能)が、同一のプールに管理されている。
論理ボリュームは、ストレージ装置300がホスト計算機200に提供する仮想的なボリューム(仮想論理ボリューム)である。ホスト計算機200は、ストレージ装置300に対して、この論理ボリュームと、論理ボリューム上の記憶領域を示すアドレスとを指定したIO要求により、データアクセスを要求する。ストレージ装置300は、論理ボリュームの記憶領域のうち、更新のあった記憶領域分のデータだけをプールに登録された実ボリュームに記憶する。図5では、例えば、ホスト計算機200からのIO要求によって論理ボリュームの3つの領域に、それぞれデータ1、データ2、データ3が記憶されている。各データは、ストレージ装置300が論理ボリュームの各領域に割当てたページに記憶される。ページには、実ボリュームの記憶領域の断片が割当てられる。なお、ホスト計算機200のユーザが管理する単位であるデータ(例えば、ファイル、データセット)と、データに割当てられるページとは必ずしも1対1の関係にはない。具体的には、複数のページに単一のデータが記憶されることもあるし、単一のページに複数のデータが記憶されることもある。例えば、図5のデータ1のように、ページの記憶領域の大きさ(ページサイズと称する)よりもデータの記憶に必要な記憶領域の大きさ(データサイズと称する)が大きい場合、ストレージ装置300は、当該データを記憶できる記憶領域を確保するために、当該データに対して複数のページ(同図の例では、ページ1及びページ2)を割当てる。一方、データ2のように、ページサイズよりもデータサイズが小さい場合、データを記憶するページ内に未使用の記憶領域が存在することとなるので、ホスト計算機200からのIO要求600によって、当該ページの未使用の記憶領域へデータ(データ3)の書き込みがあると、ストレージ装置300は、新たにページの割当てを行わずに、当該ページにデータを記憶する。これにより、単一のページ(ページ5)に複数のデータ(データ2及びデータ3)が存在する。
次に、ストレージ装置300におけるページ移動と、記憶階層制御について説明する。
ページ移動とは、論理ボリュームにおいて、プール内の実ボリューム間でページ上のデータを移動させることをいう。また、記憶階層制御とは、データに対して当該データのアクセス頻度や性能要件に応じた適切な性能の論理ボリュームを提供することを目的として、ストレージ装置300が特性の異なる実ボリューム間でのページ移動を実施することにより、データを記憶する実ボリュームを制御することをいう。
ここで、図5を参照して、記憶階層制御の一例を説明する。ストレージ装置300では、ホスト計算機200によるデータのアクセスに要する時間の違いを特性情報(図5では、高性能、中性能又は低性能)として管理しているものとする。ここで、ホスト計算機200からデータ1を記憶している記憶領域のうち、ページ1に割当てられる記憶領域に対してアクセス頻度が過去との比較で高まったと判断した場合、ストレージ装置300は、ページ1に対して、実ボリューム(中性能)から実ボリューム(高性能)へのページ移動を行う。
このようなページ移動を実施することで、ストレージ装置300は、ホスト計算機200がデータにアクセスする頻度に応じて、適切な性能の論理ボリュームを提供できる。なお、ストレージ装置300は、この記憶階層制御を、定期的、又は不定期的に実行する。例えば、ストレージ装置300は、記憶階層制御を、1時間おきに実行したり、入出力部370を介したユーザからの指示を契機として実行したり、ホスト計算機200からの指示を契機として実行したりする。
以上説明したように、記憶階層制御においては、プール内の特性の異なる実ボリューム間でページ移動を実施する。本実施形態では、実ボリュームをその特性に応じて、複数の階層に区分して管理している。なお、本実施形態では、特に断らない限り、実ボリュームの階層を、3階層(高性能、中性能及び低性能)であるとして説明する。ただし、実ボリュームの階層は、3階層に限定されるものではない。
次に、ホスト計算機200上で起動するアプリケーション及びジョブの概念を説明する。
図30は、第1実施形態に係るアプリケーション及びジョブの概念図である。
ホスト計算機200では、1又は複数のアプリケーションを同時に実行させることができる。アプリケーションを実行する場合、実行対象のアプリケーション名、アプリケーションが使用するデータセット名などをジョブに規定し、そのジョブを実行(SUBMIT)する。具体的に、ジョブはアプリケーション名やデータセット名だけではなく、ジョブ名、ジョブの種別であるジョブクラス、ジョブの使用者等を規定することも出来る。ジョブの実行がユーザにより指示されると、OS2101の指示に従って、ホスト計算機200はジョブを開始する。ここで、データセットとは、特にメインフレームOSで管理される論理的な単位であり、ホスト計算機200で主に動作するアプリケーションが使用するデータである。例えば、オープンシステムでは、ファイルがデータセットに相当する。
図30に示すように、OS2101は、ホスト計算機200でジョブを処理するためのジョブ受付部2101a、ジョブスプール部2101b、及びアプリケーション実行部2101cを備えている。例えば、ジョブの実行をユーザに指示されると、OS2101内のジョブ受付部2101a(実際には、ジョブ受付部2101aを実行するプロセッサ220)がそのジョブを受け付け、ジョブで規定されている種々の情報を取得するための処理をホスト計算機200に指示する。ホスト計算機200は、ジョブで規定されている情報を取得後、ジョブに関してジョブスプール部2101bの処理を実行する。ジョブスプール部2101bは、アプリケーション実行部2101cでジョブの処理が可能になるまで、ジョブの実行を保留する。
アプリケーション実行部2101cで新しいジョブの処理が可能になると、ホスト計算機200はジョブに関する処理を、ジョブスプール部2101bからアプリケーション実行部2101cの処理に切り替える。アプリケーション実行部2101cは、ジョブに規定されているアプリケーションを実行する。アプリケーションが実行されて初めて、ジョブに規定されたアプリケーションプログラム用データが参照される。アプリケーション実行部2101cによる処理が終了する(すなわち、ジョブに規定されたアプリケーションの処理が完了する)と、ホスト計算機200は、ジョブの終了処理を実行し、ジョブを終了させる。
一般的に、OS2101は、ジョブを実行する時に、ジョブに対して優先度を付与する。ジョブの優先度は、全てのアプリケーションに対して、当該アプリケーションが要求するホスト計算機200の計算機資源(例えば、プロセッサ210やメモリ220)を割当てることができない場合、ホスト計算機200がどのアプリケーションに優先的に資源を割当てるかを判断するための基準値として使用される。なお、本実施形態では、アプリケーションの重要度を表す基準値として、ジョブの優先度を利用する。ただし、本実施形態は、アプリケーションの重要度を表す基準値として、ジョブの優先度に限定されるものではない。
次に、本実施形態におけるアプリケーションの重要度に基づく記憶階層制御の概要を説明する。
図6は、第1実施形態に係るホスト計算機及びストレージ装置の処理の概要を説明する概念図である。
図6に示すように、ホスト計算機200は、ページ制御プログラム2105に基づいて、ストレージ装置300に対して、記憶階層制御に必要なアプリケーションの重要度(例えば、ジョブの優先度)や性能要件(例えば、データアクセスの応答時間)等の情報を送信し、又はこれらの情報に基づいて記憶階層制御の指示を送信する。
ストレージ装置300は、受信したホスト計算機200の情報又は記憶階層制御の指示によって、ページ割当て制御プログラム3101に基づいて、アプリケーションの重要度に応じた記憶階層制御を実施する。さらに、ストレージ装置300は、このアプリケーションの重要度に応じた記憶階層制御の制御対象のページを記憶して、当該ページがアクセス頻度に応じた記憶階層制御の制御対象とならないようにする。このように、ストレージ装置300がアプリケーションの重要度に応じた記憶階層制御の制御対象ページであることを記憶して、アクセス頻度に応じた記憶階層制御の制御対象とならないようにする処理を、以後、ページロックと呼ぶ。なお、ストレージ装置300は、アクセス頻度に応じた記憶階層制御を実行する時に、アクセス頻度に応じた記憶階層制御の制御対象のページからページロックされたページを除外する。このため、アクセス頻度に応じた記憶階層制御によって、ページロックされたページが移動されることを防止することができる。
一方、ホスト計算機200は、記憶階層制御の指示に必要な情報を取得し、又は入出力部250を介してユーザに対してデータアクセスの特性情報を表示するために、ページ割当て状態監視プログラム2106に基づいて、ストレージ装置300に対して、記憶階層の割当てに関する情報を取得するIO要求600を送信する。当該IO要求600を受信したストレージ装置300は、入出力処理プログラム3102に基づいて、ホスト計算機200に対して、論理ボリュームに割当てたページの記憶領域の情報及び当該ページの実ボリュームの特性情報を返送する。
図7Aは、第1実施形態に係る記憶階層制御の概要を説明する第1の概念図である。図7Bは、第1実施形態に係る記憶階層制御の概要を説明する第2の概念図である。図7A及び図7Bは、ホスト計算機200のAP2102がアクセスするデータに対して、ストレージ装置300内でどのようにページが割当てられるかを示した概念図である。
ここで、ホスト計算機200には、図7A及び図7Bに示すように、4つのAP2102(AP1、AP2、AP3及びAP4)が存在するものとし、ストレージ装置300は、ホスト計算機200のAP2102がアクセスするデータ(データ1、データ2、データ3及びデータ4)を記憶しているものとする。また、ページ1は、データ1及びデータ2を記憶し、ページ2は、データ3及びデータ4を記憶しているものとする。さらに、ユーザは、全てのAP2102に対して、AP2102がアクセスするデータ(例えば、AP1がアクセスするデータは、データ1である)が高性能な実ボリュームに記憶されることを期待しているものとする。また、各実ボリュームからは、単一のページのみ割当て可能であるとする。
図7Aは、ホスト計算機200のプロセッサ220が、4つのAP2102(AP1、AP2、AP3及びAP4)を実行中である場合における、ページの割当て状態を表している。データ1、データ2、データ3及びデータ4は、高性能な実ボリュームの記憶領域に記憶されることを期待されるが、高性能な実ボリュームから割当て可能なページ数は1であるため、ページ1又はページ2のどちらかが記憶するデータのみが高性能な実ボリュームの記憶領域に記憶できる。ここで、ページ1は、2つの高優先度アプリケーション(AP1、AP2)によりアクセスされる。一方、ページ2は、1つの高優先度アプリケーション(AP3)及び1つの低優先度アプリケーション(AP4)によりアクセスされる。このため、相対的に多くの高優先度のアプリケーションがアクセスするページ1を、ページ2よりも優先順位の高いページと判断される。そして、優先順位に基づき、ページ1が高性能な実ボリュームに割当てられ(詳細には、ページ1に高性能な実ボリュームの記憶領域が割当てられ)、ページ2が高性能な実ボリュームよりも1階層下位の中性能な実ボリュームに割当てられる。
図7Bは、図7Aにおいて、実行中であったAP2の処理が終了した後におけるページの割当て状態を表している。AP2の処理が終了すると、ページ1は、1つの高優先度アプリケーション(AP1)によりアクセスされるようになる。一方、ページ2は、1つの高優先度アプリケーション(AP3)及び1つの低優先度アプリケーション(AP4)によりアクセスされる。この結果、ページにアクセスする高優先度のアプリケーションの数はページ1及びページ2で同一となる。しかし、ページにアクセスする低優先度のアプリケーションの数は、ページ1では0であるのに対して、ページ2では1である。このため、ページ2がページ1よりも優先順位の高いページと判断され、ページ2が高性能な実ボリュームに割当てられ、ページ1が中性能な実ボリュームに割当てられる。
このように、本実施形態におけるアプリケーションの重要度に基づく記憶階層制御では、ページに記憶されたデータにアクセスする複数のアプリケーションの優先度に基づいて、当該ページの優先順位を決定する。そして、優先順位の高いページから順に、当該ページに期待される性能要件を満たす実ボリュームから記憶領域を割当てる。このような処理を実行することにより、ページ内に重要度の異なるアプリケーションが使用する複数のデータが存在する場合において、重要度の高いアプリケーションが使用するデータに、低い入出力性能を示す記憶階層が割当てられることを適切に防ぐことができる。
なお、計算機システム10により実現される記憶階層制御の処理は、基本的に、ホスト計算機200及びストレージ装置300によって実行されるが、必要に応じて、ユーザが管理計算機100を利用して、複数のホスト計算機200及びストレージ装置300を集中管理するようにしてもよい。具体的には、管理計算機100が、複数のホスト計算機200へ記憶階層制御の指示を行う。各ホスト計算機200は、管理計算機100の指示により、ストレージ装置300へ記憶階層制御の指示を行う。これにより、複数のホスト計算機200が存在する場合、ユーザが操作する入出力部を管理計算機100の入出力部150に集約することができ、ユーザが各ホスト計算機200の入出力部250を個別に操作する手間を削減することができる。なお、管理計算機100は、ストレージ装置300に直接、記憶階層制御の指示を送信するようにしても良い。
(1−3)各種テーブルの内容
図21は、第1実施形態に係るストレージ基本情報の一例を示す図である。
ストレージ基本情報3110は、ストレージ装置300の情報を管理するテーブルであって、IPアドレス311001及びストレージID311002を含む。IPアドレス311001は、ストレージ装置300に付与されたIPアドレスである。ストレージID311002は、IPアドレスが示すストレージ装置300を一意に識別する識別子である。
図22は、第1実施形態に係る論理ボリューム管理テーブルの一例を示す図である。
論理ボリューム管理テーブル3111は、論理ボリュームを管理するテーブルであって、各エントリには、プールID311101、論理ボリュームID311102、仮想アドレス311103、ページID311104、参照フラグ311105及びロックフラグ311106のフィールドが含まれる。
プールID311101には、ストレージ装置300が1又は複数の実ボリュームの記憶領域をグループとして管理するプールを一意に識別するための識別子が格納される。論理ボリュームID311102には、ストレージ装置300が付与した論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。仮想アドレス311103には、対応する論理ボリュームIDにより識別される論理ボリュームにおいて、対応するページが割当てられている記憶領域を示すアドレス(仮想アドレス)が格納される。アドレスは、例えば、先頭シリンダ、ヘッダ数、及び、最後尾シリンダ、ヘッダ数である。アドレスは、通信ネットワーク500がSCSI(Small Computer System Interface)の場合、LBA(Logical
Block Address)であっても良い。なお、仮想アドレス311103に格納されるアドレスの範囲の大きさは、ページサイズと同一である。ページID311104には、対応する仮想アドレスが示す記憶領域が割当てられているページを一意に識別するための識別子が格納される。なお、仮想アドレスが示す記憶領域が割当てられているページがない場合には、ページID311104には、「空き」が格納される。参照フラグ311105には、仮想アドレスが示す記憶領域に対して書き込み又は読み込み参照があったことを示すフラグ(参照フラグ)が格納される。ロックフラグ311106には、仮想アドレス311103が示す記憶領域がページロック制御中であることを示すフラグ(ロックフラグ)が格納される。
図23は、第1実施形態に係るプール内ページ管理テーブルの一例を示す図である。
プール内ページ管理テーブル3112は、プール内の論理ボリュームに割当てているページを管理するテーブルであって、各エントリには、プールID311201、ページID311202、アクセス頻度311203、実ボリュームID311204及び実アドレス311205のフィールドが含まれる。
プールID311201には、対応する実ボリュームIDが示す実ボリュームが登録されているプールを一意に識別するための識別子(プールID)が格納される。ページID311202には、対応するプールIDによって識別されるプール内の論理ボリュームに対して、ストレージ装置300が割当てたページを一意に識別するための識別子(ページID)が格納される。アクセス頻度311203には、当該ページの割当て後に、何回参照されたかの情報(アクセス頻度)が格納される。実ボリュームID311204には、対応するページIDが示すページを割当てた実ボリュームを一意に識別するための識別子(実ボリュームID)が格納される。実アドレス311205には、実ボリュームIDで識別される実ボリュームの記憶領域を示すアドレスが格納される。
図24は、第1実施形態に係る実ボリューム管理テーブルの内容を示す図である。
実ボリューム管理テーブル3113は、プールに登録された実ボリュームを管理するテーブルであって、各エントリには、プールID311301、実ボリュームID311302、階層311303、総容量311304、総空き容量311305、実アドレス311306、記憶装置ID311307、物理アドレス311308及び使用フラグ311309のフィールドが含まれる。
プールID311301は、ストレージ装置300が管理しているプールを一意に識別するための識別子(プールID)が格納される。実ボリュームID311302には、ストレージ装置300が管理する実ボリュームを一意に識別するための識別子(実ボリュームID)が格納される。階層311303には、実ボリュームIDが示す実ボリュームの入出力性能に関する特性情報が格納される。総容量311304には、実ボリュームIDが示す実ボリュームの備える記憶領域のサイズが格納される。総空き容量311305には、実ボリュームIDが示す実ボリュームの備える記憶領域のうち、未使用の記憶領域のサイズが格納される。実アドレス311306には、実ボリュームIDが示す実ボリュームの記憶領域を示すアドレス(実アドレス)が格納される。なお、実アドレスが示す記憶領域の大きさは、ページサイズと同一である。記憶装置ID311307には、実アドレスによって示される記憶領域を構成する記憶装置360を一意に識別するための識別子(記憶装置ID)が格納される。物理アドレス311308には、実アドレスが示す記憶領域を構成する記憶装置360の記憶領域を示すアドレスが格納される。使用フラグ311309には、実アドレスが示す記憶領域がページの割当てに使用されていることを示すフラグ(使用フラグ)が設定される。
図25は、第1実施形態に係るIO要求を示す図である。
IO要求600は、管理計算機100又はホスト計算機200によって発行される。IO要求600は、宛先60001、指示内容60002、通し番号60003及びオプション60004のフィールドから構成される。
宛先60001には、このIO要求600の宛先に関する情報であって、例えば、このIO要求600の送信先となるストレージ装置300の識別子と、当該ストレージ装置300における論理ボリュームIDと、当該論理ボリュームIDが示す論理ボリュームの記憶領域(例えば、仮想領域、或いは実領域)のアドレスとを含む情報が格納される。指示内容60002には、このIO要求600によって指示される処理の内容(指示内容)が格納される。例えば、指示内容は、記憶階層制御の指示又はデータアクセスの指示である。記憶階層制御の指示としては、例えば、ページロック開始、ページロック解除、指定階層へのページ移動、階層利用状況取得、又はプール状態取得が挙げられる。また、データアクセスの指示としては、例えば、データ書き込み又はデータ読み込みが挙げられる。通し番号60003には、このIO要求600が発行された順番(通し番号)が格納される。通し番号は、このIO要求600の発行元である管理計算機100又はホスト計算機200によって決められる。オプション60004には、このIO要求600によって書き込みが要求されるデータの内容、ページ移動先の階層等が格納される。
図15は、第1実施形態に係るユーザ設定情報管理テーブルの一例を示す図である。
ユーザ設定情報管理テーブル2110は、制御対象のデータに関して、ホスト計算機200のユーザによってあらかじめ設定された情報であって、各エントリには、ジョブ名211001、データセット名211002、性能要件種別211003及び性能要件211004のフィールドが含まれる。
ジョブ名211001には、ホスト計算機200上で動作するOS2101がアプリケーションを実行する時に使用するジョブの名称(ジョブ名)が格納される。データセット名211002には、ジョブ名のジョブで起動されるアプリケーションが使用するデータセットの名称(データセット名)が格納される。性能要件種別211003には、対応するデータセット名により、一意に識別されるデータに対する性能要件の種別(性能要件種別)が格納される。性能要件種別には、例えば、データを格納すべきプールの階層、データアクセスの応答時間(例えば、ミリ秒)、単位時間当たりのアクセス回数(例えば、IOPS(IO Per Second)等がある。性能要件211004には、性能要件種別の内容が格納される。例えば、性能要件種別がデータアクセスの応答時間の場合、性能要件211004には、10ミリ秒以内などの値が格納される。
図16は、第1実施形態に係るジョブ情報管理テーブルの一例を示す図である。
ジョブ情報管理テーブル2111は、ホスト計算機200上で動作するOS2101により実行されるジョブを管理するテーブルであって、各エントリには、ジョブ名211101、実行状態211102、優先度211103及びデータセット名211104のフィールドが含まれる。
ジョブ名211101には、ホスト計算機200上で動作するOS2101がアプリケーションを実行する時に使用するジョブの名称(ジョブ名)が格納される。実行状態211102には、対応するジョブ名のジョブがOS2101によって、実行中であるか否かの情報が格納される。優先度211103には、ジョブ名のジョブがOS2101によって、実行される時の優先度が格納される。データセット名211104には、対応するジョブ名のジョブで起動されるアプリケーションが使用するデータセットの名称が格納される。
図17は、第1実施形態に係るデータ構成管理テーブルの一例を示す図である。
データ構成管理テーブル2112は、データセットが記憶されている論理ボリュームの記憶領域を管理するテーブルであって、各エントリには、データセット名211201、格納デバイス名211202、仮想アドレス211203、ストレージID211204及び論理ボリュームID211205のフィールドが含まれる。
データセット名211201には、OS2101で管理されるデータセットの名称(データセット名)が格納される。格納デバイス名211202には、データセット名のデータセットが記憶される論理ボリュームをホスト計算機200上のOS2101が一意に識別するための識別子(例えば、デバイス番号)が格納される。仮想アドレス211203には、対応するデータセット名のデータセットが記憶される論理ボリュームの記憶領域を示すアドレスが格納される。ストレージID211204には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。論理ボリュームID211205には、ストレージIDによって識別されるストレージ装置300が付与した論理ボリュームを一意に識別するための識別子が格納される。
図18は、第1実施形態に係るページ構成管理テーブルの一例を示す図である。
ページ構成管理テーブル2113は、論理ボリュームの記憶領域(仮想アドレス)とページとの対応付けを管理するテーブルであって、各エントリには、ストレージID211301、論理ボリュームID211302、ページID211303及び仮想アドレス211304のフィールドが含まれる。
ストレージID211301には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。論理ボリュームID211302には、対応するストレージIDによって識別されるストレージ装置300が付与した論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。ページID211303には、対応するストレージID及び論理ボリュームIDによって識別される論理ボリュームに対して、ストレージ装置300が割当てたページを一意に識別するための識別子(ページID)が格納される。仮想アドレス211304には、ページIDによって識別されるページに対して割当てられた論理ボリューム上の記憶領域のアドレス(仮想アドレス)が格納される。
図19は、第1実施形態に係る階層利用状況管理テーブルの一例を示す図である。
階層利用状況管理テーブル2114は、記憶階層の利用状況を管理するテーブルであって、各エントリには、ストレージID211401、階層211402、全体容量211403及びページロック済み容量211404のフィールドが含まれる。
ストレージID211401には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。階層211402には、対応するストレージIDが示すストレージ装置300によって管理される実ボリュームの階層を一意に識別するための識別子が格納される。全体容量211403には、階層に対応する1又は複数の実ボリュームの総容量の合計値が格納される。ページロック済み容量211404には、階層に対応する1又は複数の実ボリュームから割当てられたページのうち、ページロック実施中のページの総容量が格納される。
図20は、第1実施形態に係る制御対象ページ管理テーブルの一例を示す図である。
制御対象ページ管理テーブル2115は、アプリケーションの重要度に応じた記憶階層制御の制御対象のページを管理するテーブルであって、各エントリには、ストレージID211501、論理ボリュームID211502、ページID211503、階層211504、ジョブ名211505及びデータセット名211506のフィールドが含まれる。
ストレージID211501には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。論理ボリュームID211502には、対応するストレージIDによって識別されるストレージ装置300が付与した論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。ページID211503には、対応するストレージID及び論理ボリュームIDによって識別される論理ボリュームに対して、ストレージ装置300が割当てたページを一意に識別するための識別子(ページID)が格納される。階層211504には、当該ページを割当てた記憶階層を示す情報が格納される。ジョブ名211505には、当該ページにアクセスするジョブの名称(ジョブ名)が格納される。データセット名211506には、当該ジョブが当該ページにアクセスする際に指定するデータセットの名称(データセット名)が格納される。
図8は、第1実施形態に係るホスト計算機管理テーブルの一例を示す図である。
ホスト計算機管理テーブル1110は、管理計算機100により管理されるホスト計算機200の情報であって、各エントリには、ホスト名111001及びIPアドレス111002のフィールドが含まれる。
ホスト名111001には、ホスト計算機200の名称が格納される。IPアドレス111002には、ホスト計算機200に付与されるIPアドレスが格納される。
図9は、第1実施形態に係るユーザ設定情報集中管理テーブルの一例を示す図である。
ユーザ設定情報集中管理テーブル1111は、管理計算機100が制御対象とする1又は複数のホスト計算機200に対して、ユーザによってあらかじめ設定された記憶階層制御対象のデータに関する情報であって、各エントリには、ホスト名111100、ジョブ名111101、データセット名111102、性能要件種別111103及び性能要件111104のフィールドが含まれる。
ホスト名111100には、管理計算機100が管理対象とするホスト計算機200の名前が格納される。ジョブ名111101には、ホスト計算機200上で動作するOS2101がアプリケーションを実行する時に使用するジョブの名称(ジョブ名)が格納される。データセット名111102は、対応するジョブ名のジョブで起動されるアプリケーションが使用するデータセットの名称(データセット名)が格納される。性能要件種別111103には、対応するデータセット名により、一意に識別されるデータに対する性能要件の種別が格納される。性能要件111104には、対応する性能要件種別の内容が格納される。
図10は、第1実施形態に係るジョブ情報集中管理テーブルの一例を示す図である。
ジョブ情報集中管理テーブル1112は、ホスト計算機200上で動作するOS2101により実行されるジョブを管理するテーブルであって、各エントリには、ホスト名111200、ジョブ名111201、実行状態111202、優先度111203及びデータセット名111204のフィールドが含まれる。
ホスト名111200には、管理計算機100が管理対象とするホスト計算機200の名前(ホスト名)が格納される。ジョブ名111201には、ホスト計算機200上で動作するOS2101がアプリケーションを実行する時に使用するジョブの名称(ジョブ名)が格納される。実行状態111202には、対応するジョブ名のジョブがOS2101によって、実行中であるか否かを示す情報が格納される。優先度111203には、対応するジョブ名のジョブがOS2101によって、実行される時の優先度が格納される。データセット名111204には、対応するジョブ名のジョブで起動されるアプリケーションが使用するデータセットの名称が格納される。
図11は、第1実施形態に係るデータ構成集中管理テーブルの一例を示す図である。
データ構成集中管理テーブル1113は、データセットが記憶されている論理ボリュームの記憶領域を管理するテーブルであって、各エントリには、ホスト名111300、データセット名111301、格納デバイス名111302、仮想アドレス111303、ストレージID111304及び論理ボリュームID111305のフィールドが含まれる。
ホスト名111300には、管理計算機100が管理対象とするホスト計算機200の名前(ホスト名)が格納される。データセット名111301には、OS2101で管理されるデータセットの名称(データセット名)が格納される。格納デバイス名111302には、対応するデータセット名のデータセットが記憶される論理ボリュームをホスト計算機200上のOS2101が一意に識別するための識別子(例えば、デバイス番号)が格納される。仮想アドレス111303には、対応するデータセット名のデータセットが記憶される論理ボリュームの記憶領域を示すアドレス(仮想アドレス)が格納される。ストレージID111304には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。論理ボリュームID111305には、対応するストレージIDによって識別されるストレージ装置300が付与した論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。
図12は、第1実施形態に係るページ構成集中管理テーブルの一例を示す図である。
ページ構成集中管理テーブル1114は、論理ボリュームの記憶領域(仮想アドレス)とページの対応付けを管理するテーブルであって、各エントリには、ホスト名111400、ストレージID111401、論理ボリュームID111402、ページID111403及び仮想アドレス111404のフィールドが含まれる。
ホスト名111400には、管理計算機100が管理対象とするホスト計算機200の名前(ホスト名)が格納される。ストレージID111401には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。論理ボリュームID111402には、対応するストレージIDによって識別されるストレージ装置300が付与した論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。ページID111403には、対応するストレージID及び論理ボリュームIDによって識別される論理ボリュームに対して、ストレージ装置300が割当てたページを一意に識別するための識別子(ページID)が格納される。仮想アドレス111404には、対応するページIDによって識別されるページに対して割当てられた論理ボリューム上の記憶領域のアドレス(仮想アドレス)が格納される。
図13は、第1実施形態に係る階層利用状況集中管理テーブルの一例を示す図である。
階層利用状況集中管理テーブル1115は、記憶階層の利用状況を管理するテーブルであって、各エントリには、ホスト名111500、ストレージID111501、階層111502、全体容量111503及びページロック済み容量111504のフィールドが含まれる。
ホスト名111500には、管理計算機100が管理対象とするホスト計算機200の名前(ホスト名)が格納される。ストレージID111501には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。階層111502には、記憶階層を一意に識別するための識別子が格納される。全体容量111503には、対応する階層における1又は複数の実ボリュームの総容量の合計値が格納される。ページロック済み容量111504には、対応する階層における1又は複数の実ボリュームから割当てられたページのうち、ページロック実施中のページの総容量が格納される。
図14は、第1実施形態に係る制御対象ページ集中管理テーブルの一例を示す図である。
制御対象ページ集中管理テーブル1116は、アプリケーションの重要度に応じた記憶階層制御の制御対象のページを管理するテーブルであって、各エントリには、ホスト名111600、ストレージID111601、論理ボリュームID111602、ページID111603、階層111604、ジョブ名111605及びデータセット名111606のフィールドが含まれる。
ホスト名111600には、管理計算機100が管理対象とするホスト計算機200の名前(ホスト名)が格納される。ストレージID111601には、ホスト計算機200によって管理されるストレージ装置300を一意に識別するための識別子(ストレージID)が格納される。論理ボリュームID111602には、対応するストレージIDによって識別されるストレージ装置300が付与した論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。ページID111603には、対応するストレージID及び論理ボリュームによって識別される論理ボリュームに対して、ストレージ装置300が割当てたページを一意に識別するための識別子(ページID)が格納される。階層111604には、当該ページを割当てた実ボリュームの階層を示す情報が格納される。ジョブ名111605には、当該ページにアクセスするジョブの名称(ジョブ名)が格納される。データセット名111606には、当該ジョブが当該ページにアクセスする際に指定するデータセットの名称(データセット名)が格納される。
(1−4)各装置の動作の詳細
(1−4−1)アプリケーションが常に同一の単一データにアクセスするとした場合の実施例(実施例A1)
実施例A1では、ホスト計算機200のアプリケーションと、当該アプリケーションがアクセスするデータとの対応関係が1対1となっている場合における各装置の動作を説明する。ここで、実施例A1では、ジョブと、ジョブがアクセスするデータセットとの関係が1対1である場合を想定する。ただし、ジョブは常に同一のデータセットにアクセスするものとする。
まず、ストレージ装置300の動作を説明する。
ストレージ装置300は、ストレージ装置管理プログラム3103に基づいて、ユーザからストレージ装置300の設定に関する情報を取得し、ストレージ基本情報3110、論理ボリューム管理テーブル3111及び実ボリューム管理テーブル3113を作成する。具体的には、ストレージ装置300は、ユーザの入力(例えば、入出力部370に対するユーザの入力)からIPアドレス及びストレージIDを取得し、取得したIPアドレスをIPアドレス311001に格納する。次に、実ボリュームを作成するため、ユーザの入力からプールID、実ボリュームID、記憶装置ID及び物理アドレスを取得する。さらに、ストレージ装置300は、実ボリューム管理テーブル3113に新たなエントリを追加し、取得した情報を当該エントリのプールID311301、実ボリュームID311302、記憶装置ID311307及び物理アドレス311308に格納する。さらに、ストレージ装置300は、記憶装置ID311307に格納された記憶装置IDが示す記憶装置360から性能情報や容量情報を取得し、取得した情報を当該エントリの階層311303及び総容量311304に格納する。さらに、ストレージ装置300は、当該エントリの総空き容量311305を0とし、使用フラグ311309を「未使用」とすることにより初期化する。ストレージ装置300は、この動作をユーザの入力回数だけ繰り返し、実ボリューム管理テーブル3113を作成する。さらに、論理ボリュームを作成するために、ストレージ装置300は、ユーザの入力からプールID、実ボリュームID、仮想アドレスを取得する。さらに、ストレージ装置300は、論理ボリューム管理テーブル3111に新たなエントリを追加し、取得した情報を当該エントリのプールID311101、実ボリュームID311102、仮想アドレス311103に格納する。さらに、ストレージ装置300は、当該エントリのページIDを「空き」とし、参照フラグ311105を「参照なし」とし、ロックフラグ311106を「ロック解除」とすることにより初期化する。この動作をユーザに入力回数だけ繰り返し、論理ボリューム管理テーブル3111を作成する。
図26は、第1実施形態に係る入出力処理のフローチャートである。
ストレージ装置300は、ホスト計算機200からIO要求600を受信すると、入出力処理プログラム3102に基づいて、当該IO要求600の宛先60001に含まれている論理ボリュームID及び仮想アドレスを取得し、取得した論理ボリュームID及び仮想アドレスに合致するエントリ(当該処理の説明では、「この論理ボリュームエントリ」と称する)を、論理ボリューム管理テーブル3111から取得する(S7000)。
次に、ストレージ装置300は、この論理ボリュームエントリの参照フラグ311105に参照があったことを示す参照フラグを登録し(S7010)、当該IO要求600の指示内容60002に格納されている指示内容が、記憶階層制御指示か否かを判定する(S7020)。
この結果、当該IO要求600の指示内容が記憶階層制御指示の場合(S7020でYes)、ストレージ装置300は、記憶階層制御処理(図28参照)を実行して(S7040)、入出力処理を終了する一方、当該IO要求600の指示内容が記憶階層制御指示ではない場合(S7020でNo)、ストレージ装置300は、処理をステップS7030に進める。
ステップS7030において、ストレージ装置300は、当該IO要求600の指示内容が、データ読み込み参照か否かを判定する。この結果、当該IO要求600の指示内容がデータ読み込み参照である場合(S7030でYes)、ストレージ装置300は、処理をステップS7050に進める一方、当該IO要求600の指示内容がデータ読み込み参照ではない場合(S7030でNo)、処理をステップS7070に進める。
ステップS7050において、ストレージ装置300は、この論理ボリュームエントリに割当てページがあるか否かを判定する。具体的には、ストレージ装置300は、ページID311104のページIDを参照して、ページIDが「空き」(割当てページがないこと)を表しているかを判定する。ページID311104が「空き」を表している場合、ストレージ装置300は、ステップS7060の処理を実行する。一方、ページID311104が「空き」を表していない場合、ストレージ装置300は、ステップS7090の処理を実行する。
ステップS7060において、ストレージ装置300は、IO要求600によるデータ参照の結果を0として(つまり、0を表すデータが読み出されたとして)、ホスト計算機200にデータ0を返信し、入出力処理を終了する。
一方、ステップS7070において、ストレージ装置300は、ステップS7050と同様な処理を行って、この論理ボリュームエントリに割当てページがあるか否かを判定する。割当てページがない場合(S7070でNo)、ストレージ装置300は、処理をステップS7080に進める一方、割当てページがある場合(S7070でYes)、処理をステップS7090に進める。
ステップS7080において、ストレージ装置300は、プールからページを割当てるページ割当て処理(図27参照)を実行し、その後、ステップS7090に処理を進める。
ステップS7090において、ストレージ装置300は、この論理ボリュームエントリの仮想アドレス311103に格納された仮想アドレスに対して、データアクセス処理を実行する。具体的には、ストレージ装置300は、この論理ボリュームエントリのページID311104のページIDに合致するエントリ(プール内ページ管理テーブルエントリ)を、プール内ページ管理テーブル3112から取得する。次に、ストレージ装置300は、取得したプール内ページ管理テーブルエントリのアクセス頻度311203の値に1を加算する。さらに、ストレージ装置300は、プール内ページ管理テーブルエントリの実ボリュームID及び実アドレスに合致するエントリ(実ボリューム管理テーブルエントリ)を、実ボリューム管理テーブル3113から取得する。さらに、ストレージ装置300は、取得した実ボリューム管理テーブルエントリの記憶装置ID311307の記憶ID及び物理アドレス31108の物理アドレスによって識別される記憶装置360の記憶領域に対してデータアクセス処理を実行する。ストレージ装置300は、この後、入出力処理を終了する。
図27は、第1実施形態に係るページ割当て処理のフローチャートである。
ページ割当て処理は、入出力処理(図26)のステップS7080において実行される処理に対応する。ページ割当て処理は、ストレージ装置300がページ割当て制御プログラム3101に基づいて実行する。
ストレージ装置300は、入出力処理のステップS7070での判定対象としている論理ボリュームエントリのプールID311101のプールIDに合致する1又は複数のエントリ(実ボリューム管理テーブルエントリ)を、実ボリューム管理テーブル3113から取得し、取得した実ボリューム管理テーブルエントリの階層311303が最も高い階層(性能や信頼性が最も高いと設定される最も高い階層)を選定する(S7100)。
次に、ストレージ装置300は、対応する論理ボリュームに対して割当て可能な実ボリュームがあるか否かを判定する(S7120)。具体的には、ストレージ装置300は、選定した階層に合致する実ボリューム管理テーブルエントリを特定し、特定した各実ボリューム管理テーブルエントリの総空き容量を参照し、総空き容量がページサイズ以上であるエントリ(すなわち、割当て可能な実ボリューム)があるか否か判定する。
この結果、総空き容量がページサイズ以上である実ボリューム管理テーブルエントリがある場合、すなわち、割当て可能な実ボリュームが存在する場合(S7120でYes)には、ストレージ装置300は、処理をステップS7150に進める一方、総空き容量311305がページサイズ以上である実ボリューム管理テーブルエントリがない場合(S7120でNo)には、処理をステップS7130に進める。
ステップS7150において、ストレージ装置300は、ステップS7120で特定した実ボリューム管理テーブルエントリの使用フラグ311309の使用フラグが「未使用」(未割当ての領域であることを示す)である実ボリューム管理テーブルエントリを特定する。そして、ストレージ装置300は、当該エントリの使用フラグ311309にページ割当てに使用することを示すフラグ「使用中」を登録する。
次いで、ストレージ装置300は、ステップS7120で特定した実ボリューム管理テーブルエントリを利用して、プール内ページ管理テーブル3112に、新たなエントリを追加する。具体的には、ストレージ装置300は、新たなエントリを追加し、追加したエントリのプールID311201に、この論理ボリュームエントリのプールID311101のプールIDを格納し、ページID311202に、ページを一意に識別できる識別子として、プール内ページ管理テーブル3112のページID311202に格納されていない任意の値(例えば、プール内ページ管理テーブル3112のページID311202に格納されている最大の値に1を加算した値)を格納し、アクセス頻度311203に、初期値である0を格納し、実ボリュームID311204に、ステップS7120で特定した実ボリューム管理テーブルエントリの実ボリュームID311302の値を格納し、実アドレス311205に、ステップS7120で特定した実ボリューム管理テーブルエントリの実アドレス311306の値を格納する。その後、ストレージ装置300は、ページ割当て処理を終了する。
一方、ステップS7130においては、ストレージ装置300は、選出した階層よりも一つ下位の階層の記憶領域を保持する実ボリュームの有無を確認する。この結果、1つ下位の階層を保持する実ボリュームが存在する場合(S7130でYes)、ストレージ装置300は、処理をステップS7110に進める一方、1つ下位の階層の記憶領域を保持する実ボリュームが存在しない場合(S7130でNo)、ストレージ装置300は、処理をステップS7140に進める。
ステップS7110において、ストレージ装置300は、現在よりも一つ下位の階層を選定し、当該階層を対象として、ステップS7120以降の処理を実行する。
一方、ステップS7140において、ストレージ装置300は、IOエラーをIO要求発行元のホスト計算機200に返す。なお、ストレージ装置300は、ホスト計算機200にIOエラーを返すだけでなく、メールなどで使用者にIOエラーを通知しても良い。
図28は、第1実施形態に係る記憶階層制御処理のフローチャートである。
記憶階層制御処理は、ストレージ装置300がページ割当て制御プログラム3101に基づいて実行される。この記憶階層制御処理は、例えば、定期的に実行され、若しくは、管理計算機100又はホスト計算機200の指示により実行される。記憶階層制御処理は、例えば、入出力処理(図26)のステップS7040において実行される。なお、以下では、各プールに対する記憶階層制御処理を説明する。
まず、ストレージ装置300は、指定されたプールIDに合致するエントリ(プール内ページ管理テーブルエントリ)を、プール内ページ管理テーブル3112から取得し、取得したプール内ページ管理テーブルエントリのアクセス頻度311203のアクセス頻度を参照する。また、ストレージ装置300は、取得したプール内ページ管理テーブルエントリの実ボリュームID311204に合致するエントリ(実ボリューム管理テーブルエントリ)を、実ボリューム管理テーブル3113から取得し、当該エントリの階層311303の階層を参照する。なお、本実施形態では、ストレージ装置300は、最も低い階層の実ボリュームIDに合致するプール内ページ管理テーブルエントリを上位エントリから順に参照する。
以下、説明のため、ストレージ装置300が現時点のページの階層(置き換え元の階層)をソース階層とし、ソース階層の実ボリュームIDに合致するプール内ページ管理テーブル3112のエントリをソースエントリとする。また、ページの置き換え先として参照する階層をターゲット階層とし、ターゲット階層の実ボリュームIDに合致するプール内ページ管理テーブル3112のエントリをターゲットエントリとする。
次に、ストレージ装置300は、今回の階層制御処理が記憶階層制御指示によるものなのかを否かを判定する(S8005)。ここで、記憶階層制御指示によるものである場合(S8005でYes)、ストレージ装置300は、IO要求に基づく階層記憶制御処理(図29参照)を実行し(S8200)、処理を終了する。一方、記憶階層制御指示ではない場合(S8005でNo)、ストレージ装置300は、処理をステップS8010に進める。
ステップS8010において、ストレージ装置300は、ターゲット階層(初期値は、ソース階層と同じ階層)に対して規定されている基準となるアクセス頻度(基準アクセス頻度、基準値)と、当該エントリのアクセス頻度とを比較する。なお、各階層に対する基準アクセス頻度は、あらかじめ使用者等により指定されている。
この結果、アクセス頻度が基準アクセス頻度よりも大きい場合(S8010でYes)、ストレージ装置300は、階層の異なる実ボリューム間でページ移動を実行することを試みるために、処理をステップS8090に進める。一方、アクセス頻度が基準アクセス頻度よりも大きくない場合(S8010でNo)、ストレージ装置300は、処理をステップS8013に進める。
ステップS8090において、ストレージ装置300は、ソース階層よりも一つ上に階層があるか否かを判定する。この結果、ソース階層よりも一つ上位の階層がある場合(S8090でYes)、ストレージ装置300は、ターゲット階層を現在の階層よりも一つ上の階層に選定し(S8070)、処理をステップS8010に進める。
ストレージ装置300は、上述の処理(S8010、S8090、S8070等)を繰り返し行うことにより、エントリのアクセス頻度が、基準値よりも大きくならないターゲット階層を特定することができる。なお、ソース階層の一つに上位に階層がないと判定された場合(S8090でNo)、ストレージ装置300は、対応するページに対し、ページ移動を行わずに(S8120)、ステップS8025に処理を進める。このように、ソース階層の上位に階層が無い場合、すなわち、ソース階層が最も高い階層である場合、最も高い階層を使い続けるために、ストレージ装置300は、ソースエントリのページの移動を行わず、そのまま処理を継続する。
一方、ステップS8010において、ソースエントリのアクセス頻度311203のアクセス頻度が基準値以下である場合(S8010でNo)、ストレージ装置300は、ソース階層とターゲット階層とが同一か否かを判定する(S8013)。ソース階層とターゲット階層が同一であると判定された場合(S8013でYes)、ストレージ装置300は、ソースエントリが示すページは現状割当てられている記憶階層の基準値を満たしており、ソースエントリのページの移動は必要無いと判断し、処理をステップS8025に進める。
一方、ソース階層とターゲット階層とが同一でないと判定された場合(S8013でNo)、ストレージ装置300は、ソースエントリが示すページは現状割当てられている記憶階層の基準値を満たしておらず、ソースエントリのページの移動が必要であると判断し、ターゲット階層の実ボリュームの空き総容量を参照し、ターゲット階層に空きがあるか否か、すなわち、ターゲット階層にページ割当てが可能な実ボリュームが存在するか否かを確認する(S8015)。
この結果、ターゲット階層に空きが無い場合(S8015でNo)、ストレージ装置300は、ターゲット階層にソースエントリのアクセス頻度311203のアクセス頻度よりも低いアクセス頻度のエントリであって、かつ対応するページのロックフラグが、ロック中以外であるか否かを判定する(S8100)。
この結果、ターゲット階層にソースエントリのアクセス頻度311203の値よりも低いアクセス頻度のエントリが無い、又は、ターゲット階層にソースエントリのアクセス頻度311203よりも低いアクセス頻度のエントリはあるものの、当該エントリのページIDが示す論理ボリューム管理テーブル3111のエントリのロックフラグ311106がページロック制御中(ロック中)のものしか無い場合(S8100でNo)、ストレージ装置300は、ターゲット階層よりも一つ下位の階層をターゲット階層に選定し(S8107)、処理をステップS8013に進める。
一方、ターゲット階層にソースエントリのアクセス頻度311203の参照頻度よりも低いアクセス頻度のエントリがあり、かつ、当該エントリのページIDが示す論理ボリューム管理テーブル3111のエントリのロックフラグ311106がページロック制御中でない(ロック解除)場合(S8100でYes)、ストレージ装置300は、ソースエントリのページとターゲットエントリのページとの間でページの入れ替え、すなわち、ソースエントリのページのデータを、ターゲットエントリのページが格納されていた実ボリュームに格納する一方、ターゲットエントリのページのデータを、ソースエントリのページが格納されていた実ボリュームに格納する(S8110)。
一方、ステップS8015において、ターゲット階層へのページ移動が可能な空きのある実ボリュームが存在する場合(S8015でYes)、ストレージ装置300は、ターゲット階層の空きが存在する実ボリュームに対してページを移動する、すなわち、対応するページのデータを実ボリュームに対して格納する(S8020)。
ストレージ装置300は、ステップS8020、ステップS8110、又は、ステップS8120を実行した後、ソースエントリを次のエントリに変更する(S8025)。
次に、ストレージ装置300は、プール内のソース階層の全ソースエントリに対して判定処理を実行したかを確認し(S8030)、全ソースエントリに対して判定処理をしておらず未処理のエントリがある場合(S8030でNo)、ストレージ装置300は、処理をステップS8010に進めて、他のエントリに対する判定処理を実行する。一方、全ソースエントリに対して判定処理をしたことによりソース階層に未処理のエントリが無い場合(S8030でYes)、ストレージ装置300は、ソース階層よりも一つ上位の階層をソース階層に設定し(S8040)、当該ソース階層が、プールに登録された最上位の階層を上回ったか否かを判定する(S8050)。
この結果、ソース階層が最も高い階層を上回っていない、すなわち、ソース階層よりも一つ上位の階層が存在する場合(S8050でNo)、ストレージ装置300は、処理をステップS8010に進める。一方、設定された階層が最も高い階層を上回っている、すなわち、ソース階層よりも1階層高い階層が存在しない場合(S8050でYes)、ストレージ装置300は、プール内の全階層のプール内ページ管理テーブル3112におけるアクセス頻度311203のアクセス頻度を0にリセットして(S8130)、記憶階層制御処理を終了する。
図29は、第1実施形態に係るIO要求に基づく記憶階層制御処理のフローチャートである。
IO要求に基づく記憶階層制御処理は、階層記憶制御処理(図28)のステップS8200で行われる処理に対応する。IO要求に基づく記憶階層制御処理は、管理計算機100又はホスト計算機200の指示によりストレージ装置300において記憶階層制御処理が実行された場合に実行される。
記憶階層制御処理は定期的に実行される場合がある処理であるのに対し、IO要求に基づく記憶階層制御処理は、管理計算機100又はホスト計算機200による指示によって実行される処理である。IO要求に基づく記憶階層制御処理は、ページ単位に実行されることを例にして説明するが、IO要求のオプション領域に指定されたアドレス範囲に複数のページが含まれる場合、ストレージ装置300は、ページの個数分、本処理を繰り返し実行するようにしても良い。以下では、各プールにおけるIO要求に基づく記憶階層制御処理を説明する。
まず、ストレージ装置300は、IO要求600により指定された指示内容60002中の指示内容がページロック開始又はページロック解除であるか否かを判定する(S8210)。ここで、指示内容がページロック開始であるIO要求600は、例えば、ジョブの開始時に生成され、指示内容がページロック終了であるIO要求600は、例えば、ジョブの終了時に生成される。指示内容がページロック開始又は解除の場合(S8210でYes)、ストレージ装置300は、IO要求600の指示内容がページロック開始か否かを判定する(S8215)。指示内容がページロック開始の場合(S8215でYes)、ストレージ装置300は、IO要求600の宛先60001に指定されたページをページロックする。具体的には、ストレージ装置300は、宛先60001に指定された論理ボリュームの仮想アドレスに合致する論理ボリューム管理テーブル3111のエントリを特定し、当該エントリのロックフラグ311106にページロック制御中であることを示すフラグ(ロック中)を登録する。これにより、当該ページは、アクセス頻度に基づいた記憶階層制御処理(図28のステップS8010以降の処理)においては、階層が移動されない。なお、この状態は、ページロック解除がされるまで維持されることとなる。その後、ストレージ装置300は、IO要求に基づく記憶階層制御処理を終了する。
一方、指示内容60002がページロック解除の場合(S8215でNo)、ストレージ装置300は、IO要求600の宛先60001に指定されたページのページロックを解放する。具体的には、ストレージ装置300は、宛先60001に指定された論理ボリュームの仮想アドレスに合致する論理ボリューム管理テーブル3111のエントリを特定し、当該エントリのロックフラグ311106に格納されたページロック制御中であることを示すフラグを、ページロック解除を示すフラグ(ロック解除)を設定する。これにより、当該ページは、アクセス頻度に基づいた記憶階層制御処理(図28のステップS8010以降の処理)においては、階層が移動される可能性がある。その後、ストレージ装置300は、IO要求に基づく記憶階層制御処理を終了する。
一方、ステップS8210の判定の結果、指示内容が、ページロック開始でも、ページロック解除でもない場合(S8210でNo)、ストレージ装置300は、指示内容がページ移動であり、かつ、IO要求600で指定されたページが現在割当てられている階層よりもIO要求600で指定された階層が下位であるか否かを判定する(S8220)。ここで、IO要求600に指定されたページが割当てられた記憶階層を取得するために、ストレージ装置300は、以下のような処理を行う。すなわち、ストレージ装置300は、IO要求600に指定されたアドレスに対応する論理ボリューム管理テーブル3111のエントリを参照し、当該エントリのページID311104のページIDに基づいて、プール内ページ管理テーブル3112のエントリを参照する。さらに、ストレージ装置300は、当該エントリの実ボリュームIDに基づいて、実ボリューム管理テーブル3113のエントリを参照し、当該エントリの階層を取得する。
この結果、現在割当てられている記憶階層よりも下位の記憶階層へのページ移動である場合(S8220でYes)、ストレージ装置300は、IO要求600に指定されたページを割当てる記憶階層に空き実ボリュームがあるか否かを判定する(S8240)。具体的には、ストレージ装置300は、実ボリューム管理テーブル3113のIO要求600に指定されたページを割当てる記憶階層のエントリの総空き容量311305の総空き容量を取得する。そして、ストレージ装置300は、得られた総空き容量に基づいて該当する記憶階層にページを割当て可能か否かを判定する。
この結果、該当する記憶階層に新たにページの割当てが可能と判定された場合(S8240でYes)、ストレージ装置300は、IO要求600で指定されたページが示す仮想アドレスのデータについて現在の記憶階層から指定された記憶階層へページ移動を行う(S8295)。
一方、該当する記憶階層に新たにページの割当てができないと判定された場合(S80240でNo)、ストレージ装置300は、IO要求600で指定されたページと、当該ページの移動先の記憶階層に存在するページとの入れ替えを実施するための処理を行う。ここで、ページの移動先の記憶階層から選出するページ(選出ページ)は、当該記憶階層の中で最もアクセス頻度の高いページである。これは、選出ページが入れ替えにより移動する記憶階層は、選出ページが現在割当てられている記憶階層よりも上位の記憶階層となるため、移動先である上位の記憶階層の高い性能を有効に活用する狙いがある。
具体的には、ストレージ装置300は、プール内ページ管理テーブル3112のエントリのうち、実ボリュームIDが示す実ボリュームの階層がIO要求600で指定されたページ移動先の階層と合致する1以上のエントリを特定する。次に、ストレージ装置300は、特定した各エントリのアクセス頻度を参照し、そのアクセス頻度が最大のエントリ、すなわちページを選出する(S8250)。次に、ストレージ装置300は、IO要求600で指定されたページとステップS8250で選出したページとの記憶領域を入れ替える(S8260)。入れ替え完了後、ストレージ装置300は、IO要求に基づく記憶階層制御処理を終了する。
一方、ステップS8220において、現在の記憶階層よりも下位の記憶階層へのページ移動ではないと判断された場合(S8220でNo)、ストレージ装置300は、ストレージ装置300は、IO要求600の指示内容60002の指示内容がページ移動であり、かつ、IO要求600で指定されたページが現在割当てられている記憶階層よりもIO要求600で指定された記憶階層が上位であるか否かを判定する(S8230)。このステップS8230の判定においても、ストレージ装置300は、ステップS8220で実施した判定と同様の手順で、IO要求600で指定されたページが上位記憶階層へのページ移動であるか否かを判定する。
この結果、現在の記憶階層よりも上位の記憶階層へのページ移動であると判定された場合(S8230でYes)、ストレージ装置300は、IO要求600に指定されたページを新たに割当てる記憶階層の総空き容量を、ステップS8240と同様の手順で取得し、得られた総空き容量に基づいて該当する記憶階層に新たなページの割当てが可能か否か、すなわち、空き実ボリュームがあるか否かを判定する(S8270)。
この結果、該当する記憶階層に新たなページの割当てが可能であると判定された場合(S8270でYes)、ストレージ装置300は、IO要求600で指定されたページが示す仮想アドレスのデータについて現在の記憶階層から指定された記憶階層へページ移動を行う(S8295)。その後、ストレージ装置300は、IO要求に基づく記憶階層制御処理を終了する。
一方、該当する記憶階層に新たなページの割当てができないと判定された場合(S8270でNo)、ストレージ装置300は、IO要求600で指定されたページと当該ページの移動先階層のページ(例えば、1ページ)との入れ替えを行うための処理を実行する。ここで、ページの移動先階層から選出されるページ(選出ページ)は、当該記憶階層の中で最もアクセス頻度の低いページである。これは、選出ページが入れ替えにより新たに割当てられる記憶階層が、現在選出ページが配置されている記憶階層よりも下位の記憶階層になるため、移動先の下位の記憶階層の低い性能でも十分にその記憶階層を活用できるようにすることを意図している。
具体的には、ストレージ装置300は、プール内ページ管理テーブル3112のエントリのうち、実ボリュームIDが示す実ボリュームの階層がIO要求600で指定された移動先の階層と合致する1以上のエントリを特定する。次に、ストレージ装置300は、各エントリのアクセス頻度311203を参照し、そのアクセス頻度が最小のものを選出する(S8280)。次に、ストレージ装置300は、IO要求600で指定されたページと、ステップ8280で選出したページとの記憶領域の入れ替えを行う(S8290)。その後、ストレージ装置300は、IO要求に基づく記憶階層制御処理を終了する。
一方、ステップS8230において、現状の記憶階層よりも上位の記憶階層へのページ移動ではないと判定された場合(S8230でNo)、ストレージ装置300は、IO要求600の階層制御指示がボリューム階層情報取得であるとして、IO要求600が指定した論理ボリュームの階層配置情報を取得し、IO要求600の要求元に返送する(S8232)。具体的には、ストレージ装置300は、IO要求600の宛先60001で指定される論理ボリュームが指す論理ボリューム管理テーブル3111のエントリを参照し、仮想アドレスを取得する。次に、ストレージ装置300は、当該エントリのプールID及びページIDによって識別されるプール内ページ管理テーブル3112のエントリを参照し、実ボリュームIDを取得する。さらに、ストレージ装置300は、プールID及び実ボリュームIDによって識別される実ボリューム管理テーブル3113のエントリを参照し、階層を取得する。そして、ストレージ装置300は、取得した仮想アドレス及び階層をIO要求600の要求元に返送する。その後、ストレージ装置300は、IO要求に基づく記憶階層制御処理を終了する。
以上のように、IO要求に基づく記憶階層制御処理をストレージ装置300で実施することで、管理計算機100又はホスト計算機200の指示に基づいて、ストレージ装置300上の記憶階層をページ単位で制御することが可能となる。
次に、準備段階及び運用段階の2段階でホスト計算機200が行う処理を説明する。
まず、準備段階におけるホスト計算機200の処理を説明する。
図31は、第1実施形態に係るホスト計算機の準備段階の準備処理のフローチャートである。
準備処理は、ホスト計算機200のプロセッサ220が、ユーザ設定情報入力プログラム2103、ジョブ制御情報取得プログラム2104、ページ制御プログラム2105及びページ割当て状態監視プログラム2106を実行することにより、実行される。
ホスト計算機200は、ユーザ設定情報入力プログラム2103に基づいて、計算機システム10上に存在するストレージ装置300を検出する(S10010)。ストレージ装置300を検出するための情報としては、例えば、ホスト計算機200の使用者により入出力部250により入力されるストレージ装置300のIPアドレスを使用することができる。IPアドレスの入力方法としては、例えば、192.168.1.1〜192.168.1.50のように、IPアドレスの範囲を入力するようにしても良いし、特定のIPアドレスを入力するようにしても良い。
ホスト計算機200は、ストレージ装置300の構成情報の取得用のIO要求600を作成し、作成されたIO要求600を、入力されたIPアドレス宛に送信する。構成情報取得用のIO要求600を受信した場合、ストレージ装置300は、メモリ310に記憶される論理ボリューム管理テーブル3111及びストレージ基本情報3110を参照し、それらに格納されている各種情報をまとめてホスト計算機200に返送する。ホスト計算機200は、返送のあったストレージ装置300を、記憶階層制御の管理対象のストレージ装置300であると判定する。
次に、ホスト計算機200は、ジョブ制御情報取得プログラム2104に基づいて、OS2101からジョブに関する情報を取得し、ジョブ情報管理テーブル2111を作成する(S10020)。具体的には、ホスト計算機200は、OS2101からジョブ名、実行状態、優先度、及びデータセット名を取得し、取得した情報を、それぞれジョブ名211101、実行状態211102、優先度211103及びデータセット名211104に格納したエントリを作成してジョブ情報管理テーブル2111に格納する。さらに、ホスト計算機200は、OS2101からデータセットに関する情報を取得し、データ構成管理テーブル2112を作成する。具体的には、ホスト計算機200は、OS2101より、データセット名、格納デバイス名、仮想アドレス、ストレージID及び論理ボリュームIDを取得し、取得した情報を、それぞれデータセット名211201、格納デバイス名211202、仮想アドレス211203、ストレージID211204及び論理ボリュームID211205に格納したエントリを作成して、データ構成管理テーブル2112に格納する。
次に、ホスト計算機200は、ページ割当て状態監視プログラム2106に基づいて、ステップS10010で特定したストレージ装置300に対して、記憶階層の情報取得用のIO要求600を作成し、IO要求600を当該ストレージ装置300に送信する。記憶階層の情報取得用のIO要求600を受信した場合、ストレージ装置300は、メモリ310に記憶される論理ボリューム管理テーブル3111、プール内ページ管理テーブル3112及び実ボリューム管理テーブル3113を参照し、ページ及び記憶階層の使用状況に関する情報をホスト計算機200に返送する。ホスト計算機200は、ストレージ装置300から返送があるものに対し、この返送に含まれる情報に基づいて、ページ構成管理テーブル2113及び階層利用状況管理テーブル2114を作成する(S10030)。
具体的には、ホスト計算機200は、IO要求600の宛先60001に指定したストレージIDをページ構成管理テーブル2113のストレージID211301に格納する。また、ホスト計算機200は、論理ボリューム管理テーブル3111の論理ボリュームID311102の論理ボリュームID(実際には、返送に含まれる情報中の対応する内容)を、論理ボリュームID211302に格納し、ページID311104のページIDをページID211303に格納し、仮想アドレス311103の仮想アドレスを仮想アドレス211304に格納する。また、ホスト計算機200は、IO要求600の宛先60001に指定したストレージIDを階層利用状況管理テーブル2114のストレージID211401に格納する。また、ホスト計算機200は、実ボリューム管理テーブル3113の階層311303に存在する値を階層211402に格納し、階層211402に合致する実ボリューム管理テーブルエントリの総容量311304の合計値を全体容量211403に格納し、当該実ボリューム管理テーブルエントリの容量のうち、ページロック済みの容量の合計値をページロック済み容量211404に格納する。
次に、ホスト計算機200は、ユーザ設定情報入力プログラム2103に基づいて、入出力部250を介して、ユーザからの入力を受け付け、ユーザ設定情報管理テーブル2110を作成する(S10040)。具体的には、ホスト計算機200は、ユーザから制御対象となるジョブ名、データセット名、及び性能要件の入力を受け付けて、ユーザ設定情報管理テーブル2110に新たなエントリを追加して、受け付けた各情報を、ジョブ名211001、データセット名211002、性能要件種別211003及び性能要件211004に格納する。
ここで、入出力部250を介してのユーザからの入力の受付は、例えば、図32に示す画面260によってなされる。画面260には、ユーザにより設定可能な項目として、アプリケーションを実行するジョブ名、アプリケーションが使用するデータセット名、当該データセットに対する性能要件の種別及び性能要件がある。性能要件の種別には、例えば、対応するデータを格納すべき記憶階層、データアクセスの応答時間又は単位時間当たりのアクセス回数等がある。なお、これ以外に間接的に性能要件を指定するようにしても良い。
次に、ホスト計算機200は、ページ制御プログラム2105及びページ割当て状態監視プログラム2106に基づいて、制御対象ページ管理テーブル2115を作成する(S10050)。具体的には、ホスト計算機200は、ページ制御プログラム2105に基づいて、ユーザ設定情報管理テーブル2110及びジョブ情報管理テーブル2111から制御対象となるジョブとデータセットの組みを特定する。次に、ホスト計算機200は、データ構成管理テーブル2112及びページ構成管理テーブル2113から当該データセットのデータを記憶しているページを特定する。そして、ホスト計算機200は、制御対象ページ管理テーブル2115に新たなエントリを追加する。さらに、ホスト計算機200は、ページ構成管理テーブル2113のストレージID211301のストレージIDをストレージID211501に格納し、論理ボリュームID211302の論理ボリュームIDを論理ボリュームID211502に格納し、ページID211303のページIDをページID211503に格納する。また、ホスト計算機200は、ユーザ設定情報管理テーブル2110のジョブ名211001のジョブ名をジョブ名211505に格納し、データセット名211002のデータセット名をデータセット名211506に格納する。そして、ホスト計算機200は、ページ割当て状態監視プログラム2106に基づいて、ページID211503が示すページを割当てている階層をストレージ装置300から取得し、階層211504に格納する。
次に、運用段階におけるホスト計算機200の動作を説明する。
運用段階では、実行されるジョブの状態の変化(例えば、ジョブの実行、ジョブの優先度の変更、ジョブの終了)により、ホスト計算機200は、ページ制御プログラム2105に基づいて、ジョブの優先度に基づく記憶階層制御処理を実行する。具体的には、ホスト計算機200は、OS2101や、アプリケーション2102を実行しているジョブ、の状態の変更を検知した場合、ジョブ制御情報取得プログラム2104に基づいて、ジョブ情報管理テーブル2111の情報を更新する。次に、ホスト計算機200は、ページ制御プログラム2105に基づいて、メモリ210に記憶される各種テーブルの情報を参照し、ジョブの優先度及びユーザが指定した性能要件を考慮したページの移動先の記憶階層を決定する。そして、ホスト計算機200は、決定した移動先の記憶階層へのページ移動を指示するためのIO要求600を作成し、作成したIO要求600をストレージ装置300へ送信する。一方、ページ移動を指示するIO要求600を受信したストレージ装置300は、IO要求600の指示内容60002の指示内容に基づき、記憶階層制御処理を行う。
次に、ホスト計算機200がページ制御プログラム2105に基づいて実行する記憶階層制御処理を説明する。
図33は、第1実施形態に係るジョブの優先度に基づく記憶階層制御処理のフローチャートである。
まず、ホスト計算機200は、制御対象ページ管理テーブル2115を参照し、各制御対象ページに対して、当該ページにアクセスしている実行中のジョブの性能要件を満たす記憶階層を特定し、特定した記憶階層を当該ページの移動先の記憶階層(移動先階層)に選定する(S11010)。これは、実行中のジョブに関して、性能要件を考慮することで、実行中のジョブの使用するデータが存在するページを上位の記憶階層にページ移動し、高い性能を持つ上位の記憶階層を効率的に使用することを意図している。具体的には、ホスト計算機200は、制御対象ページ管理テーブル2115のエントリのジョブ名及びデータセット名に合致するエントリ(ユーザ設定情報エントリ)を、ユーザ設定情報管理テーブル2110から取得する。次に、ホスト計算機200は、ジョブ情報管理テーブル2111のジョブID211101及び実行状態211102を参照し、ユーザ設定情報エントリからジョブ名211001のジョブ名が示すジョブが、実行中であるエントリを特定する。さらに、ホスト計算機200は、特定したユーザ設定情報エントリの性能要件種別211003及び性能要件211004の値から性能要件を満たす階層を特定する。そして、ホスト計算機200は、同一のページにアクセスしている1又は複数のジョブの性能要件を満たす階層の中から最も高い階層を特定し、特定した階層を当該ページの移動先階層に選出する。
本実施形態では、ホスト計算機200は、各制御対象ページの移動先階層を、当該ページにアクセスするジョブの性能要件から選定する。このため、ある階層を移動先階層とするページ数が当該階層から割当てることのできるページ数を超える場合がある。具体的には、移動先階層とするページの総ページサイズに比べて、移動先階層のページロック可能な容量が不足する場合である。ここで、ページロック可能な容量とは、制御対象ページに対して割当てることのできる記憶領域の容量である。このような場合、ホスト計算機200は、以下に示すステップS11020以降の処理を実行して、ページにアクセスするジョブの優先度に基づき、当該階層に移動するページを選別する。
すなわち、ホスト計算機200は、ページ移動によるページロック済み容量の増加量がページロック可能な容量を超える階層が存在するか否か、つまり、ページロック可能な容量の不足する階層が存在するか否か判定する(S11020)。具体的には、ホスト計算機200は、各記憶階層について、ページ移動により新たに当該階層からページ割当てが行われるページ数と、当該階層からページ割当てが解除されるページ数とを特定する。次に、ホスト計算機200は、これらページ数の差分からページ移動によるページロック済み容量の増加量を特定する。また、ホスト計算機200は、階層利用状況管理テーブル2114の対応する階層の全体容量とページロック済み容量との差分からページロック可能な残り容量を特定する。そして、ホスト計算機200は、特定したページロック済み容量の増加量と、ページロック可能な残り容量とを比較し、ページロック可能な容量が不足する階層が存在するか否か判定する。
この結果、ページロック可能な容量が不足する階層が存在する場合(S11020でYes)、ホスト計算機200は、ステップS11020で特定したページロック可能な容量の不足する階層に対して、当該階層を移動先階層とするページの順位付けを行うページ順位付け処理(図34参照)を実行し(S11040)、処理をステップS11050に進める一方、ページロック可能な容量の不足する階層が存在しない場合(S11020でNo)、ホスト計算機200は、選定した移動先階層に各ページを移動できると判定し、処理をステップS11900に進める。
ステップS11050において、ホスト計算機200は、ページ順位付け処理により順位付けがなされた複数のページから最高順位のページと最低順位のページとを特定する。次に、ホスト計算機200は、ステップS11020で特定したページロック可能な容量の不足する階層よりも1階層上位の階層が存在するか否か判定する(S11052)。
この結果、ページロック可能な容量の不足する階層よりも1階層上位の階層が存在する場合(S11052でYes)、ホスト計算機200は、この1階層上位の階層を、ステップS11050で特定した最高順位のページに対する新たな移動先階層の候補に選定し(S11055)、処理をステップS11070に進める。ここで、最高順位のページに対する新たな移動先階層の候補に選定した階層を順位付け対象階層と呼ぶ。
一方、ページロック可能な容量の不足する階層よりも1階層上位の階層が存在しない場合(S11052でNo)、ページロック可能な容量の不足する階層に移動するページ数を減少させるため、ホスト計算機200は、ステップS11050で特定した最低順位のページの移動先階層を1階層下位の階層に選定し(S11130)、処理をステップS11020に進める。
ステップS11070において、ホスト計算機200は、順位付け対象階層にページロック可能な容量が存在するか否か判定する。具体的には、ホスト計算機200は、階層利用状況管理テーブル2114の順位付け対象階層に対応するエントリを参照し、全体容量及びページロック済み容量から当該順位付け対象階層に新たにページロック可能な容量が存在するか否かを判定する。
この結果、ページロック可能な容量が存在する場合(S11070でYes)、ホスト計算機200は、ステップS11050で特定した最高順位のページの移動先階層を順位付け対象階層に選定し(S11120)、処理をステップS11020に進める。一方、ページロック可能な容量が存在しない場合(S11070でNo)、ホスト計算機200は、順位付け対象階層をページの移動先階層とするページと、ステップS11050で特定した最高順位のページとを含むページの順位付けを行うページ順位付け処理を実行し(S11080)、処理をステップS11090に進める。
ステップS11090において、ホスト計算機200は、ステップS11050で特定した最高順位のページよりも順位の低いページが順位付け対象階層に存在するか否か判定する。具体的には、ホスト計算機200は、ステップS11080で特定した順位付け対象階層における最低順位のページが、ステップS11050で特定した最高順位のページであるか否か判定する。順位付け対象階層における最低順位のページがステップS11050で特定した最高順位のページでない場合、ホスト計算機200は、ステップS11050で特定した最高順位のページよりも順位の低いページが順位付け対象階層に存在すると判断する(S11090でYes)。このとき、ホスト計算機200は、順位付け対象階層における最低順位のページと、ステップS11050で特定した最高順位のページとのページ移動先階層を交換し(S11110)、処理をステップS11020に進める。
一方、順位付け対象階層における最低順位のページがステップS11050で特定した最高順位のページである場合、ホスト計算機200は、ステップS11050で特定した最高順位のページよりも順位の低いページが順位付け対象階層に存在しないと判断する(S11090でNo)。このとき、ホスト計算機200は、さらに上位の記憶階層に対して、ページロック可能な容量又は順位の低いページが存在するか否か判定するため、順位付け対象階層よりも上位階層が存在するか否か判定する(S11060)。
この結果、順位付け対象階層よりも上位階層が存在する場合(S11060でYes)、ホスト計算機200は、順位付け対象階層を1階層上位に選定し(S11065)、処理をステップS11070に進める。一方、順位付け対象階層よりも上位階層が存在しない場合(S11060でNo)、ページロック可能な容量の不足する階層に移動するページ数を減少させるため、ホスト計算機200は、ステップS11050で特定した最低順位のページの移動先階層を1階層下位の階層に選定し(S11130)、処理をステップS11020に進める。
ステップS11900において、ホスト計算機200は、選定した移動先階層にページを移動させるため、IO要求に基づく記憶階層制御指示用のIO要求600を作成する。ここで、ステップS11010からステップS11130までの処理において、ホスト計算機200は、ページ単位でページ移動先階層を選定する。このため、複数データセットが存在するページを移動する場合、ページ単位の記憶階層制御の指示により、個々のデータセットによる指示に比べて、ホスト計算機200が作成するIO要求600の個数を削減できる。さらに、ホスト計算機200は、ページ移動先階層が同一、かつページIDが連続している複数のページに対して、個別にIO要求600を作成するのではなく、それら連続するページIDを範囲とするIO要求600に指定することで、作成するIO要求600の個数を削減するようにしている。例えば、ページ1、ページ2、ページ3、ページ4をいずれも最も高い階層(高性能の階層)にページ移動を行う場合を考える。ここで、個別にページを指定すると、ホスト計算機200は、IO要求600を4つ作成することになる。一方、ページ1からページ4までというように、ページを範囲として指定することで、ホスト計算機200は、IO要求600を一つのみ作成するだけで良くなる。次に、ホスト計算機200は、作成したIO要求600をストレージ装置300に送信する。
このようなジョブの優先度に基づく記憶階層制御処理により、ユーザの指定した性能要件を満たす階層にページを移動することができる。また、移動先階層の容量不足によって、全てのページを、ユーザが指定した性能要件を満たす階層に移動できない場合でも、ジョブの優先度に基づいてページの移動先階層を決定することにより、優先度の高いジョブがアクセスするページから優先的にユーザの指定した性能要件を満たす階層に移動できる。
次に、ジョブの優先度に基づく階層記憶制御処理(図29)のステップS11040及びステップS11080に対応するページ順位付け処理について説明する。
まず、ページ順位付け処理の概要を説明する。
ここで、ページの順位とは、ページロック可能な容量が不足する階層が存在する場合に、どのページを優先して当該階層に移動させるかを判断するための基準値である。
ページ順位付け処理では、ホスト計算機200は、ユーザが指定した性能要件を高優先度のジョブから優先的に満たせるよう、ページにアクセスするジョブ(言い換えれば、ページにデータが格納されているジョブ)の優先度が高いほど、当該ページを高い順位のページと判定する。具体的には、まず、ホスト計算機200は、ページにアクセスする高優先度のジョブを特定し、特定したジョブをユーザが指定した性能要件を満たす階層ごとに分類する。次に、ホスト計算機200は、最も高い階層から順位付け対象の階層まで順番に、分類したジョブの個数を比較し、高い階層におけるジョブの個数が多いページから高い順位のページと判定する。ここで、順位付け対象の階層以上の階層についてジョブの個数を比較するのは、少なくとも順位付け対象の階層が示す性能を必要とするジョブの個数によってページの順位付けを行う意図がある。順位付け対象の階層が示す性能を必要とするジョブとは、具体的には、順位付け対象の階層よりも下位の階層では、ユーザが指定した性能要件を満たせないジョブを指す。なお、ホスト計算機200は、順位付け対象の階層よりも下位の階層にページが移動しても、ユーザが指定した性能要件を満たせるジョブに関しては、順位付け対象の階層が示す性能を必要としないジョブと判断し、当該ジョブをページの順位付けで考慮しない、すなわち、ページの順位付けの対象としない。このように、順位付け対象の階層が示す性能を必要するジョブのみをページの順位付けで考慮することで、上位階層の高い性能を有効に活用することができる。また、各階層のジョブの個数を比較する場合において、全ての階層でジョブの個数が同一となるページが複数存在する場合がある。この場合、ホスト計算機200は、高優先度のジョブの個数の比較では、これらページの順位付けができないと判断して、カウント対象とするジョブの優先度を1段階下げて、再度、各階層のジョブの個数を比較する。これは、はじめに高優先度のジョブについて、ジョブの個数を比較することで、高優先度のジョブがアクセスするページを高い順位とすることを意図している。なお、ホスト計算機200は、全てのページの順位付けが完了するまで、ジョブの優先度を1段階下げてジョブの個数を比較する処理を繰り返す。
このページ順位付け処理により、どのようにページの順位が判定され、ページが移動されるのかについて具体例を挙げて説明する。
図35Aは、第1実施形態に係るページ順位付け処理を説明する第1の図である。図35Bは、第1実施形態に係るページ順位付け処理を説明する第2の図である。
図35Aは、3つのジョブ(ジョブ1、ジョブ2、及びジョブ3)が実行中である場合に、ジョブ4が投入されたときの、ページ順位付け処理の様子を示している。具体的には、高優先度のジョブについて、ページにアクセスするジョブの個数を比較する様子を示している。また、図35Bは、ページ順位付け処理の結果に基づき、ページを移動する様子を示している。具体的には、図35Bは、図35Aに示すように高優先度のジョブについてのジョブ個数の比較によってページの順位を判定できないため、低優先度のジョブについての個数の比較によってページの順位を判定する様子を示している。また、図35Bは、ページの順位に基づいて、ページ移動を行う様子も示している。ここで、ページ1には、データ1及びデータ2が存在し、ページ2には、データ3及びデータ4が存在し、また、ページを割当て可能な領域は、高性能な実ボリューム及び低性能な実ボリュームにそれぞれ1ページ分のみ存在するものとする。なお、図35A及び図35Bでは、説明のため、ジョブの優先度は、高優先度及び低優先度の2種類であり、階層は、高性能及び低性能の2種類であるものとする。
図35Aに示すように、ジョブ1、ジョブ2及びジョブ3が実行中、かつページ1が高性能な実ボリュームに、ページ2が低性能な実ボリュームに割当てられているものとする。ここで、ジョブ4が投入されると、ホスト計算機200は、ジョブ4がアクセスするデータを格納するページ(ページ2)を特定する。次に、ホスト計算機200は、特定したページ2が現在割当てられている実ボリューム(低性能な実ボリューム)よりも上位の実ボリュームにページ移動する必要があるか否かを判定する。具体的には、ホスト計算機200は、ページに存在するデータの性能要件から最も高い性能要件を特定し、現在割当てられている実ボリュームで当該性能要件を満たせるか判定する。例えば、図35Aでは、ホスト計算機200は、ジョブ4がアクセスするデータ4の性能要件が「高性能」であるため、ページ2を低性能な実ボリュームから高性能な実ボリュームに移動する必要があると判定する。
次に、ホスト計算機200は、移動先階層の領域をページに新たに割当てることができるか確認し、割当てることができない場合に、ページの順位付けを行って、移動先階層から別の階層へ移動させるページを特定する。例えば、図35Aでは、ジョブ4の投入により、ページ2を高性能な実ボリュームに移動させようとするが、高性能な実ボリュームの領域がページ1に割当てられており、当該実ボリュームの領域を新たにページに割当てることができない。このため、ページ1及びページ2の順位付けを行い、どちらのページを別の実ボリューム(図35Aでは、低性能な実ボリュームのみ)に移動させるかを決定する。
まず、ホスト計算機200は、高優先度のジョブについて、ページにアクセスするジョブの個数を比較する。例えば、図35Aでは、ページ1には、高優先度のジョブが2つ、ページ2には、高優先度のジョブが1つ、それぞれアクセスしている。ここで、上述のように、ページ順位付け処理では、高い性能要件が指定されたジョブから順にジョブの個数を比較する。例えば、図35Aでは、ページにアクセスするジョブのうち、高優先度、かつ高性能の性能要件を持つジョブは、ページ1ではジョブ1、ページ2ではジョブ4、であり、ジョブの個数は同数である。このため、ホスト計算機200は、1段階下位の性能要件について、ジョブの個数を比較して、高性能な実ボリュームから低性能な実ボリュームへ移動させるページを決定するためにページの順位付けを行っている。この際に、低性能な実ボリュームに移動させても、性能要件を満たせるジョブ(ジョブ2)については、考慮しない。この結果、高優先度のジョブの個数を比較しても、ページ1及びページ2の順位付けはできない。そこで、図35Bに示すように、低優先度のジョブの個数を比較することとなる。
次に、ホスト計算機200は、低優先度のジョブについて、上述と同様に、高い性能要件を指定されたジョブから順にジョブの個数を比較する。図35Bでは、ページ1には、低優先度のジョブがアクセスしておらず、ページ2には、低優先度のジョブ3がアクセスしている。ここで、ページ2にアクセスするジョブ3は、高性能の性能要件を持っているため、ホスト計算機200は、ページ2は、ページ1よりも高い順位と判定する。そして、ホスト計算機200は、ページの順位に基づき、順位の高いページ2は高性能の実ボリュームへ移動し、順位の低いページ1は低性能の実ボリュームに移動させる。
このように、ページの順位付け処理では、高優先度のジョブが多くアクセスするページほど、高い順位のページと判定する。また、同優先度のジョブでは、高い性能要件を指定されたジョブがアクセスするページほど、高い順位のページと判定する。
図34は、第1実施形態に係るページ順位付け処理のフローチャートである
まず、ホスト計算機200は、各ページについて、特定したジョブを優先度及びユーザが指定した性能要件を満たす階層毎に、当該ページにアクセスするジョブを分類する(S12005)。具体的には、ホスト計算機200は、制御対象ページ管理テーブル2115のジョブ名211505のジョブ名に合致するエントリを、ジョブ情報管理テーブル2111から取得する。次に、ホスト計算機200は、取得したエントリからジョブの実行状態211102が実行中を示すエントリを特定することで、ページにアクセスするジョブを特定する。そして、ホスト計算機200は、ユーザ設定情報管理テーブル2110の対応するジョブのエントリを参照し、ユーザが当該ジョブに指定する性能要件種別及び性能要件を取得し、これら情報からユーザが当該ジョブに指定する性能要件を満たす階層を特定する。例えば、性能要件種別211003が階層を示す場合、ホスト計算機200は、性能要件211004が示す階層を当該ジョブの性能要件を満たす階層と特定する。また、性能要件種別211003が応答時間を示す場合、ホスト計算機200は、性能要件211004が示す応答時間の要件と、各階層の特性情報(性能情報)とを比較し、応答時間の要件以内にデータアクセス処理を完了できる最も低い階層を当該ジョブの性能要件を満たす階層と特定する。そして、ホスト計算機200は、優先度及び特定した階層によって当該ジョブを分類し、優先度及び階層ごとにジョブの個数を特定する。
次に、ホスト計算機200は、ページにアクセスするジョブの優先度から最も高い優先度を特定し、ジョブの個数を比較するときに基準となる優先度(以下、同図の処理の説明において基準優先度という)に選定する(S12010)。
次に、ホスト計算機200は、ページにアクセスするジョブの性能要件を満たす階層から最も高い階層を特定し、ジョブの個数を比較するときに基準となる階層(以下、同図の処理の説明において基準階層という)に選定する(S12020)。
次に、ホスト計算機200は、ステップS12005の処理で特定したページにアクセスするジョブのうち、基準優先度と基準階層に合致するジョブの個数を比較し、ジョブの個数が最大のページを特定し、特定したページが複数存在するか否か判定する(S12040)。ページが複数存在する場合(S12040でYes)、ホスト計算機200は、当該ページについて、条件を変更してジョブの個数を比較するために、処理をステップS12050に進める一方、ページが複数存在しない場合(S12040でNo)、当該ページを順位付けしていないページの中で最も高い順位のページと判定し(S12090)、処理をステップS12100に進める。
ステップS12050において、ホスト計算機200は、基準階層が順位付け対象階層であるか否かを判定する。基準階層が順位付け対象階層である場合(S12050でYes)、ホスト計算機200は、順位付け対象階層が示す性能を必要するジョブに関して、ジョブの個数を比較し終えたと判断し、処理をステップS12070に進める一方、基準階層が順位付け対象階層でない場合(S12050でNo)、基準階層を1階層下位に選定し(S12060)、処理をステップS12040に進める。
ステップS12070において、ホスト計算機200は、S12005で特定したジョブの優先度から最も低い優先度を特定し、特定した優先度と基準優先度を比較する。特定した優先度が基準優先度よりも低い場合(S12070でYes)、ホスト計算機200は、基準優先度を1段階低い優先度に選定し(S12080)、処理をステップS12020に進める一方、特定した優先度が基準優先度以上である場合(S12070でNo)、優先度及び階層で分類したジョブの個数によって、当該ページ間の順位付けを判定できないと判断し、これらのページを同順位と判定する(S12090)。なお、ホスト計算機200がジョブの優先度とユーザにより指定される性能要件によって、当該ページ間の順位付けを判定できないと判断しても、間接的なジョブの実行性能に関する情報(ユーザがOS2101に指定するジョブの終了時刻及び現在時刻から算出するジョブの残り実行時間、ユーザがOS2101に指定するジョブの実行速度)により、ページの順位付けを行っても良い。
次に、ホスト計算機200は、順位付けの対象となるページ全てに対して順位付けを完了した否かを判定する(S12100)。順位付けを完了していない場合(S12100でNo)、ホスト計算機200は、処理をステップS12010に進める一方、順位付けを完了した場合(S12100でYes)、ページ順位付け処理を終了する。
以上のように、ページ順位付け処理では、ページに対してアクセスを行うジョブに、高優先度のジョブが多いほど、当該ページを高い順位と判定する。また、ページに対してアクセスを行うジョブとして同優先度のジョブがある場合には、高い性能要件を指定されたジョブが多いほど、当該ページを高い順位と判定する。これにより、高優先度のジョブが多くアクセスするページほど、ジョブの性能要件を満たす階層に優先的に移動することができる。
次に、管理計算機100の動作を説明する。
管理計算機100は、ホスト計算機200と同様に、準備段階と運用段階の2段階で処理を行う。基本的に、管理計算機100は、ストレージ装置300に指示を出す場合、ホスト計算機200のメモリ210に展開される各種プログラムに対して指示を出す。一方、ホスト計算機200は、当該指示に基づいて、上述の各種処理を実行することにより、記憶階層制御の指示等を含むIO要求600を作成し、ストレージ装置300に送信する。また、ホスト計算機200は、OS2101やアプリケーションの状態の変更を検知した場合、その検知内容を管理計算機100に通信ネットワーク550を介して通知する。ホスト計算機200から検知内容を通知された管理計算機100は、検知内容にしたがって、ホスト計算機200又はストレージ装置300に指示を発行し、当該機器を制御する。なお、基本的には、管理計算機100は、ホスト計算機200を介してストレージ装置300に記憶階層制御の指示を行うが、管理計算機100が直接ストレージ装置300に記憶階層制御の指示を行うようにしても良い。
管理計算機100のメモリ110には、上述のように、ホスト計算機200のメモリ210に記憶される各種プログラム及びテーブルと同様の役割を持つ各種プログラム及びテーブルが記憶されている。ホスト計算機200のメモリ210に記憶されるプログラムを「aaaプログラム」とし、テーブルを「aaa管理テーブル」としていたが、これら各種プログラム及びテーブルと同様の役割を持つ権利計算機100のメモリ110に記憶されるプログラムを「集中aaaプログラム」とし、テーブルを「aaa集中管理テーブル」としている。
まず、準備段階における管理計算機100の動作を説明する。
管理計算機100は、集中ページ制御プログラム1103に基づいて、計算機システム10上に存在するホスト計算機200を検出する。ホスト計算機200を検出するための情報としては、例えば、管理計算機100の使用者により入出力部150により入力されるホスト計算機200のIPアドレスを使用することができる。IPアドレスの入力方法としては、例えば、192.168.1.1〜192.168.1.50のように、IPアドレスの範囲を入力するようにしても良いし、特定のIPアドレスを入力するようにしても良い。
次に、管理計算機100は、ホスト計算機200用の情報取得要求を作成し、当該情報取得要求を通信ネットワーク550を介して入力されたIPアドレス宛てに送信する。ホスト計算機200は、情報取得要求を受信し、この情報取得要求に対応するホスト計算機200に関する情報を管理計算機100に返信する。管理計算機100は、返信があったホスト計算機200について、返信された情報に基づいて、ホスト計算機管理テーブル1110を作成する。次に、管理計算機100は、ホスト計算機200の準備段階における準備処理(図31)と同様な処理を行い、メモリ110に記憶される各種テーブルを作成する。なお、管理計算機100は、返信があった複数のホスト計算機200を対象に各種情報を取得する。例えば、ステップS10020では、管理計算機100は、返信があった複数のホスト計算機200の構成情報を取得する。
次に、運用段階における管理計算機100の動作を説明する。
運用段階では、ホスト計算機200が実行されるジョブの状態が変化したことを検知し、その内容を管理計算機100にネットワーク550を介して通知する。通知を受けた管理計算機100は、集中ページ制御プログラム1103に基づいて、ホスト計算機200の運用段階におけるジョブの優先度に基づく階層記憶制御処理(図33)と同様な処理を行う。
ここで、ホスト計算機200を介して記憶階層制御の指示を行う場合、管理計算機100は、ステップS11900において、ネットワーク550を介してホスト計算機200にページの移動先階層を送信する。この場合には、ホスト計算機200が記憶階層制御の指示を含むIO要求600をストレージ装置300に送信することとなる。
一方、ストレージ装置300に直接記憶階層制御を指示する場合、管理計算機100は、ステップS11900において、ホスト計算機200と同様の処理を行って、ストレージ装置300に対して、IO要求600を送信する。
なお、管理計算機100は、複数のホスト計算機200間のジョブを考慮してページの移動先階層を決定しても良い。具体的には、ステップS11010において、管理計算機100は、制御対象ページ集中管理テーブル1116から制御対象のページを特定するときに、ホスト名ではなく、ストレージIDを参照する。これにより、管理計算機100は、同一のストレージ装置300を使用する複数のホスト計算機200のページを考慮して記憶階層制御を行うことができる。
(1−4−2)単一のアプリケーションが複数のデータにアクセスするとした場合の実施例(実施例A2)
実施例A2では、単一のアプリケーションが複数のデータにアクセスするとした場合における各装置の動作を説明する。ここで、実施例A2では、単一のジョブ(アプリケーションを実行するジョブ)が複数のデータセットにアクセスする場合を想定する。ただし、データセットにアクセスするジョブは単一とし、ジョブは実行されるたびに、前回の実行時とは異なる複数のデータセットへアクセスしても良い。
実施例A2におけるストレージ装置300の処理は、実施例A1におけるストレージ装置300の処理(図26、図27及び図28)と同様である。このため、実施例A2におけるストレージ装置300における処理の詳細な説明は省略する。
次に、準備段階及び運用段階の2段階でホスト計算機200が行う処理を説明する。
まず、ホスト計算機200は、実施例A1の準備段階の準備処理(図31)と同様な処理を行い、メモリ210に記憶される記憶階層制御に必要なテーブルを作成する。
次に、運用段階におけるホスト計算機200の処理を説明する。
ホスト計算機200が記憶階層制御処理を実行する契機としては、実施例A1における契機であるジョブの実行状態の変化時に加えて、ジョブがアクセスするデータを変更したときがある。これは、実施例A2において、ジョブは実行中にアクセスするデータを変更することがあり、このとき、ページにアクセスするジョブが変わる場合があるためである。
ジョブの実行状態の変化時又はジョブがアクセス先のデータが変更されたことを検知した場合、ホスト計算機200は、実施例A1におけるホスト計算機200の処理(ジョブ制御情報取得プログラム2104及びページ割当て状態監視プログラム2106に基づくホスト計算機200の処理)と同様な処理を行うことにより、メモリ210に記憶される各種テーブルの情報を更新する。さらに、ホスト計算機200は、ジョブ制御情報取得プログラム2104に基づいて、OS2101からジョブがどのデータにアクセスしているかを示す情報を取得し、ジョブ制御情報管理テーブル2111のデータセット名211104を更新する。
次に、ホスト計算機200は、実施例A1におけるホスト計算機200の記憶階層制御処理(図33)と同様な処理を行い、制御対象ページの移動先階層を決定する。ただし、実施例A2におけるホスト計算機200は、ページにアクセスするジョブの個数を特定する処理(図34のS12005)において、あるジョブがアクセスする複数のデータが同一ページに存在する場合、当該ジョブを重複して数えないようにする。これは、ページ移動により影響を受けるジョブ(例えば、低い階層にページ移動すると、入出力性能が低下するジョブ)の個数をページの順位付けの評価基準とするためである。具体的には、実施例A2におけるホスト計算機200は、ステップS12005において、ページにアクセスするジョブの個数を特定した後に、ページにアクセスするジョブ名の重複の有無を判定する。ジョブの重複が存在した場合には、ホスト計算機200は、特定したジョブの個数から重複する個数だけ差し引く処理を行う。この後、ページの移動先階層により影響を受けるジョブ数の多いページを高い順位のページと判定する。
そして、ホスト計算機200は、決定したページ移動先階層に制御対象のページを移動するために、実施例A1におけるホスト計算機200の処理(図33のステップS11900)と同様な処理を行ってIO要求600を作成し、当該IO要求600をストレージ装置300を送信する。
また、管理計算機100は、実施例A1における管理計算機100の処理、及び実施例A2におけるホスト計算機200の処理、と同様な処理を行い、記憶階層制御を実行する。ここでは、管理計算機100による処理の詳細な説明は省略する。
(1−4−3)複数のアプリケーションが単一のデータにアクセスするとした場合の実施例(実施例A3)
実施例A3では、複数のアプリケーションが単一のデータにアクセスするとした場合における各装置の動作を説明する。ここで、実施例A3では、複数のジョブが単一のデータセットにアクセスする場合を想定する。ただし、ジョブは実行されるたびに前回の実行時とは異なる複数のデータセットへアクセスしても良い。
実施例A3におけるストレージ装置300の処理は、実施例A1におけるストレージ装置300の処理(図26、図27及び図28)と同様である。このため、ストレージ装置300における処理の詳細な説明は省略する。
次に、準備段階及び運用段階の2段階でホスト計算機200が行う処理を説明する。
まず、ホスト計算機200は、実施例A1における準備段階の準備処理(図31)と同様な処理を行って、メモリ210に記憶される記憶階層制御に必要なテーブルを作成する。
次に、運用段階におけるホスト計算機200の処理を説明する。
ホスト計算機200が記憶階層制御処理を実行する契機は、実施例A2と同様に、ジョブの実行状態が変化時、又はジョブがアクセスするデータを変更したときである。
ジョブの実行状態が変化したこと、又はジョブがアクセスするデータを変更したこと、を検知した場合、ホスト計算機200は、実施例A1におけるホスト計算機200の処理(ジョブ制御情報取得プログラム2104及びページ割当て状態監視プログラム2106に基づくホスト計算機200の処理)と同様な処理を行って、メモリ210に記憶される各種テーブルの情報を更新する。
次に、ホスト計算機200は、実施例A1におけるホスト計算機200の記憶階層制御処理(図33)と同様な処理を行い、制御対象ページの移動先階層を決定する。ただし、実施例A3におけるホスト計算機200は、ユーザが指定した性能要件を満たす階層を特定する処理(図33のS11010及び図34のS12005)で、同一データにアクセスするジョブ間でのデータアクセス処理の終了待ちを考慮する。ここで、一のジョブがデータアクセス処理を実行中に、他のジョブが当該データにアクセスすると、一のジョブのデータアクセス処理が終了するまで、他のジョブは待ち状態となる。この待ち状態の時間だけ、他のジョブは、データアクセス処理の応答時間が長大化する。そこで、応答時間が長大化しても、ユーザの指定する性能要件を満たせる階層を特定できるようにしている。具体的には、ホスト計算機200は、ステップS11010及びステップS12005において、ジョブの性能要件を特定した後、ジョブ間でのデータアクセス処理の終了待ちにより長大化する応答時間を考慮して性能要件を満たす階層を特定する。例えば、ジョブの性能要件が応答時間の場合、ホスト計算機200は、性能要件が示す応答時間と長大化する時間を加算し、加算した応答時間に対して階層を特定する。具体的には、例えば、記憶装置は、IO要求を逐次処理する。このため、n個のジョブが同じ記憶装置にアクセスすると、或るジョブの長大化する時間は、(n−1)×(記憶装置のIO要求の処理時間)によって算出される。本実施例では、記憶装置を「階層記憶(例えばストレージ装置300Aのように複数の記憶装置を有する装置)」に置き換えて、長大化する時間が算出される。階層記憶は、複数の記憶装置から成るため、実際の長大化する時間は、上記計算式によって算出されるよりも短い時間と考えられる。しかし、入出力性能を保証するため、長大化する時間は、上記計算式(ただし、記憶装置は階層記憶に置換)によって算出される。
そして、ホスト計算機200は、決定したページ移動先階層に制御対象のページを移動するために、実施例A1におけるホスト計算機200の処理(図33のステップS11900)と同様な処理を行ってIO要求600を作成し、IO要求600をストレージ装置300に送信する。
また、管理計算機100は、実施例A1における管理計算機100の処理、及び実施例A3におけるホスト計算機200の動作、と同様な処理を行い、記憶階層制御を実行する。ここでは、管理計算機100の処理の詳細な説明は省略する。
(1−5)第1実施形態の効果
以上のように、第1実施形態によれば、ホスト計算機200は、ストレージ装置300における記憶階層制御の単位であるページ、ページに存在するデータ及びデータを使用するアプリケーションを考慮して、ページの記憶階層制御を実行する。これにより、ホスト計算機200は、ページ内に重要度の異なるアプリケーションが使用する複数のデータが存在する場合において、重要度の高いアプリケーションが使用するデータを低い入出力性能を示す記憶階層に割当ててしまうことを適切に防ぐことができる。
また、ホスト計算機200が記憶階層へのデータ割当て状況を把握することで、1台のホスト計算機200が複数のストレージ装置300を使用する場合、各ストレージ装置300における記憶階層へのデータ割当て状況を考慮した記憶階層制御の指示を行うことができる。
また、複数データセットが存在するページについての記憶階層制御の指示をページ単位で行い、ページIDが連続、かつ同一の移動先階層である複数のページについての記憶階層制御の指示を、これら複数のページのページ範囲を単位として行うことにより、管理計算機100又はホスト計算機200が作成するIO要求600の数を削減できる。さらに、ひとつのIO要求600に、ページ範囲と移動先階層との組みを複数格納するようにすることで、作成するIO要求600の数を削減できる。
また、管理計算機100及びホスト計算機200は、論理ボリューム内の制御対象ページを把握しているため、論理ボリューム単位に、記憶階層制御を指示できる。これにより、ホスト計算機200がストレージ装置300に階層の移動を指定するページについて、ページIDが連続する状況が起こりやすくなり、IO要求600数を削減できる可能性が高くなる。
(2)第2実施形態
(2−1)第2実施形態の概要
次に、第2実施形態に係る計算機システムを説明する。
第2実施形態は、第1実施形態における、ジョブの優先度に基づく階層記憶制御処理(図33)を、ホスト計算機200に代わり、ストレージ装置300Aが実行するようにしたものである。具体的には、第2実施形態において、管理計算機100A又はホスト計算機200Aは、アプリケーション、アプリケーションがアクセスするデータ及びデータの性能要件に関する情報をストレージ装置300Aに送信する。次に、ストレージ装置300Aは、受信した情報からジョブの優先度に基づき、ページの移動先階層を決定する。そして、ストレージ装置300Aは、決定したページの移動先階層に基づいて記憶階層制御処理を実行する。
本実施形態によれば、ストレージ装置300Aがプール内の論理ボリュームにアクセスするジョブに関する情報を保持するので、複数のホスト計算機200Aのジョブがストレージ装置300Aの管理する同一プール内の論理ボリュームを利用する場合であっても、ホスト計算機200A間のジョブを考慮した記憶階層制御が可能となる。
(2−2)計算機システムのハードウェア構成
第2実施形態における計算機システムの構成は、第1実施形態における計算機システムの構成(図1)と同様である。
図38は、第2実施形態に係るストレージ装置の構成図である。
ストレージ装置300Aのメモリ310は、第1実施形態におけるストレージ装置300(図4)のメモリ310に展開される各種プログラム及びテーブルの他に、ページ移動先決定プログラム3120及びホスト性能要件管理テーブル3130を更に記憶する。
ページ移動先決定プログラム3120は、ジョブの優先度に基づき、ページの移動先階層を決定するためのプログラムである。ホスト性能要件管理テーブル3130は、ストレージ装置300Aがジョブの優先度に基づく記憶階層制御処理を行うために必要な1又は複数のホスト計算機200Aのジョブに関する情報を格納するテーブルである。
図37は、第2実施形態に係るホスト計算機の構成図である。
ホスト計算機200Aのメモリ210は、第1実施形態におけるホスト計算機200(図3)のメモリ210に展開される各種プログラム及びテーブルからページ制御プログラム2105、ページ割当て状態監視プログラム2106、ページ構成管理テーブル2113、階層利用状況管理テーブル2114及び制御対象ページ管理テーブル2115を取り除いたプログラム及びテーブルを記憶するとともに、性能要件送付プログラム2120、データアクセス特性情報取得プログラム2121及び性能要件管理テーブル2130を更に記憶する。
性能要件送付プログラム2120は、ジョブの優先度に基づく記憶階層制御処理に必要な情報をストレージ装置300Aに対して送付するためのプログラムである。データアクセス特性情報取得プログラム2121は、ストレージ装置300Aからデータアクセスの特性情報を取得するためのプログラムである。性能要件管理テーブル2130は、ストレージ装置300Aがジョブの優先度に基づく記憶階層制御処理を行うために必要なホスト計算機200Aのジョブに関する情報を格納するテーブルである。
図36は、第2実施形態に係る管理計算機の構成図である。
管理計算機100Aのメモリ110は、第1実施形態における管理計算機100(図2)のメモリ110に展開される各種プログラム及びテーブルから、集中ページ制御プログラム1103、集中ページ割当て状態監視プログラム1104、ページ構成集中管理テーブル1114、階層利用状況集中管理テーブル1115及び制御対象ページ集中管理テーブル1116を取り除いたプログラム及びテーブルを記憶するとともに、集中性能要件送付プログラム1120、集中データアクセス特性情報取得プログラム1121及び性能要件集中管理テーブル1130を更に記憶する。
集中性能要件送付プログラム1120は、ジョブの優先度に基づく記憶階層制御処理に必要な情報をストレージ装置300Aに対して送付するためのプログラムである。集中データアクセス特性情報取得プログラム1121は、ストレージ装置300Aからデータアクセスの特性情報を取得するためのプログラムである。性能要件集中管理テーブル1130は、ストレージ装置300Aがジョブの優先度に基づく記憶階層制御処理を行うために必要な1又は複数のホスト計算機200Aのジョブに関する情報を格納するテーブルである。
(2−3)計算機システムの処理の概要
次に、第2実施形態に係る計算機システムの処理の概要を説明する。
ここで、以下の説明においては、単にストレージ装置300Aを主語にして処理の説明を行うが、これら処理はストレージ装置300Aのコントローラ320が実行していることを示している。同様に、単にホスト計算機200Aを主語にして処理の説明を行っている場合には、ホスト計算機200Aのプロセッサ220が処理を実行していることを示し、管理計算機100Aを主語にして処理の説明を行っている場合には、管理計算機100Aのプロセッサ120が、処理を実行していることを示している。
第2実施形態においても、第1実施形態と同様に、ストレージ装置300Aは、ホスト計算機200Aより送信されたIO要求600の情報に基づき、記憶階層制御処理を実行する。ただし、第1実施形態では、ホスト計算機200は、ストレージ装置300に対して、移動対象のページ及び移動先階層を指定して、記憶階層制御を指示する。一方、第2実施形態では、ホスト計算機200Aは、ストレージ装置300Aに対して、ユーザが指定した性能要件に関する情報を送付する。ストレージ装置300Aは、ホスト計算機200Aから送付された性能要件からページの移動先階層を決定し、記憶階層制御を実行する。具体的には、ホスト計算機200Aは、OS2101、AP2102、及び入出力部250を介したユーザの入力、からジョブの優先度に基づく記憶階層制御処理に必要な情報を取得する。例えば、取得する情報としては、ジョブ名、ジョブがアクセスするデータセット名、データセットの仮想アドレス、ジョブの優先度、ユーザが指定するジョブのデータアクセス処理の性能要件等が挙げられる。
次に、ホスト計算機200Aは、取得した情報を、ストレージ装置300Aが当該ストレージ装置300A内の構成要素を管理する時に使用する形式に変換する。例えば、ホスト計算機200Aは、ジョブが使用するデータを識別するための情報を、ホスト計算機200Aの管理単位であるデータセット名から、ストレージ装置300Aの論理ボリュームの記憶領域の単位である仮想アドレスに変換する。
そして、ホスト計算機200Aは、形式を変換した情報を送付するためのIO要求600を作成し、通信ネットワーク500を介して、ストレージ装置300Aに対してIO要求600を送信する。
当該IO要求600を受信したストレージ装置300Aは、ホスト計算機200Aから送信された情報に基づき、ページの移動先階層を決定して、記憶階層制御を行う。
また、ホスト計算機200Aは、入出力部250を介してユーザに対してデータアクセスの特性情報を表示するために、通信ネットワーク500を介して、ストレージ装置300Aに対して、仮想アドレスと、仮想アドレスが示す記憶領域の特性情報とを取得するためのIO要求600を作成して送信する。当該IO要求600を受信したストレージ装置300Aは、通信ネットワーク500を介して、ホスト計算機200Aに対して、仮想アドレスの特性情報を返送する。
ホスト計算機200Aは、ストレージ装置300Aから返送された仮想アドレスの特性情報に基づいて、対応するデータの特性に関する情報を、入出力部250により、ユーザに対して表示する。
なお、第2実施形態においても、第1実施形態と同様に、必要に応じて、ユーザは、管理計算機100Aより、複数のホスト計算機200A及びストレージ装置300Aを集中管理できる。これにより、第1実施形態における管理計算機100と同様、複数のホスト計算機200が存在する場合に、ユーザの操作する入出部を集約することができる。
(2−4)各種テーブルの内容
図41は、第2実施形態に係るホスト性能要件管理テーブルの一例を示す図である。
ホスト性能要件管理テーブル3130は、ストレージ装置300Aがジョブの優先度に基づく記憶階層制御を行うために必要な1又は複数のホスト計算機200Aのジョブに関する情報を管理するテーブルであって、各エントリには、論理ボリュームID313001、仮想アドレス313002、階層要件313003、ホスト名313004、ジョブ名313005及び優先度313006のフィールドが含まれる。なお、一つのエントリが、一つのデータセットに対応している。
論理ボリュームID313001には、仮想アドレス313002が示す記憶領域が存在する論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。仮想アドレス313002には、ユーザによって性能要件が指定された論理ボリュームの記憶領域を示すアドレスが格納される。階層要件313003には、ユーザが指定した性能要件を満たす記憶階層が格納される。ホスト名313004には、対応するジョブ名のジョブが実行されるホスト計算機200Aを一意に識別するための識別子が格納される。ジョブ名313005には、ユーザが指定したジョブを一意に識別するための識別子(ジョブ名)が格納される。優先度313006には、対応するジョブ名が示すジョブの優先度が格納される。
図40は、第2実施形態に係る性能要件管理テーブルの一例を示す図である。
性能要件管理テーブル2130は、ストレージ装置300Aが記憶階層制御を行うために必要なホスト計算機200Aに関する情報を管理するテーブルであって、各エントリには、ストレージID213001、論理ボリュームID213002、仮想アドレス213003、階層要件213004、ジョブ名213005及び優先度213006のフィールドが含まれる。なお、一つのエントリが、一つのデータセットに対応している。
ストレージID213001には、対応する論理ボリュームIDが示す論理ボリュームを提供しているストレージ装置300Aを一意に識別するための識別子が格納される。論理ボリュームID213002には、対応する仮想アドレスが示す記憶領域が存在する論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。仮想アドレス213003には、ユーザによって性能要件が指定された論理ボリュームの記憶領域を示すアドレス(仮想アドレス)が格納される。階層要件213004には、ユーザが指定した性能要件を満たす記憶階層が格納される。ジョブ名213005には、ユーザが指定したジョブを一意に識別するための識別子(ジョブ名)が格納される。優先度213006には、対応するジョブ名が示すジョブの優先度が格納される。
図39は、第2実施形態に係る性能要件集中管理テーブルの一例を示す図である。
性能要件集中管理テーブル1130は、ストレージ装置300Aが記憶階層制御を行うために必要な1又は複数のホスト計算機200Aに関する情報を管理するテーブルであって、各エントリには、ホスト名113000、ストレージID113001、論理ボリュームID113002、仮想アドレス113003、階層要件113004、ジョブ名113005及び優先度113006のフィールドが含まれる。なお、エントリ一つが、一つのデータセットに対応している。
ホスト名113000には、管理計算機100Aが管理対象とするホスト計算機200Aを一意に識別するための識別子(ホスト名)が格納される。ストレージID113001には、対応する論理ボリュームIDが示す論理ボリュームを提供しているストレージ装置300Aを一意に識別するための識別子(ストレージID)が格納される。論理ボリュームID113002には、対応する仮想アドレスが示す記憶領域が存在する論理ボリュームを一意に識別するための識別子(論理ボリュームID)が格納される。仮想アドレス113003には、ユーザによって性能要件が指定された論理ボリュームの記憶領域を示すアドレス(仮想アドレス)が格納される。階層要件113004には、ユーザが指定した性能要件を満たす記憶階層が格納される。ジョブ名113005には、ユーザが指定したジョブを一意に識別するための識別子(ジョブ名)が格納される。優先度113006には、対応するジョブ名が示すジョブの優先度が格納される。
(2−5)各装置の動作の詳細
(2−5−1)アプリケーションが常に同一の単一データにアクセスするとした場合の実施例(実施例B1)
実施例B1では、ホスト計算機200Aのアプリケーションと、当該アプリケーションがアクセスするデータとの対応関係が1対1となっている場合における各装置の動作を説明する。ここで、実施例B1では、ジョブと、ジョブがアクセスするデータセットとの関係が1対1である場合を想定する。ただし、ジョブは常に同一のデータセットにアクセスするものとする。
まず、ストレージ装置300Aの処理を説明する。
ストレージ装置300Aは、第1実施形態におけるストレージ装置300の入出力処理(図26)及びページ割当て処理(図27)と同様な処理を行う。
また、ストレージ装置300Aは、第1実施形態におけるストレージ装置300の階層記憶制御処理(図28)と同様な処理を行う。
さらに、ストレージ装置300Aは、ページ移動先決定プログラム3120及びページ割当て制御プログラム3101に基づいて、第1実施形態におけるストレージ装置300及びホスト計算機200の記憶階層制御処理に関する処理(図29、図33及び図34)に相当する処理を行うことにより、記憶階層制御処理を行う。第2実施形態では、第1実施形態でホスト計算機200が実行するジョブの優先度に基づく階層記憶制御処理を、ストレージ装置300Aが実行する。すなわち、ストレージ装置300は、図29、図33及び図34に示す処理のうち、ホスト計算機200からストレージ装置300にIO要求を送信する処理、及びストレージ装置300からホスト計算機へIO要求の応答を返送する処理を除いた処理を行う。具体的には、ストレージ装置300Aは、ページ移動先決定プログラム3120に基づいて、論理ボリューム管理テーブル3111、プール内ページ管理テーブル3112、実ボリューム管理テーブル3113及びホスト性能要件管理テーブル3130を参照して、ページの移動先階層を決定する(図33のステップS11010〜S11130)。なお、ストレージ装置300Aは、ホスト性能要件管理テーブル3130を参照して、制御対象ページを特定する(図33のステップS11010)。このため、ストレージ装置300Aは、複数のホスト計算機200Aのジョブを考慮して、ページの移動先階層を決定できる。次に、ストレージ装置300Aは、ページ割当て制御プログラム3101に基づいて、決定した移動先階層へページを移動させ、当該ページをページロック実施中とする(図29の処理からステップS8232を除いた処理)。
次に、準備段階及び運用段階の2段階でホスト計算機200Aが行う処理を説明する。
まず、準備段階におけるホスト計算機200Aの処理を説明する。
図42は、第2実施形態に係るホスト計算機の準備段階の送付処理のフローチャートである。
準備処理は、ユーザ設定情報入力プログラム2103、ジョブ制御情報取得プログラム2104及び性能要件送付プログラム2120に基づいて、ホスト計算機200Aのプロセッサ220が処理を実行することで実現される。
まず、ホスト計算機200Aは、ユーザ設定情報入力プログラム2103に基づいて、図31のステップS10010と同様な処理を行い、記憶階層制御の管理対象のストレージ装置300Aを検出する(ステップS13010)。
次に、ホスト計算機200Aは、ジョブ制御情報取得プログラム2104に基づいて、図31のステップS10020と同様な動作を行い、ジョブ情報管理テーブル2111及びデータ構成管理テーブル2112を作成する(ステップS13020)。
次に、ホスト計算機200Aは、ユーザ設定情報入力プログラム2103に基づいて、図31のステップS10040と同様の動作を行い、ユーザ設定情報管理テーブル2110を作成する(S13040)。
次に、ホスト計算機200Aは、性能要件送付プログラム2120に基づいて、ユーザ設定情報管理テーブル2110、ジョブ情報管理テーブル2111及びデータ構成管理テーブル2112を参照し、性能要件管理テーブル2130を作成する。
具体的には、ホスト計算機200Aは、ユーザ設定情報管理テーブル2110及びジョブ情報管理テーブル2111を参照して、ユーザ設定情報管理テーブル2110のエントリのジョブ名に合致し、かつ実行状態が「実行中」を示すジョブ情報管理テーブル2111のエントリを特定する。次に、ホスト計算機200Aは、性能要件管理テーブル2130に新たなエントリを追加し、特定したエントリのジョブ名の値を性能要件管理テーブル2130のエントリのジョブ名213005に格納し、優先度211103の値を優先度213006に格納する。そして、ホスト計算機200Aは、ユーザ設定情報管理テーブル2110のエントリの性能要件種別211003及び性能要件211004が示す性能要件に対して、当該性能要件を満たす記憶階層を特定し、当該記憶階層を性能要件管理テーブル2130のエントリの階層要件213004に格納する。さらに、ホスト計算機200Aは、データ構成管理テーブル2112を参照して、ユーザ設定情報管理テーブル2110のエントリのデータセット名に合致するデータ構成管理テーブル2112のエントリを特定する。そして、ホスト計算機200Aは、データ構成管理テーブル2112のエントリのストレージID211204の値を性能要件管理テーブル2130のエントリのストレージID213001に格納し、論理ボリュームID211205の値を論理ボリュームID213002に格納し、仮想アドレス211203の値を仮想アドレス213003に格納する。そして、ホスト計算機200Aは、性能要件管理テーブル2130の内容を送付するためのIO要求600をストレージ装置300Aへ送信する(S13060)。当該IO要求600を受信したストレージ装置300Aは、受信した情報に基づいて記憶階層制御処理を行う。例えば、ストレージ装置300Aは、ホスト性能要件管理テーブル3130に、IO要求に含まれている内容に対応するエントリを追加する処理を行う。
次に、運用段階におけるホスト計算機200Aの処理を説明する。
運用段階では、ホスト計算機200Aは、ジョブ制御情報取得プログラム2104及びユーザ設定情報入力プログラム2103に基づいて、実行されるジョブの状態の変化を検知したとき、又はユーザから性能要件に関する情報の入力を受け付けたときに、必要に応じて性能要件管理テーブル2130を更新し、更新内容をストレージ装置300Aへ送付する。
具体的には、ホスト計算機200Aが実行されるジョブの状態の変化を検知したとき、ホスト計算機200Aは、ステップS13020と同様の動作を行い、ジョブ情報管理テーブル2111及びデータ構成管理テーブル2112の内容を更新する。また、ユーザから入出力部250を介して性能要件に関する情報の入力を受け付けたとき、ホスト計算機200Aは、ステップS13040と同様な処理を行ってユーザ設定情報管理テーブル2110を更新する。次に、ホスト計算機200Aは、ステップS13060と同様な処理を行って性能要件管理テーブル2130を更新する。そして、ホスト計算機200Aは、更新のあった性能要件管理テーブル2130のエントリを特定し、当該エントリの情報を送付するためのIO要求600を作成し、当該IO要求600をストレージ装置300Aへ送信する。当該IO要求600を受信したストレージ装置300Aは、受信したIO要求600中の情報に基づいて、記憶階層制御処理を行うこととなる。例えば、ストレージ装置300Aは、ホスト性能要件管理テーブル3130に、IO要求に含まれている内容に対応するエントリを追加する処理を行う。
次に、管理計算機100Aの動作を説明する。
管理計算機100Aは、実施例B1におけるホスト計算機200Aと同様な処理を行って性能要件集中管理テーブル1130を更新する。次に、管理計算機100Aは、更新した内容を、第1実施形態における管理計算機100と同様な処理を行うことで、ストレージ装置300Aに送付する。実施例B1における管理計算機100Aの動作の詳細な説明は、省略する。
(2−5−2)単一のアプリケーションが複数のデータにアクセスするとした場合の実施例(実施例B2)
実施例B2では、単一のアプリケーションが複数のデータにアクセスするとした場合における各装置の動作を説明する。ここで、実施例B2では、単一のジョブ(アプリケーションを実行するジョブ)が複数のデータセットにアクセスする場合を想定する。ただし、データセットにアクセスするジョブは単一とし、ジョブは実行されるたびに、前回の実行時とは異なる複数のデータセットへアクセスしても良い。
まず、ストレージ装置300Aの動作を説明する。
実施例B2におけるストレージ装置300Aは、実施例B1におけるストレージ装置300Aと同様な処理を行い、入出力処理、及びアクセス頻度に基づく記憶階層制御処理を行う。なお、これらの処理の詳細な説明は、省略する。
次に、実施例B2におけるストレージ装置300Aによるジョブの優先度に基づく記憶階層制御処理を説明する。
ストレージ装置300Aは、実施例B1でのストレージ装置300Aと同様な処理を行ってページの移動先階層を決定する。ただし、実施例B2におけるストレージ装置300Aは、ページにアクセスするジョブの個数を特定する処理(図34のS12005)で、あるジョブがアクセスする複数のデータが同一のページに存在する場合、当該ジョブを重複して数えないようにする。これは、実施例A2と同様に、ページ移動により影響を受けるジョブ(例えば、低い階層にページ移動すると、入出力性能が低下するジョブ)の個数をページの順位付けの評価基準とするためである。具体的な処理は、実施例A2におけるホスト計算機200の処理と同様であるため、詳細な説明は省略する。
また、実施例B2における管理計算機100A及びホスト計算機200Aの処理は、実施例B1における管理計算機100A及びホスト計算機200Aの処理と同様である。このため、管理計算機100A及びホスト計算機200Aの動作の詳細な説明は省略する。ただし、管理計算機100A及びホスト計算機200Aが性能要件集中管理テーブル1130及び性能要件管理テーブル2130を更新し、ストレージ装置300Aへ更新内容を送付する契機としては、実施例B1における契機である実行されるジョブの状態が変化したときに加えて、ジョブがアクセスするデータを変更したときがある。これは、第1実施形態の実施例A2におけるホスト計算機200の処理と同様に、ページにアクセスするジョブが変わったことを検知してストレージ装置300Aが記憶階層制御処理を行うためである。
(2−5−3)複数のアプリケーションが単一のデータにアクセスするとした場合の実施例(実施例B3)
実施例B3では、複数のアプリケーションが単一のデータにアクセスするとした場合における各装置の動作を説明する。ここで、実施例B3では、複数のジョブが単一のデータセットにアクセスする場合を想定する。ただし、ジョブは実行されるたびに前回の実行時とは異なる複数のデータセットへアクセスしても良い。
まず、ストレージ装置300Aの動作を説明する。
実施例B3におけるストレージ装置300Aは、実施例B1おけるストレージ装置300Aと同様な処理を行うことにより、入出力処理、及びアクセス頻度に基づく記憶階層制御処理を行う。このため、これらの処理の詳細な説明は、省略する。
ストレージ装置300Aは、実施例B1におけるストレージ装置300Aと同様な処理を行ってページの移動先階層を決定する。ただし、実施例B3におけるストレージ装置300Aは、ユーザが指定する性能要件を満たす階層を特定する処理(図33のS11010及び図34のS12005)で、同一データにアクセスするジョブ間での入出力処理の終了待ちを考慮する。これは、実施例A3のホスト計算機200の処理と同様に、ジョブ間の入出力処理の終了待ちの発生により、応答時間の長大化しても、ユーザの指定する性能要件を満たせる階層を特定するができるようにするためである。具体的な処理は、実施例A3におけるホスト計算機200の処理と同様であるため、詳細な説明は省略する。
また、実施例B3における管理計算機100A及びホスト計算機200Aの処理は、実施例B2における管理計算機100A及びホスト計算機200Aの処理と同様であるため、詳細な説明は省略する。
(2−6)第2実施形態の効果
以上のように、第2実施形態によれば、ストレージ装置300Aが複数のホスト計算機200Aに関する情報を保持することで、ホスト計算機200A間で重要度の高いアプリケーションが使用するデータを低い入出力性能を示す記憶階層に割当ててしまうことを適切に防ぐことができる。
(3)第3実施形態
(3−1)第3実施形態の概要
次に、第3実施形態に係る計算機システムを説明する。
第3実施形態は、第2実施形態における、OS2101の持つジョブ及びデータセットに関する情報、及びユーザの入力情報より、制御対象ページを特定する処理を、ホスト計算機200Aに代わり、ストレージ装置300Bが実行するようにしたものである。また、第3実施形態では、第1実施形態における、制御対象ページの特定処理、及びジョブの優先度に基づく階層記憶制御処理、をホスト計算機200に代わり、ストレージ装置300Bが実行するようにしたものである。
具体的には、第3実施形態において、管理計算機100B又はホスト計算機200Bは、OS2101及び入出力部を介してのユーザの入力により取得した情報を、ストレージ装置300Bに送信する。次に、ストレージ装置300Bは、受信した情報からジョブとジョブがアクセスするページとの関係を特定する。次に、ストレージ装置300Bは、各ジョブに対して、ユーザが指定した性能要件を満たせる階層を特定する。そして、ストレージ装置300Bは、特定した性能要件を満たす階層と、ジョブの優先度とに基づき、ページの移動先階層を決定して、記憶階層制御処理を実行する。
以上のように、第3実施形態によれば、ストレージ装置300Bは、ユーザが指定した性能要件に関する情報を保持する。このため、実ボリュームの特性情報が変化(例えば、異なる種類の記憶装置360を導入することで特性情報が変化)しても、ストレージ装置300Bは、ユーザが指定する性能要件を満たす階層を特定して、適切に記憶階層制御を行うことができる。
(3−2)計算機システムのハードウェア構成
第3実施形態における計算機システムの構成は、第1実施形態における計算機システムの構成(図1)と同様である。
図45は、第3実施形態に係るストレージ装置の構成図である。
ストレージ装置300Bのメモリ310は、第2実施形態におけるストレージ装置300A(図38)のメモリ310に展開される各種プログラム及びテーブルの他に、性能要件算出プログラム3140、ユーザ設定情報集中管理テーブル1111、ジョブ情報集中管理テーブル1112及びデータ構成集中管理テーブル1113を更に記憶する。
性能要件算出プログラム3140は、管理計算機100B又はホスト計算機200Bから送付されたジョブや性能要件に関する情報からジョブがアクセスするページと、ページの性能要件とを特定するためのプログラムである。
図44は、第3実施形態に係るホスト計算機の構成図である。
ホスト計算機200Bのメモリ210は、第2実施形態におけるホスト計算機200A(図37)のメモリ210に展開される各種プログラム及びテーブルから、ジョブ制御情報取得プログラム2104、ユーザ設定情報管理テーブル2110、ジョブ情報管理テーブル2111、データ構成管理テーブル2112、性能要件送付プログラム2120及び性能要件集中管理テーブル2130を取り除いたプログラム及びテーブルを記憶する。また、ホスト計算機200Bのメモリ210は、ジョブ制御情報送付プログラム2140を更に記憶する。
ジョブ制御情報送付プログラム2140は、ホスト計算機200BのOS2101が持つジョブに関する情報を取得し、ストレージ装置300Bへ送付するためのプログラムである。
図43は、第3実施形態に係る管理計算機の構成図である。
管理計算機100Bのメモリ110は、第2実施形態における管理計算機100A(図36)のメモリ110に展開される各種プログラム及びテーブルから、集中ジョブ制御情報取得プログラム1102、ユーザ設定情報集中管理テーブル1111、ジョブ情報集中管理テーブル1112、データ構成集中管理テーブル1113、集中性能要件送付プログラム1120及び性能要件集中管理テーブル1130を取り除いたプログラム及びテーブルを記憶する。また、管理計算機100Bのメモリ110は、集中ジョブ制御情報送付プログラム1140を更に記憶する。
集中ジョブ制御情報送付プログラム1140は、1又は複数のホスト計算機200BのOS2101が持つジョブに関する情報を取得し、ストレージ装置300Bへ送付するためのプログラムである。
(3−3)計算機システムの処理の概要
次に、第3実施形態に係る計算機システムの処理の概要を説明する。
ここで、以下の説明においては、単にストレージ装置300Bを主語にして処理の説明を行うが、これら処理はストレージ装置300Bのコントローラ320が実行していることを示している。同様に、単にホスト計算機200Bを主語にして処理の説明を行っている場合には、ホスト計算機200Bのプロセッサ220が処理を実行していることを示し、管理計算機100Bを主語にして処理の説明を行っている場合には、管理計算機100Bのプロセッサ120が、処理を実行していることを示している。
第3実施形態においても、第1実施形態と同様に、ストレージ装置300Bは、ホスト計算機200Bより送信されたIO要求600の情報に基づき、記憶階層制御処理を実行する。ただし、第1実施形態では、ホスト計算機200は、ストレージ装置300に対して、制御対象のページと移動先階層とを指定して、記憶階層制御を指示する。一方、第3実施形態では、ホスト計算機200Bは、ストレージ装置300Bに対して、OS2101及びAP2102の持つ情報、及びユーザの入力情報を送付する。送付される情報には、例えば、ジョブ名、ジョブがアクセスするデータセット名、データセットの仮想アドレス、ジョブの優先度、ユーザが指定するジョブのデータアクセス処理の性能要件等がある。
次に、ストレージ装置300Bは、ホスト計算機200Bから送付された情報から制御対象のページを特定する。次に、ストレージ装置300Bは、特定したページの移動先階層を決定し、記憶階層制御処理を実行する。
また、ホスト計算機200Bは、入出力部250を介して、ユーザにデータアクセスの特性情報を表示するために、通信ネットワーク500を介して、ストレージ装置300Bに対して、仮想アドレスと、仮想アドレスが示す記憶領域の特性情報とを取得するためのIO要求600を作成して送信する。当該IO要求600を受信したストレージ装置300Bは、通信ネットワーク500を介して、ホスト計算機200Bに対して、仮想アドレスの特性情報を返送する。
次に、ホスト計算機200Bは、ストレージ装置300Bから返送された仮想アドレスの特性情報に基づく情報を、入出力部250により、ユーザに対して表示する。
なお、第3実施形態においても、第1実施形態と同様に、必要に応じて、ユーザは、管理計算機100Bより、複数のホスト計算機200B及びストレージ装置300Bを集中管理できる。これにより、第1実施形態における管理計算機100と同様、複数のホスト計算機200が存在する場合に、ユーザの操作する入出部を集約するこができる。
(3−4)各種テーブルの内容
第3実施形態における各種テーブルの内容は、第1実施形態又は第2実施形態における各種テーブルと同様である。このため、本実施形態における各種テーブルの内容の詳細な説明は省略する。
(3−5)各装置の動作の詳細
(3−5−1)アプリケーションが常に同一の単一データにアクセスするとした場合の実施例(実施例C1)
実施例C1では、ホスト計算機200Aのアプリケーションと、当該アプリケーションがアクセスするデータとの対応関係が1対1となっている場合における各装置の動作を説明する。ここで、実施例C1では、ジョブと、ジョブがアクセスするデータセットとの関係が1対1である場合を想定する。ただし、ジョブは常に同一のデータセットにアクセスするものとする。
まず、ストレージ装置300Bの処理を説明する。
管理計算機100B又はホスト計算機200Bから送付されたOS2101及びAP2102の持つ情報、及びユーザの入力情報を受信した場合、ストレージ装置300Bは、性能要件算出プログラム3140に基づいて、受信した情報からユーザ設定情報集中管理テーブル1111、ジョブ情報集中管理テーブル1112及びデータ構成集中管理テーブル1113を作成又は更新する。各テーブルのエントリのフィールドに格納される値は、ストレージ装置300Bが第1実施形態における管理計算機100と同様な処理を行うことにより決定されるため、詳細な説明は省略する。
次に、ストレージ装置300Bは、ユーザ設定情報集中管理テーブル1111、ジョブ情報集中管理テーブル1112及びデータ構成集中管理テーブル1113を参照して、ホスト性能要件管理テーブル3130を作成又は更新する。ホスト性能要件管理テーブル3130のエントリのフィールドのうち、ホスト名313004を除くフィールドに格納される値は、ストレージ装置300Bが第2実施形態におけるホスト計算機200Aと同様な処理を行うことにより決定されるため、詳細な説明は省略する。なお、ホスト名313004には、IO要求の送信元のホスト計算機200Bのホスト名が格納される。
また、ストレージ装置300Bは、第2実施形態におけるストレージ装置300Aと同様な処理を行うことにより、入出力処理、アクセス頻度に基づく記憶階層制御処理及びジョブの優先度に基づく記憶階層制御処理を行う。これらの処理の詳細な説明は、省略する。
次に、準備段階及び運用段階の2段階でホスト計算機200Bが行う処理を説明する。
まず、準備段階におけるホスト計算機200Bの処理を説明する。
はじめに、ホスト計算機200Bは、第1実施形態におけるホスト計算機200の処理(図31のS10010)と同様な処理を行い、計算機システム10上に存在するストレージ装置300Bを検出する。
次に、ホスト計算機200Bは、第1実施形態におけるホスト計算機200の処理(図31のS10020及びS10040)と同様な処理を行い、OS2101及びAP2012、及びユーザの入力情報を取得する。
そして、ホスト計算機200Bは、取得した情報を送付するためのIO要求600を生成し、当該IO要求600をストレージ装置300Bへ送信する。当該IO要求600を受信したストレージ装置300Bは、受信した情報に基づいて記憶階層制御処理を行う。
また、運用段階において、実行されるジョブの状態の変化を検知したとき、又はユーザから性能要件に関する情報を受け付けたときには、ホスト計算機200Bは、ユーザ設定情報入力プログラム2103及びジョブ制御情報送付プログラム2140に基づいて、検知又は受け付けた情報を送付するためのIO要求600を作成し、当該IO要求600をストレージ装置300Bへ送信する。
次に、管理計算機100Bの動作を説明する。
管理計算機100Bは、第2実施形態における管理計算機100Aと同様な処理を行うことで、ストレージ装置300Bに対して、記憶階層制御処理に必要な情報を送信する。ただし、管理計算機100Bは、ホスト計算機200B、又はユーザの入力から情報を取得した場合、テーブルの作成又は更新を行わず、取得した情報をストレージ装置300Bへ送付する。
(3−5−2)単一のアプリケーションが複数のデータにアクセスするとした場合の実施例(実施例C2)
実施例C2では、単一のアプリケーションが複数のデータにアクセスするとした場合における各装置の動作を説明する。ここで、実施例C2では、単一のジョブ(アプリケーションを実行するジョブ)が複数のデータセットにアクセスする場合を想定する。ただし、データセットにアクセスするジョブは単一とし、ジョブは実行されるたびに、前回の実行時とは異なる複数のデータセットへアクセスしても良い。
まず、ストレージ装置300Bの処理を説明する。
実施例C2におけるストレージ装置300Bは、実施例C1におけるストレージ装置300Bと同様な処理を行うことにより、データアクセス処理、及びアクセス頻度に基づく記憶階層制御処理を行う。このため、これらの処理の詳細な説明は、省略する。
次に、実施例C2におけるストレージ装置300Bによるジョブの優先度に基づく記憶階層制御処理を説明する。
ストレージ装置300Bは、実施例C1におけるストレージ装置300Bと同様な処理を行ってページの移動先階層を決定する。ただし、実施例C2におけるホスト計算機200は、ページにアクセスするジョブの個数を特定する処理(図34のS12005)において、あるジョブがアクセスする複数のデータが同一ページに存在する場合、当該ジョブを重複して数えないようにする。これは、ページ移動により影響を受けるジョブ(例えば、低い階層にページ移動すると、入出力性能が低下するジョブ)の個数をページの順位付けの評価基準とするためである。具体的な処理は、第1実施形態の実施例A2におけるホスト計算機200の処理と同様であるため、詳細な説明は省略する。
また、実施例C2における管理計算機100B及びホスト計算機200Bの処理は、実施例C1における管理計算機100B及びホスト計算機200Bの処理と同様である。このため、実施例C2における管理計算機100B及びホスト計算機200Bの動作の詳細な説明は、省略する。ただし、管理計算機100B及びホスト計算機200Bがホスト性能要件管理テーブル3130の更新に必要な内容をストレージ装置300Bへ送付する契機としては、実施例C1における契機である実行されるジョブの状態が変化したときに加えて、ジョブがアクセスするデータを変更したときがある。これは、第1実施形態の実施例A2におけるホスト計算機200の処理と同様に、ページにアクセスするジョブが変わったことを検知してストレージ装置300Bが記憶階層制御を行うためである。
(3−5−3)複数のアプリケーションが単一のデータにアクセスするとした場合の実施例(実施例C3)
実施例C3では、複数のアプリケーションが単一のデータにアクセスするとした場合における各装置の動作を説明する。ここで、実施例C3では、複数のジョブが単一のデータセットにアクセスする場合を想定する。ただし、ジョブは実行されるたびに前回の実行時とは異なる複数のデータセットへアクセスしても良い。
まず、ストレージ装置300Bの処理を説明する。
実施例C3におけるストレージ装置300Bは、実施例C1におけるストレージ装置300Bと同様な処理を行うことにより、データアクセス処理、及びアクセス頻度に基づく記憶階層制御処理を行う。このため、これらの処理の詳細な説明は、省略する。
次に、実施例C3におけるストレージ装置300Bによるジョブの優先度に基づく記憶階層制御処理を説明する。
ストレージ装置300Bは、実施例C1におけるストレージ装置300Bと同様な処理を行い、ページの移動先階層を決定する。ただし、実施例C3におけるストレージ装置300Bは、ユーザが指定した性能要件を満たす階層を特定する処理(図33のS11010及び図34のS12005)で、同一データにアクセスするジョブ間でのデータアクセス処理の終了待ちを考慮する。これは、実施例A3のホスト計算機200の処理と同様に、ジョブ間のデータアクセス処理の終了待ちの発生により、応答時間の長大化しても、ユーザの指定する性能要件を満たせる階層を特定するができるようにするためである。具体的な処理は、実施例A3におけるホスト計算機200の処理と同様であるため、詳細な説明は省略する。
また、実施例C3における管理計算機100B及びホスト計算機200Bの処理は、実施例C1における管理計算機100A及びホスト計算機200Bと同様な処理である。このため、実施例C3における管理計算機100B及びホスト計算機200Bの動作の詳細な説明は、省略する。
(3−6)第3実施形態の効果
以上のように、第3実施形態によれば、ストレージ装置300Bは、ユーザが指定した性能要件に関する情報を保持する。このため、実ボリュームの特性情報が変化しても、ストレージ装置300Bは、ユーザが指定する性能要件を満たす階層を特定して、適切な階層にページを移動できる。
以上、3つの実施形態を述べた。このように、ホスト計算機200は、同一のページに存在するデータにアクセスするアプリケーションを考慮してページの移動先階層を決定することで、重要度の高いアプリケーションが使用するデータが低い入出力性能を示す記憶階層に割当てられることを適切に防ぐことができる。
また、第1実施形態によれば、ホスト計算機200が記憶階層へのデータ割当て状況を把握することで、複数のストレージ装置300に格納したデータにアクセスするアプリケーションについても、ストレージ装置300間のデータ割当て状況を考慮した記憶階層制御の指示を行うことができる。
また、第2実施形態によれば、ストレージ装置300Aが複数のホスト計算機200Aに関する情報を保持することで、ホスト計算機200A間で重要度の高いアプリケーションが使用するデータが低い入出力性能を示す記憶階層に割当てられることを適切に防ぐことができる。
また、第3実施形態によれば、第2実施形態の効果に加え、ストレージ装置300Bは、ユーザが指定した性能要件に関する情報を保持することで、実ボリュームの特性情報が変化した場合に、ユーザが指定する性能要件を満たす階層を再度特定して、適切な性能を示す階層にページを移動することができる。
なお、上述の説明に基づき、下記のような記載をすることができる。
ストレージシステムは、論理ボリューム(Thin Provisioningに従う仮想的な論理ボリューム)における仮想領域のアクセス頻度(或いは、最終アクセス日時のような他のアクセス状況)を基に、その仮想領域に割り当てられているページ内のデータを、そのページを含む階層とは別の階層内のページに移動することができる。すなわち、ストレージシステムは、仮想領域のアクセス状況に基づくページ移動を行うことができる。
ホスト計算機が、メインフレーム計算機の場合、メインフレーム計算機にとっては、論理ボリュームについて、一定のIO性能(例えば、期待されるIO性能)が保証されていることが望ましい。
そこで、例えば、メインフレーム用の管理プログラムが、管理計算機で実行されて良い。また、ストレージシステムが、その管理プログラムから発行されるコマンドを解釈するためのインタフェース(機能)を有して良い。
また、メインフレーム管理者が知っている言葉(単位)で、コマンドが発行されて良い。例えば、メインフレーム管理者は、データセットでデータを把握していて、管理プログラムは、メインフレーム管理者から、データセットのID(例えば名前)で指示を受けて、ストレージシステムには、指示されたデータセットに対応するページのIDでコマンドを出して良い。つまり、管理プログラムは、データセットIDからページIDに変換する機能を有して良い。
1つのページに、2以上のデータセット(或いはファイル)が入っている可能性がある。例えば、メインフレーム管理者にとって、1つのページに入っている2以上のデータセットのうち、或るデータセットは高性能のページに配置されるべきであるが、別のデータセットは、低性能のページに配置されても良い、ということがあり得る。
しかし、ストレージシステムは、ページ間で、データを移動する。
そこで、計算機システムは、下記複数の処理を行って良い。計算機システムは、例えば、ストレージシステムと、ストレージシステムに接続された管理システムとを含み、下記複数の処理は、管理システムとストレージシステム装置のうちのいずれか1つの装置によって行われても良いし、計算機及びストレージシステムに分担されても良い。以下、便宜上、処理の主語を、計算機システムとする。管理システムは、ホスト計算機及び管理計算機のうちの少なくとも一方で良い。
(A)計算機システムは、1つのページの中に、どれぐらいたくさんのデータセットが存在するかを特定する。
(B)次に、計算機システムは、ページ内のデータを、そのデータに含まれている2以上のデータセットについてそれぞれ要求される2以上のIO性能のうち最も高いIO性能を満たす階層のページに、移動することを決定する。
(C)上記(B)によると、IO性能が最も高い階層にデータが集中することになり得る。そうすると、その階層内のどのページ内のデータを、より下位の階層のページに移動させるかが重要となる。計算機システムは、(a)ユーザがデータの配置先としたい階層、及び/又は、(b)ジョブの優先度、を基に、階層(例えば、空きページが枯渇する階層)におけるページ内のデータをどの階層のページに移動するかを決定する。上記(a)及び(b)で、ページの中に、大事なデータセットがどの程度格納されているかが把握され、計算機システムは、その把握を基に、ページ内のデータを移動させることができる。ページ内のデータの移動は、上記(A)乃至(C)が行われた後で、行われて良い。
なお、上記(A)乃至(C)の処理において、例えば、計算機システムは、ジョブが動いているときは、そのジョブによって使用されるデータをより高階層のページに移動させ、ジョブが動いていないときは、そのジョブが使用するデータをより低階層のページに移動させて良い。ジョブが動く、終わる、或いは、ジョブの優先度を変更するといった契機で、上記(A)乃至(C)の処理が行われ、ページ移動が行われて良い。
また、計算機システムは、データセットの移動先の階層を特定可能な情報を有するデータ移動指示を受け、そのデータ移動指示に従い、そのデータセットを含んだデータを移動先階層内のページに移動した場合、そのデータを、移動先階層から移動することを抑止しても良い。ホスト計算機からのデータ移動指示の対象となるデータは、一定のIO性能が要求されているからである。この観点でいえば、例えば、移動先階層より高い階層には、データが移動しても良い。