(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-16
(54)【発明の名称】ファイルレベルの複数のスナップショットを使用したVMファイル管理
(51)【国際特許分類】
G06F 16/188 20190101AFI20240409BHJP
G06F 16/28 20190101ALI20240409BHJP
【FI】
G06F16/188
G06F16/28
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023564415
(86)(22)【出願日】2022-02-25
(85)【翻訳文提出日】2023-10-20
(86)【国際出願番号】 CN2022077838
(87)【国際公開番号】W WO2022222602
(87)【国際公開日】2022-10-27
(32)【優先日】2021-04-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100118599
【氏名又は名称】村上 博司
(74)【復代理人】
【識別番号】100160738
【氏名又は名称】加藤 由加里
(72)【発明者】
【氏名】ワン,ダーロン
(72)【発明者】
【氏名】チェン,チンユエ
(72)【発明者】
【氏名】フェン,シュエリアン
(72)【発明者】
【氏名】リャン,ヤン
(72)【発明者】
【氏名】フェン,ヤンヤン
(72)【発明者】
【氏名】ション,ビン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175AA02
(57)【要約】
VMファイル管理は、仮想マシン(VM)へアクセスする為のユーザ要求を検出すること、及びアクセスを要求するユーザがリスト上で識別されるかどうかを決定する為に、予め定義されたリストを検索することを含む。その場合、該ユーザによるVMファイルの変更を可能にする前に、ファイルレベルのスナップショットが作成される。ファイルレベルの該スナップショットは、ユーザ属性を含み、及びスタックの最上位層として追加される。該ユーザ属性は、ファイルレベルの該スナップショットが作成されるところの該ユーザの役割を示す。該スタックの各層は、1以上の他のファイルレベルの複数の該スナップショットを含む。該ユーザが該VMファイルを変更することに応答して、該VMファイルは、該VMファイルの全体で該スナップショットに書き込まれる。各スナップショットの該ユーザ属性に基づいて、複数のスナップショットの1組が該スタックから選択され、該複数のスナップショットの該選択された1組に属する複数の該VMファイルをマージすることによって、該VMが変更される。
【選択図】
図2
【特許請求の範囲】
【請求項1】
コンピュータに実装された方法であって、
仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること;
予め定義されたユーザリストを検索して、アクセスを要求する前記ユーザが前記予め定義されたユーザリストの中で識別されるかを判断すること;
前記予め定義されたユーザリストの中で前記ユーザを識別することに応答して、前記ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成すること、ここで、ファイルレベルの前記1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の前記ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含み、及び前記スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む;
前記VMファイルを変更する前記ユーザからのユーザ入力に応答して、前記ユーザによって変更された部分を含む前記VMファイルを該VMファイルの全体で、ファイルレベルの前記1つのスナップショットに保存すること;並びに、
前記スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの前記1組に属する前記複数のスナップショットによってキャプチャされた複数の前記VMファイルをマージすることによって前記VMを変更すること
を含む、
前記方法。
【請求項2】
マージする為に選択された、ファイルレベルの前記複数のスナップショットの各々は、ファイルレベルの選択された前記1つのスナップショットが作成された対象の前記ユーザの役割がIT管理者であることを示すユーザ属性を有し、並びに前記変更することは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージすることによって前記VMをロールバックすること、及び前記VMの他の全てのVMファイルをオリジナルの未変更状態で保持することを含む、請求項1に記載の方法。
【請求項3】
ファイルレベルの前記複数のスナップショットが、ユニオンマウントファイルシステムを実装された、ファイルレベルの複数のオーバーレイスナップショットであり、該ユニオンマウントファイルシステムは、複数のマウントポイントを組み合わせて、別々にソースされたファイルとサブディレクトリとを含む単一のディレクトリ構造を作成する、請求項1に記載の方法。
【請求項4】
前記スタックの前記最上位層として追加された、ファイルレベルの前記1つのスナップショットのみが、データの読み書きの両方をサポートするアクティブな1つのスナップショットであり、ここで、下位層の、ファイルレベルの複数のスナップショットは読み取り専用である、請求項1に記載の方法。
【請求項5】
前記VMを変更することに応じてファイルレベルの前記複数のスナップショットの各々を削除することによって、前記VMに関連付けられたデータストレージスペースを再利用することを更に含む、請求項1に記載の方法。
【請求項6】
前記最上位層として追加された、ファイルレベルの前記1つのスナップショットが作成された時刻を示すタイムスタンプを保存すること、及び保存された、ファイルレベルの各スナップショットに関連付けられたタイムスタンプに従って順序付けられた前記スタックに保存された、ファイルレベルの前記複数のスナップショットのリストを維持することを更に含む、請求項1に記載の方法。
【請求項7】
前記検出することが、前記VMをサポートするハイパーバイザ内に統合されたアクセス要求モニタ(ARM)によって実行される、請求項1に記載の方法。
【請求項8】
システムであって、該システムは、
命令を開始するように構成されたプロセッサ
を備えており、
前記命令は、
仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること;
予め定義されたユーザリストを検索して、アクセスを要求する前記ユーザが前記予め定義されたユーザリストの中で識別されるかを判断すること;
前記予め定義されたユーザリストの中で前記ユーザを識別することに応答して、前記ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成すること、ここで、ファイルレベルの前記1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の前記ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含み、及び前記スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む;
前記VMファイルを変更する前記ユーザからのユーザ入力に応答して、前記ユーザによって変更された部分を含む前記VMファイルを該VMファイルの全体で、ファイルレベルの前記1つのスナップショットに保存すること;並びに、
前記スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの前記1組に属する前記複数のスナップショットによってキャプチャされた複数の前記VMファイルをマージすることによって前記VMを変更すること
を含む、前記システム。
【請求項9】
マージする為に選択された、ファイルレベルの前記複数のスナップショットの各々は、ファイルレベルの選択された前記1つのスナップショットが作成された対象の前記ユーザの役割がIT管理者であることを示すユーザ属性を有し、並びに前記変更することは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージすることによって前記VMをロールバックすること、及び前記VMの他の全てのVMファイルをオリジナルの未変更状態で保持することを含む、請求項8に記載のシステム。
【請求項10】
ファイルレベルの前記複数のスナップショットが、ユニオンマウントファイルシステムを実装された、ファイルレベルの複数のオーバーレイスナップショットであり、該ユニオンマウントファイルシステムは、複数のマウントポイントを組み合わせて、別々にソースされたファイルとサブディレクトリとを含む単一のディレクトリ構造を作成する、請求項8に記載のシステム。
【請求項11】
前記スタックの前記最上位層として追加された、ファイルレベルの前記1つのスナップショットのみが、データの読み書きの両方をサポートするアクティブな1つのスナップショットであり、ここで、下位層の、ファイルレベルの複数のスナップショットは読み取り専用である、請求項8に記載のシステム。
【請求項12】
前記プロセッサが、前記VMを変更することに応じて、前記複数のスナップショットの各々を削除することによって、前記VMに関連付けられたデータストレージスペースを再利用することを更に含む命令を開始するように構成されている、請求項8に記載のシステム。
【請求項13】
前記プロセッサが、前記最上位層として追加された、ファイルレベルの前記1つのスナップショットが作成された時刻を示すタイムスタンプを保存すること、及び保存された、ファイルレベルの各スナップショットに関連付けられたタイムスタンプに従って順序付けられた前記スタックに保存された、ファイルレベルの前記複数のスナップショットのリストを維持することを更に含む命令を開始するように構成されている、請求項8に記載のシステム。
【請求項14】
コンピュータプログラム製品であって、該コンピュータプログラム製品が、
1以上のコンピュータ可読ストレージ媒体及び該1以上のコンピュータ可読ストレージ媒体上に集合的に記憶されたプログラム命令を備えており、前記プログラム命令がプロセッサによって実行可能であり、且つ該プロセッサに、
仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること;
予め定義されたユーザリストを検索して、アクセスを要求する前記ユーザが前記予め定義されたユーザリストの中で識別されるかを判断すること;
前記予め定義されたユーザリストの中で前記ユーザを識別することに応答して、前記ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成すること、ここで、ファイルレベルの前記1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の前記ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含み、及び前記スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む;
前記VMファイルを変更する前記ユーザからのユーザ入力に応答して、前記ユーザによって変更された部分を含む前記VMファイルを該VMファイルの全体で、ファイルレベルの前記1つのスナップショットに保存すること;並びに、
前記スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの前記1組に属する前記複数のスナップショットによってキャプチャされた複数の前記VMファイルをマージすることによって前記VMを変更すること
を含む命令を開始させる、前記コンピュータプログラム製品。
【請求項15】
マージする為に選択された、ファイルレベルの前記複数のスナップショットの各々は、ファイルレベルの選択された前記1つのスナップショットが作成された対象の前記ユーザの役割がIT管理者であることを示すユーザ属性を有し、並びに前記変更することは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージすることによって前記VMをロールバックすること、及び前記VMの他の全てのVMファイルをオリジナルの未変更状態で保持することを含む、請求項14に記載のコンピュータプログラム製品。
【請求項16】
ファイルレベルの前記複数のスナップショットが、ユニオンマウントファイルシステムを実装された、ファイルレベルの複数のオーバーレイスナップショットであり、該ユニオンマウントファイルシステムは、複数のマウントポイントを組み合わせて、別々にソースされたファイルとサブディレクトリとを含む単一のディレクトリ構造を作成する、請求項14に記載のコンピュータプログラム製品。
【請求項17】
前記スタックの前記最上位層として追加された、ファイルレベルの前記1つのスナップショットのみが、データの読み書きの両方をサポートするアクティブな1つのスナップショットであり、ここで、下位層の、ファイルレベルの複数のスナップショットは読み取り専用である、請求項14に記載のコンピュータプログラム製品。
【請求項18】
前記プログラム命令が前記プロセッサによって実行可能であり、且つ該プロセッサに、前記VMを変更することに応じて、前記複数のスナップショットの各々を削除することによって、前記VMに関連付けられたデータストレージスペースを再利用することを更に含む命令を開始させる、請求項14に記載のコンピュータプログラム製品。
【請求項19】
前記プログラム命令が前記プロセッサによって実行可能であり、且つ該プロセッサに、前記最上位層として追加された前記1つのスナップショットが作成された時刻を示すタイムスタンプを保存すること、及び保存された各スナップショットに関連付けられたタイムスタンプに従って順序付けられた前記スタックに保存された前記複数のスナップショットのリストを維持することを更に含む命令を開始させる、請求項14に記載のコンピュータプログラム製品。
【請求項20】
前記検出することが、前記VMをサポートするハイパーバイザ内に統合されたアクセス要求モニタ(ARM)によって実行される、請求項14に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、仮想化技術に関し、より特には、ファイルレベルの複数のスナップショットのバージョン管理(version control)を用いた仮想マシン(VM:virtual machine)ファイルを管理することに関する。
【背景技術】
【0002】
仮想化は、数十年前の技術であるが、それにもかかわらず、単独でもネットワークの一部としても、様々な種類のユーザに大きなメリットをもたらしている。この技術により、単一のコンピュータシステム(例えば、サーバ)が複数のVMをホストすることを可能にし、各VMが異なるオペレーティングシステムを潜在的に実行する。1つの利点は、1つのVMが故障しても、他のVMが自動的にダウンしないことである。仮想化されたシステムにおいて、異なるサーバが異なるVM上で実行することができる為に、マルチコンピュータの機能を低コストで且つ容易な保守性で提供することができる。仮想化のもう1つの利点は、VMのチェックポイント設定及び移行(例えば、複数のサーバ間でロードバランシングを行う)が、標準的なオペレーティングシステム上で実行されている方法の移行よりもはるかに簡単であることである。
【0003】
他の利点は、現在のハードウェア上でもはやサポートされなくなったオペレーティングシステム(又は、バージョン)上でレガシーアプリケーションを実行すること、ソフトウェア開発者が様々なオペレーティングシステムを実行する複数のコンピュータを使用するのではなく、VMを使用して様々なオペレーティングシステムでアプリケーションのパフォーマンスをテストすることを可能にすることを含む。VMで作成された仮想環境のスケーラビリティは、拡大する企業がIT機能の向上に対する企業のニーズに効率的且つ迅速に対応することができることを仮想化により可能にするという点で企業にとって特に有利である。
【0004】
VMの寿命の間、様々な時刻におけるVMの様々な状態をキャプチャすることが有用である可能性がある。これを行う為の1つのメカニズムは、特定の時点におけるVMの現在の状態の様々な属性をキャプチャし、そして電子的に保存するスナップショットを作成することである。スナップショットは典型的には、ブロックレベルで実装され、ここで、各スナップショットは、変更されていたデータのブロックのみを保存する。ブロックレベルのスナップショットは、ファイルを該ファイルの全体でキャプチャしない。どの変更されたブロックがどのファイルに属しているかは、ブロックレベルのスナップショットで判断されることができない。
【0005】
従って、VMオペレーティングシステムにおける欠陥を更新又は変更する為のパッチをインストールするコンテキストを含む、ブロックレベルのスナップショットは、幾つかの点で問題がある。ブロックレベルのスナップショットは、IT管理者によってインストールされたパッチによって変更されたファイルを、他のタイプのユーザ(例えば、開発者、通常のVMユーザ)によって行われたVMファイルの変更から分離する能力を排除又は制限することができる。VMの状態が以前の状態にロールバックされる必要がある場合に、該ロールバックは典型的には、時間経過と共に作成されるスナップショットによってキャプチャされたVMファイルをマージすること無しに実行される。その結果、インストールされたパッチは失われ、且つそのようなロールバックの度に手動で再インストールされる必要がある。このことは、数百又は数千のVMを利用する企業規模又は他の大規模なシステムにとっては、かなりの作業である可能性がある。例えば、パッチの定期的なインストールを通じてITセキュリティを維持する場合に、IT管理者及びVMユーザは、VMロールバック後にパッチを手動で再インストールするという反復タスクを行う際に、かなりの時間とエネルギーとを費やす必要がある可能性がある。
【発明の概要】
【課題を解決するための手段】
【0006】
例示的な実装において、ファイルレベルの複数のスナップショット及びバージョン管理を使用して仮想マシン(VM:virtual machine)ファイルを管理する為の、コンピュータに実装された方法は、VMへのアクセスを要求するユーザの電子的要求を検出することを含む。該方法は、仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること、予め定義されたユーザリストを検索して、アクセスを要求する該ユーザが該予め定義されたユーザリストの中で識別されるかを判断することを含む。該方法は、該予め定義されたユーザリストの中で該ユーザを識別することに応答して、該ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成することを含む。ファイルレベルの該1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の該ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含む。該スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む。該方法は、該VMファイルを変更する該ユーザからのユーザ入力に応答して、該ユーザによって変更された部分を含む該VMファイルを該VMファイルの全体で、ファイルレベルの該1つのスナップショットに保存することを含む。該方法は、該スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの該1組に属する該複数のスナップショットによってキャプチャされた複数の該VMファイルをマージすることによって該VMを変更することを含む。
【0007】
該コンピュータに実装された方法は、該VMへのアクセス要求(例えば、該要求がIT管理者又はVMユーザ(例えば、開発者、通常のVMユーザ)からのものであるか)を監視すること、及び各アクセス要求に応答してファイルレベルの1つのスナップショットの作成を可能にする。各ファイルレベルのスナップショットは、VMファイルの最新バージョンを、該VMファイルの該変更されたブロックのみでなく、該VMファイルの全体でキャプチャし、そして保存する。該要求を監視することを通じた、該コンピュータに実装された方法は、IT管理者からの入力(例えば、パッチインストール)に応答してなされたVMファイルの変更を、別のタイプのVMユーザからの入力に応答してなされた変更と区別することを更に可能にする。すなわち、該コンピュータに実装された方法は、入力を供給する該ユーザの夫々の役割に基づいて、VMファイルの変更を差別化すること(differentiate)又は区別すること(distinguish)、及び/又は分離することができる。
【0008】
従って、コンピュータに実施された方法の更に別の例示的な実装において、マージする為に選択された、該複数のスナップショットの各々は、選択された該1つのスナップショットが作成された対象の該ユーザの役割がIT管理者であることを示すユーザ属性を有する。該VMは、該VMを以前の状態にロールバックすることによって変更される。該ロールバックは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージし、そして、該VMの他の全てのVMファイルをオリジナルの未変更状態で保持することによって実行される。
【0009】
VMを以前の状態にロールバックする必要性が生じた場合、該コンピュータに実装された方法は、1人以上のIT管理者によってインストールされたパッチによって変更されたVMファイルのみをマージすることができる。他の役割におけるユーザによりなされた変更は、複数のVMファイルのマージにおいて無視される。このことにより、インストールされたパッチを失うこと無しに該VMのロールバックが達成されることが可能になり、それによって、複数のパッチの各々を手動で再インストールする必要がなくなり、結果として、時間及びリソースを節約する。
【0010】
別の例示的な実装において、ファイルレベルの該複数のスナップショット及びバージョン管理を使用して複数のVMファイルを管理する為のシステムは、命令を開始するように構成されたプロセッサを備えている。該命令は、仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること、予め定義されたユーザリストを検索して、アクセスを要求する該ユーザが該予め定義されたユーザリストの中で識別されるかを判断することを含む。該命令は、該予め定義されたユーザリストの中で該ユーザを識別することに応答して、該ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成することを含む。ファイルレベルの該1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の該ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含む。該スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む。該命令は、該VMファイルを変更する該ユーザからのユーザ入力に応答して、該ユーザによって変更された部分を含む該VMファイルを該VMファイルの全体で、ファイルレベルの該1つのスナップショットに保存することを含む。該命令は、該スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの該1組に属する該複数のスナップショットによってキャプチャされた該複数のVMファイルをマージすることによって該VMを変更することを含む。
【0011】
ファイルレベルの該複数のスナップショット及びバージョン管理を使用してVMファイルを管理する為のシステムの更に別の例示的な実施態様において、マージする為に選択された該複数のスナップショットの各々は、選択された該1つのスナップショットが作成された対象の該ユーザの役割がIT管理者であることを示すユーザ属性を有する。該VMは、該VMを以前の状態にロールバックすることによって変更される。該ロールバックは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージし、そして、該VMの他の全てのVMファイルをオリジナルの未変更状態で保持することによって実行される。
【0012】
別の例示的な実施態様において、コンピュータプログラム製品は、1以上のコンピュータ可読ストレージ媒体及び1以上のコンピュータ可読ストレージ媒体上に集合的に記憶されたプログラム命令を備えている。該プログラム命令は、該命令を開始する為にコンピュータハードウェアによって実行可能である。該命令は、仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること、予め定義されたユーザリストを検索して、アクセスを要求する該ユーザが該予め定義されたユーザリストの中で識別されるかを判断することを含む。該命令は、該予め定義されたユーザリストの中で該ユーザを識別することに応答して、該ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成することを含む。ファイルレベルの該1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の該ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含む。該スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む。該命令は、該VMファイルを変更する該ユーザからのユーザ入力に応答して、該ユーザによって変更された部分を含む該VMファイルを該VMファイルの全体で、ファイルレベルの該1つのスナップショットに保存することを含む。該命令は、該スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの該1組に属する該複数のスナップショットによってキャプチャされた該複数のVMファイルをマージすることによって該VMを変更することを含む。
【0013】
この「概要」のセクションは、或る概念を単に紹介する為に提供されるものであり、請求される主題の重要な又は必須の特徴を識別する為のものでない。本発明の構成の他の特徴は、添付の図面及び以下の詳細な説明から明らかになるであろう。
【0014】
本発明の構成は、添付の図面において例示的に示されている。しかしながら、該図面は、示された特別の実装のみに本発明の構成を限定するものと解釈されるべきでない。様々な観点及び利点が、以下の詳細な説明を検討することに応じて及び該図面を参照することに応じて明らかになるであろう。
【図面の簡単な説明】
【0015】
【
図1】
図1は、ファイルレベルの該複数のスナップショット及びバージョン管理を用いてVMファイルを管理する為の例示的なシステムを示すブロック図である。
【
図2】
図2は、
図1のシステムを用いてVMファイルを管理する為の例示的な方法を示すフローチャート図である。
【
図3】
図3は、
図1に図示されたVMファイルを管理する為の例示的なシステムを用いて実行されるVMロールバックの或る動作的な観点を示すブロック図である。
【
図4】
図4は、
図1のシステムを実装する為のコンピュータハードウェアシステムの1つの例を示すブロック図である。
【
図5】
図5は、クラウドコンピューティング環境の1つの例を示すブロック図である。
【
図6】
図6は、抽象化モデル層の例を示すブロック図である。
【発明を実施するための形態】
【0016】
本開示は、新規な特徴を定義する特許請求の範囲で締めくくられているが、本開示内に記載された様々な特徴は、図面と併せて本記載を考慮することでより良く理解されるものであると信じられる。本明細書において記載されている1以上の方法、1以上の機械、1以上の製造及びそれらの任意の変形は、説明の目的の為に提供される。本開示内に記載されている特定の構造的及び機能的な詳細は、限定的に解釈されるものでなく、単に特許請求の範囲の基礎として、及び当業者が実質的に任意の適切に詳細な構造において記載された特徴を様々に使用することを教える為の代表的な基礎として、解釈されるものである。更に、本開示内において使用される語及び句は、限定することを意図しておらず、寧ろ、記載された特徴の理解可能な説明を提供することが意図されている。
【0017】
本開示は、仮想化技術に関し、より特には、ファイルレベルの複数のスナップショット及びバージョン管理を用いてVMファイルを管理することに関する。VMファイルは、コンピュータシステムのディスクスペースの複数のブロック内に電子的に記憶されるデータを含む。本明細書において定義されるように、「スナップショット」は、特定の時点における1以上のVMファイルを含むVMの状態を記録するところのデータ構造である。VMファイルの複数のスナップショットをキャプチャする為の典型的なメカニズムは、ブロックレベルで実装され、それによって、各スナップショットは、ファイル全体でなく、変更されているデータを含むブロックのみを保存する。ブロックレベルのスナップショットは、データの変更されたブロックと、該変更されたブロックが属するファイルとの間の論理的なリンク(logical link)を提供しない。
【0018】
論理的なリンクの欠如は、幾つかのコンテキストにおいて問題となる可能性がある。例えば、VMの寿命の間に、IT管理者は、VMオペレーティングシステムの欠陥(例えば、セキュリティ脆弱性)をアップグレード又は変更する為に、任意の数のパッチをインストールしうる。しかしながら、ブロックレベルのスナップショットは、パッチインストールによって変更されたVMファイルと、1以上のVMファイルを扱う通常の過程における1人以上のVMユーザによって変更されたVMファイルとを分離する為の効率的な機構を提供しない。従って、VMユーザによって変更された複数のVMファイルもマージすること無しに、パッチインストールによって変更されたVMファイルのみがマージされる可能性は低い。それ故に、VMロールバックを実行する為の通常の手順は、任意の複数のスナップショットをマージすること無しにロールバックを実行し、その結果、インストールされたパッチの除去をもたらす。それ故に、該VMのロールバック毎に該パッチが再インストールされる必要がある。従って、多数のVMを備えている仮想環境に関して、ITセキュリティの遵守を達成する為には、IT管理者及びVMユーザが、失われたパッチを繰り返し再インストールするという反復的なタスクに膨大な時間とリソースとを費やす必要がある可能性がある。
【0019】
本明細書に記載された発明の構成に従って、VMファイルの変更(IT管理者が提供したパッチのインストールを含む)を効率的に管理し、及びVMファイルの変更をファイルレベルの複数のスナップショットのバージョン管理とマージする例示的な方法、システム、及びコンピュータプログラム製品が提供される。本明細書において定義されるように、「ファイルレベルのスナップショット」(file-level snapshot)は、VMファイルを該VMファイルの全体でキャプチャし、そして記憶するところのスナップショットである。ファイルレベルの複数のスナップショットを使用することにより、VMファイル管理が強化され且つより柔軟になり、例えば、1以上のVMファイルを変更するユーザ(例えば、IT管理者又は通常のVMユーザ)の役割に基づいてVMファイルの分離(separation)及び隔離(isolation)を可能にする。
【0020】
1以上の例示的な実装において、VMファイル管理システムは、アクセス要求モニタ(ARM:access request monitor)並びにファイルレベルのスナップショット機能を備えている。ARMは、VMへのアクセス要求を監視し、及び要求者が予め定義されたユーザリストの中にあるかを、該アクセス要求に基づいて決定する。該予め定義されたユーザリストは、異なる役割(例えば、開発者、通常のVMユーザ、IT管理者)を実行する異なるユーザを識別するユーザ属性を含むことができる。
【0021】
VMへのアクセス要求に基づいて、該VMファイル管理システムは、ユーザ若しくはユーザの役割(例えば、開発者、通常のVMユーザ、IT管理者)又はそれらの組み合わせを識別する。ユーザが所定のユーザリストの中で識別された場合、該ユーザによるVMファイルの変更を可能にする前に、ファイルレベルのスナップショットが作成される。アクセス要求に応答して作成される、ファイルレベルのスナップショットは、最初は空(empty)である。本明細書において定義されるように、「空」のスナップショットは、メモリ位置に対応するメタデータ、該スナップショットが作成される対象のユーザに対応するユーザ属性、及び該スナップショットが作成される時間に対応するタイムスタンプのみを含むデータ構造である。時間と共に変更されるVMファイルの異なる状態は、対応するスナップショットのタイムスタンプによって示されるように、異なる時間にスナップショットを取ることによって保存されることができる。従って、VMファイルのスナップショットは、対応するタイムスタンプによって示される識別された時刻にスナップショットに書き込まれたVMファイルの特別なバージョンをキャプチャし、そして記憶する。該VMファイルが時間と共に変更される場合、各変更されたバージョンは、異なるスナップショットが該VMファイルの異なるバージョンをキャプチャし、そして保存することができるように、特別なスナップショットに書き込まれることができる。各スナップショットは、該スナップショットの対応するユーザ属性によって示されるように、該スナップショットが作成された対象のユーザに対応し、それにより、ユーザの役割(例えば、開発者、通常のVMユーザ、IT管理者)を識別することができる。
【0022】
該ファイルレベルのスナップショットは、最初は空であるが、アクティブなスナップショットである。本明細書において定義されているように、「アクティブなスナップショット」は、コンピュータの読み取り及び書き込みの両方の操作をサポートするスナップショットである。該アクティブなスナップショットは、複数のスナップショットのスタックの最上位層として追加される。スタックの最上位層よりも下の下位層のファイルレベルの複数のスナップショットは、読み取り専用である。
【0023】
ARMによって識別されたユーザによる該VMへのアクセス要求によって開始されたセッションの間に、該ユーザがVMファイルを変更するときに、変更された該VMファイルは、アクティブなファイルレベルの1つのスナップショットにキャプチャされ、そして保存される。従って、該1つのスナップショットは、ユーザからの入力によって変更されたVMファイルを、該VMファイルの全体でキャプチャし、そして記憶する。すなわち、該1つのスナップショットは、ブロックレベルのスナップショットを用いて変更された部分のみでなく、ユーザ入力によって変更されたデータの部分を含むVMファイル全体をキャプチャし、そして記憶する。変更された場合に、該1つのスナップショットによってキャプチャされたVMファイルは、該VMファイルの最新バージョンである。ARMで識別されたユーザによるアクセス要求に応答して作成された各スナップショットは、特別なユーザによって変更されたVMファイルをキャプチャし、そして記憶する。例えば、同じVMファイルが、IT管理者及びVMユーザの両方によって変更される場合がある。しかしながら、該変更は、2つの異なるスナップショットによってキャプチャされる。1つのスナップショットは、該IT管理者によって行われたVMファイルに対する変更をキャプチャし、そして保存する。同じVMファイルの他のスナップショットは、該VMユーザによって行われたVMファイルに対する変更をキャプチャし、そして保存する。
【0024】
1つの観点において、該VMファイル管理システムは、該スタックから、選択された複数のスナップショットをマージすることによって、VMを変更することができる。本明細書において定義されているように、「マージする」とは、1以上の指定された基準に従って該スタックから選択された複数のスナップショットにおいて保存された或るVMファイルを該VMのファイルシステムに保存又は書き込むことを意味する。該基準は、該スナップショットが作成された対象のユーザの役割を含むことができる。例えば、1人以上のIT管理者によって変更されたVMファイルを含むスナップショットが選択されることができる。VMをオリジナルの状態にロールバックする必要がある場合に、1人以上のIT管理者のパッチインストールによって変更されたそれらのVMファイルのみがマージされ、一方、他の1人以上のVMユーザによって変更されたそれらのVMファイルは無視又は廃棄される。どのVMファイルをマージするかの決定は、該VMファイルを変更したユーザの役割を識別することに基づいて行われる。IT管理者として識別されたユーザによって変更されたVMファイルはロールバックの間にマージされ、そして、一般のVMユーザによって変更されたVMファイルはマージされない。
【0025】
該VMのロールバックの間、該VMファイル管理システムは、読み取り及び書き込みの両方の操作をサポートし、特別なユーザ又はユーザのクラス、特にIT管理者又はIT管理者の役割を割り当てられたユーザ、の為に作成されたスナップショットのみを選択することを可能にする。本明細書において定義されているように、「IT管理者」の役割は、指定されたIT管理者として、オペレーティングシステムファイル及びオペレーティングシステムファイルを変更する為のパッチをインストールすることを可能にするところの予め定義された権限を付与されたユーザに割り当てられる役割である。一方、他のユーザにはそのような権限は与えられていない為に、システムファイルのインストール又は変更をすることはできない。このことにより、例えば、IT管理者によってなされたインストールをパッチすることによって変更されているVMファイルのみを、他のタイプのVMユーザ(例えば、開発者、通常のVMユーザ)によって何ら変更されること無しに、効率的にマージすることができる。
【0026】
別の観点において、該VMファイル管理システムは、各スナップショットに2つの属性を提供する。第1の属性はユーザ属性であり、それは、該スナップショットが作成された対象を記録する。第2の属性は時間属性であり、それは、該スナップショットが作成された時刻を示すタイムスタンプである。新しいスナップショットが作成される度に、該スナップショットはアクティブなスナップショットとしてスナップショットスタックの最上位層に追加される。該最上位層におけるスナップショットのみがアクティブであり、読み取り及び書き込みの両方のデータ操作をサポートする。該スナップショットがアクティブな間にVMファイルが変更(ユーザによる変更の為に)された場合、該スナップショットは、ファイルレベルのスナップショットとして、VMファイル全体を最新バージョンとして記憶する。VMファイルの複数のバージョンがVMファイルシステムと選択されたスナップショットとの間に存在する場合に、最新バージョンのみがマージされる。他のバージョンは全て、対応するデータストレージスペースを再利用する為に削除されることができる。
【0027】
本発明の構成の更なる態様が、図面を参照してより詳細に以下に記載されている。図示の単純化及び明瞭化の目的の為に、図面に示されている要素は必ずしも縮尺通りに描かれていない。例えば、幾つかの要素の寸法は、明確にする為に他の要素に対して誇張されている場合がある。更に、適切と考えられる場合、参照番号は、対応する、類似する、又は同様の特徴を示す為に、図面の間で繰り返される。
【0028】
図1及び
図2は夫々、ファイルレベルの複数のスナップショットのバージョン管理を使用してVMファイル管理の或る観点を実装する、例示的なVMファイル管理システム(システム)100及び方法論200を示す。例示的に、システム100は、コンピュータシステム104上でホストされる仮想マシン(VM:virtual machine)102内に実装される。VM 102は、コンピュータシステム104上でホストされる複数のVMのうちの1つであることができる。コンピュータシステム104は、コンピューティングノード(例えば、クラウドベースサーバ)、例えば、コンピューティングノード400(
図4)、の一部であるコンピュータシステム、例えばコンピュータシステム412、であることができる。コンピュータシステム104は、サーバ、デスクトップコンピュータ、ラップトップ、又は任意の他のそのようなコンピュータシステムであることができる。
【0029】
VM 102は、ハイパーバイザ106によってサポートされる。ハイパーバイザ106は、VM 102によって処理されるVMファイルを記憶する為に、仮想ディスク108を作成する。該VMファイルは例えば、VM 102のオペレーティングシステムのシステムファイル、及びVMユーザによって作成された若しくは変更された又は作成され且つ変更された様々なアプリケーションファイルを含む。システム100は、ハイパーバイザ106内に統合されたアクセス要求モニタ(ARM:access request monitor)110を備えている。ブロック202において、ARM 110は、VM 102へアクセスする為のユーザの電子的要求を検出する。VM 102へアクセスする為のユーザ要求の例は、VM 102にログインしようとするユーザである。ARM 110はブロック204で、予め定義されたリスト112、すなわち、ユーザ識別子と役割(例えば、VMユーザ、IT管理者)の電子データベース、を検索し、アクセスを要求する該ユーザが予め定義されたリスト112内で識別されるかを判断する。
【0030】
予め定義されたリスト112は、複数のユーザのうちの1以上を、VMの1以上の他のユーザから識別する為のデータ構造である。該データ構造は、名前、予め定義されたコード(例えば、英数字)、又はVMファイルをインスタンス化し、削除し、若しくは変更し、又はそれらの組み合わせを行うところのユーザを識別する他の指標を含むことができる。予め定義されたリスト112のデータ構造は、各リストされたユーザについて1以上のユーザ属性を指定することができる。該ユーザ属性は、ユーザの役割、例えば、IT管理者又は他のクラスのユーザ、を示すことができる。
【0031】
従って、予め定義されたリスト112は、ユーザ若しくは該ユーザの夫々の役割又はそれらの組み合わせを識別することができる。例えば、識別されたユーザの役割は、通常のVMユーザの役割であることができる。該識別されたユーザの役割は、例えば、IT管理者のものとすることができる。IT管理者の機能は、VM 102の機能性及びセキュリティ等を維持することである。システム100は、異なる役割における異なるユーザによってどのような変更がなされたかに従って、VMファイルの変更を分離することができる。例えば、VM 102のIT管理者によってなされたパッチによって変更されたVMファイルは、1つのスナップショットによってキャプチャすることができ、一方、VMユーザによって同じVMファイルになされた変更は、別のスナップショットによってキャプチャされることができる。
【0032】
ブロック206では、ARM 110が予め定義されたリスト112内で該ユーザを識別することに応答して、スナップショットジェネレータ114は、VM 102へのアクセスを要求する該ユーザによる任意のVMファイルの変更を可能にする前に、1つのスナップショットを作成する。該1つのスナップショットは、該1つのスナップショットが作成された対象のユーザの役割を示すユーザ属性と、該1つのスナップショットが作成された時刻を示すタイムスタンプとを含む。該1つのスナップショットは、最初は空である。しかしながら、該1つのスナップショットは、アクティブなスナップショットである。従って、VM 102へアクセスする為のユーザ要求によって開始されたVMセッションの間に、1以上のVMファイルが該ユーザによって変更されることができる。該ユーザからの入力に応答して変更された任意の1以上のVMファイルは、該1つのスナップショットに書き込まれることができる。例えば、VMファイル(例えば、仮想ディスク108上に記憶されている)は、読み取りアクセス要求に応答して識別され、変更され、そして、書き込みアクセス要求に応答して該1つのスナップショットに書き込まれることができる。該1つのスナップショットは、ファイルレベルの1つのスナップショットであり、従って、変更された部分を含む各VMファイルを該VMファイルの全体でキャプチャし、そして保存することができる。
【0033】
ファイルレベルの該複数のスナップショットは、異なるファイルシステムで異なるメカニズムを使用して実装されることができる。全ての構成においてではないが、幾つかの構成において、システム100のファイルレベルの該複数のスナップショットは、ファイルレベルオーバーレイスナップショットを含むことができる。ファイルレベルオーバーレイスナップショットは、ユニオンマウントファイルシステム(例えば、Linux登録商標 OverlayFS)を用いて実装されることができる。コンピュータシステム104内に実装されるオペレーティングシステムは、ファイルシステムを介してファイル及びディレクトリをユーザに利用可能にする為にマウントを実行することができ、ここで、マウントポイントは、仮想ファイルシステムが登録される位置である。該ユニオンマウントファイルシステムは、複数のマウントポイントを組み合わせて、別々にソースされたファイル及びサブディレクトリを含む単一のディレクトリ構造を作成するオーバーレイを実装する。オーバーレイを使用すると、コンピュータシステム104のメモリの読み取り/書き込みパーティションが、読み取り専用パーティションをオーバーレイすることができる。オーバーレイにより、読み取り/書き込みディレクトリツリーが読み取り専用ディレクトリツリー上にオーバーレイされることを可能にする。他のオペレーティングシステム若しくはVM技術又はそれらの組み合わせを使用する他の構成において、ファイルレベルの該複数のスナップショットを実装する為に、システム100によって様々なメカニズム(例えば、Btrfs、EXT、XFS)が使用されることができる。
【0034】
ブロック208では、該ユーザによるVMファイルの変更に応答して、スナップショットジェネレータ114は、変更された該VMファイルを該VMファイルの全体で、予め定義されたリスト112内で該ユーザを識別するARM 110に応答して作成された該スナップショットに保存する。アクティブなスナップショットとして、該1つのスナップショットは、読み取り命令及び書き込み命令の両方をサポートし、そして、スタック116の該最上位層を占有する。スタック116は、スタックビルダー118によって構築される。スタックビルダー118は、VM 102へアクセスする為のユーザ要求に応答してスナップショットジェネレータ114によって新たに作成された各スナップショットをスタック116の最上位層として追加する。スタック116の最上位層での該スナップショットは、新しいスナップショットがスタック116の最上位に追加されるまでアクティブである。下位層でのスナップショットは、読み取り専用である。タイムスタンプは、該スナップショットが作成される時刻を示すことができる。スタックビルダー118は、スタック116に保存された該スナップショットのリストを維持することができ、及びスタック116上の各スナップショットに関連付けられたタイムスタンプに従って該スタックを配置することができる。スタック116の各層は、1以上のファイルレベルの該複数のスナップショットを含み、ここで、各スナップショットは、予め定義されたリスト112内で識別された特定のユーザによって変更されたVMファイルを、該VMファイルの全体でキャプチャする。最上位層におけるスナップショットは、VMのVMファイルに対するデータの読み書きの両方をサポートするアクティブスナップショットである。下位層のスナップショットは、読み取り専用のVMファイルを含む。
【0035】
例示的に、スタック116は4つの層を有するが、スタック116は、4つよりも少ない層又はそれよりも多い層を有することができ、典型的なシナリオにおいて実際に多くの層を有する。スタック116の最上位層であるスナップショット3は、IT管理者としてARM 110によって識別されたユーザによるVMファイル変更を含むスナップショットである。次の1つ下の層は、VMユーザとしてARM 110によって識別されたユーザからの入力によるVMファイル変更に応答して作成されるスナップショット2である。スタック116の次の2つ下の層は夫々、IT管理者によって変更されたVMファイルをキャプチャするスナップショット1、及びVMユーザによって変更された同一又は異なるファイルをキャプチャするスナップショット0である。繰り返しになるが、スタック116は単に例示に過ぎない。層の数、及び各層におけるスナップショットの数、並びに各スナップショットに対応するユーザは、広く変化することができる。
【0036】
ブロック210では、スタック116からのスナップショットの1組が、ロールバック要求に応答してVMファイルセレクタ120によって選択され、VM 102は、選択されたスナップショットの1組に属する複数のVMファイルをマージすることによって変更される。VMファイルセレクタ120は、各スナップショットのユーザ属性に基づいてスナップショットの1組を選択する。該ユーザ属性は、各スナップショットが作成された対象のユーザの役割、及び各スナップショットがいつ作成されたかを示すタイムスタンプを示す。例えば、選択された複数のスナップショットは、各々がIT管理者として識別されたユーザの為に作成されたことを示す対応するユーザ属性に基づいて選択されることができ、このユーザは、IT管理者の役割を割り当てられた同じユーザ又は複数の異なるユーザであることができる。従って、VMファイルセレクタ120は、該最上位層のスナップショット(スナップショット3のIT管理者)及び該最上位層の下の第2のスナップショット(スナップショット1のIT管理者)を選択する。該選択された複数のスナップショットは各々、IT管理者によって変更された1以上のVMファイルをそれらの全体でキャプチャする。該変更は例えば、パッチのインストールによってなされることができる。同じVMファイルが複数回変更され、そして、該選択された複数のスナップショットのうちの複数のスナップショット内にキャプチャされる場合に、該VMファイルの最新バージョンのみがVMファイルセレクタ120によって選択される。
【0037】
ブロック210では、該VMは、VMファイルセレクタ120によって選択された該スナップショットによってキャプチャされた複数の該VMファイルをマージすることによって変更される。該VMファイルは、VMファイルアグリゲータ122によってマージされ、それは、マージされたVMファイル124を作成する。VMファイルアグリゲータ122は、マージされたVMファイル124を仮想ディスク108に書き込む。該マージされたVMファイルは、VMファイルセレクタ120によってスナップショットが選択されたことに従ってユーザ属性に基づいて、例えばIT管理者の役割で操作する1人以上の指定ユーザによって変更されたそれらのVMファイルであることができる。VM 102の変更は、IT管理者として操作する1人以上のユーザによってなされたVMファイル変更の最新バージョン(各スナップショットが作成されたときを示すタイムスタンプに基づく)だけをマージすることによってVMをロールバックすることを含むことができる。該VMの他の全てのVMファイルは、オリジナルの未変更状態で保持されることができる。VM 102に関連付けられたデータストレージスペースの一部は、該選択された複数のスナップショットによってキャプチャされた複数のVMファイルをマージすることにより該VMの変更を完了することに応じて該複数のスナップショットの各々を削除することによって再利用されることができる。
【0038】
図3は、システム100を用いて実行されるVMロールバック及びマージャ302の動作的観点300を示す。最初に、VMファイルセット304が仮想ディスク108上に記憶される。VMファイルセット304は、まだ変更されていないVMファイルA、B、C、D及びEを含む。VMファイルA及びBの変更は、VM 102へアクセスする為のユーザ要求によって開始されたセッションの間にVMユーザによって行われる。スナップショットジェネレータ114は、該ユーザによる任意のVMファイルの変更を可能にする前に、最初は空のスナップショット306を作成し、そして、該ユーザによって変更されたVMファイルをスナップショット306に保存し、スナップショットジェネレータ114がスナップショット306に書き込むバージョンA1及びB1をそれらの全体でキャプチャする。IT管理者からの入力に応答してVMファイルB及びCが変更されると、スナップショットジェネレータ114は、IT管理者によるアクセス要求に応答して最初に作成されたスナップショット308に、変更されたようにファイルを書き込むよう促す。スナップショット308は、VMファイルのバージョンB2及びC2を含む。B2はVMファイルB(B1でない、それは該VMユーザの変更から結果として生じる)の変更であることに留意されたい。IT管理者はまた、新しく作成されたVMファイルFをインストールし、それはまた、スナップショット308に書き込まれる。同じ又は異なるVMユーザからの入力が、VMファイルのバージョンA1(オリジナルのVMファイルAのVMユーザによる以前の変更)及びVMファイルC(VMユーザによる以前の変更でない)を変更すると、VMファイルのバージョンA3及びC3並びに該VMユーザによってインストールされた新規に作成されたVMファイルGを含むスナップショット310への書き込みを結果として生じる。A3は、VMファイルのバージョンA1の変更であり、前述されているように、同じ又は異なるVMユーザによる変更から結果として生じたことに留意されたい。
【0039】
同じ又は異なるIT管理者からの変更入力は、スナップショットジェネレータ114に、変更されたVMファイルをスナップショット312に書き込むように促す。スナップショット312は、VMファイルのバージョンA4、B4、及びE4と、新たに作成されたVMファイルHとを含む。A4は、この時点でIT管理者の役割を担うユーザによって変更されていなかった(ただし、A4は、VMユーザによって2回変更されていた)オリジナルのVMファイルAの変更である。B4は、バージョンB2の変更であり、それは、IT管理者によって以前に変更された。B4は、最新バージョンであり、IT管理者として識別される同じ又は異なるユーザによる変更に応答してスナップショット308に書き込まれたB2に取って代わるものである。該VMのロールバックを実現する為に、VMファイルセレクタ120は、ARM 110による識別に基づいて、1人以上のIT管理者によってなされた変更をキャプチャするスナップショットであるスナップショット308及び312を選択する。1人以上のIT管理者に対応するスナップショットによってキャプチャされたVMファイルをマージすることによって、IT管理者の役割を担う1人以上のユーザによってなされたVMファイル変更によって導入されたパッチを失うこと無しに、該VMは、該VMのオリジナルの状態にロールバックされることができる。このことにより、システム100のファイルレベルの複数のスナップショットにおいてではなくブロックレベルのスナップショットを使用する場合に典型的に必要である、ロールバック後にパッチを再インストールする必要性がなくなる。VMファイルアグリゲータ122は、選択されたスナップショットからの最新バージョンのVMファイルを、仮想ディスク108上に記憶されたオリジナルの未変更のVMファイルとマージする。該ロールバックは、A4、B4、C2、D、E4、F、及びHを含むVMファイルセット314を作成する。該ロールバックは、VMファイルセット314が仮想ディスク108にコミットされることで完了する。該ロールバックが一旦実行されると、データストレージスペースを更に再利用する為に、全てのスナップショットが削除されることができる。
【0040】
図4は、コンピューティングノード400の1つの例の概略図を示す。1以上の構成において、コンピューティングノード400は、好適なクラウドコンピューティングノードの1つの例である。コンピューティングノード400は、本明細書において記載された本発明の構成の使用範囲又は機能性に関して、如何なる制限も示唆することが意図されていない。コンピューティングノード400は、本開示内で記載されている機能性のいずれかを実行することができる。
【0041】
コンピューティングノード400は、多数の他の汎用目的又は特殊目的のコンピューティングシステム環境又は構成で動作可能であるコンピュータシステム412を備えている。コンピュータシステム412での使用の為に適しうる周知のコンピューティングシステム、環境若しくは構成又はそれらの組み合わせの例は、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドデバイス若しくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、上記のシステム又は装置のいずれかを備えている分散型クラウドコンピューティング環境等、を包含するがこれらに限定されない。
【0042】
コンピュータシステム412は、コンピュータシステムで実行可能な命令、例えばプログラムモジュール、がコンピュータシステムによって実行されるという一般的な文脈で記載されうる。一般的に、プログラムモジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造等を含みうる。コンピュータシステム412は、通信ネットワークを通じてリンクされるリモート処理デバイスによってタスクが実行される分散型クラウドコンピューティング環境において実行されうる。分散型クラウドコンピューティング環境において、プログラムモジュールは、ローカル及びリモートのコンピュータシステムストレージ媒体、例えば、メモリストレージデバイスを包含する上記のローカル及びリモートのコンピュータシステムストレージ媒体、の両方において配置されうる。
【0043】
図4において示されているように、コンピュータシステム412は、汎用目的コンピューティングデバイスの形態で示されている。コンピュータシステム412のコンポーネントは、1以上のプロセッサ416、メモリ428、及び様々なシステムコンポーネント、例えばメモリ428を包含する上記の様々なシステムコンポーネント、をプロセッサ416に接続するバス418を備えていてもよいが、これらに限定されるものでない。本明細書において定義されているように、「プロセッサ」は、命令を実行するように構成された少なくとも1つのハードウェア回路を意味する。該ハードウェア回路は、集積回路であってもよい。プロセッサの例は、中央処理装置(CPU:central processing unit)、アレイプロセッサ、ベクトルプロセッサ、デジタル信号プロセッサ(DSP:digital signal processor)、フィールドプログラム可能なゲートアレイ(FPGA:field-programmable gate array)、プログラム可能なロジックアレイ(PLA:programmable logic array)、特定用途向け集積回路(ASIC:application specific integrated circuit)、プログラム可能な論理回路、及びコントローラを包含するが、これらに限定されない。
【0044】
プロセッサによるコンピュータプログラムの命令の実行は、プログラムを実行すること(executing)又は稼働すること(running)を含む。本明細書において定義されているように、「稼働」(run)及び「実行」(execute)は、1以上の機械可読命令に従って該プロセッサによって実行される一連の動作又は事象を含む。本明細書において定義されている「稼働すること」及び「実行すること」は、該プロセッサによる動作又は事象の能動的な実行を意味する。本明細書において、稼働、稼働する、実行、及び実行するという語は、同義に使用されている。
【0045】
バス418は、幾つかのタイプのバス構造、例えば、メモリバス又はメモリコントローラ、周辺機器バス、加速グラフィックスポート、及び様々なバスアーキテクチャのいずれかを使用するプロセッサ又はローカルバスを包含する上記の幾つかのタイプのバス構造、のうちのいずれかの1以上を表す。例示のみであって、限定するものでないが、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ電子規格協会(VESA:Video Electronics Standards Association)ローカルバス、周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バス、及びPCI エクプレス(PCIe:PCI Express)バスを包含する。
【0046】
コンピュータシステム412は典型的には、様々なコンピュータシステム可読媒体を備えている。そのような媒体は、コンピュータシステム412によってアクセス可能である任意の利用可能な媒体であってもよく、及び揮発性媒体と不揮発性媒体との両方、取り外し可能媒体と取り外し不可能媒体との両方を包含しうる。
【0047】
メモリ428は、揮発性メモリ、例えば、ランダムアクセスメモリ(RAM:random-access memory)430若しくはキャッシュメモリ432又はそれらの組み合わせ、の形態のコンピュータシステム可読媒体を備えていてもよい。コンピュータシステム412は、他の取り外し可能/取り外し不可能な、揮発性/不揮発性のコンピュータシステムストレージ媒体を更に備えていてもよい。例として、ストレージシステム434は、取り外し不可能な不揮発性の磁気媒体若しくは1以上のソリッドステートドライブ又はそれらの組み合わせ(図示せず、典型的には「ハードドライブ」と呼ばれる)からの読み取り及びそれに対する書き込みの為に提供されることができる。図示されていないが、取り外し可能な不揮発性の磁気ディスク(例えば、「フロッピーディスク」)から読み取り及びそれに書き込む為の磁気ディスクドライブ、及び取り外し可能な不揮発性の光ディスク、例えば、CD-ROM、DVD-ROM又は他の光学媒体、から読み取り及びそれに書き込む為の光ディスクドライブが提供されることができる。そのような実施例において、各々は、1以上のデータ媒体インタフェースによってバス418に接続されることができる。以下で更に図示及び記載されているように、メモリ428は、本発明の構成の機能を実行するように構成されたプログラムモジュールの1組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含みうる。
【0048】
プログラムモジュール442の1組(少なくとも1つ)を有するプログラム/ユーティリティ440は、オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータと同様に、限定でなく例示として、メモリ428内に記憶されうる。オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータの各々、又はそれらの幾つかの組み合わせは、ネットワーク環境の実装を含みうる。プログラムモジュール442は一般的に、本明細書に記載されているような本発明の構成の機能若しくは方法論又はそれらの組み合わせを実行する。例えば、プログラムモジュールの1以上は、VMファイル管理の為のシステム100又はその一部を含みうる。
【0049】
プログラム/ユーティリティ440は、プロセッサ416によって実行可能である。プログラム/ユーティリティ440及びコンピュータシステム412によって使用され、作成され、若しくは操作され、又はそれらの組み合わせが実行される任意のデータ項目は、コンピュータシステム412によって使用されるときに機能性を付与する機能的データ構造である。本開示内で定義されているように、「データ構造」は、物理的メモリ内のデータのデータモデルの組織化の物理的実装である。従って、データ構造は、メモリ内の特別な電気的構造要素又は磁気的構造要素で形成される。データ構造は、プロセッサを用いて実行されるアプリケーションプログラムによって使用されるように、メモリ内に記憶されたデータに物理的な編成を課す。
【0050】
コンピュータシステム412はまた、1以上の外部デバイス414、例えば、キーボード、ポインティングデバイス、ディスプレイ424等;ユーザがコンピュータシステム412と対話することを可能にする1以上のデバイス;若しくはコンピュータシステム412が1以上の他のコンピュータデバイスと通信することを可能にする任意のデバイス(例えば、ネットワークカード、モデム等)、又はそれらの組み合わせと通信しうる。そのような通信は、入力/出力(I/O)インタフェース422を介して生じることができる。依然として、コンピュータシステム412は、ネットワークアダプタ420を介して、1以上のネットワーク、例えば、ローカルエリアネットワーク(LAN:local area network)、一般的なワイドエリアネットワーク(WAN:wide area network)、若しくはパブリックネットワーク(例えば、インターネット)、又はそれらの組み合わせ、と通信することができる。図示されているように、ネットワークアダプタ420は、バス418を介してコンピュータシステム412の他のコンポーネントと通信する。図示されていないが、他のハードウェアコンポーネント若しくはソフトウェアコンポーネント又はそれらの組み合わせがコンピュータシステム412と組み合わせて使用されることができることが理解されるべきである。例としては、マイクロコード、デバイスドライバ、冗長処理装置、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブストレージシステム等が挙げられるが、これらに限定されるものでない。
【0051】
コンピューティングノード400は、クラウドコンピューティングノードの例を説明する為に使用されるが、
図4に関連して記載されるものと同じ又は類似のアーキテクチャを使用するコンピュータシステムが、本明細書に説明される様々な操作を実行する為に非クラウドコンピューティング実装において使用されることが理解されるべきである。この点で、本明細書において記載されている例示的な構成は、クラウドコンピューティング環境に限定されることを意図していない。
【0052】
コンピューティングノード400は、コンピュータハードウェアの1つの例である。コンピューティングノード400は、実装される特定のタイプのデバイス若しくはシステム又はそれらの組み合わせに依存して、
図4において示されるよりも少ないコンポーネント又は図示されない追加のコンポーネントを備えていてもよい。備えられている特定のオペレーティングシステム及び/又は1以上のアプリケーションは、備えられているI/Oデバイスのタイプと同様に、デバイス若しくはシステム又はそれらの組み合わせのタイプに従って異なりうる。更に、例示したコンポーネントの1以上は、他のコンポーネント内に組み込まれてもよく、又は他のコンポーネントの一部を形成してもよい。例えば、プロセッサは、少なくとも一部のメモリを備えていることができる。
【0053】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に列挙される教示の実装はクラウドコンピューティング環境に限定されないことが明確に留意されるべきである。寧ろ、本発明の実施態様は、現在知られている又は後に開発される任意の他のタイプのコンピューティング環境と組み合わされて実装されることができる。
【0054】
クラウドコンピューティングは、最小限の管理労力又はサービスのプロバイダとのインタラクションで迅速にプロビジョニングされ且つ解放されることができる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理(processing)、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの便利なオンデマンドネットワークアクセスを可能にする為のサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つのデプロイメントモデル(deployment model)を含みうる。
【0055】
特徴は下記の通りである。
【0056】
オンデマンドセルフサービス(On-demand self-service):クラウドコンシューマ(cloud consumer)は、サービスのプロバイダとのヒューマンインタラクション(human interaction)を必要とせずに、必要に応じて、コンピューティング機能、例えばサーバ時間及びネットワークストレージ、を一方的にプロビジョニングすることができる。
【0057】
ブロードネットワークアクセス:機能は、ネットワークを介して利用可能であり、及び異種のシン(thin)クライアント・プラットフォーム又はシック(thick)クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0058】
リソースのプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数のコンシューマにサービスを提供する為にプールされ、及び様々な物理リソースと仮想リソースが需要に従って動的に割り当てられ及び再割り当てされる。コンシューマは一般的に、提供されたリソースの正確な場所についての制御又は知識を有していないが、より高いレベルの抽象化での場所(例えば、国、州又はデータセンター)を特定できうるという点で、場所に依存しないといえる。
【0059】
迅速な順応性:機能は、迅速且つ弾力的にプロビジョニングされ、場合によっては自動的に、迅速にスケールアウトされ、迅速にリリースされて迅速にスケールインされうる。コンシューマにとって、プロビジョニングに利用可能な機能はしばしば、無制限であり及びいつでも任意の量で購入されることができる。
【0060】
測定されたサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御し及び最適化する。リソースの使用は監視され、制御され、及び報告され、利用されるサービスのプロバイダ及びコンシューマの両方についての透明性を提供することができる。
【0061】
サービスモデルは下記の通りである。
【0062】
サービスとしてのソフトウェア(SaaS:Software as a Service):クラウドインフラストラクチャにおいて実行しているプロバイダのアプリケーションを使用する為に、コンシューマに提供される機能である。該アプリケーションは、シン・クライアント・インタフェース、例えばウェブブラウザ(例えば、ウェブ・ベースの電子メール)、を通じて、様々なクライアント・装置からアクセス可能である。該コンシューマは、制限されたユーザ固有のアプリケーション構成設定のありうる例外として、基礎をなすクラウドインフラストラクチャ、例えば、ネットワーク、サーバ、オペレーティングシステム、ストレージ、又は個々のアプリケーション機能さえも包含する基礎をなすクラウドインフラストラクチャ、を管理又は制御しない。
【0063】
サービスとしてのプラットフォーム(PaaS:Platform as a Service):プロバイダによってサポートされるプログラミング言語及びツールを用いて作成された、コンシューマが作成した又は取得したアプリケーションを、クラウドインフラストラクチャ上にデプロイする為に、該コンシューマに提供される機能である。該コンシューマは、基礎をなすクラウドインフラストラクチャ、例えば、ネットワーク、サーバ、オペレーティングシステム、又はストレージを包含する基礎をなすクラウドインフラストラクチャ、を管理又は制御しないが、デプロイされたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
【0064】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service):コンシューマが、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアをデプロイ及び実行することができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティングリソースをプロビジョニングする為に、該コンシューマに提供される機能である。該コンシューマは、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、デプロイされたアプリケーションに対する制御、及び場合によっては、ネットワーク・コンポーネント(例えば、ホストのファイアウォール)を選択することの制限された制御を有する。
【0065】
デプロイメントモデル(Deployment Models)は下記の通りである。
【0066】
プライベートクラウド:クラウドインフラストラクチャは、ある組織の為のみに運営される。該クラウドインフラストラクチャは、該組織又は第三者によって管理され得、及びオンプレミス(on-premises)又はオフプレミス(off-premises)に存在しうる。
【0067】
コミュニティクラウド:クラウドインフラストラクチャは、幾つかの組織によって共有され、及び共通の関心事項(例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。該クラウドインフラストラクチャは、該組織又は第三者によって管理され得、及びオンプレミス又はオフプレミスに存在しうる。
【0068】
パブリッククラウド:クラウドインフラストラクチャは、一般公衆又は大規模な業界グループに対して利用可能であり、及びクラウドサービスを販売する組織によって所有される。
【0069】
ハイブリッドクラウド:クラウドインフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散の為のクラウド・バースティング)によって一緒にされる2以上のクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
【0070】
クラウドコンピューティング環境は、無国籍性(statelessness)、低結合性、モジュール性、及びセマンティック相互運用性(semantic interoperability)に焦点を有する指向されたサービスである。クラウドコンピューティングの中核(heart)は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0071】
図5は、本開示の実施態様に従ったクラウドコンピューティング環境500を示す。図示されている通り、クラウドコンピューティング環境500は、1以上のクラウドコンピューティングノード510を備えており、クラウドコンシューマによって使用されるローカルコンピューティングデバイス、例えば、パーソナルデジタルアシスタント(PDA:personal digital assistant)又は携帯電話540A、デスクトップコンピュータ540B、ラップトップコンピュータ540C若しくは自動車用コンピュータシステム540N又はそれらの組み合わせ、が通信しうる。コンピューティングノード510は互いに通信しうる。コンピューティングノード510は、物理的又は仮想的に、1以上のネットワーク、例えば、本明細書において前述されているプライベートクラウド、コミュニティクラウド、パブリッククラウド若しくはハイブリッドクラウド又はそれらの組み合わせ、にグループ化されうる(図示せず)。このことは、クラウドコンシューマがローカルコンピューティングデバイスにおいてリソースを維持する必要がないサービスとして、インフラストラクチャ、プラットフォーム若しくはソフトウェア又はそれらの組み合わせをクラウドコンピューティング環境500が提供することを可能にする。
図5に示されているコンピューティングデバイス540A~540Nのタイプは、例示のみであることが意図されていること、並びにクラウドコンピューティングノード510及びクラウドコンピューティング環境500は、任意のタイプのネットワーク若しくはネットワークアドレス可能接続又はそれらの組み合わせを介して(例えば、ウェブブラウザを使用して)任意のタイプのコンピュータ化された装置と通信することができることが理解される。
【0072】
ここで
図6を参照すると、クラウドコンピューティング環境500によって提供される抽象化モデル層の一組(
図5)が図示されている。
図6に示されているコンポーネント、層及び機能は、単に例示であることが意図されていること、並びに本開示の実施態様はそれらに限定されないことが理解されるべきである。図示されている通り、下記の複数の層及び対応する複数の機能が提供される。
【0073】
ハードウェア及びソフトウェア層660は、ハードウェアコンポーネント及びソフトウェアコンポーネントを包含する。ハードウェアコンポーネントの例は、メインフレーム661、RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ662;サーバ663;ブレード・サーバ664;ストレージデバイス665;並びに、ネットワーク及びネットワーキング・コンポーネント666を包含する。幾つかの実施態様において、ソフトウェアコンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア667及びデータベース・ソフトウェア668を包含する。
【0074】
仮想化層670は、抽象化層を提供し、この抽象化層から、仮想エンティティの下記の例が提供されうる:すなわち、仮想サーバ671;仮想ストレージ672;仮想ネットワーク673、例えば仮想プライベートネットワークを包含する上記の仮想ネットワーク673;仮想アプリケーション及びオペレーティングシステム674;並びに、仮想クライアント675。
【0075】
1つの例において、管理層680は、以下で説明される複数の機能を提供しうる。リソース・プロビジョニング681は、クラウドコンピューティング環境内でタスクを実行する為に利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計量及び価格決定682は、リソースがクラウドコンピューティング環境内で利用される場合のコスト追跡と、これらのリソースの消費についての課金又は請求とを提供する。1つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを包含しうる。セキュリティは、クラウドコンシューマ及びタスクに対する識別検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル683は、コンシューマ及びシステム管理者の為に、クラウドコンピューティング環境へのアクセスを提供する。サービス・レベル管理684は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(SLA:Service Level Agreement)の計画及び履行685は、将来の要件がSLAに従って予測されるクラウド・コンピューティング・リソースの為の事前配置及びその調達を提供する。
【0076】
ワークロード層690は、クラウドコンピューティング環境が利用されうる複数の機能の例を提供する。この層から提供されうる複数のワークロード及び複数の機能の例は、マッピング及びナビゲーション691;ソフトウェア開発及びライフサイクル管理692;仮想教室教育の提供693;データ解析処理694;トランザクション処理695;並びに、VMファイル管理システム696を包含する。
【0077】
本明細書において使用されている語は、特定の実施態様を説明する目的のみのものであり、限定することを意図するものでない。それにもかかわらず、本明細書全体を通じて適用される幾つかの定義がここで示されるであろう。
【0078】
本明細書において定義される場合に、単数形「1つ」(a)、「1つ」(an)及び「該」(the)は、文脈が明らかにそうでないことを示していない限り、複数形をまた含む。
【0079】
本明細書において定義される場合に、「別の」は、少なくとも2以上を意味する。
【0080】
本明細書において定義される場合に、「少なくとも1つ」、「1以上」、及び「及び/又は」は、明示的に別段の記載がない限り、動作において接続的及び接続解除的の両方であるオープンエンド表現である。例えば、「A、B及びCの少なくとも1つ」、「A、B又はCの少なくとも1つ」、「A、B及びCの1以上」、「A、B又はCの1以上」、「A、B及び/又はC」という表現の各々は、A単独、B単独、C単独、A及びBが一緒、A及びCが一緒、B及びCが一緒、又はA、B及びCが一緒であることを意味する。
【0081】
本明細書において定義される場合に、「自動的に」及び「動的に」は、ユーザの介入無しにということを意味する。
【0082】
本明細書において定義される場合に、「包含する」、「包含している」、「含む」、及び/又は「含んでいる」は、本明細書に記載された特徴、整数、工程、動作、要素若しくは成分、又はそれらの組み合わせの存在を特定するが、1以上の他の特徴、整数、工程、動作、要素若しくは成分、又はそれらの組み合わせの存在又は追加を排除するものでない。
【0083】
本明細書において定義される場合に、「場合」は、文脈に応じて、「に応答して」又は「に反応して」を意味する。従って、句「決定された場合」は、文脈に応じて、「決定することに応答して」又は「決定することに反応して」を意味すると解釈されうる。同様に、句「[記載された条件又は事象]が検出された場合」は、文脈に応じて、「[記載された条件又は事象]を検出することに応じて」又は「[記載された条件又は事象]を検出することに応答して」又は「[記載された条件又は事象]を検出することに反応して」と解釈されうる。
【0084】
本明細書において定義される場合に、「1つの構成」、「或る構成」、「1以上の構成において」、「特定の構成において」、又は同様の語は、構成に関連して記載されている特定の特徴、構造又は特性が、本開示内で記載されている少なくとも1つの構成に含まれることを意味する。従って、本開示全体を通じて前述された句、若しくは同様の語又はそれらの組み合わせの出現は、全てが同じ構成を云う場合があるが、必ずしもそうであるとは限らない。
【0085】
本明細書において定義される場合に、「に応答して」及び「に反応して」は、アクション又は事象に対して容易に応答又は反応することを意味する。従って、第2のアクションが第1のアクション「に応答して」及び「に反応して」実行される場合、第1のアクションの発生と第2のアクションの発生との間に因果関係がある。句「に応答して」及び「に反応して」は、因果関係を示す。
【0086】
本明細書において定義される場合に、「実質的に」は、記載された特性、パラメータ、又は値が正確に達成される必要はないが、例えば、公差、測定誤差、測定精度の限界、及び当業者に知られている他の要因を包含する逸脱又は変動が、特性が提供しようとする効果を妨げない量で生じうることを意味する。
【0087】
本明細書において定義される場合に、語「ユーザ」、「要求者」及び「IT管理者」は夫々、人間を言及する。
【0088】
本明細書において、語「第1」、「第2」等は、様々な要素を説明する為に使用されうる。これらの語は、別段の記載があるか、又は文脈が明確に示す場合を除き、1つの要素を別の要素から区別する為にのみ使用される故に、これらの要素は、これらの語によって制限されるべきでない。
【0089】
本発明は、統合のありうる任意の技術的詳細レベルでの、システム、方法若しくはコンピュータプログラム製品若しくはコンピュータプログラム、又はそれらの組み合わせでありうる。該コンピュータプログラム製品は、プロセッサに本発明の観点を実行させる為のコンピュータ可読プログラム命令を有する1以上のコンピュータ可読記憶媒体を包含しうる。
【0090】
該コンピュータ可読記憶媒体は、命令実行デバイスによって使用する為の命令を保持且つ記憶することができる有形のデバイスであることができる。該コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又はそれらの任意の適切な組み合わせでありうるが、これらに限定されない。該コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、下記を包含する:ポータブルのコンピュータディスケット登録商標、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read only memory)、消去可能なプログラム可能な読み取り専用メモリ(EPROM(erasable programmable read-only memory)又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブル・コンパクトディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリスティック、フロッピーディスク、機械的に符号化されたデバイス、例えばパンチカード若しくは命令が記憶されている溝内の隆起構造又はそれらの任意の適切な組み合わせ。本明細書において使用される場合、コンピュータ可読記憶媒体は、一時的な信号それ自体、例えば、電波又は他の自由に伝播する電磁波、導波管若しくは他の伝送媒体を伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又は電線を介して送信される電気信号、であると解釈されるべきでない。
【0091】
本明細書において記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から個々のコンピューティングデバイス/処理デバイスに、又はネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク若しくはワイヤレスネットワーク又はそれらの組み合わせ、を介して外部コンピュータ又は外部記憶デバイスにダウンロードされることができる。該ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ若しくはエッジサーバ又はそれらの組み合わせで構成されうる。各コンピューティングデバイス/処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そして、該コンピュータ可読プログラム命令を、個々のコンピューティングデバイス/処理デバイス内のコンピュータ可読記憶媒体中に記憶する為に転送する。
【0092】
本発明の動作を実行する為のコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の為の構成データ、又は、1以上のプログラミング言語、例えばオブジェクト指向プログラミング言語、例えば、Smalltalk、C++等、慣用的な手続き型プログラミング言語(例えば、「C」プログラミング言語又は同様のプログラミング言語)、の任意の組み合わせで書かれているソースコード又はオブジェクトコードのいずれか、でありうる。該コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に、ユーザのコンピュータ上で部分的に且つリモート・コンピュータ上で部分的に、又はリモート・コンピュータ若しくはサーバ上で全体的に、実行されうる。後者のシナリオにおいて、該リモート・コンピュータは、任意の種類のネットワーク、例えば、ローカルエリアネットワーク(LAN:local area network)若しくはワイドエリアネットワーク(WAN:wide area network)、を介してユーザのコンピュータに接続されうるか、又は該接続は(例えば、インターネットサービスプロバイダを使用したインターネットを通じて)外部コンピュータに対して行われうる。幾つかの実施態様において、電子回路、例えば、プログラム可能な論理回路、フィールドプログラム可能なゲートアレイ(FPGA:field-programmable gate arrays)又はプログラム可能なロジックアレイ(PLA:programmable logic arrays)、は、本発明の観点を実行する為に、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行しうる。
【0093】
本発明の観点は、本発明の実施態様に従う、方法、装置(システム)及びコンピュータプログラム製品若しくはコンピュータプログラムのフローチャート図若しくはブロック図又はそれらの組み合わせを参照して本明細書において記載されている。該フローチャート図若しくは該ブロック図又はそれらの組み合わせの各ブロック、並びに該フローチャート図若しくは該ブロック図又はそれらの組み合わせにおける複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【0094】
これらのコンピュータ可読プログラム命令は、該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が該フローチャート図若しくは該ブロック図又はそれらの組み合わせの1以上のブロックにおいて特定された機能/動作を実装する為の手段を作成するように、コンピュータのプロセッサ又は他のプログラム可能なデータ処理装置に提供されて、マシンを作り出しうる。記憶された命令を有するコンピュータ可読記憶媒体が該フローチャート図若しくは該ブロック図又はそれらの組み合わせの1以上のブロックにおいて特定される機能/動作の観点を実装する命令を含む製造品を含むように、これらのコンピュータ可読プログラム命令はまた、コンピュータプログラム可能なデータ処理装置若しくは他のデバイス又はそれらの組み合わせに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体中に記憶されうる。
【0095】
該コンピュータ可読プログラム命令はまた、コンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上で実行される命令が、該フローチャート図若しくは該ブロック図又はそれらの組み合わせの1以上のブロックにおいて特定される機能/動作を実装するように、上記のコンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上にロードされて、コンピュータ、他のプログラム可能な装置又は他のデバイス上で一連の動作工程を実行させて、コンピュータに実装されたプロセスを作成しうる。
【0096】
図面中のフローチャート図及びブロック図は、本発明の様々な実施態様に従う、システム、方法及びコンピュータプログラム製品又はコンピュータプログラムのありうる実装の、アーキテクチャ、機能及び動作を示す。これに関連して、該フローチャート図又は該ブロック図における各ブロックは、命令のモジュール、セグメント、又はその一部を表し得、それは、特定された1以上の論理機能を実装する為の1以上の実行可能命令を含む。幾つかの代替の実装において、該ブロックにおいて示されている機能は、図面中に示されている順序とは異なって生じうる。例えば、連続して示されている2つのブロックは、実際には、関与する機能に依存して、同時に、実質的に同時に、部分的又は全体的に時間的に重複する様式で実行される1つの工程として達成されうるか、又は該ブロックは、逆の順序で実行されうる。該ブロック図若しくは該フローチャート図又はそれらの組み合わせの各ブロック、並びに該ブロック図若しくは該フローチャート図又はそれらの組み合わせの複数のブロックの組み合わせは、特定された機能又は動作を実行する特別な目的のハードウェアベースのシステムによって実装することができ、又は特別な目的のハードウェアとコンピュータ命令との組み合わせを実行することができることに留意されたい。
【0097】
本発明の様々な構成の記載は、例示を目的として提示されたものであり、網羅的であること、又は開示された構成に限定されることを意図したものではない。記載された構成の範囲から逸脱すること無しに、当業者には多くの修正及び変形が明らかであろう。本明細書において使用される語は、実施態様の原理、実用的な用途、または市場で見られる技術に対する技術的改善を最もよく説明する為に、又は他の当業者が本明細書において開示されている構成を理解することができるように選択された。
【手続補正書】
【提出日】2023-11-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータに実装された方法であって、
仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること;
予め定義されたユーザリストを検索して、アクセスを要求する前記ユーザが前記予め定義されたユーザリストの中で識別されるかを判断すること;
前記予め定義されたユーザリストの中で前記ユーザを識別することに応答して、前記ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成すること、ここで、ファイルレベルの前記1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の前記ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含み、及び前記スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む;
前記VMファイルを変更する前記ユーザからのユーザ入力に応答して、前記ユーザによって変更された部分を含む前記VMファイルを該VMファイルの全体で、ファイルレベルの前記1つのスナップショットに保存すること;並びに、
前記スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの前記1組に属する前記複数のスナップショットによってキャプチャされた複数の前記VMファイルをマージすることによって前記VMを変更すること
を含む、
前記方法。
【請求項2】
マージする為に選択された、ファイルレベルの前記複数のスナップショットの各々は、ファイルレベルの選択された前記1つのスナップショットが作成された対象の前記ユーザの役割がIT管理者であることを示すユーザ属性を有し、並びに前記変更することは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージすることによって前記VMをロールバックすること、及び前記VMの他の全てのVMファイルをオリジナルの未変更状態で保持することを含む、請求項1に記載の方法。
【請求項3】
ファイルレベルの前記複数のスナップショットが、ユニオンマウントファイルシステムを実装された、ファイルレベルの複数のオーバーレイスナップショットであり、該ユニオンマウントファイルシステムは、複数のマウントポイントを組み合わせて、別々にソースされたファイルとサブディレクトリとを含む単一のディレクトリ構造を作成する、請求項1に記載の方法。
【請求項4】
前記スタックの前記最上位層として追加された、ファイルレベルの前記1つのスナップショットのみが、データの読み書きの両方をサポートするアクティブな1つのスナップショットであり、ここで、下位層の、ファイルレベルの複数のスナップショットは読み取り専用である、請求項1に記載の方法。
【請求項5】
前記VMを変更することに応じてファイルレベルの前記複数のスナップショットの各々を削除することによって、前記VMに関連付けられたデータストレージスペースを再利用することを更に含む、請求項1に記載の方法。
【請求項6】
前記最上位層として追加された、ファイルレベルの前記1つのスナップショットが作成された時刻を示すタイムスタンプを保存すること、及び保存された、ファイルレベルの各スナップショットに関連付けられたタイムスタンプに従って順序付けられた前記スタックに保存された、ファイルレベルの前記複数のスナップショットのリストを維持することを更に含む、請求項1に記載の方法。
【請求項7】
前記検出することが、前記VMをサポートするハイパーバイザ内に統合されたアクセス要求モニタ(ARM)によって実行される、請求項1に記載の方法。
【請求項8】
システムであって、該システムは、
命令を開始するように構成されたプロセッサ
を備えており、
前記命令は、
仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること;
予め定義されたユーザリストを検索して、アクセスを要求する前記ユーザが前記予め定義されたユーザリストの中で識別されるかを判断すること;
前記予め定義されたユーザリストの中で前記ユーザを識別することに応答して、前記ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成すること、ここで、ファイルレベルの前記1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の前記ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含み、及び前記スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む;
前記VMファイルを変更する前記ユーザからのユーザ入力に応答して、前記ユーザによって変更された部分を含む前記VMファイルを該VMファイルの全体で、ファイルレベルの前記1つのスナップショットに保存すること;並びに、
前記スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの前記1組に属する前記複数のスナップショットによってキャプチャされた複数の前記VMファイルをマージすることによって前記VMを変更すること
を含む、前記システム。
【請求項9】
マージする為に選択された、ファイルレベルの前記複数のスナップショットの各々は、ファイルレベルの選択された前記1つのスナップショットが作成された対象の前記ユーザの役割がIT管理者であることを示すユーザ属性を有し、並びに前記変更することは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージすることによって前記VMをロールバックすること、及び前記VMの他の全てのVMファイルをオリジナルの未変更状態で保持することを含む、請求項8に記載のシステム。
【請求項10】
ファイルレベルの前記複数のスナップショットが、ユニオンマウントファイルシステムを実装された、ファイルレベルの複数のオーバーレイスナップショットであり、該ユニオンマウントファイルシステムは、複数のマウントポイントを組み合わせて、別々にソースされたファイルとサブディレクトリとを含む単一のディレクトリ構造を作成する、請求項8に記載のシステム。
【請求項11】
前記スタックの前記最上位層として追加された、ファイルレベルの前記1つのスナップショットのみが、データの読み書きの両方をサポートするアクティブな1つのスナップショットであり、ここで、下位層の、ファイルレベルの複数のスナップショットは読み取り専用である、請求項8に記載のシステム。
【請求項12】
前記プロセッサが、前記VMを変更することに応じて、前記複数のスナップショットの各々を削除することによって、前記VMに関連付けられたデータストレージスペースを再利用することを更に含む命令を開始するように構成されている、請求項8に記載のシステム。
【請求項13】
前記プロセッサが、前記最上位層として追加された、ファイルレベルの前記1つのスナップショットが作成された時刻を示すタイムスタンプを保存すること、及び保存された、ファイルレベルの各スナップショットに関連付けられたタイムスタンプに従って順序付けられた前記スタックに保存された、ファイルレベルの前記複数のスナップショットのリストを維持することを更に含む命令を開始するように構成されている、請求項8に記載のシステム。
【請求項14】
コンピュータプログラムであって、
仮想マシン(VM)へのアクセスを要求するユーザの電子的要求を検出すること;
予め定義されたユーザリストを検索して、アクセスを要求する前記ユーザが前記予め定義されたユーザリストの中で識別されるかを判断すること;
前記予め定義されたユーザリストの中で前記ユーザを識別することに応答して、前記ユーザによるVMファイルの変更を可能にする前に、スタックの最上位層でファイルレベルの1つのスナップショットを作成すること、ここで、ファイルレベルの前記1つのスナップショットは、ファイルレベルの該1つのスナップショットが作成される対象の前記ユーザの役割を示すユーザ属性と、ファイルレベルの該1つのスナップショットが作成される時刻を示すタイムスタンプとを含み、及び前記スタックの各層は、1以上のVMファイルをそれらの全体で含むところの、ファイルレベルの1つのスナップショットを含む;
前記VMファイルを変更する前記ユーザからのユーザ入力に応答して、前記ユーザによって変更された部分を含む前記VMファイルを該VMファイルの全体で、ファイルレベルの前記1つのスナップショットに保存すること;並びに、
前記スタックからファイルレベルの複数のスナップショットの1組を、ファイルレベルの選択された各スナップショットのユーザ属性に基づいて選択し、そして、ファイルレベルの複数のスナップショットの前記1組に属する前記複数のスナップショットによってキャプチャされた複数の前記VMファイルをマージすることによって前記VMを変更すること
を含む方法の各工程をプロセッサに実行させる、前記コンピュータプログラム。
【請求項15】
マージする為に選択された、ファイルレベルの前記複数のスナップショットの各々は、ファイルレベルの選択された前記1つのスナップショットが作成された対象の前記ユーザの役割がIT管理者であることを示すユーザ属性を有し、並びに前記変更することは、1人以上のIT管理者によってなされたVMファイルの変更の最新バージョンのみをマージすることによって前記VMをロールバックすること、及び前記VMの他の全てのVMファイルをオリジナルの未変更状態で保持することを含む、請求項14に記載のコンピュータプログラム。
【請求項16】
ファイルレベルの前記複数のスナップショットが、ユニオンマウントファイルシステムを実装された、ファイルレベルの複数のオーバーレイスナップショットであり、該ユニオンマウントファイルシステムは、複数のマウントポイントを組み合わせて、別々にソースされたファイルとサブディレクトリとを含む単一のディレクトリ構造を作成する、請求項14に記載のコンピュータプログラム。
【請求項17】
前記スタックの前記最上位層として追加された、ファイルレベルの前記1つのスナップショットのみが、データの読み書きの両方をサポートするアクティブな1つのスナップショットであり、ここで、下位層の、ファイルレベルの複数のスナップショットは読み取り専用である、請求項14に記載のコンピュータプログラム。
【請求項18】
前記VMを変更することに応じて、前記複数のスナップショットの各々を削除することによって、前記VMに関連付けられたデータストレージスペースを再利用することを前記プロセッサに更に実行させる、請求項14に記載のコンピュータプログラム。
【請求項19】
前記プロセッサに、前記最上位層として追加された前記1つのスナップショットが作成された時刻を示すタイムスタンプを保存すること、及び保存された各スナップショットに関連付けられたタイムスタンプに従って順序付けられた前記スタックに保存された前記複数のスナップショットのリストを維持することを前記プロセッサに更に実行させる、請求項14に記載のコンピュータプログラム。
【請求項20】
前記検出することが、前記VMをサポートするハイパーバイザ内に統合されたアクセス要求モニタ(ARM)によって実行される、請求項14に記載のコンピュータプログラム。
【国際調査報告】