(58)【調査した分野】(Int.Cl.,DB名)
前記ストレージ装置は、前記仮想計算機が前記二次記憶装置上の領域に対して書き込み処理を開始した時点で、前記書き込み処理を開始した前記仮想計算機以外の前記仮想計算機の有する前記キャッシュ部分領域から、前記領域のデータの複製を削除し、
前記書き込み処理を開始した前記仮想計算機は、前記削除の行われた後、自身の有する前記キャッシュ部分領域に前記書き込み処理に伴う書き込みデータを格納し、前記書き込みデータを前記キャッシュ部分領域に格納した時点で、前記書き込み処理を完了することを特徴とする、
請求項2に記載のストレージ装置。
前記ストレージ装置は、前記キャッシュ領域上の、前記仮想計算機の各々が有する前記キャッシュ部分領域とは異なる領域を、前記ストレージ装置の有するキャッシュ部分領域として管理しており、
前記ストレージ装置は、前記統計情報に基づいて、前記二次記憶装置上の領域を前記複数の仮想計算機がアクセスしているか、あるいは前記複数の仮想計算機のうち1台の仮想計算機のみアクセスしているか判断し、
前記二次記憶装置上の領域を前記複数の仮想計算機がアクセスしていると判断される場合には、前記二次記憶装置上の領域のデータの複製を、前記ストレージ装置が有する前記キャッシュ部分領域のみに保持させることを決定し、
前記二次記憶装置上の領域を前記複数の仮想計算機のうち1台の仮想計算機のみアクセスしていると判断される場合には、前記二次記憶装置上の領域のデータの複製を、前記1台の仮想計算機が有する前記キャッシュ部分領域のみに保持させることを決定することを特徴とする、
請求項3に記載のストレージ装置。
前記ストレージ装置は、前記二次記憶装置上の各領域について、前記複数の仮想計算機が、前記二次記憶装置上の領域に対してリードアクセスを行っているか、前記統計情報に基づいて判断し、前記複数の仮想計算機が、前記二次記憶装置上の前記領域に対してリードアクセスを行っていると判断された場合、前記二次記憶装置上の前記領域に対してリードアクセスを行っている前記複数の仮想計算機が有するそれぞれのキャッシュ部分領域上に、前記領域のデータの複製を保持させる処理を定期的に実行することを特徴とする、
請求項3に記載のストレージ装置。
前記計算機システムは、前記複数のホスト計算機のいずれかが前記記憶媒体上の領域へのアクセスを実行した際に、前記領域のデータの複製を保持させる前記ホスト計算機を決定することを特徴とする、
請求項10に記載の計算機システム。
前記計算機システムは、前記ホスト計算機が前記記憶媒体上の領域に対して書き込み処理を開始した時点で、前記書き込み処理を開始した前記ホスト計算機以外の前記ホスト計算機の有する前記キャッシュ領域から、前記領域のデータの複製を削除し、
前記書き込み処理を開始した前記ホスト計算機は、前記削除の行われた後、自身の有する前記キャッシュ領域に前記書き込み処理に伴う書き込みデータを格納し、前記書き込みデータを前記キャッシュ領域に格納した時点で、前記書き込み処理を完了することを特徴とする、
請求項10に記載の計算機システム。
【実施例1】
【0014】
本発明の実施例1の概要を、
図1を用いて説明する。
図1は、本発明の実施例1に係る統合ストレージ装置110の適用対象となる計算機システム100の構成を示している。計算機システム100は、1以上のクライアント計算機10(以下、「クライアント」と略記)、統合ストレージ装置110とが、ネットワーク20で結合された構成をとる。統合ストレージ装置110は、記憶媒体130を有し、クライアント10からのデータ入出力(I/O)要求に応じて、記憶媒体130中のデータを入出力する処理を行う。記憶媒体130中のデータ入出力単位を以後チャンクと呼ぶ。また、統合ストレージ装置110が備えるディスクキャッシュ226は、記憶媒体130中のチャンクを入出力する際に一時的に用いる領域であり、その後記憶媒体130中のチャンクの複製を一時的に保持することにも用いるキャッシュ領域である。
【0015】
統合ストレージ装置110は内部に仮想計算機処理部120を備え、仮想計算機処理部120中では複数のホスト仮想計算機150a・150b・150c(以下では、ホスト仮想計算機150a・150b・150cを区別せずに呼ぶ場合には、「ホスト仮想計算機150」と表記する)を備えている。各ホスト仮想計算機150a・150b・150cでは、記憶媒体130中のデータを利用(リードまたはライト)して所定の処理を行うアプリケーションプログラム321a・321b・321cが動作している。アプリケーションプログラム321a・321b・321cは、たとえば、NFSサーバ等の、クライアント10に対してファイルアクセスサービスを提供するファイルサーバプログラム、あるいは検索サービスを提供するプログラム等であるが、これらに限られるわけではない。また、各ホスト仮想計算機150a・150b・150cが備えるディスクキャッシュ325a・325b・325cは、統合ストレージ装置110中のディスクキャッシュ226を介して記憶媒体130中のデータチャンクを入出力する際に一時的に用いる領域であり、その後記憶媒体130中のチャンクの複製を一時的に保持することにも用いるキャッシュ領域である。また、記憶媒体130中の各領域のデータをどのディスクキャッシュ226・325a・325b・325c中に保持するかは、各ホスト仮想計算機150a・150b・150c中のキャッシュ管理プログラム323a・323b・323cと統合ストレージ110中の統合キャッシュ管理プログラム223が通信して入出力状態を交換しあって決定する。
【0016】
以下ホスト仮想計算機150aにおける処理を例に挙げて説明するが、ホスト仮想計算機150b・150cも同様に動作する。ホスト仮想計算機150a上のアプリケーションプログラム321aが記憶媒体130中のデータを入出力する場合、キャッシュ管理プログラム323aは対象チャンクが自身のディスクキャッシュ325a中にキャッシュされているか判定する。例えばチャンクP(141)のデータはディスクキャッシュ325a中に複製P(151)としてキャッシュされており、この場合チャンクP(141)への入出力は複製P(151)を参照して終了する。チャンクQ(142)に対するデータ入出力は、ディスクキャッシュ325a中に複製Qを持たないので、統合管理部140に対してチャンクQ(142)に対する入出力を要求する。統合管理部140中の統合キャッシュ管理プログラム223は、同様にチャンクQ(142)のデータ複製Q(152)がディスクキャッシュ226にあることを判定し、ホスト計算機150aに返す。チャンクR(143)に対する入出力は、いずれのディスクキャッシュ上にもチャンクR(143)のデータ複製を持たないので、ホスト仮想計算機150aは統合管理部140に入出力要求を出し、記憶媒体130に対してデータ入出力を行う。このようにして、各ディスクキャッシュ上の複製の有無により記憶媒体130への入出力回数が変化する。
【0017】
また、統合キャッシュ管理プログラム223は各ホスト仮想計算機150a・150b・150cの入出力の状態等を見て、記憶媒体130上のチャンクのデータ複製を配置するディスクキャッシュを選択し、不要な複製を削除する。例えばチャンクP(141)にアクセスするのがアプリケーションプログラム321aだけであるならば、複製P(151)は同じホスト仮想計算機150a内にあるディスクキャッシュ325aに配置し、ディスクキャッシュ226、325bまたは325c上にチャンクP(141)のデータ複製がある場合には削除する。チャンクQ(142)に対して、各アプリケーションプログラム321a・321b・321cのいずれもアクセスするならば、統合ストレージ110中のディスクキャッシュ226に複製Q(152)を配置し、ホスト仮想計算機150上のディスクキャッシュ325が保持する複製チャンクは削除する。
【0018】
このように、各チャンクへの入出力状態に応じた複製チャンクの配置を行い、1つのチャンクのデータについて、複数の複製がディスクキャッシュ上に置かれることを防ぐことで、ディスクキャッシュの使用容量が減り、各ディスクキャッシュに全体としてより多くのチャンクに対する複製を保持できるようになる。本発明は特に、大規模な統合ストレージシステムへの利用に好適である。
【0019】
以下、計算機システム100の各構成要素や動作について記載する。
図2に、統合ストレージ装置110の構成図を示す。統合ストレージ装置110は、プロセッサ(以下CPU(Central Processing Unit)と略す)210、一次記憶装置であるメモリ220、記憶媒体インタフェース(記憶媒体I/F)230、二次記憶装置である、1以上の記憶媒体(240a、240b、240c。以下、記憶媒体240a、240b、240cを総称して、「記憶媒体240」と呼ぶ)、ネットワークインタフェース(ネットワークI/F)250からなる。CPU210は、メモリ220中の各種プログラムを読み込み、その指示に従い統合ストレージ装置110の各構成要素を制御する。ネットワークI/F250は、統合ストレージ装置110を(
図1における)ネットワーク20に接続するためのインタフェースで、統合ストレージ装置110(あるいはホスト仮想計算機150)は、ネットワークI/F250を介してクライアント10との間の通信(ファイルアクセスリクエストの送受信等)を行う。
【0020】
メモリ220は、統合ストレージ装置110で動作するプログラムや、当該プログラムが用いる情報を保持するために用いられる領域と、ディスクキャッシュ226として用いられる領域とを有する。メモリ220には、DRAMなどの揮発性記憶素子が用いられる。また、フラッシュメモリなどの不揮発性記憶素子を用いる構成もあり得る。また、プログラムや当該プログラムが用いる情報を保持するために用いられるメモリと、ディスクキャッシュ226として用いられる領域とを、物理的に別のメモリとする構成もあり得、その場合、プログラムや当該プログラムが用いる情報を保持するために用いられるメモリには揮発性記憶素子を用い、ディスクキャッシュ226として用いられる領域にはフラッシュメモリなどの不揮発性記憶素子を用いるという構成をとってもよい。
【0021】
メモリ220中の内部入出力受付プログラム221は、ホスト仮想計算機150からの入出力要求を受けて記憶媒体240に対する入出力処理を行う。また、内部入出力受付プログラム221はボリューム構築機能も提供する。ボリュームとは、複数の記憶媒体240中の記憶領域を集めて作成される、論理的な記憶領域である。ボリュームの構築方法として、例えば記憶媒体のストライピングや連結、Redundant Array of Independent Disk(RAID)、Thin Provisioning等の、様々な公知の手法を用いることができる。これらのボリューム構築機能により、統合ストレージ装置110は記憶媒体240の数や容量に依存しない、1または複数のボリュームを構築し、ホスト仮想計算機150に提供する。各ボリュームには、統合ストレージ装置110内で一意な識別番号を付されて管理されている。この識別番号をボリュームIDと呼ぶ。またボリュームは、チャンクと呼ばれる固定サイズの領域をアクセス単位としてホスト仮想計算機150等からアクセスされる。そして各チャンクを一意に特定できるように、各チャンクにはボリューム内の先頭チャンクから順に0、1、2、...の番号が付されており、この番号をチャンク番号と呼ぶ。本発明の実施例における統合ストレージ装置110において、チャンクのサイズは、ホスト仮想計算機150や内部入出力受付プログラム221等がアクセスするときの最小単位(データサイズ)であり、たとえば1ブロック(512バイト)、あるいは4KB等のサイズである。
【0022】
メモリ220中の記憶媒体入出力プログラム222は、記憶媒体インタフェース230を介して記憶媒体240中のデータを読み書きする。メモリ220中の統合キャッシュ管理プログラム223は、ボリューム中のどのチャンクのデータがどのディスクキャッシュ(ディスクキャッシュ226、ディスクキャッシュ325)上にキャッシュされているかを管理し、またボリューム中のチャンクのデータをディスクキャッシュ226上にキャッシュする等の制御を行うプログラムである。メモリ220中のキャッシュ管理テーブル224は、前記チャンクの配置情報を格納するテーブルである。メモリ220中の統計情報225は、統合ストレージ装置110や各ホスト仮想計算機150の性能情報や入出力処理の回数等を集計したもので、統合キャッシュ管理プログラム223がチャンクのキャッシュ先となるディスクキャッシュを決定するために用いる。
【0023】
メモリ220中のディスクキャッシュ226は、ボリューム中チャンクのデータを入出力する際に一時的に用いる領域であり、その後チャンクデータの複製を一時的に保持することにも用いるキャッシュ領域である。メモリ220中の仮想計算機プログラム227は、計算機上で複数の仮想計算機(
図1のホスト仮想計算機150)を作成し動作させるプログラムであり、実現方式として資源の論理分割やハイパーバイザ方式等が知られている。仮想計算機プログラム227は仮想計算機に対し、CPU・メモリ・ボリューム・内部通信路と言った計算機資源を提供する。メモリ220中の仮想計算機用メモリ領域228は、仮想計算機を複数作成する際、各々の仮想計算機用のメモリとして割り当てられる領域である。この割り当て情報は仮想計算機プログラム227が管理する。また、本実施例では、クライアント10に対してファイルアクセスサービス等のサービスを提供する主体は、後述するホスト仮想計算機150であるが、別の実施形態として、ホスト仮想計算機150に加えて統合ストレージ装置110も、クライアント10に対してボリュームアクセスあるいはファイルアクセスのサービスを提供する機能を備える構成もあり得、その場合でも本発明は有効である。
【0024】
記憶媒体240は、データを入出力する装置である。記憶媒体240として、光ディスク、磁気ディスク、テープ装置、フラッシュメモリ等の不揮発性メモリを用いた記憶媒体等を利用することができる。統合ストレージ装置110は、記憶媒体インタフェース230を介してこれら記憶媒体240のデータを入出力する。記憶媒体インタフェース230には、ATA(AT Attachment) interface、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)等が用いられる。
【0025】
図3に、ホスト仮想計算機150の構成図を示す。ホスト仮想計算機150は、仮想CPU310、メモリ320、内部通信路インタフェース330、上位インタフェース(上位I/F)340からなる。仮想CPU310、メモリ320、内部通信路インタフェース330、そして上位I/F340は、いわゆる仮想計算機内の構成要素であるから、統合ストレージ装置110と独立して物理的にこれら要素が存在するわけではなく、
図2に示されている仮想計算機プログラム227がCPU210によって実行されることによって、統合ストレージ装置110が有するCPU210、メモリ220等の一部を用いて、仮想的に実現されているものである。
【0026】
仮想CPU310は、メモリ320中の各種プログラムを読み込み、その指示に従いホスト仮想計算機150の各構成要素を制御する。
【0027】
メモリ320は、ホスト仮想計算機150で実行されるプログラムや、プログラムが用いる情報を保持するために用いられる。以下、メモリ320内に保持されるプログラムや情報の概要を説明する。
【0028】
アプリケーションプログラム321は、計算機システム100の利用者が記憶媒体240中に格納されたデータを用いて実行したい計算処理を行うプログラムである。ボリューム入出力プログラム322は、内部通信路インタフェース330を介して、統合ストレージ装置110が記憶装置240から構築したボリューム340に入出力を行うプログラムである。キャッシュ管理プログラム323は、ボリューム中のチャンクデータをディスクキャッシュ325上にキャッシュする制御を行うプログラムである。また、統合キャッシュ管理プログラム223からの指示によって、ディスクキャッシュ325上のデータを統合キャッシュ管理プログラム223に転送する(コピーする)ことも行う。
【0029】
統計情報324は、ホスト仮想計算機150のボリューム340に対するアクセス状況(入出力処理の頻度等)を集計したもので、統合キャッシュ管理プログラム223やキャッシュ管理プログラム323がチャンクのキャッシュ先を決定する際に用いられる。
【0030】
ディスクキャッシュ325は、ボリューム340中のチャンクデータを入出力する際に一時的に用いる領域であり、その後チャンクデータの複製を一時的に保持することにも用いるキャッシュ領域である。なお、本発明の実施例における統合ストレージ装置110では、
図1に示すようにホスト仮想計算機150が複数(たとえば3つ)存在するため、各ホスト仮想計算機150を区別して表記する場合には、ホスト仮想計算機150a、150b、150cと表記する。またホスト仮想計算機150内のディスクキャッシュ325等の要素についても、区別して呼ぶ必要がある場合には、ディスクキャッシュ325a、325b、325c等と表記する。
【0031】
また、本発明の実施例1における統合ストレージ装置110においては、各ホスト仮想計算機150a、150b、150cの有するディスクキャッシュ325a、325b、325cと統合ストレージ装置110のディスクキャッシュ226とは、それぞれ異なる領域であって、各ホスト仮想計算機150のキャッシュ管理プログラム323は、自仮想計算機のディスクキャッシュ325のメモリ空間のみを管理する。つまり各ホスト仮想計算機150が有するディスクキャッシュ325は、他のホスト仮想計算機150からアクセスされない非共有の領域である。また、統合ストレージ装置110のディスクキャッシュ226も各ホスト仮想計算機150から直接アクセスできる領域ではない。
【0032】
内部通信路インタフェース330は、ボリューム340に対する入出力を行う、あるいは統合キャッシュ管理プログラム223とキャッシュ制御情報や統計情報324を通信しあうために用いられるインタフェースである。
【0033】
ボリューム340は、統合ストレージ装置110により形成された単一の論理的記憶領域であり、本発明の実施例における各ホスト仮想計算機150は、同一のボリューム340にアクセスすることができる(つまり、共有アクセス可能である)。また、図示されていないが、複数のホスト仮想計算機150から共有アクセスされるボリューム340とは別に、特定のホスト仮想計算機150のみがアクセスするボリュームが設けられていてもよい。
【0034】
図4に、各ホスト仮想計算機150と統合ストレージ装置110との関係、そしてボリューム上のチャンクとキャッシュの対応関係400の一例を示す。各ホスト仮想計算機150はいずれも、ボリューム340上の各チャンク(P、Q、R)にアクセスできる。また統合ストレージ装置110は、ボリューム340の各チャンクのデータ複製をディスクキャッシュ422上に保持(キャッシュ)することができる。各ホスト仮想計算機150がボリューム340内チャンクのデータを読み出す際、統合ストレージ装置110のディスクキャッシュ226上に読み出し対象のチャンクのデータがキャッシュされている場合には、ボリューム340を構成している記憶媒体(
図2の240)にアクセスすることなく、ディスクキャッシュ226上に保持されているデータが読み出されて、ホスト仮想計算機150に転送される。
【0035】
また、各ホスト仮想計算機150も自身のディスクキャッシュ(325a、325b、325c)に、ボリューム340内チャンクのデータ複製を保持(キャッシュ)することができ、例えばホスト仮想計算機150aがチャンクP421のデータを読み出す場合、チャンクPのデータがディスクキャッシュ325aにキャッシュされていれば、統合ストレージ装置110にアクセスすることなく、ディスクキャッシュ325aにキャッシュされているチャンクP421のデータ複製(423)を読み出す。ただし、各ホスト仮想計算機150は、他のホスト仮想計算機150のディスクキャッシュ325内のデータを直接参照することはできない。たとえばホスト仮想計算機325bがボリューム340内のチャンクP421を読み出す場合、仮にチャンクP421のデータ複製がホスト仮想計算機325aのディスクキャッシュ325aに保持されていた(P(423)がディスクキャッシュ325a内に存在した)としても、ホスト仮想計算機325bがディスクキャッシュ325a内にあるデータP(423)を直接読み出すことはできない。この場合、データP(423)は一旦統合ストレージ装置110のディスクキャッシュ226へとコピーされ、ホスト仮想計算機325bはディスクキャッシュ226にコピーされたデータを読み出す。
【0036】
図5に、キャッシュ管理テーブル224の構成例を示す。キャッシュ管理テーブル224は、統合キャッシュ管理プログラム223によって維持管理される情報であり、ボリューム340(
図3)上のチャンクが、どのキャッシュ領域にキャッシュされているかについての情報を格納している。キャッシュ管理テーブル224の各行(エントリ)561・562・563・564・565...には、各ボリューム340上のチャンクのうち、チャンクのデータの複製がディスクキャッシュ(226、325)上に格納(キャッシュ)されているチャンクについての情報が格納される。
【0037】
各エントリは、ボリュームID510、チャンク番号520、マスタ(所有者)530、メモリアドレス540、スレーブ(保持者)550の項目を有している。統合キャッシュ管理プログラム223は、各エントリを参照することで、各エントリのボリュームID510とチャンク番号520で特定されるボリューム上のチャンクのデータが、メモリアドレス540で特定されるメモリ領域(ディスクキャッシュ226または325上の領域)に格納されている(キャッシュされている)ことを認識する。なお、メモリアドレス540に格納されるアドレス情報は、チャンクのデータの複製がどのディスクキャッシュ(ディスクキャッシュ226、あるいは(複数の)ディスクキャッシュ325のいずれか)に存在するか、そして当該キャッシュ領域内のどの位置に存在するかを一意に特定できる情報である必要があり、一実施形態ではアドレス情報として、物理メモリアドレス(統合ストレージ装置110のメモリ220上のアドレス)が用いられる。また、後述するように、ボリュームID510、チャンク番号520で特定されるチャンクのデータ複製が、複数のディスクキャッシュ(325、226)に格納されることがある。その場合、ボリュームID510、チャンク番号520で特定されるチャンクのデータ複製を格納しているディスクキャッシュ(226、325)の全てのアドレスが、メモリアドレス540の欄に格納される。
図5の行563に示されているエントリはその一例である。逆に、ボリュームID510、チャンク番号520で特定されるチャンクに対応するキャッシュ領域が、ディスクキャッシュ226または325に割り当てられていないこともあり、その場合には、メモリアドレス540には無効値(NULLなど)が格納される。
【0038】
マスタ530は、チャンクに対する最新データを保持する計算機(ホスト仮想計算機150あるいは統合ストレージ装置110)を表す情報であり、マスタである計算機は、キャッシュ上でチャンクのデータを更新し、キャッシュ上にいわゆるダーティ状態(記憶媒体上に最新データが反映されていない状態)でデータを保持する権限を有する。一方スレーブ550は、チャンクのデータ複製をディスクキャッシュに保持している計算機を表す情報であり、マスタである計算機の情報はスレーブ550にも登録されている。また、スレーブである計算機(ただしマスタではない計算機)は、データの更新権限がない。
【0039】
各チャンクに対し、マスタ530には最大でも1台の計算機しか登録できない。スレーブ550には複数台の計算機を登録することができる。たとえば
図5のエントリ(行)563では、マスタ530の欄には「ストレージ」が登録され、スレーブ550の欄には、「A,B,C」が登録されている。この場合、ボリュームID510が1でチャンク番号が0x5000で特定されるチャンクのデータ更新は、ストレージ(統合ストレージ装置110)のみが可能で、その他の計算機(ホスト仮想計算機150)は、参照のみが可能である。その他の計算機がデータ更新を行う場合には、統合キャッシュ管理プログラム223に自身の計算機がマスタとなるよう要求する必要があるが、この処理については後述する。
【0040】
続いて
図6を用いて、統計情報324(225)について説明する。統計情報324(225)は、ボリューム340内の各チャンクに対する、ホスト仮想計算機150あるいは統合ストレージ装置110のアクセス状況を記録した情報で、各ホスト仮想計算機150がそれぞれ維持管理する情報である。統計情報324aは、ホスト仮想計算機150aのボリューム340へのアクセス状況を記録しており、同様に統計情報324b、324cはそれぞれ、ホスト仮想計算機150b、150cのボリューム340へのアクセス状況を記録している。各ホスト仮想計算機150あるいは統合ストレージ装置110がボリューム340内の各チャンクに対してアクセスするたびに、統計情報324(225)の内容は更新される。
【0041】
統計情報324は、ボリュームID571、チャンク番号572、最終ライト時刻573、最終リード時刻574、ライト頻度575、リード頻度576の項目を有するエントリ(行)が複数存在する。各エントリは、ホスト仮想計算機150の、ボリュームID571、チャンク番号572で特定されるチャンクに対するアクセス状況を記録しており、最終ライト時刻573、最終リード時刻574にはそれぞれ、ホスト仮想計算機150がチャンク(ボリュームID571、チャンク番号572で特定されるチャンク)に最後にライト、リードした時刻が格納される。ライト頻度575、リード頻度576にはそれぞれ、ホスト仮想計算機150が単位時間あたりにチャンクに対してライト、リード要求を発行した頻度(iops)の情報が格納される。
【0042】
続いて、
図7に、ホスト仮想計算機150が実行する、ボリューム340上のチャンクに対するデータ読み込みを実行する時の処理の流れ(フロー600)を示す。以下、ホスト仮想計算機150aのアプリケーションプログラム321aがボリューム340上のチャンクの読み出しを行う場合を例として説明するが、他のホスト仮想計算機150でも同様の処理が行われる。
【0043】
アプリケーションプログラム321aがボリューム入出力プログラム322aに対し、読み込み対象のチャンクを特定する情報(ボリュームIDとチャンク番号)を指定した読み込み命令を発行すると、ボリューム入出力プログラム322aはキャッシュ管理プログラム323aに対し、ホスト仮想計算機150a内のディスクキャッシュ325aに、読み込み対象チャンクのデータ複製が保持されているか(チャンクがキャッシュされているか)判定させる(S610)。この判定では、キャッシュ管理プログラム323aは統合キャッシュ管理プログラム223に対し、チャンクのデータ複製が、ホスト仮想計算機150a内のディスクキャッシュ325aに保持されているか問い合わせを行い、統合キャッシュ管理プログラム223はこの問い合わせを受け付けると、キャッシュ管理テーブル224を参照して、チャンクのデータ複製が、ホスト仮想計算機150a内のディスクキャッシュ325aに保持されているか判定する。具体的には、キャッシュ管理テーブル224内の、指定されたボリュームID510とチャンク番号520を有するエントリに、問い合わせをしてきたホスト仮想計算機150aの情報がスレーブ550に登録されているかを判定する。
【0044】
ホスト仮想計算機150a内のディスクキャッシュ325aに、読み込み対象チャンクのデータ複製が保持されている場合、S655に進む。ホスト仮想計算機150a内のディスクキャッシュ325aに、読み込み対象チャンクのデータ複製が保持されていない場合、キャッシュ管理プログラム323aはホスト仮想計算機150aのディスクキャッシュ325aに、複製チャンクを配置するための領域を確保する(S615)。キャッシュ領域の確保、解放等の管理方法は、周知の技術であるため、詳細な説明は省略するが、キャッシュ管理プログラム323aはディスクキャッシュ325aの未使用領域を管理する情報を維持管理しており、当該情報を用いて未使用領域を選択し、読み込み対象チャンクのデータ複製を格納する領域に利用する。また未使用領域が不足している場合には、ディスクキャッシュ325aの使用中領域のいずれかの領域(たとえば最後にアクセスされてからの時間が最も経過している領域)を未使用領域へと変更し、今回の読み込み対象チャンクのデータ複製を格納する領域として利用する。またキャッシュ領域の確保と同時に、キャッシュ管理プログラム323aは統合キャッシュ管理プログラム223に、確保領域の情報(キャッシュ上のアドレス、当該確保された領域に対応するチャンクのボリュームID、チャンク番号等、キャッシュ管理テーブル224を更新するために必要な情報)を通知し、それを受けた統合キャッシュ管理プログラム223は、キャッシュ管理テーブル224を更新する。キャッシュ管理テーブル224の更新処理は、新たに確保されたディスクキャッシュ325、226上の領域に対応するチャンクのエントリ内のメモリアドレス540の欄に、新たに確保されたディスクキャッシュ領域のメモリアドレス情報を格納し、またエントリのスレーブ550欄に、ディスクキャッシュ確保を行ったホスト仮想計算機150あるいは統合ストレージ110の情報を登録する。続いてボリューム入出力プログラム322aは、内部通信路を介して統合ストレージ装置110に、読み込み対象のチャンクを特定する情報(ボリュームIDとチャンク番号)を指定して、チャンクデータの読み込み要求を出す(S620)。
【0045】
チャンクデータの読み込み要求を受けた統合ストレージ装置110では、主に内部入出力受付プログラム221が以下に説明するS625からS650の処理を行う。内部入出力受付プログラム221は、統合キャッシュ管理プログラム223に対し、統合ストレージ装置110内のディスクキャッシュ226に、読み込み対象チャンクに対応するデータ複製が保持されているか問い合わせる(S625)。データ複製が保持されているか問い合わせを受けた統合キャッシュ管理プログラム223は、S610で説明した処理と同様に、キャッシュ管理テーブル224に、指定されたボリュームID510とチャンク番号520を有するエントリが存在するか、また当該エントリが存在する場合に、統合ストレージ装置110の情報がスレーブ550に登録されているかを判定する。保持されている場合、統合ストレージ装置110のディスクキャッシュ226内データをホスト仮想計算機150に返せば良いのでS650に進む。保持されていない場合、統合キャッシュ管理プログラム223は統合ストレージ装置110のディスクキャッシュ226中に複製チャンクを配置するための領域を確保する(S630)。S630では、S615と同様、統合キャッシュ管理プログラム223は領域を確保するとともに、キャッシュ管理テーブル224の内容を更新する。
【0046】
領域を確保すると、内部入出力受付プログラム221は統合キャッシュ管理プログラム223に、読み込み対象チャンクのマスタであるホスト仮想計算機150が存在するか問い合わせる(S635)。統合キャッシュ管理プログラム223はこの問い合わせを受け付けると、キャッシュ管理テーブル224中の、読み込み対象チャンク(ボリュームID510とチャンク番号520で特定されるチャンク)についての情報が登録されているエントリを参照し、マスタ530に登録されている計算機(ホスト仮想計算機)の情報を取得して、内部入出力受付プログラム221に返却する(他のホスト仮想計算機150でチャンクデータがキャッシュされていないこともあり、その場合には、マスタである計算機は存在しない旨の応答が返却される)。内部入出力受付プログラム221は、統合キャッシュ管理プログラム223から返却された計算機の情報を参照することで、マスタであるホスト仮想計算機150が存在するか否かを判定できる。
【0047】
S635における判定の結果、マスタであるホスト仮想計算機150が存在する場合、内部入出力受付プログラム221はマスタであるホスト仮想計算機150に対し、マスタであるホスト仮想計算機150のディスクキャッシュ325上に保持されている読み込み対象チャンクのデータ複製を送信するよう要求し、マスタであるホスト仮想計算機150からデータを取得する。取得したデータは、S630で確保したディスクキャッシュ226上の領域に格納される(S640)。マスタであるホスト仮想計算機150が存在しない場合、つまり他のホスト仮想計算機150が複製チャンクを持たない場合、内部入出力受付プログラム221は記憶媒体入出力プログラム222に指示をして、ボリューム340を構成する記憶媒体240から対象チャンクのデータを読み出させ、S630で確保したディスクキャッシュ226上の領域に格納する(S645)。
【0048】
その後、内部入出力受付プログラム221はディスクキャッシュ226上に格納されたデータをホスト仮想計算機150aに返却し、ホスト仮想計算機150aのボリューム入出力プログラム322aは、S615で確保したディスクキャッシュ325a上に内部入出力受付プログラム221から受け取ったデータを格納する(S650)。ここまでの手順により、ホスト仮想計算機150のディスクキャッシュ325上に対象チャンクのデータが格納される。
【0049】
続いてボリューム入出力プログラム322はアプリケーションプログラム321にデータを転送する(S655)。最後に、統合キャッシュ管理プログラム223はフロー1000に示すキャッシュ再配置処理を行う(S660)。また、統計情報の更新を行う。以上の手順により、ボリューム340上のチャンク読み込みを完了する。なお、キャッシュ再配置処理については後述するが、後述する書き込み処理の時だけキャッシュ再配置処理を行うようにして、読み込み処理(S660)では、必ずしもキャッシュ再配置処理を行わなくともよい。
【0050】
図8に、ホスト仮想計算機150によるボリューム340上へのチャンク書き込み処理フロー600を示す。以下の処理では、ディスクキャッシュはWrite-Backキャッシュとして振る舞うことを前提とする。すなわち、書き込みデータはディスクキャッシュに書き込まれた時点で書き込み処理が完了するとみなす。
【0051】
アプリケーションプログラム321がボリューム入出力プログラム322にチャンクデータ書き込みを要求すると、最初にボリューム入出力プログラム322は統合キャッシュ管理プログラム223に対し、フロー1000に示すキャッシュ再配置処理を実行するよう要求する(S710)。次に、キャッシュ管理プログラム323はディスクキャッシュ325上に書き込み対象チャンクの格納領域が無い場合、ディスクキャッシュ325上に領域を確保する(S715)。この領域を確保する処理は、S615と同様である。そして、書き込みするデータをS715で確保した領域に書き込む(S720)。続けて、キャッシュ管理プログラム323は統合キャッシュ管理プログラム223に書き込み対象チャンクのマスタである計算機の情報を問い合わせる(S725)。書き込みを行うホスト仮想計算機150自身がマスタである場合、この時点で書き込み処理は完了し、最後にフロー1000に示すキャッシュ再配置を行って終了する(S755)。書き込みを行うホスト仮想計算機150自身がマスタではない場合、ボリューム入出力プログラム322は内部通信路を介して、書き込み対象チャンクのボリュームIDとチャンク番号を指定して、統合ストレージ装置110に対してデータ書き込み要求を出す(S730)。チャンクデータの書き込み要求を受けた統合ストレージ装置110の内部入出力受付プログラム221は、統合キャッシュ管理プログラム223に対し、統合ストレージ装置110内のディスクキャッシュ226に、書き込み対象チャンクに対応するキャッシュ領域が保持されているか(統合ストレージ装置110の情報がキャッシュ管理テーブル224のスレーブ550に登録されているか)、問い合わせ(S733)、ディスクキャッシュ226上に複製チャンクを格納する領域が無い場合、複製チャンクを配置するための領域を確保する(S735)。そして、内部入出力受付プログラム221が受け取った書き込みデータをS735で確保した領域に書き込む(S740)。続けて、内部入出力受付プログラム221は統合キャッシュ管理プログラム223に対象チャンクのマスタが統合ストレージ装置110自身であるか問い合わせる(S745)。マスタが統合ストレージ装置110自身ではない場合、記憶媒体入出力プログラム222は、S740で書き込んだデータを、ボリューム340を構成する記憶媒体240上に書き込む。この時点で書き込み処理は完了し、最後にフロー1000に示すキャッシュ再配置処理、統計情報の更新を行って終了する(S755)。
【0052】
図9に、統合ストレージ装置110によるボリューム340上のチャンクに対する読み込み処理フロー800を示す。この処理フロー800は、統合ストレージ装置110自身が記憶媒体間データコピーやデータ整合性検証等の機能を実現する目的でボリューム上のデータを参照する際に実行される。
【0053】
処理フロー800は、処理フロー600から一部の処理が削除されたものであって、各処理は、処理フロー600で行われる内容と同内容である。すなわち、S825はS625と同等の判断を行う。S830ではS630と同等の処理を行う。S835ではS635と同等の判断を行う。S840ではS640と同等の処理を行う。S845ではS645と同等の処理を行う。S860ではS660と同等の処理を行う。
【0054】
図10に、統合ストレージ装置110によるボリューム340上のチャンクに対する書き込み処理フロー900を示す。この処理フロー900は、統合ストレージ装置110自身が記憶媒体間データコピー等の機能を実現する目的でボリューム上のデータを上書きする際に実行される。
【0055】
処理フロー900の中で行われる処理は、処理フロー700の中で行われる処理のうち一部の処理が行われる。すなわち、S910ではS710と同等の処理を行う。S933はS733と同等の判断を行い、S935とS940ではそれぞれ、S735とS740と同等の処理を行う。S945はS745と同等の判断、つまり書き込みチャンクのデータについて、統合ストレージ装置110がマスタであるかの判断を行う。統合ストレージ装置110がマスタである場合には何もせず、S955に進むが、統合ストレージ装置110がマスタでない場合、S950にてボリューム(記憶媒体)へのデータ書き込みを行う。S955ではS755と同様、キャッシュ再配置処理、統計情報の更新を行う。
【0056】
図11にキャッシュ再配置処理フロー1000を示す。この処理フロー1000は、ライト処理の最初、あるいはリード・ライト処理の最後(処理フロー600・700・800・900におけるS660・S710・S755・S860・S910・S955)に、実行を要求される。
【0057】
処理フロー1000において、まず統合キャッシュ管理プログラム223は各ホスト仮想計算機150中の統計情報324及び統合ストレージ装置110中の統計情報225を取得する(S1010)。
【0058】
次に、統合キャッシュ管理プログラム223は得られた統計情報225・324やキャッシュ管理テーブル224の情報を元に、キャッシュ配置を再計算する(S1020)。このキャッシュ配置再計算処理では、ディスクキャッシュ226・325の領域の利用効率を向上させ、かつ各ホスト仮想計算機のアプリケーションプログラム321の実行速度を向上させることができるように、ディスクキャッシュ上データ配置を決定するとともに、処理対象のチャンクのマスタをどの計算機にするか決定する。キャッシュ配置の再計算処理の結果、処理対象チャンクのマスタとなる計算機(ホスト仮想計算機150または統合ストレージ装置110)と、削除すべき(不要な)キャッシュ領域が決定される。
【0059】
キャッシュ配置再計算処理の詳細を説明する。まず本発明の実施例1における、キャッシュ配置の基本的な考え方について、
図4を用いて一例を挙げる。先に述べたとおり、ボリューム上の特定チャンクのデータを複数のホスト仮想計算機150がそれぞれキャッシュしている状態はメモリの使用効率を悪化させるため、本発明の統合ストレージ装置110は、複数のホスト仮想計算機150がそれぞれボリューム上の同一チャンクのデータをキャッシュしている状態を解消させる。またその際、データのキャッシュ先の選択によって、ボリュームにアクセスするアプリケーションプログラム321等の性能に違いが出る場合があるため、できるだけアプリケーションプログラム321等のアクセス性能が良くなるように、キャッシュ先を選択する。
【0060】
図4において、ホスト仮想計算機150aのみが、チャンクP(421)をアクセスしていると判断される場合、統合ストレージ装置110はこのチャンクの複製データP(423)をホスト仮想計算機150a内のディスクキャッシュ325a内に配置し、統合ストレージ装置110内の複製チャンクP(422)は削除する。この場合、ホスト仮想計算機150aによるチャンクP(421)の参照・更新処理はホスト仮想計算機150a内で完了し、S620及びS730以降の処理を省略できるのでホスト仮想計算機150a中のアプリケーションプログラム321の実行速度が向上する。なお、たとえばホスト仮想計算機150bが、チャンクP(421)をアクセスしたが、ホスト仮想計算機150bのアクセス統計を考慮すると、ホスト仮想計算機150bが今後当該チャンクP(421)をアクセスする可能性が低く、ホスト仮想計算機150aのみがチャンクP(421)をアクセスすると判断される場合(ホスト仮想計算機150aが、チャンクP(421)をアクセスする可能性が高い場合)は、やはりチャンクの複製データP(423)はホスト仮想計算機150aのみにあったほうが良いため、ディスクキャッシュ325aのみに配置させる。
【0061】
一方、チャンクQ(431)を各ホスト仮想計算機150a・150b・150cがアクセスすると判断される場合、統合ストレージ装置110内の複製チャンクQ(432)を残し、ホスト仮想計算機内の複製チャンクQ(433a・433b・433c)は削除して良い。これは、先のチャンクP(421)の例のように、いずれかのホスト仮想計算機に複製チャンクQを配置すると、各ホスト仮想計算機がチャンクQ(431)の入出力を行う際、毎回S640によるデータ取得等が発生し、処理速度が低下する。そのため、各ホスト仮想計算機150a・150b・150cからアクセスされることが多いチャンクは、統合ストレージ装置110内のディスクキャッシュ226にチャンクデータの複製を配置する。
【0062】
ただし、データの更新処理(処理フロー700あるいは900)を実行すると、更新対象のチャンクの最新データは、更新処理を実施するホスト仮想計算機150あるいは統合ストレージ装置110のディスクキャッシュ(226、325)に格納されるため、当該チャンクのマスタ計算機は、更新処理を実施するホスト仮想計算機150あるいは統合ストレージ装置110でなければならない。そのため本発明の実施例1におけるキャッシュ再配置処理では、データの更新処理(処理フロー700あるいは900)の実行直前に、更新処理を実施するホスト仮想計算機150あるいは統合ストレージ装置110のいずれかを強制的にマスタにし、その他のホスト仮想計算機150が保持しているチャンクの複製は削除させる(ただし、今後再アクセスされる可能性が低いチャンクについては、ホスト仮想計算機150あるいは統合ストレージ装置110のいずれにもキャッシュさせない、つまりマスタとなる計算機を存在させないという選択肢もある)。
【0063】
本発明の実施例1における統合ストレージ装置110では、上で述べたような考え方に基づいて、キャッシュ配置の再計算を行う。ただしキャッシュ再配置処理1000は、
図7のリード処理の最後(S660)、
図8のライト処理の最初(S710)や最後(S755)等、様々な場面で実行される処理であるが、どの場面で実行されるかによって、キャッシュ配置再計算の処理内容も異なってくる。具体的には、
図10のS910から呼び出された場合、
図8のS710から呼び出された場合、そしてそれ以外の処理(
図7のS660、
図8のS755、
図9のS860、
図10のS955)から呼び出された場合、のそれぞれで異なる処理が行われる。以下、それぞれの場合について説明する。
【0064】
図11のS901から呼び出された場合、つまり統合ストレージ装置110によるボリューム340上のチャンクに対する書き込み処理の最初に行われるキャッシュ再配置処理から呼び出された場合、統合ストレージ装置110をマスタとするか、しないかを決定する(なお、統合ストレージ装置110をマスタとしない場合、ディスクキャッシュ226上のライト対象チャンク用のキャッシュ領域は削除する。また他のいずれのホスト仮想計算機150もマスタにはしない)。統合キャッシュ管理プログラム223は統計情報225を参照して、アクセス対象のチャンクが統合ストレージ装置110によって今後アクセスされる可能性があるか判定する。一例としては、統合ストレージ装置110によるアクセス対象のチャンクへのアクセス頻度(575、576)が所定値(第1の閾値)未満であるか、現在時刻と最終アクセス時刻(573、574)との差が所定時間(第2の閾値)以上であるかを判定する。アクセス頻度(575、576)が所定値未満であり、かつ現在時刻と最終アクセス時刻(573、574)との差が所定時間以上である場合、対象のチャンクに再びアクセスする可能性は低い(キャッシュの効果が薄い)と推測されるため、マスタなし(対象チャンクデータがキャッシュされている領域は全て削除する)とすることを決定する。そうでない場合、統合ストレージ装置110をマスタと決定し、全てのホスト仮想計算機150の対象チャンクデータ複製は削除することを決定する。なお、この判定方法は一例であって、その他の例として、アクセス頻度のみを用いて判定する、現在時刻と最終アクセス時刻との差のみを用いて判定する、その他の情報を判定に用いる等、様々な判定例を採用することが可能である。
【0065】
続いて
図8のS710から呼び出された場合の処理を説明する。この場合、チャンク書き込み処理を行っているホスト仮想計算機150あるいは統合ストレージ装置110のいずれかをマスタと決定する処理を行う。以下、ホスト仮想計算機150aがボリューム340上へのチャンク書き込み処理を開始し、その処理のS710において、キャッシュ再配置処理1000が呼び出された場合を例にとって説明する。
【0066】
統合キャッシュ管理プログラム223は、統計情報225及びホスト仮想計算機150の統計情報324を参照して、アクセス対象のチャンクが統合ストレージ装置110またはホスト仮想計算機150aによって今後アクセスされる可能性があるか判定する。判定方法の一例としては、ホスト仮想計算機150a以外のホスト仮想計算機150b、150cによる、対象のチャンクへのアクセス頻度(575、576)が所定値未満であるか、現在時刻と最終アクセス時刻(573、574)との差が所定時間以上であるかを判定する。アクセス頻度(575、576)が所定値未満であり、現在時刻と最終アクセス時刻(573、574)との差が所定時間以上である場合、ホスト仮想計算機150a以外のホスト仮想計算機150は、対象のチャンクに今後アクセスする可能性は低いと推測される。そのためホスト仮想計算機150aをマスタにすることを決定する。またそれ以外のディスクキャッシュ(325、226)上の対象チャンクデータ複製は削除する旨を決定し、S10250に進む。アクセス頻度(575、576)が所定値以上、あるいは現在時刻と最終アクセス時刻(573、574)との差が所定時間未満である場合、ホスト仮想計算機150a以外のホスト仮想計算機150が、対象のチャンクに今後アクセスする可能性は高いと推測される。そのため統合ストレージ装置110をマスタと決定し、全てのホスト仮想計算機150の対象チャンクデータ複製は削除することを決定する。
【0067】
最後にキャッシュ再配置処理が、
図7のS660、
図9のS755、
図10のS860、
図11のS955から呼び出された場合について説明する。この場合、統合キャッシュ管理プログラム223は、統計情報225及びホスト仮想計算機150aの統計情報324を参照して、特定の仮想計算機のみが対象のチャンクをアクセスしているのか、あるいは複数の仮想計算機が対象のチャンクをアクセスしているかを判断(正確には推定)する。判断の一例として、全ホスト仮想計算機150、統合ストレージ110の中で、対象のチャンクへのアクセス頻度(575、576)が最も高いホスト仮想計算機150または統合ストレージ110(以下、本段落では「計算機」と略記する)、そして2番目にアクセス頻度が高い計算機を選定する。そして、対象のチャンクへのアクセス頻度が最も高い計算機のアクセス頻度と、2番目にアクセス頻度が高い計算機のアクセス頻度との差が所定値以上であるか判定し、所定値以上の場合、対象のチャンクへのアクセス頻度が最も高い計算機のみが対象チャンクをアクセスしていると判断し、この計算機をマスタと決定する。そしてそれ以外の計算機にキャッシュされている対象チャンクのデータ複製は削除すると決定する。アクセス頻度の差が所定値未満の場合には、複数の計算機が対象のチャンクへアクセスするものと判断し、統合ストレージ110をマスタと決定する。そしてそれ以外の計算機にキャッシュされている対象チャンクのデータ複製は削除すると決定する。以上が、キャッシュ再配置計算の処理内容である。
【0068】
S1020のキャッシュ配置再計算結果を受け、統合キャッシュ管理プログラム223は不要キャッシュ領域の回収とキャッシュ管理テーブル224の更新を行う(S1030)。具体的には、まずキャッシュ配置再計算の結果、マスタである計算機(ホスト仮想計算機150または統合ストレージ装置110)が変更される場合であって、かつマスタである計算機が自身のディスクキャッシュ(226、325)にアクセス対象のチャンク用のキャッシュ領域を確保している場合、統合キャッシュ管理プログラム223は、キャッシュ管理プログラム323や記憶媒体入出力プログラム222に指示して、当該キャッシュ領域上のデータを統合ストレージ装置110の記憶媒体に書きださせる。続いてキャッシュ管理テーブル224から、削除すべきキャッシュ領域の情報(
図5のメモリアドレス540の情報が該当する)を削除し、またマスタ530に登録されている計算機の情報を、S1020で決定された内容へと更新する(なおS1020でマスタなしと決定された場合は、マスタ530の内容を無効値にする)。最後にキャッシュ管理テーブル224の内容のうち、S1030で更新されたエントリの情報を各ホスト仮想計算機150のキャッシュ管理プログラム323に通知する(S1040)。各ホスト仮想計算機150のキャッシュ管理プログラム323はこの情報を受信すると、キャッシュしておく必要のないデータの格納されている領域を未使用領域として管理するように、未使用領域の管理情報を変更する。これでキャッシュ再配置処理が終了する。
【0069】
以上で、本発明の実施例1における統合ストレージ装置110の構成と処理内容についての説明を終了する。続いて本発明の効果について、
図4を用いて説明する。本発明の実施例1における統合ストレージ装置110では、ホスト仮想計算機150aだけがチャンクP(421)を参照する場合には、ホスト仮想計算機150aのディスクキャッシュ325aのみにチャンクPのデータ複製を保持し、その他のディスクキャッシュ(325b、325c、226)上にチャンクPのデータ複製が存在する場合、これらのデータ複製は削除される。また各ホスト仮想計算機150a・150b・150cがいずれもチャンクQ(431)を参照する場合、ディスクキャッシュ226のみにチャンクQのデータ複製(432)を保持するようにし、その他のディスクキャッシュ上にあるデータは削除される。
【0070】
一方、本発明のキャッシュ再配置処理を適用していない計算機システムの場合には、ボリューム340上のチャンクP(421)に対するリード要求を発行すると、ストレージ装置110上はディスクキャッシュ226にチャンクPのデータ複製(422)を格納する。さらに、統合ストレージ装置110のディスクキャッシュ226からホスト仮想計算機325aにチャンクPのデータ複製(422)が転送され、ホスト仮想計算機150aのディスクキャッシュ325a上にもチャンクPのデータ複製(423)が格納される(つまりチャンクPの複製がディスクキャッシュ226、325aに重複して存在することになる)。また各ホスト仮想計算機150a・150b・150cがいずれもチャンクQ(431)を読み出した場合、統合ストレージ装置110のディスクキャッシュ226上に複製チャンクQ(432)を格納するほか、各ホスト仮想計算機150a・150b・150c上のディスクキャッシュ325a・325b・326cにも複製チャンクQ(433a・433b・433c)が格納される、つまり同一チャンクに対するデータ複製が多数、ディスクキャッシュ上に残されることになる。
【0071】
本発明の実施例1における統合ストレージ装置110では、上に述べた処理により、ボリューム内の同一チャンクの複製データを複数のホスト仮想計算機で保持することを避けることができ、限られたディスクキャッシュ領域を効率良く利用することを可能とする。また各ホスト仮想計算機150のチャンクに対するアクセス状況に応じて、チャンクデータ複製のディスクキャッシュ上の配置場所を決定するため、アプリケーションプログラム321の実行速度を向上させることができる。
【0072】
[変形例]
前記キャッシュ再計算処理フロー1000によると、各チャンクの複製チャンクは単一のディスクキャッシュに配置されるが、ディスクキャッシュ領域に余裕があれば、アプリケーションプログラム321等の実行速度向上のために、データ配置方針を工夫する変形例も考えられる。
図12を用いて、キャッシュ複製処理1050について説明する。この処理は、上で説明したキャッシュ再配置処理1000とは独立して、定期的(数時間に1回等)に、あるいはユーザからの指示があった時に、統合キャッシュ管理プログラム223が実行する。
【0073】
キャッシュ複製処理では、キャッシュ管理テーブル224に登録されている全チャンクについて、キャッシュされているデータの複製を作成するか判定する処理を行う。S10500では、カウンタNを用意し、Nを初期化する(0にする)。続いてS10501では、キャッシュ管理テーブル224のN番目のエントリを参照し、当該エントリに登録されているチャンクの位置情報(ボリュームID510、チャンク番号520)、当該チャンクのマスタの情報(マスタ530)、メモリアドレス540を取得する。
【0074】
S10502では、選択されたエントリに登録されているチャンク(ボリュームID510、チャンク番号520で特定されるチャンク)はキャッシュされているか判定する。具体的にはメモリアドレス540に有効な値が格納されているか判定し、キャッシュされていると判定された場合にはS10503に進み、キャッシュされていないと判定された場合にはS10507へと進む。
【0075】
S10503では、統計情報324を参照し、マスタ以外のすべてのホスト仮想計算機150において、当該チャンクに更新があるか判定する。判定方法の一例として、ライト頻度575が0か否かを判定する(あるいは最終ライト時刻が現在時刻より所定時間以上前であるかを判定するようにしてもよい)。いずれかのホスト仮想計算機150で更新があると判定された場合、S10507に進み、当該チャンクは複製しないこととする。いずれのホスト仮想計算機150においても更新がないと判定された場合、S10504に進む。
【0076】
S10504〜S10506の処理は、マスタ以外のホスト仮想計算機150毎に実施する処理である。S10504では、統計情報324を参照し、マスタ以外のホスト仮想計算機150において、当該チャンクを参照しているか(リードアクセスが行われているか)判定する。判定方法の一例として、リード頻度575が所定値以上か否かを判定する(あるいは現在時刻と最終リード時刻との差が所定時間以内であるかを判定するようにしてもよい)。いずれかのホスト仮想計算機150において、当該チャンクを参照していると判定された場合、S10505に進み、そうでない場合にはS10507に進む。
【0077】
S10505では、マスタ以外のホスト仮想計算機150において、ディスクキャッシュ325に未使用領域があり、チャンクデータの複製を格納可能か判断する。具体的には統合キャッシュ管理プログラム223がマスタ以外のホスト仮想計算機150のキャッシュ管理プログラム323に問い合わせ、ディスクキャッシュ325の未使用領域サイズが、所定値以上であるかを判定する。未使用領域があると判定された場合には、S10506に進み、そうでない場合にはS10507に進む。
【0078】
S10506では、S10505における判定の結果、ディスクキャッシュ325に未使用領域があると判定されたホスト仮想計算機150のディスクキャッシュ325上に、チャンクデータの複製を作成する処理を行う。具体的には、統合キャッシュ管理プログラム223がマスタのホスト仮想計算機150のキャッシュ管理プログラム323に指示して、マスタのホスト仮想計算機150のディスクキャッシュ325上のチャンク複製を、統合ストレージ110のディスクキャッシュ226にコピーさせる。そしてディスクキャッシュ226から各ホスト仮想計算機150のディスクキャッシュ325へとコピーする。そしてキャッシュ管理テーブル224の内容を更新する。なお、処理対象としているチャンクのマスタが統合ストレージ装置110である場合には、統合ストレージ装置110のディスクキャッシュから各ホスト仮想計算機150のディスクキャッシュ325へとコピーする。
【0079】
S10507では、カウンタNを1増加させ、S10508に進む。S10508では、キャッシュ管理テーブル224内の全てのエントリについて処理を行ったか判定し、まだ処理していないエントリが存在する場合には、S10502に戻る。全てのエントリについて処理を行った場合には処理を終了する。
【0080】
この複製先決定処理を実行することにより、例えば
図4のチャンクQ(431)について、各ホスト仮想計算機150a・150b・150cのディスクキャッシュ領域に未使用領域があり、かつチャンクQ(431)が参照のみされて更新されない場合、各ホスト仮想計算機150a・150b・150cそれぞれのディスクキャッシュ325に、複製チャンクQ(433a・433b・433c)が保持されることになる。この場合、各ホスト仮想計算機150によるチャンクQ(431)の参照処理は各ホスト仮想計算機150内で完了し、S620以降の処理を省略できるので、各ホスト仮想計算機150a・150b・150c中のアプリケーションプログラム321の実行速度が向上する。
【実施例2】
【0081】
続いて本発明の実施例2における計算機システムについて説明する。本実施例における統合ストレージシステム110や、本実施例における統合ストレージシステム110の適用先の計算機システム100の構成は、実施例1におけるものとほぼ同様である。以下では実施例1における統合ストレージシステム110との差異について説明する。
【0082】
統合ストレージ装置110が備える仮想計算機プログラム227は仮想計算機用メモリ領域228とメモリ220内の対応づけを行う。ここで、ページングやセグメント方式によるメモリマッピング技術を適用すると、仮想計算機用メモリ領域228とメモリ220の各領域について、異なるメモリ空間を有する仮想計算機同士で同一内容を参照することができる。この際、複数の仮想計算機のメモリ領域を同一のメモリ220上の領域に対応づけ、メモリ上のデータを共有する構成をとることができる。
【0083】
図13に、統合ストレージ装置110のメモリ220における物理メモリ空間1100と、ホスト仮想計算機のメモリ空間1130a・1130bの対応例を示す。
【0084】
物理メモリ空間1100のうち統合ストレージ装置領域1110は、メモリ220のうち統合ストレージ装置110のみが参照する内容を含む。例えば統合ストレージ装置110が、ホスト仮想計算機150が使用するボリュームとは異なるボリュームを形成し、ホスト仮想計算機150とは独立にクライアント10にボリュームアクセスサービス等を提供する場合のキャッシュメモリ領域が該当する。また内部入出力受付プログラム221や統合キャッシュ管理プログラム223の記憶される領域も統合ストレージ装置領域1110に含まれる。仮想計算機用メモリ領域228a・228bは、それぞれホスト仮想計算機のメモリ空間1130a・1130b内の領域1140a・1140bに対応づけられる。また、キャッシュ管理テーブル224はそれぞれホスト仮想計算機のメモリ空間1130a・1130b内の領域1150a・1150bに対応づけられる。
【0085】
実施例1においては統合ストレージ装置110と各ホスト仮想計算機150は別々にディスクキャッシュ226・325を保持していたが、前述のメモリ領域の対応づけにより、単一の共有ディスクキャッシュ1120を統合ストレージ装置110と各ホスト仮想計算機150が共有するようにする。この対応づけにより、各ホスト仮想計算機150は自身のメモリ空間1130に対応付けられた共有ディスクキャッシュ領域1120を参照することで、他のホスト仮想計算機150によって共有ディスクキャッシュ領域1120上に格納されたチャンクデータの複製であっても、メモリ上で参照可能となる。
【0086】
続いて、実施例2における統合ストレージ装置110が管理するキャッシュ管理テーブル224’について、
図14を用いて説明する。実施例2におけるキャッシュ管理テーブル224’は、実施例1のキャッシュ管理テーブル224内の各項目のうち、マスタ530、スレーブ550の項目が削除され、新たな項目としてキャッシュ要否540’が追加されたテーブルである。キャッシュ要否540’の欄は、データをキャッシュするべきか否かを表す項目で、キャッシュ要否540’の欄に値1が格納されている場合、当該エントリに対応するチャンクのデータはキャッシュされるべきことを意味し、値0が格納されているエントリの場合、当該エントリに対応するチャンクのデータはキャッシュしないようにする。具体的な用いられ方は後述する。
【0087】
また、実施例1のキャッシュ管理テーブル224では、
図5の行563のように、メモリアドレス540の欄に複数のメモリアドレスが登録されているエントリが存在していたが、実施例2の統合ストレージ装置110の場合、メモリアドレス540の欄に複数のメモリアドレスが登録されることはない。これは先に述べたとおり、実施例2の場合にはディスクキャッシュ領域が、複数のホスト仮想計算機150、統合ストレージ110の間で共有されているため、チャンクのデータ複製が、ディスクキャッシュの複数箇所に存在することはないからである。
【0088】
以下、
図15から
図18を用いて、ボリューム340上のチャンクに対する読み込みないし書き込み処理を説明する。これらの処理は実施例1で説明した処理とほぼ同様であるが、キャッシュが共有キャッシュであるため、実施例1で説明したキャッシュ再配置処理のように、重複して存在するキャッシュデータを削除する処理は存在しない。実施例2における読み込みまたは書き込み処理では、キャッシュ再配置処理に代えてキャッシュ要否判定処理が行われる点が、実施例1における処理と異なる主な点である。
【0089】
読み込みまたは書き込み処理の流れを説明する前に、キャッシュ要否判定処理について説明する。キャッシュ要否判定処理は、アクセス(読み込みないし書き込み)対象のチャンクをキャッシュすべきか否かを決定する。アクセス対象チャンクのキャッシュ要否の判断には、様々な方法を用いることができる。一例として、NFSやSCSI等のプロトコルでは、書き込みデータのキャッシュを許さず、最終記憶媒体まで書き込ませるコマンドが規定されているので、統合ストレージ装置110はそのコマンドの到来を、キャッシュ要否判定に用いる方法があり得る。具体的には、上で説明したようなコマンドを受信した場合、キャッシュ管理テーブル224’のアクセス対象チャンクに対応するエントリ中の、キャッシュ要否540’の欄に値0を格納し、またキャッシュ領域を削除する(メモリアドレス530’の値を無効値にする)。あるいはそれらのコマンドの累計発生回数を性能情報(統計情報)としてカウントし、当該累計発生回数が所定の閾値より多くなった場合に、キャッシュ管理テーブル224’のアクセス対象チャンクに対応するエントリ中の、キャッシュ要否540’の欄に値0を格納し、またキャッシュ領域を削除する(メモリアドレス530’の値を無効値にする)。
【0090】
また、別の実施形態として、チャンクへのアクセス間隔をキャッシュ要否の判断に用いる方法もあり得る。その場合、統合キャッシュ管理プログラム223は、統計情報225及びホスト仮想計算機150の統計情報324を参照して、各ホスト仮想計算機150と統合ストレージ装置110の、アクセス対象チャンクへの最終アクセス時刻(573、574)を取得し、これを用いて現在時刻とアクセス対象チャンクの最終アクセス時刻(573、574)との差の最小値を計算する。この最小値が所定値以上の場合、当該アクセス対象チャンクはこれまであまりアクセスされていなかったため、今後もアクセスされる可能性は低いと判定し、キャッシュ管理テーブル224’のアクセス対象チャンクに対応するエントリ中の、キャッシュ要否540’の欄に値0を格納し、またキャッシュ領域を削除する(メモリアドレス530’の値を無効値にする)。この最小値が所定値未満の場合には、キャッシュ要否540’の欄に値1を格納する。
【0091】
続いて
図15を用いて、ホスト仮想計算機150がボリューム340上のチャンクに対する読み込み処理フロー1200を説明する。アプリケーションプログラム321がボリューム入出力プログラム322にチャンクデータを要求すると、ボリューム入出力プログラム322はキャッシュ管理プログラム323に対し、共有ディスクキャッシュ1120に読み込み対象チャンクの複製チャンクを保持しているか判定させる(S1210)。この時、判定方法としてはキャッシュ管理プログラム323が統合キャッシュ管理プログラム223に問い合わせをしても良いし、ホスト仮想計算機のメモリ空間1130に対応付けられたキャッシュ管理テーブル1150をキャッシュ管理プログラム323が直接参照してもよい。S1210で保持していると判定された場合、そのデータを参照すれば良いのでS1230に進む。所有していない場合、ボリューム入出力プログラム322は内部通信路を介して統合ストレージ装置110にボリューム上のチャンクデータの読み込み要求を出す(S1215)。チャンクデータの読み込み要求を受けた統合ストレージ装置110の内部入出力受付プログラム221は、統合キャッシュ管理プログラム223に対し共有ディスクキャッシュ1120中に複製チャンクを配置するための領域を確保するよう要求する(S1220)。領域が確保されると、内部入出力受付プログラム221は記憶媒体入出力プログラム222に指示をして、ボリューム340を構成する記憶媒体240から対象チャンクのデータをS1220で確保した共有ディスクキャッシュ1120上の領域に格納させる。共有ディスクキャッシュ1120上に読み込み対象チャンクの複製データが格納されると、内部入出力受付プログラム221はホスト仮想計算機150上のボリューム入出力プログラム322に読み込み準備が完了したことを通知する(S1225)。S1230では、ボリューム入出力プログラム322はアプリケーションプログラム321に読み込み準備が完了したこと、そして読み込み対象チャンクの複製データが格納されている共有ディスクキャッシュ1120上のアドレスを通知する。そしてアプリケーションプログラム321はボリューム入出力プログラム322から通知された、共有ディスクキャッシュ1120上のアドレスからデータを読み込む。最後に、統合キャッシュ管理プログラム223は上で説明したキャッシュ要否判定処理を行ってもよい(S1235)。以上の手順により、ボリューム340上のチャンク読み込みを完了する。
【0092】
図16に、ホスト仮想計算機150によるボリューム340上へのチャンク書き込み処理フロー1300を示す。以下の処理では、ディスクキャッシュはWrite-Backキャッシュとして振る舞うことを前提とする。すなわち、書き込みデータはディスクキャッシュに書き込まれた時点で書き込み処理が完了するとみなす。
【0093】
アプリケーションプログラム321がボリューム入出力プログラム322にチャンクデータ書き込みを要求すると、最初にボリューム入出力プログラム322は統合キャッシュ管理プログラム223に対し、キャッシュ要否判定を実行するよう要求する(S1310)。次に、キャッシュ管理プログラム323は共有ディスクキャッシュ1120上に書き込み対象チャンクの格納領域が無い場合、領域を確保する(S1315)。領域が確保された後、ボリューム入出力プログラム322は書き込みするデータをS1315で確保した領域に書き込む(S1320)。
【0094】
続いて、キャッシュ管理プログラム323は書き込み対象チャンクはキャッシュされるべきものか否か判定する(S1325)。具体的には、キャッシュ管理テーブル224’のキャッシュ要否540’の欄に値1が格納されているか否か判定する。値1が格納されている場合、キャッシュされるべきものであるので、この時点で書き込み処理は完了し、最後にキャッシュ要否判定を行って終了する(S1345)。値0が格納されている場合、ボリューム入出力プログラム322は書き込みを行った領域に対し、内部通信路を介して統合ストレージ装置110にボリューム上のチャンクデータの書き込み要求を出し(S1330)、記憶媒体入出力プログラム222は、S1320で共有キャッシュ上に書き込まれたデータを、ボリューム340を構成する記憶媒体240上に書き込む(S1340)。最後にキャッシュ要否判定を行って終了する(S1345)。
【0095】
図17に、統合ストレージ装置110によるボリューム340上のチャンクに対する読み込み処理フロー1400を示す。この処理フロー1400は、統合ストレージ装置110自身が記憶媒体間データコピーやデータ整合性検証等の機能を実現する目的でボリューム上のデータを参照する際に実行される。
【0096】
処理フロー1400は、処理フロー1200の一部を抜き出したものである。すなわち、S1410はS1210と同等の判断を行う。S1415ではS1220と同等の処理を行う。S1420ではS1225と同等の処理を行う。S1425ではS1230と同等の処理を行う。S1430ではS1235と同等の処理を行う。
【0097】
図18に、統合ストレージ装置110によるボリューム340上のチャンクに対する書き込み処理フロー1500を示す。この処理フロー1500は、統合ストレージ装置110自身が記憶媒体間データコピー等の機能を実現する目的でボリューム上のデータを上書きする際に実行される。
【0098】
処理フロー1500は、処理フロー1300の一部を抜き出したものである。すなわち、S1510ではS1310と同等の処理を行う。S1515ではS1315と同等の処理を行う。S1520ではS1320と同等の処理を行う。S1535ではS1335と同等の処理を行う。S1540ではS1340と同等の処理を行う。S1545はS1345と同等の判断を行う。
【0099】
本発明を適用すると、実施例1同様に、ボリューム内のチャンクに対し、同一内容の複製チャンクを複数のホスト仮想計算機で保持することを避けられるので、限られたディスクキャッシュ領域を効率良く利用し、アプリケーションプログラム321の実行速度を向上させることができる。実施例2ではさらに、各ホスト仮想計算機150は統合ストレージ装置110に入出力要求を出すことなくデータを直接参照できるため、入出力要求を省略する分アプリケーションプログラム321の処理時間の短縮が実現できる。