(57)【特許請求の範囲】
【請求項１】
仮想マシンスナップショットの作成コマンドを受信するステップと、
仮想マシンがオン状態であるか否かを判定するステップと、
前記仮想マシンがオン状態である場合に、前記作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルにおけるトップファイルをリネームするステップと、
前記トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開くステップと、
前回のスナップショット作成におけるリネームされたトップファイルと当該リネームされたトップファイルに依存するファイルがアップロード済みのスナップショットファイルであるか否かに基づいて、前回のスナップショット作成が成功したか否かを判定するステップと、
前回のスナップショット作成が成功した場合に、前記リネームされたトップファイルを第１スナップショットファイルとするステップと、
前記第１スナップショットファイルをファイル管理サーバーにアップロードするステップと、を含むこと
を特徴とする仮想マシンシステムディスクのスナップショットの作成方法。
【請求項２】
アップロードが成功したことに応答して、前記リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定するステップと、
前記リネームされたトップファイルの依存ファイルが履歴スナップショットファイルである場合に、前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するステップと、
前記新規作成されたトップファイルの依存を前記新たな履歴スナップショットファイルに変更し、新規作成されたトップファイルを改めて開くステップと、をさらに含むこと
を特徴とする請求項１に記載の方法。
【請求項３】
前記の前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するステップにおいては、
前記リネームされたトップファイルおよび前記履歴スナップショットファイルをソースファイルとしてバックアップするステップと、
バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認するステップと、
バックアップファイルの依存関係とソースファイルの依存関係が異なる場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更するステップと、
バックアップファイルの依存関係とソースファイルの依存関係が同じである場合に、前記バックアップファイルを合併して前記新たな履歴スナップショットファイルを取得するステップと、
前記ソースファイルを削除するステップと、を含むこと
を特徴とする請求項２に記載の方法。
【請求項４】
前記の前回のスナップショット作成が成功したか否かを判定するステップにおいては、
すべての依存されるファイルの一意識別子を抽出するステップと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定するステップと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定するステップと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定するステップと、を含むこと
を特徴とする請求項１に記載の方法。
【請求項５】
前回のスナップショット作成が失敗した場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併するステップと、
前記第２スナップショットファイルをファイル管理サーバーにアップロードするステップと、をさらに含むこと
を特徴とする請求項１に記載の方法。
【請求項６】
前記仮想マシンがオフ状態である場合に、前記作成コマンドが受信されたことに応答して、前記仮想マシンのシステムディスクファイルのトップファイルをコピーし、第３スナップショットファイルを取得するステップと、
前記第３スナップショットファイルをファイル管理サーバーにアップロードするステップと、をさらに含むこと
を特徴とする請求項１に記載の方法。
【請求項７】
スナップショットロールバックコマンドを受信するステップと、
前記スナップショットロールバックコマンドを受信したことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするステップと、
ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併するステップと、をさらに含むこと
を特徴とする請求項１〜６のいずれかに記載の方法。
【請求項８】
前記のスナップショットロールバックコマンドを受信するステップにおいては、ロールバックコマンドを選択するインターフェースを表示するステップと、前記ロールバックコマンドに対する第１選択操作を受信するステップと、前記第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示するステップと、前記ロールバック時点に対する第２選択操作を受信するステップと、を含んでおり、
前記の前記スナップショットロールバックコマンドが受信されたことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするステップにおいては、前記第２選択操作が受信されたことに応答して、前記ファイル管理サーバーから前記第２選択操作に適合するスナップショットファイルをダウンロードするステップを含むこと
を特徴とする請求項７に記載の方法。
【請求項９】
前記仮想マシンはオープンソースのクラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋによりハードウェア仮想化技術ｑｅｍｕ−ｋｖｍに基づき作成される仮想マシンであり、
前記仮想マシンのシステムディスクファイルフォーマットはｑｃｏｗ２フォーマットのリンク構造であること
を特徴とする請求項８に記載の方法。
【請求項１０】
前記システムディスクファイルのリンクの長さは４以下であること
を特徴とする請求項９に記載の方法。
【請求項１１】
仮想マシンスナップショットの作成コマンドを受信する第１受信ユニットと、
仮想マシンがオン状態であるか否かを判定する第１判定ユニットと、
前記仮想マシンがオン状態である場合に、前記作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルのトップファイルをリネームする命名ユニットと、
前記トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開く新規作成ユニットと、
前回のスナップショット作成におけるリネームされたトップファイルと当該リネームされたトップファイルに依存するファイルがアップロード済みのスナップショットファイルであるか否かに基づいて、前回のスナップショット作成が成功したか否かを判定する第２判定ユニットと、
前回のスナップショット作成が成功した場合に、前記リネームされたトップファイルを第１スナップショットファイルとする決定ユニットと、
前記第１スナップショットファイルをファイル管理サーバーにアップロードする第１アップロードユニットと、を備えること
を特徴とする仮想マシンシステムディスクのスナップショットの作成装置。
【請求項１２】
アップロードが成功したことに応答して、前記リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する第３判定ユニットと、
前記リネームされたトップファイルの依存ファイルが履歴スナップショットファイルである場合に、前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併する第１合併ユニットと、
前記新規作成されたトップファイルの依存を前記新たな履歴スナップショットファイルに変更し、新規作成されたトップファイルを改めて開く変更ユニットと、をさらに備えること
を特徴とする請求項１１に記載の装置。
【請求項１３】
前記第１合併ユニットは、
前記リネームされたトップファイルおよび前記履歴スナップショットファイルをソースファイルとしてバックアップするバックアップサブユニットと、
バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認する確認サブユニットと、
バックアップファイルの依存関係とソースファイルの依存関係が異なると確認された場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更する変更サブユニットと、
バックアップファイルの依存関係とソースファイルの依存関係が同じであると確認された場合に、前記バックアップファイルを合併して前記新たな履歴スナップショットファイルを取得する合併サブユニットと、
前記ソースファイルを削除する削除サブユニットと、を備えること
を特徴とする請求項１２に記載の装置。
【請求項１４】
前記第２判定ユニットは、
すべての依存されるファイルの一意識別子を抽出する抽出サブユニットと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定する判定サブユニットと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定する第１決定サブユニットと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定する第２決定サブユニットと、を備えること
を特徴とする請求項１１に記載の装置。
【請求項１５】
前回のスナップショット作成が失敗したと判定された場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併する第２合併ユニットと、
前記第２スナップショットファイルをファイル管理サーバーにアップロードする第２アップロードユニットと、をさらに備えること
を特徴とする請求項１１に記載の装置。
【請求項１６】
前記仮想マシンがオフ状態である場合に、前記作成コマンドが受信されたことに応答して、前記仮想マシンのシステムディスクファイルのトップファイルをコピーし、第３スナップショットファイルを取得するコピーユニットと、
前記第３スナップショットファイルをファイル管理サーバーにアップロードする第３アップロードユニットと、をさらに備えること
を特徴とする請求項１１に記載の装置。
【請求項１７】
スナップショットロールバックコマンドを受信する第２受信ユニットと、
前記スナップショットロールバックコマンドが受信されたことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするダウンロードユニットと、
ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併する第３合併ユニットと、をさらに備えること
を特徴とする請求項１１〜１６のいずれかに記載の装置。
【請求項１８】
前記第２受信ユニットは、ロールバックコマンドを選択するインターフェースを表示する第１表示サブユニットと、前記ロールバックコマンドに対する第１選択操作を受信する第１受信サブユニットと、前記第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示する第２表示サブユニットと、前記ロールバック時点に対する第２選択操作を受信する第２受信サブユニットと、を備えており、
前記ダウンロードユニットは、前記第２選択操作が受信されたことに応答して、前記ファイル管理サーバーから前記第２選択操作に適合するスナップショットファイルをダウンロードするダウンロードサブユニットを備えることを特徴とする請求項１７に記載の装置。
【請求項１９】
前記装置における前記仮想マシンはオープンソースのクラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋによりハードウェア仮想化技術ｑｅｍｕ−ｋｖｍに基づき作成される仮想マシンであり、
前記装置における前記仮想マシンのシステムディスクファイルフォーマットはｑｃｏｗ２フォーマットのリンク構造であることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記装置における前記システムディスクファイルのリンクの長さは４以下であることを特徴とする請求項１９に記載の装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
本願はコンピュータの技術分野に関し、具体的には仮想マシンの技術分野に関し、特に仮想マシンシステムディスクのスナップショットの作成方法および装置に関する。
【背景技術】
【０００２】
従来の仮想マシンスナップショットの作成方法として、通常、内蔵ディスクスナップショット（Ｉｎｔｅｒｎａｌ  ｄｉｓｋ  ｓｎａｐｓｈｏｔ）技術を利用してスナップショットを作成し、スナップショットポイントのディスク状態を取得する。
【０００３】
この仮想マシンスナップショットの作成方法は、仮想マシンのオフ状態でもオン状態でも作成でき、例えば、ハードウェア仮想化技術のｑｅｍｕ−ｋｖｍタイプの仮想マシンにおいて‘ｑｅｍｕ−ｉｍｇ’コマンドを利用してオフ状態のディスクスナップショット（Ｃｏｌｄ−Ｓｎａｐｓｈｏｔ）を作成し、‘ｓａｖｅｖｍ’コマンドを利用してオン状態のディスクスナップショット（Ｌｉｖｅ−Ｓｎａｐｓｈｏｔ）を作成する。
【０００４】
しかしながら、上記仮想マシンシステムディスクのスナップショットの作成方法は、スナップショットを作成するとともにメモリ状態をコピーし、データとスナップショットがいずれも単一のｑｃｏｗ２フォーマットのファイルに保存されるため、仮想マシンをオフしてスナップショットを作成する場合に、仮想マシンの動作効率に影響を与え、仮想マシンをオンしてスナップショットを作成する場合に、作成されたスナップショットのファイルサイズが仮想マシンのディスクのファイルサイズと同じであり、バックアップを必要とするデータ量が大きく、使用される記憶容量が大きく、またアップロード時に使用されるネットワーク帯域幅が大きいという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願は、上記背景技術で言及された技術的課題を解決するために、改良された仮想マシンシステムディスクのスナップショットの作成方法および装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
第１態様によれば、本願は仮想マシンシステムディスクのスナップショットの作成方法を提供し、この方法は、仮想マシンスナップショットの作成コマンドを受信するステップと、仮想マシンがオン状態であるか否かを判定するステップと、前記仮想マシンがオン状態である場合に、前記作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルにおけるトップファイルをリネームするステップと、前記トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開くステップと、前回のスナップショット作成が成功したか否かを判定するステップと、前回のスナップショット作成が成功した場合に、前記リネームされたトップファイルを第１スナップショットファイルとするステップと、前記第１スナップショットファイルをファイル管理サーバーにアップロードするステップと、を含む。
【０００７】
いくつかの実施形態では、前記方法は、アップロードが成功したことに応答して、前記リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定するステップと、前記リネームされたトップファイルの依存ファイルが履歴スナップショットファイルである場合に、前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するステップと、前記新規作成されたトップファイルの依存を前記新たな履歴スナップショットファイルに変更し、新規作成されたトップファイルを改めて開くステップと、をさらに含む。
【０００８】
いくつかの実施形態では、前記の前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するステップにおいては、前記リネームされたトップファイルおよび前記履歴スナップショットファイルをソースファイルとしてバックアップするステップと、バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認するステップと、バックアップファイルの依存関係とソースファイルの依存関係が異なる場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更するステップと、バックアップファイルの依存関係がソースファイルの依存関係と同じである場合に、前記バックアップファイルを合併して前記新たな履歴スナップショットファイルを取得するステップと、前記ソースファイルを削除するステップと、を含む。
【０００９】
いくつかの実施形態では、前記の前回のスナップショット作成が成功したか否かを判定するステップにおいては、すべての依存されるファイルの一意識別子を抽出するステップと、前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定するステップと、前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定するステップと、前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定するステップと、を含む。
【００１０】
いくつかの実施形態では、前記方法は、前回のスナップショット作成が失敗した場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併するステップと、前記第２スナップショットファイルをファイル管理サーバーにアップロードするステップと、をさらに含む。
【００１１】
いくつかの実施形態では、前記方法は、前記仮想マシンがオフ状態である場合に、前記作成コマンドが受信されたことに応答して、前記仮想マシンのシステムディスクファイルのトップファイルをコピーし、第３スナップショットファイルを取得するステップと、前記第３スナップショットファイルをファイル管理サーバーにアップロードするステップと、をさらに含む。
【００１２】
いくつかの実施形態では、前記方法は、スナップショットロールバックコマンドを受信するステップと、前記スナップショットロールバックコマンドが受信されたことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするステップと、ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併するステップと、をさらに含む。
【００１３】
いくつかの実施形態では、前記のスナップショットロールバックコマンドを受信するステップにおいては、ロールバックコマンドを選択するインターフェースを表示するステップと、前記ロールバックコマンドに対する第１選択操作を受信するステップと、前記第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示するステップと、前記ロールバック時点に対する第２選択操作を受信するステップと、を含み、前記の前記スナップショットロールバックコマンドが受信されたことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするステップにおいては、前記第２選択操作が受信されたことに応答して、前記ファイル管理サーバーから前記第２選択操作に適合するスナップショットファイルをダウンロードするステップを含む。
【００１４】
いくつかの実施形態では、前記仮想マシンはオープンソースのクラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋによりハードウェア仮想化技術ｑｅｍｕ−ｋｖｍに基づき作成される仮想マシンであり、前記仮想マシンのシステムディスクファイルのフォーマットはｑｃｏｗ２フォーマットのリンク構造である。
【００１５】
いくつかの実施形態では、前記システムディスクファイルのリンクの長さは４以下である。
【００１６】
第２態様によれば、本願は仮想マシンシステムディスクのスナップショットの作成装置を提供し、この装置は、仮想マシンスナップショットの作成コマンドを受信する第１受信ユニットと、仮想マシンがオン状態であるか否かを判定する第１判定ユニットと、前記仮想マシンがオン状態である場合に、前記作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルにおけるトップファイルをリネームする命名ユニットと、前記トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開く新規作成ユニットと、前回のスナップショット作成が成功したか否かを判定する第２判定ユニットと、前回のスナップショット作成が成功した場合に、前記リネームされたトップファイルを第１スナップショットファイルとする決定ユニットと、前記第１スナップショットファイルをファイル管理サーバーにアップロードする第１アップロードユニットと、を備える。
【００１７】
いくつかの実施形態では、前記装置は、アップロードが成功したことに応答して、前記リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する第３判定ユニットと、前記リネームされたトップファイルの依存ファイルが履歴スナップショットファイルである場合に、前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併する第１合併ユニットと、前記新規作成されたトップファイルの依存を前記新たな履歴スナップショットファイルに修正し、新規作成されたトップファイルを改めて開く変更ユニットと、をさらに備える。
【００１８】
いくつかの実施形態では、前記第１合併ユニットは、前記リネームされたトップファイルおよび前記履歴スナップショットファイルをソースファイルとしてバックアップするバックアップサブユニットと、バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認する確認サブユニットと、バックアップファイルの依存関係とソースファイルの依存関係が異なることが確認された場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更する変更サブユニットと、バックアップファイルの依存関係がソースファイルの依存関係と同じであると確認された場合に、前記バックアップファイルを合併して前記新たな履歴スナップショットファイルを取得する合併サブユニットと、前記ソースファイルを削除する削除サブユニットと、を備える。
【００１９】
いくつかの実施形態では、前記第２判定ユニットは、すべての依存される一意識別子を抽出する抽出サブユニットと、前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定する判定サブユニットと、前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定する第１判定サブユニットと、前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定する第２判定サブユニットと、を備える。
【００２０】
いくつかの実施形態では、前記装置は、前回のスナップショット作成が失敗したと判定された場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併する第２合併ユニットと、前記第２スナップショットファイルをファイル管理サーバーにアップロードする第２アップロードユニットと、をさらに備える。
【００２１】
いくつかの実施形態では、前記装置は、前記仮想マシンがオフ状態である場合に、前記作成コマンドが受信されたことに応答して、前記仮想マシンのシステムディスクファイルのトップファイルをコピーし、第３スナップショットファイルを取得するコピーユニットと、前記第３スナップショットファイルをファイル管理サーバーにアップロードする第３アップロードユニットと、をさらに備える。
【００２２】
いくつかの実施形態では、前記装置は、スナップショットロールバックコマンドを受信する第２受信ユニットと、前記スナップショットロールバックコマンドが受信されたことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするダウンロードユニットと、ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併する第３合併ユニットと、をさらに備える。
【００２３】
いくつかの実施形態では、前記第２受信ユニットは、ロールバックコマンドを選択するインターフェースを表示する第１表示サブユニットと、前記ロールバックコマンドに対する第１選択操作を受信する第１受信サブユニットと、前記第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示する第２表示サブユニットと、前記ロールバック時点に対する第２選択操作を受信する第２受信サブユニットと、を備え、前記ダウンロードユニットは、前記第２選択操作が受信されたことに応答して、前記ファイル管理サーバーから前記第２選択操作に適合するスナップショットファイルをダウンロードするダウンロードサブユニットを備える。
【００２４】
いくつかの実施形態では、前記装置における前記仮想マシンはオープンソースのクラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋによりハードウェア仮想化技術ｑｅｍｕ−ｋｖｍに基づき作成される仮想マシンであり、前記装置における前記仮想マシンのシステムディスクファイルフォーマットはｑｃｏｗ２フォーマットのリンク構造である。
【００２５】
いくつかの実施形態では、前記装置における前記システムディスクファイルのリンクの長さは４以下である。
【発明の効果】
【００２６】
本願に係る仮想マシンシステムディスクのスナップショットの作成方法および装置によれば、まず仮想マシンスナップショットの作成コマンドを受信し、次に仮想マシンがオン状態であるか否かを判定し、前記仮想マシンがオン状態である場合に、前記作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルのトップファイルをリネームし、その後、前記トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開き、その後、前回のスナップショット作成が成功したか否かを判定し、前回のスナップショット作成が成功した場合に、リネームされたトップファイルを第１スナップショットファイルとし、最後に、第１スナップショットファイルをファイル管理サーバーにアップロードする。当該方法および装置によれば、仮想マシンのオン状態で仮想マシンシステムディスクのスナップショットを作成する際に、仮想マシンの動作を停止せずにスナップショットを作成でき、仮想マシンのスナップショット作成にバックアップを必要とするデータ量および使用される記憶容量を減少させ、スナップショットのアップロード時に使用されるネットワーク帯域幅を減少させることができる。
【００２７】
以下、図面を参照しながら非限定的な実施例を詳細に説明することにより、本発明の他の特徴、目的、および利点は、より明らかになる
【図面の簡単な説明】
【００２８】
【図１】本願が適用された例示的なシステムアーキテクチャ図である。
【図２】本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成方法を示す模式的なフローチャートである。
【図３】本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成方法の応用場面を示す模式的なフローチャートである。
【図４】本願の実施例に係るシステムディスクファイルの合併方法を示す模式的なフローチャートである。
【図５】本願の実施例に係るリネームされたトップファイルと履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併する方法の応用場面を示す模式的なフローチャートである。
【図６】本願の実施例に係るスナップショットロールバック時にダウンロードされたスナップショットファイルを合併する方法を示す模式的なフローチャートである。
【図７】本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成装置を示す例示的な構成図である。
【図８】本願の実施例を実現するための端末装置またはサーバに適用されるコンピュータシステムを示す構造模式図である。
【発明を実施するための形態】
【００２９】
以下、図面および実施例を参照しながら、本発明をさらに詳しく説明する。ただし、ここで説明されている具体的な実施例は、係る発明を解釈するためのものに過ぎず、本発明の範囲を制限するものではないと理解されるべきである。また、説明の便宜上、図面に本発明と関連する部分のみが示されている。
【００３０】
ただし、衝突がない限り、本願における実施例、および実施例における特徴は、互いに組み合せてもよい。以下、図面を参照しながら実施例に基づいて本発明を詳細に説明する。
【００３１】
図１は本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成方法および装置を適用できる例示的なシステムアーキテクチャ１００を示す。
【００３２】
図１に示すように、システムアーキテクチャ１００は、端末装置１０１、１０２と、サーバー１０３、１０４、１０５から構成されるクラウドコンピューティングプラットフォームと、ネットワーク１０６と、を備えるが、それらに限定されない。ネットワーク１０６は端末装置１０１、１０２とクラウドコンピューティングプラットフォームとの間またはクラウドコンピューティングプラットフォーム内部のサーバー１０３、１０４、１０５の間で通信リンクを提供する。ネットワーク１０６は様々な接続タイプ、例えば有線、無線通信リンクや光ファイバーケーブルなどを含んでもよい。
【００３３】
ユーザーは端末装置１０１、１０２によりクラウドコンピューティングプラットフォームに実行される仮想マシンを管理でき、例えば、仮想マシンスナップショットの作成要求を提出することなどが挙げられる。仮想マシンは、クラウドコンピューティングプラットフォームのいずれかのサーバーまたはそれらの組合せ、例えば、サーバー１０３、１０４または１０５に設置されてもよい。仮想マシンは、様々なアプリケーション、例えば、ウェブブラウザアプリケーション、ショッピングアプリケーション、検索アプリケーション、インスタントメッセージツール、電子メールクライアント、ソーシャルプラットフォームソフトウェアなどがインストールされてもよい。
【００３４】
クラウドコンピューティングプラットフォームを構成するサーバー１０３、１０４、１０５は様々なコンピューティングサービスを提供する装置であってもよく、例えば、ユーザーが端末装置により送信する要求を受信し、要求を分析処理し、処理結果を端末装置によりユーザーにフィードバックする。
【００３５】
なお、本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成方法は、一般的には、上記クラウドコンピューティングプラットフォームアーキテクチャに配置される仮想マシン管理モジュールにより実行される。当該管理モジュールは、クラウドコンピューティングプラットフォームのいずれかのサーバーまたはサーバーの組合せに配置されてもよく、例えば、当該管理モジュールはクラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋにおけるコンピューティングコンポーネントＮｏｖａ−ｃｏｍｐｕｔｅであり、いずれかのサーバー１０３、１０４、１０５またはサーバー１０３、１０４、１０５の任意の組合せに配置されされてもよい。それに対応して、仮想マシンシステムディスクのスナップショットの作成装置もクラウドコンピューティングプラットフォームのいずれかのサーバーまたはそれらの組合せに配置される。
【００３６】
図１における端末装置、ネットワークおよびサーバーの数が例示的なものであることを当業者は理解すべきである。必要に応じて、端末装置、ネットワークおよびサーバーの数が任意である。
【００３７】
次に、本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成方法を示す模式的なフローチャートである図２を参照する。図２に示すように、仮想マシンシステムディスクのスナップショットの作成方法２００は、以下のステップを含む。
【００３８】
ステップ２０１では、仮想マシンスナップショットの作成コマンドを受信する。
【００３９】
本実施形態では、仮想マシンシステムディスクのスナップショットの作成方法を実行する仮想マシン管理モジュール（例えば、図１に示すサーバーに配置されている仮想マシン管理モジュール）は、通常、有線接続方式または無線接続方式により、ユーザーが仮想マシンスナップショットを作成するための端末から、仮想マシンスナップショットの作成コマンドを受信し、ここで、仮想マシンスナップショットの作成コマンドは、クラウドコンピューティングプラットフォームに実行されるどの仮想マシンに対して仮想マシンスナップショットを作成するかを指示するための仮想マシンの汎用一意識別子（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ、ＵＵＩＤと略称する）を含む。
【００４０】
通常、ユーザーは端末にインストールされたウェブブラウザまたはクライアントアプリケーションを用いて上記仮想マシン管理モジュールに仮想マシンスナップショットの作成コマンドを送信する際に、コマンドを直接に入力してもよく、あるいは、ウェブブラウザまたはクライアントアプリケーションに表示さていれるリンクをクリックすることにより、上記仮想マシン管理モジュールに仮想マシンスナップショットの作成コマンドを送信してもよい。
【００４１】
ここで、仮想マシンは上記クラウドコンピューティングプラットフォームの物理マシンに実行され仮想化技術で生成される仮想マシン、例えばｑｕｍｅ−ｋｖｍタイプの仮想マシンであってもよく、ソフトウェアによりシミュレーションされる完全なハードウェアシステムの機能を有し、完全に隔離された環境に実行される完全なコンピュータシステムである。
【００４２】
仮想マシンの記憶方式として、ハイブリッド記憶方式が挙げられ、例えば、仮想マシンにおける、仮想マシンに実行されるオペレーティングシステムに関連するデータ（システムディスクデータとも呼ばれる）を物理マシンに記憶し、仮想マシンの実行時にアクセスするデータ（データディスクデータとも呼ばれる）を共有記憶装置に記憶する。
【００４３】
いくつかの仮想マシンアーキテクチャでは、データディスク自体はスナップショットを生成できるので、本実施形態では、仮想マシンシステムディスクのスナップショットの作成方法のみを説明する。
【００４４】
ステップ２０２では、仮想マシンがオン状態であるか否かを判定する。
【００４５】
本実施形態では、仮想マシンシステムディスクのスナップショットの作成方法を実行する仮想マシン管理モジュールは作成コマンドが受信されたことに応答して、仮想マシンがオン状態であるか否かを判定する。例えば、クラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋにおけるコンピューティングコンポーネントＮｏｖａ−ｃｏｍｐｕｔｅは制御ノードで実行され、端末の送信するアプリケーションプログラミングインターフェースＡＰＩの仮想マシンスナップショット作成要求を処理し、当該要求は作成されるスナップショットがオフスナップショットであるかオンスナップショットであるかを区分せず、Ｎｏｖａ−ｃｏｍｐｕｔｅが実例Ｉｎｓｔａｎｃｅ（つまり仮想マシン）の状態に応じて、当該スナップショットがオフスナップショットであるかオンスナップショットであるかを判定し、ナップショットがオフスナップショットである場合に、オフスナップショットインターフェースを呼び出してコールドスナップショット（ｃｏｌｄ−ｓｎａｐｓｈｏｔ）を行い、ナップショットがオンスナップショットである場合に、仮想マシンインターフェースを呼び出してライブスナップショット（ｌｉｖｅ−ｓｎａｐｓｈｏｔ）を行う。
【００４６】
ステップ２０３では、仮想マシンがオン状態である場合に、作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルのトップファイルをリネームする。
【００４７】
本実施形態では、仮想マシンのシステムディスクファイルはリンク構造であり、一般的には、少なくともベース（Ｂａｓｅ）ファイルおよびトップ（Ｔｏｐ）ファイルを含み、ＢａｓｅファイルとＴｏｐファイルとの間に、履歴スナップショットファイルが存在する可能性がある。ここで、Ｂａｓｅファイルは、仮想マシンのオリジナルのシステムインストールファイルまたはオリジナルのシステムインストールファイルにシステムパッチが追加された増分ファイル、つまり仮想マシンイメージファイルである。
【００４８】
仮想マシンがオン状態であり且つ仮想マシンスナップショットの作成コマンドを受信した場合に、入出力ポートは連続的に書き込んでいる可能性があり、上記仮想マシン管理モジュールにより仮想マシンのシステムディスクファイルのトップファイルをリネームすることができ、例えば、ｑｅｍｕ−ｋｖｍタイプの仮想マシンプロセスは常に実行中であり、開かれたｄｅｖｉｃｅファイルが依然としてスナップショットプロセス前のｑｃｏｗ２ファイルであり、新たな増分差分ファイルに切り替える必要がある場合に、ｎｏｖａ−ｃｏｍｐｕｔｅプロセスにより、開かれたファイル記述子を変更し、ファイル名がｄｉｓｋであるトップファイルをリネームすることができる。
【００４９】
ステップ２０４では、トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開く。
【００５０】
本実施形態では、トップファイルのリネームが完了したことに応答して、上記仮想マシン管理モジュールは仮想マシンの仮想化技術のインターフェースを呼び出して新たなトップファイルを生成し、次に仮想マシンの仮想化技術のインターフェースを呼び出して、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトするように変更し、その後、仮想マシンの仮想化技術のインターフェースを呼び出して、新規作成されたトップファイルを開くことができる。例えば、上記Ｎｏｖａ−ｃｏｍｐｕｔｅのプロセスはｌｉｂｖｉｒｔのＡＰＩを呼び出してトップファイルを新規作成し、次にｌｉｂｖｉｒｔのＡＰＩを呼び出して、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、その後、ｌｉｂｖｉｒｔのＡＰＩを呼び出してｒｅｏｐｅｎコマンドを実行し、新規作成されたｄｉｓｋファイルを開くことができる。ここで、ｌｉｂｖｉｒｔはＬｉｎｕｘでの主流の仮想化ツールをサポートするフリー、オープンソースのＣ関数ライブラリである。
【００５１】
本実施形態では、上記新規作成されたトップファイルとリネームされたトップファイルとの依存関係は、新規作成されたトップファイルとリネームされたトップファイルとのセマンティック接続関係であり、即ち、リネームされたトップファイルが新規作成したトップファイルから独立するが、新規作成されたトップファイルがリネームされたトップファイルに依存するため、リネームされたトップファイルが変化すると、それに依存する新規作成されたトップファイルに影響を与える。
【００５２】
ステップ２０５では、前回のスナップショット作成が成功したか否かを判定する。
【００５３】
本実施形態では、仮想マシンのスナップショット作成が成功した後に、リネームされたトップファイルとリネームされたトップファイルに依存するファイルがアップロード済みのスナップショットファイルであるか否かに基づき、前回のスナップショット作成が成功したか否かを判定することができる。
【００５４】
本実施例のいくつかの代替実施形態では、前回のスナップショット作成が成功したか否かを判定するステップにおいては、すべての依存される一意識別子を抽出するステップと、一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定するステップと、一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定するステップと、一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定するステップと、を含むが、それらに限定されない。
【００５５】
ステップ２０６では、前回のスナップショットファイルの作成が成功した場合に、リネームされたトップファイルを第１スナップショットファイルとする。
【００５６】
本実施形態では、上記仮想マシン管理モジュールは、仮想マシンプロセスを呼び出して新規作成されたトップファイルを開いた後に、リネームされたトップファイルが読取専用ファイルであるので、仮想マシン管理モジュールが当該読取専用ファイルを開いてアップロードすることは、仮想マシンの正常動作に影響を与えない。
【００５７】
ステップ２０７では、第１スナップショットファイルをファイル管理サーバーにアップロードする。
【００５８】
本実施形態では、上記仮想マシン管理モジュールは第１スナップショットファイルをファイル管理サーバーにアップロードする。ここで、ファイル管理サーバーはクラウドコンピューティングプラットフォームを構成するサーバーの一つであってもよく、生成されたスナップショットファイルを記憶して管理することに用いられる。
【００５９】
本実施例のいくつかの代替実施形態では、上記仮想マシンシステムディスクのスナップショットの作成方法はさらに以下のステップを含むが、それらに限定されない。
【００６０】
ステップ２０８では、前回のスナップショット作成が失敗した場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併する。
【００６１】
ステップ２０９では、第２スナップショットファイルをファイル管理サーバーにアップロードする。
【００６２】
例えば、仮想マシンの初回スナップショット（アップロードが成功したかどうかにかかわらず）が作成された後に、ｑｃｏｗ２フォーマットの仮想マシンのシステムディスクファイルのリンクの長さが３に増加し、上記Ｎｏｖａ−ｃｏｍｐｕｔｅのプロセスでｌｉｂｖｉｒｔのＡＰＩを呼び出し、ｑｅｍｕ−ｋｖｍ仮想マシンのプロセスにより新たなｑｃｏｗ２フォーマットのトップファイルを改めて開いた後に、Ｎｏｖａ−ｃｏｍｐｕｔｅのプロセスが前回の仮想マシンスナップショットの作成が失敗したと判定した場合に、ｌｉｂｖｉｒｔのＡＰＩを呼び出してスナップショット合併のｑｅｍｕ−ｉｍｇ  ｃｏｍｍｉｔ操作を実行し、前回のスナップショット作成で生成された、リネームされたトップファイルＤｉｓｋ．ｓｎｐ１．ｄｅｌｔａと現在のスナップショット作成で生成された、リネームされたトップファイルＤｉｓｋ．ｓｎａｐ２とを第２スナップショットファイルｓｎａｐ２に合併し、さらにｓｎａｐ２をファイル管理サーバーにアップロードし、ｓｎａｐ２を記述するメタデータをＯｐｅｎＳｔａｃｋアーキテクチャにおけるＧｌａｎｃｅコンポーネントにアップロードする。
【００６３】
上記仮想マシンスナップショットの作成が失敗した原因は主に以下のとおりである。
１）バックアップ過程でディスク容量の不足によってバックアップが失敗する。
２）合併過程で失敗が発生し、エラーをフィードバックする。
３）スナップショットファイルのアップロード過程で失敗が発生する。
【００６４】
前回の仮想マシンスナップショットの作成が失敗した後に、仮想マシンがトップファイルを改めて開く過程が完了したので、仮想マシンが実行中であり、ユーザに感じさせないように、リンク構造を維持してバックオフしない。前回の仮想マシンスナップショットを作成するデータの漏れを回避するために、上記仮想マシン管理モジュールは現在仮想マシンスナップショットの作成コマンドが受信されたことに応答して、以下のステップにより、前回の仮想マシンスナップショットの作成が失敗したか否かを検査できる。即ち、すべての依存ファイル名におけるＵＵＩＤを抽出し、データベースのスナップショットリストに当該ＵＵＩＤが存在するか否かを問い合わせ、データベースのスナップショットリストに当該ＵＵＩＤが存在する場合に、前回のライブスナップショット過程が成功し、データベースのスナップショットリストに当該ＵＵＩＤが存在しない場合に、前回のライブスナップショットが失敗した。前回のライブスナップショットが失敗したと検出された場合に、前回の失敗したスナップショットファイルと現在作成された仮想マシンスナップショットファイルとを合併し、合併された第２スナップショットファイルをアップロード対象のスナップショットデータとする。
【００６５】
上記代替実施形態に係る仮想マシンシステムディスクのスナップショットの作成方法は、仮想マシンシステムディスクファイルのリンクの長さが長すぎて読み書き性能を損なうとともに使用される物理マシンディスク容量が大きすぎることを防止するために、前回の仮想マシンスナップショットの作成が失敗したスナップショットファイルと現在生成されたスナップショットファイルとを合併してファイル構造のリンクの長さを所定の範囲内に確保し、且つ合併されたスナップショットファイルをアップロードすることにより、前回の仮想マシンスナップショットを作成するデータの漏れを回避し、スナップショットデータの完全性を確保する。
【００６６】
本実施例のいくつかの代替実施形態では、上記仮想マシンシステムディスクのスナップショットの作成方法は以下のステップを含むが、それらに限定されない。
【００６７】
ステップ２１０では、仮想マシンがオフ状態である場合に、作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルのトップファイルをコピーし、第３スナップショットファイルを取得する。
【００６８】
ステップ２１１では、第３スナップショットファイルをファイル管理サーバーにアップロードする。
【００６９】
例えば、上記Ｎｏｖａ−ｃｏｍｐｕｔｅのプロセスはｌｉｂｖｉｒｔのＡＰＩを呼び出してｃｏｐｙコマンドをコピーすることにより仮想マシンが所属する物理マシンのディスクファイル（ｑｃｏｗ２フォーマットのディスクファイル）を直接にバックアップまたは操作する。それにより仮想マシンのオフ状態で仮想マシンシステムディスクのスナップショットを作成することができる。
【００７０】
本願の上記実施例において、第１スナップショットファイル、第２スナップショットファイルおよび第３スナップショットファイルが３種の異なる場合に生成されるスナップショットファイルのみを表すことを当業者は理解すべきである。第１スナップショットファイルは前回のスナップショットファイルの作成が成功した後に現在のナップショット作成過程でリネームされたトップファイルであり、第２スナップショットファイルは前回のスナップショット作成が失敗した後に前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを合併して取得されたスナップショットファイルであり、第３スナップショットファイルは仮想マシンのオフ状態で仮想マシンシステムディスクファイルのトップファイルをコピーして取得されたスナップショットファイルであり、第１、第２または第３はスナップショットファイルを限定するものではない。
【００７１】
本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成方法の応用場面を示す模式的なフローチャートである図３を参照する。図３に示すプロセス３００は、以下のステップを含む。
【００７２】
ステップ３０１では、ＯｐｅｎＳｔａｃｋ技術アーキテクチャにおけるコンピューティングコンポーネントＮｏｖａのフロントエンドＡＰＩがユーザーからの仮想マシンスナップショットの作成要求を受信し、その後、ステップ３０２を実行する。
【００７３】
ステップ３０２では、ＡＰＩが上記要求をメッセージキューに転送し、その後、ステップ３０３を実行する。
【００７４】
ステップ３０３では、Ｎｏｖａ−Ｃｏｍｐｕｔｅがメッセージキューから当該要求を受信し、その後、ステップ３０４を実行する。
【００７５】
ステップ３０４では、Ｎｏｖａ−Ｃｏｍｐｕｔｅが仮想マシンの状態を取得し、その後、ステップ３０５を実行する。
【００７６】
ステップ３０５では、Ｎｏｖａ−Ｃｏｍｐｕｔｅは仮想マシンがオン状態であるか否かを判定し、仮想マシンがオン状態でない場合に、ステップ３０７を実行し、仮想マシンがオン状態である場合に、ステップ３０６を実行する。
【００７７】
ステップ３０６では、Ｎｏｖａ−Ｃｏｍｐｕｔｅが仮想マシンのコールドスナップショット（ｃｏｌｄ−ｓｎａｐｓｈｏｔ）を作成し、その後、ステップ３０８を実行する。
【００７８】
ステップ３０７では、Ｎｏｖａ−Ｃｏｍｐｕｔｅが仮想マシンのライブスナップショット（ｌｉｖｅ−ｓｎａｐｓｈｏｔ）を作成し、その後、ステップ３０８を実行する。
【００７９】
ステップ３０８では、Ｎｏｖａ−Ｃｏｍｐｕｔｅは作成されたスナップショットをファイル管理サーバーにアップロードし、その後、ステップ３０９を実行する。
【００８０】
ステップ３０９では、Ｎｏｖａ−Ｃｏｍｐｕｔｅがデータベースを更新し、例えば、スナップショットの依存関係またはスナップショットの時点を更新する。
【００８１】
本願の上記実施例に係る仮想マシンシステムディスクのスナップショットの作成方によれば、第１面では、仮想マシンのオン状態で仮想マシンシステムディスクのスナップショットを作成する際に、仮想マシンの動作を停止せずにスナップショットを作成でき、スナップショットの作成にバックアップを必要とするデータ量および使用する記憶容量を減少させ、且つスナップショットのアップロード時に使用するネットワーク帯域幅を減少させることができる。第２面では、前回の仮想マシンスナップショットの作成が失敗した後に、前回リネームされたトップファイルと今回のリネームされたトップファイルとを合併し、合併されたファイルをファイル管理サーバーにアップロードし、スナップショットデータの漏れを回避することができる。第３面では、仮想マシンのオフ状態でも仮想マシンスナップショットを作成でき、仮想マシンスナップショットの作成効率を向上させることができる。
【００８２】
さらに、本願の実施例に係るシステムディスクファイルの合併方法を示す模式的なフローチャートである図４を参照する。図４に示すように、当該システムディスクファイルの合併方法のフロー４００は、上記仮想マシンシステムディスクのスナップショットの作成方法に加えて、さらに以下のステップを含む。
【００８３】
ステップ４０１では、アップロードが成功したことに応答して、リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する。
【００８４】
本実施形態では、仮想マシンシステムディスクのスナップショットの作成方法を実行する仮想マシン管理モジュールは仮想マシンの仮想化技術のインターフェースを呼び出し、上記第１スナップショットファイル、または第２スナップショットファイルのアップロードが成功したことに応答して、リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する。
【００８５】
リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する際に、リネームされたトップファイルの依存ファイルの一意識別子を抽出し、当該一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定し、当該一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、履歴スナップショットファイルであると判定するようにしてもよい。
【００８６】
ステップ４０２では、リネームされたトップファイルの依存ファイルが履歴スナップショットファイルである場合に、リネームされたトップファイルと履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併する。
【００８７】
本実施形態では、上記仮想マシン管理モジュールは、リンクの長さが長すぎて読み書き性能を損なうとともに使用される物理マシンのディスク容量が大きすぎることを防止するために、既存のシステムディスクファイルを合併してリンクの長さを所定範囲に確保する必要がある。したがって、上記仮想マシン管理モジュールがシステムディスクファイルのリンクの長さを取得し、且つリンクの長さが３を超えると判定した場合に、つまりシステムディスクファイルがＢａｓｅファイル、リネームされたＴｏｐファイルおよび新規作成されたＴｏｐファイル以外、履歴スナップショットファイルを更に含む場合に、リネームされたトップファイルと履歴スナップショットファイルとを合併し、新たな履歴スナップショットファイルを取得することができる。
【００８８】
本実施例のいくつかの代替実施形態では、リネームされたトップファイルと履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するステップにおいては、リネームされたトップファイルおよび履歴スナップショットファイルをソースファイルとしてバックアップするステップと、バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認するステップと、バックアップファイルの依存関係とソースファイルの依存関係が異なる場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更するステップと、バックアップファイルの依存関係とソースファイルの依存関係が同じである場合に、バックアップファイルを合併し、新たな履歴スナップショットファイルを取得するステップと、ソースファイルを削除し、つまり元のリネームされたトップファイルおよび元の履歴スナップショットファイルを削除するステップと、を含むが、それらに限定されない。
【００８９】
ステップ４０３では、新規作成されたトップファイルの依存を新たな履歴スナップショットファイルに変更し、新規作成されたトップファイルを改めて開く。
【００９０】
本実施形態では、上記仮想マシン管理モジュールは新たな履歴スナップショットファイルを取得した後に、新規作成されたＴｏｐファイルの依存を新たな履歴スナップショットファイルに変更し、仮想化技術をサポートする関数ライブラリのアプリケーションプログラミングインターフェースを呼び出すことにより仮想マシンのプロセスを呼び出し、新規作成されたトップファイルを改めて開く。
【００９１】
本実施形態では、システムディスクファイルのリンクの長さを４以下に制御でき、リンクの長さが長すぎることに起因する性能損失を回避する。
【００９２】
本願の実施例に係るリネームされたトップファイルと履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併する方法の応用場面を示す模式的なフローチャート５００である図５を参照する。
【００９３】
図５に示すように、システムディスクファイルの第１種のリンク構造５１０において、履歴スナップショットファイルは履歴スナップショットファイル５０２の形式でリンク構造に存在し、リネームされたトップファイルは増分スナップショットファイル５０３の形式でリンク構造に存在し、新規作成されたトップファイルはトップファイル５０４の形式でリンク構造に存在し、且つベースイメージファイル５０１、履歴スナップショットファイル５０２、増分スナップショットファイル５０３およびトップファイル５０４の４つのファイルについては、後ろのファイルが前のファイルに依存する。上記仮想マシン管理モジュールは、増分スナップショットファイル５０３のファイル管理サーバーへのアップロードが成功した後に、増分スナップショットファイル５０３が依存するファイルを判定し、履歴スナップショットファイル５０２が存在すると判定し、履歴スナップショットファイル５０２と増分スナップショットファイル５０３とを合併し、合併過程で、まず履歴スナップショットファイルバックアップ５０５および増分スナップショットファイルバックアップ５０６の２つのバックアップファイルを生成し、第２種のリンク構造５２０を取得し、その後、履歴スナップショットファイルバックアップ５０５および増分スナップショットファイルバックアップ５０６とベースイメージファイル５０２との依存関係が元のリンク構造の依存関係と同じであるか否かをチャックし、履歴スナップショットファイルバックアップ５０５および増分スナップショットファイルバックアップ５０６とベースイメージファイル５０２との依存関係が元のリンク構造の依存関係と同じである場合に、履歴スナップショットファイルバックアップ５０５と増分スナップショットファイルバックアップ５０６とを合併し、新たな履歴スナップショットファイル５０７を生成し、第３種のリンク構造５３０を取得し、その後、トップファイル５０４の依存を新たな履歴スナップショットファイル５０７にダイレクトするように変更し、且つトップファイル５０４を改めて開き、第４種のリンク構造５４０を取得し、それにより上記仮想マシン管理モジュールはシステムディスクファイル構造のリンクの長さを制御する。
【００９４】
図４に戻り、図４からわかるように、図２に対応する実施例に比べて、本実施例に係る仮想マシンシステムディスクのスナップショットの作成方法のフロー４００はシステムディスクファイルのリンクの長さへの制御を強調する。それにより、本実施例に係る解決手段はスナップショットファイルの合併を導入でき、これにより、システムディスクファイルのリンクの長さを減少させ、仮想マシンの読み書き性能を向上させ、使用される物理マシンのディスク容量を減少させることができる。
【００９５】
さらに、本願の実施例に係るスナップショットロールバック時にダウンロードしたスナップショットファイルを合併する方法を示す模式的なフローチャートである図６を参照する。当該仮想マシンシステムディスクのスナップショットの作成方法のフロー６００は、上記仮想マシンシステムディスクのスナップショットの作成方法に加えて、さらに以下のステップを含む。
【００９６】
ステップ６０１では、スナップショットロールバックコマンドを受信する。
【００９７】
本実施形態では、上記仮想マシン管理モジュールはユーザーから入力されるスナップショットロールバックコマンドを直接的および／または間接的に受信でき、当該コマンドはロールバック用のスナップショットの汎用一意識別子を含み、当該汎用一意識別子に基づきロールバックに必要なスナップショットファイルを一意的に決定でき、当該一意的に決定されたスナップショットファイルに基づき、ロールバックの時点情報を決定する。
【００９８】
本実施例のいくつかの代替実施形態では、スナップショットロールバックコマンドを間接的に受信することは、ロールバックコマンドを選択するインターフェースを表示するステップと、ロールバックコマンドに対する第１選択操作を受信するステップと、第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示するステップと、ロールバック時点に対する第２選択操作を受信するステップと、により実現してもよい。ロールバック時点とスナップショットファイルが一対一対応するため、ロールバック時点情報に基づきスナップショットファイルおよびスナップショットファイルの汎用一意識別子を一意的に決定できる。
【００９９】
本実施形態では、第１選択操作と第２選択操作は２つの異なる操作対象に対する操作のみを表す。第１選択操作はロールバックコマンドに対する操作であり、第２選択操作はロールバック時点に対する操作であり、それぞれ適切な操作方式で行われてもよく、選択される操作方式が同一であってもよく、異なってもよい。第１または第２が選択操作を限定するものではないことを当業者は理解すべきである。
【０１００】
ステップ６０２では、スナップショットロールバックコマンドが受信されたことに応答して、ファイル管理サーバーからスナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードする。
【０１０１】
本実施形態では、上記仮想マシン管理モジュールはスナップショットの汎用一意識別子に基づき、ファイル管理サーバーからダウンロードするスナップショットファイルを決定することができる。
【０１０２】
本実施例のいくつかの代替実施形態では、スナップショットロールバックコマンドが受信されたことに応答して、ファイル管理サーバーからスナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするステップにおいては、第２選択操作が受信されたことに応答して、ファイル管理サーバーから第２選択操作に適合するスナップショットファイルをダウンロードすることを含む。
【０１０３】
ステップ６０３では、ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併する。
【０１０４】
本実施形態では、上記仮想マシン管理モジュールはシステムディスクファイルの構造のリンクの長さを適切な範囲内に確保するために、ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併する。
【０１０５】
本願の上記実施例によれば、使用される物理マシンのディスク容量を減少させ、仮想マシンの読み書き性能を向上させることができる。
【０１０６】
さらに、上記の図に示す方法の実現形態として、本願の実施例に係る仮想マシンシステムディスクのスナップショットの作成装置を示す例示的な構成図である図７を参照する。当該装置の実施例は図２に示す方法の実施例に対応し、当該装置は、具体的には上記クラウドコンピューティングプラットフォームアーキテクチャにおける仮想マシン管理モジュール（例えば、図１に示すサーバーに配置される仮想マシン管理モジュール）に適用できる。
【０１０７】
図７に示すように、本実施例に係る仮想マシンシステムディスクのスナップショットの作成装置７００は、第１受信ユニット７０１、第１判定ユニット７０２、命名ユニット７０３、新規作成ユニット７０４、第２判定ユニット７０５、決定ユニット７０６およびアップロードユニット７０７を備えるが、それらに限定されない。
【０１０８】
第１受信ユニット７０１は、仮想マシンスナップショットの作成コマンドを受信するように配置される。
【０１０９】
本実施形態では、上記仮想マシン管理モジュール内で動作する第１受信ユニット７０１は、通常、有線接続方式または無線接続方式により、ユーザーが仮想マシンスナップショットを作成するための端末から、仮想マシンスナップショットの作成コマンドを受信し、ここで、仮想マシンスナップショットの作成コマンドは、クラウドコンピューティングプラットフォームに実行されるどの仮想マシンに対して仮想マシンスナップショットを作成するかを指示するための仮想マシンの汎用一意識別子（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ、ＵＵＩＤと略称する）を含む。
【０１１０】
通常、ユーザーは端末にインストールされたウェブブラウザまたはクライアントアプリケーションを用いて上記第１受信ユニット７０１に仮想マシンスナップショットの作成コマンドを送信する際に、コマンドを直接に入力してもよく、あるいは、ウェブブラウザまたはクライアントアプリケーションに表示されるリンクをクリックすることにより、上記仮想マシン管理モジュールに仮想マシンスナップショットの作成コマンドを送信してもよい。
【０１１１】
第１判定ユニット７０２は、仮想マシンがオン状態であるか否かを判定するように配置される。
【０１１２】
本実施形態では、上記仮想マシン管理モジュール内で動作する第１判定ユニット７０２は、作成コマンドが受信されたことに応答して、仮想マシンがオン状態であるか否かを判定する。例えば、クラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋにおけるコンピューティングコンポーネントＮｏｖａ−ｃｏｍｐｕｔｅ内で動作する第１判定ユニットは、端末から送信されるアプリケーションプログラミングインターフェースＡＰＩの要求を処理し、当該要求は作成されるスナップショットがオフスナップショットであるかオンスナップショットであるかを区分せず、第１判定ユニットが実例Ｉｎｓｔａｎｃｅ（つまり仮想マシン）の状態に応じて、当該スナップショットがオフスナップショットであるかオンスナップショットであるかを判定し、オフスナップショットである場合に、オフスナップショットインターフェースを呼び出してコールドスナップショット（ｃｏｌｄ−ｓｎａｐｓｈｏｔ）を行い、オンスナップショットである場合に、仮想マシンインターフェースを呼び出してライブスナップショット（ｌｉｖｅ−ｓｎａｐｓｈｏｔ）を行う。
【０１１３】
命名ユニット７０３は、仮想マシンがオン状態である場合に、作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルのトップファイルをリネームするように配置される。
【０１１４】
本実施形態では、仮想マシンのシステムディスクファイルはリンク構造であり、一般的には、少なくともベース（Ｂａｓｅ）ファイルおよびトップ（Ｔｏｐ）ファイルを含み、ＢａｓｅファイルとＴｏｐファイルとの間に、履歴スナップショットファイルが存在する可能性がある。Ｂａｓｅファイルは、仮想マシンのオリジナルのシステムインストールファイルまたはオリジナルのシステムインストールファイルにシステムパッチを追加された増分ファイル、つまり仮想マシンイメージファイルである。
【０１１５】
命名ユニット７０３は、第１判定ユニット７０２の判定結果（即ち、仮想マシンがオン状態である）を取得し且つ仮想マシンスナップショットの作成コマンドを受信した場合に、入出力ポートは連続的に書き込んでいる可能性があり、上記仮想マシン管理モジュール内で動作する命名ユニット７０３により仮想マシンのシステムディスクファイルのトップファイルをリネームすることができ、例えば、ｑｅｍｕ−ｋｖｍタイプの仮想マシンプロセスは常に実行中であり、開かれたｄｅｖｉｃｅファイルが依然としてスナップショットプロセス前のｑｃｏｗ２ファイルであり、新たな増分差分ファイルに切り替える必要がある場合に、ｎｏｖａ−ｃｏｍｐｕｔｅにおける命名ユニットにより、開かれたファイル記述子を変更し、ファイル名がｄｉｓｋであるトップファイルをリネームすることができる。
【０１１６】
新規作成ユニット７０４は、トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、且つ新規作成されたトップファイルを開く。
【０１１７】
本実施形態では、トップファイルのリネームが完了したことに応答して、上記仮想マシン管理モジュール内で動作する新規作成ユニット７０４は、仮想マシンの仮想化技術のインターフェースを呼び出して新たなトップファイルを生成し、次に仮想マシンの仮想化技術のインターフェースを呼び出して、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトするように変更し、その後、仮想マシンの仮想化技術のインターフェースを呼び出して、新規作成されたトップファイルを開くことができる。例えば、上記Ｎｏｖａ−ｃｏｍｐｕｔｅ内で動作する新規作成ユニットはｌｉｂｖｉｒｔのＡＰＩを呼び出してトップファイルを新規作成し、次にｌｉｂｖｉｒｔのＡＰＩを呼び出して、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、その後、ｌｉｂｖｉｒｔのＡＰＩを呼び出してｒｅｏｐｅｎコマンドを実行し、新規作成されたｄｉｓｋファイルを開くことができる。ｌｉｂｖｉｒｔはＬｉｎｕｘでの主流の仮想化ツールをサポートするフリー、オープンソースのＣ関数ライブラリである。
【０１１８】
第２判定ユニット７０５は、前回のスナップショット作成が成功したか否かを判定するように配置される。
【０１１９】
本実施形態では、上記仮想マシン管理モジュール内で動作する第２判定ユニット７０５は、第１スナップショットファイルをファイル管理サーバーにアップロードできる。ファイル管理サーバーはクラウドコンピューティングプラットフォームを構成するサーバーの一つであってもよく、生成されたスナップショットファイルを記憶して管理することに用いられる。
【０１２０】
本実施例のいくつかの代替実施形態では、上記第２判定ユニット７０５は抽出サブユニット、判定サブユニット、第１決定サブユニットおよび第２決定サブユニットを備えるが、それら（図示せず）に限定されない。
【０１２１】
抽出サブユニットは、すべてのリンクされるファイルの一意識別子を抽出するように配置される。
【０１２２】
判定サブユニットは、一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定するように配置される。
【０１２３】
第１決定サブユニットは、一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定するように配置される。
【０１２４】
第２決定サブユニットは、一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定するように配置される。
【０１２５】
決定ユニット７０６は、前回のスナップショット作成が成功した場合に、リネームされたトップファイルを第１スナップショットファイルとする。
【０１２６】
第１アップロードユニット７０７は、第１スナップショットファイルをファイル管理サーバーにアップロードするように配置される。
【０１２７】
上記仮想マシンシステムディスクのスナップショットの作成装置７００は、第２合併ユニット７０８および第２アップロードユニット７０９をさらに備えるが、それらに限定されない。
【０１２８】
第２合併ユニット７０８は、前回のスナップショット作成が失敗したと判定された場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併するように配置される。
【０１２９】
前回の仮想マシンスナップショットの作成が失敗した後に、仮想マシンがトップファイルを改めて開く過程が完了したので、仮想マシンが実行中であり、ユーザに感じさせないように、リンク構造を維持してバックオフしない。前回の仮想マシンスナップショットを作成するデータの漏れを回避するために、上記仮想マシン管理モジュール内で動作する第２合併ユニット７０８は、現在仮想マシンスナップショットの作成コマンドが受信されたことに応答して、以下のステップにより、前回の仮想マシンスナップショットの作成が失敗したか否かを検査できる。即ち、すべての依存ファイル名におけるＵＵＩＤを抽出し、データベースのスナップショットリストに当該ＵＵＩＤが存在するか否かを問い合わせ、データベースのスナップショットリストに当該ＵＵＩＤが存在する場合に、前回のライブスナップショット過程が成功し、データベースのスナップショットリストに当該ＵＵＩＤが存在しない場合に、前回のライブスナップショットが失敗した。前回のライブスナップショットが失敗したと検出された場合に、前回の失敗したスナップショットファイルと現在作成された仮想マシンスナップショットファイルとを合併し、合併された第２スナップショットファイルをアップロード対象のスナップショットデータとする。
【０１３０】
第２アップロードユニット７０９は、第２スナップショットファイルをファイル管理サーバーにアップロードするように配置される。
【０１３１】
上記第２アップロードユニット７０９は、上記第２スナップショットファイルが取得されたことに応答して、第２スナップショットファイルをファイル管理サーバーにアップロードする。
【０１３２】
上記仮想マシンシステムディスクのスナップショットの作成装置７００はコピーユニット７１０および第３アップロードユニット７１１をさらに備えるが、それらに限定されない。
【０１３３】
コピーユニット７１０は、仮想マシンがオフ状態である場合に、作成コマンドが受信されたことに応答して、仮想マシンイメージファイルのトップファイルをコピーし、第３スナップショットファイルを取得するように配置される。
【０１３４】
上記仮想マシン管理モジュール内で動作するコピーユニット７１０は第１判定ユニット７０２の判定結果（即ち、仮想マシンがオフ状態である）を取得した場合に、仮想マシンイメージファイルのトップファイルをコピーし、第３スナップショットファイルを取得する。
【０１３５】
第３アップロードユニット７１１は、第３スナップショットファイルをファイル管理サーバーにアップロードするように配置される。
【０１３６】
上記仮想マシン管理モジュール内で動作する第３アップロードユニット７１１は、まず上記第３スナップショットファイルを取得し、次に、第３スナップショットファイルをファイル管理サーバーにアップロードする。
【０１３７】
前記仮想マシンシステムディスクのスナップショットの作成装置７００が、プロセッサ、メモリなどのいくつかの他の公知の構造をさらに備えてもよく、本発明の実施例を曖昧にすることを回避するために、これらの公知の構造を図７に示しなかったことを、当業者は理解することができる。
【０１３８】
上記仮想マシンシステムディスクのスナップショットの作成装置は第３判定ユニット、第１合併ユニットおよび変更ユニットをさらに備えるが、それら（図示せず）に限定されないようにしてもよい。
【０１３９】
第３判定ユニットは、アップロードが成功したことに応答して、リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する。
【０１４０】
上記仮想マシン管理モジュール内で動作する第３判定ユニットは仮想マシンの仮想化技術のインターフェースを呼び出し、上記第１スナップショットファイルまたは第２スナップショットファイルのアップロードが成功したことに応答して、リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する。
【０１４１】
リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する際に、リネームされたトップファイルの依存ファイルの一意識別子を抽出し、一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定し、一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、履歴スナップショットファイルである場合に判定するようにしてもよい。
【０１４２】
第１合併ユニットは、リネームされたトップファイルの依存が履歴スナップショットファイルである場合に、リネームされたトップファイルと履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するように配置される。
【０１４３】
上記仮想マシン管理モジュール内で動作する第１合併ユニットは、リンクの長さが長すぎて読み書き性能を損なうとともに使用される物理マシンのディスク容量が大きすぎることを防止するために、既存のシステムディスクファイルを合併してリンクの長さを所定範囲に確保する必要がある。したがって、第１合併ユニットはシステムディスクファイルのリンクの長さを取得し、且つリンクの長さが３を超えると判定する場合に、つまりシステムディスクファイルがＢａｓｅファイル、リネームされたＴｏｐファイルおよび新規作成されたＴｏｐファイル以外、履歴スナップショットファイルを更に含む場合に、リネームされたトップファイルと履歴スナップショットファイルとを合併し、新たな履歴スナップショットファイルを取得することができる。
【０１４４】
いくつかの実施形態では、上記第１合併ユニットは、リネームされたトップファイルおよび履歴スナップショットファイルをソースファイルとしてバックアップするバックアップサブユニットと、バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認する確認サブユニットと、バックアップファイルの依存関係とソースファイルの依存関係が異なると確認された場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更する変更サブユニットと、バックアップファイルの依存関係がとソースファイルの依存関係が同様であると確認された場合に、バックアップファイルを合併し、新たな履歴スナップショットファイルを取得する合併サブユニットと、ソースファイルを削除し、つまり元のリネームされたトップファイルおよび元の履歴スナップショットファイルを削除する削除サブユニットと、を備えるが、それらに限定されない。
【０１４５】
変更ユニットは、新規作成されたトップファイルの依存を新たな履歴スナップショットファイルに変更し、新規作成されたトップファイルを改めて開く。
【０１４６】
上記仮想マシンシステムディスクのスナップショットの作成装置は第２受信ユニット、ダウンロードユニットおよび第３合併ユニットをさらに備えるが、それら（図示せず）に限定されない。
【０１４７】
第２受信ユニットは、スナップショットロールバックコマンドを受信する。
【０１４８】
上記仮想マシン管理モジュール内で動作する第２受信ユニットは、ユーザーから入力されるスナップショットロールバックコマンドを直接的および／または間接的に受信でき、当該コマンドはロールバック用のスナップショットの汎用一意識別子を含み、当該汎用一意識別子に基づきスナップショットファイルを一意的に決定でき、当該一意的に決定されたスナップショットファイルに基づき、ロールバックの時点情報を決定する。
【０１４９】
いくつかの実施形態では、第２受信ユニットがユーザーから入力されるスナップショットロールバックコマンドを間接的に受信するために、第２受信ユニットは、ロールバックコマンドを選択するインターフェースを表示する第１表示サブユニットと、ロールバックコマンドに対する第１選択操作を受信する第１受信サブユニットと、第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示する第２表示サブユニットと、ロールバック時点に対応する第２選択操作を受信する第２受信サブユニットと、を備えるが、それらに限定されない。
【０１５０】
ダウンロードユニットは、スナップショットロールバックコマンドが受信されたことに応答して、ファイル管理サーバーからスナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードする。
【０１５１】
上記仮想マシン管理モジュール内で動作するダウンロードユニットは、スナップショットの汎用一意識別子に基づき、ファイル管理サーバーからダウンロードするスナップショットファイルを決定してもよい。
【０１５２】
上記の実現形態では、第２受信ユニットが第１表示サブユニット、第１受信サブユニット、第２表示サブユニットおよび第２受信サブユニットを備えることに対応して、ダウンロードユニットは、第２選択操作が受信されたことに応答して、ファイル管理サーバーから第２選択操作に適合するスナップショットファイルをダウンロードするダウンロードサブユニットを備えるが、それに限定されない。
【０１５３】
第３合併ユニットは、ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併する。
【０１５４】
上記仮想マシン管理モジュール内で動作する第３合併ユニットは、システムディスクファイルの構造のリンクの長さを適切な範囲に確保するために、ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併する。
【０１５５】
装置７００に記載の各記憶ユニットは図２を参照しながら説明された方法における各ステップと対応することを当業者は理解すべきである。それにより、仮想マシンシステムディスクのスナップショットの作成方法について説明された上記操作と特徴は同様に装置７００およびそれに含まれるユニットに適用し、ここで説明は省略する。本願の実施例の解決策を実現するために、装置７００における対応ユニットは端末装置またはサーバにおけるユニットと相互に組み合わせてもよい。
【０１５６】
以下、本発明の実施例を実現するための端末装置またはサーバに適用されるコンピュータシステム８００を示す構造模式図である図８を参照する。
【０１５７】
図８に示すように、コンピュータシステム８００は、読み出し専用メモリ（ＲＯＭ）８０２に記憶されているプログラムまたは記憶部８０８からランダムアクセスメモリ（ＲＡＭ）８０３にロードされたプログラムに基づいて様々な適当な動作および処理を実行することができる中央処理装置（ＣＰＵ）８０１を備える。ＲＡＭ８０３には、システム８００の操作に必要な様々なプログラムおよびデータがさらに記憶されている。ＣＰＵ８０１、ＲＯＭ８０２およびＲＡＭ８０３は、バス８０４を介して互いに接続されている。入力／出力（Ｉ／Ｏ）インターフェース８０８もバス８０４に接続されている。
【０１５８】
キーボード、マウスなどを含む入力部８０６、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）など、およびスピーカなどを含む出力部８０７、ハードディスクなどを含む記憶部８０８、およびＬＡＮカード、モデムなどを含むネットワークインターフェースカードの通信部８０９は、Ｉ／Ｏインターフェース８０５に接続されている。通信部８０９は、例えばインターネットのようなネットワークを介して通信処理を実行する。ドライバ８１０は、必要に応じてＩ／Ｏインターフェース８０５に接続される。リムーバブルメディア８１１は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ８１０に取り付けられ、したがって、ドライバ８１０から読み出されたコンピュータプログラムが必要に応じて記憶部８０８にインストールされる。
【０１５９】
特に、本発明の実施例によれば、上記のフローチャートを参照しながら記載されたプロセスは、コンピュータのソフトウェアプログラムとして実現されてもよい。例えば、本発明の実施例は、コンピュータプログラム製品を含み、当該コンピュータプログラム製品は、機械可読媒体に有形に具現化されるコンピュータプログラムを含み、前記コンピュータプログラムは、フローチャートで示される方法を実行するためのプログラムコードを含む。このような実施例では、当該コンピュータプログラムは、通信部８０９を介してネットワークからダウンロードされてインストールされてもよく、および／またはリムーバブルメディア８１１からインストールされてもよい。
【０１６０】
図面におけるフローチャートおよびブロック図は、本発明の各実施例に係るシステム、方法およびコンピュータプログラム製品により実現可能なアーキテクチャ、機能および操作を示す。ここで、フローチャートまたはブロック図における各枠は、１つのモジュール、プログラムセグメント、またはコードの一部を代表してもよく、前記モジュール、プログラムセグメント、またはコードの一部は、規定された論理機能を実現するための１つ以上の実行可能な命令を含む。なお、いくつかの代替実施態様として、枠に示された機能は、図面に示された順番と異なる順番で実行されてもよい。例えば、連続して示された２つの枠は、関連する機能に応じて、実際にほぼ並行に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図および／またはフローチャートにおける各枠と、ブロック図および／またはフローチャートにおける枠の組合せは、規定された機能または操作を実行する、ハードウェアに基づく専用システムで実現されてもよく、あるいは、専用ハードウェアとコンピュータの命令との組合せで実行されてもよい。
【０１６１】
本発明の実施例に記載されたユニットは、ソフトウェアで実現されてもよく、ハードウェアで実現されてもよい。記載されたユニットは、プロセッサに設定されてもよく、例えば、「第１受信ユニット、第１判定ユニット、命名ユニット、新規作成ユニット、第２判定ユニット、決定ユニットおよび第１アップロードユニットを備えるプロセッサ」として記載されてもよい。その中でも、これらのユニットの名称は、ある場合において当該ユニットその自体を限定するものではなく、例えば、第１受信ユニットは、「仮想マシンがオン状態であるか否かを判定するユニット」として記載されてもよい。
【０１６２】
一方、本発明は、不揮発性コンピュータ記憶媒体をさらに提供し、当該不揮発性コンピュータ記憶媒体は、上記の実施例の前記装置に含まれる不揮発性コンピュータ記憶媒体であってもよく、独立に存在して端末に組み立てられていない不揮発性コンピュータ記憶媒体であってもよい。前記不揮発性コンピュータ記憶媒体は、１つ以上のプログラムが記憶され、前記１つ以上のプログラムが１つの機器により実行された場合、前記機器に、仮想マシンスナップショットの作成コマンドを受信し、仮想マシンがオン状態であるか否かを判定し、仮想マシンがオン状態である場合に、作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルにおけるトップファイルをリネームし、トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開き、前回のスナップショット作成が成功したか否かを判定し、前回のスナップショット作成が成功した場合に、リネームされたトップファイルを第１スナップショットファイルとし、第１スナップショットファイルをファイル管理サーバーにアップロードするステップようにさせる。
【０１６３】
以上の記載は、本発明の好ましい実施例、および使用された技術的原理の説明に過ぎない。本発明に係る特許請求の範囲が、上記した技術的特徴の特定な組合せからなる技術案に限定されることではなく、本発明の趣旨を逸脱しない範囲で、上記の技術的特徴または同等の特徴の任意の組合せからなる他の技術案も含むべきであることを、当業者は理解すべきである。例えば、上記の特徴と、本発明に開示された類似の機能を持っている技術的特徴（これらに限定されていない）とを互いに置き換えてなる技術案が挙げられる。
なお、出願当初の特許請求の範囲の記載は以下の通りである。
請求項１：
仮想マシンスナップショットの作成コマンドを受信するステップと、
仮想マシンがオン状態であるか否かを判定するステップと、
前記仮想マシンがオン状態である場合に、前記作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルにおけるトップファイルをリネームするステップと、
前記トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開くステップと、
前回のスナップショット作成が成功したか否かを判定するステップと、
前回のスナップショット作成が成功した場合に、前記リネームされたトップファイルを第１スナップショットファイルとするステップと、
前記第１スナップショットファイルをファイル管理サーバーにアップロードするステップと、を含むこと
を特徴とする仮想マシンシステムディスクのスナップショットの作成方法。
請求項２：
アップロードが成功したことに応答して、前記リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定するステップと、
前記リネームされたトップファイルの依存ファイルが履歴スナップショットファイルである場合に、前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するステップと、
前記新規作成されたトップファイルの依存を前記新たな履歴スナップショットファイルに変更し、新規作成されたトップファイルを改めて開くステップと、をさらに含むこと
を特徴とする請求項１に記載の方法。
請求項３：
前記の前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併するステップにおいては、
前記リネームされたトップファイルおよび前記履歴スナップショットファイルをソースファイルとしてバックアップするステップと、
バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認するステップと、
バックアップファイルの依存関係とソースファイルの依存関係が異なる場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更するステップと、
バックアップファイルの依存関係とソースファイルの依存関係が同じである場合に、前記バックアップファイルを合併して前記新たな履歴スナップショットファイルを取得するステップと、
前記ソースファイルを削除するステップと、を含むこと
を特徴とする請求項２に記載の方法。
請求項４：
前記の前回のスナップショット作成が成功したか否かを判定するステップにおいては、
すべての依存される一意識別子を抽出するステップと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定するステップと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定するステップと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定するステップと、を含むこと
を特徴とする請求項１に記載の方法。
請求項５：
前回のスナップショット作成が失敗した場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併するステップと、
前記第２スナップショットファイルをファイル管理サーバーにアップロードするステップと、をさらに含むこと
を特徴とする請求項１に記載の方法。
請求項６：
前記仮想マシンがオフ状態である場合に、前記作成コマンドが受信されたことに応答して、前記仮想マシンのシステムディスクファイルのトップファイルをコピーし、第３スナップショットファイルを取得するステップと、
前記第３スナップショットファイルをファイル管理サーバーにアップロードするステップと、をさらに含むこと
を特徴とする請求項１に記載の方法。
請求項７：
スナップショットロールバックコマンドを受信するステップと、
前記スナップショットロールバックコマンド受信したに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするステップと、
ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併するステップと、をさらに含むこと
を特徴とする請求項１〜６のいずれかに記載の方法。
請求項８：
前記のスナップショットロールバックコマンドを受信するステップにおいては、ロールバックコマンドを選択するインターフェースを表示するステップと、前記ロールバックコマンドに対する第１選択操作を受信するステップと、前記第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示するステップと、前記ロールバック時点に対する第２選択操作を受信するステップと、を含んでおり、
前記の前記スナップショットロールバックコマンドが受信されたことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするステップにおいては、前記第２選択操作が受信されたことに応答して、前記ファイル管理サーバーから前記第２選択操作に適合するスナップショットファイルをダウンロードするステップを含むこと
を特徴とする請求項７に記載の方法。
請求項９：
前記仮想マシンはオープンソースのクラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋによりハードウェア仮想化技術ｑｅｍｕ−ｋｖｍに基づき作成される仮想マシンであり、
前記仮想マシンのシステムディスクファイルフォーマットはｑｃｏｗ２フォーマットのリンク構造であるること
を特徴とする請求項８に記載の方法。
請求項１０：
前記システムディスクファイルのリンクの長さは４以下であること
を特徴とする請求項９に記載の方法。
請求項１１：
仮想マシンスナップショットの作成コマンドを受信する第１受信ユニットと、
仮想マシンがオン状態であるか否かを判定する第１判定ユニットと、
前記仮想マシンがオン状態である場合に、前記作成コマンドが受信されたことに応答して、仮想マシンのシステムディスクファイルのトップファイルをリネームする命名ユニットと、
前記トップファイルのリネームが完了したことに応答して、トップファイルを新規作成し、新規作成されたトップファイルの依存をリネームされたトップファイルにダイレクトし、新規作成されたトップファイルを開く新規作成ユニットと、
前回のスナップショット作成が成功したか否かを判定する第２判定ユニットと、
前回のスナップショット作成が成功した場合に、前記リネームされたトップファイルを第１スナップショットファイルとする決定ユニットと、
前記第１スナップショットファイルをファイル管理サーバーにアップロードする第１アップロードユニットと、を備えること
を特徴とする仮想マシンシステムディスクのスナップショットの作成装置。
請求項１２：
アップロードが成功したことに応答して、前記リネームされたトップファイルの依存が履歴スナップショットファイルであるか否かを判定する第３判定ユニットと、
前記リネームされたトップファイルの依存ファイルが履歴スナップショットファイルである場合に、前記リネームされたトップファイルと前記履歴スナップショットファイルとを新たな履歴スナップショットファイルに合併する第１合併ユニットと、
前記新規作成されたトップファイルの依存を前記新たな履歴スナップショットファイルに変更し、新規作成されたトップファイルを改めて開く変更ユニットと、をさらに備えること
を特徴とする請求項１１に記載の装置。
請求項１３：
前記第１合併ユニットは、
前記リネームされたトップファイルおよび前記履歴スナップショットファイルをソースファイルとしてバックアップするバックアップサブユニットと、
バックアップファイルの依存関係とソースファイルの依存関係が同じであるか否かを確認する確認サブユニットと、
バックアップファイルの依存関係とソースファイルの依存関係が異なると確認された場合に、バックアップファイルの依存関係をソースファイルの依存関係と同じように変更する変更サブユニットと、
バックアップファイルの依存関係とソースファイルの依存関係が同じであると確認された場合に、前記バックアップファイルを合併して前記新たな履歴スナップショットファイルを取得する合併サブユニットと、
前記ソースファイルを削除する削除サブユニットと、を備えること
を特徴とする請求項１２に記載の装置。
請求項１４：
前記第２判定ユニットは、
すべての依存される一意識別子を抽出する抽出サブユニットと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在するか否かを判定する判定サブユニットと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在する場合に、前回のスナップショット作成が成功したと判定する第１決定サブユニットと、
前記一意識別子がアップロード済みのデータベースのスナップショットリストに存在しない場合に、前回のスナップショット作成が失敗したと判定する第２決定サブユニットと、を備えること
を特徴とする請求項１１に記載の装置。
請求項１５：
前回のスナップショット作成が失敗したと判定された場合に、前回のスナップショット作成で生成された、リネームされたトップファイルと現在のスナップショット作成で生成された、リネームされたトップファイルとを第２スナップショットファイルに合併する第２合併ユニットと、
前記第２スナップショットファイルをファイル管理サーバーにアップロードする第２アップロードユニットと、をさらに備えること
を特徴とする請求項１１に記載の装置。
請求項１６：
前記仮想マシンがオフ状態である場合に、前記作成コマンドが受信されたことに応答して、前記仮想マシンのシステムディスクファイルのトップファイルをコピーし、第３スナップショットファイルを取得するコピーユニットと、
前記第３スナップショットファイルをファイル管理サーバーにアップロードする第３アップロードユニットと、をさらに備えること
を特徴とする請求項１１に記載の装置。
請求項１７：
スナップショットロールバックコマンドを受信する第２受信ユニットと、
前記スナップショットロールバックコマンドが受信されたことに応答して、前記ファイル管理サーバーから前記スナップショットロールバックコマンドに適合するスナップショットファイルをダウンロードするダウンロードユニットと、
ダウンロードされたスナップショットファイルが複数である場合に、ダウンロードされたスナップショットファイルを合併する第３合併ユニットと、をさらに備えること
を特徴とする請求項１１〜１６のいずれかに記載の装置。
請求項１８：
前記第２受信ユニットは、ロールバックコマンドを選択するインターフェースを表示する第１表示サブユニットと、前記ロールバックコマンドに対する第１選択操作を受信する第１受信サブユニットと、前記第１選択操作が受信されたことに応答して、ロールバック時点を選択するインターフェースを表示する第２表示サブユニットと、前記ロールバック時点に対する第２選択操作を受信する第２受信サブユニットと、を備えており、
前記ダウンロードユニットは、前記第２選択操作が受信されたことに応答して、前記ファイル管理サーバーから前記第２選択操作に適合するスナップショットファイルをダウンロードするダウンロードサブユニットを備えることを特徴とする請求項１７に記載の装置。
請求項１９：
前記装置における前記仮想マシンはオープンソースのクラウドコンピューティング管理プラットフォームアーキテクチャＯｐｅｎＳｔａｃｋによりハードウェア仮想化技術ｑｅｍｕ−ｋｖｍに基づき作成される仮想マシンであり、
前記装置における前記仮想マシンのシステムディスクファイルフォーマットはｑｃｏｗ２フォーマットのリンク構造であることを特徴とする請求項１８に記載の装置。
請求項２０：
前記装置における前記システムディスクファイルのリンクの長さは４以下であることを特徴とする請求項１９に記載の装置。
【図１】
0006345211.tif 000002
【図２】
0006345211.tif 000003
【図３】
0006345211.tif 000004
【図４】
0006345211.tif 000005
【図５】
0006345211.tif 000006
【図６】
0006345211.tif 000007
【図７】
0006345211.tif 000008
【図８】
0006345211.tif 000009