JP6423468B2 - 記憶階層の動的選択 - Google Patents

記憶階層の動的選択 Download PDF

Info

Publication number
JP6423468B2
JP6423468B2 JP2017027164A JP2017027164A JP6423468B2 JP 6423468 B2 JP6423468 B2 JP 6423468B2 JP 2017027164 A JP2017027164 A JP 2017027164A JP 2017027164 A JP2017027164 A JP 2017027164A JP 6423468 B2 JP6423468 B2 JP 6423468B2
Authority
JP
Japan
Prior art keywords
storage
computer
hierarchy
request
storing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017027164A
Other languages
English (en)
Other versions
JP2017130211A (ja
Inventor
バーソロミュー トーマス ネイサン
バーソロミュー トーマス ネイサン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2017130211A publication Critical patent/JP2017130211A/ja
Application granted granted Critical
Publication of JP6423468B2 publication Critical patent/JP6423468B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

ソフトウェア開発者は、プログラムによって利用されるデータをどこに記憶するべきかに関して多くの決定を行うことが必要であり得る。開発者がそのような決定を行った時点で、開発者は、プログラムによって使用されるデータをどこに記憶すべきかを明示的に指定する。例えば、開発者は、プログラムデータをランダムアクセスメモリ(「RAM」)に記憶するために、特定のプログラミング機能を利用し得る。開発者は、同様に、データをネットワークサーバ等の異なる場所に記憶するために、異なるプログラミング機能を利用し得る。その結果、しばしば、開発者は、データを記憶するための潜在的な場所の全てを認識し、加えて、データを種々のタイプの利用可能な場所に記憶するためのしばしば複雑な機構を理解することが必要である。さらに、プログラマは、データを記憶するための最も適切な場所を常に選択するとは限らず、その結果、アプリケーション性能が悪影響を受け得る。
本明細書で提示される開示は、これらのおよび他の考慮すべき事柄に関して行われる。
記憶階層の動的選択のための、本明細書で開示される1つの実例となる機構の態様を示す、ネットワークおよびシステムの図表である。 記憶階層の動的選択のための、本明細書で開示される1つの実例となる機構の追加的な態様を示す、システムの図表である。 本明細書で開示される一実施形態による、利用可能な記憶階層を識別するための、および1つ以上のオブジェクト場所因子を計算するか、または別様には取得するための、本明細書で開示される機構の態様を説明する、1つの実例となるルーチンを示すフロー図である。 本明細書で開示される一実施形態による、オブジェクトを動的に選択した記憶階層に記憶するための記憶マネージャの動作の態様を説明する、実例となるルーチンを示すフロー図である。 本明細書で開示される一実施形態による、動的に選択した記憶階層に以前に記憶したオブジェクトを取り出すための、記憶マネージャの動作の態様を説明する、実例となるルーチンを示すフロー図である。 本明細書で開示される種々の実施形態が実現され得る分散実行環境を含む、実例となる動作環境を示す、システムおよびネットワーク図表である。 本明細書で開示される一実施形態による、データを記憶するための記憶階層の動的な選択のための、本明細書で開示される概念および技術の態様を実現するデータセンターの1つの構成を例示する、コンピューティングシステム図表である。 本明細書で提示される種々の実施形態の態様を実現するために利用され得るコンピューティングデバイスを実装するための、1つの実例となるコンピュータハードウェアアーキテクチャを示す、コンピュータアーキテクチャ図表である。
以下の詳細な説明は、記憶階層の動的選択のための技術に関する。本明細書で説明される技術を利用することで、オペレーティングシステムは、1つ以上のオブジェクト場所因子に基づいてオブジェクトを記憶するための、適切な記憶階層を動的に選択することができる。オブジェクト場所因子は、各階層にデータを記憶するコスト、各記憶階層と関連付けられる帯域幅または待ち時間、記憶されるデータのタイプ、および/または他の考慮すべき事柄等の因子を含み得る。オブジェクトを記憶するための適切な記憶階層を動的に選択するためにオブジェクト場所因子を利用することによって、オブジェクトが記憶される場所に関する決定を行うことから、および実際にデータを記憶するために利用される複雑な機構から開発者を開放することができる。記憶階層の動的選択のための、本明細書で開示される概念および技術のこれらのおよび他の態様に関する追加的な詳細は、下で提供される。
本明細書で提示される一態様によれば、オペレーティングシステムは、大小双方の、オブジェクトを記憶するための記憶階層を動的に選択するための機能を提供する、記憶マネージャとともに構成される。オペレーティングシステム内の他の構成要素も、記憶マネージャによって行われたときに、本明細書で説明される機能を提供し得る。オブジェクトは、オペレーティングシステム、アプリケーションプログラム、または他のタイプのプロセスの実行において利用されるデータオブジェクトであり得る。「オブジェクト」という用語は、本明細書で利用される場合、任意のタイプの実行可能なプロセスによって利用される任意のタイプのデジタルデータの記憶を包含することを意図する。
オブジェクトを記憶するために、アプリケーションプログラムは、記憶マネージャにオブジェクトを記憶させる無条件要求を行うように構成され得る。「無条件」という用語は、本明細書で利用される場合、要求が、オブジェクトが記憶されるべき場所を指定しないことを意味する。しかしながら、要求は、最適化因子および、潜在的に、1つ以上のオブジェクト場所因子を定義するデータを含み得る。下でさらに詳細に説明されるように、記憶マネージャは、オブジェクトを選択するための記憶階層を動的に選択する要求と共に提供される最適化因子およびオブジェクト場所因子の1つ以上を利用し得る。
記憶マネージャはまた、実施形態において、オブジェクトの記憶階層を選択するときにも利用され得る1つ以上のオブジェクト場所因子を発生させるようにも構成され得る。例えば、記憶マネージャは、記憶階層に対するネットワークまたは他のタイプの接続の帯域幅および/または待ち時間を監視するように構成され得る。帯域幅および待ち時間は、オブジェクト場所因子として利用され得る。別の例として、記憶マネージャはまた、オブジェクトの使用履歴パターンも監視し得る。オブジェクトの使用履歴パターンはまた、オブジェクト場所因子としても利用され得る。記憶マネージャ、または記憶マネージャと併せて動作する別の構成要素はまた、他の実施形態において、他のオブジェクト場所因子を発生させるために他のタイプの処理も行い得る。
いくつかの実施形態において、記憶マネージャはまた、1つ以上の外部ソースからオブジェクト場所因子も取り出す。例えば、記憶マネージャは、インターネット等の広域ネットワーク(「WAN」)を介して、アクセス可能な記憶サービス等から、記憶階層の1つ以上にデータを記憶するコストを示すデータを取り出し得る。記憶マネージャはまた、他のソースから、オブジェクト場所因子として利用される他のデータも取り出し得る。オブジェクト場所因子はまた、記憶されるオブジェクトの特性にも基づき得る。例えば、オブジェクトのタイプ、サイズ、ファイル属性、セキュリティ要件、共有要件、およびオブジェクトの圧縮性は、オブジェクト場所因子として利用され得る。オブジェクトの他の特性も利用され得る。
上で簡潔に論じられるように、記憶マネージャは、オブジェクトの記憶階層を動的に選択するために、オブジェクト場所因子を利用する。例えば、オブジェクトの記憶がコストに基づいて最適化されることを指定する、オブジェクトを記憶する要求と共に最適化因子が提供される場合、記憶マネージャは、最も低いコストを有する記憶階層を選択し得る。オブジェクトの記憶がアクセス速度に基づいて最適化されることを指定する最適化因子が提供される場合、記憶マネージャは、最も高い利用可能な帯域幅および/または最も低い待ち時間を有する接続を経由してアクセス可能な記憶階層を選択し得る。記憶マネージャはまた、オブジェクトを記憶するための適切な場所を選択するために、オブジェクト場所因子の組み合わせも利用し得る。他の実施形態において、記憶マネージャに対して行われる、オブジェクトを記憶する要求は、最適化因子を含まない場合がある。これらの実施形態において、記憶マネージャは、利用可能なオブジェクト場所因子だけに基づいて、オブジェクトの適切な記憶階層を選択し得る。他の実施形態では、記憶階層を動的に選択するために、他の情報も利用され得る。
いくつかの実施形態において、利用可能な記憶階層は、ローカル記憶階層を含む。ローカル記憶階層は、記憶マネージャが実行されているコンピュータのシステムキャッシュ、メモリ、および大容量記憶デバイスを含む。記憶階層はまた、ローカルエリアネットワーク(「LAN」)を経由してアクセス可能な1つ以上の記憶システムを含む、ローカルネットワーク記憶階層も含み得る。記憶階層はまた、インターネット等のWANを経由してアクセス可能な1つ以上の記憶サービスを含む、リモートネットワーク記憶階層も含み得る。いくつかの実施形態において、記憶マネージャはまた、利用可能な記憶階層を発見するための機能も含む。オブジェクトを記憶するための記憶階層を動的に選択するための、上で説明される種々の構成要素およびプロセスに関する追加的な詳細は、図1〜図8に関して下で提示される。
本明細書で提示される主題は、コンピュータプロセス、コンピュータ制御の装置、コンピューティングシステム、またはコンピュータ読み出し可能な記憶媒体等の製品として実装され得ることを認識されたい。本明細書で説明される主題は、1つ以上のコンピューティングデバイス上で実行するプログラムモジュールの一般的な文脈で提示されるが、当業者は、他の実装例が他のタイプのプログラムモジュールと組み合わせて行われ得ることを認識するであろう。全般的に、プログラムモジュールは、ルーチン、プログラム、構成要素、データ構造、および特定のタスクを行うかまたは特定の抽象データ型を実装する他のタイプの構造を含む。
当業者はまた、本明細書で説明される主題の態様が、マルチプロセッサシステム、マイクロプロセッサに基づくまたはプログラム可能な消費者電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、電子ブックリーダー、携帯電話デバイス、専用ハードウェアデバイス、ネットワーク機器、および同類のものを含む、本明細書で説明されるもの以外の他のコンピュータシステム構成で、またはそれらと併せて実践され得ることも認識するであろう。本明細書で説明される実施形態は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる、分散コンピューティング環境において実践され得る。分散コンピューティング環境において、プログラムモジュールは、ローカルおよびリモート双方のメモリ記憶デバイスの中に位置し得る。
以下の詳細な説明では、その一部を形成し、具体例として具体的な実施形態または実施例を示す、添付図面に対する参照が行われる。本明細書の図面は、一定の縮尺で描画されていない。複数の図面(本明細書で「図」または「複数の図」と称され得る)の全体を通して、同じ数字は、同じ要素を表す。
図1は、記憶階層の動的選択のための、本明細書で開示される1つの実例となる機構の態様を示すネットワークおよびシステム図表である。図1で示されるように、コンピューティングデバイス102は、本明細書で提示される一実施形態で開示され、記憶マネージャ106とともに構成されるオペレーティングシステム104を実行するように構成される。コンピューティングデバイス102は、デスクトップもしくはラップトップコンピュータ、サーバコンピュータ、スマートフォン、タブレットコンピュータ、または別のタイプの固定式もしくは可動式コンピューティングデバイスであり得る。オペレーティングシステム104は、コンピューティングデバイス102のハードウェア上で直接的に、または仮想マシン環境内で実行され得る。
下でさらに詳細に説明されるように、記憶マネージャ106は、オブジェクト110を記憶するために、コンピューティングデバイス102上で実行する、オペレーティングシステム104から、またはアプリケーション108から要求を受け取るように構成される。上で論じられるように、オブジェクト110は、コンピューティングデバイス102上で実行する、オペレーティングシステム104、アプリケーション108、または他のタイプのプロセスの実行時に利用される、データオブジェクトであり得る。本明細書で利用される「オブジェクト」という用語は、任意のタイプの実行可能なプロセスによって利用される、任意のタイプのデジタルデータの記憶を包含する。
同じく上で簡潔に論じられるように、オブジェクト110を記憶する要求は、一実施形態において、「無条件」である。無条件の要求とは、オブジェクトが記憶されるべき場所を指定しない要求である。以前のシステムにおいて、ソフトウェアの開発者は、一般的に、オブジェクト(例えば、プロセス特有のデータ、ファイル、等)をRAMメモリに記憶するべきか、ネットワークデバイスに記憶するべきか、または別の場所に記憶すべきかを指定しなければならなかった。しかしながら、本明細書で提示される実施形態を利用することで、開発者が、そのサイズにかかわらず、実質的にあらゆるタイプのオブジェクト110の記憶を要求することができる、単一の原子機構を公開することができる。この機構を通して、オブジェクト110は、オブジェクト110のタイプおよび潜在的に複数の他のオブジェクト場所因子に基づいて、適切な記憶階層に記憶される。記憶マネージャ106は、この機能を提供するために、オペレーティングシステム104のメモリ管理、ブロック記憶、およびネットワーク層と相互作用し得る。オブジェクト110の記憶階層を選択するために利用され得る種々のオブジェクト場所因子に関する追加的な詳細は、図2に関して下で説明される。
図1で示される例示的な動作環境では、オブジェクト110を記憶するために、3つの記憶階層100A〜100C(単独で記憶階層100として、または集合的に記憶階層100として言及され得る)が利用可能である。ローカル記憶階層100Aは、オペレーティングシステム104を実行するコンピューティングデバイス102の中に存在する、システムキャッシュ112、システムメモリ114、および1つ以上の大容量記憶デバイス116を含む。大容量記憶デバイスは、種々の実施形態において、回転ディスク媒体および/またはソリッドステートドライブ(「SSD」)であり得る。ローカル記憶階層100Aはまた、他の実施形態において、他のタイプの記憶デバイスも含み得る。
同じく図1で示されるように、オブジェクト110を記憶するために、ローカルネットワーク記憶階層100Bも利用され得る。ローカルネットワーク記憶階層110Bは、LAN118を経由してコンピューティングデバイス102にアクセス可能な1つ以上の記憶システムを含む。例えば、図1で示される実例となる動作環境では、ネットワーク接続記憶デバイス120およびストレージエリアネットワークデバイス122が利用可能である。他のタイプの記憶システムも、LAN118を介して利用できるようにされ得る。
図1で図示される実施形態では、リモートネットワーク記憶階層100Cも利用可能である。リモートネットワーク記憶階層100Cは、インターネット等のWANを介して利用可能である1つ以上の記憶サービスを含む。図1で示される実施例では、例えば、オブジェクト110を記憶するために、オブジェクト記憶サービス126、ブロック記憶サービス128、および長期記憶サービス130が利用可能である。他の実施形態では、リモートネットワーク記憶階層100Cを経由して、他のタイプのサービスも利用できるようにされ得る。
図1で示される実施例では、3つの記憶階層100A〜100Cが例示される。しかしながら、他の実施形態では、異なる数の記憶階層100が利用され得ることを認識されたい。加えて、記憶階層100A〜100Cのそれぞれは、一意の動作特性によって定義され得ることを認識されたい。例えば、ローカル記憶階層100Aは、高速であるが、制限された記憶容量を特徴にし得る。同様に、ローカルネットワーク記憶階層100Bは、ローカル記憶階層100Aよりも僅かに遅いアクセス時間であるが、より大きい記憶容量を特徴にし得る。同様に、リモートネットワーク記憶階層100Cは、ローカルネットワーク記憶階層100Bよりも、アクセス時間がさらに速いが、記憶が僅かに多く、信頼性が高く、また潜在的にコストが低いことを特徴とし得る。下でさらに詳細に説明されるように、記憶階層100A〜100Cの特性の一部または全部が、オブジェクト110を記憶するための適切な記憶階層100を選択するために利用され得る。
図1で示される実施例において、アプリケーション108は、オブジェクト110を記憶する要求を記憶マネージャ106に伝送している。上で論じられるように、記憶マネージャ106に対する要求は、無条件であり得る。いくつかの実施形態において、要求はまた、最適化因子および1つ以上のオブジェクト場所因子も指定し得る。最適化因子は、オブジェクト110の適切な記憶階層100の選択が最適化されるべき属性を識別するデータである。例えば、最適化因子は、適切な記憶階層の選択がコストを最小にするように最適化されるよう指定し得る。同様に、最適化因子は、適切な記憶階層100の選択が、オブジェクト110に対する利用可能なアクセス速度を最大にするように最適化されるよう指定し得る。他のタイプの因子も指定され得る。オブジェクト110を記憶する要求と共に指定される最適化因子に関する追加的な詳細は、図2に関して下で提供される。
上で簡潔に述べられるように、オブジェクト110を記憶する要求はまた、1つ以上のオブジェクト場所因子も含み得る。オブジェクト場所因子は、オブジェクト110の適切な記憶階層100を選択するときに、記憶マネージャ106によって利用される因子である。図2に関して下でさらに詳細に説明されるように、オブジェクト場所因子は、オブジェクト110の特性に基づいて、記憶マネージャ106によって計算され得るか、コンピューティングデバイス102の外部の場所から取り出され得るか、オブジェクト110を記憶する要求と共に提供され得るか、または他の方法で発生および/もしくは取得され得る。
オブジェクト110を記憶する要求を受け取ることに応じて、記憶マネージャ106は、オブジェクト110の適切な記憶階層100を選択する。本明細書で説明されるように、記憶マネージャ106は、適切な記憶階層100を選択するために、オブジェクト場所因子を利用する。加えて、最適化因子がオブジェクト110を記憶する要求と共に提供される場合、記憶マネージャ106はまた、供給される最適化因子も使用し得る。他のデータも利用され得る。
以下、記憶マネージャ106がオブジェクト110の適切な記憶階層100を選択し得る様式を説明する、複数の実施例が説明される。一実施例において、例えば、記憶マネージャ106は、オブジェクト110が比較的小さく、また、オブジェクト110への迅速かつ高頻度なアクセスが望ましいと判定し得る。この実施例において、記憶マネージャ106は、オブジェクト110をシステムキャッシュ112に記憶し得る。別の実施例において、記憶マネージャ106は、オブジェクト110がシステムキャッシュ112の最大容量よりも大きいが、オブジェクト110への即時かつ高頻度のアクセスが望ましいと判定し得る。この実施例において、記憶マネージャ106は、オブジェクト110をシステムメモリ114に記憶し得る。記憶マネージャ106が、オブジェクト110がシステムメモリ114に記憶するには大き過ぎると判定した場合、記憶マネージャ106は、オブジェクト110の全部または一部を大容量記憶デバイス116に記憶し得る。
記憶マネージャ106が、オブジェクト110へのほぼ即時のアクセスが必要とされないと判定した場合、記憶マネージャ106は、オブジェクト110を記憶するために、ローカルネットワーク記憶階層100Bを選択し得る。同様に、オブジェクト110が極めて低い頻度でアクセスされる場合、記憶マネージャ106は、その低いコストおよび高い信頼性のため、ネットワーク記憶階層106を選択し得る。オブジェクト110を記憶するための適切な記憶階層100を選択する際に記憶マネージャ106によって利用される、これらのおよび他のプロセスおよび因子に関する追加的な詳細は、図2に関して下で提供される。
記憶マネージャ106がオブジェクト110の適切な記憶階層100を識別すると、記憶マネージャ106は、オブジェクト110を選択された記憶階層100に記憶させる。続いて、記憶マネージャ106は、オブジェクト110が以前に記憶された記憶階層100から該オブジェクトを取り出すことによって、オブジェクト110を読み出す要求を処理し得る。オブジェクト100が以前に記憶された記憶階層100から該オブジェクトが取り出されると、オブジェクト110は、オブジェクト110を読み出すように要求するプロセスに提供され得る。記憶マネージャ106の動作のこれらのおよび他の態様は、図2に関して下でさらに詳細に説明される。
図1で示される実例となる動作環境は、単なる実例に過ぎないこと、また、数多くの他のタイプの動作環境が利用され得ることを理解されたい。例えば、図1で例示されるネットワーク118および124は、議論の目的で簡略化されている。これに関して、本明細書で開示される実施形態を実現するために、図1で例示されるよりもはるかに多くのネットワーク、ネットワーキングデバイス、コンピュータシステム、およびソフトウェア構成要素が利用され得ることを認識されたい。加えて、記憶マネージャ106は、記憶階層100を動的に選択するための本明細書で開示される機能を提供するように説明されているが、この機能は、オペレーティングシステム104または別の構成要素によって提供され得ることを認識されたい。この機能はまた、ローカルに、または分散コンピューティングデバイス上で実行する構成要素の組み合わせによっても提供され得る。
また、一実装例において、コンピューティングデバイス102は、リモートネットワーク記憶階層100Cの種々のサービスを提供するコンピュータシステムと並置され得ることも認識されたい。したがって、一実施形態において、ローカル記憶階層100A、ローカルネットワーク記憶階層100B、および/またはリモートネットワーク記憶階層100Cは、同じデータセンターに物理的に位置し得る。例えば、一実装例において、コンピューティングデバイス102は、リモートネットワーク記憶階層100Cを提供する分散実行環境の一部として構成される、サーバコンピュータ702A等のサーバコンピュータである。この実施例において、オペレーティングシステム104は、インスタンス706A等のインスタンスとして仮想マシンで実行することができる。ユーザは、リモートデスクトッププロトコル(「RDP」)または別の類似のプロトコルによって構成されるクライアントアプリケーションを利用して、オペレーティングシステム104およびアプリケーション108にアクセスし、制御し得る。次いで、このようにして顧客によって発生されるオブジェクトは、本明細書で開示される種々の技術を利用して、適切な記憶階層100に動的に記憶され得る。この特定の実施形態に関する追加的な詳細は、図6および図7に関して下で提供される。
図2は、記憶階層100の動的選択のための、本明細書で開示される1つの実例となる機構の複数の追加的な態様を示すシステム図表である。図2で示され、上で簡潔に説明されるように、アプリケーション108は、オペレーティングシステム104の一部として実行する記憶マネージャ106に要求201を提供し得る。他のタイプの実行プロセスもまた、記憶マネージャ106によって提供されたときに、本明細書で開示される機能を使用し得る。例えば、オペレーティングシステム104もまた、オブジェクト110を記憶するために、本明細書で説明される機能を利用し得る。他のタイプのプロセスもまた、オブジェクト110を記憶するために、本明細書で開示される機能を利用し得る。
いくつかの実施形態において、オペレーティングシステム104は、アプリケーション108がそれを通して要求201を提出することができるアプリケーションプログラミングインターフェース(「API」)202を公開する。しかしながら、他の実施形態において、オペレーティングシステム104は、プロセスがそれを通してオブジェクト110を記憶するよう要求することができる他の機構を公開し得る。例えば、プログラミング機能は、本明細書で開示される機能にアクセスするための種々のプログラミング言語によって利用することができるプログラミングライブラリを通して公開され得る。また、アプリケーション108、オペレーティングシステム104、および他のタイプのプロセスが、オブジェクト110を記憶するための記憶階層100を動的に選択するための、本明細書で開示される機能を利用することを可能にするために、他のタイプの機構も利用され得る。
図1に関して上で簡潔に論じられるように、要求201はまた、最適化因子208および1つ以上のオブジェクト場所因子204も含み得る。図2で示される実施例において、例えば、アプリケーション108は、オブジェクト110の記憶を要求するために、最適化因子208およびオブジェクト場所因子204Mを、オペレーティングシステム104によって公開されるAPI202に提供している。これに関して、要求201は、最適化因子208またはオブジェクト場所因子204を含む必要がないことを認識されたい。最適化因子208またはオブジェクト場所因子204を含まない要求201を受け取った場合、記憶マネージャ106は、記憶マネージャ106によって計算された、または他の場所から取得されたオブジェクト場所因子に基づいて、オブジェクト110の適切な記憶階層100を選択するだろう。このプロセスに関する追加的な詳細は、下で説明される。
同じく上で簡潔に論じられるように、オブジェクト場所因子204のいくつかは、記憶されるオブジェクト110の特性に基づき得る。例えば、また、図2で例示されるように、記憶されるオブジェクト110のオブジェクトファイル属性204Gは、オブジェクト場所因子として利用され得る。オブジェクトファイル属性204Gは、例えば、オブジェクト110の所有権を定義する情報、オブジェクト110の読み出しおよび書き込みを許可されたプロセスに関する情報、ならびに他の情報を含み得る。同様に、オブジェクトサイズ204Eも、オブジェクト場所因子として利用され得る。
オブジェクトタイプ204Dも、オブジェクト場所因子として利用され得る。オブジェクトタイプ204Dは、オブジェクト110のデータタイプを説明し得る。これに関して、オブジェクト110の適切な記憶階層100を決定するときに、オブジェクトの圧縮性204Kも、オブジェクト場所因子204として利用され得る。オブジェクト110の適切な記憶階層100を決定するときに、オブジェクト110の他の特性も利用され得る。
上で論じられるように、記憶マネージャ106または別の構成要素はまた、オブジェクト場所因子204の1つ以上も計算し得る。例えば、一実装例において、記憶マネージャ106または別の構成要素は、利用可能な記憶階層100のそれぞれに対して、記憶階層待ち時間204および/または記憶階層帯域幅204Hを計算し得る。待ち時間および帯域幅は、継続的に計算され得、よって、記憶マネージャ106は、オブジェクト110を記憶する要求201を受け取った時点で、各記憶階層100の入手可能性に関する更新された情報を有する。
記憶マネージャ106はまた、外部サービスからオブジェクト場所因子204を取り出すようにも構成され得る。例えば、一実装例において、記憶マネージャ106は、リモートネットワーク記憶階層100Cを経由して、利用可能な記憶サービスから記憶コスト204Cを取り出すように構成される。記憶マネージャ106はまた、他のタイプの外部サービスから、オブジェクト場所因子204として利用され得る他のタイプの情報も取り出し得る。別の例として、記憶サービスは、特定のオブジェクト110の使用パターンに関する履歴データを維持し得る。記憶マネージャ106は、オブジェクト110の適切な記憶階層100を決定するときに、オブジェクト使用パターン204Aを取り出し得る。
他の実施形態において、他のタイプのオブジェクト場所因子は、記憶マネージャ106によって計算されるか、外部サービスから取り出されるか、または他の方法で取得される、要求201と共に受け取られ得ることを認識されたい。図2で示される実施例において、オブジェクト場所因子204はまた、オブジェクト110と関連付けられるセキュリティ要件204B、オブジェクト110と関連付けられる共有要件204J、オブジェクト110に対する必要とされるアクセス速度204L、および各記憶階層の入手可能性も含む。これらのオブジェクト場所因子は、要求201とともに供給され得るか、または別の様式で記憶マネージャ106によって取得され得る。図2で示されるオブジェクト場所因子204は、単なる実例に過ぎないこと、また、記憶マネージャ106は、オブジェクト110を記憶するための適切な記憶階層100を選択するときに、数多くの他のタイプの因子を利用し得ることを認識されたい。
また、図2で示される要求201の形式は、例示的であること、また、要求201は、図2で示されない他のデータを含み得ることも認識されたい。例えば、別の実装例において、要求201は、オブジェクト110を記憶するべき場所に関する「ヒント」または提案を含み得る。記憶マネージャ106は、このヒントを利用して、オブジェクト110を記憶するための適切な階層100を選択し得るか、またはアプリケーション108によって提供されるヒントを無視し得る。他のタイプのデータも、記憶階層100を選択する際に記憶マネージャ106によって使用するための要求201に含まれ得る。
記憶マネージャ106がオブジェクト110の適切な記憶階層100を選択すると、記憶マネージャ106は、オブジェクト110を、選択された記憶階層100に記憶させる。加えて、記憶マネージャ106は、オブジェクト110が特定の記憶階層100に記憶されたという指示を提供するエントリをルックアップテーブル206に作成し得る。下でさらに詳細に説明されるように、ルックアップテーブル206のコンテンツは、オブジェクト110を読み出す要求を受け取ることに応じて、オブジェクト110が記憶された記憶階層100を識別するために利用され得る。記憶マネージャ106の動作のこれらのおよび他の態様に関する追加的な詳細は、図3〜図5に関して下で提供される。
図3は、本明細書で開示される一実施形態による、利用可能な記憶階層100を識別するための、および1つ以上のオブジェクト場所因子204を計算するか、または別様には取得するための、本明細書で開示される1つの機構の態様を説明する、1つの実例となるルーチン300を示すフロー図である。図3および他の図面に関して本明細書で説明される論理演算は、(1)コンピューティングシステム上で動作する一連のコンピュータで実装される行為またはプログラムモジュールとして、および/または(2)コンピューティングシステム内の相互接続された機械論理回路または回路モジュールとして実装されることを認識されたい。
本明細書で説明される種々の構成要素の実装例は、コンピューティングシステムの性能および他の要件に依存して選択できる事柄である。故に、本明細書で説明される論理演算は、動作、構造デバイス、行為、またはモジュールと様々に称される。これらの動作、構造デバイス、行為、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、およびそれらの任意の組み合わせで実装され得る。また、図で示され、本明細書で説明されるよりも多いまたは少ない動作が行われ得ることも認識されたい。いくつかの動作はまた、並列に、または本明細書で説明される順序と異なる順序でも行われ得る。
ルーチン300は、動作302から開始し、そこでは、記憶マネージャ106が、利用可能な記憶階層100を識別し、各階層100の特性を取得する。例えば、いくつかの実施形態において、記憶マネージャ106は、オブジェクト記憶サービス126、ブロック記憶サービス128、および長期記憶サービス130等の、リモートネットワーク記憶階層100Cを介して利用可能なサービスを識別するための機能を含む。また、ローカルネットワーク記憶階層100B上で利用可能な記憶システムおよびローカル記憶階層100A上で利用可能な記憶デバイスを発見し、識別するために、他の機構も利用され得る。
これに関して、種々の記憶階層100に関する利用可能な記憶量、記憶限度、および利用可能な他の属性も、記憶マネージャ106または別の関連する構成要素によって発見され得る。また、各階層100に関する記憶サービスについて、調整および最適化設定も発見され得る。加えて、いくつかの実装例において、コンピューティングデバイス102のユーザは、利用可能な記憶階層100を指定すること、記憶階層100のそれぞれの信用証明書を提供すること、および/または上で説明されるような階層100のそれぞれの種々の特性を指定することを許可され得る。利用可能な記憶階層100A〜100Cが識別されると、ルーチン300は、動作302から動作304に進む。
動作304では、記憶マネージャ106または別の構成要素が、オブジェクト場所因子204の1つ以上を計算する。例えば、および上で簡潔に論じられるように、記憶マネージャ106は、動作302で識別される記憶階層100のそれぞれについて、記憶階層待ち時間204Fおよび記憶階層帯域幅204Hを継続的に計算し得る。これらの計算は、記憶マネージャ106が各階層100の待ち時間およびスループットに関する新しい情報を有するように、定期的かつ継続的に行われ得る。他の実施形態ではまた、他のタイプのオブジェクト場所因子204を発生させるために、他のタイプの計算も行われ得る。
動作304から、ルーチン300は、動作306に進み、そこでは、記憶マネージャ106が、1つ以上の外部ソースから1つ以上のオブジェクト場所因子204を取り出す。上で論じられるように、例えば、記憶マネージャ106は、リモートネットワーク記憶階層100Cを経由して利用可能なサービスから記憶コスト204Cを取り出し得る。他の実施形態では、他のタイプの外部ソースも、他のタイプのオブジェクト場所因子204について問い合わせられ得る。
動作306から、動作300は、動作302に戻り、そこでは、上で説明されるプロセスが繰り返され得る。これらの動作を繰り返すことによって、記憶マネージャ106は、利用可能な記憶階層100の更新されたリスト、各階層100の更新された特性、更新されたオブジェクト場所因子204を維持する。図4に関して下でさらに詳細に説明されるように、この情報は、記憶マネージャ106がオブジェクト110を記憶する要求201を受け取った時点で、適切な記憶階層100を動的に選択するために使用され得る。
図4は、本明細書で開示される一実施形態による、オブジェクト110を動的に選択した記憶階層100に記憶するための記憶マネージャ106の動作の態様を説明する、実例となるルーチン400を示すフロー図である。ルーチン400は、動作402から始まり、そこでは、記憶マネージャ106が、オブジェクト110を記憶する要求201を受け取る。上で論じられるように、要求201は、無条件であり得、したがって、オブジェクト110を記憶するための場所を指定しない場合がある。加えて、要求201は、随意に、最適化因子208と、1つ以上のオブジェクト場所因子204とを含み得る。
動作402で要求201を受け取ることに応じて、ルーチン400は、動作404に進み、そこでは、記憶マネージャ106が、オブジェクト110を記憶するための利用可能な記憶階層100の1つを選択するために、提供された場合は、利用可能なオブジェクト場所因子204の1つ以上および、最適化因子208を利用する。例えば、オブジェクト110の記憶がコストに基づいて最適化されるよう指定する、オブジェクト210を記憶する要求201と共に最適化因子208が提供される場合、記憶マネージャ106は、最も低いコストを有する記憶階層100を選択し得る。別の例において、オブジェクト110の記憶がアクセス速度に基づいて最適化されるよう指定する最適化因子208が提供される場合、記憶マネージャ106は、最も高い利用可能な帯域幅および/または最も低い待ち時間を有する接続を経由してアクセス可能な記憶階層100を選択し得る。記憶マネージャ106はまた、オブジェクト110を記憶するための適切な階層100を選択するために、オブジェクト場所因子204の組み合わせも利用し得る。最適化因子208が、オブジェクト110を記憶する要求201と共に提供されない場合、記憶マネージャ106は、利用可能なオブジェクト場所因子204に基づいて記憶階層100を選択し得る。
記憶マネージャ106がオブジェクト110を記憶するための適切な階層100を選択すると、ルーチン400は、動作404から動作406に進む。動作406では、記憶マネージャ106が、オブジェクト110を選択した記憶階層100に記憶する。次いで、ルーチン400は、動作408に進み、そこでは、記憶マネージャ106が、オブジェクト110が記憶された階層100を識別するために、ルックアップテーブル206を更新する。下でさらに詳細に説明されるように、ルックアップテーブル206に記憶されたデータは、適切な記憶階層100からオブジェクト110を取り出すために、後で利用され得る。動作408から、ルーチン400は、動作410に進み、そこで終了する。
図5は、本明細書で開示される一実施形態による、動的に選択した記憶階層100に以前に記憶したオブジェクト110を取り出すための、記憶マネージャ106の動作の態様を説明する、実例となるルーチン500を示すフロー図である。ルーチン500は、動作502から開始し、そこでは、記憶マネージャ106が、記憶階層100のうちの1つに以前に記憶したオブジェクト110を読み出す要求を受け取る。
動作502でオブジェクト110に関する要求を受け取ることに応じて、ルーチン500は、動作504に進み、そこでは、記憶マネージャ106が、要求されたオブジェクト110が以前に記憶された階層100を決定するために、ルックアップテーブル206を参照する。要求されたオブジェクト110を含む階層100が識別されると、ルーチン500は、動作504から動作506に進む。
動作506では、記憶マネージャ106が、識別された記憶階層100から要求されたオブジェクト110を取り出す。次いで、ルーチン500は、動作506から動作508に進み、そこでは、記憶マネージャ106が、その要求されたオブジェクト110を処理するために、取り出したオブジェクト110を提供する。次いで、ルーチン500は、動作508から動作510に進み、そこで終了する。
上で簡潔に論じられるように、いくつかの実施形態において、コンピューティングデバイス102は、リモートネットワーク記憶階層100Cを提供するコンピューティングシステムと並置され得る。これらの実施形態において、記憶階層100を動的に選択するための、本明細書で開示される機能は、永続的にまたは必要に応じてアプリケーション108およびオペレーティングシステム104を実行するためのコンピューティングリソースを提供することができる、分散実行環境604を実現し得る。図6および図7は、そのような分散コンピューティング環境604の態様を例示する。
分散実行環境604によって提供されるコンピューティングリソースとしては、データ処理リソース、データ記憶リソース、データ通信リソース、および同類のもの等の、種々のタイプのリソースが挙げられる。各タイプのコンピューティングリソースは、汎用であり得るか、またはいくつかの特定の構成で利用可能であり得る。例えば、および下でさらに詳細に説明されるように、データ処理リソースは、いくつかの異なる構成の仮想マシンインスタンスとして利用可能であり得る。インスタンスは、ウェブサーバ、アプリケーションサーバ、媒体サーバ、データベースサーバ、および他のタイプのアプリケーション108を含む、アプリケーションを実行するように構成され得る。データ記憶リソースは、ファイル記憶デバイス、ブロック記憶デバイス、および同類のものを含み得る。これらのリソースは、図1に関して上で説明される、オブジェクト記憶サービス126、ブロック記憶サービス128、および/または長期記憶サービス130によって提供され得る。
各タイプまたは構成のコンピューティングリソースは、多数のプロセッサ、大きいメモリ量、および/または大きい記憶容量で構成される大きいリソース、ならびにより少ないプロセッサ、より小さいメモリ量、および/またはより小さい記憶容量で構成される小さいリソース等の、異なるサイズで利用可能であり得る。仮想マシンインスタンスも、プロセッサとメモリ能力との連続する比率で利用できるようにされ得る。
分散実行環境604によって提供されるコンピューティングリソースは、一実装例において、1つ以上のデータセンター606A〜606N(本明細書では、単数の「データセンター606」として、または複数の「データセンター606」として言及される)によって使用可能にされる。データセンター606は、コンピュータシステムおよび関連付けられる構成要素を収容し、動作させるために利用される設備である。データセンター606は、一般的に、冗長電源およびバックアップ電源、通信システム、冷却システム、およびセキュリティシステムを含む。データセンター606はまた、地理的に異なる場所にも位置し得る。記憶階層100を動的に選択するための、本明細書で開示される概念および技術を実現する、データセンター606の1つの実例となる構成は、図7に関して下で説明される。
分散実行環境604の顧客および他の消費者は、WAN124を通じてデータセンター606によって提供されるコンピューティングリソースにアクセスし得る。図6ではWAN124が例示されているが、データセンター606をリモートの顧客および他のユーザに接続する、LAN118、インターネット、または当技術分野で知られている任意の他のネットワークトポロジが利用され得ることを認識されたい。また、そのようなネットワークの組み合わせが利用され得ることも理解されたい。
顧客コンピューティングシステム602は、分散実行環境604の顧客または他の消費者によって利用されるコンピューティングデバイスである。例えば、顧客コンピューティングシステム602は、サーバコンピュータ、デスクトップまたはラップトップのパーソナルコンピュータ、タブレットコンピュータ、無線電話、PDA、電子ブックリーダー、ゲームコンソール、セットトップボックス、または分散実行環境604にアクセスすることができる任意の他のコンピューティングデバイスであり得る。下でさらに詳細に説明されるように、顧客コンピューティングシステム602は、データセンター606のうちの1つに位置し、記憶階層100を動的に選択するための本明細書で開示される機能を提供するオペレーティングシステム104を実行する、サーバコンピュータ等のコンピューティングデバイス102にアクセスするために利用され得る。顧客コンピューティングシステム602は、オペレーティングシステム104およびアプリケーション108によって提供されるデスクトップを閲覧し、それと相互作用するために、RDPまたは別の適切なプロトコルとともに構成されるアプリケーションを利用し得る。このプロセスに関する追加的な詳細は、下で提供される。
図7は、記憶階層100を動的に選択するための、本明細書で開示される概念および技術を含む、分散実行環境604を実現するデータセンター606の1つの構成を例示する、コンピューティングシステム図表である。図7で示される例示的なデータセンター606は、オペレーティングシステム104および1つ以上のアプリケーション108を実行するためのコンピューティングリソースを提供するための、複数のサーバコンピュータ702A〜702F(本明細書では、単数の「サーバコンピュータ702」として、または複数の「サーバコンピュータ702」として言及される)を含む。サーバコンピュータ702は、上で説明されるコンピューティングリソースを提供するように適切に構成される、標準タワー型またはラックマウント型のサーバコンピュータであり得る。例えば、一実装例において、サーバコンピュータ702は、コンピューティングリソースのインスタンス706A〜706Qを提供するように構成される。
一実施形態において、インスタンス706A〜706Q(本明細書では、単数の「インスタンス706」として、または複数の「インスタンス706」として言及され得る)は、仮想マシンインスタンスである。当技術分野で知られているように、仮想マシンインスタンスは、物理マシンのようにプログラムを実行するマシン(すなわち、コンピュータ)のソフトウェア実装例のインスタンスである。仮想マシンインスタンスの実施例において、サーバ702のそれぞれは、インスタンスを実行することができるインスタンスマネージャ704を実行するように構成され得る。例えば、インスタンスマネージャ704は、単一のサーバ702上での複数のインスタンス706の実行を可能にするように構成される、ハイパーバイザーまたは別のタイプのプログラムであり得る。
上で論じられるように、インスタンス706のそれぞれは、記憶階層100を動的に選択するための本明細書で開示される機能、および1つ以上のアプリケーション108とともに構成されるオペレーティングシステム104を実行するように構成され得る。例えば、図7で示されるサーバコンピュータ702Fは、インスタンス706Qでオペレーティングシステム104を実行するように構成される。アプリケーション108はまた、インスタンス706Qでも実行され得る。
同じく上で簡潔に論じられるように、分散実行環境604の顧客は、適切に構成されたクライアントアプリケーションを有する顧客コンピューティングシステム602を利用して、オペレーティングシステム104に接続し得る。例えば、顧客コンピューティングシステム602は、RDPクライアントアプリケーションを利用して、インスタンス706Qに接続し、そして、オペレーティングシステム104およびアプリケーション108を利用し得る。
上で説明される様式で、顧客コンピューティングシステム602を利用して接続し、オペレーティングシステム104およびアプリケーション108を利用したとき、オペレーティングシステム104は、上で説明される機能を利用して、顧客データを記憶するための記憶階層100を動的に選択する。例えば、記憶マネージャ106は、顧客データを記憶するためのローカル記憶階層100A(すなわち、サーバコンピュータ702F)のデバイスを選択し得るか、または顧客データを記憶するためのリモートネットワーク記憶階層100Cのサービスを選択し得る。この実施例では、リモートネットワーク記憶階層100Cの種々の記憶サービスを提供するために、インスタンス706A〜706Qのうちの1つ以上が利用され得ることを認識されたい。
図7で示される例示的なデータセンター606では、サーバコンピュータ702A〜702Fを相互接続するために、適切なLAN118が利用される。LAN118はまた、図1および図6で例示されるWAN124にも接続される。図1、図6、および図7で例示されるネットワークトポロジは、かなり簡略化されていること、および本明細書で開示される種々のコンピューティングシステムを相互接続するために、はるかに多くのネットワークおよびネットワーキングデバイスが利用され得ることを認識されたい。また、データセンター606A〜606Nのそれぞれの間の、各データセンター606のサーバコンピュータ702A〜702Fのそれぞれの間の、および分散実行環境604の各顧客によって購入されるインスタンス706の間の負荷を平衡させるために、適切な負荷平衡化デバイスまたはソフトウェアモジュールも利用され得る。また、図7で説明されるデータセンター606は、単なる実例に過ぎないこと、および他の実装例が利用され得ることも認識されたい。加えて、上で説明される構成要素によって提供される機能は、ソフトウェア、ハードウェア、またはソフトウェアおよびハードウェアの組み合わせで実装され得ることを認識されたい。他の実装例が当業者に明らかになるはずである。
本開示の実施形態は、以下の付記を考慮して説明することができる。
1.コンピュータ実行可能な命令を記憶したコンピュータ読み出し可能な記憶媒体であって、該命令は、コンピュータによって実行されたときに、コンピュータに、
ローカル記憶階層、ローカルネットワーク記憶階層、またはリモートネットワーク記憶階層にオブジェクトを記憶するように構成される、オペレーティングシステムを実行させ、
オペレーティングシステムで、オブジェクトを記憶する無条件の要求を受け取らせ、
オブジェクトを記憶する要求を受け取ることに応じて、1つ以上のオブジェクト場所因子を利用して、オブジェクトをローカル記憶階層に記憶するべきか、ローカルネットワーク記憶階層に記憶するべきか、またはリモートネットワーク記憶階層に記憶するべきかを決定させ、そして、
オブジェクトを決定された記憶階層に記憶させる、コンピュータ読み出し可能な記憶媒体。
2.ローカル記憶階層は、コンピュータの1つ以上のメモリおよび大容量記憶デバイスを備える、付記1に記載のコンピュータ読み出し可能な記憶媒体。
3.ローカルネットワーク記憶階層は、ローカルエリアネットワーク(LAN)を経由してコンピュータにアクセス可能な1つ以上の記憶システムを備える、付記2に記載のコンピュータ読み出し可能な記憶媒体。
4.リモートネットワーク記憶階層は、コンピュータにアクセス可能な1つ以上の記憶サービスを備える、付記3に記載のコンピュータ読み出し可能な記憶媒体。
5.オブジェクトを記憶する要求は、最適化因子を識別するオブジェクトおよびデータを含み、オブジェクトをローカル記憶階層に記憶するべきか、ローカルネットワーク記憶階層に記憶するべきか、またはリモートネットワーク記憶階層に記憶するべきかに関する決定は、オブジェクト場所因子および最適化因子に基づく、付記4に記載のコンピュータ読み出し可能な記憶媒体。
6.オブジェクトを記憶する要求はさらに、オブジェクト場所因子の1つ以上を含む、付記5に記載のコンピュータ読み出し可能な記憶媒体。
7.オブジェクト場所因子は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、オブジェクトの使用履歴を説明するデータ、またはオブジェクトの圧縮性、のうちの1つ以上を含む、付記6に記載のコンピュータ読み出し可能な記憶媒体。
8.オブジェクト場所因子は、オブジェクトを記憶階層に記憶するコスト、オブジェクトを記憶するときまたは記憶階層からオブジェクトを取り出すときの待ち時間、または記憶階層に対する利用可能な帯域幅、のうちの1つ以上を含む、付記6に記載のコンピュータ読み出し可能な記憶媒体。
9.オペレーティングシステムは、仮想マシンインスタンスで実行している、付記6に記載のコンピュータ読み出し可能な記憶媒体。
10.仮想マシンインスタンスは、分散実行環境で実行している、付記9に記載のコンピュータ読み出し可能な記憶媒体。
11.複数の記憶階層からオブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
オペレーティングシステムで、オブジェクトを記憶する無条件の要求を受け取り、
要求を受け取ることに応じて、1つ以上のオブジェクト場所因子に基づいて、オペレーティングシステムを経由して、オブジェクトを記憶するための複数の記憶階層から1つの記憶階層を選択し、そして、
オブジェクトを選択された記憶階層に記憶させるための、コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
12.複数の記憶階層は、ローカル記憶階層、ローカルネットワーク記憶階層、およびリモートネットワーク記憶階層を備える、付記11に記載のコンピュータにより実装される方法。
13.オブジェクトを記憶するための記憶階層の選択は、オブジェクト場所因子および最適化因子に基づく、付記12に記載のコンピュータにより実装される方法。
14.オブジェクトを記憶する要求はさらに、オブジェクト場所因子の1つ以上を含む、付記13に記載のコンピュータにより実装される方法。
15.オブジェクトおよびオブジェクトを記憶するために使用される記憶階層を識別するデータを記憶することと、
オブジェクトを取り出す要求を受け取ることと、
オブジェクトを取り出す要求を受け取ることに応じて、オブジェクトを記憶するために使用される記憶階層を識別するために、記憶されたデータを利用し、識別された記憶階層からオブジェクトを取り出し、そして、オブジェクトを取り出す要求に応じて、取り出したオブジェクトを提供することと、をさらに含む、付記13に記載のコンピュータにより実装される方法。
16.オペレーティングシステムは、仮想マシンインスタンスで実行している、付記13に記載のコンピュータにより実装される方法。
17.仮想マシンインスタンスは、分散実行環境で実行している、付記16に記載のコンピュータにより実装される方法。
18.オブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
オペレーティングシステムによって、オブジェクトを記憶する無条件の要求を受け取り、
要求を受け取ることに応じて、1つ以上のオブジェクト場所因子に基づいて、オペレーティングシステムによって、オブジェクトを記憶するのに適切なローカル記憶場所またはネットワーク記憶場所を選択し、そして、
オブジェクトを選択された記憶場所に記憶させるための、コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
19.無条件の要求は、オブジェクトを記憶するための場所を指定しない要求を含む、付記18に記載のコンピュータにより実装される方法。
20.ローカル記憶場所は、オブジェクトを記憶する無条件の要求を受け取るオペレーティングシステムを実行するコンピュータの1つ以上のメモリおよび大容量記憶デバイスを備える、付記18に記載のコンピュータにより実装される方法。
21.ネットワーク記憶場所は、ウェブサービスを経由してコンピュータにアクセス可能な記憶サービスを備える、付記18に記載のコンピュータにより実装される方法。
22.オブジェクト場所因子の1つ以上は、複数のネットワーク記憶階層との通信を監視することによって発生される、付記18に記載のコンピュータにより実装される方法。
23.オブジェクト場所因子の1つ以上は、記憶サービスから取り出される、付記18に記載のコンピュータにより実装される方法。
24.オブジェクト場所因子は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、オブジェクトの使用履歴を説明するデータ、オブジェクトの圧縮性、オブジェクトを記憶場所に記憶するコスト、オブジェクトを記憶するときまたは記憶場所からオブジェクトを取り出すときの待ち時間、および記憶場所に対する利用可能な帯域幅、のうちの1つ以上を含む、付記18に記載のコンピュータにより実装される方法。
図8は、オブジェクト110を記憶するための記憶階層100を動的に選択するための上で説明されるプログラム構成要素を実行することができる、コンピュータ800の例示的なコンピュータアーキテクチャを示す。図8で示されるコンピュータアーキテクチャは、従来のサーバコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォン、ネットワーク機器、パーソナルデジタルアシスタント(「PDA」)、電子ブックリーダー、デジタル携帯電話、または他のコンピューティングデバイスを例示し、また、本明細書で提示される種々のソフトウェア構成要素を実行するために利用され得る。例えば、図8で示されるコンピュータ800は、オペレーティングシステム104および/または記憶マネージャ106を実行するために利用され得る。コンピュータ800はまた、ローカルネットワーク記憶階層100Bおよび/またはリモートネットワーク記憶階層100Cに位置するコンピューティングシステムの態様を実現するためにも利用され得る。
図8で示される実装例において、コンピュータ800は、ベースボードまたは「マザーボード」を含み、該ボードは、多数の構成要素またはデバイスがシステムバスまたは他の電気通信経路を経由して接続され得るプリント回路基板である。例示的な一実施形態では、1つ以上の中央処理ユニット(「CPU」)802がチップセット804と連動して動作する。CPU802は、コンピュータ800の動作に必要な算術演算および論理演算を行う、標準プログラマブルプロセッサであり得る。
CPU802は、1つの個別の物理的状態から次の状態に、これらの状態間を区別し、変化させるスイッチング素子の操作を通じて遷移することによって動作を行う。スイッチング素子は、全般的に、2つの2進状態のうちの1つを維持するフリップフロップ等の電子回路と、1つ以上の他のスイッチング要素の状態の論理的組み合わせに基づいて出力状態を提供する論理ゲート等の電子回路とを含み得る。これらの基本的スイッチング素子は、レジスタ、加算器−減算器、算術論理ユニット、浮動小数点ユニット、および同類のものを含む、より複雑な論理回路を作成するために組み合わせられ得る。
チップセット804は、CPU802とベースボード上の構成要素およびデバイスの残部との間のインターフェースを提供する。チップセット804は、コンピュータ800のメインメモリとして使用されるRAM806へのインターフェースを提供し得る。例えば、チップセット804はさらに、コンピュータ800を起動し、種々の構成要素とデバイスとの間で情報を転送するのを補助する基本的なルーチンを記憶するための、リードオンリーメモリ(「ROM」)808または不揮発性RAM(「NVRAM」)等の、コンピュータ読み出し可能な記憶媒体へのインターフェースを提供し得る。ROM808またはNVRAMはまた、本明細書で説明される実施形態に従って、コンピュータ800の動作に必要な他のソフトウェア構成要素も記憶し得る。
コンピュータ800は、上で説明されるローカルエリアネットワーク118等のネットワークを通して、リモートコンピューティングデバイスおよびコンピュータシステムへの論理接続を使用する、ネットワーク化された環境で動作し得る。チップセット804は、ギガビットイーサネットアダプタ等のNIC810を通して、ネットワーク接続性を提供するための機能を含み得る。NIC810は、ネットワーク118を通じて、コンピュータ800を他のコンピューティングデバイスに接続することができる。コンピュータ800には、コンピュータを他のタイプのネットワークおよびリモートコンピュータシステムに接続する複数のNIC810が存在し得ることを認識されたい。
コンピュータ800は、コンピュータの不揮発性記憶装置を提供する大容量記憶デバイス812に接続され得る。大容量記憶デバイス812は、本明細書でさらに詳細に説明されているシステムプログラム、アプリケーションプログラム、他のプログラムモジュール、およびデータを記憶し得る。大容量記憶デバイス812は、チップセット804に接続される記憶コントローラ814を通して、コンピュータ800に接続され得る。大容量記憶デバイス812は、1つ以上の物理記憶ユニットで構成され得る。記憶コントローラ814は、シリアルアタッチドSCSI(「SAS」)インターフェース、シリアルアドバンストテクノロジーアタッチメント(「SATA」)インターフェース、ファイバーチャネル(「FC」)インターフェース、またはコンピュータおよび物理記憶ユニットを物理的に接続し、それらの間でデータを転送するための他のタイプのインターフェースとインターフェースし得る。
コンピュータ800は、物理記憶ユニットの物理的状態を変換して、記憶される情報を反映することによって、大容量記憶デバイス812にデータを記憶し得る。物理的状態の具体的な変換は、この説明の異なる実装例において、種々の因子に依存し得る。そのような因子の例としては、物理記憶ユニットを実装するために使用される技術、大容量記憶デバイス812が一次記憶装置として特徴付けられるかまたは二次記憶装置として特徴付けられるか、および同類のものが挙げられ得るが、それらに限定されない。
例えば、コンピュータ800は、磁気ディスクドライブユニット内の特定の場所の磁気特性、光学記憶ユニット内の特定の場所の反射特性もしくは屈折特性、またはソリッドステート記憶ユニット内の特定のキャパシタ、トランジスタ、もしくは他の個別的な構成要素の電気特性を変更するために、記憶コントローラ814を通して命令を発行することによって、大容量記憶デバイス812に情報を記憶し得る。物理媒体の他の変換は、本説明の範囲および趣旨から逸脱しない範囲で可能であり、前述の例は、この説明を容易にするためにだけ提供される。コンピュータ800はさらに、物理記憶ユニット内の1つ以上の特定の場所の物理的状態または特性を検出することによって、大容量記憶デバイス812から情報を読み出し得る。
上で説明される大容量記憶デバイス812に加えて、コンピュータ800は、プログラムモジュール、データ構造、または他のデータ等の情報を記憶し、取り出すために、他のコンピュータ読み出し可能な記憶媒体へのアクセスを有し得る当業者は、コンピュータ読み出し可能な記憶媒体が、非一時的なデータの記憶を提供する任意の利用可能な媒体とすることができること、およびコンピュータ800によってアクセスされ得ることを認識されたい。
一例であり、限定するものではないが、コンピュータ読み出し可能な記憶媒体としては、任意の方法または技術で実現される、揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体が挙げられ得る。コンピュータ読み出し可能な記憶媒体としては、RAM、ROM、消去可能プログラマブルROM(「EPROM」)、電気的消去可能プログラマブルROM(「EEPROM」)、フラッシュメモリ、もしくは他の固体メモリ技術、コンパクトディスクROM(「CD−ROM」)、デジタル多用途ディスク(「DVD」)、高解像度DVD(「HD−DVD」)、ブルーレイ、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができる任意の他の媒体が挙げられるが、それらに限定されない。本明細書で利用される場合、コンピュータ読み出し可能な記憶媒体という用語は、それ自体の一時的な信号を含まない。
大容量記憶デバイス812は、コンピュータ800の動作を制御するために利用される、オペレーティングシステム104を記憶し得る。一実施形態によれば、オペレーティングシステムは、LINUX(登録商標)オペレーティングシステムを含む。別の実施形態によれば、オペレーティングシステムは、MICROSOFT CorporationによるWINDOWS(登録商標)SERVERオペレーティングシステムを含む。さらなる実施形態によれば、オペレーティングシステムは、UNIX(登録商標)またはSOLARISオペレーティングシステムを含み得る。また、他のオペレーティングシステムも利用され得ることを認識されたい。図8で例示され、上で説明されるように、オペレーティングシステム104はまた、上で説明される機能を行うように構成される、記憶マネージャ106も含み得る。上で述べられるように、記憶マネージャ106によって行われるような本明細書で説明される機能は、オペレーティングシステム104内の別の構成要素によって、オペレーティングシステム104以外の構成要素によって、または構成要素の組み合わせによって行われ得る。
大容量記憶デバイス812は、アプリケーション108ならびに/または上で説明される他のソフトウェア構成要素およびデータのいずれか等の、コンピュータ800によって利用される他のシステムまたはアプリケーションプログラムおよびデータを記憶し得る。大容量記憶デバイス812はまた、本明細書で具体的に識別されない他のプログラムおよびデータも記憶し得る。
一実施形態において、大容量記憶デバイス812または他のコンピュータ読み出し可能な記憶媒体は、コンピュータ実行可能な命令によって符号化され、該命令は、コンピュータ800に読み込まれたときに、コンピュータを汎用コンピューティングシステムから、本明細書で説明される実施形態を実現することができる特殊用途コンピュータに変換する。これらのコンピュータ実行可能な命令は、上で説明されるように、CPU802がどのように状態間を遷移するのかを指定することによって、コンピュータ800を変換する。一実施形態によれば、コンピュータ800は、コンピュータ実行可能な命令を記憶するコンピュータ読み出し可能な記憶媒体へのアクセスを有し、該命令は、コンピュータ800によって実行されたときに、それぞれ図3、図4、および図5に関して上で説明される、ルーチン300、400、および500を行う。
コンピュータ800はまた、キーボード、マウス、タッチパッド、タッチ画面、電子スタイラス、または他のタイプの入力デバイス等の数多くの入力デバイスから入力を受け取り、処理するための、入力/出力コントローラ818も含み得る。同様に、入力/出力コントローラ818は、コンピュータモニタ、フラットパネルディスプレイ、デジタルプロジェクタ、プリンタ、プロッタ、または他のタイプの出力デバイス等のディスプレイに出力を提供し得る。コンピュータ800は、図8で示される構成要素の全てを含まない場合があること、図8で明示的に示されない他の構成要素を含み得ること、または図8で示されるものと完全に異なるアーキテクチャを利用し得ることが認識されるであろう。
上記に基づいて、記憶階層の動的選択のための技術が本明細書で提示されたことを認識されたい。本明細書で提示される主題は、コンピュータの構造的特徴、方法論的な行為、およびコンピュータ読み出し可能な媒体に特有の言い回しで説明してきたが、添付の特許請求の範囲で定義される本発明は、必ずしも、本明細書で説明される具体的な特徴、行為、または媒体に限定されるものではないことを理解されたい。むしろ、具体的な特徴、行為、媒体は、特許請求の範囲を実現する例示的な形態として開示される。
上で説明される主題は、単なる例示の目的で提供されるものであり、限定するものとして解釈するべきではない。さらに、特許請求される主題は、本開示の任意の部分に記載される任意のまたは全ての不利な点を解決する実装例に限定されない。例示され、説明される例示的な実施形態および応用例に従うことなく、また、以下の特許請求の範囲に記載される本発明の真の趣旨および範囲から逸脱することなく、本明細書で説明される主題に対して様々な修正および変更が行われ得る。

Claims (14)

  1. 複数の記憶階層からオブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
    コンピューティングデバイス上で動作するオペレーティングシステムにおいて、オブジェクトを記憶する無条件の要求を受け取り、前記無条件の要求は、前記オブジェクトが記憶されるべき場所を特定せず、前記無条件の要求は、前記コンピューティングデバイス上で動作するアプリケーションから受け取られ、かつ、記憶される前記オブジェクトおよび最適化因子を含み、
    前記要求を受け取ることに応じて、前記最適化因子およびオブジェクト場所因子に少なくとも部分的に基づいて、前記オペレーティングシステムを経由して、前記オブジェクトを記憶するための複数の記憶階層から1つの記憶階層を選択し、前記複数の記憶階層は、前記コンピューティングデバイスのシステムメモリおよびシステムキャッシュのうちの1つ以上を備えるローカル記憶階層と、ローカルネットワーク記憶階層と、リモートネットワーク記憶階層と、を備え、前記オブジェクト場所因子は、前記オブジェクトの使用履歴パターンおよび前記オブジェクトの1つ以上の特性、または前記複数の前記記憶階層の特性を監視することによって生成される前記オブジェクトの前記使用履歴パターンを含み、
    前記オブジェクトを前記選択された記憶階層に記憶させるための、
    コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
  2. 前記最適化因子は、前記記憶階層を選択するときに前記オブジェクトを記憶するコストが最小化されることを示すデータを有する、請求項1に記載のコンピュータにより実装される方法。
  3. 前記オブジェクトを記憶する前記要求はさらに、前記オブジェクト場所因子をさらに含む、請求項2に記載のコンピュータにより実装される方法。
  4. 前記オブジェクトおよび前記オブジェクトを記憶するために使用される前記記憶階層を識別するデータを記憶することと、
    前記オブジェクトを取り出す要求を受け取ることと、
    前記オブジェクトを取り出す前記要求を受け取ることに応じて、前記オブジェクトを記憶するために使用される前記記憶階層を識別するために、前記記憶されたデータを利用し、前記識別された記憶階層から前記オブジェクトを取り出し、そして、前記オブジェクトを取り出す前記要求に応じて、前記取り出したオブジェクトを提供することと、をさらに含む、請求項2に記載のコンピュータにより実装される方法。
  5. 前記オペレーティングシステムは、仮想マシンインスタンスで実行している、請求項2に記載のコンピュータにより実装される方法。
  6. 前記仮想マシンインスタンスは、分散実行環境で実行している、請求項5に記載のコンピュータにより実装される方法。
  7. 記オブジェクト場所因子の各々は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、前記オブジェクトの圧縮性、前記オブジェクトを記憶階層に記憶するコスト、前記オブジェクトを記憶するときまたは記憶階層から前記オブジェクトを取り出すときの待ち時間、または記憶階層に対する利用可能な帯域幅、のうちの1つ以上をさらに含む、請求項1に記載のコンピュータにより実装される方法。
  8. オブジェクトを記憶するための記憶階層を動的に選択するためのコンピュータにより実装される方法であって、
    コンピューティングデバイス上で動作するオペレーティングシステムによって、オブジェクトを記憶する無条件の要求を受け取り、前記無条件の要求は、前記オブジェクトが記憶されるべき場所を特定せず、前記無条件の要求は、前記コンピューティングデバイス上で動作するアプリケーションから受け取られ、かつ、記憶される前記オブジェクトおよび最適化因子を含み、
    前記要求を受け取ることに応じて、前記最適化因子および1つ以上のオブジェクト場所因子に少なくとも部分的に基づいて、前記オペレーティングシステムによって、前記オブジェクトを記憶するのに適切なローカル記憶場所またはネットワーク記憶場所を選択し、前記ローカル記憶場所は、前記コンピューティングデバイスのシステムメモリおよびシステムキャッシュのうちの1つ以上を備え、前記1つ以上のオブジェクト場所因子は、前記オブジェクトの特性の1つ以上または前記記憶階層の特性を備える、
    前記オブジェクトを前記選択された記憶場所に記憶させるための、
    コンピュータにより実装される動作を行うことを含む、コンピュータにより実装される方法。
  9. 前記無条件の要求は、前記オブジェクトを記憶するための場所を指定しない要求を含む、請求項8に記載のコンピュータにより実装される方法。
  10. 前記オブジェクトの使用履歴パターンを監視して、前記オブジェクトの前記使用履歴パターンを前記1つ以上のオブジェクト場所因子のうちの1つとして利用することをさらに含む、請求項8に記載のコンピュータにより実装される方法。
  11. 前記ネットワーク記憶場所は、ウェブサービスを経由して前記コンピュータにアクセス可能な記憶サービスを備える、請求項8に記載のコンピュータにより実装される方法。
  12. 前記オブジェクト場所因子の1つ以上は、前記ネットワーク記憶場所との通信を監視することによって生成される、請求項8に記載のコンピュータにより実装される方法。
  13. 前記オブジェクト場所因子の1つ以上は、前記記憶サービスから取り出される、請求項11に記載のコンピュータにより実装される方法。
  14. 前記1つ以上のオブジェクト場所因子は、オブジェクトタイプ、オブジェクトサイズ、オブジェクトファイル属性、オブジェクトセキュリティ要件、オブジェクト共有要件、前記オブジェクトの圧縮性、前記オブジェクトを記憶場所に記憶するコスト、前記オブジェクトを記憶するときまたは記憶場所から前記オブジェクトを取り出すときの待ち時間、および記憶場所に対する利用可能な帯域幅、のうちの1つ以上をさらに含む、請求項8に記載のコンピュータにより実装される方法。
JP2017027164A 2012-11-13 2017-02-16 記憶階層の動的選択 Active JP6423468B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/675,718 US9460099B2 (en) 2012-11-13 2012-11-13 Dynamic selection of storage tiers
US13/675,718 2012-11-13

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015542011A Division JP2016500183A (ja) 2012-11-13 2013-11-12 記憶階層の動的選択

Publications (2)

Publication Number Publication Date
JP2017130211A JP2017130211A (ja) 2017-07-27
JP6423468B2 true JP6423468B2 (ja) 2018-11-14

Family

ID=50682866

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015542011A Pending JP2016500183A (ja) 2012-11-13 2013-11-12 記憶階層の動的選択
JP2017027164A Active JP6423468B2 (ja) 2012-11-13 2017-02-16 記憶階層の動的選択

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2015542011A Pending JP2016500183A (ja) 2012-11-13 2013-11-12 記憶階層の動的選択

Country Status (11)

Country Link
US (2) US9460099B2 (ja)
EP (1) EP2920701B1 (ja)
JP (2) JP2016500183A (ja)
CN (1) CN104781795B (ja)
AU (1) AU2013345015B2 (ja)
BR (1) BR112015010723B1 (ja)
CA (1) CA2890720C (ja)
IN (1) IN2015DN03793A (ja)
RU (1) RU2616168C2 (ja)
SG (1) SG11201503604SA (ja)
WO (1) WO2014078303A2 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9460099B2 (en) 2012-11-13 2016-10-04 Amazon Technologies, Inc. Dynamic selection of storage tiers
US10120891B2 (en) * 2013-02-11 2018-11-06 International Business Machines Corporation Data placement optimization
US10417284B2 (en) * 2013-03-14 2019-09-17 Microsoft Technology Licensing, Llc Available, scalable, and tunable document-oriented storage services
EP2976702A1 (en) * 2013-03-18 2016-01-27 GE Intelligent Platforms, Inc. Apparatus and method for optimizing time series data storage based upon prioritization
US10031916B2 (en) * 2014-06-18 2018-07-24 Dell Products L.P. Methods and systems for virtualizing and managing cloud storage sources
US10686905B1 (en) * 2014-09-10 2020-06-16 Amazon Technologies, Inc. Network-aware caching
US10621148B1 (en) * 2015-06-30 2020-04-14 EMC IP Holding Company LLC Maintaining multiple object stores in a distributed file system
US10133759B1 (en) * 2015-09-15 2018-11-20 Amazon Technologies, Inc. System for determining storage or output of data objects
US10223368B2 (en) 2015-12-17 2019-03-05 International Business Machines Corporation Predictive object tiering based on object metadata
US10365996B2 (en) * 2016-03-24 2019-07-30 Advanced Micro Devices, Inc. Performance-aware and reliability-aware data placement for n-level heterogeneous memory systems
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices
US10795760B2 (en) * 2017-03-20 2020-10-06 Samsung Electronics Co., Ltd. Key value SSD
US11265585B2 (en) 2017-09-15 2022-03-01 T-Mobile Usa, Inc. Tiered digital content recording
US10866750B2 (en) 2018-01-10 2020-12-15 EMC IP Holding Company LLC System and method for predicting data storage characteristics
US10671311B1 (en) 2018-01-10 2020-06-02 EMC IP Holding Company LLC System and method for dynamic data migration
US10757188B1 (en) * 2018-01-10 2020-08-25 EMC IP Holding Company LLC System and method for efficient data access for restores
US11082492B2 (en) 2018-01-10 2021-08-03 EMC IP Holding Company LLC System and method for dynamic backup sessions
US10542087B1 (en) 2018-01-10 2020-01-21 EMC IP Holding Company LLC System and method for managing storage tier migration
US10834190B2 (en) 2018-01-18 2020-11-10 Portworx, Inc. Provisioning of clustered containerized applications
US10572349B2 (en) 2018-04-27 2020-02-25 EMC IP Holding Company LLC System and method for backup in a virtualized environment
US10503428B2 (en) 2018-04-27 2019-12-10 EMC IP Holding Company LLC System and method for concurrent multipoint backup
US10698719B2 (en) 2018-04-27 2020-06-30 EMC IP Holding Company LLC System and method for virtual machine restoration
TWI689186B (zh) * 2019-04-09 2020-03-21 聚騰科技股份有限公司 資料傳輸及接收方法
US11269517B2 (en) * 2019-04-26 2022-03-08 Hewlett Packard Enterprise Development Lp Cost-aware storage allocation of deduplicated objects
US11734093B2 (en) * 2020-06-23 2023-08-22 Samsung Electronics Co., Ltd. Storage device block-level failure prediction-based data placement
US11848990B2 (en) * 2021-10-15 2023-12-19 Siden, Inc. Method and system for distributing and storing content using local clouds and network clouds

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111060B2 (en) * 2000-03-14 2006-09-19 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, a secure, cost-effective, web-enabled, integrated virtual office environment remotely accessible through a network-connected web browser
JP2002073383A (ja) 2000-08-31 2002-03-12 Matsushita Electric Ind Co Ltd 情報サービスの方法
US6839815B2 (en) * 2001-05-07 2005-01-04 Hitachi, Ltd. System and method for storage on demand service in a global SAN environment
JP4144727B2 (ja) * 2001-07-02 2008-09-03 株式会社日立製作所 情報処理システム、記憶領域提供方法、およびデータ保持管理装置
US7249227B1 (en) * 2003-12-29 2007-07-24 Network Appliance, Inc. System and method for zero copy block protocol write operations
PL1799230T3 (pl) * 2004-08-27 2013-05-31 Cyclacel Ltd Purynowe i pirymidynowe inhibitory CDK i ich zastosowanie do leczenia chorób autoimmunologicznych
KR101311123B1 (ko) 2005-09-09 2013-09-25 마이크로소프트 코포레이션 문서의 xml 데이터 저장소에 대한 프로그램가능성
US7657550B2 (en) 2005-11-28 2010-02-02 Commvault Systems, Inc. User interfaces and methods for managing data in a metabase
JP4749255B2 (ja) * 2006-07-03 2011-08-17 株式会社日立製作所 複数種類の記憶デバイスを備えたストレージシステムの制御装置
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US7546486B2 (en) 2006-08-28 2009-06-09 Bycast Inc. Scalable distributed object management in a distributed fixed content storage system
US10394849B2 (en) 2006-09-18 2019-08-27 EMC IP Holding Company LLC Cascaded discovery of information environment
US20080140944A1 (en) * 2006-12-12 2008-06-12 Hitachi, Ltd. Method and apparatus for storage resource management in plural data centers
US8001327B2 (en) 2007-01-19 2011-08-16 Hitachi, Ltd. Method and apparatus for managing placement of data in a tiered storage system
JP2008210094A (ja) * 2007-02-26 2008-09-11 Yamaha Corp キャッシュ制御装置
US8161240B2 (en) * 2007-10-10 2012-04-17 Apple Inc. Cache management
US8170990B2 (en) 2008-05-30 2012-05-01 Hitachi, Ltd. Integrated remote replication in hierarchical storage systems
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8442983B2 (en) * 2009-12-31 2013-05-14 Commvault Systems, Inc. Asynchronous methods of data classification using change journals and other data structures
US8230192B2 (en) 2010-02-05 2012-07-24 Lsi Corporation System and method for QoS-based storage tiering and migration technique
US8719362B2 (en) * 2010-09-09 2014-05-06 Riverbed Technology, Inc. Tiered storage interface
US8671263B2 (en) 2011-02-03 2014-03-11 Lsi Corporation Implementing optimal storage tier configurations for a workload in a dynamic storage tiering system
WO2012127988A1 (ja) 2011-03-18 2012-09-27 日本電気株式会社 情報処理装置、分散ファイルシステム、クライアント装置、情報処理方法、および、コンピュータ・プログラム
US8578096B2 (en) 2011-04-08 2013-11-05 Symantec Corporation Policy for storing data objects in a multi-tier storage system
US9460099B2 (en) 2012-11-13 2016-10-04 Amazon Technologies, Inc. Dynamic selection of storage tiers

Also Published As

Publication number Publication date
US20140136782A1 (en) 2014-05-15
AU2013345015A1 (en) 2015-05-21
EP2920701A2 (en) 2015-09-23
JP2016500183A (ja) 2016-01-07
SG11201503604SA (en) 2015-06-29
EP2920701B1 (en) 2020-07-22
WO2014078303A3 (en) 2014-07-10
RU2015120595A (ru) 2017-01-10
CA2890720C (en) 2018-09-25
CN104781795A (zh) 2015-07-15
CA2890720A1 (en) 2014-05-22
BR112015010723B1 (pt) 2021-11-23
CN104781795B (zh) 2018-03-16
WO2014078303A2 (en) 2014-05-22
EP2920701A4 (en) 2016-07-20
US10642491B2 (en) 2020-05-05
US9460099B2 (en) 2016-10-04
AU2013345015B2 (en) 2016-09-08
US20180314429A1 (en) 2018-11-01
IN2015DN03793A (ja) 2015-10-02
RU2616168C2 (ru) 2017-04-12
BR112015010723A2 (pt) 2017-07-11
JP2017130211A (ja) 2017-07-27

Similar Documents

Publication Publication Date Title
JP6423468B2 (ja) 記憶階層の動的選択
US9836492B1 (en) Variable sized partitioning for distributed hash tables
AU2014262679B2 (en) User-influenced placement of virtual machine instances
RU2637434C1 (ru) Способ, устройство терминала и устройство сервера для хранения копий данных
US11614977B2 (en) Optimizing clustered applications in a clustered infrastructure
US9448824B1 (en) Capacity availability aware auto scaling
US20140337834A1 (en) User-Influenced Placement of Virtual Machine Instances
US11030169B1 (en) Data re-sharding
US10616134B1 (en) Prioritizing resource hosts for resource placement
US10768998B2 (en) Workload management with data access awareness in a computing cluster
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement
US10977091B2 (en) Workload management with data access awareness using an ordered list of hosts in a computing cluster
US10250455B1 (en) Deployment and management of tenant services
US10326826B1 (en) Migrating an on premises workload to a web services platform
US10523756B1 (en) Network service for identifying infrequently accessed data in a data stream
US10594620B1 (en) Bit vector analysis for resource placement in a distributed system
US11336519B1 (en) Evaluating placement configurations for distributed resource placement
US10097431B1 (en) Routing to tenant services utilizing a service directory
JP2021513137A (ja) 階層型ストレージ管理システムにおけるデータ・マイグレーション
US20230091753A1 (en) Systems and methods for data processing unit aware workload migration in a virtualized datacenter environment
US10721181B1 (en) Network locality-based throttling for automated resource migration
US11157322B2 (en) Hyper-converged infrastructure (HCI) ephemeral workload/data provisioning system
US10310889B1 (en) Data statistics service
US12045664B1 (en) Classifying workloads for burstable compute platforms
US10761891B2 (en) Workload management with data access awareness by aggregating file locality information in a computing cluster

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180518

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180918

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181018

R150 Certificate of patent or registration of utility model

Ref document number: 6423468

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250