(57)【要約】      （修正有）【課題】オブジェクトを記憶するための適切な記憶階層を動的に選択するオペレーティングシステムを提供すること。【解決手段】オペレーティングシステムは、オブジェクトが記憶されるべき場所を指定しない、オブジェクトを記憶する要求を受け取るように構成される。この要求はまた、最適化因子および１つ以上のオブジェクト場所因子も含み得る。オブジェクト場所因子、および提供された場合は最適化因子を利用することで、オペレーティングシステムは、オブジェクトを記憶するための適切な記憶階層を動的に選択する。階層は、ローカル記憶階層、ローカルネットワーク記憶階層、リモートネットワーク記憶階層、および他のタイプの記憶階層を含み得る。次いで、オブジェクトが選択された記憶階層に記憶される。オブジェクトは、しばらくしてから記憶階層から取り出され得る。【選択図】図４
2017130211.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶階層からオブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
コンピューティングデバイス上で動作するオペレーティングシステムにおいて、オブジェクトを記憶する無条件の要求を受け取り、前記無条件の要求は、前記コンピューティングデバイス上で動作するアプリケーションから受け取られ、かつ、記憶される前記オブジェクトおよび最適化因子を含み、
前記要求を受け取ることに応じて、前記最適化因子および１つ以上のオブジェクト場所因子に少なくとも部分的に基づいて、前記オペレーティングシステムを経由して、前記オブジェクトを記憶するための複数の記憶階層から１つの記憶階層を選択し、前記複数の記憶階層は、前記コンピューティングデバイスのシステムメモリおよびシステムキャッシュのうちの１つ以上を備えるローカル記憶階層と、ローカルネットワーク記憶階層と、リモートネットワーク記憶階層と、を備え、前記１つ以上のオブジェクト場所因子は、前記オブジェクトの使用履歴パターンを監視することによって生成される前記オブジェクトの前記使用履歴パターンを含み、
前記オブジェクトを前記選択された記憶階層に記憶させるための、
コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
【請求項２】
前記最適化因子は、前記記憶階層を選択するときに前記オブジェクトを記憶するコストが最小化されることを示すデータを有する、請求項１に記載のコンピュータにより実装される方法。
【請求項３】
前記オブジェクトを記憶する前記要求はさらに、前記オブジェクト場所因子の１つ以上をさらに含む、請求項２に記載のコンピュータにより実装される方法。
【請求項４】
前記オブジェクトおよび前記オブジェクトを記憶するために使用される前記記憶階層を識別するデータを記憶することと、
前記オブジェクトを取り出す要求を受け取ることと、
前記オブジェクトを取り出す前記要求を受け取ることに応じて、前記オブジェクトを記憶するために使用される前記記憶階層を識別するために、前記記憶されたデータを利用し、前記識別された記憶階層から前記オブジェクトを取り出し、そして、前記オブジェクトを取り出す前記要求に応じて、前記取り出したオブジェクトを提供することと、をさらに含む、請求項２に記載のコンピュータにより実装される方法。
【請求項５】
前記オペレーティングシステムは、仮想マシンインスタンスで実行している、請求項２に記載のコンピュータにより実装される方法。
【請求項６】
前記仮想マシンインスタンスは、分散実行環境で実行している、請求項５に記載のコンピュータにより実装される方法。
【請求項７】
前記１つ以上のオブジェクト場所因子は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、前記オブジェクトの圧縮性、前記オブジェクトを記憶階層に記憶するコスト、前記オブジェクトを記憶するときまたは記憶階層から前記オブジェクトを取り出すときの待ち時間、または記憶階層に対する利用可能な帯域幅、のうちの１つ以上をさらに含む、請求項１に記載のコンピュータにより実装される方法。
【請求項８】
オブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
コンピューティングデバイス上で動作するオペレーティングシステムによって、オブジェクトを記憶する無条件の要求を受け取り、前記無条件の要求は、前記コンピューティングデバイス上で動作するアプリケーションから受け取られ、かつ、記憶される前記オブジェクトおよび最適化因子を含み、
前記要求を受け取ることに応じて、前記最適化因子および１つ以上のオブジェクト場所因子に少なくとも部分的に基づいて、前記オペレーティングシステムによって、前記オブジェクトを記憶するのに適切なローカル記憶場所またはネットワーク記憶場所を選択し、前記ローカル記憶場所は、前記コンピューティングデバイスのシステムメモリおよびシステムキャッシュのうちの１つ以上を備え、
前記オブジェクトを前記選択された記憶場所に記憶させるための、
コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
【請求項９】
前記無条件の要求は、前記オブジェクトを記憶するための場所を指定しない要求を含む、請求項８に記載のコンピュータにより実装される方法。
【請求項１０】
前記オブジェクトの使用履歴パターンを監視して、前記オブジェクトの前記使用履歴パターンを前記１つ以上のオブジェクト場所因子のうちの１つとして利用することをさらに含む、請求項８に記載のコンピュータにより実装される方法。
【請求項１１】
前記ネットワーク記憶場所は、ウェブサービスを経由して前記コンピュータにアクセス可能な記憶サービスを備える、請求項８に記載のコンピュータにより実装される方法。
【請求項１２】
前記オブジェクト場所因子の１つ以上は、前記ネットワーク記憶場所との通信を監視することによって生成される、請求項８に記載のコンピュータにより実装される方法。
【請求項１３】
前記オブジェクト場所因子の１つ以上は、前記記憶サービスから取り出される、請求項１１に記載のコンピュータにより実装される方法。
【請求項１４】
前記１つ以上のオブジェクト場所因子は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、前記オブジェクトの圧縮性、前記オブジェクトを記憶場所に記憶するコスト、前記オブジェクトを記憶するときまたは記憶場所から前記オブジェクトを取り出すときの待ち時間、および記憶場所に対する利用可能な帯域幅、のうちの１つ以上をさらに含む、請求項８に記載のコンピュータにより実装される方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ソフトウェア開発者は、プログラムによって利用されるデータをどこに記憶するべきかに関して多くの決定を行うことが必要であり得る。開発者がそのような決定を行った時点で、開発者は、プログラムによって使用されるデータをどこに記憶すべきかを明示的に指定する。例えば、開発者は、プログラムデータをランダムアクセスメモリ（「ＲＡＭ」）に記憶するために、特定のプログラミング機能を利用し得る。開発者は、同様に、データをネットワークサーバ等の異なる場所に記憶するために、異なるプログラミング機能を利用し得る。その結果、しばしば、開発者は、データを記憶するための潜在的な場所の全てを認識し、加えて、データを種々のタイプの利用可能な場所に記憶するためのしばしば複雑な機構を理解することが必要である。さらに、プログラマは、データを記憶するための最も適切な場所を常に選択するとは限らず、その結果、アプリケーション性能が悪影響を受け得る。
【０００２】
本明細書で提示される開示は、これらのおよび他の考慮すべき事柄に関して行われる。
【図面の簡単な説明】
【０００３】
【図１】記憶階層の動的選択のための、本明細書で開示される１つの実例となる機構の態様を示す、ネットワークおよびシステムの図表である。
【図２】記憶階層の動的選択のための、本明細書で開示される１つの実例となる機構の追加的な態様を示す、システムの図表である。
【図３】本明細書で開示される一実施形態による、利用可能な記憶階層を識別するための、および１つ以上のオブジェクト場所因子を計算するか、または別様には取得するための、本明細書で開示される機構の態様を説明する、１つの実例となるルーチンを示すフロー図である。
【図４】本明細書で開示される一実施形態による、オブジェクトを動的に選択した記憶階層に記憶するための記憶マネージャの動作の態様を説明する、実例となるルーチンを示すフロー図である。
【図５】本明細書で開示される一実施形態による、動的に選択した記憶階層に以前に記憶したオブジェクトを取り出すための、記憶マネージャの動作の態様を説明する、実例となるルーチンを示すフロー図である。
【図６】本明細書で開示される種々の実施形態が実現され得る分散実行環境を含む、実例となる動作環境を示す、システムおよびネットワーク図表である。
【図７】本明細書で開示される一実施形態による、データを記憶するための記憶階層の動的な選択のための、本明細書で開示される概念および技術の態様を実現するデータセンターの１つの構成を例示する、コンピューティングシステム図表である。
【図８】本明細書で提示される種々の実施形態の態様を実現するために利用され得るコンピューティングデバイスを実装するための、１つの実例となるコンピュータハードウェアアーキテクチャを示す、コンピュータアーキテクチャ図表である。
【発明を実施するための形態】
【０００４】
以下の詳細な説明は、記憶階層の動的選択のための技術に関する。本明細書で説明される技術を利用することで、オペレーティングシステムは、１つ以上のオブジェクト場所因子に基づいてオブジェクトを記憶するための、適切な記憶階層を動的に選択することができる。オブジェクト場所因子は、各階層にデータを記憶するコスト、各記憶階層と関連付けられる帯域幅または待ち時間、記憶されるデータのタイプ、および／または他の考慮すべき事柄等の因子を含み得る。オブジェクトを記憶するための適切な記憶階層を動的に選択するためにオブジェクト場所因子を利用することによって、オブジェクトが記憶される場所に関する決定を行うことから、および実際にデータを記憶するために利用される複雑な機構から開発者を開放することができる。記憶階層の動的選択のための、本明細書で開示される概念および技術のこれらのおよび他の態様に関する追加的な詳細は、下で提供される。
【０００５】
本明細書で提示される一態様によれば、オペレーティングシステムは、大小双方の、オブジェクトを記憶するための記憶階層を動的に選択するための機能を提供する、記憶マネージャとともに構成される。オペレーティングシステム内の他の構成要素も、記憶マネージャによって行われたときに、本明細書で説明される機能を提供し得る。オブジェクトは、オペレーティングシステム、アプリケーションプログラム、または他のタイプのプロセスの実行において利用されるデータオブジェクトであり得る。「オブジェクト」という用語は、本明細書で利用される場合、任意のタイプの実行可能なプロセスによって利用される任意のタイプのデジタルデータの記憶を包含することを意図する。
【０００６】
オブジェクトを記憶するために、アプリケーションプログラムは、記憶マネージャにオブジェクトを記憶させる無条件要求を行うように構成され得る。「無条件」という用語は、本明細書で利用される場合、要求が、オブジェクトが記憶されるべき場所を指定しないことを意味する。しかしながら、要求は、最適化因子および、潜在的に、１つ以上のオブジェクト場所因子を定義するデータを含み得る。下でさらに詳細に説明されるように、記憶マネージャは、オブジェクトを選択するための記憶階層を動的に選択する要求と共に提供される最適化因子およびオブジェクト場所因子の１つ以上を利用し得る。
【０００７】
記憶マネージャはまた、実施形態において、オブジェクトの記憶階層を選択するときにも利用され得る１つ以上のオブジェクト場所因子を発生させるようにも構成され得る。例えば、記憶マネージャは、記憶階層に対するネットワークまたは他のタイプの接続の帯域幅および／または待ち時間を監視するように構成され得る。帯域幅および待ち時間は、オブジェクト場所因子として利用され得る。別の例として、記憶マネージャはまた、オブジェクトの使用履歴パターンも監視し得る。オブジェクトの使用履歴パターンはまた、オブジェクト場所因子としても利用され得る。記憶マネージャ、または記憶マネージャと併せて動作する別の構成要素はまた、他の実施形態において、他のオブジェクト場所因子を発生させるために他のタイプの処理も行い得る。
【０００８】
いくつかの実施形態において、記憶マネージャはまた、１つ以上の外部ソースからオブジェクト場所因子も取り出す。例えば、記憶マネージャは、インターネット等の広域ネットワーク（「ＷＡＮ」）を介して、アクセス可能な記憶サービス等から、記憶階層の１つ以上にデータを記憶するコストを示すデータを取り出し得る。記憶マネージャはまた、他のソースから、オブジェクト場所因子として利用される他のデータも取り出し得る。オブジェクト場所因子はまた、記憶されるオブジェクトの特性にも基づき得る。例えば、オブジェクトのタイプ、サイズ、ファイル属性、セキュリティ要件、共有要件、およびオブジェクトの圧縮性は、オブジェクト場所因子として利用され得る。オブジェクトの他の特性も利用され得る。
【０００９】
上で簡潔に論じられるように、記憶マネージャは、オブジェクトの記憶階層を動的に選択するために、オブジェクト場所因子を利用する。例えば、オブジェクトの記憶がコストに基づいて最適化されることを指定する、オブジェクトを記憶する要求と共に最適化因子が提供される場合、記憶マネージャは、最も低いコストを有する記憶階層を選択し得る。オブジェクトの記憶がアクセス速度に基づいて最適化されることを指定する最適化因子が提供される場合、記憶マネージャは、最も高い利用可能な帯域幅および／または最も低い待ち時間を有する接続を経由してアクセス可能な記憶階層を選択し得る。記憶マネージャはまた、オブジェクトを記憶するための適切な場所を選択するために、オブジェクト場所因子の組み合わせも利用し得る。他の実施形態において、記憶マネージャに対して行われる、オブジェクトを記憶する要求は、最適化因子を含まない場合がある。これらの実施形態において、記憶マネージャは、利用可能なオブジェクト場所因子だけに基づいて、オブジェクトの適切な記憶階層を選択し得る。他の実施形態では、記憶階層を動的に選択するために、他の情報も利用され得る。
【００１０】
いくつかの実施形態において、利用可能な記憶階層は、ローカル記憶階層を含む。ローカル記憶階層は、記憶マネージャが実行されているコンピュータのシステムキャッシュ、メモリ、および大容量記憶デバイスを含む。記憶階層はまた、ローカルエリアネットワーク（「ＬＡＮ」）を経由してアクセス可能な１つ以上の記憶システムを含む、ローカルネットワーク記憶階層も含み得る。記憶階層はまた、インターネット等のＷＡＮを経由してアクセス可能な１つ以上の記憶サービスを含む、リモートネットワーク記憶階層も含み得る。いくつかの実施形態において、記憶マネージャはまた、利用可能な記憶階層を発見するための機能も含む。オブジェクトを記憶するための記憶階層を動的に選択するための、上で説明される種々の構成要素およびプロセスに関する追加的な詳細は、図１〜図８に関して下で提示される。
【００１１】
本明細書で提示される主題は、コンピュータプロセス、コンピュータ制御の装置、コンピューティングシステム、またはコンピュータ読み出し可能な記憶媒体等の製品として実装され得ることを認識されたい。本明細書で説明される主題は、１つ以上のコンピューティングデバイス上で実行するプログラムモジュールの一般的な文脈で提示されるが、当業者は、他の実装例が他のタイプのプログラムモジュールと組み合わせて行われ得ることを認識するであろう。全般的に、プログラムモジュールは、ルーチン、プログラム、構成要素、データ構造、および特定のタスクを行うかまたは特定の抽象データ型を実装する他のタイプの構造を含む。
【００１２】
当業者はまた、本明細書で説明される主題の態様が、マルチプロセッサシステム、マイクロプロセッサに基づくまたはプログラム可能な消費者電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、電子ブックリーダー、携帯電話デバイス、専用ハードウェアデバイス、ネットワーク機器、および同類のものを含む、本明細書で説明されるもの以外の他のコンピュータシステム構成で、またはそれらと併せて実践され得ることも認識するであろう。本明細書で説明される実施形態は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる、分散コンピューティング環境において実践され得る。分散コンピューティング環境において、プログラムモジュールは、ローカルおよびリモート双方のメモリ記憶デバイスの中に位置し得る。
【００１３】
以下の詳細な説明では、その一部を形成し、具体例として具体的な実施形態または実施例を示す、添付図面に対する参照が行われる。本明細書の図面は、一定の縮尺で描画されていない。複数の図面（本明細書で「図」または「複数の図」と称され得る）の全体を通して、同じ数字は、同じ要素を表す。
【００１４】
図１は、記憶階層の動的選択のための、本明細書で開示される１つの実例となる機構の態様を示すネットワークおよびシステム図表である。図１で示されるように、コンピューティングデバイス１０２は、本明細書で提示される一実施形態で開示され、記憶マネージャ１０６とともに構成されるオペレーティングシステム１０４を実行するように構成される。コンピューティングデバイス１０２は、デスクトップもしくはラップトップコンピュータ、サーバコンピュータ、スマートフォン、タブレットコンピュータ、または別のタイプの固定式もしくは可動式コンピューティングデバイスであり得る。オペレーティングシステム１０４は、コンピューティングデバイス１０２のハードウェア上で直接的に、または仮想マシン環境内で実行され得る。
【００１５】
下でさらに詳細に説明されるように、記憶マネージャ１０６は、オブジェクト１１０を記憶するために、コンピューティングデバイス１０２上で実行する、オペレーティングシステム１０４から、またはアプリケーション１０８から要求を受け取るように構成される。上で論じられるように、オブジェクト１１０は、コンピューティングデバイス１０２上で実行する、オペレーティングシステム１０４、アプリケーション１０８、または他のタイプのプロセスの実行時に利用される、データオブジェクトであり得る。本明細書で利用される「オブジェクト」という用語は、任意のタイプの実行可能なプロセスによって利用される、任意のタイプのデジタルデータの記憶を包含する。
【００１６】
同じく上で簡潔に論じられるように、オブジェクト１１０を記憶する要求は、一実施形態において、「無条件」である。無条件の要求とは、オブジェクトが記憶されるべき場所を指定しない要求である。以前のシステムにおいて、ソフトウェアの開発者は、一般的に、オブジェクト（例えば、プロセス特有のデータ、ファイル、等）をＲＡＭメモリに記憶するべきか、ネットワークデバイスに記憶するべきか、または別の場所に記憶すべきかを指定しなければならなかった。しかしながら、本明細書で提示される実施形態を利用することで、開発者が、そのサイズにかかわらず、実質的にあらゆるタイプのオブジェクト１１０の記憶を要求することができる、単一の原子機構を公開することができる。この機構を通して、オブジェクト１１０は、オブジェクト１１０のタイプおよび潜在的に複数の他のオブジェクト場所因子に基づいて、適切な記憶階層に記憶される。記憶マネージャ１０６は、この機能を提供するために、オペレーティングシステム１０４のメモリ管理、ブロック記憶、およびネットワーク層と相互作用し得る。オブジェクト１１０の記憶階層を選択するために利用され得る種々のオブジェクト場所因子に関する追加的な詳細は、図２に関して下で説明される。
【００１７】
図１で示される例示的な動作環境では、オブジェクト１１０を記憶するために、３つの記憶階層１００Ａ〜１００Ｃ（単独で記憶階層１００として、または集合的に記憶階層１００として言及され得る）が利用可能である。ローカル記憶階層１００Ａは、オペレーティングシステム１０４を実行するコンピューティングデバイス１０２の中に存在する、システムキャッシュ１１２、システムメモリ１１４、および１つ以上の大容量記憶デバイス１１６を含む。大容量記憶デバイスは、種々の実施形態において、回転ディスク媒体および／またはソリッドステートドライブ（「ＳＳＤ」）であり得る。ローカル記憶階層１００Ａはまた、他の実施形態において、他のタイプの記憶デバイスも含み得る。
【００１８】
同じく図１で示されるように、オブジェクト１１０を記憶するために、ローカルネットワーク記憶階層１００Ｂも利用され得る。ローカルネットワーク記憶階層１１０Ｂは、ＬＡＮ１１８を経由してコンピューティングデバイス１０２にアクセス可能な１つ以上の記憶システムを含む。例えば、図１で示される実例となる動作環境では、ネットワーク接続記憶デバイス１２０およびストレージエリアネットワークデバイス１２２が利用可能である。他のタイプの記憶システムも、ＬＡＮ１１８を介して利用できるようにされ得る。
【００１９】
図１で図示される実施形態では、リモートネットワーク記憶階層１００Ｃも利用可能である。リモートネットワーク記憶階層１００Ｃは、インターネット等のＷＡＮを介して利用可能である１つ以上の記憶サービスを含む。図１で示される実施例では、例えば、オブジェクト１１０を記憶するために、オブジェクト記憶サービス１２６、ブロック記憶サービス１２８、および長期記憶サービス１３０が利用可能である。他の実施形態では、リモートネットワーク記憶階層１００Ｃを経由して、他のタイプのサービスも利用できるようにされ得る。
【００２０】
図１で示される実施例では、３つの記憶階層１００Ａ〜１００Ｃが例示される。しかしながら、他の実施形態では、異なる数の記憶階層１００が利用され得ることを認識されたい。加えて、記憶階層１００Ａ〜１００Ｃのそれぞれは、一意の動作特性によって定義され得ることを認識されたい。例えば、ローカル記憶階層１００Ａは、高速であるが、制限された記憶容量を特徴にし得る。同様に、ローカルネットワーク記憶階層１００Ｂは、ローカル記憶階層１００Ａよりも僅かに遅いアクセス時間であるが、より大きい記憶容量を特徴にし得る。同様に、リモートネットワーク記憶階層１００Ｃは、ローカルネットワーク記憶階層１００Ｂよりも、アクセス時間がさらに速いが、記憶が僅かに多く、信頼性が高く、また潜在的にコストが低いことを特徴とし得る。下でさらに詳細に説明されるように、記憶階層１００Ａ〜１００Ｃの特性の一部または全部が、オブジェクト１１０を記憶するための適切な記憶階層１００を選択するために利用され得る。
【００２１】
図１で示される実施例において、アプリケーション１０８は、オブジェクト１１０を記憶する要求を記憶マネージャ１０６に伝送している。上で論じられるように、記憶マネージャ１０６に対する要求は、無条件であり得る。いくつかの実施形態において、要求はまた、最適化因子および１つ以上のオブジェクト場所因子も指定し得る。最適化因子は、オブジェクト１１０の適切な記憶階層１００の選択が最適化されるべき属性を識別するデータである。例えば、最適化因子は、適切な記憶階層の選択がコストを最小にするように最適化されるよう指定し得る。同様に、最適化因子は、適切な記憶階層１００の選択が、オブジェクト１１０に対する利用可能なアクセス速度を最大にするように最適化されるよう指定し得る。他のタイプの因子も指定され得る。オブジェクト１１０を記憶する要求と共に指定される最適化因子に関する追加的な詳細は、図２に関して下で提供される。
【００２２】
上で簡潔に述べられるように、オブジェクト１１０を記憶する要求はまた、１つ以上のオブジェクト場所因子も含み得る。オブジェクト場所因子は、オブジェクト１１０の適切な記憶階層１００を選択するときに、記憶マネージャ１０６によって利用される因子である。図２に関して下でさらに詳細に説明されるように、オブジェクト場所因子は、オブジェクト１１０の特性に基づいて、記憶マネージャ１０６によって計算され得るか、コンピューティングデバイス１０２の外部の場所から取り出され得るか、オブジェクト１１０を記憶する要求と共に提供され得るか、または他の方法で発生および／もしくは取得され得る。
【００２３】
オブジェクト１１０を記憶する要求を受け取ることに応じて、記憶マネージャ１０６は、オブジェクト１１０の適切な記憶階層１００を選択する。本明細書で説明されるように、記憶マネージャ１０６は、適切な記憶階層１００を選択するために、オブジェクト場所因子を利用する。加えて、最適化因子がオブジェクト１１０を記憶する要求と共に提供される場合、記憶マネージャ１０６はまた、供給される最適化因子も使用し得る。他のデータも利用され得る。
【００２４】
以下、記憶マネージャ１０６がオブジェクト１１０の適切な記憶階層１００を選択し得る様式を説明する、複数の実施例が説明される。一実施例において、例えば、記憶マネージャ１０６は、オブジェクト１１０が比較的小さく、また、オブジェクト１１０への迅速かつ高頻度なアクセスが望ましいと判定し得る。この実施例において、記憶マネージャ１０６は、オブジェクト１１０をシステムキャッシュ１１２に記憶し得る。別の実施例において、記憶マネージャ１０６は、オブジェクト１１０がシステムキャッシュ１１２の最大容量よりも大きいが、オブジェクト１１０への即時かつ高頻度のアクセスが望ましいと判定し得る。この実施例において、記憶マネージャ１０６は、オブジェクト１１０をシステムメモリ１１４に記憶し得る。記憶マネージャ１０６が、オブジェクト１１０がシステムメモリ１１４に記憶するには大き過ぎると判定した場合、記憶マネージャ１０６は、オブジェクト１１０の全部または一部を大容量記憶デバイス１１６に記憶し得る。
【００２５】
記憶マネージャ１０６が、オブジェクト１１０へのほぼ即時のアクセスが必要とされないと判定した場合、記憶マネージャ１０６は、オブジェクト１１０を記憶するために、ローカルネットワーク記憶階層１００Ｂを選択し得る。同様に、オブジェクト１１０が極めて低い頻度でアクセスされる場合、記憶マネージャ１０６は、その低いコストおよび高い信頼性のため、ネットワーク記憶階層１０６を選択し得る。オブジェクト１１０を記憶するための適切な記憶階層１００を選択する際に記憶マネージャ１０６によって利用される、これらのおよび他のプロセスおよび因子に関する追加的な詳細は、図２に関して下で提供される。
【００２６】
記憶マネージャ１０６がオブジェクト１１０の適切な記憶階層１００を識別すると、記憶マネージャ１０６は、オブジェクト１１０を選択された記憶階層１００に記憶させる。続いて、記憶マネージャ１０６は、オブジェクト１１０が以前に記憶された記憶階層１００から該オブジェクトを取り出すことによって、オブジェクト１１０を読み出す要求を処理し得る。オブジェクト１００が以前に記憶された記憶階層１００から該オブジェクトが取り出されると、オブジェクト１１０は、オブジェクト１１０を読み出すように要求するプロセスに提供され得る。記憶マネージャ１０６の動作のこれらのおよび他の態様は、図２に関して下でさらに詳細に説明される。
【００２７】
図１で示される実例となる動作環境は、単なる実例に過ぎないこと、また、数多くの他のタイプの動作環境が利用され得ることを理解されたい。例えば、図１で例示されるネットワーク１１８および１２４は、議論の目的で簡略化されている。これに関して、本明細書で開示される実施形態を実現するために、図１で例示されるよりもはるかに多くのネットワーク、ネットワーキングデバイス、コンピュータシステム、およびソフトウェア構成要素が利用され得ることを認識されたい。加えて、記憶マネージャ１０６は、記憶階層１００を動的に選択するための本明細書で開示される機能を提供するように説明されているが、この機能は、オペレーティングシステム１０４または別の構成要素によって提供され得ることを認識されたい。この機能はまた、ローカルに、または分散コンピューティングデバイス上で実行する構成要素の組み合わせによっても提供され得る。
【００２８】
また、一実装例において、コンピューティングデバイス１０２は、リモートネットワーク記憶階層１００Ｃの種々のサービスを提供するコンピュータシステムと並置され得ることも認識されたい。したがって、一実施形態において、ローカル記憶階層１００Ａ、ローカルネットワーク記憶階層１００Ｂ、および／またはリモートネットワーク記憶階層１００Ｃは、同じデータセンターに物理的に位置し得る。例えば、一実装例において、コンピューティングデバイス１０２は、リモートネットワーク記憶階層１００Ｃを提供する分散実行環境の一部として構成される、サーバコンピュータ７０２Ａ等のサーバコンピュータである。この実施例において、オペレーティングシステム１０４は、インスタンス７０６Ａ等のインスタンスとして仮想マシンで実行することができる。ユーザは、リモートデスクトッププロトコル（「ＲＤＰ」）または別の類似のプロトコルによって構成されるクライアントアプリケーションを利用して、オペレーティングシステム１０４およびアプリケーション１０８にアクセスし、制御し得る。次いで、このようにして顧客によって発生されるオブジェクトは、本明細書で開示される種々の技術を利用して、適切な記憶階層１００に動的に記憶され得る。この特定の実施形態に関する追加的な詳細は、図６および図７に関して下で提供される。
【００２９】
図２は、記憶階層１００の動的選択のための、本明細書で開示される１つの実例となる機構の複数の追加的な態様を示すシステム図表である。図２で示され、上で簡潔に説明されるように、アプリケーション１０８は、オペレーティングシステム１０４の一部として実行する記憶マネージャ１０６に要求２０１を提供し得る。他のタイプの実行プロセスもまた、記憶マネージャ１０６によって提供されたときに、本明細書で開示される機能を使用し得る。例えば、オペレーティングシステム１０４もまた、オブジェクト１１０を記憶するために、本明細書で説明される機能を利用し得る。他のタイプのプロセスもまた、オブジェクト１１０を記憶するために、本明細書で開示される機能を利用し得る。
【００３０】
いくつかの実施形態において、オペレーティングシステム１０４は、アプリケーション１０８がそれを通して要求２０１を提出することができるアプリケーションプログラミングインターフェース（「ＡＰＩ」）２０２を公開する。しかしながら、他の実施形態において、オペレーティングシステム１０４は、プロセスがそれを通してオブジェクト１１０を記憶するよう要求することができる他の機構を公開し得る。例えば、プログラミング機能は、本明細書で開示される機能にアクセスするための種々のプログラミング言語によって利用することができるプログラミングライブラリを通して公開され得る。また、アプリケーション１０８、オペレーティングシステム１０４、および他のタイプのプロセスが、オブジェクト１１０を記憶するための記憶階層１００を動的に選択するための、本明細書で開示される機能を利用することを可能にするために、他のタイプの機構も利用され得る。
【００３１】
図１に関して上で簡潔に論じられるように、要求２０１はまた、最適化因子２０８および１つ以上のオブジェクト場所因子２０４も含み得る。図２で示される実施例において、例えば、アプリケーション１０８は、オブジェクト１１０の記憶を要求するために、最適化因子２０８およびオブジェクト場所因子２０４Ｍを、オペレーティングシステム１０４によって公開されるＡＰＩ２０２に提供している。これに関して、要求２０１は、最適化因子２０８またはオブジェクト場所因子２０４を含む必要がないことを認識されたい。最適化因子２０８またはオブジェクト場所因子２０４を含まない要求２０１を受け取った場合、記憶マネージャ１０６は、記憶マネージャ１０６によって計算された、または他の場所から取得されたオブジェクト場所因子に基づいて、オブジェクト１１０の適切な記憶階層１００を選択するだろう。このプロセスに関する追加的な詳細は、下で説明される。
【００３２】
同じく上で簡潔に論じられるように、オブジェクト場所因子２０４のいくつかは、記憶されるオブジェクト１１０の特性に基づき得る。例えば、また、図２で例示されるように、記憶されるオブジェクト１１０のオブジェクトファイル属性２０４Ｇは、オブジェクト場所因子として利用され得る。オブジェクトファイル属性２０４Ｇは、例えば、オブジェクト１１０の所有権を定義する情報、オブジェクト１１０の読み出しおよび書き込みを許可されたプロセスに関する情報、ならびに他の情報を含み得る。同様に、オブジェクトサイズ２０４Ｅも、オブジェクト場所因子として利用され得る。
【００３３】
オブジェクトタイプ２０４Ｄも、オブジェクト場所因子として利用され得る。オブジェクトタイプ２０４Ｄは、オブジェクト１１０のデータタイプを説明し得る。これに関して、オブジェクト１１０の適切な記憶階層１００を決定するときに、オブジェクトの圧縮性２０４Ｋも、オブジェクト場所因子２０４として利用され得る。オブジェクト１１０の適切な記憶階層１００を決定するときに、オブジェクト１１０の他の特性も利用され得る。
【００３４】
上で論じられるように、記憶マネージャ１０６または別の構成要素はまた、オブジェクト場所因子２０４の１つ以上も計算し得る。例えば、一実装例において、記憶マネージャ１０６または別の構成要素は、利用可能な記憶階層１００のそれぞれに対して、記憶階層待ち時間２０４および／または記憶階層帯域幅２０４Ｈを計算し得る。待ち時間および帯域幅は、継続的に計算され得、よって、記憶マネージャ１０６は、オブジェクト１１０を記憶する要求２０１を受け取った時点で、各記憶階層１００の入手可能性に関する更新された情報を有する。
【００３５】
記憶マネージャ１０６はまた、外部サービスからオブジェクト場所因子２０４を取り出すようにも構成され得る。例えば、一実装例において、記憶マネージャ１０６は、リモートネットワーク記憶階層１００Ｃを経由して、利用可能な記憶サービスから記憶コスト２０４Ｃを取り出すように構成される。記憶マネージャ１０６はまた、他のタイプの外部サービスから、オブジェクト場所因子２０４として利用され得る他のタイプの情報も取り出し得る。別の例として、記憶サービスは、特定のオブジェクト１１０の使用パターンに関する履歴データを維持し得る。記憶マネージャ１０６は、オブジェクト１１０の適切な記憶階層１００を決定するときに、オブジェクト使用パターン２０４Ａを取り出し得る。
【００３６】
他の実施形態において、他のタイプのオブジェクト場所因子は、記憶マネージャ１０６によって計算されるか、外部サービスから取り出されるか、または他の方法で取得される、要求２０１と共に受け取られ得ることを認識されたい。図２で示される実施例において、オブジェクト場所因子２０４はまた、オブジェクト１１０と関連付けられるセキュリティ要件２０４Ｂ、オブジェクト１１０と関連付けられる共有要件２０４Ｊ、オブジェクト１１０に対する必要とされるアクセス速度２０４Ｌ、および各記憶階層の入手可能性も含む。これらのオブジェクト場所因子は、要求２０１とともに供給され得るか、または別の様式で記憶マネージャ１０６によって取得され得る。図２で示されるオブジェクト場所因子２０４は、単なる実例に過ぎないこと、また、記憶マネージャ１０６は、オブジェクト１１０を記憶するための適切な記憶階層１００を選択するときに、数多くの他のタイプの因子を利用し得ることを認識されたい。
【００３７】
また、図２で示される要求２０１の形式は、例示的であること、また、要求２０１は、図２で示されない他のデータを含み得ることも認識されたい。例えば、別の実装例において、要求２０１は、オブジェクト１１０を記憶するべき場所に関する「ヒント」または提案を含み得る。記憶マネージャ１０６は、このヒントを利用して、オブジェクト１１０を記憶するための適切な階層１００を選択し得るか、またはアプリケーション１０８によって提供されるヒントを無視し得る。他のタイプのデータも、記憶階層１００を選択する際に記憶マネージャ１０６によって使用するための要求２０１に含まれ得る。
【００３８】
記憶マネージャ１０６がオブジェクト１１０の適切な記憶階層１００を選択すると、記憶マネージャ１０６は、オブジェクト１１０を、選択された記憶階層１００に記憶させる。加えて、記憶マネージャ１０６は、オブジェクト１１０が特定の記憶階層１００に記憶されたという指示を提供するエントリをルックアップテーブル２０６に作成し得る。下でさらに詳細に説明されるように、ルックアップテーブル２０６のコンテンツは、オブジェクト１１０を読み出す要求を受け取ることに応じて、オブジェクト１１０が記憶された記憶階層１００を識別するために利用され得る。記憶マネージャ１０６の動作のこれらのおよび他の態様に関する追加的な詳細は、図３〜図５に関して下で提供される。
【００３９】
図３は、本明細書で開示される一実施形態による、利用可能な記憶階層１００を識別するための、および１つ以上のオブジェクト場所因子２０４を計算するか、または別様には取得するための、本明細書で開示される１つの機構の態様を説明する、１つの実例となるルーチン３００を示すフロー図である。図３および他の図面に関して本明細書で説明される論理演算は、（１）コンピューティングシステム上で動作する一連のコンピュータで実装される行為またはプログラムモジュールとして、および／または（２）コンピューティングシステム内の相互接続された機械論理回路または回路モジュールとして実装されることを認識されたい。
【００４０】
本明細書で説明される種々の構成要素の実装例は、コンピューティングシステムの性能および他の要件に依存して選択できる事柄である。故に、本明細書で説明される論理演算は、動作、構造デバイス、行為、またはモジュールと様々に称される。これらの動作、構造デバイス、行為、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、およびそれらの任意の組み合わせで実装され得る。また、図で示され、本明細書で説明されるよりも多いまたは少ない動作が行われ得ることも認識されたい。いくつかの動作はまた、並列に、または本明細書で説明される順序と異なる順序でも行われ得る。
【００４１】
ルーチン３００は、動作３０２から開始し、そこでは、記憶マネージャ１０６が、利用可能な記憶階層１００を識別し、各階層１００の特性を取得する。例えば、いくつかの実施形態において、記憶マネージャ１０６は、オブジェクト記憶サービス１２６、ブロック記憶サービス１２８、および長期記憶サービス１３０等の、リモートネットワーク記憶階層１００Ｃを介して利用可能なサービスを識別するための機能を含む。また、ローカルネットワーク記憶階層１００Ｂ上で利用可能な記憶システムおよびローカル記憶階層１００Ａ上で利用可能な記憶デバイスを発見し、識別するために、他の機構も利用され得る。
【００４２】
これに関して、種々の記憶階層１００に関する利用可能な記憶量、記憶限度、および利用可能な他の属性も、記憶マネージャ１０６または別の関連する構成要素によって発見され得る。また、各階層１００に関する記憶サービスについて、調整および最適化設定も発見され得る。加えて、いくつかの実装例において、コンピューティングデバイス１０２のユーザは、利用可能な記憶階層１００を指定すること、記憶階層１００のそれぞれの信用証明書を提供すること、および／または上で説明されるような階層１００のそれぞれの種々の特性を指定することを許可され得る。利用可能な記憶階層１００Ａ〜１００Ｃが識別されると、ルーチン３００は、動作３０２から動作３０４に進む。
【００４３】
動作３０４では、記憶マネージャ１０６または別の構成要素が、オブジェクト場所因子２０４の１つ以上を計算する。例えば、および上で簡潔に論じられるように、記憶マネージャ１０６は、動作３０２で識別される記憶階層１００のそれぞれについて、記憶階層待ち時間２０４Ｆおよび記憶階層帯域幅２０４Ｈを継続的に計算し得る。これらの計算は、記憶マネージャ１０６が各階層１００の待ち時間およびスループットに関する新しい情報を有するように、定期的かつ継続的に行われ得る。他の実施形態ではまた、他のタイプのオブジェクト場所因子２０４を発生させるために、他のタイプの計算も行われ得る。
【００４４】
動作３０４から、ルーチン３００は、動作３０６に進み、そこでは、記憶マネージャ１０６が、１つ以上の外部ソースから１つ以上のオブジェクト場所因子２０４を取り出す。上で論じられるように、例えば、記憶マネージャ１０６は、リモートネットワーク記憶階層１００Ｃを経由して利用可能なサービスから記憶コスト２０４Ｃを取り出し得る。他の実施形態では、他のタイプの外部ソースも、他のタイプのオブジェクト場所因子２０４について問い合わせられ得る。
【００４５】
動作３０６から、動作３００は、動作３０２に戻り、そこでは、上で説明されるプロセスが繰り返され得る。これらの動作を繰り返すことによって、記憶マネージャ１０６は、利用可能な記憶階層１００の更新されたリスト、各階層１００の更新された特性、更新されたオブジェクト場所因子２０４を維持する。図４に関して下でさらに詳細に説明されるように、この情報は、記憶マネージャ１０６がオブジェクト１１０を記憶する要求２０１を受け取った時点で、適切な記憶階層１００を動的に選択するために使用され得る。
【００４６】
図４は、本明細書で開示される一実施形態による、オブジェクト１１０を動的に選択した記憶階層１００に記憶するための記憶マネージャ１０６の動作の態様を説明する、実例となるルーチン４００を示すフロー図である。ルーチン４００は、動作４０２から始まり、そこでは、記憶マネージャ１０６が、オブジェクト１１０を記憶する要求２０１を受け取る。上で論じられるように、要求２０１は、無条件であり得、したがって、オブジェクト１１０を記憶するための場所を指定しない場合がある。加えて、要求２０１は、随意に、最適化因子２０８と、１つ以上のオブジェクト場所因子２０４とを含み得る。
【００４７】
動作４０２で要求２０１を受け取ることに応じて、ルーチン４００は、動作４０４に進み、そこでは、記憶マネージャ１０６が、オブジェクト１１０を記憶するための利用可能な記憶階層１００の１つを選択するために、提供された場合は、利用可能なオブジェクト場所因子２０４の１つ以上および、最適化因子２０８を利用する。例えば、オブジェクト１１０の記憶がコストに基づいて最適化されるよう指定する、オブジェクト２１０を記憶する要求２０１と共に最適化因子２０８が提供される場合、記憶マネージャ１０６は、最も低いコストを有する記憶階層１００を選択し得る。別の例において、オブジェクト１１０の記憶がアクセス速度に基づいて最適化されるよう指定する最適化因子２０８が提供される場合、記憶マネージャ１０６は、最も高い利用可能な帯域幅および／または最も低い待ち時間を有する接続を経由してアクセス可能な記憶階層１００を選択し得る。記憶マネージャ１０６はまた、オブジェクト１１０を記憶するための適切な階層１００を選択するために、オブジェクト場所因子２０４の組み合わせも利用し得る。最適化因子２０８が、オブジェクト１１０を記憶する要求２０１と共に提供されない場合、記憶マネージャ１０６は、利用可能なオブジェクト場所因子２０４に基づいて記憶階層１００を選択し得る。
【００４８】
記憶マネージャ１０６がオブジェクト１１０を記憶するための適切な階層１００を選択すると、ルーチン４００は、動作４０４から動作４０６に進む。動作４０６では、記憶マネージャ１０６が、オブジェクト１１０を選択した記憶階層１００に記憶する。次いで、ルーチン４００は、動作４０８に進み、そこでは、記憶マネージャ１０６が、オブジェクト１１０が記憶された階層１００を識別するために、ルックアップテーブル２０６を更新する。下でさらに詳細に説明されるように、ルックアップテーブル２０６に記憶されたデータは、適切な記憶階層１００からオブジェクト１１０を取り出すために、後で利用され得る。動作４０８から、ルーチン４００は、動作４１０に進み、そこで終了する。
【００４９】
図５は、本明細書で開示される一実施形態による、動的に選択した記憶階層１００に以前に記憶したオブジェクト１１０を取り出すための、記憶マネージャ１０６の動作の態様を説明する、実例となるルーチン５００を示すフロー図である。ルーチン５００は、動作５０２から開始し、そこでは、記憶マネージャ１０６が、記憶階層１００のうちの１つに以前に記憶したオブジェクト１１０を読み出す要求を受け取る。
【００５０】
動作５０２でオブジェクト１１０に関する要求を受け取ることに応じて、ルーチン５００は、動作５０４に進み、そこでは、記憶マネージャ１０６が、要求されたオブジェクト１１０が以前に記憶された階層１００を決定するために、ルックアップテーブル２０６を参照する。要求されたオブジェクト１１０を含む階層１００が識別されると、ルーチン５００は、動作５０４から動作５０６に進む。
【００５１】
動作５０６では、記憶マネージャ１０６が、識別された記憶階層１００から要求されたオブジェクト１１０を取り出す。次いで、ルーチン５００は、動作５０６から動作５０８に進み、そこでは、記憶マネージャ１０６が、その要求されたオブジェクト１１０を処理するために、取り出したオブジェクト１１０を提供する。次いで、ルーチン５００は、動作５０８から動作５１０に進み、そこで終了する。
【００５２】
上で簡潔に論じられるように、いくつかの実施形態において、コンピューティングデバイス１０２は、リモートネットワーク記憶階層１００Ｃを提供するコンピューティングシステムと並置され得る。これらの実施形態において、記憶階層１００を動的に選択するための、本明細書で開示される機能は、永続的にまたは必要に応じてアプリケーション１０８およびオペレーティングシステム１０４を実行するためのコンピューティングリソースを提供することができる、分散実行環境６０４を実現し得る。図６および図７は、そのような分散コンピューティング環境６０４の態様を例示する。
【００５３】
分散実行環境６０４によって提供されるコンピューティングリソースとしては、データ処理リソース、データ記憶リソース、データ通信リソース、および同類のもの等の、種々のタイプのリソースが挙げられる。各タイプのコンピューティングリソースは、汎用であり得るか、またはいくつかの特定の構成で利用可能であり得る。例えば、および下でさらに詳細に説明されるように、データ処理リソースは、いくつかの異なる構成の仮想マシンインスタンスとして利用可能であり得る。インスタンスは、ウェブサーバ、アプリケーションサーバ、媒体サーバ、データベースサーバ、および他のタイプのアプリケーション１０８を含む、アプリケーションを実行するように構成され得る。データ記憶リソースは、ファイル記憶デバイス、ブロック記憶デバイス、および同類のものを含み得る。これらのリソースは、図１に関して上で説明される、オブジェクト記憶サービス１２６、ブロック記憶サービス１２８、および／または長期記憶サービス１３０によって提供され得る。
【００５４】
各タイプまたは構成のコンピューティングリソースは、多数のプロセッサ、大きいメモリ量、および／または大きい記憶容量で構成される大きいリソース、ならびにより少ないプロセッサ、より小さいメモリ量、および／またはより小さい記憶容量で構成される小さいリソース等の、異なるサイズで利用可能であり得る。仮想マシンインスタンスも、プロセッサとメモリ能力との連続する比率で利用できるようにされ得る。
【００５５】
分散実行環境６０４によって提供されるコンピューティングリソースは、一実装例において、１つ以上のデータセンター６０６Ａ〜６０６Ｎ（本明細書では、単数の「データセンター６０６」として、または複数の「データセンター６０６」として言及される）によって使用可能にされる。データセンター６０６は、コンピュータシステムおよび関連付けられる構成要素を収容し、動作させるために利用される設備である。データセンター６０６は、一般的に、冗長電源およびバックアップ電源、通信システム、冷却システム、およびセキュリティシステムを含む。データセンター６０６はまた、地理的に異なる場所にも位置し得る。記憶階層１００を動的に選択するための、本明細書で開示される概念および技術を実現する、データセンター６０６の１つの実例となる構成は、図７に関して下で説明される。
【００５６】
分散実行環境６０４の顧客および他の消費者は、ＷＡＮ１２４を通じてデータセンター６０６によって提供されるコンピューティングリソースにアクセスし得る。図６ではＷＡＮ１２４が例示されているが、データセンター６０６をリモートの顧客および他のユーザに接続する、ＬＡＮ１１８、インターネット、または当技術分野で知られている任意の他のネットワークトポロジが利用され得ることを認識されたい。また、そのようなネットワークの組み合わせが利用され得ることも理解されたい。
【００５７】
顧客コンピューティングシステム６０２は、分散実行環境６０４の顧客または他の消費者によって利用されるコンピューティングデバイスである。例えば、顧客コンピューティングシステム６０２は、サーバコンピュータ、デスクトップまたはラップトップのパーソナルコンピュータ、タブレットコンピュータ、無線電話、ＰＤＡ、電子ブックリーダー、ゲームコンソール、セットトップボックス、または分散実行環境６０４にアクセスすることができる任意の他のコンピューティングデバイスであり得る。下でさらに詳細に説明されるように、顧客コンピューティングシステム６０２は、データセンター６０６のうちの１つに位置し、記憶階層１００を動的に選択するための本明細書で開示される機能を提供するオペレーティングシステム１０４を実行する、サーバコンピュータ等のコンピューティングデバイス１０２にアクセスするために利用され得る。顧客コンピューティングシステム６０２は、オペレーティングシステム１０４およびアプリケーション１０８によって提供されるデスクトップを閲覧し、それと相互作用するために、ＲＤＰまたは別の適切なプロトコルとともに構成されるアプリケーションを利用し得る。このプロセスに関する追加的な詳細は、下で提供される。
【００５８】
図７は、記憶階層１００を動的に選択するための、本明細書で開示される概念および技術を含む、分散実行環境６０４を実現するデータセンター６０６の１つの構成を例示する、コンピューティングシステム図表である。図７で示される例示的なデータセンター６０６は、オペレーティングシステム１０４および１つ以上のアプリケーション１０８を実行するためのコンピューティングリソースを提供するための、複数のサーバコンピュータ７０２Ａ〜７０２Ｆ（本明細書では、単数の「サーバコンピュータ７０２」として、または複数の「サーバコンピュータ７０２」として言及される）を含む。サーバコンピュータ７０２は、上で説明されるコンピューティングリソースを提供するように適切に構成される、標準タワー型またはラックマウント型のサーバコンピュータであり得る。例えば、一実装例において、サーバコンピュータ７０２は、コンピューティングリソースのインスタンス７０６Ａ〜７０６Ｑを提供するように構成される。
【００５９】
一実施形態において、インスタンス７０６Ａ〜７０６Ｑ（本明細書では、単数の「インスタンス７０６」として、または複数の「インスタンス７０６」として言及され得る）は、仮想マシンインスタンスである。当技術分野で知られているように、仮想マシンインスタンスは、物理マシンのようにプログラムを実行するマシン（すなわち、コンピュータ）のソフトウェア実装例のインスタンスである。仮想マシンインスタンスの実施例において、サーバ７０２のそれぞれは、インスタンスを実行することができるインスタンスマネージャ７０４を実行するように構成され得る。例えば、インスタンスマネージャ７０４は、単一のサーバ７０２上での複数のインスタンス７０６の実行を可能にするように構成される、ハイパーバイザーまたは別のタイプのプログラムであり得る。
【００６０】
上で論じられるように、インスタンス７０６のそれぞれは、記憶階層１００を動的に選択するための本明細書で開示される機能、および１つ以上のアプリケーション１０８とともに構成されるオペレーティングシステム１０４を実行するように構成され得る。例えば、図７で示されるサーバコンピュータ７０２Ｆは、インスタンス７０６Ｑでオペレーティングシステム１０４を実行するように構成される。アプリケーション１０８はまた、インスタンス７０６Ｑでも実行され得る。
【００６１】
同じく上で簡潔に論じられるように、分散実行環境６０４の顧客は、適切に構成されたクライアントアプリケーションを有する顧客コンピューティングシステム６０２を利用して、オペレーティングシステム１０４に接続し得る。例えば、顧客コンピューティングシステム６０２は、ＲＤＰクライアントアプリケーションを利用して、インスタンス７０６Ｑに接続し、そして、オペレーティングシステム１０４およびアプリケーション１０８を利用し得る。
【００６２】
上で説明される様式で、顧客コンピューティングシステム６０２を利用して接続し、オペレーティングシステム１０４およびアプリケーション１０８を利用したとき、オペレーティングシステム１０４は、上で説明される機能を利用して、顧客データを記憶するための記憶階層１００を動的に選択する。例えば、記憶マネージャ１０６は、顧客データを記憶するためのローカル記憶階層１００Ａ（すなわち、サーバコンピュータ７０２Ｆ）のデバイスを選択し得るか、または顧客データを記憶するためのリモートネットワーク記憶階層１００Ｃのサービスを選択し得る。この実施例では、リモートネットワーク記憶階層１００Ｃの種々の記憶サービスを提供するために、インスタンス７０６Ａ〜７０６Ｑのうちの１つ以上が利用され得ることを認識されたい。
【００６３】
図７で示される例示的なデータセンター６０６では、サーバコンピュータ７０２Ａ〜７０２Ｆを相互接続するために、適切なＬＡＮ１１８が利用される。ＬＡＮ１１８はまた、図１および図６で例示されるＷＡＮ１２４にも接続される。図１、図６、および図７で例示されるネットワークトポロジは、かなり簡略化されていること、および本明細書で開示される種々のコンピューティングシステムを相互接続するために、はるかに多くのネットワークおよびネットワーキングデバイスが利用され得ることを認識されたい。また、データセンター６０６Ａ〜６０６Ｎのそれぞれの間の、各データセンター６０６のサーバコンピュータ７０２Ａ〜７０２Ｆのそれぞれの間の、および分散実行環境６０４の各顧客によって購入されるインスタンス７０６の間の負荷を平衡させるために、適切な負荷平衡化デバイスまたはソフトウェアモジュールも利用され得る。また、図７で説明されるデータセンター６０６は、単なる実例に過ぎないこと、および他の実装例が利用され得ることも認識されたい。加えて、上で説明される構成要素によって提供される機能は、ソフトウェア、ハードウェア、またはソフトウェアおよびハードウェアの組み合わせで実装され得ることを認識されたい。他の実装例が当業者に明らかになるはずである。
【００６４】
本開示の実施形態は、以下の付記を考慮して説明することができる。
【００６５】
１．コンピュータ実行可能な命令を記憶したコンピュータ読み出し可能な記憶媒体であって、該命令は、コンピュータによって実行されたときに、コンピュータに、
ローカル記憶階層、ローカルネットワーク記憶階層、またはリモートネットワーク記憶階層にオブジェクトを記憶するように構成される、オペレーティングシステムを実行させ、
オペレーティングシステムで、オブジェクトを記憶する無条件の要求を受け取らせ、
オブジェクトを記憶する要求を受け取ることに応じて、１つ以上のオブジェクト場所因子を利用して、オブジェクトをローカル記憶階層に記憶するべきか、ローカルネットワーク記憶階層に記憶するべきか、またはリモートネットワーク記憶階層に記憶するべきかを決定させ、そして、
オブジェクトを決定された記憶階層に記憶させる、コンピュータ読み出し可能な記憶媒体。
【００６６】
２．ローカル記憶階層は、コンピュータの１つ以上のメモリおよび大容量記憶デバイスを備える、付記１に記載のコンピュータ読み出し可能な記憶媒体。
【００６７】
３．ローカルネットワーク記憶階層は、ローカルエリアネットワーク（ＬＡＮ）を経由してコンピュータにアクセス可能な１つ以上の記憶システムを備える、付記２に記載のコンピュータ読み出し可能な記憶媒体。
【００６８】
４．リモートネットワーク記憶階層は、コンピュータにアクセス可能な１つ以上の記憶サービスを備える、付記３に記載のコンピュータ読み出し可能な記憶媒体。
【００６９】
５．オブジェクトを記憶する要求は、最適化因子を識別するオブジェクトおよびデータを含み、オブジェクトをローカル記憶階層に記憶するべきか、ローカルネットワーク記憶階層に記憶するべきか、またはリモートネットワーク記憶階層に記憶するべきかに関する決定は、オブジェクト場所因子および最適化因子に基づく、付記４に記載のコンピュータ読み出し可能な記憶媒体。
【００７０】
６．オブジェクトを記憶する要求はさらに、オブジェクト場所因子の１つ以上を含む、付記５に記載のコンピュータ読み出し可能な記憶媒体。
【００７１】
７．オブジェクト場所因子は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、オブジェクトの使用履歴を説明するデータ、またはオブジェクトの圧縮性、のうちの１つ以上を含む、付記６に記載のコンピュータ読み出し可能な記憶媒体。
【００７２】
８．オブジェクト場所因子は、オブジェクトを記憶階層に記憶するコスト、オブジェクトを記憶するときまたは記憶階層からオブジェクトを取り出すときの待ち時間、または記憶階層に対する利用可能な帯域幅、のうちの１つ以上を含む、付記６に記載のコンピュータ読み出し可能な記憶媒体。
【００７３】
９．オペレーティングシステムは、仮想マシンインスタンスで実行している、付記６に記載のコンピュータ読み出し可能な記憶媒体。
【００７４】
１０．仮想マシンインスタンスは、分散実行環境で実行している、付記９に記載のコンピュータ読み出し可能な記憶媒体。
【００７５】
１１．複数の記憶階層からオブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
オペレーティングシステムで、オブジェクトを記憶する無条件の要求を受け取り、
要求を受け取ることに応じて、１つ以上のオブジェクト場所因子に基づいて、オペレーティングシステムを経由して、オブジェクトを記憶するための複数の記憶階層から１つの記憶階層を選択し、そして、
オブジェクトを選択された記憶階層に記憶させるための、コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
【００７６】
１２．複数の記憶階層は、ローカル記憶階層、ローカルネットワーク記憶階層、およびリモートネットワーク記憶階層を備える、付記１１に記載のコンピュータにより実装される方法。
【００７７】
１３．オブジェクトを記憶するための記憶階層の選択は、オブジェクト場所因子および最適化因子に基づく、付記１２に記載のコンピュータにより実装される方法。
【００７８】
１４．オブジェクトを記憶する要求はさらに、オブジェクト場所因子の１つ以上を含む、付記１３に記載のコンピュータにより実装される方法。
【００７９】
１５．オブジェクトおよびオブジェクトを記憶するために使用される記憶階層を識別するデータを記憶することと、
オブジェクトを取り出す要求を受け取ることと、
オブジェクトを取り出す要求を受け取ることに応じて、オブジェクトを記憶するために使用される記憶階層を識別するために、記憶されたデータを利用し、識別された記憶階層からオブジェクトを取り出し、そして、オブジェクトを取り出す要求に応じて、取り出したオブジェクトを提供することと、をさらに含む、付記１３に記載のコンピュータにより実装される方法。
【００８０】
１６．オペレーティングシステムは、仮想マシンインスタンスで実行している、付記１３に記載のコンピュータにより実装される方法。
【００８１】
１７．仮想マシンインスタンスは、分散実行環境で実行している、付記１６に記載のコンピュータにより実装される方法。
【００８２】
１８．オブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
オペレーティングシステムによって、オブジェクトを記憶する無条件の要求を受け取り、
要求を受け取ることに応じて、１つ以上のオブジェクト場所因子に基づいて、オペレーティングシステムによって、オブジェクトを記憶するのに適切なローカル記憶場所またはネットワーク記憶場所を選択し、そして、
オブジェクトを選択された記憶場所に記憶させるための、コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
【００８３】
１９．無条件の要求は、オブジェクトを記憶するための場所を指定しない要求を含む、付記１８に記載のコンピュータにより実装される方法。
【００８４】
２０．ローカル記憶場所は、オブジェクトを記憶する無条件の要求を受け取るオペレーティングシステムを実行するコンピュータの１つ以上のメモリおよび大容量記憶デバイスを備える、付記１８に記載のコンピュータにより実装される方法。
【００８５】
２１．ネットワーク記憶場所は、ウェブサービスを経由してコンピュータにアクセス可能な記憶サービスを備える、付記１８に記載のコンピュータにより実装される方法。
【００８６】
２２．オブジェクト場所因子の１つ以上は、複数のネットワーク記憶階層との通信を監視することによって発生される、付記１８に記載のコンピュータにより実装される方法。
【００８７】
２３．オブジェクト場所因子の１つ以上は、記憶サービスから取り出される、付記１８に記載のコンピュータにより実装される方法。
【００８８】
２４．オブジェクト場所因子は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、オブジェクトの使用履歴を説明するデータ、オブジェクトの圧縮性、オブジェクトを記憶場所に記憶するコスト、オブジェクトを記憶するときまたは記憶場所からオブジェクトを取り出すときの待ち時間、および記憶場所に対する利用可能な帯域幅、のうちの１つ以上を含む、付記１８に記載のコンピュータにより実装される方法。
【００８９】
図８は、オブジェクト１１０を記憶するための記憶階層１００を動的に選択するための上で説明されるプログラム構成要素を実行することができる、コンピュータ８００の例示的なコンピュータアーキテクチャを示す。図８で示されるコンピュータアーキテクチャは、従来のサーバコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォン、ネットワーク機器、パーソナルデジタルアシスタント（「ＰＤＡ」）、電子ブックリーダー、デジタル携帯電話、または他のコンピューティングデバイスを例示し、また、本明細書で提示される種々のソフトウェア構成要素を実行するために利用され得る。例えば、図８で示されるコンピュータ８００は、オペレーティングシステム１０４および／または記憶マネージャ１０６を実行するために利用され得る。コンピュータ８００はまた、ローカルネットワーク記憶階層１００Ｂおよび／またはリモートネットワーク記憶階層１００Ｃに位置するコンピューティングシステムの態様を実現するためにも利用され得る。
【００９０】
図８で示される実装例において、コンピュータ８００は、ベースボードまたは「マザーボード」を含み、該ボードは、多数の構成要素またはデバイスがシステムバスまたは他の電気通信経路を経由して接続され得るプリント回路基板である。例示的な一実施形態では、１つ以上の中央処理ユニット（「ＣＰＵ」）８０２がチップセット８０４と連動して動作する。ＣＰＵ８０２は、コンピュータ８００の動作に必要な算術演算および論理演算を行う、標準プログラマブルプロセッサであり得る。
【００９１】
ＣＰＵ８０２は、１つの個別の物理的状態から次の状態に、これらの状態間を区別し、変化させるスイッチング素子の操作を通じて遷移することによって動作を行う。スイッチング素子は、全般的に、２つの２進状態のうちの１つを維持するフリップフロップ等の電子回路と、１つ以上の他のスイッチング要素の状態の論理的組み合わせに基づいて出力状態を提供する論理ゲート等の電子回路とを含み得る。これらの基本的スイッチング素子は、レジスタ、加算器−減算器、算術論理ユニット、浮動小数点ユニット、および同類のものを含む、より複雑な論理回路を作成するために組み合わせられ得る。
【００９２】
チップセット８０４は、ＣＰＵ８０２とベースボード上の構成要素およびデバイスの残部との間のインターフェースを提供する。チップセット８０４は、コンピュータ８００のメインメモリとして使用されるＲＡＭ８０６へのインターフェースを提供し得る。例えば、チップセット８０４はさらに、コンピュータ８００を起動し、種々の構成要素とデバイスとの間で情報を転送するのを補助する基本的なルーチンを記憶するための、リードオンリーメモリ（「ＲＯＭ」）８０８または不揮発性ＲＡＭ（「ＮＶＲＡＭ」）等の、コンピュータ読み出し可能な記憶媒体へのインターフェースを提供し得る。ＲＯＭ８０８またはＮＶＲＡＭはまた、本明細書で説明される実施形態に従って、コンピュータ８００の動作に必要な他のソフトウェア構成要素も記憶し得る。
【００９３】
コンピュータ８００は、上で説明されるローカルエリアネットワーク１１８等のネットワークを通して、リモートコンピューティングデバイスおよびコンピュータシステムへの論理接続を使用する、ネットワーク化された環境で動作し得る。チップセット８０４は、ギガビットイーサネットアダプタ等のＮＩＣ８１０を通して、ネットワーク接続性を提供するための機能を含み得る。ＮＩＣ８１０は、ネットワーク１１８を通じて、コンピュータ８００を他のコンピューティングデバイスに接続することができる。コンピュータ８００には、コンピュータを他のタイプのネットワークおよびリモートコンピュータシステムに接続する複数のＮＩＣ８１０が存在し得ることを認識されたい。
【００９４】
コンピュータ８００は、コンピュータの不揮発性記憶装置を提供する大容量記憶デバイス８１２に接続され得る。大容量記憶デバイス８１２は、本明細書でさらに詳細に説明されているシステムプログラム、アプリケーションプログラム、他のプログラムモジュール、およびデータを記憶し得る。大容量記憶デバイス８１２は、チップセット８０４に接続される記憶コントローラ８１４を通して、コンピュータ８００に接続され得る。大容量記憶デバイス８１２は、１つ以上の物理記憶ユニットで構成され得る。記憶コントローラ８１４は、シリアルアタッチドＳＣＳＩ（「ＳＡＳ」）インターフェース、シリアルアドバンストテクノロジーアタッチメント（「ＳＡＴＡ」）インターフェース、ファイバーチャネル（「ＦＣ」）インターフェース、またはコンピュータおよび物理記憶ユニットを物理的に接続し、それらの間でデータを転送するための他のタイプのインターフェースとインターフェースし得る。
【００９５】
コンピュータ８００は、物理記憶ユニットの物理的状態を変換して、記憶される情報を反映することによって、大容量記憶デバイス８１２にデータを記憶し得る。物理的状態の具体的な変換は、この説明の異なる実装例において、種々の因子に依存し得る。そのような因子の例としては、物理記憶ユニットを実装するために使用される技術、大容量記憶デバイス８１２が一次記憶装置として特徴付けられるかまたは二次記憶装置として特徴付けられるか、および同類のものが挙げられ得るが、それらに限定されない。
【００９６】
例えば、コンピュータ８００は、磁気ディスクドライブユニット内の特定の場所の磁気特性、光学記憶ユニット内の特定の場所の反射特性もしくは屈折特性、またはソリッドステート記憶ユニット内の特定のキャパシタ、トランジスタ、もしくは他の個別的な構成要素の電気特性を変更するために、記憶コントローラ８１４を通して命令を発行することによって、大容量記憶デバイス８１２に情報を記憶し得る。物理媒体の他の変換は、本説明の範囲および趣旨から逸脱しない範囲で可能であり、前述の例は、この説明を容易にするためにだけ提供される。コンピュータ８００はさらに、物理記憶ユニット内の１つ以上の特定の場所の物理的状態または特性を検出することによって、大容量記憶デバイス８１２から情報を読み出し得る。
【００９７】
上で説明される大容量記憶デバイス８１２に加えて、コンピュータ８００は、プログラムモジュール、データ構造、または他のデータ等の情報を記憶し、取り出すために、他のコンピュータ読み出し可能な記憶媒体へのアクセスを有し得る当業者は、コンピュータ読み出し可能な記憶媒体が、非一時的なデータの記憶を提供する任意の利用可能な媒体とすることができること、およびコンピュータ８００によってアクセスされ得ることを認識されたい。
【００９８】
一例であり、限定するものではないが、コンピュータ読み出し可能な記憶媒体としては、任意の方法または技術で実現される、揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体が挙げられ得る。コンピュータ読み出し可能な記憶媒体としては、ＲＡＭ、ＲＯＭ、消去可能プログラマブルＲＯＭ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブルＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリ、もしくは他の固体メモリ技術、コンパクトディスクＲＯＭ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（「ＤＶＤ」）、高解像度ＤＶＤ（「ＨＤ−ＤＶＤ」）、ブルーレイ、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができる任意の他の媒体が挙げられるが、それらに限定されない。本明細書で利用される場合、コンピュータ読み出し可能な記憶媒体という用語は、それ自体の一時的な信号を含まない。
【００９９】
大容量記憶デバイス８１２は、コンピュータ８００の動作を制御するために利用される、オペレーティングシステム１０４を記憶し得る。一実施形態によれば、オペレーティングシステムは、ＬＩＮＵＸ（登録商標）オペレーティングシステムを含む。別の実施形態によれば、オペレーティングシステムは、ＭＩＣＲＯＳＯＦＴ  ＣｏｒｐｏｒａｔｉｏｎによるＷＩＮＤＯＷＳ（登録商標）ＳＥＲＶＥＲオペレーティングシステムを含む。さらなる実施形態によれば、オペレーティングシステムは、ＵＮＩＸ（登録商標）またはＳＯＬＡＲＩＳオペレーティングシステムを含み得る。また、他のオペレーティングシステムも利用され得ることを認識されたい。図８で例示され、上で説明されるように、オペレーティングシステム１０４はまた、上で説明される機能を行うように構成される、記憶マネージャ１０６も含み得る。上で述べられるように、記憶マネージャ１０６によって行われるような本明細書で説明される機能は、オペレーティングシステム１０４内の別の構成要素によって、オペレーティングシステム１０４以外の構成要素によって、または構成要素の組み合わせによって行われ得る。
【０１００】
大容量記憶デバイス８１２は、アプリケーション１０８ならびに／または上で説明される他のソフトウェア構成要素およびデータのいずれか等の、コンピュータ８００によって利用される他のシステムまたはアプリケーションプログラムおよびデータを記憶し得る。大容量記憶デバイス８１２はまた、本明細書で具体的に識別されない他のプログラムおよびデータも記憶し得る。
【０１０１】
一実施形態において、大容量記憶デバイス８１２または他のコンピュータ読み出し可能な記憶媒体は、コンピュータ実行可能な命令によって符号化され、該命令は、コンピュータ８００に読み込まれたときに、コンピュータを汎用コンピューティングシステムから、本明細書で説明される実施形態を実現することができる特殊用途コンピュータに変換する。これらのコンピュータ実行可能な命令は、上で説明されるように、ＣＰＵ８０２がどのように状態間を遷移するのかを指定することによって、コンピュータ８００を変換する。一実施形態によれば、コンピュータ８００は、コンピュータ実行可能な命令を記憶するコンピュータ読み出し可能な記憶媒体へのアクセスを有し、該命令は、コンピュータ８００によって実行されたときに、それぞれ図３、図４、および図５に関して上で説明される、ルーチン３００、４００、および５００を行う。
【０１０２】
コンピュータ８００はまた、キーボード、マウス、タッチパッド、タッチ画面、電子スタイラス、または他のタイプの入力デバイス等の数多くの入力デバイスから入力を受け取り、処理するための、入力／出力コントローラ８１８も含み得る。同様に、入力／出力コントローラ８１８は、コンピュータモニタ、フラットパネルディスプレイ、デジタルプロジェクタ、プリンタ、プロッタ、または他のタイプの出力デバイス等のディスプレイに出力を提供し得る。コンピュータ８００は、図８で示される構成要素の全てを含まない場合があること、図８で明示的に示されない他の構成要素を含み得ること、または図８で示されるものと完全に異なるアーキテクチャを利用し得ることが認識されるであろう。
【０１０３】
上記に基づいて、記憶階層の動的選択のための技術が本明細書で提示されたことを認識されたい。本明細書で提示される主題は、コンピュータの構造的特徴、方法論的な行為、およびコンピュータ読み出し可能な媒体に特有の言い回しで説明してきたが、添付の特許請求の範囲で定義される本発明は、必ずしも、本明細書で説明される具体的な特徴、行為、または媒体に限定されるものではないことを理解されたい。むしろ、具体的な特徴、行為、媒体は、特許請求の範囲を実現する例示的な形態として開示される。
【０１０４】
上で説明される主題は、単なる例示の目的で提供されるものであり、限定するものとして解釈するべきではない。さらに、特許請求される主題は、本開示の任意の部分に記載される任意のまたは全ての不利な点を解決する実装例に限定されない。例示され、説明される例示的な実施形態および応用例に従うことなく、また、以下の特許請求の範囲に記載される本発明の真の趣旨および範囲から逸脱することなく、本明細書で説明される主題に対して様々な修正および変更が行われ得る。
【図１】
2017130211.tif 000003
【図２】
2017130211.tif 000004
【図３】
2017130211.tif 000005
【図４】
2017130211.tif 000006
【図５】
2017130211.tif 000007
【図６】
2017130211.tif 000008
【図７】
2017130211.tif 000009
【図８】
2017130211.tif 000010