(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶装置の所定のサイズの記憶領域ごとに、複数の装置からのアクセス状況に基づいて、アクセス頻度が閾値を超える時刻又は時間帯を予測するとともに、アクセス頻度が閾値を超える記憶領域を特定する予測部と、
前記予測部により予測された時刻又は時間帯、および、前記予測部により特定された記憶領域に基づいて、該予測された前記時刻又は時間帯より前に、該特定された記憶領域に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御する制御部と、
を備えたことを特徴とする管理装置。 
【請求項２】
データを記憶する記憶装置に対する複数の装置からのアクセス状況に基づいて、ある記憶装置に対する前記複数の装置からのアクセス頻度が所定の閾値を超える複数の記憶領域であって、各記憶領域のアドレスの間隔が所定の周期となる複数の記憶領域を特定する予測部と、
前記予測部により特定された複数の記憶領域に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御する制御部と、
を備えたことを特徴とする管理装置。 
【請求項３】
前記制御部は、前記予測部により予測された時刻又は時間帯および前記予測部により特定された記憶領域に基づいて、該予測された時刻又は時間帯より前に、該特定された記憶領域に記憶されたデータを該記憶領域にアクセスした装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御する
ことを特徴とする請求項１に記載の管理装置。 
【請求項４】
前記制御部は、前記予測部により予測された時刻又は時間帯よりも前の時刻であって、前記アクセス頻度が閾値以下の時刻に、前記記憶装置に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御することを特徴とする請求項１または３に記載の管理装置。 
【請求項５】
前記制御部は、前記複数の装置のうち、前記予測部により予測された時刻又は時間帯に前記記憶装置に対するアクセス頻度が閾値を超える装置の中から、所定の装置に対して、該予測された時刻又は時間帯よりも前の時刻に、前記記憶装置に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御するとともに、他の装置への該データの転送指示が送信されるように制御することを特徴とする請求項１に記載の管理装置。 
【請求項６】
前記制御部は、前記複数の装置のうち、前記予測部により特定された複数の記憶領域へのアクセス頻度が閾値を超える装置の中から、所定の装置に対して、該特定された複数の記憶領域に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御するとともに、他の装置への該データの転送指示が送信されるように制御することを特徴とする請求項２に記載の管理装置。 
【請求項７】
コンピュータに、
データを記憶する記憶装置の所定のサイズの記憶領域ごとに、複数の装置からのアクセス状況に基づいて、アクセス頻度が閾値を超える時刻又は時間帯を予測するとともに、アクセス頻度が閾値を超える記憶領域を特定し、
予測された時刻又は時間帯、および、特定された記憶領域に基づいて、該予測された前記時刻又は時間帯より前に、該特定された記憶領域に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御する
各処理を実行させることを特徴とする管理プログラム。 
【請求項８】
コンピュータに、
データを記憶する記憶装置に対する複数の装置からのアクセス状況に基づいて、ある記憶装置に対する前記複数の装置からのアクセス頻度が所定の閾値を超える複数の記憶領域であって、各記憶領域のアドレスの間隔が所定の周期となる複数の記憶領域を特定し、
特定された複数の記憶領域に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御する
各処理を実行させることを特徴とする管理プログラム。 
【請求項９】
コンピュータが実行する管理方法であって、
データを記憶する記憶装置の所定のサイズの記憶領域ごとに、複数の装置からのアクセス状況に基づいて、アクセス頻度が閾値を超える時刻又は時間帯を予測するとともに、アクセス頻度が閾値を超える記憶領域を特定し、
予測された時刻又は時間帯、および、特定された記憶領域に基づいて、該予測された前記時刻又は時間帯より前に、該特定された記憶領域に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御する
ことを特徴とする管理方法。 
【請求項１０】
コンピュータが実行する管理方法であって、
データを記憶する記憶装置に対する複数の装置からのアクセス状況に基づいて、ある記憶装置に対する前記複数の装置からのアクセス頻度が所定の閾値を超える複数の記憶領域であって、各記憶領域のアドレスの間隔が所定の周期となる複数の記憶領域を特定し、
特定された複数の記憶領域に記憶されたデータを前記複数の装置のうちの少なくとも１つの装置に対して送信するように前記記憶装置を制御する
ことを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理装置、管理プログラムおよび管理方法に関する。
【背景技術】
【０００２】
従来、ＯＳ（Operating  System）プログラム、アプリケーションプログラムなどが記憶されたディスクを複数の装置で共用するシステムがある。かかるシステムでは、複数の装置が、ディスクにアクセスして、ＯＳプログラム、アプリケーションプログラムを使用する。【０００３】
また、複数の装置のうち、第一のディスクへのアクセス頻度が閾値を超えた装置が存在する場合には、第一のディスクの記憶内容全体を第二のディスクへコピーし、第一のディスクへのアクセス頻度が閾値を超えた装置が第二のディスクへアクセスするように制御するシステムがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−７８９９９号公報
【特許文献２】特開２００４−００５６３４号公報
【特許文献３】特開平７−０５６６９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来の技術では、依然として、第一のディスクに対するＩ／Ｏ（Input/Output）負荷が高いという問題がある。【０００６】
例えば、上記のシステムでは、第一のディスクへのアクセス頻度が閾値を超えてから、第一のディスクの記憶内容全体を第二のディスクへコピーする。すなわち第一のディスクへのアクセス負荷が所定の負荷を超えた後で、アクセス負荷を下げるように制御する。このように、上記のシステムでは、アクセス負荷を下げるように制御する前は、第一のディスクに対するＩ／Ｏ負荷が高くなってしまう。【０００７】
また、上記のシステムでは、第一のディスクへのアクセス負荷が高くなってしまった後で、第一のディスクの記憶内容全体を第二のディスクへコピーするため、第一のディスクに対するＩ／Ｏ負荷がさらに高くなる。【０００８】
なお、複数の装置により、ＯＳプログラム、アプリケーションプログラムなどが記憶された共用ボリュームをアクセスするシステムにおいても、同様の問題がある。すなわち、複数の装置が、共用ボリュームへアクセスするため、共用ボリュームに対するＩ／Ｏ負荷が高いという問題がある。【０００９】
１つの側面では、本発明は、複数の装置によりアクセスされる記憶装置へのＩ／Ｏ負荷を低減することができる管理装置、管理プログラムおよび管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示する管理装置は、一つの態様において、予測部と、制御部とを有する。予測部は、データを記憶する記憶装置に対する複数の装置からのアクセス状況に基づいて、ある記憶装置に対する複数の装置からのアクセス頻度が所定の閾値を超える時刻又は時間帯を予測する。制御部は、予測された時刻又は時間帯より前に、記憶装置に記憶されたデータを複数の装置のうちの少なくとも１つの装置に対して送信するように記憶装置を制御する。【００１１】
また、本願の開示する管理装置は、他の態様において、予測部と、制御部とを有する。予測部は、データを記憶する記憶装置に対する複数の装置からのアクセス状況に基づいて、ある記憶装置に対する複数の装置からのアクセス頻度が所定の閾値を超える複数の記憶領域であって、各記憶領域のアドレスが所定の周期となる複数の記憶領域を特定する。制御部は、予測部により特定された複数の記憶領域に記憶されたデータを複数の装置のうちの少なくとも１つの装置に対して送信するように記憶装置を制御する。
【発明の効果】
【００１２】
１態様によれば、複数の装置によりアクセスされる記憶装置へのＩ／Ｏ負荷を低減することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施例に係るシステムの構成の一例を示す図である。
【図２】図２は、第一のテーブルのデータ構造の一例を示す図である。
【図３】図３は、第二のテーブルのデータ構造の一例を示す図である。
【図４】図４は、第四のテーブルのデータ構造の一例を示す図である。
【図５】図５は、第五のテーブルのデータ構造の一例を示す図である。
【図６】図６は、第六のテーブルのデータ構造の一例を示す図である。
【図７Ａ】図７Ａは、第七のテーブルのデータ構造の一例を示す図である。
【図７Ｂ】図７Ｂは、第七のテーブルのデータ構造の他の例を示す図である。
【図８Ａ】図８Ａは、本実施例に係る管理サーバが実行する処理を説明するための図である。
【図８Ｂ】図８Ｂは、本実施例に係る管理サーバが実行する処理を説明するための図である。
【図９】図９は、本実施例に係る読取処理の手順を示すフローチャートである。
【図１０】図１０は、本実施例に係る第一のアクセス処理の手順を示すフローチャートである。
【図１１】図１１は、本実施例に係る第二のアクセス処理の手順を示すフローチャートである。
【図１２】図１２は、本実施例に係る第一の削除処理の手順を示すフローチャートである。
【図１３】図１３は、本実施例に係る第二の削除処理の手順を示すフローチャートである。
【図１４】図１４は、本実施例に係る第一の管理処理の手順を示すフローチャートである。
【図１５】図１５は、本実施例に係る第二の管理処理の手順を示すフローチャートである。
【図１６】図１６は、本実施例に係る第三の管理処理の手順を示すフローチャートである。
【図１７】図１７は、本実施例に係る格納処理の手順を示すフローチャートである。
【図１８】図１８は、本実施例に係る第四の管理処理の手順を示すフローチャートである。
【図１９】図１９は、本実施例に係る第五の管理処理の手順を示すフローチャートである。
【図２０】図２０は、管理プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する管理装置、管理プログラムおよび管理方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例】
【００１５】
［システム１の構成例］
本実施例に係るシステムについて説明する。図１は、本実施例に係るシステムの構成の一例を示す図である。本実施例に係るシステム１は、サーバ２、サーバ３、管理サーバ４、およびストレージサーバ５を有する。サーバ２、サーバ３、管理サーバ４、およびストレージサーバ５は、データの送受信が可能なように接続される。図１の例では、サーバ２、サーバ３、管理サーバ４、およびストレージサーバ５は、インターネット６を介して接続されている。なお、サーバ２、サーバ３、管理サーバ４、およびストレージサーバ５は、無線で接続されてもよい。また、図１では、サーバの台数を２台、管理サーバの台数を１台、ストレージサーバの台数を１台の場合を例示した。しかしながら、サーバの台数は、１台、または３台以上であってもよい。また、管理サーバの台数は、２台以上であってもよい。また、ストレージサーバの台数は、２台以上であってもよい。なお、管理サーバ４は、管理装置の一例である。【００１６】
サーバ２は、ＶＭ（仮想マシン：Virtual  Machine）７、ＶＭ１２を稼動させる。例えば、サーバ２は、企業の部門である開発部に割り当てられたＶＭ７を稼動させ、同じ企業の部門である総務部に割り当てられたＶＭ１２を稼動させる。ＶＭ７、ＶＭ１２は、割り当てられた部門に応じて動作する。また、サーバ２で稼動させるＶＭの台数を２台としたが、サーバ２で稼動させるＶＭの台数はこれに限られず、任意の自然数を採用することができる。【００１７】
ＶＭ７は、送受信部９と、記憶部１０と、制御部１１とを有する。【００１８】
送受信部９は、ＶＭ１２、ＶＭ１３、ＶＭ１４、管理サーバ４、およびストレージサーバ５との通信を行うための通信インタフェースである。【００１９】
記憶部１０は、各種情報を記憶する。たとえば、記憶部１０は、第一のテーブル１０ａ、第二のテーブル１０ｂ、第二のボリューム１０ｃを記憶する。【００２０】
第一のテーブル１０ａには、後述の第一のボリューム２０ａの記憶領域の先頭からの位置を示すオフセットごとに、後述の読取部１１ａによりアクセスされた回数と、アクセスされた時間とが登録される。なお、「オフセット」は「アドレス」とも称される。図２は、第一のテーブルのデータ構造の一例を示す図である。図２の例では、第一のテーブル１０ａは、「アクセスオフセット」、「アクセス回数」および「ラストアクセスタイム」の項目を有する。図２の例では、「アクセスオフセット」の項目に、第一のボリューム２０ａのオフセットが登録される。また、図２の例では、「アクセス回数」の項目に、読取部１１ａによりアクセスされた回数が、後述の更新部１１ｂにより更新される。また、図２の例では、「ラストアクセスタイム」の項目に、所定の日時から読取部１１ａによりアクセスされた最新の時刻までの秒数が、後述の更新部１１ｂにより更新される。図２の例では、第一のボリューム２０ａのオフセット「０Ｍ（Mega  Byte）」が示す記憶領域は、１６回アクセスされていることを示す。また、図２の例では、第一のボリューム２０ａのオフセット「０Ｍ」が示す記憶領域については、所定の日時から読取部１１ａによりアクセスされた最新の時刻までの秒数が「１２９８４６４７２８」秒であることを示す。【００２１】
第二のテーブル１０ｂには、第一のボリューム２０ａのオフセットの第一の範囲、およびアクセスされた時間帯ごとに、後述の読取部１１ａにより第一の範囲が示す記憶領域にアクセスされた回数が、後述の更新部１１ｂにより登録される。図３は、第二のテーブルのデータ構造の一例を示す図である。図３の例では、「第一の範囲」が「３２Ｍ」単位で、「時間帯」が「１時間」単位である場合が示されている。図３の例では、８時から９時までの時間帯における、０Ｍ以上３２Ｍ未満の範囲の記憶領域への読取部１１ａによるアクセス回数が、３５６９回である場合が示されている。【００２２】
第二のボリューム１０ｃには、第一のボリューム２０ａに記憶されたＯＳプログラムの更新データが、後述の格納部１１ｃにより格納される。また、第二のボリューム１０ｃには、管理サーバ４から送信されたデータが、格納部１１ｃにより格納される。かかるデータは、アクセス頻度が所定の閾値を超える、すなわち、アクセス頻度が高いと予測される記憶領域に記憶されたデータである。本実施例では、第二のボリューム１０ｃが、第一のボリューム２０ａのＩ／Ｏ負荷が高くなる前に、かかるデータを記憶することで、Ｉ／Ｏ負荷が低減される。【００２３】
記憶部１０は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１０は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。【００２４】
制御部１１は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部１１は、読取部１１ａと、更新部１１ｂと、格納部１１ｃと、実行部１１ｄとを有する。【００２５】
読取部１１ａは、ＯＳプログラムやアプリケーションプログラムの実行時などに、データのアクセスを行う。例えば、読取部１１ａは、データの配置場所を示すテーブル（図示せず）を参照して、アクセス対象のデータが第一のボリューム２０ａに存在するのか、第二のボリューム１０ｃに存在するのかを判定する。なお、かかるテーブルの内容は、後述の更新部１１ｂにより、更新される。例えば、格納部１１ｃにより第二のボリューム１０ｃにデータが格納された場合には、テーブルには、当該データが第二のボリューム１０ｃに格納されていることを示す情報が登録される。また、格納部１１ｃにより第二のボリューム１０ｃからデータが削除され、第一のボリューム２０ａに当該データが記憶される場合には、テーブルには、当該データが第一のボリューム２０ａに格納されていることを示す情報が登録される。そして、読取部１１ａは、データが存在するボリュームにアクセスし、データを検索することで、データを読み取る。また、読取部１１ａは、第一のボリューム２０ａにアクセスするたびに、アクセスした第一のボリューム２０ａのオフセットおよびアクセス時刻を管理サーバ４へ送信する。【００２６】
更新部１１ｂは、読取部１１ａにより第一のボリューム２０ａおよび第二のボリューム１０ｃにアクセスされるたびに、第一のテーブル１０ａの該当部分のアクセス回数と、アクセスされた時間とを更新する。また、更新部１１ｂは、読取部１１ａにより第一のボリューム２０ａにアクセスされるたびに、第二のテーブル１０ｂの該当部分のアクセス回数を更新する。【００２７】
また、更新部１１ｂは、格納部１１ｃにより第二のボリューム１０ｃにデータが格納された場合には、上述したデータの配置場所を示すテーブルに、当該データが第二のボリューム１０ｃに格納されていることを示す情報を登録する。また、更新部１１ｂは、格納部１１ｃにより第二のボリューム１０ｃからデータが削除され、第一のボリューム２０ａに当該データが記憶される場合には、テーブルに、当該データが第一のボリューム２０ａに格納されていることを示す情報を登録する。さらに、更新部１１ｂは、後述する更新事実を受信すると、第一のテーブル１０ａおよび第二のテーブル１０ｂの該当箇所を初期化する。【００２８】
格納部１１ｃは、各種情報を格納する。具体例を挙げて説明する。格納部１１ｃは、管理サーバ４から転送されたデータを、送受信部９を介して受信すると、受信したデータを第二のボリューム１０ｃに格納する。そして、格納部１１ｃは、受信したデータの転送指示があるか否かを判定する。転送指示がある場合には、格納部１１ｃは、データを転送指示が示すＶＭに転送する。【００２９】
また、格納部１１ｃは、更新事実を受信すると、第一のボリューム２０ａに記憶されたＯＳプログラムの更新データを第二のボリューム１０ｃに格納し、第二のボリュームを更新する。【００３０】
また、格納部１１ｃは、読取部１１ａにより第一のボリューム２０ａにアクセスされた場合には、読取部１１ａによりアクセスされた第一のボリューム２０ａのオフセットを特定する。そして、格納部１１ｃは、特定したオフセットが示す記憶領域へのアクセス回数を第一のテーブル１０ａから取得する。続いて、格納部１１ｃは、取得したアクセス回数が、所定の閾値Ｐ以上であるか否かを判定する。ここで、所定の閾値Ｐの値の一例としては、インターネット６の使用率が、所定値以上となる場合のＶＭからストレージサーバ５へのアクセス回数の最小値を採用することができる。そして、アクセス回数が所定の閾値Ｐ以上である場合には、格納部１１ｃは、読取部１１ａにより読み取られたデータをキャッシュに格納する。続いて、格納部１１ｃは、キャッシュに格納されたデータを、第二のボリューム１０ｃに格納する。そして、格納部１１ｃは、第二のボリューム１０ｃに格納されたデータに対応する第一のテーブル１０ａの該当部分を初期化、すなわち０に設定する。一方、アクセス回数が所定の閾値Ｐ未満である場合には、格納部１１ｃは、読取部１１ａにより読み取られたデータをキャッシュに格納するが、データを第二のボリューム１０ｃに格納しない。【００３１】
このように、本実施例に係るＶＭによれば、読み込み頻度、すなわち、アクセス頻度の高いデータを第二のボリューム１０ｃに格納するので、第一のボリューム２０ａへのアクセスが抑制され、Ｉ／Ｏ負荷を低減することができる。【００３２】
また、格納部１１ｃは、所定時間ごとに、第二のテーブル１０ｂから、各オフセットの時間帯ごとの全アクセス回数を取得する。ここで、各時間帯のアクセス回数は、アクセス頻度ともいえる。そして、格納部１１ｃは、取得した各オフセットのアクセス頻度の中に、所定期間、アクセス頻度が閾値Ｐを超えなかったオフセットがあるか否かを判定する。所定期間、アクセス頻度が閾値Ｐを超えなかったオフセットがある場合には、格納部１１ｃは、第二のボリューム１０ｃから、当該オフセットのデータを削除する。【００３３】
また、格納部１１ｃは、所定時間ごとに、第二のボリューム１０ｃに格納された全データのサイズを、第二のボリューム１０ｃの記憶容量で除することにより、第二のボリューム１０ｃの使用量を算出する。そして、格納部１１ｃは、使用量が閾値Ｑ以上であるか否かを判定する。使用量が閾値Ｑ以上である場合には、格納部１１ｃは、第二のボリューム１０ｃの記憶可能な容量が少ないため、第二のボリューム１０ｃから、最も古いデータを削除する。そして、格納部１１ｃは、再び使用量を算出する。そして、格納部１１ｃは、算出した使用量が閾値Ｑより小さくなるまで、第二のボリューム１０ｃの最も古いデータを削除する処理を繰り返し行う。【００３４】
このように、本実施例に係るＶＭによれば、アクセス頻度の低いデータを第二のボリューム１０ｃから削除するので、第二のボリューム１０ｃのデータ量を抑制することができる。【００３５】
実行部１１ｄは、スナップショットを実行する。これにより、第一のボリューム２０ａのＯＳプログラムの更新データについては、第二のボリューム１０ｃに記憶されることとなる。【００３６】
制御部１１は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路を有する。なお、制御部１１は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路を有してもよい。【００３７】
ここで、ＶＭ１２の構成は、ＶＭ７の構成と同様であるため、説明を省略する。【００３８】
サーバ３は、ＶＭ１３、ＶＭ１４を稼動させる。例えば、サーバ３は、企業の部門である人事部に割り当てられたＶＭ１３を稼動させ、同じ企業の部門である営業部に割り当てられたＶＭ１４を稼動させる。ＶＭ１３、ＶＭ１４は、割り当てられた部門に応じて動作する。また、サーバ３で稼動させるＶＭの台数を２台としたが、サーバ３で稼動させるＶＭの台数はこれに限られず、任意の自然数を採用することができる。ＶＭ１３、ＶＭ１４の構成は、上述したＶＭ７の構成と同様であるため、説明を省略する。【００３９】
管理サーバ４は、ストレージサーバ５を管理する。管理サーバ４は、入力部１５と、出力部１６と、送受信部１７と、記憶部１８と、制御部１９とを有する。【００４０】
入力部１５は、各種情報を制御部１９に入力する。入力部１５のデバイスの一例としては、マウスやキーボードなどの操作受付デバイスが挙げられる。【００４１】
出力部１６は、各種の情報を出力する。出力部１６のデバイスの一例としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスが挙げられる。【００４２】
送受信部１７は、ＶＭ、ストレージサーバ５との通信を行うための通信インタフェースである。例えば、送受信部１７は、ＶＭから、アクセスした第一のボリューム２０ａのオフセットおよびアクセス時刻を受信すると、受信したオフセットおよびアクセス時刻を制御部１９へ送信する。【００４３】
記憶部１８は、各種情報を記憶する。たとえば、記憶部１８は、第三のテーブル１８ａ、第四のテーブル１８ｂ、第五のテーブル１８ｃ、第六のテーブル１８ｄ、第七のテーブル１８ｅを記憶する。【００４４】
第三のテーブル１８ａには、第一のボリューム２０ａのオフセットごとに、各ＶＭの読取部により、オフセットが示す記憶領域にアクセスされた回数と、アクセスされた時間とが、後述の取得部１９ａにより登録される。つまり、ＶＭごとに保持された第二のテーブルの総計が第三のテーブル１８ａとなる。第三のテーブル１８ａのデータ構造は、図３の例に示す第二のテーブル１０ｂのデータ構造と同様である。【００４５】
第四のテーブル１８ｂは、第三のテーブル１８ａのアクセス回数が所定の閾値を超えた箇所について、細粒度の詳細情報が登録されるテーブルである。第四のテーブル１８ｂには、第二のテーブル１０ｂで使用する第一のボリューム２０ａのオフセットである第一の範囲より小さいオフセットの範囲である第二の範囲、曜日および時間帯ごとに、各ＶＭの読取部によりアクセスされた回数が後述の取得部１９ａにより登録される。したがって、第四のテーブル１８ｂには、第二のテーブル１０ｂおよび第三のテーブル１８ａに登録されるデータよりも、詳細なデータが登録される。図４は、第四のテーブルのデータ構造の一例を示す図である。図４の例では、金曜日の８時から９時までの時間帯に、第一のボリューム２０ａのオフセット「０Ｍ」以上「１Ｍ」未満の範囲の記憶領域を、ＶＭの読取部がアクセスした回数が、「４５１」回であることが示されている。なお、図４の例では、「Ｍｏｎ」は月曜日を示す。同様に、「Ｔｕｅ」、「Ｆｒｉ」、「Ｓａｔ」、「Ｓｕｎ」は、それぞれ曜日を示す。【００４６】
第五のテーブル１８ｃには、時間帯、第一のボリューム２０ａのオフセットの第二の範囲、曜日ごとに、第一のボリューム２０ａにアクセスしたＶＭのＩＰアドレスが、後述の取得部１９ａにより登録される。図５は、第五のテーブルのデータ構造の一例を示す図である。図５の例では、月曜日の８時から９時までの時間帯において、第一のボリューム２０ａのオフセット「０Ｍ」以上「１Ｍ」未満の範囲の記憶領域にアクセスしたＶＭのＩＰアドレスが、次のような内容であることを示す。すなわち、ＶＭのＩＰアドレスが、「１９２．１６８．ｘｘ．１」、「１９２．１６８．ｘｘ．２」、「１９２．１６８．ｘｘ．７」であることを示す。また、図５の例では、月曜日の８時から９時までの時間帯において、第一のボリューム２０ａのオフセット「１Ｍ」以上「２Ｍ」未満の範囲の記憶領域にアクセスしたＶＭのＩＰアドレスが、「１９２．１６８．ｘｘ．１」、「１９２．１６８．ｘｘ．２」であることを示す。【００４７】
第六のテーブル１８ｄには、アクセス回数が閾値を超える時間帯、第一のボリューム２０ａのオフセットの所定の範囲である第三の範囲ごとに、アクセスしたＶＭのＩＰアドレス、アクセスした曜日が、後述の取得部１９ａにより登録される。図６は、第六のテーブルのデータ構造の一例を示す図である。図６の例では、８時から９時までの時間帯において、第一のボリューム２０ａのオフセット「０Ｍ」以上「１５Ｍ」未満の範囲の記憶領域にアクセスしたＶＭのＩＰアドレスが、次のような内容であることを示す。すなわち、ＶＭのＩＰアドレスが、「１９２．１６８．ｘｘ．１」、「１９２．１６８．ｘｘ．２」、「１９２．１６８．ｘｘ．７」であることを示す。また、図６の例では、８時から９時までの時間帯において、第一のボリューム２０ａのオフセット「０Ｍ」以上「１５Ｍ」未満の範囲の記憶領域にＶＭがアクセスした曜日が、月曜日、火曜日、水曜日、木曜日、金曜日であることを示す。【００４８】
第七のテーブル１８ｅには、第一のボリューム２０ａへのオフセットを複数のグループに分割した場合の各グループのアクセス回数が、後述の取得部１９ａにより登録される。図７Ａは、第七のテーブルのデータ構造の一例を示す図である。図７Ａの例は、後述の取得部１９ａにより、各オフセットの値を「６４Ｍ」で割った余りを算出し、算出した余りを１６個のグループに分けた場合の第七のテーブル１８ｅのデータ構造の一例を示す図である。図７Ａの例では、先頭からのオフセットが４Ｍごとに、アクセス回数が登録される場合が示されている。図７Ａの例では、０Ｍ以上４Ｍ未満の範囲の記憶領域へのアクセス回数が、「４０２３」である場合が示されている。図７Ｂは、第七のテーブルのデータ構造の他の例を示す図である。図７Ｂの例は、後述の取得部１９ａにより、各オフセットの値を「１２８Ｍ」で割った余りを算出し、算出した余りを１６個のグループに分けた場合の第七のテーブル１８ｅのデータ構造の一例を示す図である。図７Ｂの例では、先頭からのオフセットが８Ｍごとに、アクセス回数が登録される場合が示されている。図７Ｂの例では、０Ｍ以上８Ｍ未満の範囲の記憶領域へのアクセス回数が、「３０１２」である場合が示されている。【００４９】
記憶部１８は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１８は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。【００５０】
制御部１９は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部１９は、取得部１９ａと、予測部１９ｂと、送信制御部１９ｃとを有する。【００５１】
取得部１９ａは、複数のＶＭによりアクセスされる第一のボリューム２０ａへの複数のＶＭの時間ごとのアクセス頻度を取得する。【００５２】
具体例について説明する。例えば、取得部１９ａは、ＶＭの読取部によりアクセスされた第一のボリューム２０ａのオフセットおよびアクセス時刻を受信することで、オフセットおよびアクセス時刻を取得する。取得部１９ａは、取得したアクセス時刻を含む時間帯、および取得したオフセットが示す記憶領域に対応する第三のテーブル１８ａのアクセス回数の値を１つインクリメントする。このようにして、取得部１９ａは、第三のテーブル１８ａの登録内容を更新する。【００５３】
また、取得部１９ａは、後述の予測部１９ｂによりアクセス回数が閾値を超える時間帯およびオフセット範囲が特定された場合には、次のような処理を行う。すなわち、取得部１９ａは、第一の範囲を小さくした第二の範囲のオフセット、曜日および時間帯ごとに、アクセス回数を登録するための第四のテーブル１８ｂを生成する。例えば、図３の例で、後述の予測部１９ｂにより、アクセス回数が閾値を超える時間帯およびオフセット範囲として、８時から９時までの時間帯およびオフセット「０Ｍ」以上「１５９Ｍ」未満の範囲が特定された場合を想定する。この場合、取得部１９ａは、図４の例に示すように、第一の範囲「３２Ｍ」を小さくした第二の範囲「１Ｍ」をオフセットとし、曜日、および８時から９時までの時間帯ごとに、アクセス回数を登録するための第四のテーブル１８ｂを生成する。そして、取得部１９ａは、オフセットおよびアクセス時刻を取得するたびに、特定された時間帯にアクセス時刻が含まれているか否か、特定されたオフセット範囲に取得したオフセットが含まれているか否かを判定する。続いて、取得部１９ａは、特定された時間帯にアクセス時刻が含まれ、かつ、特定されたオフセット範囲に取得したオフセットが含まれている場合には、第四のテーブル１８ｂの該当部分のアクセス回数の値を１つインクリメントする。このようにして、取得部１９ａは、第四のテーブル１８ｂの登録内容を更新する。【００５４】
そして、取得部１９ａは、アクセス回数が閾値を超える時間帯に周期性があるか否かの判定をオフセット範囲ごとに後述の予測部１９ｂにより可能とするために、所定期間分のデータを第四のテーブル１８ｂに登録する。例えば、取得部１９ａは、アクセス回数が閾値を超える時間帯が１週間ごとに繰り返されるか否かの判定を後述の予測部１９ｂにより可能とするために、少なくとも２週間分のデータを、第四のテーブル１８ｂに登録する。なお、図４の例が示す第四のテーブル１８ｂでは、１週間分のデータしか登録できない。そこで、図４の例が示す第四のテーブル１８ｂを用いる場合には、取得部１９ａは、１週間分のデータを第四のテーブル１８ｂに登録した後に、第四のテーブル１８ｂのコピーを記憶部１８に格納する。そして、取得部１９ａは、次の１週間分のデータを第四のテーブル１８ｂに上書きする。これにより、記憶部１８には、第四のテーブル１８ｂのコピー、および第四のテーブル１８ｂの２週間分のデータが記憶される。そこで、予測部１９ｂによるアクセス回数が閾値を超える時間帯が１週間ごとに繰り返されるか否かの判定の処理を行う場合には、記憶部１８に記憶された２週間分のデータを用いればよい。【００５５】
また、取得部１９ａは、後述の予測部１９ｂによりアクセス回数が閾値を超える時間帯およびオフセット範囲が特定された場合には、次のような処理を行う。すなわち、取得部１９ａは、特定した時間帯、上述した第二の範囲のオフセット、曜日ごとに、第一のボリューム２０ａにアクセスしたＶＭのＩＰアドレスを登録するための第五のテーブル１８ｃを生成する。例えば、図３の例で、後述の予測部１９ｂにより、アクセス回数が閾値を超える時間帯およびオフセット範囲として、８時から９時までの時間帯およびオフセット「０Ｍ」以上「１５９Ｍ」未満の範囲が特定された場合を想定する。この場合、取得部１９ａは、図５の例に示すように、特定した８時から９時までの時間帯、第二の範囲「１Ｍ」のオフセット、月曜日から日曜日までの曜日ごとに、アクセスしたＶＭのＩＰアドレスを登録するための第五のテーブル１８ｃを生成する。そして、取得部１９ａは、オフセットおよびアクセス時刻を受信するたびに、特定された時間帯にアクセス時刻が含まれているか否か、特定されたオフセット範囲に取得したオフセットが含まれているか否かを判定する。続いて、取得部１９ａは、特定された時間帯にアクセス時刻が含まれ、かつ、特定されたオフセット範囲に取得したオフセットが含まれている場合には、オフセットおよびアクセス時刻を送信した送信元のＶＭのＩＰアドレスをパケットのヘッダから取得する。そして、取得部１９ａは、取得したＩＰアドレスを、第五のテーブル１８ｃの該当部分に登録する。このようにして、取得部１９ａは、第五のテーブル１８ｃの登録内容を更新する。【００５６】
また、取得部１９ａは、後述の予測部１９ｂにより、アクセス回数が閾値を超える時間帯に周期性があると判定された場合には、次のような処理を行う。すなわち、取得部１９ａは、周期性があると判定された時間帯、アクセス回数が閾値を超えるオフセット範囲、曜日、ＶＭのＩＰアドレスが登録された第六のテーブル１８ｄを生成する。例えば、図４および図５の例で、後述の予測部１９ｂにより、月曜日の８時から９時までの時間帯のアクセス回数が閾値を超え、１週間毎に繰り返されると判定された場合を想定する。そして、この場合に、オフセット「０Ｍ」以上「１５Ｍ」以下の範囲の記憶領域へのアクセス回数が閾値を超えたものとする。また、月曜日の８時から９時までの時間帯に、オフセット「０Ｍ」以上「１５Ｍ」以下の範囲の記憶領域に、ＩＰアドレス「１９２．１６８．ｘｘ．１」、「１９２．１６８．ｘｘ．２」、「１９２．１６８．ｘｘ．７」の各ＶＭがアクセスしたものとする。このような場合では、図６に示すように、取得部１９ａは、次の内容を第六のテーブル１８ｄに登録する。すなわち、取得部１９ａは、８時から９時までの時間帯、オフセット「０Ｍ」以上「１５Ｍ」以下の範囲、月曜日「Ｍｏｎ」、およびＩＰアドレス「１９２．１６８．ｘｘ．１」、「１９２．１６８．ｘｘ．２」、「１９２．１６８．ｘｘ．７」を登録する。【００５７】
さらに、取得部１９ａは、システム１が稼働してから所定時間、例えば３時間経過した場合に、全てのＶＭに対して、各々の第一のテーブルの登録内容を管理サーバ４へ送信する旨の指示を送信する。これにより、全てのＶＭから、各々の第一のテーブルの登録内容が管理サーバ４へ送信されて、取得部１９ａは、送受信部１７を介して全てのＶＭの第一のテーブルの登録内容を取得する。そして、取得部１９ａは、取得した全てのＶＭの第一のテーブルの登録内容が示すアクセス回数の総和をオフセットごとに算出する。このようにして、取得部１９ａは、システム１全体におけるオフセット「１Ｍ」ごとの第一のボリューム２０ａへのアクセス回数を算出する。続いて、取得部１９ａは、各オフセットの値をＮ＝（「６４Ｍ」）で割った余りを算出する。ここで、余りは、「０Ｍ」〜「６３Ｍ」の６４通りである。そして、取得部１９ａは、算出した余りを１６個のグループに分ける。例えば、取得部１９ａは、余り「０Ｍ」〜「３Ｍ」をグループ１、余り「４Ｍ」〜「７Ｍ」をグループ２、・・・、余り「６０Ｍ」〜「６３Ｍ」をグループ１６とする。そして、取得部１９ａは、各グループと、アクセス回数とが対応付けられて登録された第７のテーブル１８ｅを生成する。【００５８】
そして、取得部１９ａは、後述の予測部１９ｂにより第７のテーブル１８ｅの登録内容から周期性が特定されない場合には、Ｎの値を２倍（「６４Ｍ」×２）にする。続いて、取得部１９ａは、各オフセットの値をＮ＝（「１２８Ｍ」）で割った余りを算出する。ここで、余りは、「０Ｍ」〜「１２７Ｍ」の１２８通りである。そして、取得部１９ａは、算出した余りを１６個のグループに分ける。例えば、取得部１９ａは、余り「０Ｍ」〜「７Ｍ」をグループ１、余り「８Ｍ」〜「１５Ｍ」をグループ２、・・・、余り「１２０Ｍ」〜「１２７Ｍ」をグループ１６とする。そして、取得部１９ａは、各グループと、アクセス回数とが対応付けられて登録された第７のテーブル１８ｅを生成し、前回生成した第７のテーブル１８ｅを削除する。取得部１９ａは、上述した第７のテーブル１８ｅを生成する処理を、後述の予測部１９ｂにより第７のテーブル１８ｅの登録内容から周期性が特定されるまで繰り返し行う。【００５９】
予測部１９ｂは、取得部１９ａにより取得された複数のＶＭの時間ごとのアクセス回数に基づいて、所定の周期で繰り返される時間の中からアクセス回数が閾値を超える時間を特定する。また、予測部１９ｂは、データを記憶する第一のボリューム２０ａに対する複数のＶＭからのアクセス状況に基づいて、第一のボリューム２０ａに対する複数のＶＭからのアクセス頻度が所定の閾値を超える時間帯を予測する。具体例について説明する。予測部１９ｂは、第三のテーブル１８ａに登録された全時間帯、全オフセット範囲の全アクセス回数を取得する。予測部１９ｂは、取得した全アクセス回数のうち、閾値Ｒを超えるアクセス回数の時間帯およびオフセット範囲を特定する。そして、閾値Ｒを超えるアクセス回数の時間帯およびオフセット範囲を特定できた場合には、予測部１９ｂは、記憶部１８に記憶された図示しない第一のフラグに所定値、例えば「１」を設定して、第一のフラグをＯＮにする。なお、第一のフラグには、初期値として、例えば「０」が設定される。【００６０】
また、予測部１９ｂは、第四のテーブル１８ｂおよび第四のテーブル１８ｂのコピーに登録された登録内容を用いて、登録された全アクセス回数のうち、閾値Ｒを超えるアクセス回数の時間帯およびオフセット範囲を特定する。そして、予測部１９ｂは、アクセス回数が閾値Ｒを超える時間帯に周期性があるか否かをオフセット範囲ごとに判定する。例えば、予測部１９ｂは、アクセス回数が閾値Ｒを超える時間帯が、１週間毎に繰り返されているか否かをオフセット範囲ごとに判定する。アクセス回数が閾値Ｒを超える時間帯が、１週間毎に繰り返されている場合には、予測部１９ｂは、周期性があると判定する。【００６１】
また、予測部１９ｂは、取得部１９ａにより生成された第七のテーブル１８ｅの登録内容から、アクセス頻度が閾値を超えるオフセット範囲であって、周期となる複数のオフセット範囲を特定する。たとえば、予測部１９ｂは、第七のテーブル１８ｅの登録内容から、各グループのアクセス回数のうち、閾値αを超えたアクセス回数のグループを、周期となるグループとして特定する。一例を挙げて説明すると、予測部１９ｂは、取得部１９ａによって、各オフセットの値がＮで割られることにより得られた各グループのうち、アクセス回数が閾値αを超えたグループが１つのみであるか否かを判定する。アクセス回数が閾値αを超えたグループが１つのみである場合には、予測部１９ｂは、周期性があると判定し、Ｎを周期、閾値αを超えたグループを周期となるグループとして特定する。また、アクセス回数が閾値αを超えたグループが１つのみでない場合には、予測部１９ｂは、取得部１９ａによって、各オフセットの値が２Ｎで割られることにより得られた各グループのうち、アクセス回数が閾値αを超えたグループが１つのみであるか否かを判定し、同様の処理を繰り返す。すなわち、予測部１９ｂは、アクセス回数が閾値αを超えたグループが１つのみである場合に、周期性があると判定し、オフセットの値を割った値を周期として特定する。【００６２】
図８Ａおよび図８Ｂは、本実施例に係る管理サーバが実行する処理を説明するための図である。図８Ａの例は、図７Ａの例が示す第七のテーブル１８ｅの登録内容をグラフ化したものである。図８Ａの例では、横軸がオフセット範囲、縦軸がアクセス回数を示す。図８Ａの例では、閾値αを超えたグループが３つ連続しており、１つのグループのみ閾値αを超えていないため、予測部１９ｂは、第７のテーブル１８ｅの登録内容から周期性が特定されないと判定する。図８Ｂの例は、図７Ｂの例が示す第七のテーブル１８ｅの登録内容をグラフ化したものである。図８Ｂの例では、横軸がオフセット範囲、縦軸がアクセス回数を示す。図８Ｂの例では、閾値αを超えたグループが２つであり、１つのグループのみ閾値αを超えていないため、予測部１９ｂは、第７のテーブル１８ｅの登録内容から周期性が特定されないと判定する。そして、予測部１９ｂは、最終的に、周期「６４Ｍ」を特定する。【００６３】
そして、予測部１９ｂは、周期となるグループ、周期などのアクセスパターンを示す、図示しない周期情報を記憶部１８に格納する。かかる周期情報は、周期情報が生成された後、取得部１９ａで生成される第七のテーブル１８ｅが示すアクセスパターンとの比較対象となる。【００６４】
ここで、ファイルシステムのアクセスパターンには特徴がある。例えば、ディスク領域全体はブロックグループと称される一定のサイズの領域に細分化されている。また、各ブロックグループの先頭に位置するデータへのアクセス頻度は、他の部分のアクセス頻度よりも高くなる場合がある。そこで、上述したように、予測部１９ｂは、このようなブロックグループの先頭を特定する。このようにして予測部１９ｂにより特定された周期となるグループは、他の部分よりもアクセス頻度が高いディスクの各ブロックの先頭を示す。このように、予測部１９ｂは、アクセス頻度が高いオフセットを特定して予測することができる。【００６５】
送信制御部１９ｃは、予測部１９ｂにより、所定の周期で繰り返される時間の中から閾値Ｒを超えるアクセス回数の時間が特定されると、第六のテーブル１８ｄを参照して、以降、所定の周期で繰り返される時間において、次のような処理を行う。すなわち、送信制御部１９ｃは、予測部１９ｂにより特定された閾値Ｒを超えるアクセス回数の時間よりも前に、対応するオフセットが示す第一のボリューム２０ａのデータが、対応するＩＰアドレスを用いてＶＭに送信されるように制御する。なお、本実施例では、予測部１９ｂにより特定される時間は、例えば、２４時間または１週間ごとに繰り返される時間である。また、送信制御部１９ｃは、予測された時間帯より前に、第一のボリューム２０ａに記憶されたデータを複数のＶＭのうちの少なくとも１つのＶＭに対して送信するように第一のボリューム２０ａを制御する。【００６６】
例えば、送信制御部１９ｃは、現在時刻および現在の曜日を取得する。そして、送信制御部１９ｃは、第六のテーブル１８ｄを参照して、現在の曜日と一致する曜日が登録されたレコードであって、登録された時間帯よりも現在の時刻が所定時間前であるレコードを検索する。例えば、図６の例において、現在時刻が７時であり、現在の曜日が水曜日であった場合、送信制御部１９ｃは、検索の結果、１番目のレコードを得る。検索の結果、レコードが得られた場合には、送信制御部１９ｃは、第三のテーブル１８ａを参照して、現在の時刻のアクセス回数が閾値以下であるか否かを判定する。例えば、図３の例において、送信制御部１９ｃは、７時から８時までの時間帯におけるアクセス回数が閾値以下であるか否かを判定する。ここで、送信制御部１９ｃは、７時から８時までの時間帯における全アクセス回数の総和が閾値以下であるか否かを判定することができる。また、送信制御部１９ｃは、７時から８時までの時間帯のアクセス回数のうち、レコードに登録されたオフセット範囲に対応するアクセス回数が閾値以下であるか否かを判定することもできる。そして、送信制御部１９ｃは、アクセス回数が閾値以下である場合には、レコードに登録された全てのＩＰアドレスに対してサブネットマスクを用いてサブネットを特定する。続いて、送信制御部１９ｃは、サブネットごとに、送信先のＶＭを１つ特定する。そして、送信制御部１９ｃは、サブネットごとに１つ特定されたＶＭに、レコードに登録されたオフセット範囲が示す第一のボリューム２０ａのデータを転送する。これに加えて、送信制御部１９ｃは、サブネットごとに１つ特定されたＶＭに、レコードに登録されたＩＰアドレスが示す同一のサブネット内に存在する他のＶＭに対して、データを転送する指示を送信する。その後、送信制御部１９ｃは、今回のＶＭへのデータ送信時の管理サーバ４のＩ／Ｏ負荷に応じて、サブネットごとの次回のデータの送信対象のＶＭの台数を判断する。例えば、送信制御部１９ｃは、Ｉ／Ｏ負荷が所定の閾値より小さい場合には、サブネットごとの次回のデータの送信対象のＶＭの台数を所定数、例えば、１台増やすように判断する。また、送信制御部１９ｃは、Ｉ／Ｏ負荷が所定の閾値より大きい場合には、サブネットごとの次回のデータの送信対象のＶＭの台数を所定数、例えば、１台減らすように判断する。なお、送信制御部１９ｃは、次回のデータ送信の際に、この判断結果に基づいた台数分のＶＭに対して、データおよびデータを転送する指示を送信する。【００６７】
このように、本実施例に係る管理サーバ４は、複数のＶＭによりアクセスされる第一のボリューム２０ａへの複数のＶＭの時間ごとのアクセス頻度を取得する。本実施例に係る管理サーバ４は、取得された複数のＶＭの時間ごとのアクセス回数に基づいて、１週間などの周期で繰り返される時間の中からアクセス回数が閾値を超える時間を特定する。本実施例に係る管理サーバ４は、第六のテーブル１８ｄを参照して、１週間などの周期で繰り返される時間において、特定された閾値Ｒを超えるアクセス回数の時間より前に、対応するオフセットが示す第一のボリューム２０ａのデータが、ＶＭに送信されるように制御する。したがって、本実施例に係る管理サーバ４によれば、アクセス回数が高くなる時間より前に、ＶＭにデータが送信されるので、ストレージサーバ５のＩ／Ｏ負荷を低減することができる。【００６８】
また、本実施例に係る管理サーバ４は、所定の周期で繰り返される時間において、閾値Ｒを超えるアクセス回数の時間より前の時間であって、アクセス回数が閾値以下の時間に、ＶＭにデータが送信される。これにより、データを受信したＶＭは、受信したデータを第二のボリュームに格納する。そのため、本実施例に係る管理サーバ４によれば、ストレージサーバ５へのアクセス量が閾値以下の場合に、データがＶＭに送信されるので、ストレージサーバ５のＩ／Ｏ負荷を低減することができる。【００６９】
また、本実施例に係る管理サーバ４によれば、サブネットごとに１つ特定されたＶＭに、サブネット内の他のＶＭへデータを転送させる指示が送信される。そのため、本実施例に係る管理サーバ４によれば、ストレージサーバ５とＶＭとのデータ通信量が減り、ストレージサーバ５のＩ／Ｏ負荷を低減することができる。【００７０】
また、送信制御部１９ｃは、新たに生成された第七のテーブル１８ｅを参照して、第七のテーブル１８ｅのアクセスパターンと、上述した周期情報が示すアクセスパターンとが一致するか否かを判定する。一致する場合には、送信制御部１９ｃは、予測部１９ｂにより特定された周期となるグループに対応するオフセットが示す第一のボリューム２０ａのデータをＶＭに転送する。なお、送信対象のＶＭ全てに送信するのではなく、送信制御部１９ｃは、上述した方法と同様に、レコードに登録された全てのＩＰアドレスに対してサブネットマスクを用いてサブネットを特定する。続いて、送信制御部１９ｃは、サブネットごとに、送信先のＶＭを１つ特定する。そして、送信制御部１９ｃは、サブネットごとに１つ特定されたＶＭに、予測部１９ｂにより特定された周期となるグループに対応するオフセットが示す第一のボリューム２０ａのデータを送信する。これに加えて、送信制御部１９ｃは、サブネットごとに１つ特定されたＶＭに、レコードに登録されたＩＰアドレスが示す同一のサブネット内に存在する他のＶＭに対して、データを転送する指示を送信する。続いて、送信制御部１９ｃは、上述した方法と同様に、今回のＶＭへのデータ送信時の管理サーバ４のＩ／Ｏ負荷に応じて、サブネットごとの次回のデータの送信対象のＶＭの台数を判断する。【００７１】
このように、本実施例に係る管理サーバ４によれば、他の部分よりもアクセス頻度が高いディスクの各ブロックの先頭のデータをアクセス負荷が高くなる前に、ＶＭにデータが送信されるので、Ｉ／Ｏ負荷を低減することができる。【００７２】
ここで、第一のボリューム２０ａに記憶されたＯＳプログラムが更新された場合には、対象となるＶＭ、すなわち、更新前のＯＳプログラムのデータを有するＶＭ全てに更新事実を管理サーバ４が通知すると、システム１全体に大きな負荷がかかる。そこで、第一のボリューム２０ａに記憶されたＯＳプログラムが更新された場合には、送信制御部１９ｃは、上記と同様に、サブネットごとに１つ特定された対象となるＶＭに、更新事実を送信するとともに、同一のサブネット内に存在する対象となる他のＶＭへの転送指示を送信する。例えば、送信制御部１９ｃは、各ＶＭの第二のボリュームの登録内容を示すテーブル（図示しない）を参照して、更新前のＯＳプログラムのデータを第二のボリュームに保持したＶＭを特定する。そして、送信制御部１９ｃは、上記と同様に、サブネットごとに、送信先のＶＭを１つ特定し、サブネットごとに１つ特定された対象となるＶＭに、更新事実を送信するとともに、同一のサブネット内に存在する対象となる他のＶＭへの転送指示を送信する。これにより、管理サーバ４が対象となる全てのＶＭに更新事実を通知する場合と比較して、システム１全体に大きな負荷をかけずに、対象となるＶＭ全てに更新事実が通知される。また、第一のボリューム２０ａに記憶されたＯＳプログラムが更新された場合には、送信制御部１９ｃは、第三のテーブル１８ａ〜第七のテーブル１８ｅの該当箇所を初期化する。なお、更新事実が通知されたＶＭは、上述したように、第二のボリュームに更新データを格納し、第一のテーブルおよび第二のテーブルの該当箇所を初期化する。【００７３】
制御部１９は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路を有する。なお、制御部１９は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路を有してもよい。【００７４】
ストレージサーバ５は、記憶部２０を有する。記憶部２０には、第一のボリューム２０ａが記憶されている。第一のボリューム２０ａには、各ＶＭによりアクセスされるデータ、すなわち、各ＶＭで共用されるデータが登録される。例えば、第一のボリューム２０ａには、各ＶＭで共用され、各ＶＭで動作するＯＳプログラムが登録される。【００７５】
［処理の流れ］
次に、本実施例に係るシステム１の処理の流れを説明する。図９〜１３では、本実施例に係るＶＭの処理の流れを説明する。図９は、本実施例に係る読取処理の手順を示すフローチャートである。この読取処理の実行タイミングとしては様々なタイミングが考えられる。例えば、読取処理は、ＯＳプログラムやアプリケーションプログラムの実行時などに、データのアクセスを行うタイミングで実行される。【００７６】
図９に示すように、読取部１１ａは、データの配置場所を示すテーブル（図示せず）を参照して、アクセス対象のデータの存在場所を特定する（ステップＳ１０１）。読取部１１ａは、アクセス対象のデータが第一のボリューム２０ａに存在するか否かを判定する（ステップＳ１０２）。アクセス対象のデータが第一のボリューム２０ａに存在する場合（ステップＳ１０２肯定）には、読取部１１ａは、第一のアクセス処理を実行し（ステップＳ１０３）、処理を終了する。一方、アクセス対象のデータが第一のボリューム２０ａに存在しない場合（ステップＳ１０２否定）には、読取部１１ａは、アクセス対象のデータが第二のボリューム１０ｃに存在するか否かを判定する（ステップＳ１０４）。アクセス対象のデータが第二のボリューム１０ｃに存在する場合（ステップＳ１０４肯定）には、読取部１１ａは、第二のアクセス処理を実行し（ステップＳ１０５）、処理を終了する。また、アクセス対象のデータが第二のボリューム１０ｃに存在しない場合（ステップＳ１０４否定）にも、処理を終了する。【００７７】
図１０は、本実施例に係る第一のアクセス処理の手順を示すフローチャートである。図１０に示すように、読取部１１ａは、データが存在する第一のボリューム２０ａにアクセスし、データを検索することで、データを読み取る（ステップＳ２０１）。更新部１１ｂは、第一のテーブル１０ａの該当部分のアクセス回数と、アクセスされた時間とを更新する（ステップＳ２０２）。更新部１１ｂは、第二のテーブル１０ｂの該当部分のアクセス回数を更新する（ステップＳ２０３）。読取部１１ａは、オフセットおよびアクセス回数を管理サーバ４へ送信する（ステップＳ２０４）。格納部１１ｃは、アクセス回数を第一のテーブル１０ａから取得する（ステップＳ２０５）。格納部１１ｃは、取得したアクセス回数が、所定の閾値Ｐ以上であるか否かを判定する（ステップＳ２０６）。【００７８】
アクセス回数が所定の閾値Ｐ以上である場合には、格納部１１ｃは、読取部１１ａにより読み取られたデータをキャッシュに格納する（ステップＳ２０７）。格納部１１ｃは、キャッシュに格納されたデータを、第二のボリューム１０ｃに格納する（ステップＳ２０８）。格納部１１ｃは、第二のボリューム１０ｃに格納されたデータに対応する第一のテーブル１０ａの該当部分を初期化、すなわち０に設定し（ステップＳ２０９）、処理結果を制御部１１の内部メモリに格納し、リターンする。一方、アクセス回数が所定の閾値Ｐ未満である場合（ステップＳ２０６否定）には、格納部１１ｃは、読取部１１ａにより読み取られたデータをキャッシュに格納し（ステップＳ２１０）、処理結果を制御部１１の内部メモリに格納し、リターンする。【００７９】
図１１は、本実施例に係る第二のアクセス処理の手順を示すフローチャートである。図１１に示すように、読取部１１ａは、データが存在する第二のボリューム１０ｃにアクセスし、データを検索することで、データを読み取る（ステップＳ３０１）。更新部１１ｂは、第一のテーブル１０ａの該当部分のアクセス回数と、アクセスされた時間とを更新する（ステップＳ３０２）。格納部１１ｃは、読取部１１ａにより読み取られたデータをキャッシュに格納し（ステップＳ３０３）、処理結果を制御部１１の内部メモリに格納し、リターンする。【００８０】
図１２は、本実施例に係る第一の削除処理の手順を示すフローチャートである。この第一の削除処理の実行タイミングとしては様々なタイミングが考えられる。例えば、第一の削除処理は、所定時間ごとに、実行される。【００８１】
図１２に示すように、格納部１１ｃは、第二のテーブル１０ｂから、各オフセットの時間帯ごとの全アクセス回数を取得する（ステップＳ４０１）。そして、格納部１１ｃは、取得した各オフセットのアクセス頻度の中に、所定期間、アクセス頻度が閾値Ｐを超えなかったオフセットがあるか否かを判定する（ステップＳ４０２）。所定期間、アクセス頻度が閾値Ｐを超えなかったオフセットがある場合（ステップＳ４０２肯定）には、格納部１１ｃは、第二のボリューム１０ｃから、当該オフセットのデータを削除し、データの配置場所を示すテーブルを更新し（ステップＳ４０３）、処理を終了する。また、所定期間、アクセス頻度が閾値Ｐを超えなかったオフセットがない場合（ステップＳ４０２否定）にも、処理を終了する。【００８２】
図１３は、本実施例に係る第二の削除処理の手順を示すフローチャートである。この第二の削除処理の実行タイミングとしては様々なタイミングが考えられる。例えば、第二の削除処理は、所定時間ごとに、実行される。【００８３】
図１３に示すように、格納部１１ｃは、第二のボリューム１０ｃに格納された全データのサイズを、第二のボリューム１０ｃの記憶容量で除することにより、第二のボリューム１０ｃの使用量を算出する（ステップＳ５０１）。そして、格納部１１ｃは、使用量が閾値Ｑ以上であるか否かを判定する（ステップＳ５０２）。使用量が閾値Ｑ以上である場合（ステップＳ５０２肯定）には、格納部１１ｃは、第二のボリューム１０ｃから、最も古いデータを削除し、データの配置場所を示すテーブルを更新し（ステップＳ５０３）、ステップＳ５０１へ戻る。一方、使用量が閾値Ｑ以上でない場合（ステップＳ５０２否定）には、処理を終了する。【００８４】
図１４〜図１６、図１８、図１９では、本実施例に係る管理サーバ４の処理の流れを説明する。図１４は、本実施例に係る特定部１９ｂが実行する第一の管理処理の手順を示すフローチャートである。この第一の管理処理の実行タイミングとしては様々なタイミングが考えられる。例えば、第一の管理処理は、所定の時間間隔で実行される。【００８５】
図１４に示すように、予測部１９ｂは、第三のテーブル１８ａに登録された全時間帯、全オフセット範囲の全アクセス回数を取得する（ステップＳ６０１）。予測部１９ｂは、取得した全アクセス回数のうち、閾値Ｒを超えるアクセス回数の時間帯およびオフセット範囲があるか否かを判定する（ステップＳ６０２）。閾値Ｒを超えるアクセス回数の時間帯およびオフセット範囲がある場合（ステップＳ６０２肯定）には、予測部１９ｂは、閾値Ｒを超えるアクセス回数の時間帯およびオフセット範囲を特定し、特定した時間帯およびオフセット範囲を内部メモリに格納し、閾値Ｒを超えるアクセス回数があることを示す第一のフラグに所定値、例えば「１」を設定して、第一のフラグをＯＮにし（ステップＳ６０３）、処理を終了する。また、閾値Ｒを超えるアクセス回数の時間帯およびオフセット範囲がない場合（ステップＳ６０２否定）には、処理を終了する。【００８６】
図１５は、本実施例に係る取得部１９ａが実行する第二の管理処理の手順を示すフローチャートである。この第二の管理処理の実行タイミングとしては様々なタイミングが考えられる。例えば、第二の管理処理は、所定の時間間隔で、例えば３０分ごと、または、毎日「０」時に実行される。なお、第二の管理処理が実行される間隔を、第一の管理処理が実行される間隔よりも短くすることができる。【００８７】
図１５に示すように、取得部１９ａは、第一のフラグの値が「１」であるか否かを判定する（ステップＳ７０１）。第一のフラグの値が「１」でない場合（ステップＳ７０１否定）には、処理を終了する。第一のフラグの値が「１」である場合（ステップＳ７０１肯定）には、取得部１９ａは、第四のテーブル１８ｂを生成する（ステップＳ７０２）。取得部１９ａは、第五のテーブル１８ｃを生成する（ステップＳ７０３）。取得部１９ａは、ＶＭからオフセットおよびアクセス時刻を取得する（ステップＳ７０４）。取得部１９ａは、予測部１９ｂにより特定され、内部メモリに格納された時間帯にアクセス時刻が含まれているか否かを判定する（ステップＳ７０５）。予測部１９ｂにより特定され、内部メモリに格納された時間帯にアクセス時刻が含まれていない場合（ステップＳ７０５否定）には、ステップＳ７０４へ戻る。【００８８】
一方、特定され、内部メモリに格納された時間帯にアクセス時刻が含まれている場合（ステップＳ７０５肯定）には、取得部１９ａは、予測部１９ｂにより特定され、内部メモリに格納されたオフセット範囲に取得したオフセットが含まれているか否かを判定する（ステップＳ７０６）。予測部１９ｂにより特定され、内部メモリに格納されたオフセット範囲に取得したオフセットが含まれていない場合（ステップＳ７０６否定）には、ステップＳ７０４へ戻る。一方、予測部１９ｂにより特定され、内部メモリに格納されたオフセット範囲に取得したオフセットが含まれている場合（ステップＳ７０６肯定）には、取得部１９ａは、第四のテーブル１８ｂの該当部分のアクセス回数の値を１つインクリメントする（ステップＳ７０７）。取得部１９ａは、ＩＰアドレスを、第五のテーブル１８ｃの該当部分に登録する（ステップＳ７０８）。取得部１９ａは、所定期間分のデータを第四のテーブル１８ｂに登録する。取得部１９ａは、２週間分のデータが第四のテーブル１８ｂおよび第四のテーブル１８ｂのコピーに登録されたか否かを判定する（ステップＳ７０９）。例えば、取得部１９ａは、月曜日から日曜日までの２種類のデータが記憶部１８に記憶されているか否かを判定することにより、２週間分のデータが第四のテーブル１８ｂおよび第四のテーブル１８ｂのコピーに登録されたか否かを判定することができる。ここで、登録されていない場合（ステップＳ７０９否定）には、ステップＳ７０４へ戻る。【００８９】
一方、登録された場合（ステップＳ７０９肯定）には、予測部１９ｂは、アクセス回数が閾値Ｒを超える時間帯に周期性があるか否かをオフセット範囲ごとに判定する（ステップＳ７１０）。周期性がある場合（ステップＳ７１０肯定）には、取得部１９ａは、周期性があると判定された時間帯、アクセス回数が閾値を超えるオフセット範囲、曜日、ＶＭのＩＰアドレスが登録された第六のテーブル１８ｄを生成する（ステップＳ７１１）。そして、後述のステップＳ７１２へ進む。一方、周期性がない場合（ステップＳ７１０否定）には、取得部１９ａは、第一のフラグの値を「０」に設定し（ステップＳ７１２）、処理を終了する。【００９０】
図１６は、本実施例に係る送信制御部１９ｃが実行する第三の管理処理の手順を示すフローチャートである。この第三の管理処理の実行タイミングとしては様々なタイミングが考えられる。第三の管理処理は、第六のテーブル１８ｄが生成された場合、例えば、毎日「０」時に、第六のテーブル１８ｄが生成された場合に実行される。【００９１】
図１６に示すように、送信制御部１９ｃは、第六のテーブル１８ｄの登録内容を取得する（ステップＳ８０１）。送信制御部１９ｃは、現在時刻および現在の曜日を取得する（ステップＳ８０２）。送信制御部１９ｃは、第六のテーブル１８ｄに登録されたレコードのうち、現在の曜日と一致する曜日が登録されたレコードであって、登録された時間帯よりも現在の時刻が所定時間前であるレコードがあるか検索する（ステップＳ８０３）。検索の結果、レコードが得られなかった場合（ステップＳ８０３否定）には、処理を終了する。また、検索の結果、レコードが得られた場合（ステップＳ８０３肯定）には、送信制御部１９ｃは、第三のテーブル１８ａを参照して、現在の時刻のアクセス回数が閾値以下であるか否かを判定する（ステップＳ８０４）。アクセス回数が閾値以下である場合（ステップＳ８０４肯定）には、送信制御部１９ｃは、サブネットごとに１つ特定されたＶＭに、レコードに登録されたオフセット範囲が示す第一のボリューム２０ａのデータを転送する。これに加えて、送信制御部１９ｃは、サブネットごとに１つ特定されたＶＭに、同一のサブネット内に存在する他のＶＭに対して、データを転送する指示を送信する（ステップＳ８０５）。その後、送信制御部１９ｃは、今回のＶＭへのデータ送信時の管理サーバ４のＩ／Ｏ負荷に応じて、サブネットごとの次回のデータの送信対象のＶＭの台数を判断し（ステップＳ８０６）、処理を終了する。【００９２】
図１７では、本実施例に係るＶＭの処理の流れを説明する。図１７は、本実施例に係る格納処理の手順を示すフローチャートである。この格納処理の実行タイミングとしては様々なタイミングが考えられる。例えば、格納処理は、データが管理サーバ４からＶＭに送信された場合に実行される。【００９３】
図１７に示すように、格納部１１ｃは、管理サーバ４から送信されたデータを受信する（ステップＳ９０１）。なお、データを転送する指示が、管理サーバ４からＶＭに送信された場合には、格納部１１ｃは、データを転送する指示も受信する。そして、格納部１１ｃは、データを第二のボリューム１０ｃに格納する（ステップＳ９０２）。格納部１１ｃは、データを転送する指示を受信したか否かを判定する（ステップＳ９０３）。データを転送する指示を受信していない場合（ステップＳ９０３否定）には、処理を終了する。一方、データを転送する指示を受信した場合（ステップＳ９０３肯定）には、格納部１１ｃは、データを当該指示が示すＶＭに転送し（ステップＳ９０４）、処理を終了する。【００９４】
図１８は、本実施例に係る取得部１９ａおよび予測部１９ｂが実行する第四の管理処理の手順を示すフローチャートである。この第四の管理処理の実行タイミングとしては様々なタイミングが考えられる。例えば、第四の管理処理は、システム１が稼働してから所定時間、例えば３時間経過した場合に実行される。【００９５】
図１８に示すように、取得部１９ａは、全てのＶＭから、第一のテーブルの登録内容を取得する（ステップＳ１００１）。取得部１９ａは、取得した全てのＶＭの第一のテーブルの登録内容が示すアクセス回数の総和をオフセットごとに算出し、各オフセットの値をＮで割った余りを算出する（ステップＳ１００２）。取得部１９ａは、算出した余りを１６個のグループに分ける（ステップＳ１００３）。取得部１９ａは、各グループと、アクセス回数とが対応付けられて登録された第７のテーブル１８ｅを生成する（ステップＳ１００４）。【００９６】
予測部１９ｂは、第７のテーブル１８ｅの登録内容から周期性があるか否かを判定する（ステップＳ１００５）。第７のテーブル１８ｅの登録内容から周期性が特定されない場合（ステップＳ１００５否定）には、予測部１９ｂは、Ｎの値を２倍にし（ステップＳ１００７）、ステップＳ１００２へ戻る。一方、第７のテーブル１８ｅの登録内容から周期性が特定された場合（ステップＳ１００５肯定）には、取得部１９ａは、周期情報を記憶部１８に格納し（ステップＳ１００６）、処理を終了する。【００９７】
図１９は、本実施例に係る第五の管理処理の手順を示すフローチャートである。この第五の管理処理の実行タイミングとしては様々なタイミングが考えられる。例えば、第五の管理処理は、周期情報が記憶部１８に記憶された後に、所定時間、例えば３時間ごとに実行される。【００９８】
図１９に示すように、送信制御部１９ｃは、記憶部１８に記憶された周期情報を記憶部１８から取得する（ステップＳ１１０１）。送信制御部１９ｃは、取得した周期情報が示すアクセスパターンと、新たに生成された第７のテーブル１８ｅの登録内容が示すアクセスパターンとを比較する（ステップＳ１１０２）。送信制御部１９ｃは、比較の結果が一致であるか否かを判定する（ステップＳ１１０３）。比較の結果が一致である場合（ステップＳ１１０３肯定）には、送信制御部１９ｃは、次のような処理を行う。すなわち、送信制御部１９ｃは、予測部１９ｂにより特定され、内部メモリに格納された周期となるグループに対応するオフセットが示す第一のボリューム２０ａのデータを、サブネットごとに１つ特定されたＶＭに転送する。これに加えて、送信制御部１９ｃは、サブネットごとに１つ特定されたＶＭに、レコードに登録されたＩＰアドレスが示す同一のサブネット内に存在する他のＶＭに対して、データを転送する指示を送信する（ステップＳ１１０４）。続いて、送信制御部１９ｃは、今回のＶＭへのデータ送信時の管理サーバ４のＩ／Ｏ負荷に応じて、サブネットごとの次回のデータの送信対象のＶＭの台数を判断し（ステップＳ１１０５）、処理を終了する。また、比較の結果が一致でない場合（ステップＳ１１０３否定）にも、処理を終了する。【００９９】
上述してきたように、本実施例に係る管理サーバ４は、複数のＶＭによりアクセスされる第一のボリューム２０ａへの複数のＶＭの時間ごとのアクセス頻度を取得する。本実施例に係る管理サーバ４は、取得された複数のＶＭの時間ごとのアクセス回数に基づいて、１週間などの周期で繰り返される時間の中からアクセス回数が閾値を超える時間を特定する。本実施例に係る管理サーバ４は、第六のテーブル１８ｄを参照して、１週間などの周期で繰り返される時間において、特定された閾値Ｒを超えるアクセス回数の時間より前に、対応するオフセットが示す第一のボリューム２０ａのデータが、ＶＭに送信されるように制御する。したがって、本実施例に係る管理サーバ４によれば、アクセス回数が高くなる時間より前に、ＶＭにデータが送信されるので、ストレージサーバ５のＩ／Ｏ負荷を低減することができる。【０１００】
また、本実施例に係る管理サーバ４は、データを記憶する第一のボリューム２０ａに対する複数のＶＭからのアクセス状況に基づいて、第一のボリューム２０ａに対する複数のＶＭからのアクセス頻度が所定の閾値を超える時間帯を予測する。そして、本実施例に係る管理サーバ４は、予測された時間帯より前に、第一のボリューム２０ａに記憶されたデータを複数のＶＭのうちの少なくとも１つのＶＭに対して送信するように第一のボリューム２０ａを制御する。したがって、本実施例に係る管理サーバ４によれば、アクセス回数が高くなる時間より前に、ＶＭにデータが送信されるので、ストレージサーバ５のＩ／Ｏ負荷を低減することができる。【０１０１】
また、本実施例に係る管理サーバ４は、複数のＶＭによりアクセスされる第一のボリューム２０ａへの複数のＶＭのオフセットごとのアクセス頻度を取得する。本実施例に係る管理サーバ４は、取得された複数のＶＭのオフセットごとのアクセス回数に基づいて、アクセス回数が閾値を超える複数のオフセットであって、周期となる複数のオフセットを特定する。本実施例に係る管理サーバ４は、特定されたオフセットが示す第一のボリューム２０ａのデータがＶＭに送信されるように制御する。したがって、本実施例に係る管理サーバ４によれば、他の部分よりもアクセス頻度が高いディスクの各ブロックの先頭のデータをアクセス負荷が高くなる前に、ＶＭにデータが送信されるので、Ｉ／Ｏ負荷を低減することができる。【０１０２】
また、本実施例に係る管理サーバ４によれば、サブネットごとに１つ特定されたＶＭに、サブネット内の他のＶＭへデータを転送させる指示が送信される。そのため、本実施例に係る管理サーバ４によれば、ストレージサーバ５とＶＭとのデータ通信量が減り、ストレージサーバ５のＩ／Ｏ負荷を低減することができる。【０１０３】
また、本実施例に係る管理サーバ４は、今回のＶＭへのデータ送信時の管理サーバ４のＩ／Ｏ負荷に応じて、サブネットごとの次回のデータの送信対象のＶＭの台数を判断する。そのため、本実施例に係る管理サーバ４によれば、適切な台数のＶＭに対してデータを送信することができる。【０１０４】
また、本実施例に係る管理サーバ４は、所定の周期で繰り返される時間において、閾値Ｒを超えるアクセス回数の時間より前の時間であって、アクセス回数が閾値以下の時間に、ＶＭにデータが送信される。これにより、データを受信したＶＭは、受信したデータを第二のボリュームに格納する。そのため、本実施例に係る管理サーバ４によれば、ストレージサーバ５へのアクセス量が閾値以下の場合に、データがＶＭに送信されるので、ストレージサーバ５のＩ／Ｏ負荷を低減することができる。【０１０５】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。【０１０６】
例えば、上記の実施例では、管理サーバ４が、全てのＶＭを対象に、第三のテーブル１８ａからアクセス頻度が閾値を超えるオフセット、すなわち、アクセス頻度の高いオフセットについて、より詳細な情報が登録された第四のテーブル１８ｂを生成する。そして、上記の実施例では、管理サーバ４が、第四のテーブル１８ｂを用いて、アクセス頻度が閾値を超える時間帯よりも前の時間帯に、アクセス頻度が高いオフセットのデータをＶＭへ転送する。また、上記の実施例では、管理サーバ４が、第四のテーブル１８ｂを用いて、アクセス頻度が閾値を超える複数の記憶領域であって、各記憶領域のアドレスが所定の周期となる複数の記憶領域の記憶内容をＶＭに転送する。しかしながら、開示の装置は、これに限定されない。例えば、各ＶＭが、自身の第二のテーブルからアクセス頻度が閾値を超えるオフセットを特定し、特定したオフセットについて、より詳細な情報が登録された第八のテーブル（図示せず）を生成する。そして、各ＶＭが、それぞれの第八のテーブルを用いて、上記と同様に、次のような処理を行ってもよい。すなわち、各ＶＭが、アクセス頻度が閾値を超える時間帯よりも前の時間帯に、アクセス頻度が高いオフセットのデータを第一のボリューム２０ａから取得し、取得したデータを第二のボリューム１０ｃに格納するようにしてもよい。また、各ＶＭが、アクセス頻度が閾値を超える複数の記憶領域であって、各記憶領域のアドレスが所定の周期となる複数の記憶領域のデータを第一のボリューム２０ａから取得し、取得したデータを第二のボリューム１０ｃに格納するようにしてもよい。【０１０７】
また、上記の実施例では、時間の幅がある「時間帯」の項目を有するテーブルを有し、各時間帯のアクセス頻度を取得し、取得したアクセス頻度をテーブルの「時間帯」の項目に登録し、アクセス頻度が登録されたテーブルを用いて処理を行う場合について例示した。しかしながら、開示の装置は、これに限定されない。例えば、ＶＭが「時間」の項目を有する同様のテーブルを有し、各時間のアクセス頻度を取得し、取得したアクセス頻度をテーブルの「時間」の項目に登録し、アクセス頻度が登録されたテーブルを用いて同様の処理を行ってもよい。また、管理サーバ４が「時間」の項目を有する同様のテーブルを有し、各時間のアクセス頻度を取得し、取得したアクセス頻度をテーブルの「時間」の項目に登録し、アクセス頻度が登録されたテーブルを用いて同様の処理を行ってもよい。【０１０８】
また、上記の実施例では、送信制御部１９ｃが、データをＶＭへ転送する場合について例示したが、開示の装置はこれに限定されない。例えば、送信制御部１９ｃは、データをＶＭに送信する指示をストレージサーバ５へ送信するようにしてもよい。この場合、指示を受信したストレージサーバ５は、受信した指示に基づいて、データをＶＭに送信する。      【０１０９】
また、一定期間システムを運用した後、新たにサーバを追加する場合に、管理サーバ４の第三のテーブル１８ａを新たに追加するサーバに保持させることで、アクセス頻度に関する情報を一から採取せずにすむ。そのため、サーバを追加したことによる第一のボリューム２０ａへのＩ／Ｏ負荷を低減させることができる。【０１１０】
また、上記の実施例では、第一のボリューム２０ａを複数のＶＭがアクセスするシステムの場合について例示したが、システムはこれに限られず、ＤＢ（Data  Base）サーバなどに複数の装置がアクセスするシステムであってもよい。【０１１１】
また、上記の実施例において説明した処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、上記の実施例において説明した処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。【０１１２】
また、各種の負荷や使用状況などに応じて、上記の実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。【０１１３】
また、各種の負荷や使用状況などに応じて、上記の実施例において説明した各処理の各ステップでの処理の順番を変更できる。例えば、ステップＳ７０２での処理を行う前に、ステップＳ７０３での処理を行うこともできる。【０１１４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。【０１１５】
［管理プログラム］
また、上記の実施例で説明した管理サーバ４の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図２０を用いて、上記の実施例で説明した管理サーバ４と同様の機能を有する管理プログラムを実行するコンピュータの一例を説明する。【０１１６】
図２０は、管理プログラムを実行するコンピュータを示す図である。図２０に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３１０〜３４０の各部は、バス３５０を介して接続される。【０１１７】
ＲＯＭ３２０には、上記の実施例で示す取得部１９ａと、予測部１９ｂと、送信制御部１９ｃと同様の機能を発揮する管理プログラム３２０ａが予め記憶される。なお、管理プログラム３２０ａについては、適宜分離しても良い。【０１１８】
そして、ＣＰＵ３１０が、管理プログラム３２０ａをＲＯＭ３２０から読み出して実行する。【０１１９】
そして、ＨＤＤ３３０には、第三のテーブル、第四のテーブル、第五のテーブル、第六のテーブル、第七のテーブルが設けられる。これら第三のテーブル、第四のテーブル、第五のテーブル、第六のテーブル、第七のテーブルのそれぞれは、第三のテーブル１８ａ、第四のテーブル１８ｂ、第五のテーブル１８ｃ、第六のテーブル１８ｄ、第七のテーブル１８ｅのそれぞれに対応する。【０１２０】
そして、ＣＰＵ３１０は、第三のテーブル、第四のテーブル、第五のテーブル、第六のテーブル、第七のテーブルを読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納された第三のテーブル、第四のテーブル、第五のテーブル、第六のテーブル、第七のテーブルを用いて、管理プログラム３２０ａを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３４０に格納されれば良い。【０１２１】
なお、上記した管理プログラムについては、必ずしも最初からＲＯＭに記憶させておく必要はない。【０１２２】
例えば、コンピュータに挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。  【０１２３】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータに接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１２４】
１        システム
２        サーバ
３        サーバ
４        管理サーバ
５        ストレージサーバ
１８      記憶部
１８ａ    第三のテーブル
１８ｂ    第四のテーブル
１８ｃ    第五のテーブル
１８ｄ    第六のテーブル
１８ｅ    第七のテーブル
１９      制御部
１９ａ    取得部
１９ｂ    予測部
１９ｃ    送信制御部
【図１】
0005895944.tif 000002
【図２】
0005895944.tif 000003
【図３】
0005895944.tif 000004
【図４】
0005895944.tif 000005
【図５】
0005895944.tif 000006
【図６】
0005895944.tif 000007
【図７Ａ】
0005895944.tif 000008
【図７Ｂ】
0005895944.tif 000009
【図８Ａ】
0005895944.tif 000010
【図８Ｂ】
0005895944.tif 000011
【図９】
0005895944.tif 000012
【図１０】
0005895944.tif 000013
【図１１】
0005895944.tif 000014
【図１２】
0005895944.tif 000015
【図１３】
0005895944.tif 000016
【図１４】
0005895944.tif 000017
【図１５】
0005895944.tif 000018
【図１６】
0005895944.tif 000019
【図１７】
0005895944.tif 000020
【図１８】
0005895944.tif 000021
【図１９】
0005895944.tif 000022
【図２０】
0005895944.tif 000023