(57)【特許請求の範囲】
【請求項１】
頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするためのコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法は、
記憶システムにホスティングされるイメージセグメントについてのデータ及び使用カウンタを、前記記憶システムにホスティングされたイメージセグメントについてのデータ及び使用カウンタのリスト内に記憶することであって、前記データは前記イメージセグメントを一意的に識別する、ことと、
仮想マシンのプロビジョニングシステムに対するコールであって前記イメージセグメントについての情報を含むコールの度に、前記データ及び使用カウンタの前記リスト内で、前記イメージセグメントについての前記使用カウンタの現在値を増加させることと、
前記イメージセグメントが仮想マシンのための前記プロビジョニングシステムによって前記記憶システムからプロビジョニングされる度に、前記データ及び使用カウンタのリスト内の前記イメージセグメントについての前記使用カウンタの現在値を増加させることと、
前記イメージセグメントについての前記使用カウンタの現在値が頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定することと、
前記イメージセグメントを、前記記憶システムが可能にするよりも迅速なプロビジョニングを前記仮想マシンのためのプロビジョニングシステムによって可能にするキャッシュにホスティングすることと、
前記イメージセグメントをプロビジョニングすることの要求に応じて、前記仮想マシンのためのプロビジョニングシステムによって前記イメージセグメントを前記キャッシュからプロビジョニングすることと、
前記イメージセグメントについての前記使用カウンタの前記現在値がもはや、頻繁なイメージセグメントプロビジョニングの前記所定閾値を満たしていないとの判定に応答して、前記キャッシュから前記イメージセグメントを除去することであって、前記所定閾値は所定の上側閾値と所定の下側閾値とを含み、前記使用カウンタの前記現在値は、連続する２つのプロビジョニング期間で前記所定の下側閾値より低く、前記連続する２つのプロビジョニング期間における１つのプロビジョニング期間は１ヶ月の期間を含む、ことと、
を含む、コンピュータ実装方法。
【請求項２】
前記イメージセグメントを前記キャッシュにホスティングすることは、前記イメージセグメントのフィンガープリントを、前記キャッシュにホスティングされたイメージセグメントのフィンガープリントのリストに追加することを含み、
前記イメージセグメントを前記キャッシュからプロビジョニングすることは、前記キャッシュにホスティングされた前記イメージセグメントのフィンガープリントのリスト内に前記イメージセグメントのフィンガープリントが存在することに基づいて、前記イメージセグメントが前記キャッシュにホスティングされることを判定することを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記頻繁なイメージセグメントプロビジョニングについての所定閾値は、最も頻繁にプロビジョニングされたイメージセグメントの所定割合に基づいて計算される、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記イメージセグメントを前記キャッシュにホスティングすることは、前記イメージセグメントと一緒に頻繁にプロビジョニングされ、また、前記キャッシュにホスティングされる少なくとも１つの追加のイメージセグメントの少なくとも１つの位置に関する情報を記憶することを含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記イメージセグメントを前記キャッシュからプロビジョニングすることは、前記追加のイメージセグメントの位置に関する前記記憶された情報を使用することによって、前記追加のイメージセグメントを前記キャッシュから効率的にプロビジョニングすることを含む、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記イメージセグメントは、仮想マシンのバックアップの一部分を含む、請求項１に記載のコンピュータ実装方法。
【請求項７】
頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするためのシステムであって、前記システムは、
記憶システムにホスティングされるイメージセグメントについてのデータ及び使用カウンタを、前記記憶システムにホスティングされたイメージセグメントについてのデータ及び使用カウンタのリスト内に記憶するための手段であって、前記データは前記イメージセグメントを一意的に識別する、手段と、
仮想マシンのプロビジョニングシステムに対するコールであって前記イメージセグメントについての情報を含むコールの度に、前記データ及び使用カウンタの前記リスト内で、前記イメージセグメントについての前記使用カウンタの現在値を増加させる手段と、
前記イメージセグメントが仮想マシンのための前記プロビジョニングシステムによって前記記憶システムからプロビジョニングされる度に、前記データ及び使用カウンタのリスト内の前記イメージセグメントについての前記使用カウンタの現在値を増加させるための手段と、
前記イメージセグメントについての前記使用カウンタの現在値が、頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定するための手段と、
前記イメージセグメントを、前記記憶システムが可能にするよりも迅速なプロビジョニングを前記仮想マシンのためのプロビジョニングシステムによって可能にするキャッシュにホスティングするための手段と、
前記イメージセグメントをプロビジョニングすることの要求に応じて、前記仮想マシンのためのプロビジョニングシステムによって前記イメージセグメントを前記キャッシュからプロビジョニングするための手段と、
前記イメージセグメントについての前記使用カウンタの前記現在値がもはや、頻繁なイメージセグメントプロビジョニングの前記所定閾値を満たしていないとの判定に応答して、前記キャッシュから前記イメージセグメントを除去する手段であって、前記所定閾値は所定の上側閾値と所定の下側閾値とを含み、前記使用カウンタの前記現在値は、連続する２つのプロビジョニング期間で前記所定の下側閾値より低く、前記連続する２つのプロビジョニング期間における１つのプロビジョニング期間は１ヶ月の期間を含む、手段と、
前記記憶するための手段、前記増加させるための手段、前記判定するための手段、前記ホスティングするための手段、及び前記プロビジョニングするための手段を実行させるように構成された少なくとも１つの物理プロセッサと、
を備える、システム。
【請求項８】
前記ホスティングするための手段は、前記イメージセグメントのフィンガープリントを、前記キャッシュにホスティングされたイメージセグメントのフィンガープリントのリストに追加することによって、前記イメージセグメントを前記キャッシュにホスティングし、
前記プロビジョニングするための手段は、前記キャッシュにホスティングされた前記イメージセグメントのフィンガープリントのリスト内に前記イメージセグメントのフィンガープリントが存在することに基づいて、前記イメージセグメントが前記キャッシュにホスティングされることを判定することよって、前記イメージセグメントを前記キャッシュからプロビジョニングする、請求項７に記載のシステム。
【請求項９】
前記頻繁なイメージセグメントプロビジョニングについての所定閾値は、最も頻繁にプロビジョニングされたイメージセグメントの所定割合に基づいて計算される、請求項７に記載のシステム。
【請求項１０】
前記ホスティングするための手段は、前記イメージセグメントと一緒に頻繁にプロビジョニングされ、また、前記キャッシュにホスティングされる少なくとも１つの追加のイメージセグメントの少なくとも１つの位置に関する情報を記憶することによって、前記イメージセグメントを前記キャッシュにホスティングする、請求項７に記載のシステム。
【請求項１１】
前記プロビジョニングするための手段は、前記追加のイメージセグメントの位置に関する前記記憶された情報を使用することにより前記追加のイメージセグメントを前記キャッシュから効率的にプロビジョニングすることによって、前記イメージセグメントを前記キャッシュからプロビジョニングする、請求項１０に記載のシステム。
【請求項１２】
前記イメージセグメントは、仮想マシンのバックアップの一部分を含む、請求項７に記載のシステム。
【請求項１３】
１つ若しくは２つ以上のコンピュータ可読命令を含む非一過性コンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
記憶システムにホスティングされるイメージセグメントについてのデータ及び使用カウンタを、前記記憶システムにホスティングされたイメージセグメントについてのデータ及び使用カウンタのリスト内に記憶することであって、前記データは前記イメージセグメントを一意的に識別する、ことと、
仮想マシンのプロビジョニングシステムに対するコールであって前記イメージセグメントについての情報を含むコールの度に、前記データ及び使用カウンタの前記リスト内で、前記イメージセグメントについての前記使用カウンタの現在値を増加させることと、
前記イメージセグメントが仮想マシンのための前記プロビジョニングシステムによって前記記憶システムからプロビジョニングされる度に、前記データ及び使用カウンタのリスト内の前記イメージセグメントについての前記使用カウンタの現在値を増加させることと、
前記イメージセグメントについての前記使用カウンタの現在値が、頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定することと、
前記イメージセグメントを、前記記憶システムが可能にするよりも迅速なプロビジョニングを前記仮想マシンのためのプロビジョニングシステムによって可能にするキャッシュにホスティングすることと、
前記イメージセグメントについての前記使用カウンタの前記現在値がもはや、頻繁なイメージセグメントプロビジョニングの前記所定閾値を満たしていないとの判定に応答して、前記キャッシュから前記イメージセグメントを除去することであって、前記所定閾値は所定の上側閾値と所定の下側閾値とを含み、前記使用カウンタの前記現在値は、連続する２つのプロビジョニング期間で前記所定の下側閾値より低く、前記連続する２つのプロビジョニング期間における１つのプロビジョニング期間は１ヶ月の期間を含む、ことと、
前記イメージセグメントをプロビジョニングすることの要求に応じて、前記仮想マシンのためのプロビジョニングシステムによって前記イメージセグメントを前記キャッシュからプロビジョニングすることと、
を行わせる、非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
クラウドコンピューティングの普及の増大は、個人及び組織が自らのニーズに基づいて仮想コンピューティングデバイスをプロビジョニング及びデプロビジョニングすることを可能にしてきた。組織は、時間をかけて手動で物理マシンを設定するのではなく、記憶されたイメージから何十もの新たなデバイスを数分でスピンアップできる場合がある。イメージはまた、重要データ用のバックアップとして、又は、様々な従業員タイプのためのデフォルトシステム構成として使用される場合がある。新規雇用された開発者が、自身の新たなラップトップにプロビジョニングされた１つのイメージを有し、一方、会計係が、自身のデスクトップにプロビジョニングされた異なるイメージを有する場合がある。効率的にイメージを作成及び記憶することは重要な課題であるが、効率的にイメージをプロビジョニングすることも同様に重要である。エンドユーザも管理者も、低速のプロビジョニングシステムに起因するような遅延には特に我慢できない。
【０００２】
イメージからシステムをプロビジョニングするための従来のシステムは、重大な故障の後に、臨時にバックアップを回復させるように設計されている場合があり、頻繁にイメージをプロビジョニングするように選択的に設計されてはいない場合がある。いくつかの例では、従来のシステムは、セグメントではなくむしろ完全なイメージからイメージをプロビジョニングするように設計されている場合があり、そして、イメージセグメントからプロビジョニングするように最適に構成されていない場合がある。したがって、本開示は、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための追加的で改善されたシステム及び方法に関する必要性を識別して対象にする。
【発明の概要】
【０００３】
以下でより詳細に説明するように、本開示は、イメージセグメントが使用される回数の経過を追跡し、最も頻繁に使用されるイメージセグメントをキャッシュまで移動させることによって、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための様々なシステム及び方法について説明する。
【０００４】
一例では、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするためのコンピュータ実装方法は、（１）記憶システムにホスティングされるイメージセグメントについての表示及び使用カウンタを記憶システムにホスティングされたイメージセグメントについての表示及び使用カウンタのリスト内に記憶することと、（２）イメージセグメントが記憶システムからプロビジョニングされる度に、表示及び使用カウンタのリスト内のイメージセグメントについての使用カウンタの現在値を増加させることと、（３）イメージセグメントについての使用カウンタの現在値が頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定することと、（４）イメージセグメントを、記憶システムが可能にするよりも迅速なプロビジョニングを可能にするキャッシュにホスティングすることと、（５）イメージセグメントをプロビジョニングすることの要求に応じて、イメージセグメントをキャッシュからプロビジョニングすることと、を含んでもよい。
【０００５】
一実施形態では、イメージセグメントをキャッシュにホスティングすることは、イメージセグメントのフィンガープリントをキャッシュにホスティングされたイメージセグメントのフィンガープリントのリストに追加することを含んでもよい。この実施形態では、イメージセグメントをキャッシュからプロビジョニングすることは、キャッシュにホスティングされたイメージセグメントのフィンガープリントのリスト内にイメージセグメントのフィンガープリントが存在することに基づいて、イメージセグメントがキャッシュにホスティングされることを判定することを含んでもよい。
【０００６】
一実施形態では、頻繁なイメージセグメントプロビジョニングのための所定閾値は、最も頻繁にプロビジョニングされたイメージセグメントの所定割合に基づいて計算されてもよい。いくつかの例では、コンピュータ実装方法は、イメージセグメントについての使用カウンタの現在値が頻繁なイメージセグメントプロビジョニングについての所定閾値をもはや満たしていないことを判定することに応じて、イメージセグメントをキャッシュから除去することを更に含んでもよい。
【０００７】
いくつかの実施形態では、イメージセグメントをキャッシュにホスティングすることは、イメージセグメントと一緒に頻繁にプロビジョニングされ、また、キャッシュにホスティングされる少なくとも１つの追加のイメージセグメントの少なくとも１つの場所に関する情報を記憶することを含んでもよい。いくつかの例では、イメージセグメントをキャッシュからプロビジョニングすることは、追加のイメージセグメントの位置に関する記憶された情報を使用することにより追加のイメージセグメントをキャッシュから効率的にプロビジョニングすることを含んでもよい。一実施形態では、イメージセグメントは、仮想マシンのバックアップの一部分を含んでもよい。
【０００８】
一実施形態では、上記の方法を実装するためのシステムは、（１）メモリに記憶された記憶モジュールであって、記憶システムにホスティングされるイメージセグメントについての表示及び使用カウンタを記憶システムにホスティングされたイメージセグメントについての表示及び使用カウンタのリストに記憶する記憶モジュールと、（２）メモリに記憶された増加モジュールであって、イメージセグメントが記憶システムからプロビジョニングされる度に、表示及び使用カウンタのリスト内のイメージセグメントについての使用カウンタの現在値を増加させる増加モジュールと、（３）メモリに記憶された判定モジュールであって、イメージセグメントについての使用カウンタの現在値が頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定する判定モジュールと、（４）メモリに記憶されたホスティングモジュールであって、イメージセグメントを、記憶システムが可能にするよりも迅速なプロビジョニングを可能にするキャッシュにホスティングするホスティングモジュールと、（５）メモリに記憶されたプロビジョニングモジュールであって、イメージセグメントをプロビジョニングすることの要求に応じて、イメージセグメントをキャッシュからプロビジョニングするプロビジョニングモジュールと、（６）記憶モジュール、増加モジュール、判定モジュール、ホスティングモジュール、及びプロビジョニングモジュールを実行させるように構成された少なくとも１つの物理プロセッサと、を含んでもよい。
【０００９】
いくつかの例では、上記の方法は、非一過性コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、１つ若しくは２つ以上のコンピュータ実行可能命令を含んでもよく、これらの命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイスに、（１）記憶システムにホスティングされるイメージセグメントについての表示及び使用カウンタを記憶システムにホスティングされたイメージセグメントについての表示及び使用カウンタのリスト内に記憶することと、（２）イメージセグメントが記憶システムからプロビジョニングされる度に、表示及び使用カウンタのリスト内のイメージセグメントについての使用カウンタの現在値を増加させることと、（３）イメージセグメントについての使用カウンタの現在値が頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定することと、（４）イメージセグメントを、記憶システムが可能にするよりも迅速なプロビジョニングを可能にするキャッシュにホスティングすることと、（５）イメージセグメントをプロビジョニングすることの要求に応じて、イメージセグメントをキャッシュからプロビジョニングすることと、を行わせてもよい。
【００１０】
上記で述べた実施形態のうちのいずれかからの機能は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【図面の簡単な説明】
【００１１】
添付の図面は、いくつかの例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明とともに、これらの図面は、本開示の種々の原理を実証及び説明する。
【図１】頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的なシステムのブロック図である。
【図２】頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための追加の例示的なシステムのブロック図である。
【図３】頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的な方法の流れ図である。
【図４】頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的なコンピューティングシステムのブロック図である。
【図５】頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的なコンピューティングシステムのブロック図である。
【図６】本明細書で説明及び／又は図示される実施形態のうちの１つ若しくは２つ以上を実装することができる例示的コンピューティングシステムのブロック図である。
【図７】本明細書で説明及び／又は図示される実施形態のうちの１つ若しくは２つ以上を実装することができる例示的なコンピューティングネットワークのブロック図である。
【００１２】
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施形態は、種々の修正及び代替的な形態が可能であるが、具体的な実施形態が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施形態は、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
【例示的な実施形態の詳細な説明】
【００１３】
本開示は、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするためのシステム及び方法を概して対象とする。以下でより詳細に説明するように、どのイメージセグメントが頻繁にプロビジョニングされるかを追跡することと、頻繁にプロビジョニングされたイメージセグメントをキャッシュまで移動させることによって、本明細書に記載されたシステム及び方法は、プロビジョニングの速度を向上させ得る。それに加えて、どのイメージセグメントが一緒に頻繁にプロビジョニングされるかを追跡することと、それらのイメージセグメントの位置をキャッシュに記憶することとによって、本明細書で提供されるシステム及び方法は、プロビジョニングの速度及び効率を更に増大し得る。
【００１４】
以下において、図１、図２、図４、及び図５を参照して、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的なシステムについての詳細な説明がなされる。対応するコンピュータ実装方法についての詳細な説明もまた、図３に関連して提供される。それに加えて、本明細書で説明する実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングシステム及びネットワークアーキテクチャについての詳細な説明が、図６及び図７と関連してそれぞれ提供される。
【００１５】
図１は、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的なシステム１００のブロック図である。この図に示すように、例示的なシステム１００は、１つ若しくは２つ以上のタスクを実施するための１つ若しくは２つ以上のモジュール１０２を含んでもよい。例えば、そして、以下でより詳細に説明するように、例示的なシステム１００は、記憶モジュール１０４を含んでもよく、このモジュールは、記憶システムにホスティングされるイメージセグメントについての表示及び使用カウンタを、記憶システムにホスティングされたイメージセグメントについての表示及び使用カウンタのリスト内に記憶する。例示的なシステム１００は、増加モジュール１０６を追加的に含んでもよく、このモジュールは、イメージセグメントが記憶システムからプロビジョニングされる度に、表示及び使用カウンタのリスト内のイメージセグメントについての使用カウンタの現在値を増加させる。例示的なシステム１００はまた、判定モジュール１０８を含んでもよく、このモジュールは、イメージセグメントについての使用カウンタの現在値が、頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定する。例示的なシステム１００は、ホスティングモジュール１１０を含んでもよく、このモジュールは、イメージセグメントを、記憶システムが可能にするよりも迅速なプロビジョニングを可能にするキャッシュにホスティングする。例示的なシステム１００はまた、プロビジョニングモジュール１１２を含んでもよく、このモジュールは、イメージセグメントをプロビジョニングすることの要求に応じて、イメージセグメントをキャッシュからプロビジョニングする。別個の要素として例解されるが、図１のモジュール１０２のうちの１つ若しくは２つ以上は、単一のモジュール又はアプリケーションの一部分を表し得る。
【００１６】
特定の実施形態では、図１のモジュール１０２のうちの１つ若しくは２つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、１つ若しくは２つ以上のタスクを実施させてもよい１つ若しくは２つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、そして、以下でより詳細に説明するように、１つ若しくは２つ以上のモジュール１０２は、図２のコンピューティングデバイス２０２、図６のコンピューティングシステム６１０、及び／又は図７の例示的なネットワークアーキテクチャ７００の部分等の、１つ若しくは２つ以上のコンピューティングデバイス上で走るように記憶及び構成されるソフトウェアモジュールを表してもよい。図１のモジュール１０２のうちの１つ若しくは２つ以上はまた、１つ若しくは２つ以上のタスクを実施するように構成された１つ若しくは２つ以上の特殊目的のコンピュータの全て又は部分を表してもよい。
【００１７】
図１の例示的なシステム１００は、様々な態様で実装されてもよい。例えば、例示的なシステム１００の全て又は一部分は、図２の例示的なシステム２００の部分を表してもよい。図２に示すように、システム２００は、コンピューティングデバイス２０２を含んでもよい。一例では、コンピューティングデバイス２０２は、１つ若しくは２つ以上のモジュール１０２によってプログラミングされてもよい。
【００１８】
一実施形態では、図１のモジュール１０２のうちの１つ若しくは２つ以上は、コンピューティングデバイス２０２の少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイス２０２が、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングすることを可能にする。例えば、そして、以下でより詳細に説明するように、記憶モジュール１０４は、記憶システムにホスティングされるイメージセグメント２０８についての表示２１０及び使用カウンタ２１２を、記憶システムにホスティングされたイメージセグメントについてのリスト２１４内に記憶してもよい。増加モジュール１０６は、イメージセグメント２０８が記憶システムからプロビジョニングされる度に、リスト２１４内のイメージセグメント２０８についての使用カウンタ２１２の現在値を増加させてもよい。その後に、判定モジュール１０８は、イメージセグメント２０８についての使用カウンタ２１２の現在値が、頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定してもよい。次に、ホスティングモジュール１１０は、イメージセグメント２０８を、記憶システムが可能にするよりも迅速なプロビジョニングを可能にするキャッシュ２１６にホスティングしてもよい。その後、プロビジョニングモジュール１１２は、イメージセグメント２０８をプロビジョニングすることの要求に応じて、イメージセグメント２０８をキャッシュ２１６からプロビジョニングしてもよい。
【００１９】
コンピューティングデバイス２０２は、コンピュータ実行可能命令を読み出すことができる任意のタイプ又は形式のコンピューティングデバイスを概して表す。コンピューティングデバイス２０２の例として、限定することなく、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、個人情報機器（ＰＤＡ）、マルチメディアプレイヤー、組込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラス等）、ゲーム機、これらのもののうちの１つ若しくは２つ以上の組合せ、図６の例示的なコンピューティングシステム６１０、又は任意の別の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【００２０】
図３は、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的なコンピュータ実装方法３００の流れ図である。図３に示すステップは、任意の好適なコンピュータ実行可能なコード及び／又はコンピューティングシステムによって実施されてもよい。いくつかの実施形態では、図３に示すステップは、図１のシステム１００、図２のシステム２００、図６のコンピューティングシステム６１０、及び／又は図７の例示的なネットワークアーキテクチャ７００の部分の構成要素のうちの１つ若しくは２つ以上によって実施されてもよい。
【００２１】
図３に示すように、ステップ３０２において、本明細書に記載されるシステムのうちの１つ若しくは２つ以上が、記憶システムにホスティングされるイメージセグメントについての表示及び使用カウンタを、記憶システムにホスティングされたイメージセグメントについての表示及び使用カウンタのリスト内に記憶してもよい。例えば、記憶モジュール１０４は、図２のコンピューティングデバイス２０２の部分として、記憶システムにホスティングされるイメージセグメント２０８についての表示２１０及び使用カウンタ２１２を、記憶システムにホスティングされたイメージセグメントについてのリスト２１４内に記憶してもよい。
【００２２】
用語「イメージセグメント」とは、本明細書で使用されるとき、イメージの任意の部分を概して指す。用語「イメージ」とは、本明細書で使用されるとき、仮想化されたコンピューティングシステム及び／又はアプリケーションについての任意の表示を概して指し、この表示は、仮想化されたコンピューティングシステム及び／又はアプリケーションの新たなインスタンスを生成するために使用され得る。いくつかの実施形態では、イメージは、仮想マシンのバックアップを含んでもよい。いくつかの例では、仮想マシンは、ＷＩＮＤＯＷＳ（登録商標、以下同じ）及び／又はＭＡＣ  ＯＳ等の完全なオペレーティングシステムを走らせるコンピューティングデバイスの仮想化を表してもよいオペレーティングシステム仮想マシンであってもよい。一実施形態では、イメージセグメントは、仮想マシンのバックアップの一部分を含んでもよい。
【００２３】
いくつかの例では、イメージセグメントは、２つ以上の完全なバックアップイメージの部分として使用されてもよい。例えば、図４に示すように、仮想マシンイメージ４０２は、イメージセグメント４１２、４１４、４１６、及び／又は４１８から構成されてもよい。一実施形態では、仮想マシンイメージ４０２は、ＷＩＮＤＯＷＳ  ＸＰ  ＨＯＭＥ仮想マシンを表してもよい。いくつかの例では、仮想マシンイメージ４０６は、イメージセグメント４１２、４１４、４１６、及び／又は４２０から構成されてもよく、及び／又はＷＩＮＤＯＷＳ  ＸＰ  ＰＲＯＦＥＳＳＩＯＮＡＬ仮想マシンを表してもよい。ＷＩＮＤＯＷＳ  ＸＰ  ＨＯＭＥとＷＩＮＤＯＷＳ  ＸＰ  ＰＲＯＦＥＳＳＩＯＮＡＬとは、共通の多くのコードを有し得るので、仮想マシンイメージ４０２と４０６とは、いくつかのイメージセグメント、例えばイメージセグメント４１２、４１４、及び／又は４１６を共有してもよい。いくつかの例では、仮想マシンイメージ４０８は、イメージセグメント４１２、４１４、４２２、及び／又は４２４から構成されてもよく、及び／又はＷＩＮＤＯＷＳ  ＶＩＳＴＡ仮想マシンを表してもよい。ＷＩＮＤＯＷＳ  ＶＩＳＴＡは、ＷＩＮＤＯＷＳ  ＸＰの２つのエディションのオペレーティングシステムが互いに共有するよりも少ないコードをそれらと共有するので、仮想マシンイメージ４０８は、仮想マシンイメージ４０２及び／又は４０６と共通するイメージセグメントをより少なく有してもよい。いくつかの実施形態では、仮想マシンイメージ４１０は、ＯＳ  Ｘ仮想マシンを表してもよく、及び／又はイメージセグメント４３０、４３２、４３４、及び／又は４３６から構成されてもよい。ＯＳ  Ｘは、ＷＩＮＤＯＷＳとは異なるコードベース及びアプリケーションの組を有するので、仮想マシンイメージ４１０は、仮想マシンイメージ４０２、４０６、及び／又は４０８とコードセグメントを共有しないことがある。
【００２４】
用語「表示」とは、本明細書で使用されるとき、イメージセグメントを一意的に識別する任意のデータを概して指す。いくつかの実施形態では、表示は、イメージセグメントのハッシュ及び／又は部分的ハッシュであってもよい。別の実施形態において、表示は、名前、識別番号、及び／又はトークン等のイメージセグメントを表す文字列であってもよい。追加的に又は代替案として、表示は、イメージセグメントのフィンガープリントであってもよい。
【００２５】
用語「使用カウンタ」とは、本明細書で使用されるとき、イメージセグメントがプロビジョニングされた回数の経過を追跡する任意の手段を概して指す。いくつかの実施形態では、使用カウンタは、整数であってもよい。いくつかの実施形態では、使用カウンタは、何時それぞれの使用が生じたか、及び／又は何時より古い使用が満了したかを追跡してもよい。例えば、使用カウンタは、イメージセグメントが前週に１２回だけ、及び／又は前月に１００回だけプロビジョニングされたことを追跡してもよい。追加的に又は代替案として、使用カウンタは、イメージセグメントが別のイメージセグメントと一緒にプロビジョニングされた回数を追跡してもよい。例えば、使用カウンタは、あるイメージセグメントが１つの特定のイメージセグメントと一緒に４０回だけプロビジョニングされ、そして、別の特定のイメージセグメントとは４３回だけプロビジョニングされたことを追跡してもよい。
【００２６】
用語「記憶システム」とは、本明細書で使用されるとき、データを記憶するのに使用されるコンピューティングデバイス及び／又はアプリケーションの任意の集合を概して指す。いくつかの実施形態では、記憶システムは、リモートサーバの集合（すなわち、クラウドコンピューティング環境）にホスティングされてもよい。別の実施形態では、記憶システムは、データセンターにホスティングされてもよい。いくつかの例では、記憶システムは、イメージ及び／又はイメージセグメントを記憶してもよい。記憶システムの例として、ＶＥＬＯＣＩＴＹ  ＣＬＯＵＤ  ＢＡＣＫＵＰ、ＧＯＯＧＬＥ  ＣＬＯＵＤ  ＳＴＯＲＡＧＥ、ＡＭＡＺＯＮ  ＣＬＯＵＤ  ＳＴＯＲＡＧＥ、及び／又はＳＹＭＡＮＴＥＣ  ＮＥＴＢＡＣＫＵＰが挙げられ得る。
【００２７】
記憶モジュール１０４は、イメージセグメントについての表示及び使用カウンタを様々な態様で記憶してもよい。例えば、記憶モジュール１０４は、イメージセグメントのフィンガープリント、イメージセグメントについての使用カウンタ、及び／又はイメージセグメントの記憶場所をハッシュに記憶してもよい。いくつかの実施形態では、記憶モジュール１０４は、表示及び／又は使用カウンタをフラットファイルに記憶してもよい。別の実施形態では、記憶モジュール１０４は、表示及び／又は使用カウンタをデータベースに記憶してもよい。一実施形態では、記憶モジュール１０４は、表示及び使用カウンタのリストが最初に開始されるときに、複数のイメージセグメントを表す１組の表示と使用カウンタを受け取ってもよい。別の実施形態では、記憶モジュール１０４は、イメージセグメントがプロビジョニングされるときはいつでも、リストをチェックしてもよく、イメージセグメントについての表示及び使用カウンタがリスト内にまだ存在しない場合、イメージセグメントについての表示及び使用カウンタを追加してもよい。
【００２８】
ステップ３０４において、本明細書に記載されるシステムのうちの１つ若しくは２つ以上は、イメージセグメントが記憶システムからプロビジョニングされる度に、表示及び使用カウンタのリスト内のイメージセグメントについての使用カウンタの現在値を増加させてよい。例えば、増加モジュール１０６は、図２のコンピューティングデバイス２０２の部分として、イメージセグメント２０８が記憶システムからプロビジョニングされる度に、リスト２１４内のイメージセグメント２０８についての使用カウンタ２１２の現在値を増加させてもよい。
【００２９】
増加モジュール１０６は、様々な局面で使用カウンタを増加させてもよい。例えば、増加モジュール１０６は、プロビジョニングシステムの部分であってもよく、イメージセグメントがプロビジョニングシステムによってプロビジョニングされるときはいつでも、使用カウンタを増加させてもよい。別の実施形態では、増加モジュール１０６は、プロビジョニングシステムへの、及び／又はそれからのコールを監視してもよく、コールがイメージセグメントについての情報を含むときはいつでも、使用カウンタを増加させてもよい。追加的に又は代替案として、増加モジュール１０６は、記憶システムの部分であってもよく、イメージセグメントが記憶システムからプロビジョニングされるときはいつでも、使用カウンタを増加させてもよい。
【００３０】
ステップ３０６において、本明細書に記載されるシステムのうちの１つ若しくは２つ以上は、イメージセグメントについての使用カウンタの現在値が、頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定してもよい。例えば、判定モジュール１０８は、図２のコンピューティングデバイス２０２の部分として、イメージセグメント２０８についての使用カウンタ２１２の現在値が、頻繁なイメージセグメントプロビジョニングについての所定閾値を満たしたことを判定してもよい。
【００３１】
判定モジュール１０８は、使用カウンタが様々な態様の所定閾値を満たしたことを判定してもよい。例えば、判定モジュール１０８は、使用カウンタが、１００回使用又は１０００回使用等の全体使用に対する静的閾値を上回ったことを判定してもよい。別の例では、判定モジュール１０８は、使用カウンタが最近の使用に対して閾値を上回ったことを判定してもよい。例えば、判定モジュール１０８は、イメージセグメントが最後の月に２００回だけプロビジョニングされたことを判定してもよい。
【００３２】
一実施形態では、頻繁なイメージセグメントプロビジョニングのための所定閾値は、最も頻繁にプロビジョニングされたイメージセグメントの所定割合に基づいて計算されてもよい。例えば、判定モジュール１０８は、使用カウンタが使用カウンタの上位１０％のうちの１つであること、したがって、イメージセグメントが１０％の最も頻繁にプロビジョニングされたイメージセグメントのうちの１つであることを判定してもよい。
【００３３】
ステップ３０８において、本明細書に記載されるシステムのうちの１つ若しくは２つ以上は、イメージセグメントを、記憶システムが可能にするよりも迅速なプロビジョニングを可能にするキャッシュにホスティングしてもよい。例えば、ホスティングモジュール１１０は、図２のコンピューティングデバイス２０２の部分とし、記憶システムが可能にするよりも迅速なプロビジョニングを可能にするキャッシュ２１６にイメージセグメント２０８をホスティングしてもよい。
【００３４】
用語「キャッシュ」とは、本明細書で使用されるとき、効率的な取出しのためにデータを記憶するコンピューティングシステムの任意のメモリを概して指す。いくつかの実施形態では、ホスティングモジュール１１０は、キャッシュを使用して、頻繁にプロビジョニングされるイメージセグメントのコピーを記憶してもよい。別の実施形態では、ホスティングモジュール１１０は、キャッシュを使用して、頻繁にプロビジョニングされるイメージセグメントへのポインタを記憶してもよい。追加的に又は代替案として、キャッシュは、イメージセグメントに関する追加のデータ、例えば１つのイメージセグメントから別のイメージセグメントへのポインタを記憶してもよい。
【００３５】
いくつかの例では、ホスティングモジュール１１０は、イメージセグメントについての使用カウンタの現在値が、頻繁なイメージセグメントプロビジョニングについての所定閾値をもはや満たしていないことを判定することに応じて、イメージセグメントをキャッシュから除去してもよい。例えば、判定モジュール１０８は、昨年の大部分の間の各月に少なくとも２００回だけプロビジョニングされた後にキャッシュに置かれたイメージセグメントが、ここ２ヵ月間の各月に３０回未満だけプロビジョニングされたことを判定してもよい。この例では、ホスティングモジュール１１０は、そのイメージセグメントのコピーをキャッシュから除去してもよい。別の例では、判定モジュール１０８は、イメージセグメントについての使用カウンタが、使用カウンタの上位１０％のうちの１つではもはやなく、ホスティングモジュール１１０がイメージセグメントをキャッシュから除去してもよいことを判定してもよい。追加的に又は代替案として、ホスティングモジュール１１０は、キャッシュがそれ自体の記憶容量の限度に達しており、最も使用頻度が少ないイメージセグメントをキャッシュから除去してもよいことを判定してもよい。
【００３６】
ステップ３１０において、本明細書に記載されるシステムのうちの１つ若しくは２つ以上は、イメージセグメントをプロビジョニングすることの要求に応じて、イメージセグメントをキャッシュからプロビジョニングしてもよい。例えば、プロビジョニングモジュール１１２は、図２のコンピューティングデバイス２０２の部分として、イメージセグメント２０８をプロビジョニングすることの要求に応じて、イメージセグメント２０８をキャッシュ２１６からプロビジョニングしてもよい。
【００３７】
プロビジョニングモジュール１１２は、様々な局面でイメージセグメントをキャッシュからプロビジョニングしてもよい。例えば、プロビジョニングモジュール１１２は、プロビジョニングシステムの部分であってもよく、イメージセグメントに対する要求を受け取ってもよく、イメージセグメントがキャッシュにあることを判定してもよく、次に、イメージセグメントをキャッシュからプロビジョニングしてもよい。別の実施形態では、プロビジョニングモジュール１１２は、記憶システムの部分であってもよく、イメージセグメントをキャッシュからプロビジョニングすることの要求を受け取ってもよい。
【００３８】
いくつかの実施形態では、プロビジョニングモジュール１１２は、どのイメージセグメントがキャッシュにあるかについてのリストへのアクセスを有してもよい。これらの実施形態では、ホスティングモジュール１１０は、イメージセグメントのフィンガープリントをキャッシュにホスティングされたイメージセグメントのフィンガープリントのリスト内に追加してもよく、プロビジョニングモジュール１１２は、キャッシュにホスティングされたイメージセグメントのフィンガープリントのリスト内にイメージセグメントのフィンガープリントが存在することに基づいてイメージセグメントがキャッシュにホスティングされていることを判定することによって、イメージセグメントをキャッシュからプロビジョニングしてもよい。いくつかの例では、イメージセグメントが後にキャッシュから除去される場合、イメージセグメントのフィンガープリントもまた、キャッシュにあるイメージセグメントのフィンガープリントのリストから除去されてもよい。
【００３９】
いくつかの実施形態では、プロビジョニングモジュール１１２は、イメージセグメントに関する追加の情報へのアクセスを有してもよい。これらの実施形態において、ホスティングモジュール１１０は、イメージセグメントと一緒に頻繁にプロビジョニングされ、またキャッシュにホスティングされる少なくとも１つの追加のイメージセグメントの少なくとも１つの位置に関する情報を記憶してもよく、プロビジョニングモジュール１１２は、追加のイメージセグメントの位置に関する記憶された情報を使用することにより追加のイメージセグメントをキャッシュからまたプロビジョニングすることによって、イメージセグメントをキャッシュからプロビジョニングしてもよい。図５に示すように、記憶システム５００は、記憶デバイス５０６、５０８、５１０、及び／又は５２２を含んでもよい。いくつかの例では、記憶デバイス５０６は、イメージセグメント５１２及び／又は５２０をホスティングしてもよく、記憶デバイス５０８は、イメージセグメント５１４をホスティングしてもよく、及び／又は、記憶デバイス５１０は、イメージセグメント５１６及び／又は５１８をホスティングしてもよい。
【００４０】
いくつかの例では、イメージセグメント５１２、５１４、５１６、５１８、及び／又は５２０は、頻繁に一緒にプロビジョニングされてもよい。いくつかの実施形態では、このことは、イメージセグメント５１２、５１４、５１６、５１８、及び／又は５２０が全て同一又は類似の仮想マシンイメージのセグメントであることが理由であってもよい。いくつかの例では、仮想マシンイメージが記憶システムに追加され、記憶システムから除去されるときに、時間の経過とともに、同一又は類似の仮想マシンイメージの部分であるイメージセグメントが、記憶デバイス全体にわたって散乱して終わってもよい。一例では、イメージセグメント５１２、５１４、５１６、５１８、及び／又は５２０は、記憶デバイス５２２のキャッシュ５２４にホスティングされるのに十分な程頻繁にプロビジョニングされてもよい。一実施形態では、キャッシュ５２４は、イメージセグメント５１２とイメージセグメント５１４との間等の、それぞれのイメージセグメントと次のイメージセグメントとの間のポインタを記憶することにより、より効率的にイメージセグメントを一緒にプロビジョニングしてもよい。いくつかの実施形態では、キャッシュ５２４、及び／又はキャッシュ５２４と通信する別のシステムは、それぞれのセグメントとそれぞれの別のセグメントとの間のリンクを記憶してもよい。
【００４１】
上記の方法３００と関連して説明すると、本明細書に記載されるシステムは、記憶システムのイメージセグメントをそれぞれ表す１組のフィンガープリントと使用カウンタを生成してもよい。イメージセグメントがプロビジョニングされる度に、本明細書に記載されるシステムは、そのイメージセグメントについての使用カウンタを増加させてもよい。好適な訓練期間が経過した後に、本明細書に記載されるシステムは、使用カウンタに基づいて、最も頻繁にプロビジョニングされたイメージセグメントを判定してもよく、それらのイメージセグメントをキャッシュにホスティングしてもよい。本明細書に記載されるシステムはまた、どのイメージセグメント同士が一緒に頻繁にプロビジョニングされるかを追跡してもよく、それらのイメージセグメント同士の間の関係についての情報を記憶してもよい。頻繁に使用されるイメージセグメントをキャッシュにホスティングすることによって、本明細書に記載されるシステムは、最も一般的にプロビジョニングされる仮想マシンについてのプロビジョニング時間を減少させて、効率及びユーザ満足度を増加させてもよい。同一又は類似の仮想マシンの部分を表すイメージセグメント同士の間の関係を記憶することによって、本明細書に記載されるシステムは、断片的な記憶システムによって散乱したイメージセグメントを捜すことを回避してもよく、したがって、一般的に使用される仮想マシンをプロビジョニングするのに要する時間を更に低減できるかもしれない。
【００４２】
図６は、本明細書に記載及び／又は図示する実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングシステム６１０のブロック図である。例えば、コンピューティングシステム６１０の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書において説明されるステップのうちの１つ若しくは２つ以上（図３に例示するステップのうちの１つ若しくは２つ以上等）を実施してもよく、及び／又は実施するための手段であってもよい。コンピューティングシステム６１０の全て又は一部分はまた、本明細書に記載された及び／又は図示された任意の別のステップ、方法、又はプロセスを実施してもよく、及び／又は実施するための手段であってもよい。
【００４３】
コンピューティングシステム６１０は、コンピュータ可読命令を実行することができる任意の単一又はマルチプロセッサコンピューティングデバイス又はシステムを広く表す。コンピューティングシステム６１０の例としては、限定することなく、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型計算システム、携帯用デバイス、又は任意の別のコンピューティングシステム若しくはデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム６１０は、少なくとも１つのプロセッサ６１４と、システムメモリ６１６と、を含んでもよい。
【００４４】
プロセッサ６１４は、データを処理すること、又は命令を解釈して実行することができる任意のタイプ又は形式の物理処理ユニット（例えば、ハードウェア実装中央処理ユニット）を概して表す。特定の実施形態では、プロセッサ６１４は、ソフトウェアアプリケーション又はモジュールから命令を受け取ってもよい。これらの命令は、プロセッサ６１４に、本明細書に記載及び／又は図示する例示的な実施形態のうちの１つ若しくは２つ以上の機能を実施させてもよい。
【００４５】
システムメモリ６１６は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は非揮発性記憶デバイス若しくは媒体を概して表す。システムメモリ６１６の例としては、限定することなく、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、特定の実施形態においてコンピューティングシステム６１０は、揮発性メモリユニット（例えば、システムメモリ６１６等）、及び非揮発性記憶デバイス（例えば、以下で詳細に説明するような１次記憶デバイス６３２等）の両方を含んでもよい。一例では、図１からのモジュール１０２のうちの１つ若しくは２つ以上は、システムメモリ６１６にロードされてもよい。
【００４６】
特定の実施形態では、例示的なコンピューティングシステム６１０はまた、プロセッサ６１４及びシステムメモリ６１６に加えて、１つ若しくは２つ以上の構成要素又は要素を含んでもよい。例えば、図６に示すように、コンピューティングシステム６１０は、メモリコントローラ６１８と、入力／出力（Ｉ／Ｏ）コントローラ６２０と、通信インターフェース６２２と、を含んでもよく、これらのそれぞれは、通信インフラストラクチャ６１２を介して相互接続されてもよい。通信インフラストラクチャ６１２は、コンピューティングデバイスの１つ若しくは２つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ６１２の例としては、限定することなく、通信バス（業界標準アーキテクチャ（ＩＳＡ）、周辺構成要素相互接続（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は類似のバス等）、及びネットワークが挙げられる。
【００４７】
メモリコントローラ６１８は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム６１０の１つ若しくは２つ以上の構成要素の間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態においてメモリコントローラ６１８は、通信インフラストラクチャ６１２を介して、プロセッサ６１４、システムメモリ６１６、及びＩ／Ｏコントローラ６２０の間の通信を制御してもよい。
【００４８】
Ｉ／Ｏコントローラ６２０は、コンピューティングデバイスの入出力機能を調整及び／又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態においてＩ／Ｏコントローラ６２０は、プロセッサ６１４、システムメモリ６１６、通信インターフェース６２２、表示アダプタ６２６、入力インターフェース６３０、及び記憶インターフェース６３４等のコンピューティングシステム６１０の１つ若しくは２つ以上の要素の間のデータの転送を制御してもよく、又は容易にしてもよい。
【００４９】
通信インターフェース６２２は、例示的なコンピューティングシステム６１０と、１つ若しくは２つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態において通信インターフェース６２２は、コンピューティングシステム６１０と追加のコンピューティングシステムを含む私的又は公的ネットワークとの間の通信を容易にしてもよい。通信インターフェース６２２の例としては、限定することなく、有線ネットワークインターフェース（ネットワークインターフェースカード等）、無線ネットワークインターフェース（無線ネットワークインターフェースカード等）、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース６２２は、インターネット等のネットワークへの直接的なリンクを介して、リモートサーバへの直接的な接続を提供してもよい。通信インターフェース６２２はまた、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワーク等）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
【００５０】
特定の実施形態では、通信インターフェース６２２はまた、外部バス又は通信チャネルを介して、コンピューティングシステム６１０と、１つ若しくは２つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されたホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース（ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ホストアダプタ、米国電気電子技術者協会（ＩＥＥＥ）１３９４ホストアダプタ、アドバンストテクノロジーアタッチメント（ＡＴＡ）、パラレルＡＴＡ（ＰＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、及びエクスターナルＳＡＴＡ（ｅＳＡＴＡ）ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット（登録商標）アダプタなどが挙げられる。通信インターフェース６２２はまた、コンピューティングシステム６１０が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース６２２は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
【００５１】
図６に示すように、コンピューティングシステム６１０はまた、表示アダプタ６２６を介して、通信インフラストラクチャ６１２に連結される少なくとも１つの表示デバイス６２４を含んでもよい。表示デバイス６２４は、表示アダプタ６２６によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ６２６は、表示デバイス６２４上に表示するために、通信インフラストラクチャ６１２から（又は当該技術分野において既知のように、フレームバッファから）、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
【００５２】
図６に示すように、例示的なコンピューティングシステム６１０はまた、入力インターフェース６３０を介して、通信インフラストラクチャ６１２に連結される少なくとも１つの入力デバイス６２８を含んでもよい。入力デバイス６２８は、コンピュータ又はヒトのいずれかによって生成された入力を、例示的なコンピューティングシステム６１０に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス６２８の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
【００５３】
図６に示すように、例示的なコンピューティングシステム６１０はまた、記憶インターフェース６３４を介して、通信インフラストラクチャ６１２に連結される１次記憶デバイス６３２及びバックアップ記憶デバイス６３３を含んでもよい。記憶デバイス６３２及び６３３は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。例えば、記憶デバイス６３２及び６３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ等であり得る。記憶インターフェース６３４は、コンピューティングシステム６１０の記憶デバイス６３２及び６３３と、他の構成要素との間でデータを転送するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。
【００５４】
特定の実施形態では、記憶デバイス６３２及び６３３は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能な記憶ユニットから読み取るように、及び／又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス６３２及び６３３はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム６１０にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、記憶デバイス６３２及び６３３は、ソフトウェア、データ、他のコンピュータ可読情報を読み取る、及び書き込むように構成されてもよい。記憶デバイス６３２及び６３３は、コンピューティングシステム６１０の部分であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
【００５５】
多くの他のデバイス又はサブシステムは、コンピューティングシステム６１０に接続されてもよい。逆に、図６に示す構成要素及びデバイスの全てが、本明細書において説明及び／又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図６に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム６１０はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上は、コンピュータ可読媒体上に、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化され得る。「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波等の伝送タイプ媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光記憶媒体（例えば、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びＢＬＵ−ＲＡＹ（登録商標）ディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）等の非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【００５６】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム６１０にロードされてもよい。次いで、コンピュータ可読媒体上に記憶されたコンピュータプログラムの全て又は一部分は、システムメモリ６１６及び／又は記憶デバイス６３２及び６３３の種々の部分に記憶されてもよい。プロセッサ６１４によって実行されるとき、コンピューティングシステム６１０にロードされたコンピュータプログラムは、本明細書において説明及び／又は図示する例示的な実施形態のうちの１つ若しくは２つ以上の機能をプロセッサ６１４に実施させてもよく、及び／又はそれらを実施するための手段であってもよい。追加的に又は代替案として、本明細書において説明及び／又は図示される例示的な実施形態のうちの１つ若しくは２つ以上は、ファームウェア及び／又はハードウェアにおいて実装され得る。例えば、コンピューティングシステム６１０は、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成されてもよい。
【００５７】
図７は、クライアントシステム７１０、７２０、及び７３０、並びにサーバ７４０及び７４５がネットワーク７５０に連結されてもよい例示的なネットワークアーキテクチャ７００のブロック図である。上記で詳述されたように、ネットワークアーキテクチャ７００の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書において開示される工程のうちの１つ若しくは２つ以上（図３に例示する工程のうちの１つ若しくは２つ以上等）を実施してもよく、及び／又は実施するための手段であってもよい。ネットワークアーキテクチャ７００の全て又は一部分はまた、本開示において記載された他の工程及び機能を実施するために使用されてもよく、及び／又は実施するための手段であってもよい。
【００５８】
クライアントシステム７１０、７２０、及び７３０は、図６の例示的なコンピューティングシステム６１０等の任意のタイプ又は形式のコンピューティングデバイス又はシステムを概して表す。同様に、サーバ７４０及び７４５は、種々のデータベースサービスを提供するように、及び／又は特定のソフトウェアアプリケーションを走らせるように構成されたアプリケーションサーバ又はデータベースサーバ等のコンピューティングデバイス又はシステムを概して表す。ネットワーク７５０は、例えば、イントラネット、ＷＡＮ、ＬＡＮ、ＰＡＮ、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを概して表す。一例では、クライアントシステム７１０、７２０、及び／又は７３０、並びに／あるいはサーバ７４０及び／又は７４５は、図１からのシステム１００の全て又は一部分を含んでもよい。
【００５９】
図７に示すように、１つ若しくは２つ以上の記憶デバイス７６０（１）〜（Ｎ）は、サーバ７４０に直接取設されてもよい。同様に、１つ若しくは２つ以上の記憶デバイス７７０（１）〜（Ｎ）は、サーバ７４５に直接取設されてもよい。記憶デバイス７６０（１）〜（Ｎ）及び記憶デバイス７７０（１）〜（Ｎ）は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。特定の実施形態では、記憶デバイス７６０（１）〜（Ｎ）及び記憶デバイス７７０（１）〜（Ｎ）は、ネットワークファイルシステム（ＮＦＳ）、サーバメッセージブロック（ＳＭＢ）、又は共通インターネットファイルシステム（ＣＩＦＳ）等の種々のプロトコルを使用して、サーバ７４０及び７４５と通信するように構成されたネットワーク接続型記憶（ＮＡＳ）デバイスを表してもよい。
【００６０】
サーバ７４０及び７４５はまた、ストレージエリアネットワーク（ＳＡＮ）ファブリック７８０に接続されてもよい。ＳＡＮファブリック７８０は、複数の記憶デバイス間の通信を容易にすることが可能な任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ＳＡＮファブリック７８０は、サーバ７４０及び７４５と、複数の記憶デバイス７９０（１）〜（Ｎ）及び／又は知的記憶アレイ７９５との間の通信を容易にしてもよい。ＳＡＮファブリック７８０はまた、デバイス７９０（１）〜（Ｎ）及びアレイ７９５が、クライアントシステム７１０、７２０、及び７３０にローカルに取設されたデバイスとして見えるような態様で、ネットワーク７５０並びにサーバ７４０及び７４５を介して、クライアントシステム７１０、７２０、及び７３０と、記憶デバイス７９０（１）〜（Ｎ）及び／又は知的記憶アレイ７９５との間の通信を容易にしてもよい。記憶デバイス７６０（１）〜（Ｎ）及び記憶デバイス７７０（１）〜（Ｎ）と同様に、記憶デバイス７９０（１）〜（Ｎ）及び知的記憶アレイ７９５は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。
【００６１】
特定の実施形態では、図６の例示的なコンピューティングシステム６１０を参照すると、図６の通信インターフェース６２２等の通信インターフェースは、それぞれのクライアントシステム７１０、７２０、及び７３０と、ネットワーク７５０との間の接続性を提供するために使用されてもよい。クライアントシステム７１０、７２０、及び７３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ７４０又は７４５上の情報にアクセスすることが可能であってもよい。かかるソフトウェアは、クライアントシステム７１０、７２０、及び７３０が、サーバ７４０、サーバ７４５、記憶デバイス７６０（１）〜（Ｎ）、記憶デバイス７７０（１）〜（Ｎ）、記憶デバイス７９０（１）〜（Ｎ）、又は知的記憶アレイ７９５によってホストされるデータにアクセスすることを可能にしてもよい。図７は、データを交換するためのネットワーク（インターネット等）の使用を描写するが、本明細書において説明及び／又は例示する実施形態は、インターネット又はいずれの特定のネットワークベースの環境にも限定されない。
【００６２】
少なくとも１つの実施形態において、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上の全て又は一部分は、コンピュータプログラムとしてコード化されてもよく、サーバ７４０、サーバ７４５、記憶デバイス７６０（１）〜（Ｎ）、記憶デバイス７７０（１）〜（Ｎ）、記憶デバイス７９０（１）〜（Ｎ）、知的記憶アレイ７９５、又はこれらの任意の組み合わせにロードされ、これらによって実行されてもよい。本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上の全て又は一部分はまた、コンピュータプログラムとしてコード化され、サーバ７４０内に記憶され、サーバ７４５によって実行され、ネットワーク７５０を通じてクライアントシステム７１０、７２０、及び７３０に分散されてもよい。
【００６３】
上記で詳述したように、コンピューティングシステム６１０及び／又はネットワークアーキテクチャ７００の１つ若しくは２つ以上の構成要素は、単独又は他の要素との組合せのいずれかで、頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするための例示的な方法の１つ若しくは２つ以上のステップを実施してもよく、及び／又は実施するため手段であってもよい。
【００６４】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び／又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び／又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア（又はこれらの任意の組み合わせ）構成を使用して、個々に、及び／又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例示的であると見なされるべきである。
【００６５】
いくつかの例では、図１の例示的なシステム１００の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００６６】
種々の実施形態において、図１の例示的なシステム１００の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるソフトウェアモジュールは、本明細書において説明される機能のうちの１つ若しくは２つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成し得る。例えば、本明細書において説明されるソフトウェアモジュールのうちの１つ若しくは２つ以上は、２つ若しくは３つ以上のクライアント（例えば、顧客）が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）間でアプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有し得る。本明細書において説明されるモジュールのうちの１つ若しくは２つ以上はまた、ある顧客が別の顧客のデータ及び／又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び／又は構成情報を分割し得る。
【００６７】
種々の実施形態によれば、図１の例示的なシステム１００の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び／又はデータは、仮想マシン内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ（例えば、ハイパーバイザ）によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。追加的に又は代替案として、本明細書において説明されるモジュール及び／又はデータは、仮想化層内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想化層」という用語は、概して、オペレーティングシステム環境に重なる、及び／又はそれから抽象化される、任意のデータ層及び／又はアプリケーション層を指す。仮想化層は、仮想化層を、根本的な基本オペレーティングシステムの一部であるかのように提示する、ソフトウェア仮想化ソリューション（例えば、ファイルシステムフィルタ）によって、管理され得る。例えば、ソフトウェア仮想化ソリューションは、最初は基本ファイルシステム及び／又はレジストリ内の場所に向けられた呼び出しを、仮想化層内の場所にリダイレクトし得る。
【００６８】
一部の実施例において、図１の例示的なシステム１００の全て又は一部分は、モバイルコンピューティング環境の一部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス（例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス）などを含む、広範なモバイルコンピューティングデバイスによって実装され得る。一部の実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に１つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する（例えば、承認されたアプリケーションストアのみから得る）能力などを制限する、制限されたプラットフォームを含む、１つ若しくは２つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【００６９】
加えて、図１の例示的なシステム１００の全て又は一部分は、情報管理のための１つ若しくは２つ以上のシステムの一部分を表し得る、それらの相互作用し得る、それらによって生成されるデータを消費し得る、及び／又はそれらによって消費されるデータを生成し得る。本明細書において使用される際、「情報管理」という用語は、データの保護、組織化、及び／又は記憶を指し得る。情報管理のためのシステムの例としては、限定することなく、記憶システム、バックアップシステム、アーカイバルシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどが挙げられ得る。
【００７０】
いくつかの実施形態では、図１の例示的なシステム１００の全て又は一部分は、情報セキュリティのための１つ若しくは２つ以上のシステムの一部分を表し得る、それらによって保護されるデータを生成し得る、及び／又はそれらと通信し得る。本明細書において使用される際、「情報セキュリティ」という用語は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例としては、限定することなく、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、アイデンティティ認証システム、アクセス制御システム、暗号化システム、ポリシーコンプライアンスシステム、侵入検出及び防止システム、電子ディスカバリシステムなどが挙げられ得る。
【００７１】
いくつかの例によれば、図１の例示的なシステム１００の全て又は一部分は、エンドポイントセキュリティのための１つ若しくは２つ以上のシステムの一部分を表し得る、それらと通信し得る、及び／又はそれらから保護を受け得る。本明細書において使用される際、「エンドポイントセキュリティ」という用語は、不法及び／又は違法な使用、アクセス、及び／又は制御からのエンドポイントシステムの保護を指し得る。エンドポイント保護のためのシステムの例としては、限定することなく、マルウェア対策システム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどが挙げられ得る。
【００７２】
本明細書において説明及び／又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び／又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び／又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの１つ若しくは２つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
【００７３】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び／又は例解されているが、これらの例示的な実施形態のうちの１つ若しくは２つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するソフトウェアモジュールを使用して、実装され得る。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上を実施するように、コンピューティングシステムを構成し得る。
【００７４】
加えて、本明細書において説明されるモジュールのうちの１つ若しくは２つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、ある形態から別の形態に変換し得る。例えば、本明細書で列挙したモジュールのうちの１つ若しくは２つ以上は、変換されるべきイメージセグメント使用データを受け取ることと、イメージセグメント使用データをカウンタに変換することと、変換の結果をカウンタのリストに出力することと、変換の結果を使用してイメージセグメント利用を追跡することと、変換の結果をリストに記憶することと、を行ってもよい。追加的に又は代替案として、本明細書において列挙されるモジュールのうちの１つ若しくは２つ以上は、コンピューティングデバイス上で実行すること、コンピューティングデバイス上にデータを記憶すること、及び／又はそうでなければ、コンピューティングデバイスと相互作用することによって、物理コンピューティングデバイスのプロセッサ、揮発性メモリ、非揮発性メモリ、及び／又は任意の他の部分を１つの形式からもう１つの形式に変換してもよい。
【００７５】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、包括的であること、又は開示されるいかなる正確な形態にも限定されることを意図されない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【００７６】
別途記載されない限り、「〜に接続される（connected to）」及び「〜に連結される（coupled to）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、直接的及び間接的（即ち、他の要素又は構成要素を介した）接続の両方を許容するとして解釈されるものとする。加えて、「ａ」又は「ａｎ」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも１つ（at least one of）」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む（including）」及び「有する（having）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、「備える（comprising）」という語と同義的であり、かつ同じ意味を有する。
【図１】
0006677803.tif 000002
【図２】
0006677803.tif 000003
【図３】
0006677803.tif 000004
【図４】
0006677803.tif 000005
【図５】
0006677803.tif 000006
【図６】
0006677803.tif 000007
【図７】
0006677803.tif 000008