(57)【要約】  本発明は仮想マシンの高速復旧方法、装置及びシステムを開示している。該仮想マシンの高速復旧方法は、第一ホストと第二ホストとをピアツーピア記憶に結び付けて、第一ホストの仮想マシン上の読み書きリクエストを第二ホストにバックアップさせること、第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは、第一ホストの仮想マシンを起動すること、バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断すること、未完了な場合、読み書きリクエストを第二ホストに送信すること、第二ホストは読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ指定データをバックアップホストに送信すること、バックアップホストは指定データを呼び出し側に送信することを含む。【選択図】図１
2019504374.tif 000002
【特許請求の範囲】
【請求項１】
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせることと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動することと、
バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断することと、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信することと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信することと、
前記バックアップホストは前記指定データを前記呼び出し側に送信することと、を含む、
ことを特徴とする仮想マシンの高速復旧方法。
【請求項２】
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせることをさらに含む、
ことを特徴とする請求項１に記載の仮想マシンの高速復旧方法。
【請求項３】
前記バックアップホストのゲストオペレーティングシステムは前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記バックアップホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記読み書きリクエストを受信することと、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信することと、
前記バックアップホストのＱｅｍｕモジュールは前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信することと、をさらに含む、
ことを特徴とする請求項１に記載の仮想マシンの高速復旧方法。
【請求項４】
前記第一ホストの仮想マシンデータを前記第二ホストにバックアップさせるには、
前記第一ホストのゲストオペレーティングシステムは読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記第一ホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得することと、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶することと、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶することと、を含む、
ことを特徴とする請求項１に記載の仮想マシンの高速復旧方法。
【請求項５】
前記第二ホストは現在の実行指標がプリセット条件に達するか否かを判断することと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期することと、
前記第二ホストに未同期データが存在するか否かを判断することと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であり、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了し、前記バックアップホストに同期完了の通知を送信することと、をさらに含む、
ことを特徴とする請求項１〜４のいずれか１項に記載の仮想マシンの高速復旧方法。
【請求項６】
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるために用いられるデータバックアップユニットと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するために用いられるバックアップマシン起動ユニットと、
バックアップホスト上で起動された仮想マシンに、呼び出し側から送信した読み書きリクエストを受信させ、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断して、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信するために用いられるリクエスト判断ユニットと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するために用いられる第一処理ユニットと、
前記バックアップホストは前記指定データを前記呼び出し側に送信するために用いられるデータ送信ユニットと、を含む、
ことを特徴とする仮想マシンの高速復旧装置。
【請求項７】
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるために用いられる第二処理ユニットをさらに含む、
ことを特徴とする請求項６に記載の仮想マシンの高速復旧装置。
【請求項８】
前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するために用いられる、前記バックアップホストのゲストオペレーティングシステムと、
前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信するために用いられ、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信するようにする、前記バックアップホストのＱｅｍｕモジュールと、
前記読み書きリクエストを受信するために用いられ、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信する、前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールと、
前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信するために用いられる、前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールと、
前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信するために用いられる、前記バックアップホストのＱｅｍｕモジュールと、をさらに含む、
ことを特徴とする請求項６に記載の仮想マシンの高速復旧装置。
【請求項９】
前記データバックアップユニットは、
読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するために用いられる、前記第一ホストのゲストオペレーティングシステムと、
前記リングバッファから前記読み書きリクエストを取得するために用いられ、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶し、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信するようにする、前記第一ホストのＱｅｍｕモジュールと、
前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信するために用いられる、前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールと、
前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶するために用いられる、前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールと、を含む、
ことを特徴とする請求項６に記載の仮想マシンの高速復旧装置。
【請求項１０】
前記リクエスト判断ユニットは、
第二ホストは現在の実行指標がプリセット条件に達するか否かを判断するために用いられる第一判断サブユニットと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期するために用いられる第一同期サブユニットと、
前記第二ホストに未同期データが存在するか否かを判断するために用いられる第二判断サブユニットと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であると確定するために用いられる第一確定サブユニットと、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了したと確定し、前記バックアップホストに同期完了の通知を送信するために用いられる第二確定サブユニットと、を含む、
ことを特徴とする請求項６〜９のいずれか１項に記載の仮想マシンの高速復旧装置。
【請求項１１】
それぞれプロセッサが設置されている第一ホスト、第二ホスト及びバックアップホストを含み、前記プロセッサは、
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるステップと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するステップと、
バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断するステップと、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信するステップと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するステップと、
前記バックアップホストは前記指定データを前記呼び出し側に送信するステップと、を実行する、
ことを特徴とする仮想マシンの高速復旧システム。
【請求項１２】
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるステップをさらに含む、
ことを特徴とする請求項１１に記載の仮想マシンの高速復旧システム。
【請求項１３】
前記バックアップホストのゲストオペレーティングシステムは前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するステップと、
前記バックアップホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信するステップと、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信するステップと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記読み書きリクエストを受信するステップと、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信するステップと、
前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信するステップと、
前記バックアップホストのＱｅｍｕモジュールは前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信するステップと、をさらに含む、
ことを特徴とする請求項１１に記載の仮想マシンの高速復旧システム。
【請求項１４】
前記第一ホストの仮想マシンデータを前記第二ホストにバックアップさせるには、
前記第一ホストのゲストオペレーティングシステムは読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記第一ホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得することと、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶することと、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶することと、を含む、
ことを特徴とする請求項１１に記載の仮想マシンの高速復旧システム。
【請求項１５】
前記第二ホストは現在の実行指標がプリセット条件に達するか否かを判断するステップと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期するステップと、
前記第二ホストに未同期データが存在するか否かを判断するステップと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であり、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了し、前記バックアップホストに同期完了の通知を送信するステップと、をさらに含む、
ことを特徴とする請求項１１〜１４のいずれか１項に記載の仮想マシンの高速復旧システム。
【請求項１６】
前記第一ホスト、第二ホスト及びバックアップホストはいずれも、前記プロセッサに接続されたユーザーインタラクション装置をさらに含み、
前記第一ホストと前記第二ホスト上のユーザーインタラクション装置は、ユーザーが入力した第一バックアップ記憶命令と第二バックアップ記憶命令をそれぞれ受信し、前記第一バックアップ記憶命令と前記第二バックアップ記憶命令に基づいて前記第一ホストと第二ホストとをピアツーピア記憶に結び付けるために用いられ、前記第一バックアップ記憶命令と第二バックアップ記憶命令は同一ピアツーピアのＩＤを含み、
前記バックアップホスト上のユーザーインタラクション装置は、ユーザーが入力した仮想マシン起動命令を受信することによって、前記第一ホストのシステムダウン又はパワーオフの場合、前記バックアップホストに前記第一ホストの仮想マシンを起動するために用いられ、前記仮想マシン起動命令は前記ピアツーピアのＩＤを含む、
ことを特徴とする請求項１１に記載の仮想マシンの高速復旧システム。
【請求項１７】
前記バックアップホストは、前記プロセッサに接続されたネットワークインターフェースをさらに含み、前記ネットワークインターフェースは前記呼び出し側から送信した読み書きリクエストを受信し、かつ前記指定データを前記呼び出し側に送信するために用いられる、
ことを特徴とする請求項１１に記載の仮想マシンの高速復旧システム。
【請求項１８】
前記第一ホスト上のメモリに、第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶するために用いられるデータベースが設置され、
前記第二ホスト上のメモリに、第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶し、かつバックアップホスト上で起動された前記第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶するために用いられるデータベースが設置され、
前記バックアップホスト上のメモリに、第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶し、かつバックアップホスト上で起動された前記第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶するために用いられるデータベースが設置されている、
ことを特徴とする請求項１１に記載の仮想マシンの高速復旧システム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
特許出願は２０１６年１２月２８に出願された特許出願第２０１６１１２４００１６．５、名称が“仮想マシンの高速復旧方法及び装置”の中国発明特許出願に基づき、かつその優先権を要求する。
【０００２】
（技術分野）
本発明はコンピュータ仮想化の技術分野に関し、特に仮想マシンの高速復旧方法、装置及びシステムに関する。
【背景技術】
【０００３】
仮想化技術は既にＩａａＳ層（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ、すなわちサービスとしてのインフラストラクチャー）の重要な役割の一つとなっている。仮想化技術は仮想マシンモニタＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）ソフトウェアによって物理マシンのＣＰＵ、内部メモリ、Ｉ／Ｏ等の装置に対して仮想化を行い、一台の物理マシン内に複数の仮想マシンＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を仮想化し、各ＶＭに、それぞれ一つのゲストオペレーティングシステム（Ｇｕｅｓｔ  ＯＳ、ゲスト）を実行する。ＶＭＭは一つのホストオペレーティングシステム（Ｄｏｍ０又はＨｏｓｔ  ＯＳ、ホスト）に協力して、同一物理マシンにある仮想マシン間の相互の隔離を保証し、システムダウンを必要としない先決条件の下でＶＭを一台の物理マシンからオンラインで他の一台の物理マシンへ移行すること（共有ストレージに基づくオンライン移行とローカルストレージに基づくオンライン移行を含む）をサポートする。
【０００４】
仮想化技術はＶＭ機能とパフォーマンス隔離、ＶＭオンライン移行に基づくロードバランシングとシステム故障許容、アプリケーション移植性、リソース利用率の向上、運用保守難度とコストの低減等の面における優越性により、各種の大型データセンターとクラウドコンピューティング環境のＩａａＳプラットフォームに幅広く適用されている。その典型的な応用は高性能計算、ビッグデータ処理、Ｗｅｂ事務処理等を包含する。
【０００５】
現在のＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、システム仮想化モジュール）のクラウドストレージ手段において、仮想マシンの読み書きリクエストをホストのローカルストレージに直接記憶する。仮想マシンのあるホストはシステムダウン又は他の故障によってサービスを提供し続けることができない場合、仮想マシンをアクセスさせるための利用可能なストレージがないため、仮想マシンを高速に復旧することができず、それにより仮想マシン上のサービス停止を引き起こす。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は仮想マシンの高速復旧方法、装置及びシステムを提供し、それによって従来の仮想マシンのあるホストのシステムダウンの場合、仮想マシンを高速に復旧することができないという問題を解決する。
【課題を解決するための手段】
【０００７】
本発明がその技術的問題を解決するために採用する技術的解決手段は、以下のとおりである。
【０００８】
第一の態様において、本発明は、
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせることと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動することと、
バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断することと、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信することと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信することと、
前記バックアップホストは前記指定データを前記呼び出し側に送信することを含む、
仮想マシンの高速復旧方法を提供する。
【０００９】
第二の態様において、本発明は、
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるために用いられるデータバックアップユニットと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するために用いられるバックアップマシン起動ユニットと、
バックアップホスト上で起動された仮想マシンに、呼び出し側から送信した読み書きリクエストを受信させ、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断して、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信するために用いられるリクエスト判断ユニットと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するために用いられる第一処理ユニットと、
前記バックアップホストは前記指定データを前記呼び出し側に送信するために用いられるデータ送信ユニットと、を含む、
仮想マシンの高速復旧装置をさらに提供する。
【００１０】
第三の態様において、本発明は、それぞれプロセッサが設置されている第一ホスト、第二ホスト及びバックアップホストを含み、前記プロセッサは、
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるステップと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するステップと、
バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断するステップと、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信するステップと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するステップと、
前記バックアップホストは前記指定データを前記呼び出し側に送信するステップと、を実行する、
仮想マシンの高速復旧システムをさらに提供する。
【発明の効果】
【００１１】
本発明は従来技術に比べて以下の利点を有する。本発明の提供する仮想マシンの高速復旧方法、装置及びシステムにおいて、第一ホストがシステムダウン又はパワーオフされると、バックアップホストに第一ホストの仮想マシンを起動し、かつ第二ホストからバックアップホストへの全量データの同期が未完了な場合、バックアップホストの仮想マシンが受信した読み書きリクエストを、仮想マシンのバックアップデータを有する第二ホストに転送して実行することによって、仮想マシンがストレージしなく高速移行及び故障復旧を実現することができ、共有ストレージを必要とせず、かつ仮想マシンのロバスト性を高め、仮想マシンをアクセスさせるための利用可能なストレージがないことによって引き起こす仮想マシン上のサービス停止現象の発生を避ける。
【００１２】
次に図面及び実施例を併せて本発明に対してさらに説明し、図面は以下のとおりである。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例１における仮想マシンの高速復旧方法のフローチャートである。
【図２】図１に示す仮想マシンの高速復旧方法におけるステップＳ１の具体的なフローチャートである。
【図３】図１に示す仮想マシンの高速復旧方法におけるステップＳ３の具体的なフローチャートである。
【図４】図１に示す仮想マシンの高速復旧方法におけるステップＳ４の具体的なフローチャートである。
【図５】本発明の実施例２における仮想マシンの高速復旧装置の原理ブロック図である。
【図６】本発明の実施例３における仮想マシンの高速復旧装置の原理ブロック図である。
【図７】本発明の実施例３におけるタブレットパソコンの原理ブロック図である。
【発明を実施するための形態】
【００１４】
本発明の技術特徴、目的及び効果をより明瞭に理解するため、ここで図面を参照して、本発明を実施するための形態に対して詳しく説明する。
【００１５】
（実施例１）
図１は本実施例における仮想マシンの高速復旧方法を示す。図１に示すとおり、該仮想マシンの高速復旧方法は以下のステップを含む。
【００１６】
Ｓ１：第一ホストと第二ホストとをピアツーピア記憶に結び付けて、第一ホストの仮想マシン上の読み書きリクエストを第二ホストにバックアップさせる。これに応じて、第二ホスト上の読み書きリクエストをも第一ホストにバックアップする。ピアツーピア記憶を結び付けた第一ホストの仮想マシンは第二ホストの仮想マシンと相互に独立しているが、仮想マシンに実行する読み書きリクエストを相互にバックアップする。
【００１７】
Ｓ２：第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは第一ホストの仮想マシンを起動する。第一ホストのシステムダウン又はパワーオフの場合は第一ホストがサービスを提供し続けることができない二つのケースで、第一ホストの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証するために、他の一台の正常に稼働するマシンに第一ホストの仮想マシンを起動する必要がある。ここで、パワーオフはホストの電源を切断し、コンピュータを完全に停止させるケースである。システムダウンはホストが深刻なシステム故障から復旧することができず、又はシステムハードウェア層に問題が発生し、それによってシステムが長時間にわたって応答なしのケースである。このため、バックアップホストはクラスタにおける一台の正常に稼働する予備マシンで、バックアップホストのハードウェア構成は第一ホストにおける全ての仮想マシンを起動することができるという要件を満たす必要があり、それにより第一ホストの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証する。以下にバックアップホスト上で起動された第一ホストの仮想マシンをバックアップホストの仮想マシンと呼ぶ。
【００１８】
Ｓ３：バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断する。第二ホストからバックアップホストへの全量データの同期が未完了な場合は、読み書きリクエストを第二ホストに送信する。第二ホストからバックアップホストへの全量データのバックアップが完了した場合は、バックアップホストに読み書きリクエストを実行し、読み書きリクエストを第二ホストに送信する必要がなくなる。その原因は、この時に第一ホストの仮想マシン移行が完了し、仮想マシンが復旧されて安定していることである。理解すべきなのは、第二ホストからバックアップホストへの全量データのバックアップが完了した場合、第二ホストとバックアップホストとを新しいピアツーピア記憶に形成して、第二ホストの仮想マシンとバックアップホストの仮想マシンとのデータバックアップを実現することができ、それによって第二ホストとバックアップホストがシステムダウン又は他の故障の発生によって稼働することができない場合にその上の仮想マシンがデータへのアクセス不可を避ける。
【００１９】
Ｓ４：第二ホストからバックアップホストへの全量データの同期が未完了な場合は、読み書きリクエストを第二ホストに送信する。第二ホストは書き込みリクエストに基づいて書き込み対象データを第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ指定データをバックアップホストに送信する。バックアップホストは指定データを呼び出し側に送信する。すなわち、第二ホストからバックアップホストへの全量データの同期が未完了な場合は、第一ホストの仮想マシンがバックアップホストへの移行が未完了で、バックアップホストはその上で起動された仮想マシンが受信した読み書きリクエストに対して処理することができず、読み書きリクエストを、仮想マシンのデータがバックアップされた第二ホストに転送して処理を行うことによって、仮想マシンの高速復旧を実現し、仮想マシン上のサービス停止を避けることができる。
【００２０】
Ｓ５：第二ホストからバックアップホストへの全量データの同期が完了した場合は、バックアップホストに読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを第二ホストバックアップにバックアップさせる。具体的に、バックアップホストに読み書きリクエストを実行する過程は第二ホストに読み書きリクエストを実行する過程と同じであり、すなわち書き込みリクエストに基づいて書き込み対象データをバックアップホストに記憶し、又は読み出しリクエストに基づいて指定データを取得する。このように、第二ホストからバックアップホストへの全量データの同期が完了した場合は、バックアップホストが仮想マシンを起動しかつ読み書きリクエストを受信する時、読み書きリクエストをバックアップホストのローカルディスクに直接記憶し、さらに読み書きリクエストを第二ホストにスキップして実行することはなくなり、但しバックアップホストにある仮想マシン上の読み書きリクエストを第二ホストにバックアップし、そのバックアップ過程はステップＳ１と同じである。
【００２１】
Ｓ６：バックアップホストは指定データを呼び出し側に送信する。理解すべきことは、第二ホストからバックアップホストへの全量データの同期が完了した場合、バックアップホストに読み書きリクエストを実行し、読み出しリクエストに対応する指定データを取得しかつ呼び出し側に送信する。又は、第二ホストからバックアップホストへの全量データの同期が未完了な場合は、読み書きリクエストを第二ホストに送信し、第二ホストに読み書きリクエストを実行し、読み出しリクエストに対応する指定データを取得しかつ呼び出し側に送信する。
【００２２】
本実施例が提供する仮想マシンの高速復旧方法において、第一ホストのシステムダウン、パワーオフ又は他のサービスを提供し続けることができない場合、バックアップホストに第一ホストの仮想マシンを起動することができ、かつ第二ホストからバックアップホストへの全量データの同期が未完了な場合、バックアップホストの仮想マシンが受信した読み書きリクエストを、仮想マシンのバックアップデータを有する第二ホストに転送して実行することによって、仮想マシンがストレージをしなく高速移行及び故障復旧を実現することができ、共有ストレージを必要とせず、かつ仮想マシンのロバスト性（Ｒｏｂｕｓｔ）を高め、仮想マシンをアクセスさせるための利用可能なストレージがないことによって引き起こす仮想マシン上のサービス停止現象の発生を避ける。
【００２３】
次に発明を実施するための形態を併せて該仮想マシンの高速復旧方法に対して説明し、発明を実施するための形態において、該仮想マシンの高速復旧方法は以下のステップを含む。
【００２４】
Ｓ１：第一ホストＡと第二ホストＢとをピアツーピア記憶に結び付けて、第一ホストＡの仮想マシン上の読み書きリクエストを第二ホストＢにバックアップする。これに応じて、第二ホストＢの仮想マシン上の読み書きリクエストをも第一ホストＡにバックアップする。なお、第一ホストＡ上の仮想マシンは、第二ホストＢ上の仮想マシンと相互に独立しているが、仮想マシンのデータを相互にバックアップし、それによって、第一ホストＡと第二ホストＢがシステムダウン又は他の故障で正常に稼働できず、仮想マシンを高速に復旧することができなくてそれの提供するサービスが停止することを避ける。図２に示すとおり、ステップＳ１は具体的に、以下のステップを含む。
【００２５】
Ｓ１１：第一ホストＡのゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）は読み書きリクエストを受信し、かつ読み書きリクエストをリングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）に格納する。ここで、ゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）は第一ホストＡの仮想マシンに実行するオペレーティングシステムである。リングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）は通信プログラムにおいて、通信において送信と受信のデータを格納するためのデータ構造で、通信プログラムに対してバッファへの相互排他アクセスを提供することができる。
【００２６】
Ｓ１２：第一ホストＡのＱｅｍｕモジュールはリングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）から読み書きリクエストを取得する。ここで、Ｑｅｍｕモジュールは第一ホストのホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）に設置され、読み書きリクエストは未処理の読み書きリクエストである。ここで、Ｑｅｍｕは独立に実行可能なソフトウェアで、マシンをシミュレーションするために用いられ、高い機動性とソフトウェア移植性を有する。Ｑｅｍｕは主に一つの特殊な“リコンパイラ”によって、特定のプロセッサについてコーディングする二進数コードを他の種類、例えばＰＰＣｍａｃに実行するＭＩＰＳコード、又はＸ８６  ＰＣに実行するＡＲＭコードに変換する。ＱｅｍｕモジュールにおけるＩＯパスは大いに、ｖｉｒｔｉｏ後端（ａ）、汎用ブロックデバイス層（ｂ）及び駆動層（ｃ）のような三層に分けられ、ｖｉｒｔｉｏ後端（ａ）及び汎用ブロックデバイス層（ｂ）のインターフェース部分に一部のコードを組み込むことによって読み書きリクエストを第二ホストＢに伝送して他のデバイスを経由せずに直接バックアップすることを実現する。
【００２７】
Ｓ１３：第一ホストＡのＱｅｍｕモジュールは読み出しリクエストに基づき、第一ホストＡのローカルディスクから指定データを取得し、又は第一ホストＡのＱｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを第一ホストＡのローカルディスクに記憶する。
【００２８】
Ｓ１４：第一ホストＡのＱｅｍｕモジュールは書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信する。ここで、Ｓｙｎｃ  Ｏｒｉｇモジュールは第一ホストＡのホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）に設置され、第一ホストＡの読み書きリクエストの転送モジュールである。
【００２９】
Ｓ１５：ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは書き込みリクエストを第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールに送信する。第一ホストＡのＳｙｎｃ  Ｏｒｉｇモジュールと第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールとの間はネットワークを介して接続される。
【００３０】
Ｓ１６：第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは書き込みリクエストを受信し、書き込みリクエストに対応する書き込み対象データを第二ホストのローカルディスクに記憶し、それによって第一ホストＡの仮想マシン上の書き込みリクエストを第二ホストＢにバックアップすることを実現する。Ｓｙｎｃ  Ｔｅｒｍモジュールは第二ホストＢのホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）に設置され、第二ホストＢの読み書きリクエストの受信モジュールである。
【００３１】
さらに、第一ホストＡと第二ホストＢとをピアツーピア記憶に結び付ける擬似コードは以下のとおりである。
Ｈｏｓｔ  Ａ  ｃｏｎｆｉｇ  ｆｉｌｅ：
ＰｅｅｒＩＤ  ＝  １
Ｈｏｓｔ  Ｂ  ｃｏｎｆｉｇ  ｆｉｌｅ：
ＰｅｅｒＩＤ  ＝  １
【００３２】
第一ホストＡと第二ホストＢを起動した後、クラウドへそれぞれのＰｅｅｒＩＤをサーバーまで報告し、サーバーはＰｅｅｒＩＤが同じである二台のホストをピアツーピア記憶として登録する。
Ｉｆ（ｈｏｓｔＡ．ｐｅｅｒＩｄ  ＝＝  ｈｏｓｔＢ．ｐｅｅｒＩｄ）
｛  Ｐｅｅｒ  ｐｅｅｒ  ＝  ｎｅｗ  Ｐｅｅｒ（ｈｏｓｔＡ，ｈｏｓｔＢ）；
ｐｅｅｒ．ａｄｄ（ｐｅｅｒ）；  ｝
【００３３】
さらに、第一ホストＡの仮想マシン上の読み書きリクエストを第二ホストＢにバックアップする擬似コードは以下を含む。第一ホストＡのＱｅｍｕモジュールが書き込みリクエストを受信した後、書き込みリクエストに対応する書き込み対象データを第一ホストＡのローカルディスクに記憶する以外に、さらに書き込みリクエストに対応する書き込み対象データを第一ホストＡのホストオペレーティングシステム（ＨｏｓｔＯＳ）の共有内部メモリに記憶する。続いて、該書き込みリクエストについて一つのｓｅｑｕｅｎｃｅ番号を生成し、かつ書き込みリクエストの修正する必要なｓｅｃｔｏｒ開始番号及びｓｅｃｔｏｒ数をｒｅｑｕｅｓｔに記入し、ホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）のＳｙｎｃ  Ｏｒｉｇモジュールに渡して処理を行う。ホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）はｒｅｑｕｅｓｔを受信し、ｒｅｑｕｅｓｔと共有内部メモリ内の書き込み対象データｄａｔａを一つのＴＣＰデータパッケージに構成させ、第二ホストＢのホストオペレーティングシステム（ＨｏｓｔＯＳ）に送信する。第二ホストＢのホストオペレーティングシステム（ＨｏｓｔＯＳ）はデータパッケージ内の書き込み対象データｄａｔａをｒｅｑｕｅｓｔに指定されたｓｅｃｔｏｒ内に書き込み、それによりホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）の仮想マシンの書き込みリクエストをホストオペレーティングシステム（ＨｏｓｔＯＳ＿Ｂ）にバックアップすることを実現する。
【００３４】
Ｓ２：第一ホストＡのシステムダウンの場合、バックアップホストＣは第一ホストＡの仮想マシンを起動する。本実施例において、第一ホストＡのシステムダウン又はサービスを提供し続けることができない場合、第一ホストＡの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証するために、他の一台の正常に稼働するマシンに第一ホストＡの仮想マシンを起動する必要がある。第二ホストＢで既に一定数量の仮想マシンを担持しているため、第一ホストＡの仮想マシンを第二ホストＢに移行して復旧すると、第二ホストＢのローカルディスクにバックアップされた第一ホストＡの仮想マシンデータを直ちに取得することができるが、第二ホストＢの仮想マシンへのアクセス負荷が高すぎることを引き起こし、第二ホストＢが外にサービスを提供する能力に影響を与える。ここで、バックアップホストＣはクラスタにおける一台の正常に稼働する予備マシンで、バックアップホストＣのハードウェア構成は第一ホストＡにおける全ての仮想マシンを起動することができるという要件を満たす必要があり、それにより第一ホストＡの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証する。以下にバックアップホストＣ上で起動された第一ホストＡの仮想マシンをバックアップホストＣの仮想マシンと呼ぶ。
【００３５】
Ｓ３：バックアップホストＣ上で起動された仮想マシンは呼び出し側が送信する読み書きリクエストを受信し、かつ第二ホストＢからバックアップホストＣへの全量データの同期が完了したか否かを判断する。具体的に、バックアップホストＣは、第二ホストから送信する同期完了の通知が提供されるか否かを判断し、同期完了の通知を受信した場合、第二ホストＢからバックアップホストＣへの全量データの同期が完了したと見なされ、逆に、同期完了の通知を受信しなかった場合、第二ホストＢからバックアップホストＣへの全量データの同期が未完了と見なされる。図３に示すとおり、ステップＳ３は具体的に以下を含む。
【００３６】
Ｓ３１：第二ホストＢは現在の実行指標がプリセット条件に達するか否かを判断する。すなわちバックアップホストＣに第一ホストＡの仮想マシンを起動した後、第二ホストＢは現在のネットワークのスループット、磁気ディスクへのアクセス等の現在の実行指標をリアルタイムに検出し、かつ各項の現在の実行指標がいずれもプリセット条件に達してから、ステップＳ３２を実行する。
【００３７】
Ｓ３２：第二ホストＢにバックアップされた第一ホストＡの仮想マシン上の読み書きリクエストをバックアップホストＣに同期し、すなわち第二ホストＢの仮想マシンのデータをバックアップホストＣに同期する。
【００３８】
Ｓ３３：第二ホストＢに未同期のデータが存在するか否かを判断する。第二ホストＢはさらに、未同期のデータが存在するか否かをリアルタイムに判断し、それによって第二ホストＢからバックアップホストＣへの全量データの同期が完了したか否かを確定する。
【００３９】
Ｓ３４：未同期のデータが存在する場合、第二ホストＢからバックアップホストＣへの全量データの同期が未完了と見なされ、未同期のデータをバックアップホストＣに送信してバックアップを行う。
【００４０】
Ｓ３５：未同期のデータが存在しない場合、第二ホストＢからバックアップホストＣへの全量データの同期が完了と見なされ、バックアップホストＣに同期完了の通知を送信する。
【００４１】
さらに、ステップＳ３において、バックアップホストＣのゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）は読み書きリクエストを受信し、かつ読み書きリクエストをリングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）に格納する。
【００４２】
Ｓ４：第二ホストＢからバックアップホストＣへの全量データの同期が未完了な場合、読み書きリクエストを第二ホストＢに送信する。第二ホストＢは書き込みリクエストに基づいて書き込み対象データを第二ホストＢに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ指定データをバックアップホストＣに送信する。バックアップホストＣは指定データを呼び出し側に送信する。図４に示すとおり、ステップＳ４は具体的に以下を含む。
【００４３】
Ｓ４１：バックアップホストＣのＱｅｍｕモジュールはリングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）から読み書きリクエストを取得する。
【００４４】
Ｓ４２：バックアップホストＣのＱｅｍｕモジュールは読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信する。
【００４５】
Ｓ４３：Ｓｙｎｃ  Ｏｒｉｇモジュールは読み書きリクエストを第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールに送信する。
【００４６】
Ｓ４４：第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールは読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを第二ホストＢのローカルディスクに記憶する。
【００４７】
Ｓ４５：第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールは読み出しリクエストに基づき、第二ホストＢのローカルディスクから指定データを取得し、かつ指定データをバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールに送信する。
【００４８】
Ｓ４６：バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは指定データを受信し、かつ指定データをバックアップホストＣのＱｅｍｕモジュールに送信する。
【００４９】
Ｓ４７：バックアップホストＣのＱｅｍｕモジュールは指定データをバックアップホストＣのゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）に送信し、さらに呼び出し側に送信する。
【００５０】
さらに、バックアップホストＣの仮想マシンの読み書きリクエストを第二ホストＢに転送して処理を行う擬似コードが以下のとおりである。
【００５１】
バックアップホストＣのＱｅｍｕモジュールを起動する前、その構成ファイル内に、ｒｅｍｏｔｅＩＯフラグをＴｒｕｅに設定する。
【００５２】
バックアップホストＣのＱｅｍｕモジュールを起動する時、ｒｅｍｏｔｅＩＯ＝  Ｔｒｕｅを読み取ると、その後に受信した各ＩＯリクエスト（すなわち読み書きリクエスト）は、いずれもローカルディスクへのアクセスを行うことではなく、共有内部メモリを介してＳｙｎｃ  Ｏｒｉｇモジュールに報知し、Ｓｙｎｃ  Ｏｒｉｇモジュールにより第二ホストＢに転送される。
【００５３】
第二ホストＢのＳｙｎｃ  ＴｅｒｍモジュールはバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールの書き込みリクエストを受信した後、書き込みデータを、他のデバイスを経由せずにバックアップホストＣのローカルディスクに直接バックアップする。
【００５４】
第二ホストＢのＳｙｎｃ  ＴｅｒｍモジュールはバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールの読み出しリクエストを受信した後、指定ｓｅｃｔｏｒから指定データを読み取った後、ＴＣＰを介してバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールに送り返す。
【００５５】
バックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールは第二ホストＢのフィードバックされた指定データを受信した後、このフィードバックされた指定データを共有内部メモリに書き込み、かつＴＣＰメッセージを介してバックアップホストＣのＱｅｍｕモジュールに通知する。
【００５６】
バックアップホストＣのＱｅｍｕモジュールはバックアップホストＣのＳｙｎｃ  ＯｒｉｇモジュールのＴＣＰメッセージ通知を受信した後、指定共有内部メモリから指定データを取得し、かつ呼び出し側にフィードバックする。
【００５７】
仮想マシンがバックアップホストに安定した後、第二ホストＢからバックアップホストＣへのデータ同期を起動する。仮想マシンがストレージしなくバックアップホストＣへの移行が完了した後、第二ホストＢからバックアップホストＣへの全量データの同期を起動する過程の擬似コードは以下のとおりである。
【００５８】
第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールは、ローカルディスクのｑｃｏｗ２ファイルへのｓｅｃｔｏｒ書き込み状況を解析することにより、書き込まれたｓｅｃｔｏｒを一つずつバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールに送信する。バックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールは第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールが送信した同期ｓｅｃｔｏｒデータを受信した後、データコンテンツをローカルディスクのｑｃｏｗ２ファイルに書き込む。
【００５９】
第二ホストＢに実行する擬似コードは以下のとおりである。
Ｆｏｒ（ｅｖｅｒｙ  ｗｒｉｔｅｎ  ｓｅｃｔｏｒ）
｛  Ｓｅｎｄ＿ｔｏ＿ｈｏｓｔＣ（ｓｅｃｔｏｒＩｄｘ，ｓｅｃｔｏｒ＿ｄａｔａ）；  ｝
【００６０】
バックアップホストＣに実行する擬似コードは以下のとおりである。
Ｆｏｒ（ｓｅｃｔｏｒ＿ｄａｔａ  ｒｅｃｅｉｖｅ  ｆｒｏｍ  ｈｏｓｔＢ）
｛  Ｗｒｉｔｅ（ｑｃｏｗ２ｆｉｌｅ，ｓｅｃｔｏｒＩｄｘ，ｓｅｃｔｏｒ＿ｄａｔａ）；  ｝
【００６１】
バックアップホストＣは全量データの同期が完了した後、仮想マシンの読み書きリクエストをバックアップホストＣのローカルディスクに復旧して実行し、さらに第二ホストＢに転送しない。この時、第二ホストＢに実行する擬似コードは以下のとおりである。
Ｉｆ（ｅｖｅｒｙ＿ｗｒｉｔｅｎ＿ｓｅｃｔｏｒ＿ｓｅｎｄ  ＝＝  ｔｒｕｅ）
｛    Ｓｅｎｄ＿ｔｏ＿ｈｏｓｔＣ（ａｌｌ＿ｄａｔａ＿ｓｙｎｃｈｒｏｎｉｚｅｄ  ＝  ｔｒｕｅ）；  ｝
【００６２】
バックアップホストＣに実行する擬似コードは以下のとおりである。
Ｉｆ（Ｒｅｃｅｉｖｅｄ＿ｍｓｇ（ｈｏｓｔＢ，ａｌｌ＿ｄａｔａ＿ｓｙｎｃｈｒｏｎｉｚｅｄ  ＝  ｔｒｕｅ））
｛  Ｑｅｍｕ．ｒｅｍｏｔｅＩＯ  ＝  Ｆａｌｓｅ；  ｝
【００６３】
（実施例２）
図５は本実施例における仮想マシンの高速復旧装置を示す。図５に示すとおり、該仮想マシンの高速復旧装置はデータバックアップユニット１０、バックアップマシン起動ユニット２０、リクエスト判断ユニット３０、第一処理ユニット４０及び第二処理ユニット５０を含む。
【００６４】
データバックアップユニット１０は、第一ホストと第二ホストとをピアツーピア記憶に結び付けて、第一ホストの仮想マシン上の読み書きリクエストを第二ホストにバックアップさせるために用いられる。これに応じて、第二ホスト上の読み書きリクエストをも第一ホストにバックアップする。ピアツーピア記憶を結び付けた第一ホストの仮想マシンは第二ホストの仮想マシンと相互に独立しているが、仮想マシンに実行する読み書きリクエストを相互にバックアップする。
【００６５】
バックアップマシン起動ユニット２０は、第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは第一ホストの仮想マシンを起動するために用いられる。第一ホストのシステムダウン又はパワーオフの場合は、第一ホストがサービスを提供し続けることができない二つのケースで、第一ホストの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証するために、他の一台の正常に稼働するマシンに第一ホストの仮想マシンを起動する必要がある。ここで、パワーオフはホストの電源を切断し、コンピュータを完全に停止させるケースである。システムダウンはホストが深刻なシステム故障から復旧することができず、又はシステムハードウェア層に問題が発生し、それによってシステムが長時間にわたって応答なしのケースである。このため、バックアップホストはクラスタにおける一台の正常に稼働する予備マシンで、バックアップホストのハードウェア構成は第一ホストにおける全ての仮想マシンを起動することができるという要件を満たす必要があり、それにより第一ホストの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証する。以下にバックアップホスト上で起動された第一ホストの仮想マシンをバックアップホストの仮想マシンと呼ばれる。
【００６６】
リクエスト判断ユニット３０は、バックアップホスト上で起動された仮想マシンに、呼び出し側から送信した読み書きリクエストを受信させ、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断するために用いられる。第二ホストからバックアップホストへの全量データの同期が未完了な場合は、読み書きリクエストを第二ホストに送信する。第二ホストからバックアップホストへの全量データのバックアップが完了した場合、バックアップホストに読み書きリクエストを実行し、読み書きリクエストを第二ホストに送信する必要がなくなる。その原因は、この時に第一ホストの仮想マシン移行が完了し、仮想マシンが復旧されて安定していることである。理解すべきことは、第二ホストからバックアップホストへの全量データのバックアップが完了した場合、第二ホストとバックアップホストとを新しいピアツーピア記憶に形成して、第二ホストの仮想マシンとバックアップホストの仮想マシンとのデータバックアップを実現することができ、それによって、第二ホストとバックアップホストがシステムダウン又は他の故障の発生によって稼働することができない場合にその上の仮想マシンがデータへのアクセス不可を避ける。
【００６７】
第一処理ユニット４０は、第二ホストからバックアップホストへの全量データの同期が未完了な場合は、読み書きリクエストを第二ホストに送信するために用いられる。第二ホストは書き込みリクエストに基づいて書き込み対象データを第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ指定データをバックアップホストに送信する。バックアップホストは指定データを呼び出し側に送信する。すなわち、第二ホストからバックアップホストへの全量データの同期が未完了な場合は、第一ホストの仮想マシンがバックアップホストへの移行が未完了で、バックアップホストはその上で起動された仮想マシンが受信した読み書きリクエストに対して処理することができず、読み書きリクエストを、仮想マシンのデータがバックアップされた第二ホストに転送して処理を行うことによって、仮想マシンの高速復旧を実現し、仮想マシン上のサービス停止を避けることができる。
【００６８】
第二処理ユニット５０は、第二ホストからバックアップホストへの全量データの同期が完了した場合は、バックアップホストに読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを第二ホストバックアップにバックアップさせるために用いられる。具体的に、バックアップホストに読み書きリクエストを実行する過程は第二ホストに読み書きリクエストを実行する過程と同じであり、すなわち書き込みリクエストに基づいて書き込み対象データをバックアップホストに記憶し、又は読み出しリクエストに基づいて指定データを取得する。このように、第二ホストからバックアップホストへの全量データの同期が完了した場合は、バックアップホストが仮想マシンを起動しかつ読み書きリクエストを受信する時、読み書きリクエストをバックアップホストのローカルディスクに直接記憶し、さらに読み書きリクエストを第二ホストにスキップして実行することはなくなり、但しバックアップホストにある仮想マシン上の読み書きリクエストを第二ホストにバックアップし、そのバックアップ過程はデータバックアップユニット１０のデータバックアップ過程と同じである。
【００６９】
データ送信ユニット６０は、バックアップホストは指定データを呼び出し側に送信するために用いられる。理解すべきことは、第二ホストからバックアップホストへの全量データの同期が完了した場合、バックアップホストに読み書きリクエストを実行し、読み出しリクエストに対応する指定データを取得しかつ呼び出し側に送信する。又は、第二ホストからバックアップホストへの全量データの同期が未完了な場合は、読み書きリクエストを第二ホストに送信し、第二ホストに読み書きリクエストを実行し、読み出しリクエストに対応する指定データを取得しかつ呼び出し側に送信する。
【００７０】
本実施例が提供する仮想マシンの高速復旧装置において、第一ホストのシステムダウン、パワーオフ又は他のサービスを提供し続けることができない場合、バックアップホストに第一ホストの仮想マシンを起動することができ、かつ第二ホストからバックアップホストへの全量データの同期が未完了な場合、バックアップホストの仮想マシンが受信した読み書きリクエストを、仮想マシンのバックアップデータを有する第二ホストに転送して実行することによって、仮想マシンがストレージしなく高速移行及び故障復旧を実現することができ、共有ストレージを必要とせず、かつ仮想マシンのロバスト性（Ｒｏｂｕｓｔ）を高め、仮想マシンをアクセスさせるための利用可能なストレージがないことによって引き起こす仮想マシン上のサービス停止現象の発生を避ける。
【００７１】
次に発明を実施するための形態を併せて該仮想マシンの高速復旧装置を説明し、発明を実施するための形態において、該仮想マシンの高速復旧装置は、以下のユニットを含む。
【００７２】
データバックアップユニット１０は、第一ホストＡと第二ホストＢとをピアツーピア記憶に結び付けて、第一ホストＡの仮想マシン上の読み書きリクエストを第二ホストＢにバックアップするために用いられるもの。これに応じて、第二ホストＢの仮想マシン上の読み書きリクエストをも第一ホストＡにバックアップする。なお、第一ホストＡ上の仮想マシンは第二ホストＢ上の仮想マシンと相互に独立しているが、仮想マシンのデータを相互にバックアップし、それによって、第一ホストＡと第二ホストＢがシステムダウン又は他の故障で正常に稼働できず、仮想マシンを高速に復旧することができなくてそれの提供するサービスが停止することを避ける。具体的に、データバックアップユニット１０は、以下のシステムやモジュールを含む。
【００７３】
第一ホストＡのゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）は、読み書きリクエストを受信し、かつ読み書きリクエストをリングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）に格納するために用いられる。ここで、ゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）は第一ホストＡの仮想マシンに実行するオペレーティングシステムである。リングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）は通信プログラムにおいて、通信において送信と受信のデータを格納するためのデータ構造で、通信プログラムに対してバッファへの相互排他アクセスを提供することができる。
【００７４】
第一ホストＡのＱｅｍｕモジューはリングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）から読み書きリクエストを取得する。ここで、Ｑｅｍｕモジュールは第一ホストのホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）に設置され、読み書きリクエストは未処理の読み書きリクエストである。ここで、Ｑｅｍｕは独立に実行可能なソフトウェアで、マシンをシミュレーションするために用いられ、高い機動性とソフトウェア移植性を有する。Ｑｅｍｕは主に一つの特殊な“リコンパイラ”によって、特定のプロセッサについてコーディングする二進数コードを他の種類、例えばＰＰＣｍａｃに実行するＭＩＰＳコード、又はＸ８６  ＰＣに実行するＡＲＭコードに変換する。ＱｅｍｕモジュールにおけるＩＯパスは大いに、ｖｉｒｔｉｏ後端（ａ）、汎用ブロックデバイス層（ｂ）及び駆動層（ｃ）のような三層に分けられ、ｖｉｒｔｉｏ後端（ａ）及び汎用ブロックデバイス層（ｂ）のインターフェース部分に一部のコードを組み込むことによって読み書きリクエストを第二ホストＢに伝送して他のデバイスを経由せずに直接バックアップすることを実現する。
【００７５】
第一ホストＡのＱｅｍｕモジュールは、読み出しリクエストに基づき、第一ホストＡのローカルディスクから指定データを取得し、又は第一ホストＡのＱｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを第一ホストＡのローカルディスクに記憶するために用いられる。
【００７６】
第一ホストＡのＱｅｍｕモジュールは、書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信するために用いられる。ここで、Ｓｙｎｃ  Ｏｒｉｇモジュールは第一ホストＡのホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）に設置され、第一ホストＡの読み書きリクエストの転送モジュールである。
【００７７】
ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは、書き込みリクエストを第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールに送信するために用いられる。第一ホストＡのＳｙｎｃ  Ｏｒｉｇモジュールと第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールとの間はネットワークを介して接続される。
【００７８】
第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは、書き込みリクエストを受信し、書き込みリクエストに対応する書き込み対象データを第二ホストのローカルディスクに記憶し、それによって第一ホストＡの仮想マシン上の書き込みリクエストを第二ホストＢにバックアップすることを実現するために用いられる。Ｓｙｎｃ  Ｔｅｒｍモジュールは第二ホストＢのホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）に設置され、第二ホストＢの読み書きリクエストの受信モジュールである。
【００７９】
さらに、第一ホストＡと第二ホストＢとをピアツーピア記憶に結び付ける擬似コードは以下のとおりである。
Ｈｏｓｔ  Ａ  ｃｏｎｆｉｇ  ｆｉｌｅ：
ＰｅｅｒＩＤ  ＝  １
Ｈｏｓｔ  Ｂ  ｃｏｎｆｉｇ  ｆｉｌｅ：
ＰｅｅｒＩＤ  ＝  １
【００８０】
第一ホストＡと第二ホストＢを起動した後、クラウドへそれぞれのＰｅｅｒＩＤをサーバーまで報告し、サーバーはＰｅｅｒＩＤが同じである二台のホストをピアツーピア記憶として登録する。
Ｉｆ（ｈｏｓｔＡ．ｐｅｅｒＩｄ  ＝＝  ｈｏｓｔＢ．ｐｅｅｒＩｄ）
｛  Ｐｅｅｒ  ｐｅｅｒ  ＝  ｎｅｗ  Ｐｅｅｒ（ｈｏｓｔＡ，ｈｏｓｔＢ）；
ｐｅｅｒ．ａｄｄ（ｐｅｅｒ）；  ｝
【００８１】
さらに、第一ホストＡの仮想マシン上の読み書きリクエストを第二ホストＢにバックアップする擬似コードは以下を含む。第一ホストＡのＱｅｍｕモジュールが書き込みリクエストを受信した後、書き込みリクエストに対応する書き込み対象データを第一ホストＡのローカルディスクに記憶する以外に、さらに書き込みリクエストに対応する書き込み対象データを第一ホストＡのホストオペレーティングシステム（ＨｏｓｔＯＳ）の共有内部メモリに記憶する。続いて、該書き込みリクエストについて一つのｓｅｑｕｅｎｃｅ番号を生成し、かつ書き込みリクエストの修正する必要なｓｅｃｔｏｒ開始番号及びｓｅｃｔｏｒ数をｒｅｑｕｅｓｔに記入し、ホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）のＳｙｎｃ  Ｏｒｉｇモジュールに渡して処理を行う。ホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）はｒｅｑｕｅｓｔを受信し、ｒｅｑｕｅｓｔと共有内部メモリ内の書き込み対象データｄａｔａを一つのＴＣＰデータパッケージに構成させ、第二ホストＢのホストオペレーティングシステム（ＨｏｓｔＯＳ）に送信する。第二ホストＢのホストオペレーティングシステム（ＨｏｓｔＯＳ）はデータパッケージ内の書き込み対象データｄａｔａをｒｅｑｕｅｓｔに指定されたｓｅｃｔｏｒ内に書き込み、それによりホストオペレーティングシステム（Ｈｏｓｔ  ＯＳ）の仮想マシンの書き込みリクエストをホストオペレーティングシステム（ＨｏｓｔＯＳ＿Ｂ）にバックアップすることを実現する。
【００８２】
バックアップマシン起動ユニット２０は、第一ホストＡがシステムダウンする場合、バックアップホストＣは第一ホストＡの仮想マシンを起動するために用いられる。本実施例において、第一ホストＡのシステムダウン又はサービスを提供し続けることができない場合、第一ホストＡの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証するために、他の一台の正常に稼働するマシンに第一ホストＡの仮想マシンを起動する必要がある。第二ホストＢで既に一定数量の仮想マシンを担持しているため、第一ホストＡの仮想マシンを第二ホストＢに移行して復旧すると、第二ホストＢのローカルディスクにバックアップされた第一ホストＡの仮想マシンデータを直ちに取得することができるが、第二ホストＢの仮想マシンへのアクセス負荷が高すぎることを引き起こし、第二ホストＢが外にサービスを提供する能力に影響を与える。ここで、バックアップホストＣはクラスタにおける一台の正常に稼働する予備マシンで、バックアップホストＣのハードウェア構成は第一ホストＡにおける全ての仮想マシンを起動することができるという要件を満す必要があり、それにより第一ホストＡの仮想マシンが提供するサービスを可能な限り早めに復旧することを保証する。以下にバックアップホストＣ上で起動された第一ホストＡの仮想マシンをバックアップホストＣの仮想マシンと呼ぶ。
【００８３】
リクエスト判断ユニット３０は、バックアップホストＣ上で起動された仮想マシンに、呼び出し側から送信する読み書きリクエストを受信させ、かつ第二ホストＢからバックアップホストＣへの全量データの同期が完了したか否かを判断するために用いられる。具体的に、バックアップホストＣは、第二ホストから送信する同期完了の通知が提供されるか否かを判断し、同期完了の通知を受信した場合、第二ホストＢからバックアップホストＣへの全量データの同期が完了したと見なされ、逆に、同期完了の通知を受信しなかった場合、第二ホストＢからバックアップホストＣへの全量データの同期が未完了と見なされる。
【００８４】
図５に示すとおり、リクエスト判断ユニット３０は第一判断サブユニット３１、第一同期サブユニット３２、第二判断サブユニット３３、第一確定サブユニット３４及び第二確定サブユニット３５を含む。
【００８５】
第一判断サブユニット３１は、第二ホストＢに現在の実行指標がプリセット条件に達するか否かを判断させるために用いられる。すなわちバックアップホストＣに第一ホストＡの仮想マシンを起動した後、第二ホストＢは現在のネットワークのスループット、磁気ディスクへのアクセス等の現在の実行指標をリアルタイムに検出し、かつ各項の現在の実行指標がいずれもプリセット条件に達してから、ステップＳ３２を実行する。
【００８６】
第一同期サブユニット３２は、プリセット条件に達する場合、第二ホストＢにバックアップされた第一ホストＡの仮想マシン上の読み書きリクエストをバックアップホストＣに同期し、すなわち第二ホストＢの仮想マシンのデータをバックアップホストＣに同期するために用いられる。
【００８７】
第二判断サブユニット３３は、第二ホストＢに未同期のデータが存在するか否かを判断するために用いられる。第二ホストＢはさらに、未同期のデータが存在するか否かをリアルタイムに判断し、それによって第二ホストＢからバックアップホストＣへの全量データの同期が完了したか否かを確定する。
【００８８】
第一確定サブユニット３４は、未同期データが存在する場合、第二ホストＢからバックアップホストＣへの全量データの同期が未完了と確定し、未同期のデータをバックアップホストＣに送信してバックアップを行うために用いられる。
【００８９】
第二確定サブユニット３５は、未同期データが存在しない場合、第二ホストＢからバックアップホストＣへの全量データの同期が完了したと確定し、バックアップホストＣに同期完了の通知を送信するために用いられる。
【００９０】
さらに、リクエスト判断ユニット３０において、バックアップホストＣのゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）は読み書きリクエストを受信し、かつ読み書きリクエストをリングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）に格納する。
【００９１】
第一処理ユニット４０は、第二ホストＢからバックアップホストＣへの全量データの同期が未完了な場合、読み書きリクエストを第二ホストＢに送信するために用いられる。第二ホストＢは書き込みリクエストに基づいて書き込み対象データを第二ホストＢに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ指定データをバックアップホストＣに送信する。バックアップホストＣは指定データを呼び出し側に送信する。具体的に、第一処理ユニット４０は以下のモジュールを含む。
【００９２】
バックアップホストＣのＱｅｍｕモジュールは、リングバッファ（ｒｉｎｇ  ｂｕｆｆｅｒ）から読み書きリクエストを取得するために用いられる。
【００９３】
バックアップホストＣのＱｅｍｕモジュールは、読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信するために用いられる。
【００９４】
ホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールは、読み書きリクエストを第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールに送信するために用いられる。
【００９５】
第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールは、読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを第二ホストＢのローカルディスクに記憶するために用いられる。
【００９６】
第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールは、読み出しリクエストに基づき、第二ホストＢのローカルディスクから指定データを取得し、かつ指定データをバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールに送信するために用いられる。
【００９７】
バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは、指定データを受信し、かつ指定データをバックアップホストＣのＱｅｍｕモジュールに送信するために用いられる。
【００９８】
バックアップホストＣのＱｅｍｕモジュールは、指定データをバックアップホストＣのゲストオペレーティングシステム（ＧｕｅｓｔＯＳ）に送信し、さらに呼び出し側に送信するために用いられる。
【００９９】
さらに、バックアップホストＣの仮想マシンの読み書きリクエストを第二ホストＢに転送して処理を行う擬似コードが以下のとおりである。
【０１００】
バックアップホストＣのＱｅｍｕモジュールを起動する前、その構成ファイル内に、ｒｅｍｏｔｅＩＯフラグをＴｒｕｅに設定する。
【０１０１】
バックアップホストＣのＱｅｍｕモジュールを起動する時、ｒｅｍｏｔｅＩＯ＝  Ｔｒｕｅを読み取ると、その後に受信した各ＩＯリクエスト（すなわち読み書きリクエスト）は、いずれもローカルディスクへのアクセスを行うことではなく、共有内部メモリを介してＳｙｎｃ  Ｏｒｉｇモジュールに報知し、Ｓｙｎｃ  Ｏｒｉｇモジュールにより第二ホストＢに転送される。
【０１０２】
第二ホストＢのＳｙｎｃ  ＴｅｒｍモジュールはバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールの書き込みリクエストを受信した後、書き込みデータを、他のデバイスを経由せずにバックアップホストＣのローカルディスクに直接バックアップする。
【０１０３】
第二ホストＢのＳｙｎｃ  ＴｅｒｍモジュールはバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールの読み出しリクエストを受信した後、指定ｓｅｃｔｏｒから指定データを読み取った後、ＴＣＰを介してバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールに送り返す。
【０１０４】
バックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールは第二ホストＢのフィードバックされた指定データを受信した後、このフィードバックされた指定データを共有内部メモリに書き込み、かつＴＣＰメッセージを介してバックアップホストＣのＱｅｍｕモジュールに通知する。
【０１０５】
バックアップホストＣのＱｅｍｕモジュールはバックアップホストＣのＳｙｎｃ  ＯｒｉｇモジュールのＴＣＰメッセージ通知を受信した後、指定共有内部メモリから指定データを取得し、かつ呼び出し側にフィードバックする。
【０１０６】
仮想マシンがバックアップホストに安定した後、第二ホストＢからバックアップホストＣへのデータ同期を起動する。仮想マシンがストレージしなくバックアップホストＣへの移行が完了した後、第二ホストＢからバックアップホストＣへの全量データの同期を起動する過程の擬似コードは以下のとおりである。
【０１０７】
第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールは、ローカルディスクのｑｃｏｗ２ファイルへのｓｅｃｔｏｒ書き込み状況を解析することにより、書き込まれたｓｅｃｔｏｒを一つずつバックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールに送信する。バックアップホストＣのＳｙｎｃ  Ｏｒｉｇモジュールは第二ホストＢのＳｙｎｃ  Ｔｅｒｍモジュールが送信した同期ｓｅｃｔｏｒデータを受信した後、データコンテンツをローカルディスクのｑｃｏｗ２ファイルに書き込む。
【０１０８】
第二ホストＢに実行する擬似コードは以下のとおりである。
Ｆｏｒ（ｅｖｅｒｙ  ｗｒｉｔｅｎ  ｓｅｃｔｏｒ）
｛  Ｓｅｎｄ＿ｔｏ＿ｈｏｓｔＣ（ｓｅｃｔｏｒＩｄｘ，ｓｅｃｔｏｒ＿ｄａｔａ）；  ｝
【０１０９】
バックアップホストＣに実行する擬似コードは以下のとおりである。
Ｆｏｒ（ｓｅｃｔｏｒ＿ｄａｔａ  ｒｅｃｅｉｖｅ  ｆｒｏｍ  ｈｏｓｔＢ）
｛  Ｗｒｉｔｅ（ｑｃｏｗ２ｆｉｌｅ，ｓｅｃｔｏｒＩｄｘ，ｓｅｃｔｏｒ＿ｄａｔａ）；  ｝
【０１１０】
バックアップホストＣは全量データの同期が完了した後、仮想マシンの読み書きリクエストをバックアップホストＣのローカルディスクに復旧して実行し、さらに第二ホストＢに転送しない。この時、第二ホストＢに実行する擬似コードは以下のとおりである。
Ｉｆ（ｅｖｅｒｙ＿ｗｒｉｔｅｎ＿ｓｅｃｔｏｒ＿ｓｅｎｄ  ＝＝  ｔｒｕｅ）
｛  Ｓｅｎｄ＿ｔｏ＿ｈｏｓｔＣ（ａｌｌ＿ｄａｔａ＿ｓｙｎｃｈｒｏｎｉｚｅｄ  ＝  ｔｒｕｅ）；  ｝
【０１１１】
バックアップホストＣに実行する擬似コードは以下のとおりである。
Ｉｆ（Ｒｅｃｅｉｖｅｄ＿ｍｓｇ（ｈｏｓｔＢ，ａｌｌ＿ｄａｔａ＿ｓｙｎｃｈｒｏｎｉｚｅｄ  ＝  ｔｒｕｅ））
｛  Ｑｅｍｕ．ｒｅｍｏｔｅＩＯ  ＝  Ｆａｌｓｅ；  ｝
【０１１２】
（実施例３）
図６は本発明の第３実施例における仮想マシンの高速復旧システムの原理ブロック図である。図６に示すとおり、該仮想マシンの高速復旧システムはサーバー４、サーバー４に通信的に接続された第一ホスト１、第二ホスト２及びバックアップホスト３を含む。ここで、第一ホスト１、第二ホスト２及びバックアップホスト３はいずれも携帯電話、タブレットパソコン、パーソナルデジタルアシスタント（ＰｅｒｓｏｎａｌＤｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ、ＰＤＡ）、デスクトップコンピュータ、サーバー等の端末であってもよい。タブレットパソコンを例として、図７に示すとおり、各タブレットパソコン７００はいずれも高周波（ＲａｄｉｏＦｒｅｑｕｅｎｃｙ，ＲＦ）回路７０１、メモリ７０２、入力モジュール７０３、表示モジュール７０４、プロセッサ７０５、オーディオ回路７０６、ＷｉＦｉ（ＷｉｒｅｌｅｓｓＦｉｄｅｌｉｔｙ）モジュール７０７及び電源７０８を含む。
【０１１３】
プロセッサ７０５に接続された入力モジュール７０３はタブレットパソコン７００のユーザーインタラクション装置として、ユーザーとタブレットパソコン７００との間のインタラクションを実現するために用いられる。ここで、第一ホスト１の入力モジュール７０３はユーザーが入力する第一バックアップ記憶命令を受信し、対応するプロセッサ７０５に送信し、第一バックアップ記憶命令はピアツーピアのＩＤを含む。第二ホスト２の入力モジュールはユーザーが入力する第二バックアップ記憶命令を受信し、対応するプロセッサ７０５に送信し、第二バックアップ記憶命令はピアツーピアのＩＤを含む。第一バックアップ記憶命令と第二バックアップ記憶命令は同一ピアツーピアのＩＤを含み、それによって第一バックアップ記憶命令と第二バックアップ記憶命令に基づき、第一ホスト１と第二ホスト２とをピアツーピア記憶に結び付け、それによって第一ホスト１の仮想マシン上の読み書きリクエストを第二ホスト２にバックアップさせる。これに応じて、バックアップホスト３の入力モジュール７０３はユーザーが入力する仮想マシン起動命令を受信し、かつ仮想マシン起動命令をプロセッサ７０５に送信し、該仮想マシン起動命令は第二バックアップ記憶命令と同じピアツーピアのＩＤを含み、それによって第一ホスト１のシステムダウン又はパワーオフの場合、バックアップホスト３に第一ホスト１の仮想マシンを起動することを実現させる。
【０１１４】
一部の実施例において、入力モジュール７０３はユーザーが入力する数字又は文字情報の受信、及びタブレットパソコン７００のユーザー設定及び機能制御に関する信号入力の生成に用いることができる。一部の実施例において、該入力モジュール７０３はタッチパネル７０３１を含むことができる。タッチパネル７０３１は、タッチスクリーンとも呼ばれ、ユーザーによるその上または近傍のタッチ操作（例えばユーザーは手指、タッチペン等のいかなる適切な物体又は付属部品を使用してタッチパネル７０３１に行われる操作）を収集し、かつ事前に設定されたプログラムに基づいて対応する接続装置を駆動することができる。必要に応じて、タッチパネル７０３１はタッチ検出装置とタッチコントローラの二つの部分を含むことができる。ここで、タッチ検出装置はユーザーのタッチ位置を検出し、かつタッチ操作による信号を検出し、信号をタッチコントローラに送信する。タッチコントローラはタッチ検出装置からタッチ情報を受信し、かつそれを接点座標に変換し、さらに該プロセッサ７０５に送信し、かつプロセッサ７０５から送信する命令を受信して実行することができる。この他、抵抗膜方式、静電容量方式、赤外線方式及び表面弾性波方式等の複数の種類を採用してタッチパネル７０３１を実現することができる。タッチパネル７０３１以外に、入力モジュール７０３はさらに他の入力デバイス７０３２を含むことができ、他の入力デバイス７０３２は物理キーボード、機能キー（例えば音量制御プッシュボタン、スイッチプッシュボタン等）、トラックボール、マウス、ジョイスティック等の一つ又は複数を含むことができるが、これに限定されない。
【０１１５】
一部の実施例において、表示モジュール７０４はユーザーが入力する情報又はユーザーに提供する情報及びタブレットパソコン７００の各種のメニューインターフェースの表示に用いることができる。表示モジュール７０４は表示パネル７０４１を含むことができ、必要に応じて、ＬＣＤ又は有機エレクトロルミネッセンス  ダイオード（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ−Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ、ＯＬＥＤ）等の形式を採用して表示パネル７０４１を構成することができる。
【０１１６】
理解すべきことは、タッチパネル７０３１は表示パネル７０４１をカバーして、タッチディスプレイスクリーンを形成することができ、該タッチディスプレイスクリーンはその上または近傍のタッチ操作を検出した後、プロセッサ７０５へ伝送し、それによってタッチイベントのタイプを判定し、続いてプロセッサ７０５はタッチイベントのタイプに基づいて対応する視覚出力をタッチディスプレイスクリーンに提供する。
【０１１７】
タッチディスプレイスクリーンはアプリケーションプログラムインターフェース表示領域及び常用コントロール表示領域を含む。該アプリケーションプログラムインターフェース表示領域及び該常用コントロール表示領域の配列方式が限定されず、上下配列、左右配列等の二つの表示領域を区別可能な配列方式であってもよい。該アプリケーションプログラムインターフェース表示領域はアプリケーションプログラムのインターフェースの表示に用いることができる。各インターフェースは少なくとも一つのアプリケーションプログラムのアイコン及び／又はｗｉｄｇｅｔデスクトップコントロール等のインターフェース要素を含むことができる。該アプリケーションプログラムインターフェース表示領域はいかなるコンテンツを含まない空のインターフェースであってもよい。該常用コントロール表示領域は使用率が高いコントロールの表示に用いられ、例えば、設定ボタン、インターフェース番号、スクロールバー、電話帳アイコン等のアプリケーションプログラムのアイコン等。
【０１１８】
ＷｉＦｉモジュール７０７はタブレットパソコン７００のネットワークインターフェースとして、タブレットパソコン７００と他のデバイスとのデータ交換を実現することができる。ネットワークインターフェースとリモート記憶装置（すなわち呼び出し側）はネットワーク通信を介して接続される。本実施例において、バックアップホスト３におけるＷｉＦｉモジュール７０７はリモート記憶装置（すなわち呼び出し側）からの読み書きリクエストを受信することができ、プロセッサ７０５によって処理した後、書き込みリクエストに対応する指定データを取得し、かつＷｉＦｉモジュール７０７を介して指定データを呼び出し側に送信する。実施例において、ＷｉＦｉネットワークを介して該ネットワークインターフェースに接続されたリモート記憶装置（すなわち呼び出し側）はクラウドサーバー又は他のデータベースであってもよい。
【０１１９】
メモリ７０２は第一メモリ７０２１及び第二メモリ７０２２を含む。一部の実施例において、第一メモリ７０２１はコンピュータが読み取り可能な不揮発性記憶媒体であってもよく、その上にオペレーティングシステム、データベース及びコンピュータが実行可能な命令が記憶される。コンピュータが実行可能な命令はプロセッサ７０５に実行されることができ、図１に示す実施例１の仮想マシンの高速復旧方法を実現するために用いられる。メモリ７０２に記憶されたデータベースは各種のデータを記憶するために用いられ、例えば、読み出しリクエストに対応する指定データ、書き込みリクエストに対応する書き込み対象データ等のような上記仮想マシンの高速復旧方法に係る各種のデータ。第二メモリ７０２２はタブレットパソコン７００の内部記憶装置であってもよく、コンピュータが読み取り可能な不揮発性記憶媒体内のオペレーティングシステム、データベース及びコンピュータが実行可能な命令に高速キャッシングの実行環境を提供する。
【０１２０】
本実施例において、プロセッサ７０５はタブレットパソコン７００の制御センターで、各種のインターフェースと回路を利用して携帯電話全体の各部分に接続され、第一メモリ７０２１に記憶されたコンピュータが実行可能な命令及び／又はデータベース内のデータを実行又は実施することにより、タブレットパソコン７００の各種の機能とデータ処理を実行し、それによりタブレットパソコン７００に対して全体的な監視を行う。必要に応じて、プロセッサ７０５は一つ又は複数の処理モジュールを含むことができる。
【０１２１】
本実施例において、該第一メモリ７０２１に記憶されたコンピュータが実行可能な命令及び／又はデータベース内のデータを実行することにより、プロセッサ７０５は、第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるステップと、前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するステップと、バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断するステップと、第二ホストからバックアップホストへの全量データの同期が未完了な場合は、前記読み書きリクエストを前記第二ホストに送信するステップと、前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するステップと、前記バックアップホストは前記指定データを前記呼び出し側に送信するステップとを実行するのに用いられる。
【０１２２】
前記プロセッサ７０５はさらに以下のステップを実行する。第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせる。
【０１２３】
好ましくは、プロセッサ７０５は、前記バックアップホストのゲストオペレーティングシステムは前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するステップと、
前記バックアップホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信するステップと、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信するステップと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記読み書きリクエストを受信するステップと、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信するステップと、
前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信するステップと、
前記バックアップホストのＱｅｍｕモジュールは前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信するステップと、をさらに実行する。
【０１２４】
好ましくは、前記第一ホストの仮想マシンデータを前記第二ホストにバックアップさせるには、
前記第一ホストのゲストオペレーティングシステムは読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記第一ホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得することと、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶することと、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶することを含む。
【０１２５】
好ましくは、プロセッサ７０５は、前記第二ホストは現在の実行指標がプリセット条件に達するか否かを判断するステップと、
現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期するステップと、
前記第二ホストに未同期データが存在するか否かを判断するステップと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であり、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了し、前記バックアップホストに同期完了の通知を送信するステップと、をさらに実行する。
【０１２６】
本実施例が提供する仮想マシンの高速復旧システムにおいて、第一ホストがシステムダウン又はパワーオフされると、バックアップホストに第一ホストの仮想マシンを起動し、かつ第二ホストからバックアップホストへの全量データの同期が未完了な場合、バックアップホストの仮想マシンが受信した読み書きリクエストを仮想マシンのバックアップデータを有する第二ホストに転送して実行し、仮想マシンがストレージしなく高速移行及び故障復旧を実現することができ、共有ストレージを必要とせず、かつ仮想マシンのロバスト性を高め、仮想マシンをアクセスさせるための利用可能なストレージがないことによって引き起こす仮想マシン上のサービス停止現象の発生を避ける。
【０１２７】
当業者は、本明細書で開示されている実施例を併せて述べた各例に係るモジュールやアルゴリズムのステップは、電子ハードウェア、又はコンピュータソフトウェアと電子ハードウェアとの結合で実現できると分かる。これらの機能をハードウェア又はソフトウェア方式で実行するのかは、技術的解決手段の特定の応用及び設計の拘束条件によって決められる。当業者は各特定の応用に対して異なる方法を使って、述べた機能を実現することができ、但しこのような実現は本発明の範囲を超えると認識すべきではない。
【０１２８】
当業者は、容易かつ簡潔に説明するため、上記で説明したシステム、装置及びモジュールの具体的な作動過程は、前述方法の実施例における対応する過程を参照することができ、ここでは記載しないと明らかに了解できる。
【０１２９】
本願が提供する実施例において、理解すべきことは、開示されている装置と方法は、他の形態によって実現できる。例えば、以上に説明した装置の実施例は例示に過ぎず、例えば、前記モジュールの区分は、ただロジック機能の区分で、実際に実現する場合に他の区分方式があってもよく、例えば複数のモジュール又はコンポーネントを組み合わせることができ又は他のシステムへ集積することができ、又はいくつかの特徴を無視し、又は実行しなくてもよい。その一方で、表示又は討論したお互いの結合又は直接結合又は通信接続は、いつくかのインターフェース、装置又はモジュールを介する間接結合又は通信接続であってもよいし、電気的、機械的又は他の形式であってもよい。
【０１３０】
前記の分離部品として説明されたモジュールは物理的に分離可能又は分離不可であってもよく、モジュールとして表示される部品は物理的なモジュールであっても、物理的なモジュールではなくてもよく、すなわち一つの場所に位置することができ、又は複数のネットワークモジュールに分布することもできる。実際の要求に応じてそのうちの一部又は全てのモジュールを選択して本実施例の解決手段の目的を実現することができる。
【０１３１】
さらに、本発明の各実施例における各機能モジュールを一つの処理モジュールに集積することができ、各モジュールは物理的に独立することもでき、二つ又は二つ以上のモジュールを一つのモジュールに集積することもできる。
【０１３２】
前記機能をソフトウェア機能モジュールの形式で実現して独立製品として販売又は使用する場合、それを一つのコンピュータが読み取り可能な記憶媒質に記憶することができる。このような理解に基づき、本発明の技術的解決手段は本質的に、又は従来技術に貢献する部分、又は該技術的解決手段の部分はソフトウェア製品の形式で体現されることができ、該コンピュータソフトウェア製品が一つの記憶媒体に記憶され、複数の命令を含んで、一台のコンピュータ装置（パーソナルコンピュータ、サーバー、又はネットワークデバイス等であってもよい）に、本発明の各実施例に記載の前記方法の全て又は一部のステップを実行させる。なお、前述の記憶媒質は、ＵＳＢメモリ、リムーバブルハードディスク、ＲＯＭ、ＲＡＭ、磁気ディスク又は光ディスク等の、各種のプログラムコードを記憶可能な媒質を含む。
【０１３３】
上記は、本発明を実施するための形態であるが、本発明の保護範囲はこれに限定されるものではなく、本技術分野に精通しているいかなる当業者も、本発明に開示されている技術範囲において容易に想到しうる変更又は置き換えは、全て本発明の保護範囲内に含まれるものとする。このため、本発明の保護範囲は請求項の保護範囲を基準とすべきである。
【０１３４】
（付記）
（付記１）
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせることと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動することと、
バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断することと、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信することと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信することと、
前記バックアップホストは前記指定データを前記呼び出し側に送信することと、を含む、
ことを特徴とする仮想マシンの高速復旧方法。
【０１３５】
（付記２）
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせることをさらに含む、
ことを特徴とする付記１に記載の仮想マシンの高速復旧方法。
【０１３６】
（付記３）
前記バックアップホストのゲストオペレーティングシステムは前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記バックアップホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記読み書きリクエストを受信することと、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信することと、
前記バックアップホストのＱｅｍｕモジュールは前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信することと、をさらに含む、
ことを特徴とする付記１に記載の仮想マシンの高速復旧方法。
【０１３７】
（付記４）
前記第一ホストの仮想マシンデータを前記第二ホストにバックアップさせるには、
前記第一ホストのゲストオペレーティングシステムは読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記第一ホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得することと、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶することと、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶することと、を含む、
ことを特徴とする付記１に記載の仮想マシンの高速復旧方法。
【０１３８】
（付記５）
前記第二ホストは現在の実行指標がプリセット条件に達するか否かを判断することと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期することと、
前記第二ホストに未同期データが存在するか否かを判断することと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であり、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了し、前記バックアップホストに同期完了の通知を送信することと、をさらに含む、
ことを特徴とする付記１〜４のいずれか１つに記載の仮想マシンの高速復旧方法。
【０１３９】
（付記６）
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるために用いられるデータバックアップユニットと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するために用いられるバックアップマシン起動ユニットと、
バックアップホスト上で起動された仮想マシンに、呼び出し側から送信した読み書きリクエストを受信させ、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断して、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信するために用いられるリクエスト判断ユニットと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するために用いられる第一処理ユニットと、
前記バックアップホストは前記指定データを前記呼び出し側に送信するために用いられるデータ送信ユニットと、を含む、
ことを特徴とする仮想マシンの高速復旧装置。
【０１４０】
（付記７）
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるために用いられる第二処理ユニットをさらに含む、
ことを特徴とする付記６に記載の仮想マシンの高速復旧装置。
【０１４１】
（付記８）
前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するために用いられる、前記バックアップホストのゲストオペレーティングシステムと、
前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信するために用いられ、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信するようにする、前記バックアップホストのＱｅｍｕモジュールと、
前記読み書きリクエストを受信するために用いられ、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信する、前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールと、
前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信するために用いられる、前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールと、
前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信するために用いられる、前記バックアップホストのＱｅｍｕモジュールと、をさらに含む、
ことを特徴とする付記６に記載の仮想マシンの高速復旧装置。
【０１４２】
（付記９）
前記データバックアップユニットは、
読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するために用いられる、前記第一ホストのゲストオペレーティングシステムと、
前記リングバッファから前記読み書きリクエストを取得するために用いられ、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶し、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信するようにする、前記第一ホストのＱｅｍｕモジュールと、
前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信するために用いられる、前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールと、
前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶するために用いられる、前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールと、を含む、
ことを特徴とする付記６に記載の仮想マシンの高速復旧装置。
【０１４３】
（付記１０）
前記リクエスト判断ユニットは、
第二ホストは現在の実行指標がプリセット条件に達するか否かを判断するために用いられる第一判断サブユニットと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期するために用いられる第一同期サブユニットと、
前記第二ホストに未同期データが存在するか否かを判断するために用いられる第二判断サブユニットと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であると確定するために用いられる第一確定サブユニットと、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了したと確定し、前記バックアップホストに同期完了の通知を送信するために用いられる第二確定サブユニットと、を含む、
ことを特徴とする付記６〜９のいずれか１つに記載の仮想マシンの高速復旧装置。
【０１４４】
（付記１１）
それぞれプロセッサが設置されている第一ホスト、第二ホスト及びバックアップホストを含み、前記プロセッサは、
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるステップと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するステップと、
バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断するステップと、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信するステップと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するステップと、
前記バックアップホストは前記指定データを前記呼び出し側に送信するステップと、を実行する、
ことを特徴とする仮想マシンの高速復旧システム。
【０１４５】
（付記１２）
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるステップをさらに含む、
ことを特徴とする付記１１に記載の仮想マシンの高速復旧システム。
【０１４６】
（付記１３）
前記バックアップホストのゲストオペレーティングシステムは前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するステップと、
前記バックアップホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信するステップと、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信するステップと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記読み書きリクエストを受信するステップと、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信するステップと、
前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信するステップと、
前記バックアップホストのＱｅｍｕモジュールは前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信するステップと、をさらに含む、
ことを特徴とする付記１１に記載の仮想マシンの高速復旧システム。
【０１４７】
（付記１４）
前記第一ホストの仮想マシンデータを前記第二ホストにバックアップさせるには、
前記第一ホストのゲストオペレーティングシステムは読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記第一ホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得することと、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶することと、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶することと、を含む、
ことを特徴とする付記１１に記載の仮想マシンの高速復旧システム。
【０１４８】
（付記１５）
前記第二ホストは現在の実行指標がプリセット条件に達するか否かを判断するステップと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期するステップと、
前記第二ホストに未同期データが存在するか否かを判断するステップと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であり、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了し、前記バックアップホストに同期完了の通知を送信するステップと、をさらに含む、
ことを特徴とする付記１１〜１４のいずれか１つに記載の仮想マシンの高速復旧システム。
【０１４９】
（付記１６）
前記第一ホスト、第二ホスト及びバックアップホストはいずれも、前記プロセッサに接続されたユーザーインタラクション装置をさらに含み、
前記第一ホストと前記第二ホスト上のユーザーインタラクション装置は、ユーザーが入力した第一バックアップ記憶命令と第二バックアップ記憶命令をそれぞれ受信し、前記第一バックアップ記憶命令と前記第二バックアップ記憶命令に基づいて前記第一ホストと第二ホストとをピアツーピア記憶に結び付けるために用いられ、前記第一バックアップ記憶命令と第二バックアップ記憶命令は同一ピアツーピアのＩＤを含み、
前記バックアップホスト上のユーザーインタラクション装置は、ユーザーが入力した仮想マシン起動命令を受信することによって、前記第一ホストのシステムダウン又はパワーオフの場合、前記バックアップホストに前記第一ホストの仮想マシンを起動するために用いられ、前記仮想マシン起動命令は前記ピアツーピアのＩＤを含む、
ことを特徴とする付記１１に記載の仮想マシンの高速復旧システム。
【０１５０】
（付記１７）
前記バックアップホストは、前記プロセッサに接続されたネットワークインターフェースをさらに含み、前記ネットワークインターフェースは前記呼び出し側から送信した読み書きリクエストを受信し、かつ前記指定データを前記呼び出し側に送信するために用いられる、
ことを特徴とする付記１１に記載の仮想マシンの高速復旧システム。
【０１５１】
（付記１８）
前記第一ホスト上のメモリに、第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶するために用いられるデータベースが設置され、
前記第二ホスト上のメモリに、第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶し、かつバックアップホスト上で起動された前記第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶するために用いられるデータベースが設置され、
前記バックアップホスト上のメモリに、第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶し、かつバックアップホスト上で起動された前記第一ホストの仮想マシン上の読み書きリクエストに対応するデータを記憶するために用いられるデータベースが設置されている、
ことを特徴とする付記１１に記載の仮想マシンの高速復旧システム。
【図１】
2019504374.tif 000003
【図２】
2019504374.tif 000004
【図３】
2019504374.tif 000005
【図４】
2019504374.tif 000006
【図５】
2019504374.tif 000007
【図６】
2019504374.tif 000008
【図７】
2019504374.tif 000009
【手続補正書】
【提出日】平成30年4月13日(2018.4.13)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせることと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動することと、
バックアップホスト上で起動された仮想マシンは呼び出し側から送信した読み書きリクエストを受信し、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断することと、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信することと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信することと、
前記バックアップホストは前記指定データを前記呼び出し側に送信することと、を含む、
ことを特徴とする仮想マシンの高速復旧方法。
【請求項２】
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせることをさらに含む、
ことを特徴とする請求項１に記載の仮想マシンの高速復旧方法。
【請求項３】
前記バックアップホストのゲストオペレーティングシステムは前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記バックアップホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記読み書きリクエストを受信することと、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールは前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信することと、
前記バックアップホストのＱｅｍｕモジュールは前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信することと、をさらに含む、
ことを特徴とする請求項１に記載の仮想マシンの高速復旧方法。
【請求項４】
前記第一ホストの仮想マシンデータを前記第二ホストにバックアップさせるには、
前記第一ホストのゲストオペレーティングシステムは読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納することと、
前記第一ホストのＱｅｍｕモジュールは前記リングバッファから前記読み書きリクエストを取得することと、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶することと、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信することと、
前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールは前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信することと、
前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールは前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶することと、を含む、
ことを特徴とする請求項１に記載の仮想マシンの高速復旧方法。
【請求項５】
前記第二ホストは現在の実行指標がプリセット条件に達するか否かを判断することと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期することと、
前記第二ホストに未同期データが存在するか否かを判断することと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であり、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了し、前記バックアップホストに同期完了の通知を送信することと、をさらに含む、
ことを特徴とする請求項１〜４のいずれか１項に記載の仮想マシンの高速復旧方法。
【請求項６】
第一ホストと第二ホストとをピアツーピア記憶に結び付けて、前記第一ホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるために用いられるデータバックアップユニットと、
前記第一ホストのシステムダウン又はパワーオフの場合、バックアップホストは前記第一ホストの仮想マシンを起動するために用いられるバックアップマシン起動ユニットと、
バックアップホスト上で起動された仮想マシンに、呼び出し側から送信した読み書きリクエストを受信させ、かつ第二ホストからバックアップホストへの全量データの同期が完了したか否かを判断して、第二ホストからバックアップホストへの全量データの同期が未完了な場合、前記読み書きリクエストを前記第二ホストに送信するために用いられるリクエスト判断ユニットと、
前記第二ホストは前記読み書きリクエストを受信し、書き込みリクエストに基づいて書き込み対象データを前記第二ホストに記憶し、又は読み出しリクエストに基づいて指定データを取得しかつ前記指定データをバックアップホストに送信するために用いられる第一処理ユニットと、
前記バックアップホストは前記指定データを前記呼び出し側に送信するために用いられるデータ送信ユニットと、を含む、
ことを特徴とする仮想マシンの高速復旧装置。
【請求項７】
第二ホストからバックアップホストへの全量データの同期が完了した場合、前記バックアップホストに前記読み書きリクエストを実行し、かつバックアップホストの仮想マシン上の読み書きリクエストを前記第二ホストにバックアップさせるために用いられる第二処理ユニットをさらに含む、
ことを特徴とする請求項６に記載の仮想マシンの高速復旧装置。
【請求項８】
前記読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するために用いられる、前記バックアップホストのゲストオペレーティングシステムと、
前記リングバッファから前記読み書きリクエストを取得し、かつ前記読み書きリクエストをホストオペレーティングシステム上のＳｙｎｃ  Ｏｒｉｇモジュールに送信するために用いられ、前記Ｓｙｎｃ  Ｏｒｉｇモジュールは前記読み書きリクエストを前記第二ホストに送信するようにする、前記バックアップホストのＱｅｍｕモジュールと、
前記読み書きリクエストを受信するために用いられ、書き込みリクエストに基づいて書き込み対象データを前記第二ホストのローカルディスクに記憶し、又は読み出しリクエストに基づいて前記第二ホストのローカルディスクから指定データを取得し、かつ前記指定データを前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールに送信する、前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールと、
前記指定データを受信しかつ前記指定データを前記バックアップホストのＱｅｍｕモジュールに送信するために用いられる、前記バックアップホストのＳｙｎｃ  Ｏｒｉｇモジュールと、
前記指定データを前記バックアップホストのゲストオペレーティングシステムに送信するために用いられる、前記バックアップホストのＱｅｍｕモジュールと、をさらに含む、
ことを特徴とする請求項６に記載の仮想マシンの高速復旧装置。
【請求項９】
前記データバックアップユニットは、
読み書きリクエストを受信し、かつ前記読み書きリクエストをリングバッファに格納するために用いられる、前記第一ホストのゲストオペレーティングシステムと、
前記リングバッファから前記読み書きリクエストを取得するために用いられ、前記Ｑｅｍｕモジュールは読み出しリクエストに基づき、前記第一ホストのローカルディスクから指定データを取得し、又は前記Ｑｅｍｕモジュールは書き込みリクエストに基づき、書き込み対象データを前記第一ホストのローカルディスクに記憶し、かつ前記書き込みリクエストをホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールに送信するようにする、前記第一ホストのＱｅｍｕモジュールと、
前記書き込みリクエストを前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールに送信するために用いられる、前記ホストオペレーティングシステムのＳｙｎｃ  Ｏｒｉｇモジュールと、
前記書き込みリクエストを受信し、かつ前記書き込みリクエストに対応する書き込み対象データを前記第二ホストのローカルディスクに記憶するために用いられる、前記第二ホストのＳｙｎｃ  Ｔｅｒｍモジュールと、を含む、
ことを特徴とする請求項６に記載の仮想マシンの高速復旧装置。
【請求項１０】
前記リクエスト判断ユニットは、
第二ホストは現在の実行指標がプリセット条件に達するか否かを判断するために用いられる第一判断サブユニットと、
前記現在の実行指標がプリセット条件に達する場合、前記第二ホストにバックアップされた第一ホストの仮想マシン上の読み書きリクエストをバックアップホストに同期するために用いられる第一同期サブユニットと、
前記第二ホストに未同期データが存在するか否かを判断するために用いられる第二判断サブユニットと、
未同期データが存在する場合、第二ホストからバックアップホストへの全量データの同期が未完了であると確定するために用いられる第一確定サブユニットと、
未同期データが存在しない場合、第二ホストからバックアップホストへの全量データの同期が完了したと確定し、前記バックアップホストに同期完了の通知を送信するために用いられる第二確定サブユニットと、を含む、
ことを特徴とする請求項６〜９のいずれか１項に記載の仮想マシンの高速復旧装置。
【国際調査報告】
2019504374.tif 000010
2019504374.tif 000011
2019504374.tif 000012
2019504374.tif 000013