(57)【特許請求の範囲】
【請求項１】
プライマリサーバのハイパーバイザ上に第１ファイルシステム仮想マシンを生成させ、前記第１ファイルシステム仮想マシンに所定のファイルシステムをインストールさせ、前記第１ファイルシステム仮想マシンに割当てられた仮想メモリに前記ファイルシステムに連携して動作するバッファキャッシュを配置させる処理を前記プライマリサーバに実行させ、
ユーザ仮想マシンを前記ハイパーバイザ上に生成させ、前記第１ファイルシステム仮想マシンの前記ファイルシステムを前記ユーザ仮想マシンが共有して使用するように設定させる処理を前記プライマリサーバに実行させ、
前記バッファキャッシュをスタンバイサーバのハイパーバイザ上に生成された第２ファイルシステム仮想マシンのバッファキャッシュに二重化することを前記プライマリサーバに実行させる、コンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項２】
前記第１ファイルシステム仮想マシンが前記バッファキャッシュをライトバック（ｗｒｉｔｅ−ｂａｃｋ）方式により管理することを前記プライマリサーバにさらに実行させる、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項３】
前記第２ファイルシステム仮想マシンは、
前記第１ファイルシステム仮想マシンを前記スタンバイサーバに二重化することによって生成されることを特徴とする、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項４】
前記バッファキャッシュを配置させることを前記プライマリサーバに実行させる際に、
前記ファイルシステムに割り当てられるリソースに対する情報の入力を受け、
前記リソースに対する情報によって前記第１ファイルシステム仮想マシンにリソースを割り当てることを前記プライマリサーバにさらに実行させる、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項５】
前記バッファキャッシュを配置させることを前記プライマリサーバに実行させる際に、
前記リソースに対する情報によって前記プライマリサーバの前記第１ファイルシステム仮想マシンに割当てられた仮想メモリのサイズ中、所定比率による格納領域を前記バッファキャッシュに割り当てることを前記プライマリサーバにさらに実行させる、請求項４に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項６】
前記プライマリサーバのハイパーバイザおよび前記スタンバイサーバのハイパーバイザは、各々ハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、
前記二重化することを前記プライマリサーバに実行させる際に、前記第１ファイルシステム仮想マシンのバッファキャッシュを前記第２ファイルシステム仮想マシンのバッファキャッシュに二重化することを前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールに実行させる、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項７】
前記二重化することを前記プライマリサーバに実行させる際に、
前記ユーザ仮想マシンからデータ書き込みコールが呼び出された場合、書き込み対象のデータを前記第１ファイルシステム仮想マシンのバッファキャッシュにロードさせる処理を前記プライマリサーバに実行させ、
前記書き込み対象のデータを前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールおよび前記スタンバイサーバのハイパーバイザのフォールトトレランスモジュールを経由し、前記第２ファイルシステム仮想マシンのバッファキャッシュにロードする処理を前記プライマリサーバ及び前記スタンバイサーバに実行させ、
前記第２ファイルシステム仮想マシンのバッファキャッシュにロードが完了した場合、
前記データ書き込みコールをリターンする処理を前記スタンバイサーバに実行させる、請求項６に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項８】
前記二重化することを前記プライマリサーバに実行させる際に、前記プライマリサーバに生成された前記ファイルシステム仮想マシンを前記スタンバイサーバに二重化することを前記スタンバイサーバに実行させる、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項９】
前記プライマリサーバ上に生成されたユーザ仮想マシンの数に応じて前記バッファキャッシュのサイズを調整することを前記プライマリサーバにさらに実行させる、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項１０】
前記プライマリサーバ上に生成されたユーザ仮想マシン全体が呼び出すデータ書き込みコールの呼び出し量に応じて前記バッファキャッシュのサイズを調整することを前記プライマリサーバにさらに実行させる、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項１１】
前記第１ファイルシステム仮想マシンが前記プライマリサーバのＩ／Ｏ発生量およびバッファキャッシュ使用量のうち少なくとも一つを基準として前記バッファキャッシュにロードされたデータがフラッシュするように前記プライマリサーバのハイパーバイザに要請することを前記プライマリサーバにさらに実行させる、請求項１に記載のコンピュータプログラムが記録されたコンピュータで判読可能な記録媒体。
【請求項１２】
プライマリサーバを前記プライマリサーバのフォールトトレランスパートナーであるスタンバイサーバに二重化する方法において、
前記プライマリサーバのハイパーバイザ上に生成されるユーザ仮想マシンがアウトソーシングするファイルシステムを提供する第１ファイルシステム仮想マシンを、前記プライマリサーバが生成するステップと、
前記スタンバイサーバのハイパーバイザ上に二重化される前記ユーザ仮想マシンがアウトソーシングする前記ファイルシステムを提供する第２ファイルシステム仮想マシンを、前記スタンバイサーバが生成するステップ、および
前記第１ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュ（ｂｕｆｆｅｒ  ｃａｃｈｅ）を前記第２ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュに二重化することを、前記プライマリサーバが実行するステップを含む、ハイパーバイザベースの二重化方法。
【請求項１３】
前記プライマリサーバのハイパーバイザおよび前記スタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、
前記二重化することを前記プライマリサーバが実行するステップは、前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールが前記第１ファイルシステム仮想マシンのバッファキャッシュを前記第２ファイルシステム仮想マシンに二重化するステップを含む、請求項１２に記載のハイパーバイザベースの二重化方法。
【請求項１４】
前記第１ファイルシステム仮想マシンと第２ファイルシステム仮想マシンがそれぞれの仮想メモリ上に前記バッファキャッシュを配置するステップをさらに含む請求項１２に記載のハイパーバイザベースの二重化方法。
【請求項１５】
前記プライマリサーバのハイパーバイザおよび前記スタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、
前記二重化することを前記プライマリサーバが実行するステップは、
前記プライマリサーバのハイパーバイザのフォールトトレランスモジュールが前記第１ファイルシステム仮想マシンの仮想メモリを前記スタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して前記第２ファイルシステム仮想マシンの仮想メモリに二重化することによって前記バッファキャッシュを二重化するステップを含む請求項１４に記載のハイパーバイザベースの二重化方法。
【請求項１６】
前記第１ファイルシステム仮想マシンのバッファキャッシュにロードされたデータがフラッシュする前に失われたことを前記プライマリサーバが感知するステップと、
前記プライマリサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を前記プライマリサーバが非活性化し、前記スタンバイサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を前記スタンバイサーバが活性化するステップをさらに含む請求項１４に記載のハイパーバイザベースの二重化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体に関するものである。より詳細にはハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）上に一つ以上の仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）が生成されたサーバを二重化することにおいて、仮想マシンのファイル入出力コールを呼び出す際、その応答速度を速めるサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体に関するものである。
【背景技術】
【０００２】
従来、サーバ二重化とは、一つのデータを共有ストレージに格納し、２台以上のサーバのうち一台でアプリケーションを駆動中に該当サーバで障害が発生すると、待機中のサーバのアプリケーションを稼動させ、サービスを引き継がせる方式を意味する。この際、障害の発生時点から待機中のサーバでのアプリケーションの稼動準備が完了する時点までの間にサービス中断が発生する問題があった。
【０００３】
このため、データだけではなく、ＣＰＵ、メモリ、ネットワーク装置まで二重化するフォールトトレランス（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｃｅ、ＦＴ）技術が提供されている。データとＣＰＵの内容まで二重化するので全てのサーバでアプリケーションを稼動させてサービスを行うことができる。このようなフォールトトレランス技術は、フォールトトレランスのためのハードウェアモジュールを利用してリアルタイムで二重化を行う方式、または、ハイパーバイザベースの二重化方式が試みられている。ハードウェアベースの二重化方式は、優れた性能を有する反面、二重化にはファームウェアレベルの制御が必要であるため、高費用のハードウェアを備えなければならない問題点があった。
【０００４】
図１は、従来技術によるハイパーバイザベースのフォールトトレランス技術が適用されたシステムの構成を示す図である。ハイパーバイザ技術が提供されることにより、一つの物理的なサーバに複数の仮想マシンが生成され、複数の仮想サーバを提供できるようになった。このような技術は例えば、クラウドコンピューティング分野に適用することができる。例えばクラウドコンピューティングサービスのユーザは、サービス管理者が提供する物理的なサーバ装置にユーザの必要に応じるリソースの割当を受けた仮想マシンを設けることによって、サーバ管理費用を節減することができる。このようなサービス管理者に
高可用性（Ｈｉｇｈ  Ａｖａｉｌａｂｉｌｉｔｙ：ＨＡ）のシステムを提供するため、ハイパーバイザベースのフォールトトレランス技術が提供されている。
【０００５】
図１に図示するように、ハイパーバイザベースのフォールトトレランス技術は、ハイパーバイザレベルで仮想資源を二重化することによって、プライマリサーバ（ＰＲＩＭＡＲＹ  ＳＥＲＶＥＲ）がスタンバイサーバ（ＳＴＡＮＤＢＹ  ＳＥＲＶＥＲ）に二重化される効果を奏する。すなわち、ハイパーバイザベースのフォールトトレランス技術が適用されたシステムは、プライマリサーバおよびスタンバイサーバのハイパーバイザに備えられたＦＴモジュールが、両ハイパーバイザが管理する仮想資源を同期化する。前記仮想資源は、例えば仮想ＣＰＵのレジスタ値、仮想メモリのデータ、仮想ストレージのデータなどが含まれるとよい。
【０００６】
しかし、ハイパーバイザベースのフォールトトレランス技術は、仮想資源の同期化作業に時間を要するため、特に動作速度が遅いストレージ装置の同期化が必要な作業の場合、カーネルサービス関数のリターンに要する時間が長い問題点がある。これについて図２を参照して詳細に説明する。
【０００７】
図２は、プライマリサーバで動作する仮想マシン（Ｐｒｉｍａｒｙ：ＶＭ）で動作するアプリケーションの実行中にデータ書き込みコールが呼び出される場合、ハイパーバイザベースのフォールトトレランス技術が適用されたシステムのデータ書き込みコールの実行動作を示す信号流れ図である。
【０００８】
先に、仮想マシン（Ｐｒｉｍａｒｙ：ＶＭ）が、プライマリサーバのハイパーバイザ（Ｐｒｉｍａｒｙ  Ｈｙｐｅｒｖｉｓｏｒ）にデータ書き込みを要請すると、プライマリサーバのハイパーバイザに備えられたＦＴモジュールはスタンバイサーバのハイパーバイザ（Ｓｔａｎｄｂｙ  Ｈｙｐｅｒｖｉｓｏｒ）のＦＴモジュールに同期化（Ｓｙｎｃ）を要請する。スタンバイサーバのハイパーバイザは前記同期化要請信号を受け、スタンバイサーバの仮想マシン（Ｓｔａｎｄｂｙ：ＶＭ）にアップデートを要請する。
【０００９】
スタンバイサーバの仮想マシンは、プライマリサーバの仮想マシンで動作するアプリケーションがデータ書き込みコールを呼び出したことを再演する。すなわち、スタンバイサーバの仮想マシンはスタンバイサーバのハイパーバイザにデータ書き込みを要請し、スタンバイサーバのハイパーバイザはスタンバイサーバのストレージ（Ｓｔａｎｄｂｙ  ＨＤＤ）に実際にデータを書き込む。スタンバイサーバのストレージにデータが書き込まれた後、スタンバイサーバの仮想マシンは前記アップデートをリターンする（Ｕｐｄａｔｅ＿Ａｃｋ）。そして、スタンバイサーバのハイパーバイザは前記同期化要請をリターンする（Ｓｙｎｃ＿Ａｃｋ）。
【００１０】
その後、プライマリサーバのハイパーバイザはプライマリサーバのストレージにも物理的にデータを書き込む。プライマリサーバのストレージに対するデータ書き込みが完了した後に、最終的にプライマリサーバの仮想マシンからのデータ書き込みコールの呼び出しはリターンされる。
【００１１】
図２に図示するように、ハイパーバイザベースのＦＴ技術が適用されたシステムは、特に低速のストレージ装置の同期化が伴われる作業の場合、速度が低減する問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明が解決しようとする技術的課題は、ストレージ装置に対するデータ入出力動作速度を向上させるハイパーバイザベースのサーバ二重化システムを提供するものである。
【００１３】
本発明が解決しようとする他の技術的課題は、ストレージ装置に対するデータ入出力動作速度を向上させるハイパーバイザベースのサーバ二重化方法を提供するものである。
【００１４】
本発明が解決しようとするまた他の技術的課題は、ストレージ装置に対するデータ入出力動作速度を向上させるハイパーバイザベースのサーバ二重化方法を実行するコンピュータプログラムが記録されたコンピュータで判読可能な記憶媒体を提供するものである。
【００１５】
本発明が解決しようとするまた他の技術的課題は、データ入出力速度が向上した仮想マシン提供システムを提供するものである。
【００１６】
本発明の技術的課題は、以上で言及した技術的課題に制限されず、言及されていないまた他の技術的課題は次の記載から当業者に明確に理解され得る。
【課題を解決するための手段】
【００１７】
前述された技術的課題を解決するための本発明の一実施形態によるコンピュータで判読可能な記録媒体は、コンピュータプログラムを記録する。前記コンピュータプログラムは、プライマリサーバのハイパーバイザ上に第１ファイルシステム仮想マシンを生成し、前記第１ファイルシステム仮想マシンに所定のファイルシステムをインストールし、前記第１ファイルシステム仮想マシンに割当てられた仮想メモリに前記ファイルシステムに連携して動作するバッファキャッシュ（ｂｕｆｆｅｒ  ｃａｃｈｅ）を配置し、ユーザの要請によって生成されるユーザ仮想マシンを前記ハイパーバイザ上に生成し、前記第１ファイルシステムの前記ファイルシステムを前記ユーザ仮想マシンが共有して使用するように設定し、前記バッファキャッシュをスタンバイサーバのハイパーバイザ上に生成された第２ファイルシステム仮想マシンのバッファキャッシュに二重化することを実行する。
【００１８】
本発明の他の実施形態によるハイパーバイザベースの二重化方法は、前記プライマリサーバのハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）上に生成されるユーザ仮想マシンが共有するファイルシステムを提供する第１ファイルシステム仮想マシンを生成するステップと、前記スタンバイサーバのハイパーバイザ上に二重化される前記ユーザ仮想マシンがアウトソーシングする前記ファイルシステムを提供する第２ファイルシステム仮想マシンを生成するステップ、および前記第１ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュを前記第２ファイルシステム仮想マシンが前記ファイルシステムと連携して管理するバッファキャッシュに二重化するステップを含む。
【００１９】
本発明のまた他の実施形態によるサーバ二重化システムは、ハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザと第１ファイルシステム仮想マシンを含むプライマリサーバと、前記プライマリサーバのハイパーバイザに備えられたフォールトトレランスモジュールとデータを送受信して前記プライマリサーバを二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザを含む第１スタンバイサーバを含む。このとき、前記第１ファイルシステム仮想マシンは、前記プライマリサーバのハイパーバイザ上に生成されるユーザ仮想マシンが共有する第１ファイルシステムを提供し、前記第１ファイルシステムと連携して使用されるバッファキャッシュを前記第１ファイルシステム仮想マシンに割当てられた仮想メモリ上に配置する。また、前記第１ファイルシステム仮想マシンは、前記プライマリサーバのハイパーバイザベースのフォールトトレランスモジュールと前記スタンバイサーバのハイパーバイザベースのフォールトトレランスモジュールを利用して前記スタンバイサーバに二重化される。
【００２０】
本発明のまた他の実施形態によるサーバ二重化システムは、ハイパーバイザベースのフォールトトレランスモジュールを備える第１ハイパーバイザと前記第１ハイパーバイザ上に生成されたファイルシステム仮想マシンを含むプライマリファイルサーバと、ハイパーバイザベースのフォールトトレランスモジュールを備える第２ハイパーバイザと前記第２ハイパーバイザ上に生成されたユーザ仮想マシンを含むプライマリサービスサーバと、前記第１ハイパーバイザに備えられたフォールトトレランスモジュールとデータを送受信して前記プライマリファイルサーバを二重化するハイパーバイザベースのフォールトトレランスモジュールを備える第３ハイパーバイザを含むスタンバイファイルサーバと、前記第２ハイパーバイザに備えられたフォールトトレランスモジュールとデータを送受信して前記プライマリサービスサーバを二重化するハイパーバイザベースのフォールトトレランスモジュールを備える第４ハイパーバイザを含むスタンバイサービスサーバを含むことができる。このとき、前記ファイルシステム仮想マシンは、前記第２ハイパーバイザ上に生成されたユーザ仮想マシンがアウトソーシングするファイルシステムを提供し、前記ファイルシステムと連携して使用されるバッファキャッシュを前記第１ファイルシステム仮想マシンに割当てられた仮想メモリ上に配置する。前記ファイルシステム仮想マシンは、前記第１ハイパーバイザのフォールトトレランスモジュールと前記第３ハイパーバイザのフォールトトレランスモジュールを利用して前記スタンバイファイルサーバに二重化される。前記ユーザ仮想マシンは、前記第２ハイパーバイザのフォールトトレランスモジュールと前記第４ハイパーバイザのフォールトトレランスモジュールを利用して前記スタンバイサービスサーバに二重化される。
【発明の効果】
【００２１】
前述のような本発明によれば、ハイパーバイザ上に一つ以上の仮想マシンが生成されたサーバを二重化することにおいて、仮想マシンのファイル入出力コールの呼び出しの際、その応答速度を速める効果がある。
【００２２】
また、ハイパーバイザ上の資源中、最も応答速度（性能）が低いディスク作業をファイルシステム仮想マシンで統合管理することができる。すなわち、ハイパーバイザ上の全ての仮想マシンのディスクＩ／Ｏ作業をスケジューリングし、ボトルネック現象を除去することによって全体仮想マシンの性能を向上させる効果がある。
【００２３】
また、ファイルシステム仮想マシンを他の物理サーバに分離して構成する場合、ディスク性能が良い物理サーバにはファイルシステム仮想マシンを構築し、ＣＰＵおよびメモリの性能が良い物理サーバにはユーザ仮想マシンを構築して性能向上だけではなく、特性に合う製品を選択することによってコストの面でメリットが得られる効果がある。
【００２４】
また、一つの物理サーバに複数台の仮想マシンでフォールトトレランスソリューションを使用する環境でそれぞれの仮想マシンに互いに異なるファイルシステムを利用しながらもＩ／Ｏ性能を向上させる効果がある。
【００２５】
また、既存のハイパーバイザおよびフォールトトレランスソリューションをベースにし、大きく構成を変更しなくても本発明を実現できる効果がある。
【００２６】
また、低価のＲＡＭを利用してバッファキャッシュを実現できる効果がある。
【図面の簡単な説明】
【００２７】
【図１】従来技術によるハイパーバイザベースのフォールトトレランスサーバ二重化システムの構成図である。
【図２】図１に図示するハイパーバイザベースのフォールトトレランスサーバ二重化システムでデータ書き込み処理の信号流れ図である。
【図３】本発明の一実施形態による仮想マシン提供システムのブロック構成図である。
【図４】図３に図示する仮想マシン提供システムでデータ書き込み処理動作を示す概念図である。
【図５】図３に図示するファイルシステム仮想マシンのブロック構成図である。
【図６】図３に図示するファイルシステム仮想マシンが二つの仮想マシンにファイルシステムを提供することを示す概念図である。
【図７】図３に図示するファイルシステム仮想マシンが二つの仮想マシンに互いに異なるファイルシステムを提供することを示す概念図である。
【図８】本発明の一実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。
【図９】図８に図示するハイパーバイザベースのサーバ二重化システムでデータ書き込み処理の信号流れ図である。
【図１０】本発明の他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。
【図１１】図１０に図示するハイパーバイザベースのサーバ二重化システムのリカバリ（ｒｅｃｏｖｅｒｙ）動作を説明するための概念図である。
【図１２】本発明のまた他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。
【図１３】本発明の一実施形態によるハイパーバイザベースのサーバ二重化方法のフローチャートである。
【図１４】本発明の一実施形態によるハイパーバイザベースのサーバ二重化方法のフローチャートである。
【発明を実施するための形態】
【００２８】
以下、添付する図面を参照して本発明の好ましい実施形態について詳細に説明する。本発明の利点及び特徴、これらを達成する方法は、添付する図面と共に詳細に後述する実施例を参照すると明確になるであろう。しかし、本発明は、以下で開示する実施例に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施例は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範囲によってのみ定義される。明細書全体にかけて、同一参照符号は同一構成要素を指称する。
【００２９】
他に定義されなければ、本明細書で使用されるすべての用語（技術及び科学的用語を含む）は、本発明が属する技術分野で通常の知識を有する者に共通に理解できる意味で使用される。また一般的に使用される辞書に定義されている用語は、特別に定義して明らかにしない限り、理想的にまたは過度に解釈されない。
【００３０】
本明細書で使用された用語は、実施例について説明するためであり、本発明を制限しようとするものではない。本明細書で、単数型は特別に言及しない限り複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ及びｃｏｍｐｒｉｓｉｎｇ）」は言及された構成要素の他、一つ以上の他の構成要素の存在または追加を排除しない。
【００３１】
以下、本発明の実施形態によって本発明について説明する。このとき、フローチャートの各ブロックとフローチャートの組み合わせは、コンピュータプログラムインストラクションにより実行可能なのが理解できるであろう。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサに搭載されうるので、コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサを通じて実行されるそのインストラクションがフローチャートのブロックで説明された機能を行う手段を生成するように機構を作ることができる。これらコンピュータプログラムインストラクションは、特定方式で機能を具現化するためにコンピュータまたはその他のプログラマブルデータプロセッシング装備を指向できるコンピュータが利用可能なまたはコンピュータが判読可能なメモリに保存されることも可能である。したがって、そのコンピュータ利用可能またはコンピュータ判読可能メモリに保存されたインストラクションは、フローチャートのブロックで説明された機能を行うインストラクション手段を内包する製造品目によって生産されてもよい。コンピュータプログラムインストラクションは、コンピュータまたはその他のプログラマブルデータプロセッシング装備上に搭載することも可能なので、コンピュータまたはその他のプログラマブルデータプロセッシング装備上で一連の動作段階が実行されてコンピュータで実行されるプロセスを生成し、フローチャートのブロックで説明された機能を実行してもよい。
【００３２】
本明細書で使用される「部」または「モジュール」という用語はソフトウェアまたはＦＰＧＡまたはＡＳＩＣのようなハードウェアの構成要素を意味し、「部」または「モジュール」はある役割を果たす。しかし、「部」または「モジュール」はソフトウェアまたはハードウェアに限定される意味ではない。「部」または「モジュール」はアドレッシングできる格納媒体内で構成されてもよく、１つまたはそれ以上のプロセッサを実行させるようにも構成されてもよい。したがって、一例として「部」または「モジュール」はソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素及びタスク構成要素などのように構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数を含む。構成要素などと「部」または「モジュール」の中で提供される機能はさらに小さな類似構成要素及びモジュールに結合されてもよく、追加的な構成要素などと「部」または「モジュール」にさらに分離されてもよい。
【００３３】
本発明の一実施形態による仮想マシン提供システムについて、図３ないし７を参照して説明する。図３に図示するように本実施形態による仮想マシン提供システムは、一台のプライマリサーバ１００形態で構成されてもよい。本実施形態による仮想マシン提供システムは、ファイルシステム仮想マシン（Ｆｉｌｅ  Ｓｙｓｔｅｍ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、ＦＳ  ＶＭ）１４０、ハイパーバイザ１１０、およびハードウェア１３０を含むことができる。ファイルシステム仮想マシン１４０およびハイパーバイザ１１０は、ハードウェア１３０上で実現されるソフトウェア構成要素であってもよい。
【００３４】
ファイルシステム仮想マシン１４０は、ハイパーバイザ１１０と連携して動作するシステム領域の仮想マシンである。ファイルシステム仮想マシン１４０は、ハイパーバイザ１１０を介してプライマリサーバ１００のハードウェア１３０に含まれたリソース（１３１，１３２，１３３）として仮想リソース（１１１，１１２，１１３）の形態で提供される。ファイルシステム仮想マシン１４０は、ファイルシステムモジュール１４２を含む。ファイルシステムモジュール１４２は、仮想ストレージ装置１１１と連携して動作する。ファイルシステムモジュール１４２は、仮想メモリ１１２内に配置されたバッファキャッシュ１４１をファイルシステムモジュール１４２と連携して使用する。
【００３５】
ファイルシステムモジュール１４２は、バッファキャッシュ１４１をライトバックキャッシュ（ｗｒｉｔｅ−ｂａｃｋ  ｃａｃｈｅ）の形態で運用することができる。例えば、ファイルシステムモジュール１４２は、データ書き込みコールが呼び出された場合、書き込み対象のデータを直接にストレージ装置１３１に物理的に格納するように要請するのではなく、書き込み対象のデータをバッファキャッシュ１４１にロードし、書き込み対象のデータをリターンすることができる。したがって、ファイルシステムモジュール１４２を使用すると、データ書き込み処理にかかる時間を短縮することができる。
【００３６】
バッファキャッシュ１４１にロードされた書き込み対象のデータは、バッファキャッシュ１４１のフラッシング（ｆｌｕｓｈｉｎｇ）する時点に仮想ストレージ装置１１１に記録されるとよい。ハイパーバイザ１１０は、仮想ストレージ装置１１１に記録されたデータをストレージ装置１３１に物理的に記録する。
【００３７】
ユーザ仮想マシン（ＵＳＥＲ  ＶＭ）１２０も、ハイパーバイザ１１０上に生成される仮想マシンである。ユーザ仮想マシン１２０は、ユーザの要請またはその他必要に応じて生成される仮想マシンであり、システム領域の仮想マシンのファイルシステム仮想マシン１４０とは異なる。例えば、プライマリサーバ１００は、外部制御装置などの制御により、ユーザ仮想マシン１２０をハイパーバイザ１１０上に生成することができる。ユーザ仮想マシン１２０は、ハイパーバイザ１１０を介して、プライマリサーバ１００のハードウェア１３０リソースのうち少なくとも一部の割り当てを受けることができる。
【００３８】
ユーザ仮想マシン１２０で実行されるユーザアプリケーションは、ユーザ仮想マシン１２０に割当てられた仮想リソースを利用して実行される。
【００３９】
本実施形態によれば、ハイパーバイザ１１０上に生成されるユーザ仮想マシン１２０は、ファイルシステム仮想マシン１４０に備えられたファイルシステムモジュール１４２をアウトソーシング（ｏｕｔｓｏｕｒｃｉｎｇ）して使用する。例えば、ユーザ仮想マシン１２０は、ファイルシステム仮想マシン１４０に備えられたファイルシステムモジュール１４２をネットワークドライブなどの形態でマウント（ｍｏｕｎｔ）して使用することができる。
【００４０】
一方、ユーザ仮想マシン１２０はファイルシステム仮想マシン１４０に備えられたファイルシステムモジュール１４２を他のユーザ仮想マシン１２０と共有するとも解釈できることから、ユーザ仮想マシン１２０がファイルシステム仮想マシン１４０のファイルシステムを共有すると見ることもできる。
【００４１】
ファイルシステムモジュール１４２はバッファキャッシュ１４１を利用して迅速なデータ書き込み機能を提供するため、本実施形態は、生成されるユーザ仮想マシン１２０がファイルシステムモジュール１４２を使用するように強制することによって、データ書き込み速度を増加させることができる効果がある。
【００４２】
図４は、ファイルシステムモジュール１４２をアウトソーシングするユーザ仮想マシン１２０で実行されるユーザアプリケーション１２２がデータライト関数を呼び出す場合、関数がリターンされるときまでの流れを示す。
【００４３】
先に、ユーザアプリケーション１２２がデータライト関数を呼び出す場合、ファイルシステム仮想マシン１４０のファイルシステムモジュール１４２から提供する低レベルの書き込みコール（ｗｒｉｔｅ  ｃａｌｌ）が呼び出される。ファイルシステムモジュール１４２は書き込み対象のデータをバッファキャッシュ１４１にロードするだけであり、直ちに低レベルの書き込みコールをリターンする。バッファキャッシュ１４１は仮想メモリ１１２上に位置するため、バッファキャッシュ１４１へのローティングはメモリにロードする作業を意味する。したがって、バッファキャッシュ１４１に高速でデータのローティングを行うことができる。結果的に、ファイルシステムモジュール１４２を利用してデータを書き込むことは、ユーザ仮想マシン１２０がハイパーバイザ１１０を介して直接にデータを書き込むことに比べ、高速で行われる。
【００４４】
一実施形態によれば、ハイパーバイザ１１０上に生成されるユーザ仮想マシン１２０は、使用拡張性のためにファイルシステム仮想マシン１４０に備えられたファイルシステムモジュール１４２以外に別途のファイルシステムを実現して使用することもできる。
【００４５】
バッファキャッシュ１４１は、一般的な用途のキャッシング機能も果たすため、読み込まれた（ｒｅａｄ）ことがあるデータが再び読み込まれる場合、読み込み速度も増加させる効果がある。したがって、本実施形態による仮想マシン提供システム１００は、ユーザ仮想マシン１２０のデータ入出力をファイルシステム仮想マシン１４０のファイルシステムモジュール１４２を介して一括処理することによって速度を増加させることができる効果がある。
【００４６】
以下、図５を参照して、ファイルシステム仮想マシン１４０の構成についてより詳細に説明する。
【００４７】
先に、ファイルシステム仮想マシン１４０もハイパーバイザ１１０上で動作する仮想マシンであるため、ファイルシステム仮想マシン１４０はハイパーバイザ１１０とのインターフェースのためのハイパーバイザインターフェース１４４を含む。ファイルシステム仮想マシン１４０はハイパーバイザインターフェース１４４を介してファイルシステム仮想マシン１４０に割当てられた仮想リソースを使用することができる。
【００４８】
前述したように、ファイルシステム仮想マシン１４０はファイルシステムモジュール１４２を含む。ファイルシステムモジュール１４２は、ファイルシステム仮想マシン１４０に割当てられた仮想ＣＰＵで実行されるソフトウェア構成要素であるとよい。ファイルシステムモジュール１４２はファイルシステム仮想マシン１４０に割当てられた仮想メモリ１１２に位置したバッファキャッシュ１４１と連携して動作する。
【００４９】
ファイルシステム仮想マシン１４０はバッファキャッシュマネージャ１４３をさらに含むことができる。バッファキャッシュマネージャ１４３も、ファイルシステム仮想マシン１４０に割当てられた仮想ＣＰＵで実行されるソフトウェア構成要素であってもよい。バッファキャッシュマネージャ１４３は、バッファキャッシュのフラッシングを制御することができる。例えば、バッファキャッシュマネージャ１４３はハイパーバイザインターフェース１４４からプライマリサーバ１４０全体の入出力動作の負荷に対するデータの提供を受け、その負荷量に基づいてフラッシングの実行可否を制御することができる。バッファキャッシュマネージャ１４３がバッファキャッシュのデータローティング量をさらに考慮してフラッシングの実行可否を制御することはもちろんである。
【００５０】
ファイルシステム仮想マシン１４０は、二つ以上のユーザ仮想マシン（１２００，１２１０）にそれぞれのファイルシステムを提供することができる。
【００５１】
ユーザ仮想マシン（１２００，１２１０）は各々専用ファイルシステムを持たなければならない。このような要求を満たすため、ファイルシステム仮想マシン１４０は、ハイパーバイザ１１０を介して提供された仮想ストレージ１１１を複数の仮想ボリューム（ｖｏｌｕｍｅ）に分割し、各仮想ボリュームにマウントされたファイルシステムをそれぞれのユーザ仮想マシン（１２００，１２１０）に提供することができる。
【００５２】
図６に図示するように、ユーザ仮想マシンＡ１２００は、仮想ボリュームＡ１１１０にマウントされたファイルシステム１４２０をアウトソーシングし、ユーザ仮想マシンＢ１２１０は仮想ボリュームＢ１１１１にマウントされたファイルシステム１４２１をアウトソーシングすることができる。
【００５３】
図６に図示するように、仮想ボリュームＡ１１１０および仮想ボリュームＢ１１１１は互いに重ならない格納領域を有する。すなわち、ファイルシステム仮想マシン１４０はユーザ仮想マシンＡ１２００およびユーザ仮想マシンＢ１２１０に互いにデータ入出力の影響を受けない独立的な仮想ストレージボリュームを提供する。
【００５４】
図６には２個のユーザ仮想マシンのみを図示するが、実施形態により一つ以上のユーザ仮想マシンがさらに生成されてもよく、ユーザ仮想マシンが新たに生成される度に残余仮想ストレージにボリュームが割り当てられ、割当てられたボリューム上に新規ファイルシステムがマウントされ、新たに生成されたユーザ仮想マシンにアウトソーシングの形態で提供されてもよい。
【００５５】
一方、本実施形態によるファイルシステム仮想マシン１４０は、互いに異なる種類のファイルシステムを提供することもできる。図７に図示するように、ユーザ仮想マシンＡ１２００は、仮想ボリュームＡ１１１０上にマウントされたファイルシステムＸをアウトソーシングし、ユーザ仮想マシンＢ１２１０は仮想ボリュームＢ１１１１上にマウントされたファイルシステムＹをアウトソーシングすることができる。例えば、ファイルシステム仮想マシン１４０はＦＡＴ３２，ＮＴＦＳ、ｅｘｔ２，ｒａｉｓｅｒＦＳ、ｅｘｔ３などの公知されたファイルシステムのうち一つ以上を使用することができる。
【００５６】
以下、本発明の他の実施形態によるハイパーバイザベースのサーバ二重化システムについて図８ないし９を参照して説明する。
【００５７】
図８に図示するように、本実施形態によるハイパーバイザベースのサーバ二重化システムは、プライマリサーバ１００およびスタンバイサーバ２００を含み構成されるとよい。スタンバイサーバ２００は、プライマリサーバ１００に障害が発生しても安全な環境で動作しなければならないため、他のラック（Ｒａｃｋ）に設置されるか、または他のサーバの運用場所に位置する方が好ましい。
【００５８】
図８に図示するプライマリサーバ１００は、図３ないし７を参照して説明したプライマリサーバ１００に基づく構成であるため、以下で説明するような追加構成を有する。すなわち、本実施形態によるハイパーバイザベースのサーバ二重化システムに含まれたプライマリサーバ１００は、図３ないし７を参照して説明したプライマリサーバ１００の構成および動作をそのまま実行するが、これに加えて二重化に関する動作を実行する。
【００５９】
先ず、追加構成は、ハイパーバイザ１１０がフォールトトレランスモジュール１１４をさらに含む。プライマリサーバ１００のフォールトトレランスモジュール１１４はスタンバイサーバ２００のフォールトトレランスモジュール２１４とプライマリサーバ１００およびスタンバイサーバ２００それぞれのネットワークインターネットカード（１３４，２３４）を介して連動してプライマリサーバ１００の仮想リソース（１１１，１１２，１１３）がスタンバイサーバの仮想リソース（２１１，２１２，２１３）に二重化されるようにする。
【００６０】
次に、バッファキャッシュマネージャ１４３が追加機能を実行する。バッファキャッシュマネージャ１４３は、バッファキャッシュ１４１のフラッシュに関する制御の他にも、バッファキャッシュ１４１にロードされたデータにアップデートが発生した場合、ハイパーバイザインターフェース１４４および仮想マシンインターフェース１１５を介してプライマリサーバ１００のフォールトトレランスモジュール１１４にアップデートを要請する機能を追加して実行する。
【００６１】
図９を参照して、本実施形態によるハイパーバイザベースのサーバ二重化システムがプライマリサーバ１００のユーザ仮想マシン１２０で実行されるユーザアプリケーション１２２が要請したデータ書き込み動作を処理する。以下ではその手順について説明する。
【００６２】
先に、ユーザアプリケーション１２２が呼び出したデータライト関数はファイルシステム仮想マシン１４０に転送され、ファイルシステムモジュール１４２はバッファキャッシュ１４１に書き込み対象のデータをロードする。ローティングは、バッファキャッシュ１４１領域として指定されたメモリ領域に書き込み対象のデータをロード（ｌｏａｄ）することであるとよい。バッファキャッシュマネージャ１４３はバッファキャッシュ１４１をモニタリングしてローティングを感知するか、またはファイルシステムモジュール１４２からローティングの通知を受けることができる。
【００６３】
バッファキャッシュマネージャ１４３は、ローティングを感知するか、または通知を受けると、ハイパーバイザインターフェース１４４および仮想マシンインターフェース１１５を介してプライマリサーバ１００のフォールトトレランスモジュール１１４にロードされた書き込み対象のデータのアップデートを要請することができる。
【００６４】
要請を受けたプライマリサーバ１００のフォールトトレランスモジュール１１４は、スタンバイサーバ２００のフォールトトレランスモジュール２１４に同期化を要請し、スタンバイサーバ２００のフォールトトレランスモジュールは仮想メモリ１１２のバッファキャッシュ１４１領域に含まれたデータのアップデート分を反映させる方式によりプライマリサーバ１００のバッファキャッシュ１４１にロードされたデータをスタンバイサーバ２００のバッファキャッシュ２４１に二重化する。
【００６５】
二重化が完了すると、スタンバイサーバ２００のフォールトトレランスモジュール２１４、プライマリサーバ１００のフォールトトレランスモジュール１１４、プライマリサーバ１００のファイルシステムモジュール１４２を経てプライマリサーバ１００のユーザ仮想マシン１２０で実行されるユーザアプリケーション１２２に再びコントロールが返還される。
【００６６】
本実施形態によれば、プライマリサーバ１００およびスタンバイサーバ２００で二回だけバッファキャッシュにデータをロードすれば良いため、データ書き込みを迅速に実行できる効果がある。また、プライマリサーバ１００のバッファキャッシュ１４１に書き込み対象のデータがロードされ次第、スタンバイサーバ２００のバッファキャッシュ２４１にも書き込み対象のデータがロードされ、バッファキャッシュ（１４１，２４１）にロードされた書き込み対象のデータはバッファキャッシュマネージャ（１４３，２４３）が適切な時点にストレージ装置（１３１，２３１）に物理的な書き込みをするため、プライマリサーバ１００のストレージ装置１３１に格納されたデータが安全にスタンバイサーバ２００のストレージ装置２３１にも格納される効果がある。
【００６７】
図１０は、本発明の他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。図１０に図示するように、本実施形態によるハイパーバイザベースのサーバ二重化システムはプライマリサーバ１００、第１スタンバイサーバ２００および第２スタンバイサーバ３００を含む。すなわち、図１０に図示するシステムは、図９に図示するシステムに比べ、一つのスタンバイサーバ３００をさらに含む。通常は、プライマリサーバ１００のリソースは、第１スタンバイサーバ２００に二重化され、また第２スタンバイサーバ３００にも二重化される。第２スタンバイサーバ３００は、プライマリサーバ１００を二重化するか、または第１スタンバイサーバ２００を二重化することができる。すなわち、第２スタンバイサーバ３００は、プライマリサーバ１００のハイパーバイザ１１０に備えられたフォールトトレランスモジュール１１４とデータを送受信してプライマリサーバ１００を二重化するか、または第１スタンバイサーバ２００のハイパーバイザ２１０に備えられたフォールトトレランスモジュール２１４とデータを送受信して第１スタンバイサーバ２００を二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザを含むことができる。
【００６８】
図１１は、図１０に図示するハイパーバイザベースのサーバ二重化システムのリカバリ動作を説明するための概念図である。図１１に図示するように、プライマリサーバ１００に障害が発生した場合、第１スタンバイサーバ２００はプライマリサーバ１００を復元する動作を実行し、復元する間には第２スタンバイサーバ３００がサービスを提供することによって、端末４００はプライマリサーバ１００に障害が発生しても速度低下やサービス中断が起こらず、サービスの提供を受けることができる。すなわち、プライマリサーバ１００に障害が発生する場合、プライマリサーバ１００のユーザ仮想マシン全体１２０を非活性化し、第２スタンバイサーバ３００のユーザ仮想マシン３２０全体を活性化し、第１スタンバイサーバ２００をプライマリサーバ１００に二重化することができる。
【００６９】
図１２は本発明のまた他の実施形態によるハイパーバイザベースのサーバ二重化システムのブロック構成図である。図１２に図示するように、本実施形態によるハイパーバイザベースのサーバ二重化システムは、ユーザ仮想マシン１２０と分離されたサーバ装置にファイルシステム仮想マシン１４０を有することができる。ユーザ仮想マシン１２０と分離されたサーバ装置にファイルシステム仮想マシン１４０を有する場合、ユーザ仮想マシン１２０のリソース消費にファイルシステム仮想マシン１４０が影響を受けないことにより、データ入出力性能が低下することを防止できる。
【００７０】
本実施形態によるハイパーバイザベースのサーバ二重化システムは、プライマリサービスサーバ１０００、プライマリファイルサーバ１５００、スタンバイサービスサーバ２０００およびスタンバイファイルサーバ２５００を含むことができる。ユーザ仮想マシン１２０とファイルサーバ仮想マシン１４０が高速で通信を行い、データ入出力速度が低減されないように、プライマリサービスサーバ１０００およびプライマリファイルサーバ１５００は、所定のビット伝送速度を保障するケーブルを介して連結され、スタンバイサービスサーバ２０００およびスタンバイファイルサーバ２５００も、所定のビット伝送速度を保障するケーブルを介して連結された方が好ましい。
【００７１】
プライマリファイルサーバ１５００は、ハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ１１０と、ハイパーバイザ１１０上に生成されたファイルシステム仮想マシン１４０を含む。
【００７２】
プライマリサービスサーバ１０００は、ハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ１１０と、ハイパーバイザ１１０上に生成されたユーザ仮想マシン１２０を含む。
【００７３】
スタンバイファイルサーバ２５００は、プライマリファイルサーバ１５００のハイパーバイザ１１０に備えられたフォールトトレランスモジュールとデータを送受信し、プライマリファイルサーバ１５００を二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ１１０を含む。
【００７４】
スタンバイサービスサーバ２０００は、プライマリサービスサーバ１０００のハイパーバイザ１１０に備えられたフォールトトレランスモジュールとデータを送受信し、プライマリサービスサーバ１０００を二重化するハイパーバイザベースのフォールトトレランスモジュールを備えるハイパーバイザ１１０を含む。
【００７５】
このとき、ファイルシステム仮想マシン１４０は、プライマリサービスサーバ１０００のハイパーバイザ１１０上に生成されたユーザ仮想マシン１２０がアウトソーシングするファイルシステム１４２を提供し、ファイルシステム１４２と連携して使用されるバッファキャッシュをファイルシステム仮想マシン１４０に割当てられた仮想メモリ上に配置する。また、ファイルシステム仮想マシン１４０は、プライマリファイルシステムサーバ１５００のハイパーバイザ１１０のフォールトトレランスモジュールとスタンバイファイルシステムサーバ２５００のハイパーバイザ１１０のフォールトトレランスモジュールを利用してスタンバイファイルサーバ２５００に二重化される。また、プライマリサービスサーバ１０００のユーザ仮想マシン１２０は、プライマリサービスサーバ１０００のハイパーバイザ１１０のフォールトトレランスモジュールとスタンバイサービスサーバ２０００のハイパーバイザ１１０のフォールトトレランスモジュールを利用して、スタンバイサービスサーバ２０００に二重化される。
【００７６】
図１３ないし１４は、本発明の一実施形態によるハイパーバイザベースのサーバ二重化方法のフローチャートである。
【００７７】
先に、図１３は本実施形態によるハイパーバイザベースのサーバ二重化方法が実行されるように初期化をする方法を示すフローチャートである。
【００７８】
先に、ファイルシステムが使用するリソースに対する情報の入力を受ける（Ｓ１０２）。例えば、使用するＣＰＵコアの数、メモリサイズ、ストレージサイズなどの情報を入力することができる。
【００７９】
次に、リソースに対する情報によってプライマリサーバのハイパーバイザ上にファイルシステム仮想マシンを生成する（Ｓ１０４）。一実施形態によれば、プライマリサーバのハイパーバイザ上に生成されたファイルシステム仮想マシンに対してリソースに対する情報によってリソースを割り当てる。
【００８０】
ファイルシステム仮想マシンに割当てられた仮想メモリの少なくとも一部をバッファキャッシュとして使用する（Ｓ１０６）。例えば、ファイルシステム仮想マシンに割当てられた仮想メモリの既に指定された住所領域をバッファキャッシュ領域として割り当てることができる。一実施形態によれば、ファイルシステム仮想マシンに割当てられた仮想メモリサイズ中、所定比率による格納領域をバッファキャッシュ領域として割り当てることができる。他の実施形態によれば、リソースに対する情報にバッファキャッシュ領域サイズに対する情報も含まれてもよく、バッファキャッシュ領域はリソースに対する情報によって割り当てることもできる。また他の実施形態によれば、バッファキャッシュのサイズは、プライマリサーバ上に生成されたユーザ仮想マシンの数に応じて自動調整されてもよい。また他の実施形態によれば、バッファキャッシュのサイズは、プライマリサーバ上に生成されたユーザ仮想マシン全体が呼び出すデータ書き込みコールの呼び出し量に応じて自動調整されてもよい。
【００８１】
次に、ファイルシステム仮想マシンにバッファキャッシュマネージャを実行する（Ｓ１０８）。前述したように、バッファキャッシュマネージャはバッファキャッシュにロードされたデータがスタンバイサーバに二重化されるようにハイパーバイザのフォールトトレランスモジュールに要請する。
【００８２】
次に、プライマリサーバのファイルシステム仮想マシンをスタンバイサーバに二重化する。ファイルシステム仮想マシンの二重化はプライマリサーバのフォールトトレランスモジュールおよびスタンバイサーバのフォールトトレランスモジュールを利用することができる。
【００８３】
次に、新規ユーザ仮想マシンの生成要請がある場合（Ｓ１１０）、新規ユーザ仮想マシンをプライマリサーバのハイパーバイザ上に生成する（Ｓ１１２）。
【００８４】
次に、ユーザ仮想マシンがファイルシステム仮想マシンのファイルシステムをアウトソーシングするように設定する（Ｓ１１４）。例えば、ユーザ仮想マシンにユーザ仮想マシンに割当てられた仮想ボリュームにマウントされたファイルシステム仮想マシンのファイルシステムを設置するか、またはユーザ仮想マシンにユーザ仮想マシンが提供するネットワークドライブを連結することができる。
【００８５】
次に、図１４を参照してプライマリサーバのファイルシステム仮想マシンが提供するファイルシステムをアウトソーシングするプライマリサーバのユーザ仮想マシンがデータ書き込みを実行し、書き込み対象のデータが二重化されることについて説明する。
【００８６】
一実施形態によれば、プライマリサーバのファイルシステム仮想マシンのバッファキャッシュをプライマリサーバのハイパーバイザのフォールトトレランスモジュールおよびスタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して第２ファイルシステム仮想マシンのバッファキャッシュに二重化することによって、書き込み対象のデータを二重化することができる。
【００８７】
一実施形態によれば、プライマリサーバに生成されたファイルシステム仮想マシンをスタンバイサーバに二重化することによっても、書き込み対象のデータを二重化することができる。
【００８８】
プライマリサーバのユーザ仮想マシンがデータ書き込みコールを呼び出す場合（Ｓ１１６）、ファイルシステム仮想マシンのファイルシステムモジュールにも低レベル書き込みコールが呼び出される。低レベル書き込みコールは書き込み対象のデータをファイルシステム仮想マシンのバッファキャッシュにロードする（Ｓ１１８）。
【００８９】
ローティングを感知したファイルシステム仮想マシンのバッファキャッシュマネージャはプライマリサーバのハイパーバイザにアップデートを要請し（Ｓ１２０）、プライマリサーバのハイパーバイザはスタンバイサーバのハイパーバイザに同期化を要請する（Ｓ１２２）。また、スタンバイサーバのハイパーバイザはスタンバイサーバのバッファキャッシュに書き込み対象のデータをロードする（Ｓ１２４）。スタンバイサーバのバッファキャッシュに書き込み対象のデータのローティングが完了次第、同期化要請およびプライマリサーバのファイルシステム上の低レベルライト関数がリターン（Ｓ１２６）することにより、プライマリサーバのユーザ仮想マシンはコントロールを取り戻すようになり（Ｓ１２８）、次の動作を実行する。
【００９０】
ファイルシステム仮想マシンは、バッファキャッシュへの書き込み対象のデータをロードした後、プライマリサーバのＩ／Ｏの発生量およびバッファキャッシュの使用量のうち少なくとも一つを基準にして、バッファキャッシュにロードされたデータがフラッシュするようにプライマリサーバのハイパーバイザに要請することができる。
【００９１】
図１３ないし図１４には図示していないが、ファイルシステム仮想マシンはバッファキャッシュにロードされた書き込み対象のデータがストレージ装置にフラッシュされ、物理的に書き込みされる前に失われる場合、これを感知してサービスがスタンバイサーバを介して提供されるようにしてもよい。例えば、プライマリサーバのバッファキャッシュにロードされたデータがストレージ装置に格納される前に失われた場合、プライマリサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を非活性化し、スタンバイサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を活性化することができる。
【００９２】
本発明は、またコンピュータで判読可能な記録媒体にコンピュータが判読可能なコードとして実現することが可能である。コンピュータが判読可能な記録媒体はコンピュータシステムによって判読可能なデータが格納される全ての種類の記録装置を含む。コンピュータが判読可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ記憶装置などがあり、またキャリアウェーブ（例えば、インターネット介して伝送すること）の形態で実現されることも含む。またコンピュータが判読可能な記録媒体はネットワークで接続されたコンピュータシステムに分散され、分散方式でコンピュータが判読可能なコードが格納され、実行される。
【００９３】
本発明のまた他の実施形態によるハイパーバイザベースの二重化方法は、スタンバイサーバのファイルシステム仮想マシンをプライマリサーバのファイルシステム仮想マシンを二重化することによって生成することではなく、スタンバイサーバのファイルシステム仮想マシンも初期化の際に生成することを含んでもよい。本実施形態はファイルシステム仮想マシンの二重化の際に発生したエラーによって、スタンバイサーバにファイルシステム仮想マシンが正しく生成されないことを防止して、二重化を安全に設定することができる効果がある。以下、本実施形態による二重化方法について説明する。
【００９４】
先に、プライマリサーバのハイパーバイザ上に生成されるユーザ仮想マシンがアウトソーシングするファイルシステムを提供する第１ファイルシステム仮想マシンを生成する。
【００９５】
次に、スタンバイサーバのハイパーバイザ上に二重化されるユーザ仮想マシンがアウトソーシングするファイルシステムを提供する第２ファイルシステム仮想マシンを生成する。
【００９６】
次に、第１ファイルシステム仮想マシンがファイルシステムと連携して管理するバッファキャッシュを第２ファイルシステム仮想マシンがファイルシステムと連携して管理するバッファキャッシュに二重化する。前述したように、プライマリサーバのハイパーバイザおよびスタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、二重化することは、第１ファイルシステム仮想マシンのバッファキャッシュをプライマリサーバのハイパーバイザのフォールトトレランスモジュールおよびスタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して第２ファイルシステム仮想マシンに二重化することを意味する。
【００９７】
バッファキャッシュは第１ファイルシステム仮想マシンと第２ファイルシステム仮想マシンがそれぞれの仮想メモリ上に配置されるものであるとよい。このとき、プライマリサーバのハイパーバイザおよびスタンバイサーバのハイパーバイザはハイパーバイザベースのフォールトトレランスモジュールを備えるものであり、二重化することは、プライマリサーバのハイパーバイザのフォールトトレランスモジュールが第１ファイルシステム仮想マシンの仮想メモリをスタンバイサーバのハイパーバイザのフォールトトレランスモジュールを利用して第２ファイルシステム仮想マシンの仮想メモリに二重化することによってバッファキャッシュを二重化することを意味する。
【００９８】
また、本実施形態による二重化方法は、第１ファイルシステム仮想マシンのバッファキャッシュにロードされたデータがフラッシュする前に失われたことを感知した場合、プライマリサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を非活性化し、スタンバイサーバのハイパーバイザ上に生成されたユーザ仮想マシンの状態を活性化するステップをさらに含み得る。
【００９９】
以上添付する図面を参照して、本発明の実施形態について説明したが、本発明が属する技術分野で通常の知識を有する者は、本発明がその技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施できることを理解することができる。したがって、上記実施形態は全ての面で例示的なものであり、限定的なものではないと理解しなければならない。
【符号の説明】
【０１００】
プライマリサーバ          １００
ユーザ仮想マシン          １２０
ファイルシステム仮想マシン       １４０
ハイパーバイザ                   １１０
プライマリサーバハードウェア     １３０
【図１】
0005600361.tif 000002
【図２】
0005600361.tif 000003
【図３】
0005600361.tif 000004
【図４】
0005600361.tif 000005
【図５】
0005600361.tif 000006
【図６】
0005600361.tif 000007
【図７】
0005600361.tif 000008
【図８】
0005600361.tif 000009
【図９】
0005600361.tif 000010
【図１０】
0005600361.tif 000011
【図１１】
0005600361.tif 000012
【図１２】
0005600361.tif 000013
【図１３】
0005600361.tif 000014
【図１４】
0005600361.tif 000015