(57)【特許請求の範囲】
【請求項１】
第１の記憶媒体と、前記第１の記憶媒体よりもアクセス性能が高い記憶媒体である第２の記憶媒体とを有するストレージ装置と、
サーバキャッシュを備えるサーバと、
管理サーバ、
とから成る計算機システムにおいて、
前記ストレージ装置は、前記第１または第２の記憶媒体の記憶領域が割り当てられる固定長領域を複数有するボリュームを前記サーバに提供するとともに、前記サーバから前記固定長領域に対して書き込まれるデータを、前記割り当てられた第１または第２の記憶媒体の記憶領域に格納し、
前記ストレージ装置はまた、前記サーバから前記固定長領域に対して所定期間内に発生したリードアクセス数とライトアクセス数とを、前記固定長領域ごとに格納するボリューム管理情報を有し、
前記サーバは、前記ボリュームに格納されたデータの一部を前記サーバキャッシュにキャッシュするとともに、前記サーバキャッシュにキャッシュされたデータに関する情報を格納するキャッシュ制御情報を有しており、
前記管理サーバは、
前記ストレージ装置から前記ボリューム管理情報を取得し、
前記サーバから前記キャッシュ制御情報を取得し、
前記ボリューム管理情報と前記キャッシュ制御情報とに基づいて、前記固定長領域ごとに、前記固定長領域内のデータが前記サーバキャッシュにキャッシュされている割合であるサーバキャッシュ率と、前記サーバから前記固定長領域に対して所定期間内に発生するリードアクセス数とライトアクセス数との和に対する、リードアクセス数の割合であるリード率を算出し、
前記固定長領域の各々について、前記サーバキャッシュ率と前記リード率とに基づいて、前記第１、第２いずれの記憶媒体の記憶領域を割り当てるか決定する、
ことを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記固定長領域における前記リード率が第１の閾値を超える値の場合、前記固定長領域に前記第１の記憶媒体を割り当てると決定することを特徴とする計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、
前記固定長領域における前記リード率が第２の閾値を下回る値の場合、前記固定長領域に前記第２の記憶媒体を割り当てると決定することを特徴とする計算機システム。
【請求項４】
請求項１に記載の計算機システムであって、
前記サーバは、前記ボリュームに１または複数のオブジェクトを格納して管理するためのデータベースプログラムを有し、
前記データベースプログラムは前記サーバに実行されることにより、前記各オブジェクトが格納される前記ボリューム上の位置情報を管理し、
前記管理サーバは、前記ボリューム管理情報と前記キャッシュ制御情報と前記位置情報とに基づいて、前記オブジェクト毎のリード率とサーバキャッシュ率を算出し、前記オブジェクト毎のリード率とサーバキャッシュ率に基づいて、前記オブジェクト毎に、前記オブジェクトを前記第１の記憶媒体、前記第２の記憶媒体のいずれに配置するかを決定する、計算機システム。
【請求項５】
請求項１に記載の計算機システムであって、
前記ストレージ装置は、前記複数の固定長領域のうち、前記第１の記憶媒体の記憶領域が割り当てられている固定長領域のデータを、前記第２の記憶媒体の記憶領域の一部にキャッシュする、
ことを特徴とする計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記管理サーバは、指定された時点における、前記複数の固定長領域の状態に関する情報を取得し、前記取得の後、ユーザの指示に基づいて、前記複数の固定長領域の状態を、前記取得した前記複数の固定長領域の状態に関する情報に基づいて、前記指定された時点における状態に戻す機能を有することを特徴とする計算機システム。
【請求項７】
請求項６に記載の計算機システムであって、
前記複数の固定長領域の状態に関する情報は、
前記複数の固定長領域に割り当てられている記憶領域が第１の記憶媒体のものか第２の記憶媒体のものかを表す情報、前記複数の固定長領域の中でサーバキャッシュにデータがキャッシュされている領域についての情報、前記第１の記憶媒体の記憶領域が割り当てられている固定長領域のうち、前記第２の記憶媒体の記憶領域にデータがキャッシュされている領域についての情報、
のうちの少なくとも１つ以上の情報、
であることを特徴とする計算機システム。
【請求項８】
第１の記憶媒体と、前記第１の記憶媒体よりもアクセス性能が高い記憶媒体である第２の記憶媒体とを有するストレージ装置と、
サーバキャッシュを備えるサーバと、
管理サーバ、
とから成る計算機システムの制御方法であって、
前記ストレージ装置は、前記第１または第２の記憶媒体の記憶領域が割り当てられる固定長領域を複数有するボリュームを前記サーバに提供するとともに、前記サーバから前記固定長領域に対して書き込まれるデータを、前記割り当てられた第１または第２の記憶媒体の記憶領域に格納し、
前記ストレージ装置はまた、前記サーバから前記固定長領域に対して所定期間内に発生したリードアクセス数とライトアクセス数とを、前記固定長領域ごとに計数してボリューム管理情報に格納し、
前記サーバは、前記ボリュームに格納されたデータの一部を前記サーバキャッシュにキャッシュした時に、前記サーバキャッシュにキャッシュされたデータに関する情報をキャッシュ制御情報に格納し、
前記管理サーバは、
前記ボリューム管理情報と前記キャッシュ制御情報とを取得し、前記取得したボリューム管理情報とキャッシュ制御情報とに基づいて、前記固定長領域ごとに、前記固定長領域内のデータのうち前記サーバキャッシュにキャッシュされているデータの割合であるサーバキャッシュ率と、前記サーバから前記固定長領域に対して所定期間内に発生するリードアクセス数とライトアクセス数との和に対する、リードアクセス数の割合であるリード率を算出し、
前記固定長領域の各々について、前記サーバキャッシュ率と前記リード率とに基づいて、前記第１、第２いずれの記憶媒体の記憶領域を割り当てるか決定する、
ことを特徴とする計算機システムの制御方法。
【請求項９】
前記固定長領域における前記リード率が第１の閾値を超える値の場合、前記固定長領域に前記第１の記憶媒体を割り当てると決定することを特徴とする、請求項８に記載の計算機システムの制御方法。
【請求項１０】
前記固定長領域における前記リード率が第２の閾値を下回る値の場合、前記固定長領域に前記第２の記憶媒体を割り当てると決定することを特徴とする、請求項８に記載の計算機システムの制御方法。
【請求項１１】
請求項８に記載の計算機システムの制御方法において、
前記サーバは、前記ボリュームに１または複数のオブジェクトを格納して管理するためのデータベースプログラムを有し、
前記データベースプログラムは前記サーバに実行されることにより、前記各オブジェクトが格納される前記ボリューム上の位置情報を管理し、
前記管理サーバは、前記ボリューム管理情報と前記キャッシュ制御情報と前記位置情報とに基づいて、前記オブジェクト毎のリード率とサーバキャッシュ率を算出し、前記オブジェクト毎のリード率とサーバキャッシュ率に基づいて、前記オブジェクト毎に、前記オブジェクトを前記第１の記憶媒体、前記第２の記憶媒体のいずれに配置するかを決定することを特徴とする、計算機システムの制御方法。
【請求項１２】
請求項８に記載の計算機システムの制御方法において、
前記ストレージ装置は、前記複数の固定長領域のうち、前記第１の記憶媒体の記憶領域が割り当てられている固定長領域のデータを、前記第２の記憶媒体の記憶領域の一部にキャッシュする、
ことを特徴とする、計算機システムの制御方法。
【請求項１３】
請求項１２に記載の計算機システムの制御方法において、
前記管理サーバは、指定された時点における、前記複数の固定長領域の状態に関する情報を取得し、前記取得の後、ユーザの指示に基づいて、前記複数の固定長領域の状態を、前記取得した前記複数の固定長領域の状態に関する情報に基づいて、前記指定された時点における状態に戻す機能を有することを特徴とする、計算機システムの制御方法。
【請求項１４】
前記複数の固定長領域の状態に関する情報は、
前記複数の固定長領域に割り当てられている記憶領域が第１の記憶媒体のものか第２の記憶媒体のものかを表す情報、前記複数の固定長領域の中でサーバキャッシュにデータがキャッシュされている領域についての情報、前記第１の記憶媒体の記憶領域が割り当てられている固定長領域のうち、前記第２の記憶媒体の記憶領域にデータがキャッシュされている領域についての情報、
のうちの少なくとも１つ以上の情報、
であることを特徴とする、請求項１３に記載の計算機システムの制御方法。
【請求項１５】
第１の記憶媒体と、前記第１の記憶媒体よりもアクセス性能が高い記憶媒体である第２の記憶媒体とを有するストレージ装置と、
サーバキャッシュを有するサーバと、
管理サーバ、
とから成る計算機システムにおいて、
前記ストレージ装置は、前記第１または第２の記憶媒体の記憶領域が割り当てられる固定長領域を複数有するボリュームを前記サーバに提供するとともに、前記サーバから前記固定長領域に対して書き込まれるデータを、前記割り当てられた第１または第２の記憶媒体の記憶領域に格納し、
前記サーバは、前記ボリュームに格納されたデータの一部を前記サーバキャッシュにキャッシュするとともに、前記サーバキャッシュにキャッシュされたデータに関する情報を格納したキャッシュ制御情報を有しており、
前記管理サーバは前記ストレージ装置から、前記複数の固定長領域の各々に割り当てられている記憶領域が第１の記憶媒体のものか第２の記憶媒体のものかを表す情報を取得し、前記サーバに前記情報を送信し、
前記サーバは、前記情報に基づき、前記固定長領域に割り当てられている記憶領域が前記第１の記憶媒体のものであると判定された場合、前記固定長領域のデータを前記サーバキャッシュにキャッシュし、前記固定長領域に割り当てられている記憶領域が前記第２の記憶媒体のものであると判定された場合、前記固定長領域のデータを前記サーバキャッシュにキャッシュしない、
ことを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムであって、特に、異なる種類の記憶媒体からなる記憶階層を有するストレージ装置と、キャッシュを備えるサーバを備える計算機システムにおける、記憶領域の管理技術に関する。
【背景技術】
【０００２】
近年、ＨＤＤ  （Hard  Disk  Drive）よりも高性能な記録媒体であるＳＳＤ  （Solid  State  Drive）が普及してきている。一般的にＳＳＤはＨＤＤよりも高価であるため、限られた予算内で計算機システムを構築・運用しなければならない場合、ＳＳＤ容量を多く確保することができないため、ＳＳＤの記憶領域を効率的に活用することが求められる。少量の高性能な記憶媒体を効率的に活用するための従来技術として、ストレージ装置に、高価だが高性能な記憶媒体と、性能は低いが低価格な記憶媒体とで構成される記憶階層を設け、Ｉ／Ｏ  （Input／Output）頻度の高いデータを高性能な記憶媒体（上位記憶階層）に配置し、Ｉ／Ｏ頻度の低い領域を低価格な記憶媒体（下位記憶階層）に配置する階層記憶管理技術が存在する。また、ストレージ装置から一旦読み出されたデータをサーバ上の記憶領域（サーバキャッシュ）にコピーし、次回以降のアクセスはサーバキャッシュ上のデータを利用するキャッシュ技術が存在する。【０００３】
また、高性能な記憶媒体をさらに効率的に活用する方式の１つとして、サーバとストレージ装置の両方にキャッシュ記憶を備える計算機システムにおいて、サーバ上のキャッシュ記憶にキャッシュされたデータをストレージ装置上のキャッシュ記憶にキャッシュせず、ストレージ装置上のキャッシュ記憶にキャッシュされたデータをサーバ上のキャッシュ記憶にはキャッシュしないようにする、キャッシュ記憶の制御方法が挙げられる（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００３／０１４０１９８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＳＳＤとＨＤＤの記憶階層を管理する階層記憶管理技術とサーバ上のキャッシュ技術とを使用する場合、上位記憶階層に配置されたデータは既に高速にアクセスされることが可能な状態であるにもかかわらず、サーバ上のキャッシュにもキャッシュされることがあり、高速な記憶領域を無駄に消費することになる。特許文献１では、サーバとストレージ装置のキャッシュ間でのデータ重複を避けることは開示しているが、ストレージ装置の記憶階層について考慮されていない。【０００６】
また、サーバはデータ保全のために、サーバキャッシュをライトスルー方式で利用するため、ライト時にはサーバキャッシュによる性能向上は期待できない。そのため、ライト頻度の高いデータの場合、データがサーバにキャッシュされていても、ストレージ装置の下位記憶階層にデータが格納されている場合、性能が向上しない。
【課題を解決するための手段】
【０００７】
本発明は上記課題を解決するために、性能の異なる複数種類の記憶媒体から成る複数の記憶階層を有するストレージ装置と、ストレージ装置からリードしたデータの一部をキャッシュするためのサーバキャッシュを備えたサーバとを有する計算機システムにおいて、できるだけ多くのデータがサーバキャッシュあるいはストレージ装置の上位記憶階層に格納されるように、データ配置を制御する。具体的には、サーバキャッシュとストレージ装置の上位記憶階層の両方に、同一データが重複格納されないような制御を行う。【０００８】
同一データが重複格納されないようデータ配置を制御する場合、ストレージ装置がデータ配置を制御する方法と、サーバがデータ配置を制御する方法とが存在する。ストレージ装置がデータ配置を制御する場合、ストレージ装置ではサーバキャッシュに格納されたデータのうち、リード率の高いデータについては下位記憶階層に配置し、ライト率が高いデータについては、上位記憶階層に配置する制御を行う。【０００９】
またサーバがデータ配置を制御する場合、ストレージ装置の上位記憶階層に格納されているデータについてはサーバキャッシュにキャッシュせず、ストレージ装置の下位記憶階層に格納されているデータについてはサーバキャッシュにキャッシュする、という制御を行う。
【発明の効果】
【００１０】
従来のシステムの場合、Ｉ／Ｏ頻度の高いデータは、ストレージ装置の上位記憶階層に配置され、かつサーバキャッシュにもキャッシュされる傾向があるため、具体的には、サーバキャッシュとストレージ装置の上位記憶階層の両方に、同一データが重複格納され、高速な記憶媒体を無駄に消費することになる。本発明の計算機システムによれば、サーバキャッシュに格納されているデータはストレージ装置の上位記憶階層に配置しないようにする、あるいはストレージ装置の上位記憶階層に配置されているデータをサーバキャッシュにキャッシュしないように制御するため、サーバキャッシュあるいはストレージ装置の上位記憶階層という高速な記憶媒体に、より多くのデータを配置することができ、計算機システムのＩ／Ｏ性能を向上できる。また本発明の計算機システムでは、サーバキャッシュに格納されているデータであってもライト率の高いデータは、ストレージ装置の高速な記憶階層に配置されるため、ライトアクセスが多い場合にもＩ／Ｏ性能を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】実施例１の概要を示す。
【図２】実施例１における計算機システムの構成を示す。
【図３】サーバ２００上のメモリ２０２に格納されたデータを示す。
【図４】ストレージシステム２６０上のメモリ２６２に格納されたデータを示す。
【図５】管理サーバ２８０上のメモリ２８２に格納されたデータを示す。
【図６】キャッシュ制御情報３０４を示す。
【図７】ＲＡＩＤグループ情報４０２を示す。
【図８】論理ボリューム情報４０３を示す。
【図９】仮想ボリューム情報４０５を示す。
【図１０】階層定義情報４０６を示す。
【図１１】サーバキャッシュ状態、リード率に基づき、ページ階層を変更する流れを示す図である。
【図１２】ページ状態情報５０４を示す。
【図１３】ページ階層ポリシー５０５を示す。
【図１４】ページ階層ポリシー入力画面５０６０を示す。
【図１５】オブジェクト位置情報３０５を示す。
【図１６】オブジェクト状態情報５０８を示す。
【図１７】ストレージキャッシュ制御情報４０８を示す。
【図１８】ストレージキャッシュ制御プログラム４０７の動作を示す。
【図１９】階層・キャッシュ状態情報５１０を示す。
【図２０】階層・キャッシュ状態スナップショット取得画面５１１０を示す。
【図２１】階層・キャッシュ状態復元画面５１２０を示す。
【図２２】実施例２の概要を示す。
【図２３】ページ階層情報５２０を示す。
【図２４】実施例２におけるキャッシュ制御プログラム２５０１の動作の流れを示す図である。
【発明を実施するための形態】
【００１２】
本発明の概要を図１に基づいて説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。
【００１３】
本システムは、データベースプログラム３０２とキャッシュ制御プログラム３０３が動作するサーバ２００と、ＳＳＤ  ２６７とＨＤＤ  ２６８という少なくとも２種類の記憶階層を備えるストレージ２６０と、ページ階層決定プログラム５０３を備える管理サーバ２８０が通信ネットワークを介して接続された計算機システムである。ストレージ２６０は、ページという固定長の領域ごとに、所定期間中に発生したリード・ライトアクセス数を、仮想ボリューム情報４０５に格納し管理している。またストレージ２６０は、記憶階層間のデータ移動をページ単位で行う機能を有する。サーバ２００は、アクセスデータの一部をフラッシュメモリドライブ２０４にキャッシュし、キャッシュデータに関する情報をキャッシュ制御情報３０４に格納して管理している。
【００１４】
ページ階層決定プログラム５０３は、サーバ２００からキャッシュ制御情報３０４を、そしてストレージ２６０から仮想ボリューム情報４０５を取得して、各ページが配置されるべき記憶階層を決定し、ページ移動プログラム４１０に対して、決定した階層へのページの移動を指示する。ページ移動プログラム４１０は、指示に従いページを移動する。より具体的には、ページ階層決定プログラム５０３は、サーバにデータがキャッシュされている比率の高いページのうち、リードアクセス率が高い（リードアクセス率が第１の閾値より高い）ページA  １０１のデータはＨＤＤ  ２６８に配置するべきと決定し、リードアクセス率が低い（リードアクセス率が第２の閾値より低い。ライトアクセス率が高いことを意味する）ページB  １０２のデータはＳＳＤ  ２６７に配置するべきと決定する。
【００１５】
本発明により、サーバにキャッシュされているデータのうち、リードが多いデータはストレージ上のＳＳＤに配置されないようになるため、より多くのデータが高速な記録媒体に配置され、計算機システムのＩ／Ｏ性能を向上できる。またキャッシュされているデータのうち、ライトが比較的多いデータはストレージ上のＳＳＤに配置されるので、ライトアクセス時の性能低下を防止できる。その結果、システム構築費用を増加させることなくＩ／Ｏ性能を向上できるため、コスト・パフォーマンスを向上できる。
【実施例１】
【００１６】
図２は、実施例１における計算機システムの構成を示す。サーバ２００は、ＳＡＮ  （Storage  Area  Network）  ２２０を介してストレージシステム２６０からデータを読み込み、ストレージシステム２６０（以下、「ストレージ２６０」と略記することもある）にデータを書き込む。管理サーバ２８０は、管理ＬＡＮ  ２４０を介してサーバ２００およびストレージ２６０と接続し、サーバ２００およびストレージ２６０から情報を収集し、サーバ２００およびストレージ２６０に指示を送信する。【００１７】
サーバ２００は、ＣＰＵ  ２０１、メモリ２０２、ＨＤＤ  ２０３、フラッシュメモリドライブ２０４、ＳＡＮ  Ｉ／Ｆ  ２０５、ＬＡＮ  Ｉ／Ｆ  ２０６から構成される。ＣＰＵ  ２０１は、後述するデータベースプログラム等の、サーバ２００上で使用される各種プログラムを実行するためのもので、サーバ２００が起動するとき等に、ＨＤＤ  ２０３に格納されたプログラムおよびデータをメモリ２０２にロードし、プログラムを実行して所定の機能を実現する。なお、本明細書では、「プログラムが…処理を実行する」のように、プログラムが動作主体となって特定の処理が実行されるような記載がされている場合があるが、実際はＣＰＵ２０１等のプログラム実行部がプログラムを実行することによって、本明細書に記載の処理または機能が実現されることを意味する。【００１８】
フラッシュメモリドライブ２０４は、サーバ２００で良く用いられるデータをキャッシュしておくために用いられるもので、以下ではフラッシュメモリドライブ２０４のことを「サーバキャッシュ」と呼ぶこともある。１台のサーバ２００に、１つないし複数のフラッシュメモリドライブ２０４が備えられる。またフラッシュメモリドライブ２０４には、ＨＤＤ２０３やストレージ２６０で用いられるＨＤＤ２６８よりもアクセス性能の高い記憶媒体が用いられる。たとえばハードディスクドライブ（ＨＤＤ）用のインタフェースに接続されるＳＳＤ、あるいはＰＣＩ（Peripheral  Component  Interconnect）  Express（登録商標）等の周辺機器用インタフェースに接続されるフラッシュストレージが用いられる。なお、サーバキャッシュの記憶媒体としては、フラッシュメモリなどの不揮発性メモリ以外に、ＳＲＡＭ（Static  RAM）、ＤＲＡＭ（Dynamic  RAM）などの揮発性の記憶媒体を用いてもよい。また、フラッシュメモリドライブ２０４を設けずに、メモリ２０２の一部の領域をサーバキャッシュとして用いても良い。【００１９】
ＳＡＮ  Ｉ／Ｆ  ２０５は、サーバ２００をストレージ２６０に接続するためのインタフェースで、主としてサーバ２００がストレージ２６０のボリュームのデータの読み書きを行う際に用いられる。またＬＡＮ  Ｉ／Ｆ  ２０６は、サーバ２００が管理サーバ２８０と管理情報をやり取りする際に使用される。【００２０】
ストレージシステム２６０は、ストレージコントローラ２６３と、サーバ２００がアクセスするデータを記憶する記憶媒体である、複数のＳＳＤ２６７と複数のＨＤＤ２６８から構成される。ＨＤＤ２６８はいわゆる磁気ディスク装置であり、ＳＳＤ２６７はフラッシュメモリドライブ２０４と同様に、ＨＤＤ２６８よりもアクセス性能の高い記憶媒体であるフラッシュメモリを用いた記憶装置である。【００２１】
またストレージコントローラ２６３は、ＣＰＵ  ２６１、メモリ２６２、ＳＡＮ  Ｉ／Ｆ  ２６４、ＬＡＮ  Ｉ／Ｆ  ２６５、ドライブＩ／Ｆ  ２６６とから構成される。ＣＰＵ  ２６１は、サーバ２００からのリード命令およびライト命令を受け付け、ＳＳＤ  ２６７およびＨＤＤ  ２６８を制御する。メモリ２６２は、ＣＰＵ２６１がＳＳＤ  ２６７およびＨＤＤ  ２６８を制御するためのドライブ制御プログラムなどのプログラムの他、各種の制御情報を格納し、ＣＰＵ  ２６１はメモリ２６２上のプログラムを実行することで、各種処理を行う。ＳＡＮ  Ｉ／Ｆ  ２６４は、ストレージ２６０とサーバ２００間の通信（データ入出力）を行う場合に用いられ、ＬＡＮ  Ｉ／Ｆ  ２６５はストレージ２６０が管理サーバ２８０と管理情報のやり取りを行う際に用いられるインタフェースである。またドライブＩ／Ｆ  ２６６は、ＳＳＤ  ２６７またはＨＤＤ  ２６８と、ストレージコントローラ２６３とを接続するためのインタフェースである。なお、以下ではＳＳＤ２６７とＨＤＤ２６８のことを、「ディスク」あるいは「ドライブ」と呼ぶこともある。【００２２】
本発明の実施例におけるストレージシステム２６０は、記憶領域の管理のために次のような構成を定義する。まず、複数台（たとえば４台）のディスク（ＳＳＤ  ２６７またはＨＤＤ  ２６８）から構成されるＲＡＩＤグループを定義する。ストレージ２６０は、いわゆるＲＡＩＤ（Redundant  Arrays  of  Inexpensive  DisksまたはRedundant  Arrays  of  Independent  Disks）技術を用いて、ディスク障害時に備えてデータを冗長化して複数のディスクに分散記憶するが、１つのＲＡＩＤグループには、データを分散記憶する際にデータが記憶される対象のディスクの集合を定義している。本発明の実施例では、１つのＲＡＩＤグループに含まれるディスクの種類は同一のものであるとする。たとえば１番目のＲＡＩＤグループはＳＳＤ２６７のみを用いたＲＡＩＤグループ、２番目のＲＡＩＤグループはＨＤＤ２６８（たとえばＳＡＳ[Serial  Attached  SCSI]  ＨＤＤ）のみを用いたグループである。またＲＡＩＤグループは、１または複数の連続領域に分割され、ストレージ２６０は、これら分割された連続領域を、それぞれ論理ボリュームとして管理する。【００２３】
なお、ＲＡＩＤグループと論理ボリュームは、ストレージ２６０が記憶領域を管理するために内部的に用いる管理単位であり、外部（たとえばサーバ２００）から認識されるものではない。ストレージ２６０は、サーバ２００がデータの読み書きを行うために用いるための記憶媒体（ボリューム）として、仮想ボリュームを定義しサーバ２００に提供する。【００２４】
本発明の実施例における仮想ボリュームとは、いわゆるシン・プロビジョニング（Thin  provisioning）技術によって形成されるボリュームであって、ストレージ２６０が仮想ボリュームを定義（作成）すると、サーバ２００は当該仮想ボリュームを、所定のサイズ（記憶領域）を有するディスクボリュームであると認識する。しかし初期状態では、仮想ボリュームに特定の記憶領域は割り当てられていない。ストレージ２６０は、仮想ボリュームのアドレス空間を複数の固定サイズ（たとえば１０ＭＢ）単位で管理しており、この固定サイズの記憶領域のことを本明細書では「ページ」と呼ぶ。言い換えれば、各仮想ボリュームは複数のページから構成されているものである。ストレージ２６０は、このページ毎に記憶領域を割り当てる。具体的には、サーバ２００から仮想ボリュームに対する書き込み要求を受け付けると、ストレージ２６０は、書き込み要求で指定された書き込み位置（LBA:  Logical  Block  Address）に対応するページに記憶領域が割り当てられているか否か確認し、ページに記憶領域が割り当てられていない場合、そのページに論理ボリューム中の未使用領域を割り当て、この割り当てられた記憶領域にデータ（ライトデータ）を書き込む。シン・プロビジョニング技術の詳細な実現態様は、たとえば米国特許出願公開第２０１１／０２０８９４０号明細書、米国特許出願公開第２０１０／０２０５３９０号明細書に開示されており、参考として本明細書に組み込まれる。【００２５】
管理サーバ２８０は、ＣＰＵ  ２８１、メモリ２８２、ＨＤＤ  ２８３、ＬＡＮ  Ｉ／Ｆ  ２８４とから構成される。ＣＰＵ  ２８１は、管理サーバ２８０上で稼働する各種プログラム（後述）を実行するためのものであり、ＨＤＤ  ２８３に格納された各種プログラムおよびデータをメモリ２８２にロードし、プログラムを実行する。ＬＡＮ  Ｉ／Ｆ  ２８４は、管理サーバ２８０を管理ＬＡＮ２４０に接続するためのインタフェースで、サーバ２００およびストレージ２６０と通信するために用いられる。【００２６】
続いて図３を用いて、サーバ２００上のメモリ２０２に格納されたデータの内容について説明する。ＯＳプログラム３０１は、データベースプログラム３０２を実行するプログラムである。データベースプログラム３０２は、ストレージシステム２６０からデータを読み込み、計算等の処理を行い、ストレージシステム２６０に処理結果を書き込む等の処理を行う、業務プログラムの一例である。キャッシュ制御プログラム３０３は、サーバ２００がストレージシステム２６０から読み込んだデータおよび書き込んだデータをフラッシュメモリドライブ２０４にキャッシュし、サーバ２００が再度同じデータを読み込む場合にストレージシステム２６０から読み込まずにフラッシュメモリドライブ２０４から当該データを読み出すためのプログラムである。キャッシュ制御情報３０４は、フラッシュメモリドライブ２０４上のキャッシュデータが格納されている領域を管理するための情報である。また、オブジェクト位置情報３０５については、後述する[変形例１]で用いられる情報であるため、[変形例１]を説明する際に、内容を説明する。【００２７】
図４は、ストレージシステム２６０上のメモリ２６２に格納されたデータの内容を示している。デバイス制御プログラム４０１は、サーバ２００からの仮想ボリュームに対するリード命令またはライト要求（コマンド）を受け付け、ＲＡＩＤグループ情報４０２、論理ボリューム情報４０３、仮想ボリューム情報４０５、階層定義情報４０６を用いて、ＳＳＤ  ２６７またはＨＤＤ  ２６８に対するデータの読み書きを実行するためのプログラムである。ページ移動プログラム４１０は、ページに割り当てられている記憶領域を変更（たとえばＳＳＤ２６７の記憶領域が割り当てられていたページについて、ＨＤＤ２６８の記憶領域が割り当てられるように変更）し、それとともに変更前にページに割り当てられていた記憶領域に格納されていたデータを変更後の記憶領域へと移動する処理を行うプログラムである。ＲＡＩＤグループ情報４０２は、ＳＳＤ  ２６７またはＨＤＤ  ２６８から構成されるＲＡＩＤグループの構成を管理するための情報である。論理ボリューム情報４０３は、論理ボリュームとＲＡＩＤグループの領域とを対応付ける情報である。仮想ボリューム情報４０５は、仮想ボリュームのページと論理ボリュームの領域との対応関係を管理するための情報である。階層定義情報４０６は、階層とドライブ種別を対応付ける情報である。また、ストレージキャッシュ制御プログラム４０７、ストレージキャッシュ制御情報４０８については、後述する[変形例３]で用いられる情報であるため、[変形例３]を説明する際に、内容を説明する。【００２８】
図５は、管理サーバ２８０上のメモリ２８２に格納されたデータの内容を示している。サーバキャッシュ状態取得プログラム５０１は、サーバ２００からキャッシュ制御情報３０４を取得するためのプログラムである。ストレージ階層情報取得プログラム５０２は、ストレージ２６０から仮想ボリューム情報４０５を取得するためのプログラムである。ページ階層決定プログラム５０３は、仮想ボリュームの各ページについて、ページに割り当てられるべき記憶領域の記憶階層を決定する処理を行うためのプログラムである。ページ状態情報５０４は、各ページの状態を示す情報である。ページ階層ポリシー５０５は、ページを配置する階層を決定するために用いられる情報である。ページ階層ポリシー入力プログラム５０６は、ユーザ・管理者がページ階層ポリシー５０５を設定するためのＧＵＩ  （Graphical  User  Interface）を提供するプログラムである。【００２９】
また、オブジェクト位置情報取得プログラム５０７、オブジェクト状態情報５０８、階層・キャッシュ状態情報５１０、階層・キャッシュ状態スナップショット取得プログラム５１１、階層・キャッシュ状態復元プログラム５１２については、後述する[変形例１]、  [変形例４]で用いられる情報であるため、[変形例１]以降の説明の際に、内容を説明する。【００３０】
続いて図６を用いて、サーバ２００が管理するキャッシュ制御情報３０４の内容を説明する。本実施例において、サーバ２００のフラッシュメモリドライブ２０４は、ＯＳプログラム３０１の働きにより、１つまたは複数のボリューム（ディスクデバイス）として、キャッシュ制御プログラム３０３から認識され、フラッシュメモリドライブ２０４へのデータの読み書きは、ＨＤＤ２０３等へのディスクデバイスへのデータ読み書きと同様の処理を行うことで実現される。以下では、このフラッシュメモリドライブ２０４からなるボリュームのことを「キャッシュ先ボリューム」と呼ぶ。サーバ２００がストレージ２６０のボリューム（仮想ボリューム）に対してデータアクセス（読み出し）を行う際、キャッシュ制御情報３０４を参照し、フラッシュメモリドライブ２０４つまりキャッシュ先ボリュームにアクセス対象のデータが格納されているかを確認する。キャッシュ先ボリュームにアクセス対象データが格納されていない場合には、サーバ２００はストレージ２６０にアクセスし、仮想ボリュームからデータを読み出す。その後読み出したデータをキャッシュ先ボリュームに格納（キャッシュ）するとともに、キャッシュ制御情報３０４に、データの読み出されたボリューム（仮想ボリューム）のボリューム名（キャッシュ元ボリューム名）、データを読み出した位置（先頭アドレス）とその長さ、読み出したデータの格納先であるキャッシュ先ボリュームのボリューム名とその格納位置（先頭アドレス）とを記録する。また本発明の実施例では、サーバ２０２はストレージ２６０に対してデータ書き込みを行う際、いわゆるライトスルー方式で書き込みを行う。つまり、サーバ２００はデータがストレージ２６０に正常に書き込まれた時点で、書き込み要求を行ったプログラム等に対して書き込み終了を報告する。ライトスルー方式が用いられる場合、サーバキャッシュは書き込み処理の高速化には貢献しないが、ライト時にライトデータをキャッシュに格納しておくと、その後サーバ２００から当該ライトデータの読み出し要求があった際にアクセスが高速化される利点がある。そのため、サーバ２００がストレージ２６０のボリューム（仮想ボリューム）に対してデータ書き込みを行う際には、まず書き込み対象のデータをメモリ２０２上に用意し、続いてメモリ２０２上のデータをストレージ２６０のボリュームに書き出す。ストレージ２６０へのデータ書き出しが終了した後、キャッシュ制御プログラム３０３はストレージ２６０へ書き込んだデータと同じデータを、メモリ２０２からフラッシュメモリドライブ２０４へと格納し、併せてキャッシュ制御情報３０４に、データの書き込まれたボリューム（仮想ボリューム）のボリューム名（キャッシュ元ボリューム名）、データを書き込んだ仮想ボリューム上の位置（先頭アドレス）とその長さ、キャッシュ先ボリュームのボリューム名とその格納位置（先頭アドレス）とを記録する。【００３１】
キャッシュ制御情報３０４の各行は、キャッシュ元ボリューム名６０１、先頭アドレス６０２、長さ６０３により特定されるストレージ２６０の仮想ボリューム上領域に格納されているデータが、キャッシュ先ボリューム名６０４、先頭アドレス６０５により示されるフラッシュメモリドライブ２０４上の領域にキャッシュされていることを示す。最終アクセス時間６０６は、キャッシュ元ボリューム名６０１、先頭アドレス６０２、長さ６０３により示されるストレージ２６０上の領域または、キャッシュ先ボリューム名６０４、先頭アドレス６０５により示されるフラッシュメモリドライブ２０４上の領域の領域に最後にアクセスした時刻を示す。なお、本発明の実施例において、先頭アドレス６０２、６０５は、LBA  （Logical  Block  Address）で表されており、長さ６０３の単位はブロック数（なお、１ブロックとはたとえば５１２バイトの長さである）であるが、先頭アドレス６０２、６０５、長さ６０３を、その他の単位、たとえばバイト等の単位を用いて表してもよい。【００３２】
続いて図７ないし１０を用いて、ストレージ２６０で管理する情報について説明する。【００３３】
図７は、ＲＡＩＤグループ情報４０２の内容を示している。ＲＡＩＤグループ情報４０２の各行は、ストレージ２６０内に構成されているＲＡＩＤグループの情報を表している。ストレージ２６０では、構成した各ＲＡＩＤグループに、ストレージ２６０内で一意な名称（識別情報）を付与して管理し、またＲＡＩＤグループを構成する各ディスク（ＨＤＤ２６８やＳＳＤ２６７）  にも一意な名称を付与して管理しており、ＲＡＩＤグループ名８０１には、ＲＡＩＤグループの名称が格納される。そしてドライブ名８０２には、当該ＲＡＩＤグループを構成するドライブ（ＨＤＤ２６８やＳＳＤ２６７）の名称が格納される。ＲＡＩＤレベル８０３には、当該ＲＡＩＤグループの冗長化の方式を表すＲＡＩＤレベルが格納される。ドライブ種別８０４は、当該ＲＡＩＤグループを構成するドライブ（ドライブ名８０２に示された各ドライブ）の種類、たとえばＳＳＤ、ＳＡＳ  ＨＤＤ等の種別を示す。容量８０５は、当該ＲＡＩＤグループの利用可能な容量を示す。【００３４】
図８は、論理ボリューム情報４０３の内容を示す。論理ボリューム情報４０３の各行は、ストレージ２６０で定義されている各論理ボリュームのサイズと、各論理ボリュームがＲＡＩＤグループ内のどの位置に配置されているかを示している。ＲＡＩＤグループと同様、ストレージ２６０では、各論理ボリュームに一意な名称を付与して管理しており、論理ボリューム名９０１にはその論理ボリュームの名称が格納される。長さ９０２は当該論理ボリュームの長さ（ブロック数）を表す。ＲＡＩＤグループ名９０３は、当該論理ボリュームが配置されるＲＡＩＤグループの名称を表し、先頭アドレス９０４は当該論理ボリュームの先頭アドレスのブロックがＲＡＩＤグループ内のどの位置に配置されるかを表しており、論理ボリュームがＲＡＩＤグループ名９０３で特定されるＲＡＩＤグループの、先頭アドレス９０４で特定される位置から、長さ９０２で示されている範囲にわたって配置されることを示す。【００３５】
図９は、仮想ボリューム情報４０５の内容を示す。先に述べたとおり、本発明の実施例におけるストレージ２６０は、サーバ２００から仮想ボリュームの領域に対して最初にアクセスがあった時点で、そのアクセス要求で指定された位置に対応するページに論理ボリューム中の固定サイズの未使用領域を割り当てる。なお、本発明の実施例では、ページのサイズは１０ＭＢである。また各ページにはストレージ２６０内で一意なＩＤを割り当てて管理しており、そのＩＤを「ページＩＤ」と呼ぶ。【００３６】
仮想ボリューム情報４０５の各行には、仮想ボリュームのページＩＤ１１０１、仮想ボリューム名１１０２、先頭アドレス１１０３、論理ボリューム名１１０４、先頭アドレス１１０５、リード数１１０６、ライト数１１０７が含まれている。ページＩＤ  １１０１は、仮想ボリューム名１１０２、先頭アドレス１１０３により特定される仮想ボリューム上の領域に対応するページのページＩＤを示す。そして、論理ボリューム名１１０４、先頭アドレス１１０５は、このページに対して割り当てられている論理ボリュームの領域が、どの論理ボリューム内のどの位置の領域であるかを表している。なお、本実施例において、先頭アドレス１１０３、１１０５の単位はいずれもメガバイト（ＭＢ）であるが、その他の単位（ページ、ブロック等）を用いてもよい。また、本実施例において、各ページのサイズは固定長（１０ＭＢ）であるため、各ページに割り当てられている論理ボリュームの領域はいずれも１０ＭＢである。そしてページサイズが１０ＭＢであるため、先頭アドレス１１０３、１１０５の欄には１０ＭＢの倍数の値が格納される。【００３７】
また、ストレージ２０６は、所定期間内にサーバ２００からリード・ライトアクセスがあった回数をページごとに計数、記録している。リード数１１０６は、所定期間内にそのページにリードアクセスがあった回数を示す。ライト数１１０７は同様に、所定期間内にそのページへのライトがあった回数を示す。リード数１１０６及びライト数１１０７の欄には、初期状態ではいずれも０が格納されており、ストレージ２０６は、ページに対してリードあるいはライト要求を受け付けるたびに、当該ページに対応するリード数１１０６またはライト数１１０７の回数をカウントアップしていく。そして所定期間が経過した時点で、リード数１１０６またはライト数１１０７の回数をすべて０にリセットする。【００３８】
なお、本発明の実施例において、仮想ボリューム情報４０５の各行は、サーバ２００から仮想ボリュームの領域に対して最初にアクセスがあった時点で、そのアクセス要求で指定された位置に対応するページＩＤの行が定義され、仮想ボリューム情報４０５に追加される。そしてその時点で、論理ボリュームの未使用領域が選択されて、論理ボリューム名１１０４、先頭アドレス１１０５の欄に、選択された論理ボリュームの領域の情報が格納される。サーバ２００から仮想ボリュームの領域に対して最初にアクセスがあった時に割り当てられる論理ボリューム領域の選択方法は、さまざまな方法があり得る。たとえば最も性能の高いＳＳＤ２６７で構成される論理ボリュームから優先的に未使用領域を選択する、最も性能の低い記憶媒体で構成される論理ボリュームから優先的に未使用領域を選択する等の方法がある。【００３９】
また、その他の実施形態として、仮想ボリュームが定義された時点で、仮想ボリュームの全ページに論理ボリュームの未使用領域を割り当て、仮想ボリューム情報４０５に仮想ボリュームの全ページの情報を格納する形態もあり得る。【００４０】
図１０は、階層定義情報４０６の内容を示す。本発明の実施例におけるストレージ２０６は先に述べたとおり、ＨＤＤ２６８と、ＨＤＤ２６８よりもアクセス性能が高いＳＳＤ２６７という、２種類のドライブを備える。さらにＨＤＤ２６８として、ＳＡＳ  （Serial  Attached  SCSI）  ＨＤＤと、ＳＡＳ  ＨＤＤよりアクセス性能の低いＳＡＴＡ  （Serial  ATA）  ＨＤＤの２種類のドライブが搭載され、都合３種類のドライブを備えることができる。そしてストレージ２０６は、ＳＳＤ２６７で構成されたＲＡＩＤグループまたは論理ボリュームの記憶領域、ＳＡＳ  ＨＤＤで構成されたＲＡＩＤグループまたは論理ボリュームの記憶領域、ＳＡＴＡ  ＨＤＤで構成されたＲＡＩＤグループまたは論理ボリュームの記憶領域を、それぞれ異なる記憶階層の記憶領域として管理する。図１０の階層定義情報４０６において、階層１２０１は、ドライブ種別１２０２の欄に格納されている種類のドライブで構成される記憶領域が、どの階層に属するかを示している。これによりストレージ２６０は、ＳＳＤ２６７で構成されたＲＡＩＤグループまたは論理ボリュームの記憶領域は階層１の記憶領域、ＳＡＳ  ＨＤＤで構成されたＲＡＩＤグループまたは論理ボリュームの記憶領域は階層２の記憶領域、ＳＡＴＡ  ＨＤＤで構成されたＲＡＩＤグループまたは論理ボリュームの記憶領域は階層３の記憶領域であると判断することができる。なお本明細書では、図１０の階層定義情報４０６における階層１２０１により示される階層の番号が小さい階層ほど「上位階層」の記憶領域と呼ばれ、上位階層の記憶領域は下位階層の記憶領域よりもアクセス性能が高い。そして階層の番号が大きい記憶階層は、「下位階層」の記憶領域と呼ばれる。【００４１】
続いて、図１１を用いて、本発明の実施例１におけるストレージ２６０が、仮想ボリューム上のデータの記憶される記憶階層を変更する処理について説明する。本発明の実施例１では、管理サーバ２８０が１時間に１度、１日に１度などの周期で、定期的にこの処理を実行する。【００４２】
図１１の処理について説明する前に、本発明の実施例で用いられる「ページ移動」の語について説明する。上で説明したとおり、本発明の実施例におけるページには、論理ボリュームの領域が割り当てられている。また論理ボリュームは階層１〜３のいずれかの記憶領域であるから、各ページには、階層１、階層２または階層３の記憶領域が割り当てられていると言い換えることができる。【００４３】
本発明における「ページ移動」とは、ページに割り当てられている記憶領域を、現在割り当てられている記憶領域とは異なる記憶領域に変更することをいう。たとえば「ページを階層２に移動する」という場合、現在ページに階層１あるいは階層３の領域が割り当てられている時に、当該ページに階層２の領域が割り当てられるように変更することを意味する。またページに割り当てられる記憶領域を変更する際には、現在割り当てられている記憶領域に格納されているデータを、変更後の記憶領域に移動する処理も行われる。これにより、ページ中のデータが格納される記憶階層、つまり記憶位置が変更されるが、上位のサーバ２００にはデータの記憶位置が変更されたことは認識されず、記憶階層間のデータ移動が透過的に行われることになる。以降、本明細書で「ページ移動」の語が用いられている箇所では、上記の処理が行われていることを意味する。また、ページ移動処理が行われることで、データも移動されるため、ページを異なる記憶階層に移動する、と表現する代わりに、ページのデータを異なる記憶階層に移動する、と表現することもある。なお、ページ移動の詳細は、例えば米国特許出願公開第２０１３／００３６２５０号明細書に開示されており、参考として本明細書に組み込まれる。【００４４】
以下、図１１の処理について説明していく。処理２３０１において、サーバキャッシュ状態取得プログラム５０１は、キャッシュ制御情報３０４をサーバ２００から取得し、ストレージ階層情報取得プログラム５０２は、仮想ボリューム情報４０５をストレージ２６０から取得する。処理２３０２において、ページ階層決定プログラム５０３は、ページ状態情報５０４（図１２）を作成する。【００４５】
図１２を用いて、ページ状態情報５０４の内容について説明する。ページ状態情報５０４の各行には、仮想ボリューム情報４０５のページＩＤ  １１０１に格納されている各ページについて、ページＩＤ  １５０１とリード率１５０２とサーバキャッシュ率１５０３とが格納される。【００４６】
リード率１５０２は、そのページへの総Ｉ／Ｏ数に対するリード数の割合を示す情報で、本実施例では、仮想ボリューム情報４０５に格納されているリード数１１０６、ライト数１１０７を用いて計算する。具体的には、リード数１１０６を、リード数１１０６とライト数１１０７の和で割った値をリード率１５０２としている。例えば図９を参照すると、仮想ボリューム情報４０５の行１１０８に格納されているページ０について、リード数１１０６が９５、ライト数１１０７が５であるから、図１５のページ状態情報５０４においてページ０の情報が格納されている行（行１５０４）では、リード率１５０２は９５÷（９５＋５）＝０.９５  （９５％）である。【００４７】
サーバキャッシュ率１５０３もリード率１５０２と同様に、仮想ボリュームの各ページについて計算される値である。具体的には、ページサイズに対して、サーバキャッシュ（フラッシュメモリドライブ２０４）にキャッシュされているデータ量の割合を表す値で、仮想ボリューム情報４０５とキャッシュ制御情報３０４とを用いて算出する。キャッシュ制御情報３０４には、サーバキャッシュにキャッシュされているデータのオリジナルデータが格納されている領域についての情報（キャッシュ元ボリューム名６０１、先頭アドレス６０２、長さ６０３）が含まれているので、この情報と仮想ボリューム情報４０５の仮想ボリュームページＩＤ１１０１、仮想ボリューム名１１０２、先頭アドレス１１０３とを用いると、各ページについて、サーバキャッシュにキャッシュされているデータ量を算出することができる。そしてその値をページサイズで割ることでサーバキャッシュ率１５０３が算出できる。例えば、サーバキャッシュにキャッシュされているデータ量が９ＭＢであるページがあった場合、本発明の実施例ではページサイズが１０ＭＢであるから、キャッシュ率１５０３は９÷１０＝０.９  （９０％）になる。ページ階層決定プログラム５０３は、各ページについて上記のリード率１５０２、サーバキャッシュ率１５０３の計算を行い、ページ状態情報５０４に格納していく。【００４８】
処理２３０３において、ページ階層決定プログラム５０３は、ページ階層ポリシー５０５と、処理２３０２において算出したページ状態情報５０４とに基づき、各ページが配置（移動）されるべき記憶階層を決定する。【００４９】
ページ階層ポリシー５０５について、図１３を用いて説明する。本発明の実施例における計算機システムは、各ページについて、リード率１５０２とサーバキャッシュ率１５０３が所与の条件を満たすか判定し、所与の条件を満たすと判定されたページのデータを所定の階層に配置（移動）すると決定する。ページ階層ポリシー５０５はその条件を格納するためのもので、リード率条件１６０１、サーバキャッシュ率条件１６０２、階層１６０３の欄が設けられている。各行がそれぞれページ配置の条件（ポリシー）を表している。たとえば図１３の行１６０４は、リード率条件１６０１が９０％超でかつサーバキャッシュ率条件１６０２が７０％超という条件を満たすページを、階層１６０３で指定されている階層（階層２。たとえば図１０の階層定義情報４０６に基づけば、ＳＡＳ  ＨＤＤで構成された記憶階層）に移動する、というポリシーを表している。【００５０】
なお、図１３において、行１６０４、１６０５のポリシーが定義されている理由は以下のとおりである。ページ中のデータの多くがサーバキャッシュにキャッシュされており、かつそのデータのアクセス傾向がリード中心である場合、サーバ２００はサーバキャッシュ上のデータにアクセスし、ストレージ２６０にアクセスすることは少ないため、当該ページのデータを上位階層の記憶領域に配置する必要性は少ない。そのため、リード率の高いページのデータを下位階層に移動するポリシーを採用すると、他のデータを上位階層に配置することができ、サーバキャッシュ、ＳＳＤ２６７を有効活用することができる。また当該ページがライトされる頻度が高い場合、ライト時にはサーバキャッシュにデータが格納されていてもアクセス性能は向上しないため、ストレージ２６０の上位記憶階層にデータを配置することが望ましい。そのため、行１６０５のポリシーが定められている。【００５１】
またページ階層ポリシー５０５の各条件は、計算機システムの管理者が、管理サーバ２８０のページ階層ポリシー入力プログラム５０６によって提供されるＧＵＩを用いて管理サーバ２００に条件を入力することで、設定される（つまりページ階層ポリシー５０５に格納される）。図１４は、ページ階層ポリシー入力画面の一例５０６０を示している。計算機システムの管理者が、リード率１７０１、サーバキャッシュ率１７０２、階層１７０３の項目を入力し、全項目の入力後にボタン１７０７を押すことによって、ページ階層ポリシー入力プログラム５０６がページ階層ポリシー５０５にその内容を反映する。【００５２】
処理２３０４において、ページ階層決定プログラム５０３は、各ページについて、処理２３０３において決定した階層にページを配置（移動）する旨の指示を、ストレージ２６０上のページ移動プログラム４１０に対して送信する。ページ移動プログラム４１０は、仮想ボリューム情報４０５、論理ボリューム情報４０３、階層定義情報４０６に基づいて、各ページに割り当てられている記憶領域の記憶階層と、ページ階層決定プログラム５０３から指示された記憶階層の情報とが一致しているかを判定する。一致している場合には、そのページは移動の必要がないため何も行わないが、一致していない場合には、そのページをページ階層決定プログラム５０３から指示された階層に移動する。またページ移動と同時に仮想ボリューム情報４０５を更新する。全ページについてページ移動処理が完了すると、この処理は終了する。【００５３】
なお、ページ階層ポリシー５０５に存在するいずれの条件にも該当しないページについては、ページ移動を行わない。あるいは、Ｉ／Ｏ頻度が高いページを高速な上位階層に移動し、Ｉ／Ｏ頻度が少ないページを低速な下位階層に移動する等の、周知の階層記憶管理機能で実施されるようなページ移動を行うようにしてもよい。【００５４】
実施例１によれば、サーバにキャッシュされているデータのうち、リードが多いデータについては低速な下位階層のストレージ領域が割り当てられ、サーバのキャッシュとストレージの上位階層（ＳＳＤ）の両方に重複してデータが格納されることが抑制されるため、より多くのデータを高速な記録媒体に配置することができ、Ｉ／Ｏ性能を向上できる。また、ライト処理については、サーバではライトスルーでライト処理が行われるため、サーバでのキャッシュは有効に働かないが、ページ階層ポリシー５０５の設定により、キャッシュされているデータのうち、リードとライトが混在するデータについては、ストレージ260の高速な記憶階層に配置することができるので、ライト処理の性能低下を防止できる。【００５５】
[変形例１]
これまで説明してきた実施例１では、ストレージ２６０の管理するページ単位で記憶階層を制御（変更）する実現形態であったが、例えばデータベーステーブル、インデックスなど、データベースプログラム３０２等のアプリケーションが管理するオブジェクト又はオブジェクトの一部を単位として、記憶階層を制御することとしてもよい。この場合に計算機システムが管理する情報について説明する。図１５は、データベースプログラム３０２が生成するオブジェクト位置情報３０５を示す。各行の、オブジェクト名７０１、先頭アドレス７０３、長さ７０４で特定される領域は、データベースプログラム３０２において使用されるオブジェクトの領域を表す。なお、オブジェクト名７０１で特定されるオブジェクトはいずれも、データベースプログラム３０２がストレージ２６０のボリュームに格納して管理しているオブジェクトである。またオブジェクト種別７０２は、オブジェクトの種別を示す。そして当該オブジェクトの領域は、同じ行のボリューム名（仮想ボリューム名）７０５、先頭アドレス７０６により示されるストレージ２６０上の領域に配置されていることを示す。また、図１５では、テーブルAというオブジェクトの情報は、複数の行（行７０９、７１０）に記載されているが、これはテーブルAというオブジェクトが、行７０９、７１０で定義されている２つの領域から構成されていることを示している。リード率７０７は、オブジェクト名７０１、先頭アドレス７０３、長さ７０４で特定される領域への総Ｉ／Ｏ数（リード数＋ライト数）に対するリード数の割合を示す情報で、キャッシュ率７０８はオブジェクト名７０１、先頭アドレス７０３、長さ７０４で特定される領域の中の何％の領域がサーバキャッシュにキャッシュされているかを表す情報であり、キャッシュ制御情報３０４を参照して作成する。これら情報は、データベースプログラム３０２が常時維持管理している。【００５６】
続いて、オブジェクトを単位としたストレージ階層の変更方法について説明する。管理サーバ２８０のオブジェクト位置情報取得プログラム５０７が、オブジェクト位置情報３０５と仮想ボリューム情報４０５を取得し、オブジェクト位置情報３０５と仮想ボリューム情報４０５に基づき、オブジェクト毎のリード率とキャッシュ率を算出して、オブジェクト状態情報５０８を作成する。オブジェクト状態情報５０８の内容は、図１６に示されている。オブジェクト名１８０１は、オブジェクト名を示す。リード率１８０２は、そのオブジェクトへの総Ｉ／Ｏ数に対するリード数の割合を示す。サーバキャッシュ率１８０３は、そのオブジェクトの領域のうち、サーバにキャッシュされている領域の割合を示す。【００５７】
なお、リード率１８０２は以下の方法で計算される。まず、オブジェクト位置情報３０５を用いて、あるオブジェクトが配置されている領域が、どのボリュームのどの領域（ボリューム名７０５、先頭アドレス７０６、長さ７０４で特定される領域）に配置されているかを特定し、続いて仮想ボリューム情報４０５から、この特定された領域が仮想ボリュームのどのページ（１または複数）に配置されているかを特定する。次に特定した各ページのリード数１１０６を合計し、そのオブジェクトに対して発生した総リード数を求める。同様に、特定した各ページのライト数１１０７を合計し、そのオブジェクトに対して発生した総ライト数を求める。そのオブジェクトの総リード数と総ライト数から、リード率を算出し、リード率１８０２に記録する。リード率は、「総リード数÷（総リード数＋総ライト数）」で算出される。なお、オブジェクトがページの一部分のみに配置されている場合には、あらかじめ設定されたルール、例えば、ページの一部分のみに配置されている場合でもそのページ全てにオブジェクトが配置されているとみなす、というルールに則って上述の処理を行う。また、サーバキャッシュ率１８０３は以下の方法で計算される。オブジェクト位置情報３０５の各行で定義されている領域について、長さ７０４とキャッシュ率７０８の積を計算することで、この領域についてサーバキャッシュにキャッシュされているデータの量が算出される。そして、オブジェクトの各領域についてのキャッシュされているデータ量を合計することで、オブジェクトのキャッシュされているデータ量を計算する。続いてオブジェクトの各領域についての長さ７０４の和を算出することで、オブジェクトサイズを算出する。そしてキャッシュされているデータ量をオブジェクトサイズで除算することで、オブジェクトのキャッシュ率が算出される。【００５８】
そしてオブジェクト階層ポリシーに基づき、各オブジェクトの階層を決定した後、各オブジェクトの移動を行う。なお、本実施例においてのオブジェクト階層ポリシーとはページ階層ポリシー５０５と同様の条件が定義されたもので、所定のリード率条件とサーバキャッシュ率条件を満たすオブジェクトを、指定された階層にオブジェクト単位で移動するというポリシーが定められている。移動の具体的な方法は、例えば米国特許出願公開第２０１１／０２０２７０５号明細書に記載の方法により、オブジェクト位置情報３０５に基づいて各オブジェクトが格納されているページを特定し、特定されたページが現在存在する記憶階層が、決定されたオブジェクトの階層と等しいか否か判断し、等しくない（決定されたオブジェクトの階層と異なる階層に配置されている）と判断されたページを、決定されたオブジェクトの階層に移動させる。なお、この時、一つのページに異なるオブジェクトの一部が格納されている状態が発生した場合には、予め設定されたルールにのっとって処理する。予め設定されたルールとはたとえば、決定された２以上の階層のうち上位の階層にあわせてページ移動を行うことにする、というルールである。このルールに従う場合、階層１に配置すべきオブジェクトと、階層２に配置すべきオブジェクトが同一ページに配置されている時には、そのページを階層１に移動すると決定する。【００５９】
上で説明した例では、オブジェクト位置情報３０５を集約して、オブジェクト毎にリード率とキャッシュ率を算出して、オブジェクト単位に記憶階層の移動要否を決定しているが、オブジェクト状態情報を作成せず、オブジェクト位置情報３０５の各行に格納されている情報（オブジェクトの一部）を単位として、記憶階層移動可否の決定と、記憶階層の移動を行うようにしてもよい。【００６０】
[変形例２]
実施例１における計算機システムでは、サーバキャッシュ状態取得プログラム５０１、ストレージ階層情報取得プログラム５０２、ページ階層決定プログラム５０３は、管理サーバ２８０上に配置されているが、これらをストレージ２６０上に設け、ストレージ２６０がキャッシュ制御情報３０４をストレージ２６０がサーバ２００から直接取得してページ移動要否の決定を行うようにしてもよい。その場合、図１１の処理を、キャッシュ制御情報３０４更新が発生した時（たとえばサーバ２００から仮想ボリュームに対してアクセスを実行し、サーバ側のキャッシュであるフラッシュメモリドライブ２０４に格納されるデータの状態が変化した時）にその都度、実行するようにしてもよい。【００６１】
また、サーバキャッシュ状態取得プログラム５０１、ストレージ階層情報取得プログラム５０２、ページ階層決定プログラム５０３をサーバ２００に設け、サーバ２００においてページ移動要否の決定を行う態様もありえる。また実施例１では、リード率１５０２とサーバキャッシュ率１５０３に基づき、ストレージのページ階層を決定しているが、ライト数１１０７だけに基づき、ページ階層を決定してもよい。この場合、ライト数１１０７が多いページから順に、上位階層の記憶領域に配置していく。【００６２】
[変形例３]
実施例１における計算機システムにおいて、さらにストレージ２６０がＳＳＤ２６７の領域の一部をキャッシュとして使用する機能を備える構成もあり得る。この場合、ストレージ２６０のメモリ２６２にはストレージキャッシュ制御プログラム４０７とストレージキャッシュ制御情報４０８とが設けられる。ストレージキャッシュ制御プログラム４０７は、サーバ２００からのデータ読み出し要求に応じてＨＤＤ２６８から読み出されたデータや、サーバ２００からの書き込み要求に応じてＨＤＤ２６８に書き込まれるデータを一時的にＳＳＤ２６７に格納（キャッシュ）する。ストレージキャッシュ制御情報４０８は、どの領域のデータをどの論理ボリュームにキャッシュしたかを管理するための情報である。【００６３】
図１７は、ストレージキャッシュ制御情報４０８の内容を示している。変形例３におけるストレージ２６０は、仮想ボリュームの一部の領域を、ＳＳＤ２６７で構成されたＲＡＩＤグループ上に配置される論理ボリュームにキャッシュする。当然ながらこの場合、キャッシュとして使用される論理ボリューム上の領域は、仮想ボリュームに割り当てられていない領域である。ストレージキャッシュ制御情報４０８は、キャッシュ元ボリューム名１３０１、先頭アドレス１３０２、長さ１３０３により特定される領域が、キャッシュ先の論理ボリュームであるキャッシュ先ボリューム名１３０４、先頭アドレス１３０５により特定される領域にキャッシュされていることを示す。なお、キャッシュ元ボリューム名１３０１には仮想ボリューム名が格納され、キャッシュ先ボリューム名１３０４には論理ボリューム名が格納される。【００６４】
また、変形例３におけるストレージキャッシュ制御プログラム４０７では、キャッシュするデータの最小管理単位がブロック（５１２バイト）であり、長さ１３０３にはブロック数が記録される。ただし、キャッシュするデータの単位が小さければ小さいほど、ストレージキャッシュ制御情報４０８で管理する情報の量が増加する傾向があるため、キャッシュするデータの単位をブロックよりも大きい単位（たとえば６４ＫＢ、１ＭＢ等）にして、ストレージキャッシュ制御情報４０８で管理する情報量の増加を抑制するようにしてもよい。【００６５】
反映１３０６は、キャッシュ先領域に書き込まれたデータが、キャッシュ元領域に反映されているかを示す。「済」の場合は、反映されていることを示し、「未」の場合は、反映されていないことを示す。最終アクセス時間１３０７は、この領域に最後にアクセスした時刻を示す。【００６６】
ストレージキャッシュ制御プログラム４０７の動作を図１８に示す。ストレージキャッシュ制御プログラム４０７が実行する処理は、周知のキャッシュ技術と類似した処理であるが、仮想ボリュームの記憶領域（ページ）が、下位階層（階層２など）の記憶領域の場合には、当該記憶領域に格納されるデータのキャッシュを行うが、上位階層（階層１）の記憶領域である場合、当該記憶領域に格納されるデータのキャッシュを行わない点が、周知のキャッシュ技術と異なる。なお、実施例１のストレージ２６０は、ＳＳＤ２６７の領域の一部をいわゆるライトバックキャッシュとして用いる。つまりサーバ２００からの書き込み要求に伴ってストレージ２６０に転送されてくるライトデータをキャッシュに格納した時点で、サーバ２００に書き込み処理完了の応答を返し、キャッシュからＨＤＤ２６８への書き込みはサーバ２００からの書き込み要求とは非同期に実施する。【００６７】
判断２４０１において、ストレージキャッシュ制御プログラム４０７は、サーバ２００からのＩ／Ｏ要求がリード要求であるか判断する。リード要求の場合は判断２４０２に進み、ライト要求の場合は判断２４１０に進む。判断２４０２において、ストレージキャッシュ制御プログラム４０７は、ストレージキャッシュ制御情報４０８を参照し、リード対象の領域がキャッシュされているか判断する。キャッシュされている場合は処理２４０３に進み、キャッシュされていない場合は処理２４０５に進む。処理２４０３において、ストレージキャッシュ制御プログラム４０７は、ストレージキャッシュ制御情報４０８を参照し、キャッシュ先ボリューム１３０４からデータの読み出しを行う。処理２４０４において、ストレージキャッシュ制御プログラム４０７は、処理２４０３で読み出したデータをサーバ２００に返送する。【００６８】
処理２４０５において、ドライブ制御プログラム４０１は、仮想ボリューム情報４０５、論理ボリューム情報４０３、ＲＡＩＤグループ情報４０２を参照し、ＳＳＤ  ２６７またはＨＤＤ  ２６８からリードする。処理２４０６において、ストレージキャッシュ制御プログラム４０７は、処理２４０５で読み出したデータをサーバ２００に返送する。判断２４０７において、ストレージキャッシュ制御プログラム４０７は、仮想ボリューム情報４０５、論理ボリューム情報４０３、ＲＡＩＤグループ情報４０２、階層定義情報４０６を参照し、処理２４０５において読み出したデータの格納されていた領域が階層１（ＳＳＤ２６７）であるか判断する。階層１である場合は処理を終了し、階層１でない場合は、処理２４０８に進む。処理２４０８では、データをＳＳＤ２６７にキャッシュするために必要な領域の確保を行う。この処理は公知の技術であるから、詳細な説明は省略するが、ストレージキャッシュ制御プログラム４０７は、仮想ボリューム情報４０５、ストレージキャッシュ制御情報４０８を参照し、キャッシュするための空き領域（未使用領域）が論理ボリュームに存在するか確認し、空き領域があれば、その領域をキャッシュ先領域として確保するため、ストレージキャッシュ制御情報４０８に、キャッシュ元ボリューム１３０１、キャッシュ先ボリューム名１３０４等の情報を登録する。空き領域がない場合は、ストレージキャッシュ制御プログラム４０７は、ストレージキャッシュ制御情報４０８の最終アクセス時刻１３０７を参照し、最終アクセス時刻１３０７が最も古い領域を削除して空き領域にし、この領域をキャッシュ先の領域として用いることにする。このときに、反映１３０６が「未」の場合は、キャッシュ元にデータを反映してから削除する。処理２４０９において、ストレージキャッシュ制御プログラム４０７は、処理２４０５においてリードしたデータを、処理２４０８で確保した領域に格納する。【００６９】
判断２４１０において、ストレージキャッシュ制御プログラム４０７は、仮想ボリューム情報４０５、論理ボリューム情報４０３、ＲＡＩＤグループ情報４０２、階層定義情報４０６を参照し、ライト先領域が階層１であるか判断する。階層１である場合は処理２４１１に進む。処理２４１１において、ドライブ制御プログラム４０１は、仮想ボリューム情報４０５、論理ボリューム情報４０３、ＲＡＩＤグループ情報４０２を参照し、ＳＳＤ２６７にデータ書き込みを行う。処理２４１４において、ストレージキャッシュ制御プログラム４０７は、ライトが完了した旨の報告をサーバ２００に返し、処理を終了する。判断２４１０において、ライト先領域が階層１でないと判断された場合は、処理２４１２に進む。処理２４１２は処理２４０８と同様に、データをキャッシュするために必要な領域の確保を行う。処理２４１３において、ストレージキャッシュ制御プログラム４０７は、データをキャッシュに格納し、ストレージキャッシュ制御情報４０８を更新する。その後処理２４１４において、ストレージキャッシュ制御プログラム４０７は、ライトが完了した旨の報告をサーバ２００に返し、処理を終了する。なお、上では説明を簡単にするため、リード要求で指定された領域のデータがすべてキャッシュされているか、またはすべてキャッシュされていない場合の処理を記載したが、リード要求で指定された領域に、キャッシュされている部分とキャッシュされていない部分とが含まれている場合には、キャッシュされている部分のリード処理については処理２４０３以降の処理を行い、キャッシュされていない部分のリード処理については処理２４０５以降の処理を行うようにすることで対応できる。【００７０】
[変形例４]
本発明の実施例１における計算機システムの変形例４として、特定時点における仮想ボリュームの領域に関する情報として、サーバ２００のサーバキャッシュにキャッシュされている領域の情報とストレージ２６０のキャッシュ（ＳＳＤ２６７の領域の一部）にキャッシュされている領域についての情報と、各ページが配置されているストレージ階層についての情報（階層・キャッシュ状態情報と呼ぶ）を記録し、またこの情報に基づいて、仮想ボリュームの各領域の記憶階層やキャッシュ状態を当該特定時点における状態に戻す機能を備える構成があり得る。図１９を用いて、階層・キャッシュ状態情報５１０の内容を説明する。サーバキャッシュ状態２０００は、仮想ボリュームの領域のうちサーバ２００のサーバキャッシュにキャッシュされている領域の情報を表し、キャッシュ元ボリューム名２００１、先頭アドレス２００２、長さ２００３により特定される仮想ボリュームの領域のデータが、サーバにキャッシュされていることを示す。ストレージキャッシュ状態２０２０は、仮想ボリュームの領域のうちストレージ２６０のキャッシュにキャッシュされている領域についての情報を表し、キャッシュ元ボリューム名２０２１、先頭アドレス２０２２、長さ２０２３により特定される仮想ボリュームの領域のデータが、ストレージ２６０のキャッシュにキャッシュされていることを示す。ストレージ階層状態２０４０は、各ページが配置されているストレージ階層についての情報を表し、ページＩＤ  ２０４１、仮想ボリューム名２０４２、先頭アドレス２０４３で特定される領域（ページ）が階層２０４４で表される記憶階層に格納されていることを示している。日時２０８０は、サーバキャッシュ状態２０００、ストレージキャッシュ状態２０２０、ストレージ階層状態２０４０の情報取得日時を表す。また性能２０６０は、日時２０８０（情報取得時）におけるストレージ２６０の性能を表し、ＩＯＰＳ  ２０６１とＩ／Ｏ応答時間２０６２を記録している。【００７１】
図２０は、階層・キャッシュ状態スナップショット取得プログラム５１１が提供する階層・キャッシュ状態スナップショット取得画面５１１０を示す。取得画面５１１０には、現時点（画面表示時点）のストレージ２６０のＩＯＰＳ  （ＩＯＰＳ２１０１）と、平均レスポンスタイム（Ｉ／Ｏ応答時間２１０２）が表示される。ユーザ・管理者がボタン２１０３を押すと、管理サーバ２８０はサーバ２００とストレージ２６０から、その時点のストレージ階層の状態やキャッシュ状態を収集し、階層・キャッシュ状態情報５１０を作成して記録する。【００７２】
図２１は、階層・キャッシュ状態復元プログラム５１２が提供する階層・キャッシュ状態復元画面５１２０を示す。日時２２０２は、階層・キャッシュ状態を取得した日時を表し、ＩＯＰＳ２２０３、Ｉ／Ｏ応答時間２２０４は、階層・キャッシュ状態を取得した時のストレージ性能を示す。なおＩＯＰＳ２２０３、Ｉ／Ｏ応答時間２２０４は一種の参考情報として表示しているものであって、ＩＯＰＳ２２０３、Ｉ／Ｏ応答時間２２０４以外の情報を参考情報として表示する態様もあり得る。ユーザ・管理者が、選択２２０１列のいずれかのラジオボタンを選択状態にし、ボタン２２０７を押すことにより、階層・キャッシュ状態復元プログラム５１２は、当該ラジオボタンが選択状態にされた行の日時２２０２における階層・キャッシュ状態の復元を実行する。具体的には、階層・キャッシュ状態復元プログラム５１２は、ストレージ２６０、サーバ２００に指示を出し、サーバキャッシュにはサーバキャッシュ状態２０００に記録されているボリュームのデータがキャッシュされるようにし、ストレージ２６０のキャッシュにはストレージキャッシュ状態２０２０に記録されているデータがキャッシュされるようにし、ストレージ２６０の各ページには、ストレージ階層状態２０４０に記録されている階層の記憶領域が割り当てられている状態にする。なお、復元処理の実行を行う際、本発明の実施例１における図１１の処理、つまり仮想ボリューム上のデータの記憶される記憶階層を変更する処理が行われていたら、いったん処理を中断する。【００７３】
上の例では、階層・キャッシュ状態情報５１０として、サーバキャッシュ状態２０００、ストレージキャッシュ状態２０２０、ストレージ階層状態２０４０の、３種類の情報を取得しているが、上記３種類の情報のうちいずれか１つの情報のみを取得する形態、または上記３種類の情報のうち２つの情報のみを取得する形態もありえる。【００７４】
また、図２０、図２１の例では、サーバキャッシュにキャッシュされているすべてのデータ、ストレージ２６０内全仮想ボリュームについて、階層・キャッシュ状態のスナップショット取得、復元を行うものだが、ボリューム単位で階層・キャッシュ状態のスナップショット取得、復元を行うようにしてもよい。その場合、階層・キャッシュ状態スナップショット取得画面５１１０は、ＩＯＰＳと平均レスポンスタイムが仮想ボリューム単位に表示されるとともに、計算機システムの管理者が階層・キャッシュ状態スナップショットを取得したい仮想ボリューム（１または複数個）を指定することができるような画面を提供するよう構成される。また、階層・キャッシュ状態復元画面５１２０も、仮想ボリューム単位で復元の指定が可能な画面を提供するよう構成されることになる。【００７５】
[変形例５]
上で説明した変形例３において、階層１として活用するＳＳＤ  ２６７の容量と、キャッシュとして活用するＳＳＤ  ２６７の容量をシステム運用中に変更してもよい。キャッシュが利用されていない場合は、キャッシュとして活用するＳＳＤの容量を減らし、階層１として活用するＳＳＤの容量を増やす。キャッシュが利用されていない場合とは、たとえば最終アクセス時刻１３０７が１時間前など、所定時間以上アクセスされていない場合である。またＩ／Ｏの局所性が低く、図１８の処理２４０８（キャッシュ領域の確保処理）の実行時にキャッシュが削除される回数が多い場合は、キャッシュ容量が不足しているため、キャッシュとして活用するＳＳＤの容量を増やし、階層１として活用するＳＳＤの容量を減らす。容量を変化させ、ＳＳＤへのアクセス率が上昇した場合は、その操作を繰り返し、ＳＳＤへのアクセス率が減少した場合は、その操作と逆の操作を行う。または、仮想ボリューム情報４０５とストレージキャッシュ制御情報４０８を複数持ち、キャッシュとして活用するＳＳＤの容量と、階層１として活用するＳＳＤの容量のパターンを複数想定し、疑似的にＳＳＤへのアクセス率を算出し、最もアクセス率が向上した場合の構成となるように変更してもよい。
【実施例２】
【００７６】
続いて、本発明の実施例２について説明する。本発明の実施例２における計算機システムは、実施例１における計算機システムとほぼ同様の構成であるので、以下では実施例１と相違する点を中心に説明する。実施例１で説明したシステムは、ストレージ２６０内のページ配置（記憶階層）を制御することによって、サーバキャッシュとストレージの上位記憶階層とでデータが重複して格納されないようにするものであったが、実施例２におけるシステムは、サーバ２００がサーバキャッシュを制御することで、サーバキャッシュとストレージの上位記憶階層とでデータが重複して格納されないようにするものである。【００７７】
図２２は、実施例２の概要を示す。データA  ２５０２は階層１に配置され、データD２５０５は階層２に配置されていることなど、各データが配置されている階層についての情報（ページ階層情報と呼ぶ）を、管理サーバ２８０からサーバ２００のキャッシュ制御プログラム２５０１へと通知する。キャッシュ制御プログラム２５０１は、階層１に配置されているデータをキャッシュせず、階層２に配置されているデータをフラッシュメモリドライブ２０４にキャッシュする。各データが配置されている階層についての情報を取得する契機は、例えば米国特許出願公開第２０１３／００３６２５０号明細書に記載の方法により、ストレージ２６０が、Ｉ／Ｏ数が多いページのデータを高速な階層に移動し、Ｉ／Ｏ数が少ないページのデータを低速な階層に移動する処理を行った後である。または、１時間に１回など、定期的に各データが配置されている階層についての情報を取得する態様もあり得る。【００７８】
図２３はページ階層情報５２０の内容を示している。ページ階層情報５２０は、ボリューム名５０２１、先頭アドレス５０２２、終端アドレス５０２３、階層５０２４の項目を有し、ボリューム名５０２１、先頭アドレス５０２２、終端アドレス５０２３で特定される領域が、階層５０２４で特定される階層の記憶領域に存在することを表す情報である。なお、ボリューム名５０２１は、ストレージ２６０がサーバ２００に提供しているボリューム（仮想ボリューム）の名称で、また先頭アドレス５０２２、終端アドレス５０２３の単位はLBAである。管理サーバ２８０は、ストレージ２６０から仮想ボリューム情報４０５、階層定義情報４０６、ＲＡＩＤグループ情報４０２、論理ボリューム情報４０３を取得し、各ページにどの階層の記憶領域が割り当てられているかを割り出し、サーバ２００で各領域の位置を認識できるように、ページＩＤをLBAなどのアドレスに変換してページ階層情報５２０を作成し、サーバ２００へ渡す。【００７９】
図２４は、実施例２におけるキャッシュ制御プログラム２５０１の動作の流れを示す図である。判断２６０１において、キャッシュ制御プログラム２５０１は、データベースプログラム３０２からのＩ／Ｏ要求がリード要求であるか判断する。リードの場合は判断２６０２に進み、ライトの場合は処理２６０７に進む。判断２６０２において、キャッシュ制御プログラム２５０１は、キャッシュ制御情報３０４を参照し、リードする領域がキャッシュされているか判断する。具体的には、キャッシュ制御情報３０４の、キャッシュ元ボリューム名６０１、先頭アドレス６０２、長さ６０３により特定される領域の中に、リード要求で指定された領域が含まれていれば、キャッシュされていると判断できる。キャッシュされている場合は処理２６０３に進み、キャッシュされていない場合は処理２６０７に進む。処理２６０３において、キャッシュ制御プログラム２５０１は、キャッシュ制御情報３０４を参照し、リード要求で指定された領域のデータがキャッシュされている領域を特定し、特定した領域からデータをリードする。たとえばサーバキャッシュの状態が、図６のキャッシュ制御情報３０４に記載されている状態である場合を例にとると、ボリューム名Vol  A、アドレス２０、長さ１０の領域をリードする要求を受け付けた場合、この領域は行６０８に記載の領域に含まれるのでキャッシュされていることが判断でき、キャッシュされたデータはサーバフラッシュAのアドレス１０から読み出せばよいことも判断できる。処理２６０４において、キャッシュ制御プログラム２５０１は、処理２６０３においてリードされたデータをデータベースプログラム３０２に返送する。【００８０】
判断２６０５では、キャッシュ制御プログラム２５０１はページ階層情報５２０を参照し、データベースプログラム３０２から受け付けたリード要求で指定されているリード先領域が階層１であるか判断し、階層１でない場合には、処理を終了する。リード先領域が階層１であった場合には、キャッシュからその領域を削除する処理（処理２６０６）を行った後、キャッシュ制御プログラム２５０１は処理を終了する。キャッシュから指定された領域を削除する方法は、具体的にはキャッシュ制御情報３０４の中で、リード要求で受け付けた領域に関する情報を削除する。たとえばキャッシュ状態が図６に記載の内容であり、データベースプログラム３０２からボリューム名Vol  A、先頭アドレス０、長さ１０の領域のリード要求を受け付けた時、この領域のデータが階層１に格納されているものであったとすると、行６０７を削除する。【００８１】
処理２６０７において、キャッシュ制御プログラム２５０１は、データベースプログラム３０２からのＩ／Ｏ要求（リードまたはライト要求）をストレージ２６０に転送する。処理２６０８において、キャッシュ制御プログラム２５０１は、処理２６０７の結果（リードデータ、あるいはライト処理が完了した旨）をデータベースプログラム３０２に返送する。判断２６０９において、キャッシュ制御プログラム２５０１は、ページ階層情報５２０を参照し、処理２６０７においてリードまたはライトした領域が階層１であるか判断する。階層１である場合、キャッシュ制御プログラム２５０１は処理を終了し、階層１でない場合は、処理２６１０に進む。処理２６１０は実施例１における処理２４０８と類似の処理、つまりデータをキャッシュするための空き領域を確保する処理を行う。キャッシュ制御プログラム２５０１はキャッシュ制御情報３０４を参照して、キャッシュ先ボリュームの中で使用されていない領域（空き領域）を探して、キャッシュ用の領域として確保する。空き領域がない場合は、キャッシュ制御プログラム２５０１は、キャッシュ制御情報３０４の最終アクセス時刻６０６を参照し、最終アクセス時刻６０６が最も古い領域を削除する。処理２６１１において、キャッシュ制御プログラム２５０１は、処理２６０７においてリードまたはライトしたデータを、処理２６１０で確保した領域に格納し、キャッシュ制御情報３０４を更新する。なお、上では説明の簡単にするため、リード要求で指定された領域のデータがすべてキャッシュされている、またはすべてキャッシュされていない、という前提での処理を記載しているが、リード要求で指定された領域にキャッシュされている部分とキャッシュされていない部分が含まれている場合には、キャッシュされている部分のリード処理については処理２６０３以降の処理を行い、キャッシュされていない部分のリード処理については処理２６０７以降の処理を行うようにすればよい。【００８２】
実施例２における計算機システムでは、サーバは、ストレージ装置において上位階層の記憶領域が割り当てられていないデータについてキャッシュし、上位階層の記憶領域が割り当てられているデータについてはキャッシュしないように動作する。結果として、サーバのキャッシュとストレージ装置の上位階層とに、同じデータが重複して配置されることがなくなり、より多くの種類のデータを配置することができるようになる。そのため、計算機システムのＩ／Ｏ性能を全体として向上させることができる。【００８３】
以上、本発明の実施例を説明してきたが、これは本発明の説明のための例示であって、本発明を上で説明した実施例に限定する趣旨ではない。又上記変形例は実施例２と組み合わせてもよく、変形例同士を組み合わせることも可能である。本発明は、他の種々の形態でも実施可能である。たとえば実施例に記載の計算機システムにおいて、サーバやストレージが複数存在する構成をとってもよく、またサーバ、ストレージ内の構成要素についても、たとえばＣＰＵ等が複数存在する形態もあり得る。また実施例においてプログラムとして記載されている構成物は、ハードワイヤードロジックなどを用いたハードウェアによって実現してもよい。また実施例中の各プログラム、制御情報を、ＤＶＤ等の記憶媒体に格納して提供する形態をとることも可能である。
【符号の説明】
【００８４】
１０１:  データA
１０２:  データB
１０３:  データC
１０４:  データD
２００:  サーバ
２０４:  フラッシュメモリドライブ
２６０:  ストレージ
２６７:  ＳＳＤ
２６８:  ＨＤＤ
２８０:  管理サーバ
３０２:  データベースプログラム
３０３:  キャッシュ制御プログラム
３０４:  キャッシュ制御情報
４１０:  ページ移動プログラム
４０５:  仮想ボリューム情報
５０１:  サーバキャッシュ状態取得プログラム
５０２:  ストレージ階層情報取得プログラム
５０３:  ページ階層決定プログラム
５０４:  ページ状態情報
５０５:  ページ階層ポリシー
５０６:  ページ階層ポリシー入力プログラム
【図１】
0005944587.tif 000002
【図２】
0005944587.tif 000003
【図３】
0005944587.tif 000004
【図４】
0005944587.tif 000005
【図５】
0005944587.tif 000006
【図６】
0005944587.tif 000007
【図７】
0005944587.tif 000008
【図８】
0005944587.tif 000009
【図９】
0005944587.tif 000010
【図１０】
0005944587.tif 000011
【図１１】
0005944587.tif 000012
【図１２】
0005944587.tif 000013
【図１３】
0005944587.tif 000014
【図１４】
0005944587.tif 000015
【図１５】
0005944587.tif 000016
【図１６】
0005944587.tif 000017
【図１７】
0005944587.tif 000018
【図１８】
0005944587.tif 000019
【図１９】
0005944587.tif 000020
【図２０】
0005944587.tif 000021
【図２１】
0005944587.tif 000022
【図２２】
0005944587.tif 000023
【図２３】
0005944587.tif 000024
【図２４】
0005944587.tif 000025