(57)【特許請求の範囲】
【請求項１】
第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、前記第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化装置であって、
前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い前記第２の記憶装置にコピーする手段と、
コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係が記録されているブロック対応テーブルと、
前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する前記第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力する手段と、
リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させる手段と、
を備えることを特徴とするリブート高速化装置。
【請求項２】
請求項１に記載のリブート高速化装置であって、
前記入出力回数は、過去のリブート１回毎の平均の入出力回数であることを特徴とするリブート高速化装置。
【請求項３】
請求項１又は２に記載のリブート高速化装置であって、
記録するべき入出力回数を前記リブート時に計測することを特徴とするリブート高速化装置。
【請求項４】
請求項１乃至３の何れか１項に記載のリブート高速化装置であって、
前記リブート及び入出力回数は、前記仮想マシン毎に管理されることを特徴とするリブート高速化装置。
【請求項５】
請求項１乃至４の何れか１項に記載のリブート高速化装置において、
前記リブートをブートに置き換えることにより得られるブート高速化装置。
【請求項６】
請求項１乃至４の何れか１項に記載のリブート高速化装置において、
前記リブートをシャットダウンに置き換えることにより得られるシャットダウン高速化装置。
【請求項７】
第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、前記第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化方法であって、
前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い前記第２の記憶装置にコピーするステップと、
コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係をブロック対応テーブルに記録するステップと、
前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する前記第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力するステップと、
リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させるステップと、
を有することを特徴とするリブート高速化方法。
【請求項８】
第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、前記第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化装置としてコンピュータを機能させるためのプログラムであって、
前記コンピュータを、
前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い前記第２の記憶装置にコピーする手段、
コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係をブロック対応テーブルに記録する手段、
前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する前記第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力する手段、
リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させる手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リブート、ブート、シャットダウンを高速化するためのリブート、ブート、シャットダウン高速化装置並びにリブート、ブート、シャットダウン高速化方法に関する。
【背景技術】
【０００２】
近年、管理コストの削減や物理サーバのコスト削減を目的に、サーバの仮想化が進んでいる。サーバ仮想化環境においては、仮想マシンの物理サーバ間移動やバックアップ管理のため、ＯＳ(Operating System)領域やデータはストレージ上に配置される事が多い。同一ストレージ内部にて、ＯＳ領域が複数運用される構成では、シャットダウンやブートにおいて、同一ディスクに負荷が集中し、シャットダウンやブートの時間がかかる事が多い。例えば、ＯＳのパッチ適用などにおいて同じタイミングで複数の仮想マシンのリブートが行われる場合などである。シャットダウンやブートに時間がかかると、業務停止時間が長くなり、業務への影響が大きくなるという課題があった。ＯＳ領域をＳＳＤ(Solid State Drive)に配置しておく事で解決の１つとなるが、ＯＳ領域を全て固定で配置したのでは、ＳＳＤのコストが増大する。シャットダウンやブート時にＯＳ領域のボリュームをＳＳＤに再配置する事でＳＳＤコスト削減の１つの解決となるが、毎回ボリュームごと全てを再配置したのでは、再配置のためのストレージの負荷が増大し、シャットダウンやブートの時間短縮にはならない。
【０００３】
特許文献１には、（１）ロジカルユニット管理テーブルは、ロジックユニットに置かれる管理ブロック毎のアクセス情報を管理するテーブルであり、管理ブロックにアクセスした回数が記録されるということと、（２）該当するレコードの管理ブロックへのアクセス回数が上限に達した時に、管理ブロックをスワップ領域内のコピー先位置にコピーすることが記載されている。
【０００４】
特許文献２には、第１のディスクアクセス方式とそれよりも高速にディスクアクセスすることが可能な第２のディスクアクセス方式とを切り替える方式であって、第１のデバイスドライバ向けの起動ディスクに対するディスクアクセス命令を、第２のデバイスドライバの初期化前には、第１のデバイスドライバに渡し、第２のデバイスドライバの初期化後には、第２のデバイスドライバに渡す方式が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１５０３２４号公報
【特許文献２】特開２００９−１３４６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＳＳＤを使用した仮想マシンのリブート、ブート、シャットダウン高速化は、既存の一般的なＳＳＤ利用方法として存在する。しかし、ストレージ上における仮想マシンのＯＳイメージをあらかじめ全てＳＳＤに配置していたのでは、必要となるＳＳＤの容量が増大してしまい、コストが大きい。
【０００７】
使用状況における性能最適配置技術は既知のものだが、仮想マシンのリブート、ブート、シャットダウンにおいて、仮想マシン全てをボリューム単位で再配置したり、仮想ディスクファイルを再配置したのでは、ストレージの負荷が上がってしまう。
【０００８】
また、Ｉ／Ｏの調査について、仮想マシンが運用されている全ての時間を調査したのでは、ストレージの負荷が大きい。
【０００９】
特許文献１に記載の発明ではストレージ内部のブロック全てについて、任意の時間帯のアクセス回数を調査し、最適配置を行っています。性能調査やブロック最適配置を行うと、ストレージの負荷が増大します。結果として、複数ＯＳが１つのストレージで運用されるサーバ仮想化環境では、ストレージの負荷がネックとなり、期待した効果を得る事が難しい、という課題があります。
【００１０】
また、特許文献１に記載の発明は、ＲＡＩＤにおいてアクセス先のユニットを分散させることを目的とするものであり、リブート、ブート、シャットダウンを高速化することを目的とするものではない。
【００１１】
特許文献２に記載の発明は、第２のデバイスドライバの初期化の前後の間でディスクアクセス方式を切り替えるものであり、入出力回数に応じて切り替えるものではない。
【００１２】
本発明は、リブート、ブート、シャットダウンにおけるブロック毎の入出力回数に応じてリブート、ブート、シャットダウンを高速化することを可能とするリブート高速化装置、ブート高速化装置及びシャットダウン高速化装置並びにリブート高速化方法、ブート高速化方法及びシャットダウン高速化方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明によれば、第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、前記第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化装置であって、前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い前記第２の記憶装置にコピーする手段と、コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係が記録されているブロック対応テーブルと、前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する前記第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力する手段と、リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させる手段と、を備えることを特徴とするリブート高速化装置が提供される。
【００１４】
また、本発明によれば、第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、前記第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化方法であって、前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い前記第２の記憶装置にコピーするステップと、コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係をブロック対応テーブルに記録するステップと、前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する前記第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力するステップと、リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させるステップと、を有することを特徴とするリブート高速化方法が提供される。
【００１５】
更に、本発明によれば、第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、前記第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化装置としてコンピュータを機能させるためのプログラムであって、前記コンピュータを、前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い前記第２の記憶装置にコピーする手段、コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係をブロック対応テーブルに記録する手段、前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する前記第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力する手段、リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させる手段、として機能させることを特徴とするプログラムが提供される。
【発明の効果】
【００１６】
本発明によれば、リブート、ブート、シャットダウンにおけるブロック毎の入出力回数に応じてリブート、ブート、シャットダウンを高速化することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態による仮想マシンのリブートに係る部分を示すブロック図である。
【図２】本発明の実施形態による仮想マシンのブートに係る部分を示すブロック図である。
【図３】本発明の実施形態による仮想マシンのシャットダウンに係る部分を示すブロック図である。
【図４】図１に示すリブートＩ／Ｏ管理テーブルの構成を示す図である。
【図５】図２に示すブートＩ／Ｏ管理テーブルの構成を示す図である。
【図６】図３に示すシャットダウンＩ／Ｏ管理テーブルの構成を示す図である。
【図７】図１乃至３に示すブロック対応テーブルの構成を示す図である。
【図８】図１乃至３に示す仮想マシン管理テーブルの構成を示す図である。
【図９】図１乃至３に示す仮想マシンブロック管理テーブルの構成を示す図である。
【図１０】図１に示すリブート部の動作を示すフローチャートである。
【図１１】図２に示すブート部の動作を示すフローチャートである。
【図１２】図３に示すシャットダウン部の動作を示すフローチャートである。
【図１３】図１乃至３に示す測定開始部の動作を示すフローチャートである。
【図１４】図１乃至３に示す測定完了部の動作を示すフローチャートである。
【図１５】図１乃至３に示す仮想Ｉ／Ｏ部の動作を示すフローチャートである。
【図１６】図１乃至３に示すカウント部の動作を示すフローチャートである。
【図１７】図１に示すブロック判定（リブート）部の動作を示すフローチャートである。
【図１８】図２に示すブロック判定（ブート）部の動作を示すフローチャートである。
【図１９】図３に示すブロック判定（シャットダウン）部の動作を示すフローチャートである。
【図２０】図１乃至３に示すブロックコピー部の動作を示すフローチャートである。
【図２１】図１乃至３に示すブート判定部８の動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【００１９】
本実施形態では、仮想環境におけるストレージシステム内のＩ／Ｏパターンに基づいたデータの配置を行う。それにより、通常技術と比較し、仮想マシンのリブート、シャットダウン、ブートを高速化する事ができる。
【００２０】
仮想マシンのリブート、ブート、シャットダウンのそれぞれについて、仮想マシンのＯＳイメージとなる仮想ディスクファイルのＩ／Ｏ回数をブロック単位でカウントし、それぞれリブートＩ／Ｏ管理テーブル、ブートＩ／Ｏ管理テーブル、シャットダウンＩ／Ｏ管理テーブルに記録する。アクセス回数の多いブロックについては、次回リブート、ブート、シャットダウンの直前に、ＳＳＤにコピーし、ＳＳＤから読み出す事で、それぞれの処理の高速化を図る。ここで、ブロックは、例えば、セクターであるが、他の単位のブロックであってもよい。
【００２１】
図１、図２、図３を参照すると、本実施形態は、ホスト計算機１とストレージシステム４、５を含む。ホスト計算機１は、サーバ仮想化環境基盤となるハイパーバイザと、仮想マシン群を含む。ハイパーバイザは、リブート部１８、ブート部１９、シャットダウン部２０、測定完了部９、測定開始部１０、ブロック判定（リブート）部２１、ブロック判定（ブート）部２２、ブロック判定（シャットダウン）部２３、仮想マシン管理テーブル１３、カウント部１２、仮想Ｉ／Ｏ部１１、仮想マシンブロック管理テーブル１４、リブートＩ／Ｏ管理テーブル２４、ブートＩ／Ｏ管理テーブル２５、シャットダウンＩ／Ｏ管理テーブル２６を含む。仮想マシンはブート判定部８を含む。ストレージシステム４、５は、ストレージコントローラ４とストレージＨＤＤ(Hard Disk Drive)格納筐体５を含む。ストレージコントローラ４はブロックコピー部１５とブロック対応テーブル１６と、ＳＳＤデータ破棄部１７を含む。ストレージＨＤＤ格納筐体５は、ＲＡＩＤグループ（ＳＳＤ）６と、ＲＡＩＤグループ（ＨＤＤ）７を含む。ここで、一般に、ＳＤＤは、ＨＤＤよりも入出力時間が短い。
【００２２】
図４に示すリブートＩ／Ｏ管理テーブル２４は、仮想マシンのリブート時の仮想ディスクファイルのブロックごとのＩ／Ｏ回数を保持するテーブルである。
【００２３】
図５に示すブートＩ／Ｏ管理テーブル２５は、仮想マシンのブート時の仮想ディスクファイルのブロックごとのＩ／Ｏ回数を保持するテーブルである。
【００２４】
図６に示すシャットダウンＩ／Ｏ管理テーブル２６は、仮想マシンのシャットダウン時の仮想ディスクファイルのブロックごとのＩ／Ｏ回数を保持するテーブルである。
【００２５】
図７に示すブロック対応テーブル１６は、ＨＤＤアドレスと、そのデータがコピーされている先のＳＳＤアドレスを保持するテーブルである。
【００２６】
図８に示す仮想マシン管理テーブル１３は、仮想マシンの処理状態（リブート中、ブート中、シャットダウン中）を保持するテーブルである。
【００２７】
図９に示す仮想マシンブロック管理テーブル１４は、ＨＤＤアドレスと、そのＨＤＤアドレス上にはどの仮想マシンの仮想ディスクファイルが存在するか、を保持するテーブルである。
【００２８】
図１３は、測定開始部１０による仮想マシンの仮想ディスクファイルのブロックのＩ／Ｏ回数の測定を開始する方法を示す。
【００２９】
図１４は、測定完了部９による仮想マシンの仮想ディスクファイルのブロックのＩ／Ｏ回数の測定を完了する方法を示す。
【００３０】
図１５は、仮想Ｉ／Ｏ部１１による、あるＨＤＤアドレスにアクセスがあった時、ＳＳＤ上にコピーされているデータがあればＳＳＤをアクセスする方法を示す。
【００３１】
図１６は、カウント部１２による、仮想マシンの仮想ディスクファイルのブロックのＩ／Ｏ回数をカウントする方法を示す。
【００３２】
図１７は、ブロック判定（リブート）部２１による、仮想マシンのリブート時に、ＳＳＤ上にコピーするブロックを判断する方法を示す。
【００３３】
図１８は、ブロック判定（ブート）部２２による、仮想マシンのブート時に、ＳＳＤ上にコピーするブロックを判断する方法を示す。
【００３４】
図１９は、ブロック判定（シャットダウン）部２３による、仮想マシンのシャットダウン時に、ＳＳＤ上にコピーするブロックを判断する方法を示す。
【００３５】
図２０は、ブロックコピー部１５による、ＨＤＤからＳＳＤへデータのコピーを行う方法を示す。
【００３６】
図２１は、ブート判定部８による、仮想マシンのＯＳとしてのブート完了を判定する方法を示す。
【００３７】
次に、本実施形態の動作について詳細に説明する。
【００３８】
本実施形態は、仮想マシンのリブート、ブート、シャットダウンを契機として動作する。
【００３９】
図１、図１０を参照すると、仮想マシンのリブート時は、ハイパーバイザからリブート部１８が呼び出される。リブート部１８は、ブロック判定（リブート）部２１に、リブートする仮想マシンの識別情報である仮想マシンＩＤを引数として、ＳＳＤにコピーするブロックの判定とコピーを要求する（ステップＳ１１）。図１７を参照すると、ブロック判定（リブート）部２１は、リブートＩ／Ｏ管理テーブル２４を参照し（ステップＳ８１）、リブート対象になる仮想マシンの仮想ディスクファイルが存在するブロックの内、Ｉ／Ｏ回数が一定閾値以上のものについて、ＳＳＤへのコピーをストレージ上のブロックコピー部１５に要求する（ステップＳ８２でＹＥＳ、Ｓ８３でＹＥＳ、Ｓ８４）。なお、ステップＳ８３でＩ／Ｏ回数が一定閾値以上であるか否かを判断する際、Ｉ／Ｏ回数を、過去のリブート１回毎Ｉ／Ｏ回数の平均値としてもよい。図２０を参照すると、ブロックコピー部１５は、ＲＡＩＤグループ（ＳＳＤ）に空きがあれば（ステップＳ１１１でＹＥＳ）、ＨＤＤのブロックであって、ブロック判定（リブート）部２１により指定されたブロック上のデータをＳＳＤにコピーし（ステップＳ１１２）、結果をブロック対応テーブル１６に反映する（ステップＳ１１３）。結果が反映されたブロック対応テーブル１６では、コピーがされたブロックについて、ＨＤＤアドレスとＳＤＤアドレスとの対応関係が格納されている。
【００４０】
図１０に戻り、その後、リブート部１８は、測定開始部１０に、リブートする仮想マシンＩＤと処理ＩＤ＝１（リブートの処理ＩＤ）を引数として、仮想マシン管理テーブル１３の更新を要求する（ステップＳ１２）。図１３を参照すると、測定開始部１０は、仮想マシン管理テーブル１３に対し、引数となった仮想マシンＩＤの行の処理ＩＤを１に更新する（ステップＳ４１）。
【００４１】
図１０に戻り、その後、リブート部１８は、リブート対象となる仮想マシンをリブートする（ステップＳ１３）。その後、仮想マシン上のブート判定部８に、リブートする仮想マシンのＩＤを引数として、仮想マシンのＯＳのブート完了判定を要求する（ステップＳ１４）。図２１を参照すると、ブート判定部２１は、仮想マシン上の仮想ＯＳのブートが完了すると（ステップＳ１２１、Ｓ１２２でＹＥＳ）、測定完了部９に、Ｉ／Ｏ測定の完了を要求する（ステップＳ１２３）。図１４を参照すると、測定完了部９は、仮想マシン管理テーブル１３の引数となった仮想マシンＩＤの行の処理ＩＤを０に更新する（ステップＳ５１）。
【００４２】
図２、図１１を参照すると、仮想マシンのブート時は、ハイパーバイザからブート部１９が呼び出される。ブート部１９は、ブロック判定（ブート）部２２に、ブートする仮想マシンの識別情報である仮想マシンＩＤを引数として、ＳＳＤにコピーするブロックの判定とコピーを要求する。図１８を参照すると、ブロック判定（ブート）部２２は、ブートＩ／Ｏ管理テーブル２５を参照し（ステップＳ９１）、ブート対象になる仮想マシンの仮想ディスクファイルが存在するブロックの内、Ｉ／Ｏ回数が一定閾値以上のものについて、ＳＳＤへのコピーをストレージ上のブロックコピー部１５へ要求する（ステップＳ９２でＹＥＳ、Ｓ９３でＹＥＳ、Ｓ９４）。なお、ステップＳ９３でＩ／Ｏ回数が一定閾値以上であるか否かを判断する際、Ｉ／Ｏ回数を、過去のブート１回毎Ｉ／Ｏ回数の平均値としてもよい。図２０を参照すると、ブロックコピー部１５は、ＲＡＩＤグループ（ＳＳＤ）に空きがあれば（ステップＳ１１１でＹＥＳ）、ＨＤＤのブロックであって、ブロック判定（ブート）部２２により指定されたブロック上のデータをＳＳＤにコピーし（ステップＳ１１２）、結果をブロック対応テーブル１６に反映する（ステップＳ１１３）。結果が反映されたブロック対応テーブル１６では、コピーがされたブロックについて、ＨＤＤアドレスとＳＤＤアドレスとの対応関係が格納されている。
【００４３】
図１１に戻り、その後、ブート部１９は、測定開始部１０に、ブートする仮想マシンＩＤと処理ＩＤ＝２（ブートの処理ＩＤ）を引数として、仮想マシン管理テーブル１３の更新を要求する（ステップＳ２２）。図１３を参照すると、測定開始部１０は、仮想マシン管理テーブル１３に対し、引数となった仮想マシンＩＤの行の処理ＩＤを２に更新する（ステップＳ４１）。
【００４４】
図１１に戻り、その後、ブート部１９は、ブート対象となる仮想マシンをブートする（ステップＳ２３）。その後、仮想マシン上のブート判定部８に、ブートする仮想マシンのＩＤを引数として、仮想マシンのＯＳのブート完了判定を要求する（ステップＳ２４）。図２１を参照すると、ブート判定部８は、仮想マシン上の仮想ＯＳのブートが完了すると（ステップＳ１２１、Ｓ１２２でＹＥＳ）、測定完了部９に、Ｉ／Ｏ測定の完了を要求する（ステップＳ１２３）。図１４を参照すると、測定完了部９は、仮想マシン管理テーブル１３の引数となった仮想マシンＩＤの行の処理ＩＤを０に更新する（ステップＳ５１）。
【００４５】
図３、図１２を参照すると、仮想マシンのシャットダウン時は、ハイパーバイザからシャットダウン部２０が呼び出される。シャットダウン部２０は、ブロック判定（シャットダウン）部２３に、シャットダウンする仮想マシンの識別情報である仮想マシンＩＤを引数として、ＳＳＤにコピーするブロックの判定とコピーを要求する（ステップＳ３１）。図１９を参照すると、ブロック判定（シャットダウン）部２３は、シャットダウンＩ／Ｏ管理テーブル２６を参照し（ステップＳ１０１）、シャットダウン対象になる仮想マシンの仮想ディスクファイルが存在するブロックの内、Ｉ／Ｏ回数が一定閾値以上のものについて、ＳＳＤへのコピーをストレージ上のブロックコピー部１５に要求する（ステップＳ１０２でＹＥＳ、Ｓ１０３でＹＥＳ、Ｓ１０４）。なお、ステップＳ１０３でＩ／Ｏ回数が一定閾値以上であるか否かを判断する際、Ｉ／Ｏ回数を、過去のシャットダウン１回毎Ｉ／Ｏ回数の平均値としてもよい。図２０を参照すると、ブロックコピー部１５は、ＲＡＩＤグループ（ＳＳＤ）に空きがあれば（ステップＳ１１１でＹＥＳ）、ＨＤＤのブロックであってブロック判定（シャットダウン）部２３により指定されたブロック上のデータをＳＳＤにコピーし（ステップＳ１１２）、結果をブロック対応テーブル１６に反映する（ステップＳ１１３）。結果が反映されたブロック対応テーブル１６では、コピーがされたブロックについて、ＨＤＤアドレスとＳＤＤアドレスとの対応関係が格納されている。
【００４６】
図１２に戻り、その後、シャットダウン部２０は、測定開始部１０に、シャットダウンする仮想マシンＩＤと処理ＩＤ＝３（シャットダウンの処理ＩＤ）を引数として、仮想マシン管理テーブル１３の更新を要求する（ステップＳ３２）。図１３を参照すると、測定開始部１０は、仮想マシン管理テーブル１３に対し、引数となった仮想マシンＩＤの行の処理ＩＤを３に更新する（ステップＳ４１）。
【００４７】
図１２に戻り、その後、シャットダウン部２０は、シャットダウン対象となる仮想マシンをシャットダウンする（ステップＳ３３）。ＳＳＤデータ破棄部１７は、シャットダウン完了後、ＳＳＤ上の当該仮想マシンに対応するブロックのデータについては破棄し、ブロック対応テーブル１６についても、データを破棄したブロックに対応する部分を初期化する（ステップＳ３４）。その後、測定完了部９に、Ｉ／Ｏ測定の完了を要求する。図１４を参照すると、測定完了部９は、仮想マシン管理テーブル１３の引数となった仮想マシンＩＤの行の処理ＩＤを０に更新する（ステップＳ５１）。
【００４８】
図１５を参照すると、仮想マシンからストレージへのアクセス（すなわち、書き込み又は読出し、或いは、Ｉ／Ｏ(input/output；入出力)）について、説明する。仮想Ｉ／Ｏ部１１は、ブロック対応テーブル１６から、アクセス要求のあったＨＤＤアドレスの行のＳＳＤアドレスを参照する（ステップＳ６１）。ブロック対応テーブル１６のアクセスのあったＨＤＤアドレスの行のＳＳＤの領域にデータが存在すれば（ステップＳ６２でＹＥＳ）、ＳＳＤ上からデータを読み出す（ステップＳ６５）。ブロック対応テーブル１６のアクセスのあったＨＤＤアドレスの行のＳＳＤの領域にデータが存在しなければ（ステップＳ６２でＮＯ）、ＨＤＤ上からデータを読み出す（ステップＳ６４）。ステップＳ６３又はＳ６４の次に、仮想マシンブロック管理テーブル１４から、アクセス要求のあったＨＤＤアドレスの行の仮想マシンＩＤを参照し（ステップＳ６５）、仮想マシンＩＤとＨＤＤアドレスを引数として、カウント部１２にアクセス回数のカウントを要求する（ステップＳ６６）。
【００４９】
図１６を参照すると、カウント部１２は、仮想マシンブロック管理テーブル１４から、引数である仮想マシンＩＤの行の処理ＩＤを取得する（ステップＳ７１）。処理ＩＤが１であれば（リブートの処理ＩＤであれば）（ステップＳ７２でＹＥＳ）、リブートＩ／Ｏ管理テーブル２４のＨＤＤアドレスの行のＩ／Ｏ回数を１増やし（ステップＳ７３）、処理ＩＤが２であれば（ブートの処理ＩＤ）（ステップＳ７４でＹＥＳ）、ブートＩ／Ｏ管理テーブル２５のＨＤＤアドレスの行のＩ／Ｏ回数を１増やし（ステップＳ７５）、処理ＩＤが３であれば（シャットダウンの処理ＩＤであれば）（ステップＳ７６でＹＥＳ）、シャットダウンＩ／Ｏ管理テーブルのＨＤＤアドレスの行のＩ／Ｏ回数を、１増やす（ステップＳ７７）。カウント部１２は、処理ＩＤが０であれば、どのＩ／Ｏ回数も変化させない。
【００５０】
本実施形態によれは、サーバ仮想化環境において、通常技術よりもより効率的に仮想マシンのリブート、シャットダウン、ブートの高速化を行う事で、業務への影響を軽減できる。その理由は、本実施形態において、シャットダウン、ブート時の負荷が高いブロックを、Ｒｅａｄ／Ｗｒｉｔｅ性能の高いＳＳＤに再配置するからである。
【００５１】
また、本実施形態によれば、通常技術と比較して、必要となるＳＳＤの容量を削減でき、ＳＳＤ導入コストを削減する事ができる。最初からＯＳイメージを固定で全てＳＳＤに配置するのではなく、リブート／シャットダウン／ブートを契機として負荷が高いブロックだけを再配置するからである。
【００５２】
更に、本実施形態によれば、ストレージコスト全体の削減ができる。性能最適配置のために、全ての時間について、仮想マシンを構成する全てのブロックのＩ／Ｏを調査したのでは、メモリが多く必要であり、ストレージ装置全体のコストが上がってしまう。本実施形態では、Ｉ／Ｏ調査対象をＯＳイメージがある仮想ディスクファイルに限定し、調査期間もリブート／シャットダウン／ブートに絞る事で必要メモリ量を削減し、ストレージコストを削減できる。
【００５３】
更に、本実施形態では、調査期間や調査対象を絞り込む事でストレージの負荷増大を軽減しながら、リブート、ブート、シャットダウンに特化した性能最適化を行うことができる。
【００５４】
更に、ストレージ内部のブロック全てについて調査結果を保持するテーブルを用意したのでは、テーブルの容量が大きくなってしまうが、本実施形態では調査対象は仮想サーバのＯＳ領域だけに限定する事で、必要なテーブルサイズを抑えている。
【００５５】
更に、本実施形態では、仮想マシンのＯＳイメージとなる仮想ディスクファイルについて、Ｉ／Ｏ調査を行い、負荷の高いブロックだけをＳＳＤに配置のみならず、シャットダウン後、解放する事で効率的にＳＳＤを使用し、コストを削減することができる。
【００５６】
本実施形態では、Ｉ／Ｏのカウント部とＩ／Ｏの管理テーブルをハイパーバイザ上に配置したが、ストレージ上に配置する事もできる。
【００５７】
本実施形態では、カウント対象となる仮想マシンを、リブート、ブート、シャットダウン中の仮想マシンだけに絞り込んだが、ある仮想マシンがリブート、ブート、シャットダウン中に全ての仮想マシンについてＩ／Ｏを調査する事もできる。これにより、ある仮想マシンがリブート、ブート、シャットダウン中における他の仮想マシンへの影響についても調査する事ができる。
【００５８】
なお、上記のリブート高速化装置、ブート高速化装置、シャットダウン高速化装置は、ハードウェア、ソフトウェア又はこれらの組合わせにより実現することができる。また、上記のリブート高速化装置、ブート高速化装置、シャットダウン高速化装置によりそれぞれ行なわれるリブート高速化方法、ブート高速化方法、シャットダウン高速化方法も、ハードウェア、ソフトウェア又はこれらに組合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【００５９】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００６０】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６１】
（付記１）
第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化装置。
【００６２】
（付記２）
付記１に記載のリブート高速化装置であって、
前記入出力回数は、過去のリブート１回毎の平均の入出力回数であることを特徴とするリブート高速化装置。
【００６３】
（付記３）
付記１又は２に記載のリブート高速化装置であって、
記録するべき入出力回数を前記リブート時に計測することを特徴とするリブート高速化装置。
【００６４】
（付記４）
付記１乃至３の何れか１に記載のリブート高速化装置であって、
前記リブート及び入出力回数は、仮想マシン毎に管理されることを特徴とするリブート高速化装置。
【００６５】
（付記５）
付記１乃至４の何れか１に記載のリブート高速化装置であって、
前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーする手段と、
コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係が記録されているブロック対応テーブルと、
前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力する手段と、
リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させる手段と、
を備えることを特徴とするリブート高速化装置。
【００６６】
（付記６）
付記１乃至５の何れか１に記載のリブート高速化装置において、
前記リブートをブートに置き換えることにより得られるブート高速化装置。
【００６７】
（付記７）
付記１乃至５の何れか１に記載のリブート高速化装置において、
前記リブートをシャットダウンに置き換えることにより得られるシャットダウン高速化装置。
【００６８】
（付記８）
第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化方法。
【００６９】
（付記９）
付記８に記載のリブート高速化方法であって、
前記入出力回数は、過去のリブート１回毎の平均の入出力回数であることを特徴とするリブート高速化方法。
【００７０】
（付記１０）
付記８又は９に記載のリブート高速化方法であって、
記録するべき入出力回数を前記リブート時に計測することを特徴とするリブート高速化方法。
【００７１】
（付記１１）
付記８乃至１０の何れか１に記載のリブート高速化方法であって、
前記リブート及び入出力回数は、仮想マシン毎に管理されることを特徴とするリブート高速化方法。
【００７２】
（付記１２）
付記８乃至１１の何れか１に記載のリブート高速化方法であって、
前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーするステップと、
コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係をブロック対応テーブルに記録するステップと、
前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力するステップと、
リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させるステップと、
を有することを特徴とするリブート高速化方法。
【００７３】
（付記１３）
付記８乃至１２の何れか１に記載のリブート高速化方法において、
前記リブートをブートに置き換えることにより得られるブート高速化方法。
【００７４】
（付記１４）
付記８乃至１２の何れか１に記載のリブート高速化方法において、
前記リブートをシャットダウンに置き換えることにより得られるシャットダウン高速化方法。
【００７５】
（付記１５）
第１の記憶装置のブロックのうちのリブート時における記録されている入出力回数が所定値以上のブロックのみを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーし、リブート時において、第２の記憶装置にコピーがされているブロックについては、前記第２の記憶装置に対して入出力をすることを特徴とするリブート高速化装置としてコンピュータを機能させるためのプログラム。
【００７６】
（付記１６）
付記１５に記載のプログラムであって、
前記入出力回数は、過去のリブート１回毎の平均の入出力回数であることを特徴とするプログラム。
【００７７】
（付記１７）
付記１５又は１６に記載のプログラムであって、
記録するべき入出力回数を前記リブート時に計測することを特徴とするプログラム。
【００７８】
（付記１８）
付記１５乃至１７の何れか１に記載のプログラムであって、
前記リブート及び入出力回数は、仮想マシン毎に管理されることを特徴とするプログラム。
【００７９】
（付記１９）
付記１５乃至１８の何れか１に記載のプログラムであって、
前記リブート高速化装置は、
前記第１の記憶装置における各ブロックの識別情報とそのブロックに仮想ディスクファイルが記録されている仮想マシンの識別情報とリブートにおけるそのブロックに対する前記入出力回数との対応関係を保持するリブート入出力管理テーブルを参照することにより、前記第１の記憶装置のブロックであって、リブートする仮想マシンの仮想ディスクファイルが記録されているブロックのうち、前記入出力回数が所定値以上のブロックを前記第１の記憶装置よりも入出力時間が短い第２の記憶装置にコピーする手段と、
コピーがされているブロックについてのみ、前記第１の記憶装置におけるブロックの識別情報と前記第２の記憶装置におけるブロックの識別情報との対応関係が記録されているブロック対応テーブルと、
前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記ブロック対応テーブルに前記或るブロックに対応する第２の記憶装置におけるブロックが記録されているか否かを判断し、記録されていなければ前記第１の記憶装置の前記或るブロックに対して入出力し、記録されていれば、前記第１の記憶装置の前記或るブロックに対応した前記第２の記憶装置のブロックに対して入出力する手段と、
リブートが行なわれている期間に前記仮想マシンにより前記第１の記憶装置の或るブロックに対する入出力要求があった時に、前記リブート入出力管理テーブルの前記仮想マシンと前記或るブロックとの組合せに対応する入出力回数を増加させる手段と、
を備えることを特徴とするプログラム。
【００８０】
（付記２０）
付記１５乃至１９の何れか１に記載のプログラムにおいて、
前記リブートをブートに置き換えたことを特徴とするプログラム。
【００８１】
（付記２１）
付記１５乃至１９の何れか１に記載のプログラムにおいて、
前記リブートをシャットダウンに置き換えたことを特徴とするプログラム。
【符号の説明】
【００８２】
８  ブート判定部
９  測定完了部
１０  測定開始部
１１  仮想Ｉ／Ｏ（入出力）部
１２  カウント部
１３  仮想マシン管理テーブル
１４  仮想マシンブロック管理テーブル
１５  ブロックコピー部
１６  ブロック対応テーブル
１７  ＳＳＤデータ破棄部
１８  リブート部
２１  ブロック判定（リブート）部
２２  ブロック判定（ブート）部
２３  ブロック判定（シャットダウン）部
２４  リブートＩ／Ｏ管理テーブル
２５  ブートＩ／Ｏ管理テーブル
２６  シャットダウンＩ／Ｏ管理テーブル
【図１】
0005692590.tif 000002
【図２】
0005692590.tif 000003
【図３】
0005692590.tif 000004
【図４】
0005692590.tif 000005
【図５】
0005692590.tif 000006
【図６】
0005692590.tif 000007
【図７】
0005692590.tif 000008
【図８】
0005692590.tif 000009
【図９】
0005692590.tif 000010
【図１０】
0005692590.tif 000011
【図１１】
0005692590.tif 000012
【図１２】
0005692590.tif 000013
【図１３】
0005692590.tif 000014
【図１４】
0005692590.tif 000015
【図１５】
0005692590.tif 000016
【図１６】
0005692590.tif 000017
【図１７】
0005692590.tif 000018
【図１８】
0005692590.tif 000019
【図１９】
0005692590.tif 000020
【図２０】
0005692590.tif 000021
【図２１】
0005692590.tif 000022