【手続補正書】
【提出日】平成29年3月13日(2017.3.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【発明の名称】データを柔軟に配置するための多層記憶管理
【関連出願の相互参照】
【０００１】
本願は、米国特許法第１１９条の下で２０１３年３月１５日に出願された仮特許出願第６１／７９９，５５０号の利益を主張するものであり、この仮特許出願をあらゆる目的において、あたかも本明細書に全て記載されているかのように参照により本明細書に援用する。本願は、２０１３年３月１５日に出願された米国特許出願第１３／８３７，３７５号及び２０１３年３月１５日に出願された米国特許出願第１３／８３７，４５６号に関連し、これらをあらゆる目的において、あたかも本明細書に全て記載されているかのように参照により本明細書に援用する。
【技術分野】
【０００２】
本開示は、概して、異なる記憶ユニットの部分を構成する仮想記憶オブジェクトに記憶されるデータを管理する技法に関する。
【背景技術】
【０００３】
このセクションに記載される手法は、追求された可能性があるが、必ずしも従来から考え出されたか、又は追求されてきた手法ではない。したがって、本明細書に別段のことが示される場合を除き、このセクションに記載される手法は、本願での特許請求の範囲に対する従来技術ではなく、このセクションに含まれることにより従来技術であることを認めるものではない。
【０００４】
データ処理では、データ記憶システムは、データ記憶装置にデータブロックとして記憶されるユーザ又はアプリケーションデータへのアクセスを管理し得る。データ記憶システムは、ユーザ又はアプリケーションデータの検索、記憶、又は更新、他の非ロケーションメタデータのユーザ又はアプリケーションデータへの適宜関連付け、ユーザ又はアプリケーションデータのクローン化、及び特定の時間でのユーザ又はアプリケーションデータの状態を捕捉するシステムスナップショットの一部としてなどの様々な目的で、ユーザ又はアプリケーションデータのロケーションを識別するロケーションメタデータを保持する。従来のデータ記憶システムは、ユーザ若しくはアプリケーションデータ又は他の非ロケーションメタデータの物理的ブロックアドレスへのポインタを記憶することにより、ユーザ若しくはアプリケーションデータのロケーション又は他の非ロケーションメタデータを識別し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
幾つかのデータ記憶システムでは、データ又はメタデータは頻繁に、異なる記憶ユニット等の新しいロケーションに配置換えされ得る。例えば、仮想データセンタでのユーザ又はアプリケーションデータの記憶を管理する記憶アドミニストレータは、性能のサービスレベル管理、データ可用性、システムメンテナンス、エラーリカバリ、故障リカバリ、コスト最適化、負荷平衡、及び容量管理に関連するが、これらに限定されない多くの可能な理由により、１つの記憶ユニットに記憶される特定のデータ又はメタデータを、仮想データセンタの異なる記憶ユニットに配置換えする必要があり得る。さらに、クラウド計算及び仮想データセンタ環境に記憶されるデータ及びメタデータを管理する記憶コントローラが、更なる記憶ユニットを容易に取得することが可能であり得、したがって、そのような環境で更に頻繁にデータ及びメタデータを移動し得る。それらの機能を適宜提供するために、データ記憶システムレコードは、データの最新ロケーションを反映する必要がある。正確なデータロケーションレコードの保持は、データロケーションが頻繁に変わるシステムでは面倒な作業であり得る。データ記憶システムでのデータロケーション変更の負担を軽減する新しい技法が必要とされている。
【課題を解決するための手段】
【０００６】
添付の特許請求の範囲は、本発明の概要としての役割を果たし得る。
【図面の簡単な説明】
【０００７】
【図１】一実施形態の実施に使用し得るネットワーク化されたコンピュータシステム構成の一例を示す。
【図２】図１のシステムの状況例を示す。
【図３】仮想記憶オブジェクト及び記憶ユニット部分でのユーザ又はアプリケーションデータの分布例を示す。
【図４】ネットワーク化されたコンピュータシステムの一例での記憶ユニットアドミニストレータの一例の構成要素を示す。
【図５】クライアントデータの検索中にエクステント−オブジェクトマッピング及びオブジェクト部分ディレクトリを利用するプロセス例を示す。
【図６】特定のデータを配置換えする際にロケーション情報を更新するプロセス例を示す。
【図７】一実施形態を実施し得るコンピュータシステムを示す。
【発明を実施するための形態】
【０００８】
データの柔軟な配置のための多層記憶管理について記載する。以下の説明では、説明のために、多くの特定の詳細が、本発明の完全な理解を提供するために記される。しかし、これらの特定の詳細なしで本発明が実施可能なことが当業者には明らかであろう。他の場合、周知の構造及び装置は、本発明を不必要に曖昧にしないように、ブロック図の形態で示されている。
【０００９】
実施形態は、以下の概要に従って本明細書に記載される。
【００１０】
１．０  概説
２．０  構造及び機能の概説
２．１  クライアントデータの検索中のエクステント−オブジェクトマッピング及びオブジェクト部分ディレクトリの利用
２．２  クライアントデータの配置換えの際のエクステント−オブジェクトマッピング又はオブジェクト部分ディレクトリの更新
３．０  実施のメカニズム  −  ハードウェア概説
４．０  拡張及び代替
【００１１】
１．０  概説
実施形態は、一般に、データが記憶される物理的ロケーションを識別せずに、データが記憶される仮想ロケーションに基づいて記憶データへの参照を記憶し管理することが可能な仮想データ記憶システムに適用可能な革新的なデータ記憶プロセスを提供する。
【００１２】
一態様では、一実施形態は、コンピュータを使用して、データを記憶する要求を受信する工程、仮想化コンピュータシステムのデータ記憶システムにデータを記憶させる工程、データが記憶される任意の物理的ロケーションを識別せずに、データが記憶される１つ又は複数の仮想ロケーションを識別するデータロケーションレコードを記憶する工程を含む方法を提供する。一特徴では、方法は、オブジェクトアドミニストレータに、データを記憶する命令を送信する工程、命令の送信に応答して、データが記憶される任意の物理的ロケーションを識別せずに、データが記憶される仮想ロケーションを識別する１つ又は複数の仮想ロケーション識別子を受信する工程を含む。
【００１３】
別の実施形態では、方法は、データ記憶システムにおいて、データに対する要求を受信する工程、データが記憶される仮想ロケーションを識別する工程、データが記憶される仮想ロケーションと、オブジェクトアドミニストレータへの仮想ロケーションの１つ又は複数のマッピングとに基づいて、データの物理的記憶に関連付けられたオブジェクトアドミニストレータを特定する工程、オブジェクトアドミニストレータにおいて、１つ又は複数のマッピングに基づいて、仮想ロケーションに対応する仮想化コンピュータシステムのデータ記憶システムでの１つ又は複数の物理的ロケーションを特定する工程、仮想化コンピュータシステムのデータ記憶システムの１つ又は複数の物理的ロケーションからデータを検索する工程を含む。一特徴において、方法は、オブジェクトアドミニストレータにおいて、データが記憶される少なくとも１つの論理エクステントを識別するデータに対する要求を受信する工程、要求において識別された論理エクステントに属する１つ又は複数のオブジェクトを特定する工程、１つ又は複数のオブジェクトの各オブジェクトについて、オブジェクトに属する１つ又は複数の記憶ユニット部分を特定する工程、１つ又は複数のオブジェクトの各オブジェクトに対応する１つ又は複数の記憶ユニット部分からデータを検索する工程を含む。
【００１４】
別の実施形態では、方法は、記憶アドミニストレータにおいて、仮想化コンピュータシステムのデータ記憶システム内の１つ又は複数の新しい物理的ロケーションに特定のデータの変換又は移動を必要とする条件が生じたと判断することであって、特定のデータは特定の仮想ロケーションに記憶される、工程、判断に応答して、特定のデータに対応するデータを１つ又は複数の新しい物理的ロケーションに記憶する工程、特定の仮想ロケーションに対応するマッピングを、特定の仮想ロケーションへのいずれの参照も更新せずに、特定の仮想ロケーションが１つ又は複数の前の物理的ロケーションの代わりに１つ又は複数の新しい物理的ロケーションに対応することを示すように、更新する工程を含む。
【００１５】
データ記憶システムでは、システムコントローラは、複数の記憶ユニットに記憶されるユーザ又はアプリケーションデータへのアクセスを管理し得る。データ記憶システムは、別のコンピュータシステム（ローカルファイルシステム等）、単一のコンピュータシステムで実施される独立型記憶システム、又はコンピュータシステムのネットワークで実施される分散記憶システムの部分であり得る。データ記憶システムアドミニストレータは、ユーザ又はアプリケーションデータロケーションを識別するデータロケーションレコードを記憶し得る。データロケーションレコードは、データが記憶される物理的ブロックアドレスを識別せずに、対応するデータが属する論理エクステントを識別することにより、ロケーションを識別し得る。オブジェクトアドミニストレータは、仮想記憶オブジェクトへのエクステントのマッピングと、各仮想オブジェクトについて、仮想記憶オブジェクトを集合的に構成する特定の記憶ユニット部分のディレクトリとを別個に保持し得る。そのようなシステムでは、データ記憶システムレコードを更新する負担は、ユーザ又はアプリケーションデータが異なる仮想記憶オブジェクトに移動する場合であっても、又はユーザ若しくはアプリケーションデータを含む仮想記憶オブジェクトに属する１つ又は複数の記憶ユニットが置換、削除、又は追加される場合でも最小であり得る。データ記憶システムアドミニストレータは、移動されたデータを含むエクステントが変更されないため、いかなるレコードも更新する必要がなくてよい。オブジェクトアドミニストレータは単純に、エクステントが異なる仮想記憶オブジェクトに移動する場合、仮想記憶オブジェクトへのエクステントのマッピングを更新し得る。仮想記憶オブジェクトに属する特定の記憶ユニット部分が、削除、置換、又は追加される場合、オブジェクトストアは、特定の記憶ユニット部分が削除、置換、又は追加されたことを示すように、仮想記憶オブジェクトディレクトリを更新し得る。
【００１６】
幾つかの実施形態では、データが変形される場合、記憶ユニットアドミニストレータは、変形データを記憶するために、新しい仮想記憶オブジェクト及び／又は記憶ユニット部分をインスタント化する。例えば、記憶データは、暗号又は圧縮アルゴリズムの変更に従って変更する必要があり得る。そのような場合、オブジェクトアドミニストレータは、変形データを新しい仮想オブジェクトに書き込み、新しい仮想記憶オブジェクトが特定の論理エクステントに属することを示すように、仮想記憶オブジェクトへのエクステントのマッピングを更新し得る。別の実施形態では、オブジェクトアドミニストレータは、変形データを新しい記憶ユニット部分に書き込み得、新しい記憶ユニット部分が特定の仮想記憶オブジェクトに属することを示すように、記憶ユニット部分への仮想記憶オブジェクトのマッピングを更新し得る。
【００１７】
変形は、同じ論理エクステントの異なる仮想記憶オブジェクト又は同じ仮想記憶オブジェクトの異なる記憶ユニット部分に同時に適用し得る。幾つかの実施形態では、変形は、単一のＩ／Ｏ（入力／出力）動作で、同じ仮想記憶オブジェクトの同じ論理エクステント又は異なる記憶ユニット部分の異なる仮想記憶オブジェクトに同時に適用し得る。さらに、異なるタイプの変形を異なる仮想記憶オブジェクト又は異なる記憶ユニット部分に適用し得る。すなわち、同じＩ／Ｏ動作で、第１の記憶ユニット内のデータを圧縮し得、第２の記憶ユニット内のデータを暗号化し得る。別の実施形態では、同じデータに対して、同じＩ／Ｏ動作で圧縮及び暗号化の両方を行い得る。
【００１８】
一実施形態では、データ記憶システムスナップショット及び特定のロケーションとのメタデータの関連付けを含み得る、データ記憶システムによって保持されるデータは、ロケーションが、データが異なるオブジェクトストア又は記憶ユニットに配置換えされる際であっても変更されないエクステント識別子を使用して識別されるため、変更する必要がない。したがって、ユーザ又はアプリケーションデータロケーション情報への更新は、関連するマッピングへの比較的単純な更新を必要とし得、オブジェクトアドミニストレータによって処理し得、それにより、データ記憶システムを頻繁で負担が掛かる更新から解放し得る。
【００１９】
仮想ロケーションアドミニストレータ及びオブジェクトアドミニストレータは、記憶ユニットアドミニストレータの構成要素であり得、記憶ユニットアドミニストレータは、クライアント装置の代理として複数の異なる記憶ユニットを管理する。あたかも本明細書に全て記載されているかのように参照により本明細書に援用される米国特許出願第１３／８３７，３７５号明細書及び同第１３／８３７，４５６号明細書に更に詳細に記載されるように、記憶ユニットアドミニストレータは、１つ又は複数の記憶ユニットの性能が不適切であるとの判断への応答又は幾つか若しくは全てのクライアントデータに対するより高い性能へのクライアントからの要求の受信への応答を含む複数の理由により、データを移動し得る。
【００２０】
一実施形態では、記憶ユニットアドミニストレータは、特定のデータを新しいロケーションに移すことを要求する条件が発生したと判断し、特定のデータが特定の仮想記憶オブジェクトに記憶される特定の論理エクステントに属する。判断に応答して、記憶ユニットアドミニストレータは、特定のデータを新しいロケーションに記憶させる。さらに、判断に応答して、記憶ユニットアドミニストレータは、更新前は特定の仮想記憶オブジェクトが特定の論理エクステントに属する情報を記憶することを示していた１つ又は複数のエクステント−オブジェクトマッピングを、異なる仮想記憶オブジェクトが特定の論理エクステント又はオブジェクト−記憶ユニットマッピングに属する情報を記憶するように更新し、更新前は特定の組の記憶ユニット部分が特定の仮想記憶オブジェクトに属することを示していた特定の論理エクステント又はオブジェクト−記憶ユニットマッピングを、異なる組の記憶ユニット部分が特定の仮想記憶オブジェクトに属することを代わりに示すように更新する。
【００２１】
記憶ユニットアドミニストレータは、特定のデータの仮想ロケーションを識別する、ファイルシステムアドミニストレータレイヤに記憶されるデータロケーション参照を変更せずに、特定のデータの物理的ロケーションに変更させる。
【００２２】
２．０  構造及び機能の概説
図１は、一実施形態を実施するために使用し得るネットワーク化されたコンピュータシステム構成の一例を示す。明確な例を示すために、図１、図２、図３、図４は、一実施形態で使用し得る様々な機能要素のうちの代表的な幾つかを示すが、他の実施形態は、そのような機能要素のうちの任意の数の機能要素を使用し得、したがって、図１、図２、図３、図４は、単に可能な実装形態例として意図される。
【００２３】
クライアントマシン１００は、クライアントマシンからリモートの記憶ユニットから検索されたデータを処理し得るデータ処理ユニット１０２と、クライアントマシンからリモートの記憶ユニットに送信されるデータを生成し得るデータ生成ユニット１０４とを備える。
【００２４】
クライアントマシン１００は、記憶ユニットアドミニストレータ１０６と通信可能に結合し得る。記憶ユニットアドミニストレータ１０６は、１つ又は複数の記憶ユニットマネージャと通信可能に結合し得、記憶ユニットマネージャはそれぞれ、１つ又は複数の記憶ユニットに通信可能に結合し得る。そのようなシステムは、クライアントマシン１００が、仮想データセンタにおける記憶ユニットにデータを記憶するか、又はデータを検索する要求等の記憶ユニット利用要求を送信する場合に利用し得る。
【００２５】
記憶ユニットアドミニストレータ１０６は、記憶ユニット１２４、１２８、１３６、１４０への要求を管理するように構成される１つ又は複数のコンピュータ、プログラム、プロセス、又は他の論理要素を表す。記憶ユニット１２４、１２８、１３６、１４０は、１つ又は複数のクラウドサービスプロバイダ、データベース記憶ユニット、ＣＳＰ（クラウドサービスプロバイダ）によって提供される計算記憶ユニット、又は他の記憶ユニットによってホストされる仮想記憶ユニットであり得る。記憶ユニット１２４、１２８、１３６、１４０はそれぞれ、異なる物理的ホストマシンに配置し得る。記憶ユニット１２４、１２８、１３６、１４０は、オブジェクト、ブロック、又はエクステントを含む任意の様々な異なる記憶ユニットであり得る。
【００２６】
記憶ユニットアドミニストレータ１０６は、記憶ユニット利用ポリシーマッピング１０８と、記憶ユニット利用ポリシー調整命令１１０と、記憶ユニット性能モニタ１１２と、記憶ポリシーマネージャ１１８と、記憶ユニット利用要求アドミニストレータ１１４と、記憶ユニット利用ポリシー更新器１１６とを備える。記憶ユニット利用ポリシーマッピング１０８は、記憶ユニット利用ポリシーとサービスレベルとの関連付けを識別し得る。
【００２７】
記憶ユニット利用ポリシー調整命令１１０は、記憶ユニット利用ポリシーマッピング１０８を変更する命令を含み得る。記憶ユニット利用要求アドミニストレータ１１４は、入力データ動作要求を適切な記憶ユニットマネージャ又は記憶ユニットに向け得る。記憶ユニット性能モニタ１１２は、１つ又は複数の記憶ユニットの性能を監視し得る。記憶ユニット利用ポリシー更新器１１６は、記憶ユニット利用ポリシー調整命令１１０に従い、記憶ユニット性能の分析に基づいて、記憶ユニット利用ポリシーマッピング１０８を更新し得る。記憶ポリシーマネージャ１１８は、特定された性能情報に基づいて、新しい記憶ポリシーに従ってクライアントマシン１００のデータを記憶させ得る。
【００２８】
記憶ユニットアドミニストレータ１０６は、記憶ユニットマネージャ１２０及び１３２等の１つ又は記憶ユニットマネージャに通信可能に結合し得る。各記憶ユニットマネージャ１２０、１３２は、記憶ユニット１２４、１２８、１３６、１４０等の１つ又は複数の記憶ユニットに通信可能に結合し得る。一実施形態では、記憶ユニットアドミニストレータ１０６は、記憶ユニットマネージャを通して通信するのではなく、記憶ユニット１２４、１２８、１３６、１４０と直接通信する。
【００２９】
幾つかの実施形態では、記憶ユニットマネージャ１２０及び１３２は、記憶ユニットアクセスユニットを備える。記憶ユニットアクセスユニット１２２は、記憶ユニット１２４、１２８に情報を送信するか、又は記憶ユニット１２４、１２８から情報を受信し得、記憶ユニット１２４、１２８は両方とも、記憶ユニットマネージャ１２０に通信可能に結合される。同様に、記憶ユニットアクセスユニット１３４は、記憶ユニット１３６、１４０に情報を送信するか、又は記憶ユニット１３６、１４０から情報を受信し得、記憶ユニット１３６、１４０は両方とも、記憶ユニットマネージャ１３２に通信可能に結合される。
【００３０】
記憶ユニット１２４、１２８、１３６、１４０は、クライアントデータ１２６、１３０、１３８、１４２等のクライアントマシン１００に関連付けられたデータを含み得る。クライアントマシン１００は、記憶ユニットアドミニストレータ１０６に読み出し又は書き込み要求を送信することにより、記憶ユニット１２４、１２８、１３６、１４０からデータを読み取るか、又は記憶ユニット１２４、１２８、１３６、１４０にデータを書き込み得る。データ記憶ユニット１２４、１２８、１３６、１４０は、様々な実施形態により、ブロック記憶ユニット、ファイル記憶ユニット、オブジェクト記憶ユニット、データベース記憶ユニット、又は他の記憶ユニットであり得る。
【００３１】
図２は、図１のシステムの状況例を示す。クライアントマシン１００は、クライアント２１０及び記憶ユニットアドミニストレータ１０６のロジックによって制御され得、記憶ユニットマネージャ１２０及び１３２はマネージャ２２０によって制御され得る。
【００３２】
マネージャ２２０は、記憶ユニット１２４、１２８、１３６、１４０に記憶されるデータ又は記憶ユニット１２４、１２８、１３６、１４０で計算されるデータを利用し得る記憶ユニット１２４、１２８、１３６、１４０をホストするクラウドサービスプロバイダ及びクライアント２１０とは異なり得る。マネージャ２２０は、本明細書に記載される方法に従って、クライアント２１０の代理として、記憶ユニット１２４、１２８、１３６、１４０を制御し管理し得る。
【００３３】
記憶ユニットアドミニストレータ１０６は、仮想マシン２２２内で動作し得、記憶ユニットマネージャ１２０は別個の仮想マシン２２４内で動作し得、記憶ユニットマネージャ１３２は、別個の仮想マシン２２６内で動作し得る。一実施形態では、仮想マシン２２２、２２４、及び２２６は、記憶ユニット１２４、１２８、１３６、１４０のうちの１つ又は複数をホストする同じクラウドサービスプロバイダによってホストされる。マネージャ２２０は、記憶ユニットアドミニストレータ１０６のロジック、記憶ユニットマネージャ１２０、及び記憶ユニットマネージャ１３２等の仮想マシン２２２、２２４、２２６内のプロセスの実行を制御し得る。
【００３４】
幾つかの実施形態では、記憶ユニットアドミニストレータ１０６は、記憶ユニットマネージャ１２０又は１３２に記憶ユニット１２４、１２８、１３６、１４０にアクセスするように要求せずに、記憶ユニット１２４、１２８、１３６、１４０に直接アクセスする。しかし、幾つかの実施形態では、１つ又は複数のクラウドサービスプロバイダは、記憶ユニット１２４、１２８、１３６、１４０をホストし、単一の仮想マシンに接続し得る記憶ユニットの数を特定数未満に制限する。例えば、いくつかのクラウドサービスプロバイダは、特定の仮想マシンによってアクセスし得る仮想ディスク数を制限する。そのような一実施形態では、図１及び図２に示されるシステムは、記憶ユニットアドミニストレータ１０６が、記憶ユニットアドミニストレータによって制御することができる記憶ユニット数を最大化できるようにし得る。記憶ユニットアドミニストレータ１０６は、仮想マシン２２４及び２２６における記憶ユニットマネージャ１２０及び１３２等の複数の異なる仮想マシンのモジュールに、様々な記憶ユニット利用動作を実行するか、又は必要な性能情報を提供するように要求することにより、記憶ユニット１２４、１２８、１３６、１４０を管理し得る。そのような手法により、記憶ユニットアドミニストレータ１０６は、単一の仮想マシンによって利用されることが許可される記憶ユニットの最大数よりも大きい数の記憶ユニットを管理することができる。
【００３５】
サービスレベル合意２３０は、クライアント２１０に提供する特定の記憶サービスレベルを示す、クライアント２１０とマネージャ２２０との合意であり得る。サービスレベル合意は、記憶ユニット利用要求を実行するための実行の許容可能レベルを示す閾値又は値の範囲を示し得る。記憶ユニット利用要求は、記憶ユニット１２４、１２８、１３６、１４０からのデータにアクセスする要求又は記憶ユニット１２４、１２８、１３６、１４０にデータを保存する要求を含み得る。例えば、サービスレベル合意は、記憶ユニットアドミニストレータ１０６におけるクライアントマシン１００から受信されるデータ動作要求が、個々のデータ動作で１００データ動作／秒のメジアン速度で、且つ１００データ動作／５０ミリ秒以上のメジアン速度で完了すべきであることを示し得る。サービスレベル合意２３０は、クライアント２１０とマネージャ２２０との間でのみであり得、いかなるクラウドサービスプロバイダも含まなくてもよい。
【００３６】
図３は、ファイルシステム等のデータ記憶システム内の仮想記憶オブジェクト及び記憶ユニット部分でのユーザ又はアプリケーションデータの分布例を示す。代替の実施形態では、データ記憶システムは、ファイルではなく論理ボリューム又はオブジェクトの記憶に使用し得、したがって、論理ボリュームマネージャ、ブロック記憶システム、オブジェクトストア、又は任意の他の論理データ管理サービスとして識別し得る。他の実施形態では、データ記憶システムは、ユーザ又はアプリケーションデータをデータベースに記憶するために使用される。
【００３７】
連続データ３０２は、ファイル、論理ボリューム、又はオブジェクト等の連続データセットであり得、データの連続部分であり得る論理エクステントに分割し得る。例えば、連続データ３０２は、エクステント３０４、３０６、及び３０８に分割し得、連続データ３２８は、エクステント３３０、３３２、及び３３４に分割し得る。幾つかの実施形態では、エクステントはそれぞれ固定サイズを有する。記憶ユニットアドミニストレータ１０６は、各エクステントを異なる仮想記憶オブジェクトに記憶し得る。例えば、エクステント３０４、３０６、３０８はそれぞれ、仮想記憶オブジェクト３１０、３１２（図示せず）、３１４（図示せず）に記憶し得る。
【００３８】
異なる連続データのエクステントを集計して、単一のオブジェクトを形成し得る。例えば、連続データ３０２のエクステント３０４及び連続データ３２８のエクステント３３２を集計して、仮想オブジェクト３１０を形成し得る。一実施形態では、連続データ３０２及び３２８は異なるファイルである。
【００３９】
この状況では、仮想記憶オブジェクトは、記憶ユニット部分の集まりであり、記憶ユニット部分の幾つか又は全ては、異なる記憶ユニットの部分であり得る。例えば、仮想記憶オブジェクト３１０は集合的に、仮想オブジェクト部分３１６、３１８、３２０を表し得、各オブジェクト部分は別個の記憶ユニットの部分であり得る。仮想オブジェクト部分３１６は記憶ユニット３３０の部分であり得、仮想オブジェクト部分３１８は記憶ユニット３３２の部分であり得、仮想オブジェクト部分３２０は記憶ユニット３３４の部分であり得る。幾つかの実施形態では、各仮想オブジェクト部分は固定サイズのものである。
【００４０】
記憶ユニットアドミニストレータ１０６は、特定の記憶ポリシーに従って記憶ユニットにわたってユーザ又はアプリケーションデータを分割し得る。記憶ポリシーは、データ冗長性、ミラーリング、若しくは複製のレベル、データ記憶ストライピングポリシー（ビットレベル、バイトレベル、及びブロックラベル）、特定のＲＡＩＤレベル、特定の消失訂正符号（イレージャーコーディング）方式等のＲＡＩＤへの代替、又は記憶ユニットの信頼性、可用性、性能、若しくは容量に関連する任意の他のパラメータを示し得る。データが分散される記憶ユニットの数、冗長データを保持すべき各記憶ユニットに記憶されるデータ量、冗長データが様々な記憶ユニットにわたっていかに分散されるべきか、及び他のそのようなパラメータは、記憶ユニットアドミニストレータ１０６によって選択される記憶ポリシーに依存し得る。
【００４１】
図４は、ネットワーク化されたコンピュータシステムの一例での記憶ユニットアドミニストレータの一例の構成要素を示す。記憶ユニットアドミニストレータ１０６は、記憶ユニットマネージャ４２０、４２６、４３２、４３８を介して記憶ユニット４２２、４２４、４２８、４３０、４３４、４３６、４４０、４４２に記憶されるクライアントデータへのアクセスを管理し、促進し得る。記憶ユニットアドミニストレータ１０６は仮想ロケーションアドミニストレータ４０２を備え得、仮想ロケーションアドミニストレータ４０２は、ユーザ又はアプリケーションメタデータの保持及びクライアントデータを検索するか、又はクライアントデータを記憶ユニットに記憶する要求の処理等のタスクを実行する。
【００４２】
データＩ／Ｏハンドラ４０６は、クライアントマシン１００からデータを読み出す要求を受信し、要求されたデータをクライアントマシン１００に提供する。論理エクステントロケーション情報４０８は、各論理エクステントのロケーション情報を識別する。ロケーション情報は、データが記憶される任意の物理的ロケーションを識別せずに、論理エクステントのデータが記憶される１つ又は複数の仮想ロケーションを識別し得る。例えば、ロケーション情報は、データの仮想ロケーションを示すエクステント識別子を含み得る。論理エクステントを構成する特定の物理的ロケーションは、論理エクステントロケーション情報４０８への更新を何ら行わずに、経時変化し得る。他の実施形態では、データが記憶される仮想ロケーションは、論理ブロック識別子、論理オブジェクト識別子を使用して、且つ／又は仮想ディスク、ファイル、又はオブジェクト内のバイトオフセットとして識別し得る。
【００４３】
一実施形態では、論理エクステントロケーション情報４０８は、各ファイル、論理ボリューム、又はオブジェクトの論理エクステントツリーを備え、ツリー内の各エントリは、特定のデータに対応し、対応するエクステントを識別するエクステントＩＤと、エクステントの開始からデータが開始されるまでの距離を示すオフセット量と、オフセットから開始されるエクステント内に含まれるデータ量を示す長さ量とを含む。論理エクステント情報４０８を使用して、仮想ロケーションアドミニストレータ４０２は、クライアントによって要求し得る任意のデータのエクステントＩＤを識別し得る。幾つかの実施形態では、論理エクステントツリーは、Ｂ＋ツリーの構造を有する。
【００４４】
記憶ユニットアドミニストレータ１０６はオブジェクトアドミニストレータ４１０を備え、オブジェクトアドミニストレータ４１０は、対応する記憶ユニット内の要求データの物理的ロケーションを特定し得る。オブジェクトアドミニストレータ４１０はエクステント−オブジェクトマッピング４１２を保持し得、このマッピングは、論理エクステント情報４０８において識別される各エクステントの対応する仮想記憶オブジェクトを識別し得る。他の実施形態では、エクステント−オブジェクトマッピング４１２は、仮想ロケーションアドミニストレータ４０２に記憶し得る。記憶ユニットアドミニストレータ１０６は、特定のエクステント内に含まれるデータが異なるオブジェクトに配置換えされる場合、エクステント−オブジェクトマッピング４１２を更新し得る。幾つかの実施形態では、エクステントＩＤは、エクステント−オブジェクトマッピング４１２内の１つ又は複数のロケーションへの参照であり、このマッピングは、対応するエクステントについてのマッピング情報を含む。マッピング情報は、エクステントＩＤによって識別されるエクステントを構成する１つ又は複数のオブジェクトを識別し得る。
【００４５】
オブジェクトアドミニストレータ４１０はオブジェクトインスタンシエータ４１４を備え得、オブジェクトインスタンシエータ４１４は、必要な場合、新しい仮想記憶オブジェクトをインスタンス化し得る。例えば、データが新しい仮想記憶オブジェクト又は新しい記憶オブジェクト部分に移動する場合、オブジェクトインスタンシエータ４１４は、１つ又は複数の新しい記憶ユニットを仮想データセンタに要求し得る。オブジェクトインスタンシエータ４１４は、異なる連続データからのエクステントを集計してより大きなオブジェクトにし得る。例えば、オブジェクトインスタンシエータは、連続データ３０２からのエクステント３０４と、連続データ３２８からのエクステント３３２とを集計して、仮想オブジェクト３１０を形成し得る。
【００４６】
オブジェクトアドミニストレータ４１０は、関連付けられた記憶ユニット内のデータの検索及び記憶を促進するオブジェクトストアを備え得る。例えば、ブロックオブジェクトストア４１８は、記憶ユニット４２２、４２４、４２８、４３０等のクラウドサービスプロバイダ（ＣＳＰ）によって提供されるＣＳＰブロック記憶ユニットの部分を含む仮想記憶オブジェクトと通信することが可能であり得る。特定の実施形態に応じて、ブロックオブジェクトストア４１８は、記憶ユニットマネージャ４２０及び４２６を介して、又は記憶ユニットマネージャから独立して記憶ユニットと通信し得る。他の実施形態では、単一のオブジェクトストアを使用して、異なる装置タイプの記憶ユニットと通信し得る。
【００４７】
ブロックオブジェクトストア４１８はそれぞれ、オブジェクト部分ディレクトリ４１６を保持し得る。ブロックオブジェクトストア４１８は、１つ又は複数の回転式ハードディスクドライブ（ＨＤＤ）、フラッシュベースのソリッドステートドライブ（ＳＳＤ）、揮発性若しくは不揮発性ランダムアクセスメモリ（ＲＡＭ又はＮＶＲＡＭ）、又は何らかの他のタイプの媒体を含み得る。オブジェクトストアによって管理される各仮想記憶オブジェクトについて、オブジェクト部分ディレクトリは、仮想記憶オブジェクトに含まれる特定の記憶ユニット部分と、特定の記憶ユニット部分のロケーションとを識別し得る。例えば、オブジェクト部分ディレクトリ４１６は、仮想記憶オブジェクト３１０が、記憶ユニット３２２のロケーションＸで始まる仮想オブジェクト部分３１６と、記憶ユニット３２４のロケーションＹで始まる仮想オブジェクト部分３１８と、記憶ユニット３２６のロケーションＺで始まる仮想オブジェクト部分３２０とを含むことを示し得る。オブジェクト部分ディレクトリは、記憶ユニット部分の順序も示し得る。例えば、オブジェクト部分ディレクトリ４１６は、仮想オブジェクト部分３１６の後に仮想オブジェクト部分３１８が続き、仮想オブジェクト部分３１８の後に仮想オブジェクト部分３２０が続くことを示し得る。オブジェクトアドミニストレータ４１０は、オブジェクトアドミニストレータ４１０に記憶される物理的ロケーションへの仮想ロケーションのマッピングと併せて、仮想ロケーションアドミニストレータ４０２から受信される仮想ロケーション情報に基づいて、要求されたデータの記憶ユニットアドレスを特定し得る。例えば、オブジェクトアドミニストレータ４１０は、エクステント識別子、オフセット量、及び長さ量を受信し得、要求されたデータの記憶ユニットアドレスは、エクステント−オブジェクトマッピング４１２を使用して識別されたエクステントに属するオブジェクトを見つけるとともに、オブジェクト部分ディレクトリ４１６を使用して識別されたオブジェクトに属する記憶ユニット部分を見つけることにより、特定し得る。記憶ユニットアドレスは、対応する記憶ユニット内のデータのロケーションを識別する。
【００４８】
仮想ロケーションアドミニストレータ４０２は、仮想ロケーション識別子を使用してデータロケーションのみを記憶し得る。仮想ロケーション識別子は、論理エクステント識別子、論理ブロック識別子、論理オブジェクト識別子のうちの１つ又は複数を含み得る。別の実施形態では、仮想ロケーションは、仮想ディスク、ファイル、又はオブジェクト内のバイトオフセットとして識別され得る。オブジェクトアドミニストレータ４１０は、エクステント−オブジェクトマッピング４１２及び／又はオブジェクト部分ディレクトリ４１６に基づいて、仮想ロケーション識別子を物理ロケーションに変換し得る。
【００４９】
２．１  クライアントデータの検索中のエクステント−オブジェクトマッピング及びオブジェクト部分ディレクトリの利用
図５は、クライアントデータの検索中、エクステント−オブジェクトマッピング及びオブジェクト部分ディレクトリを利用するプロセスの一例を示す。
【００５０】
図５のプロセスは、記憶ユニットアドミニストレータ１０６において実行し得る。ブロック５０２において、仮想ロケーションアドミニストレータ４０２は、クライアントマシン１００から、特定のデータにアクセスする要求を受信する。ブロック５０４において、仮想ロケーションアドミニストレータ４０２は、論理エクステントロケーション情報３０８を使用して、特定のデータが属するエクステントのエクステントＩＤを特定する。他の実施形態では、仮想ロケーションアドミニストレータは、特定のデータが属するブロック又はオブジェクトを特定し得る。論理エクステントロケーション情報３０８は、データオフセット及び長さによってインデクス付けられるデータエクステントマッピングツリーであり得る。仮想ロケーションアドミニストレータ４０２は、クライアント要求において提供されるデータオフセット及び長さを使用して、特定のエクステントＩＤ、データのオフセット、及び長さを特定し得る。クライアント要求は、データオフセットをファイルオフセットとして識別し得る。
【００５１】
ブロック５０６において、仮想ロケーションアドミニストレータ４０２は、特定のデータに対する要求をオブジェクトアドミニストレータ４１０に送信する。要求は、データが属するエクステントと、エクステントの開始からデータが開始されるまでの距離を示すオフセット量と、オフセットから開始されるエクステントに含まれるデータ量を示す長さ量とを識別し得る。ブロック５０８において、オブジェクトアドミニストレータ４１０は、要求されたデータを含む仮想記憶オブジェクトを識別する。オブジェクトアドミニストレータ４１０は、エクステント−オブジェクトマッピング４１２に基づいて、要求されたデータを含むオブジェクトを識別し得る。他の実施形態では、エクステント−オブジェクトマッピング４１２は、仮想ロケーションアドミニストレータ４０２に記憶し得、仮想ロケーションアドミニストレータ４０２は、どのオブジェクトが要求されたデータを含むかを特定し得る。異なるオブジェクトストアには異なるオブジェクトを関連付け得る。仮想ロケーションアドミニストレータ４０２は、どのオブジェクトが要求されたデータを含むかを特定し、選択されたオブジェクトに対応するオブジェクトストアを選択することにより、１組のオブジェクトストアの中から対応するオブジェクトストアを選択し得る。
【００５２】
ブロック５１０において、オブジェクトアドミニストレータ４１０は、特定のデータを検索する対応するオブジェクトストアを要求する。オブジェクトストアは、記憶されるオブジェクト部分ディレクトリ及び受信したエクステントＩＤ、並びに幾つかの実施形態では、長さ及びオフセット情報に基づいて、データの記憶ユニットアドレスを特定し得る。幾つかの実施形態では、オブジェクト部分ディレクトリは、各仮想記憶オブジェクトについて、部分が仮想記憶オブジェクトを構成する記憶ユニットと、仮想記憶オブジェクトを構成する記憶ユニット部分の記憶ユニット内のロケーションと、仮想記憶オブジェクトに対応する記憶ポリシーとを示す。例えば、オブジェクト部分ディレクトリは、仮想記憶オブジェクト３１０が仮想オブジェクト部分３１６、３１８、及び３２０を含み、仮想オブジェクト部分３１６が記憶ユニット３２２のロケーションＸで開始され、仮想オブジェクト部分３１８が記憶ユニット３２４のロケーションＹで開始され、仮想オブジェクト部分３２０が記憶ユニット３２６のロケーションＺで開始されることを示し得る。オブジェクト部分ディレクトリは、仮想記憶オブジェクト３１０が、ＲＡＩＤ５等の特定の記憶冗長符号化に従って分散することも示し得る。幾つかの実施形態は、消失訂正符号等の代替の記憶冗長符号化を使用して、米国特許出願第１３／８３７，４５６号明細書に記載のように、異なる目的を達成し得る。各仮想オブジェクト部分は、固定サイズであってもよく、又はオブジェクト部分ディレクトリは、各仮想オブジェクト部分に記憶されるデータ量を示すこともできる。
【００５３】
ブロック５１２において、対応するオブジェクトストアは、要求されたデータを対応する記憶ユニットロケーションから検索する。ブロック５１４において、オブジェクトアドミニストレータ４１０は、検索されたデータを仮想ロケーションアドミニストレータ４０２に提供する。要求されたデータと共に、オブジェクトアドミニストレータ４１０は、仮想ロケーションアドミニストレータ４０２に、検索されたデータに関連付けられた仮想ロケーションを繰り返し表明する。
【００５４】
明確な例を示すために、仮想ロケーションアドミニストレータ４０２は、エクステント識別子を使用して、データの仮想ロケーションを識別するものとして上述されており、仮想ロケーションはオブジェクト識別子に変換され、最後に、オブジェクトアドミニストレータ４１０によって記憶ユニット部分アドレスに変換される。しかし、他の実施形態では、データは他のフォーマットで記憶し得る。例えば、他の実施形態では、仮想ロケーションアドミニストレータ４０２は、論理エクステント識別子の代わりに論理ブロック識別子への参照を保持し得、論理ブロック識別子は最終的に、オブジェクトアドミニストレータ４１０によって記憶ユニット部分アドレスに変換し得る。
【００５５】
２．２  クライアントデータの配置換えの際のエクステント−オブジェクトマッピング又はオブジェクト部分ディレクトリの更新
図６は、特定のデータを配置換えする際にロケーション情報を更新するプロセスの一例を示す。図６のプロセスは、記憶ユニットアドミニストレータ１０６において実行し得る。ブロック６０２において、記憶ユニットアドミニストレータ１０６は、特定のデータを新しいロケーションに移動することを要求する条件が発生したと判断し、特定のデータは、特定の仮想記憶オブジェクトに記憶される特定の論理エクステントの部分である。
【００５６】
ブロック６０４において、オブジェクトアドミニストレータ４１０は、特定のデータを新しいロケーションに記憶させる。特定のデータの配置換えは、記憶ユニットアドミニストレータ１０６がデータを全体的に異なる仮想記憶オブジェクト又は異なる記憶ユニット部分に配置換えすることを含み得、これは、配置換え前に、配置換えされたデータを含んでいた特定の仮想記憶オブジェクトと同じ特定の仮想記憶オブジェクトに追加される。特定のデータが新しいロケーションに記憶されることに応答して、記憶ユニットアドミニストレータ１０６は、特定のデータが異なる仮想記憶オブジェクトに配置換えされたか、それとも単に異なる記憶ユニット部分に配置換えされたかに応じて、ブロック６０６又はブロック６０８のステップの何れかを実行する。
【００５７】
ブロック６０６において、記憶ユニットアドミニストレータ１０６は、特定のデータを異なる仮想記憶オブジェクトに配置換えし、記憶ユニットアドミニストレータ１０６は、更新前は、特定の仮想記憶オブジェクトが特定の論理エクステントに属する情報を記憶することを示していたエクステント−オブジェクトマッピングを、異なる仮想記憶オブジェクトが特定の論理エクステントに属する情報を記憶することを示すように更新する。
【００５８】
ブロック６０８において、記憶ユニットアドミニストレータ１０６は、データを、異なる仮想記憶オブジェクトではなく、異なる記憶ユニット部分に配置換えする。記憶ユニットアドミニストレータ１０６は、更新前、特定の組の記憶ユニット部分が特定の仮想記憶オブジェクトに属することを示していたオブジェクト−記憶ユニットマッピングを、異なる組の記憶ユニット部分が特定の仮想記憶オブジェクトに属することを代わりに示すように更新する。
【００５９】
別の実施形態では、記憶ユニットアドミニストレータ１０６は、オブジェクトに属する１組の記憶ユニットを変更する代わりに、オブジェクト−記憶ユニットマッピング内のオフセット情報を更新する。例えば、オブジェクト部分ディレクトリ４１６は、仮想記憶オブジェクト部分が、記憶ユニット３２２のロケーションＸの代わりに、記憶ユニット３２２のロケーションＸ＋１０２４で開始されることを示すように、オブジェクト部分ディレクトリ４１６を更新し得る。
【００６０】
データは、既に仮想記憶オブジェクトに属する記憶ユニット部分に配置替えし得る。例えば、記憶ユニットアドミニストレータ１０６は、仮想記憶オブジェクトが広がる１組の記憶ユニットを統合し得る。そのような一実施形態では、オブジェクト−記憶ユニット部分マッピングは、配置換えされたデータを含む仮想記憶オブジェクトがもはや、データが前に配置されていた記憶ユニット部分を含まないことを示すように、変更し得る。
【００６１】
データは、仮想記憶オブジェクトに属さない記憶ユニット部分に配置替えすることも可能である。そのような一実施形態では、オブジェクト−記憶ユニット部分マッピングは、配置換えされたデータを含む仮想記憶オブジェクトが、データの配置換え先の記憶ユニット部分も含むことを示すように、変更し得る。データが、配置換えされたデータを前に含んでいた記憶ユニット部分に残っていない場合、マッピングは、配置換えされたデータを前に含んでいた記憶ユニット部分が仮想記憶オブジェクトから除去されることを示すように、更新することもできる。
【００６２】
米国特許出願第１３／８３７，３７５号明細書に更に詳細に記載されるように、記憶ユニットアドミニストレータ１０６は、特定の記憶ユニットの性能が不適切であるとの判断に応答して、特定の記憶ユニットの使用をディセーブルし得る。記憶ユニットアドミニストレータ１０６は、同様に実行中の２つの記憶ユニットのパターンを検出することに応答して、少なくとも１つの特定の目的で、第１又は第２の記憶ユニットの使用をディセーブルすることもできる。そのようなパターンの検出は、２つの記憶ユニットが同じ物理的装置によってホストされることを示し得る。特定の記憶ユニットの使用をディセーブルするとの判断に応答して、記憶ユニットアドミニストレータ１０６は、特定の記憶ユニットに記憶される全てのデータを異なる記憶ユニットに移動し得る。
【００６３】
幾つかの実施形態では、ディセーブルに選択される記憶ユニットの部分を含む各仮想記憶オブジェクトは、代わりに、異なる記憶ユニットの部分を含むように変更される。異なる記憶ユニット部分を含むように仮想記憶オブジェクトを変更することは、仮想記憶オブジェクトが、配置換えされた記憶ユニット部分の代わりに新しい記憶ユニット部分を含むことを示すように、対応するオブジェクトストアのオブジェクト部分ディレクトリを更新することを含み得る。例えば、仮想記憶オブジェクト１００が記憶ユニット１０２のロケーションＸを含むことを示すオブジェクト部分ディレクトリエントリは、仮想記憶オブジェクト１００が記憶ユニット１０４のロケーションＹを含むことを示すように変更し得る。
【００６４】
米国特許出願第１３／８３７，４５６号明細書に更に詳細に記載されるように、記憶ユニットアドミニストレータ１０６は、ある記憶ポリシーに従って記憶されるデータを、異なる記憶ポリシーに従って記憶させ得る。特定のデータに適用可能な記憶ポリシーを変更することは、データミラーリング又は冗長性のために使用される記憶ユニット部分の量、データがストライピングされる記憶ユニット部分数、各記憶ユニット部分のサイズ、使用される特定の消去若しくは冗長性符号化、又は記憶ユニットの信頼性、可用性、性能、及び容量に関連する他のパラメータを変更することを含み得る。
【００６５】
一実施形態では、記憶ユニットアドミニストレータ１０６は、１組の記憶ユニットの性能の分析に基づいて、特定のサービスレベルに関連付けられた前の記憶ポリシーがもはや、特定のサービスレベルに関連付けられた性能期待に合わないと判断し得る。そのような判断は、ある物理的ロケーションから別の物理的ロケーションへのデータの移動を要求する条件の一例である。判断に応答して、記憶ユニットアドミニストレータ１０６は、特定のサービスレベルに関連付けられた記憶ポリシーを変更し得る。例えば、「ゴールド」サービスレベルに対応する記憶ポリシーは、特定量のデータを４つの異なる記憶ユニットの４つの記憶ユニット部分にわたってストライピングすることを要求し得る。データが、期待される時間量以内で検索されていないとの判断に応答して、記憶ユニットアドミニストレータ１０６は、記憶ポリシーにより、「ゴールド」サービスレベルに関連付けられた特定のサービスレベル目的を満たすために調整が要求されると判断し得る。したがって、記憶ユニットアドミニストレータ１０６は、４つの異なる装置の代わりに、５つの異なる装置の５つの記憶ユニット部分にデータをストライピングすることを要求する「ゴールド」サービスレベルに対応する記憶ポリシーを変更し得る。
【００６６】
その結果、「ゴールド」サービスレベルに従って記憶されるデータを含む仮想記憶オブジェクトはそれぞれ、仮想記憶ユニットをまだ含んでいない記憶ユニットの記憶ユニット部分を含むように変更し得る。記憶ユニットアドミニストレータ１０６は、幾つかのデータを仮想記憶オブジェクトに属する他の記憶ユニット部分から新たに追加された記憶ユニと部分に移動し得る。様々な実施形態によれば、特定の仮想記憶オブジェクトに属する１組の記憶ユニット部分を変更することは、記憶ユニット部分を追加すること、削除することは、又は置換することを含み得る。
【００６７】
記憶ユニットアドミニストレータ１０６は、記憶ユニットアドミニストレータ１０６が特定のデータに異なるサービスレベルを関連付ける場合、ある記憶ポリシーに従って記憶されるデータを異なる記憶ポリシーに従って記憶させることもできる。記憶ユニットアドミニストレータ１０６は、特定のデータに異なるサービスレベルを関連付けるクライアントマシン１００からの要求に応答して、それを行い得る。例えば、クライアントは、特に重要なものとして特定のサブセットのデータを示し得る。クライアントからの指示の受信に応答して、記憶ユニットアドミニストレータ１０６は、データに「プラチナセキュリティ」サービスレベルを関連付け得る。「プラチナセキュリティ」サービスレベルに関連付けられた記憶ポリシーは、単一のパリティドライブとして機能する単一の記憶ユニット部分のみを含み得る他の記憶ポリシーの代わりに、２つの記憶ユニット部分が２つの別個のパリティドライブとして機能することを要求し得る。そのような一実施形態では、記憶ユニットアドミニストレータ１０６は、データが記憶される仮想記憶オブジェクトに属する記憶ユニット部分を追加又は削除する代わりに、データを全体的に新しい仮想記憶オブジェクトに移動し得る。データを新しい仮想記憶オブジェクトに移動した結果、記憶ユニットアドミニストレータ１０６は、エクステント−オブジェクトマッピング４１２を更新し得る。例えば、記憶ユニットアドミニストレータ１０６は、データエクステント１０２が、仮想記憶オブジェクト４の代わりに仮想記憶オブジェクト６に記憶されることを示す特定のマッピングを変更し得る。
【００６８】
一実施形態では、サービスレベルに関連付けられた記憶ポリシーが変更される場合、仮想記憶オブジェクトに属する１組の記憶ユニット部分は変更され、特定のデータに関連付けられたサービスレベルが変更される場合、データは、全体的に新しい仮想記憶オブジェクトに移動する。
【００６９】
新しいロケーションへの特定のデータの移動を要求する条件が発生したと判断する工程は、特定の記憶ユニットの性能が不適切であると判断する工程、２つの記憶ユニットが同じ物理的装置によってホストされることを示すパターンの発生を検出する工程、前の記憶ポリシーがもはや、特定のサービスレベルに関連付けられた性能期待に合わないと判断すること、又は特定のデータに異なるサービスレベルを関連付けるクライアントからの要求を受信する工程を含み得る。そのような条件は単なる例であり、記憶ユニットアドミニストレータ１０６は、異なる記憶ユニットにわたる全般的な負荷平衡の必要性の判断等の特定のデータを新しいロケーションに移動することを必要とする他の条件の発生の判断に応答して、図６のプロセスを実行することもできる。
【００７０】
図６のプロセスは、データ又はメタデータが暗号化又は圧縮のために変形される場合など、データ又はメタデータを書き換える必要がある場合に実行することもできる。例えば、特定のデータを書き換えることは、特定のデータを新しい記憶ユニット部分に書き換える工程と、特定のデータが、前に記憶される記憶ユニット部分の代わりに新しい記憶ユニット部分に記憶されることを示すように、オブジェクト−記憶ユニットマッピングを更新する工程と、単一の動作又は複合トランザクション内で全てのデータ又はメタデータ変形を実行する工程とを含み得る。そのような手法は、必要とされる変形毎に複数の個々の動作としてよりコストが掛かるように実行される、特定のデータがまず、特定のロケーションから削除され、それから、同じ特定のロケーションに書き換えられる従来の手法よりも効率的であり得る。
【００７１】
明確な例を示すために、オブジェクトアドミニストレータ４１０は、オブジェクトに属するデータが第１の記憶ユニット部分から別の記憶ユニット部分に移動される場合、記憶ユニット部分へのオブジェクトのマッピングを更新するものとして上述されている。他の実施形態では、データは他のフォーマットで記憶し得る。例えば、他の実施形態では、オブジェクトアドミニストレータ４１０は、記憶ユニット部分への論理ブロックのマッピングを含み得、データを第１の記憶ユニット部分から第２の記憶ユニット部分に移動することに応答して、オブジェクトアドミニストレータ４１０は、特定のブロックが、第１の記憶ユニット部分ではなく第２の記憶ユニット部分を含むことを示すように、記憶ユニット部分へのブロックのマッピングを更新し得る。
【００７２】
３．０  実施のメカニズム  −  ハードウェア概説
図７は、本発明の一実施形態を実施し得るコンピュータシステム７００を示すブロック図である。コンピュータシステム７００は、情報を通信するバス７０２又は他の通信機構と、バス７０２に結合され、情報を処理するプロセッサ７０４とを含む。コンピュータシステム７００は、バス７０２に結合され、プロセッサ７０４によって実行される情報及び命令を記憶する、ランダムアクセスメモリ（ＲＡＭ）又は他のダイナミック記憶装置等のメインメモリ７０６も含む。メインメモリ７０６は、命令の実行中、プロセッサ７０４によって実行される一時変数又は他の中間情報の記憶にも使用し得る。コンピュータシステム７００は、バス７０２に結合され、プロセッサ７０４の静的情報及び命令を記憶する、読み取り専用メモリ（ＲＯＭ）７０８又は他のスタティック記憶装置を更に含む。磁気ディスク又は光ディスク等の記憶装置７１０が提供され、バス７０２に結合されて、情報及び命令を記憶する。
【００７３】
コンピュータシステム７００は、バス７０２を介して、陰極線管（ＣＲＴ）等のディスプレイ７１２に結合されて、情報をコンピュータユーザに表示し得る。英数字及び他のキーを含む入力装置７１４は、バス７０２に結合され、情報及びコマンド選択をプロセッサ７０４に通信する。別のタイプのユーザ入力装置は、方向情報及びコマンド選択をプロセッサ７０４に通信するとともに、ディスプレイ７１２上のカーソルの移動を制御する、マウス、トラックボール、又はカーソル方向キー等のカーソル制御装置７１６である。この入力装置は通常、装置が平面において位置を指定できるようにする、第１の軸（例えば、ｘ）及び第２の軸（例えば、ｙ）の２つの軸において２つの自由度を有する。
【００７４】
本発明は、本明細書に記載される技法を実施するコンピュータシステム７００の使用に関連する。本発明の一実施形態によれば、それらの技法は、プロセッサ７０４がメインメモリ７０６に含まれる１つ又は複数の命令の１つ又は複数のシーケンスを実行することに応答して、コンピュータシステム７００によって実行される。そのような命令は、記憶装置７１０等の別のマシン可読媒体からメインメモリ７０６に読み込み得る。メインメモリ７０６に含まれる命令シーケンスの実行は、プロセッサ７０４に本明細書に記載されるプロセスステップを実行させる。代替の実施形態では、ハードワイヤード回路を、本発明を実施するソフトウェア命令の代替として、又は代わりとして使用し得る。したがって、本発明の実施形態は、ハードウェア回路及びソフトウェアの任意の特定の組合せに限定されない。
【００７５】
「マシン可読媒体」という用語は、本明細書で使用される場合、マシンを特定の様式で動作させるデータを提供することに参加する任意の媒体を指す。コンピュータシステム７００を使用して実施される一実施形態では、様々なマシン可読媒体が、例えば、実行のために命令をプロセッサ７０４に提供することに関わる。そのような媒体は、記憶媒体及び伝送媒体を含むが、これらに限定されない多くの形態を取り得る。記憶媒体は、不揮発性媒体及び揮発性媒体の両方を含む。不揮発性媒体は、例えば、記憶装置７１０等の光ディスク又は磁気ディスクを含む。揮発性媒体は、メインメモリ７０６等のダイナミックメモリを含む。伝送媒体は、バス７０２を構成するワイヤを含め、同軸ケーブル、銅線、及び光ファイバを含む。伝送媒体は、無線波及び赤外線データ通信中に生成されるなどの音響波又は光波の形態をとることもできる。全てのそのような媒体は、媒体によって搬送される命令が、命令をマシンに読み込む物理的機構によって検出できるようにするように有形でなければならない。
【００７６】
マシン可読媒体の一般的な形態は、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、若しくは任意の他の磁気媒体、ＣＤ−ＲＯＭ、任意の他の光学媒体、パンチカード、紙テープ、パターンになった穴を有する任意の他の物理的媒体、ＲＡＭ、ＰＲＯＭ、及びＥＰＲＯＭ、フラッシュ−ＥＰＲＯＭ、任意の他のメモリチップ若しくはカートリッジ、後述する搬送波、又はコンピュータが読み取ることができる任意の他の媒体を含む。
【００７７】
様々な形態のマシン可読媒体が、実行のために、１つ又は複数の命令の１つ又は複数のシーケンスをプロセッサ７０４に搬送することに関わり得る。例えば、命令はまず、リモートコンピュータの磁気ディスクで搬送し得る。リモートコンピュータは、命令をダイナミックメモリにロードし、モデムを使用して電話回線を介して命令を送信することができる。コンピュータシステム７００にローカルなモデムは、電話回線上でデータを受信し、赤外線送信器を使用してデータを赤外線信号に変換することができる。赤外線検出器は、赤外線信号で搬送されるデータを受信することができ、適切な回路が、データをバス７０２上に配置することができる。バス７０２は、データをメインメモリ７０６に搬送し、メインメモリ７０６から、プロセッサ７０４は命令を検索して実行する。メインメモリ７０６によって受信される命令は、任意選択的に、プロセッサ７０４による実行前又は実行後に記憶装置７１０に記憶し得る。
【００７８】
コンピュータシステム７００は、バス７０２に結合される通信インタフェース７１８も含む。通信インタフェース７１８は、ローカルネットワーク７２２に接続されるネットワークリンク７２０への双方向データ通信結合を提供する。例えば、通信インタフェース７１８は、データ通信接続を対応するタイプの電話回線に提供する総合デジタル通信網（ＩＳＤＮ）カード又はモデムであり得る。別の例として、通信インタフェース７１８は、データ通信接続を互換性のあるＬＡＮに提供するローカルエリアネットワーク（ＬＡＮ）カードであり得る。無線リンクを実施することも可能である。任意のそのような実装形態では、通信インタフェース７１８は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁信号、又は光信号を送受信する。
【００７９】
ネットワークリンク７２０は通常、１つ又は複数のネットワークを通して他のデータ装置へのデータ通信を提供する。例えば、ネットワークリンク７２０は、ローカルネットワーク７２２を通したホストコンピュータ７２４又はインターネットサービスプロバイダ（ＩＳＰ）７２６によって操作されるデータ機器への接続を提供し得る。そして、ＩＳＰ７２６は、現在では一般に「インターネット」７２８と呼ばれる世界規模パケットデータ通信ネットワークを通してデータ通信サービスを提供する。ローカルネットワーク７２２及びインターネット７２８は両方とも、デジタルデータストリームを搬送する電気信号、電磁信号、又は光信号を使用する。デジタルデータをコンピュータシステム７００に搬送するとともに、デジタルデータをコンピュータシステム７００から搬送する、様々なネットワークを通しての信号及び通信インタフェース７１８を通してのネットワークリンク７２０上の信号は、情報を輸送する搬送波の例示的な形態である。
【００８０】
コンピュータシステム７００は、ネットワーク、ネットワークリンク７２０、及び通信インタフェース７１８を通して、プログラムコードを含め、メッセージを送信し、データを受信することができる。インターネットの例では、サーバ５３０が、インターネット７２８、ＩＳＰ７２６、ローカルネットワーク７２２、及び通信インタフェース７１８を通してアプリケーションプログラムの要求コードを送信し得る。
【００８１】
受信されたコードは、受信時にプロセッサ７０４によって実行し得、且つ／又は後に実行するために記憶装置７１０又は他の不揮発性記憶装置に記憶し得る。このようにして、コンピュータシステム７００は、搬送波の形態でアプリケーションコードを取得し得る。
【００８２】
４．０  拡張及び代替
上記明細書において、実装形態毎に異なり得る多くの特定の詳細を参照して、本発明の実施形態について説明した。したがって、本発明がどのようなものであり、及び本発明として本出願人らによってどのようなものが意図されるかの唯一且つ排他的な指標は、後続するいかなる補正も含め、請求項が発行される特定の形態で、本願から発行される１組のそのような請求項である。そのような特許請求の範囲に含まれる用語について本明細書で明示的に記載されるいかなる定義も、特許請求の範囲で使用されるそのような用語の意味を支配するものとする。したがって、請求項において明示的な記載されない限定、要素、特性、特徴、利点、又は属性は、そのような請求項の範囲を決して限定しないものとする。したがって、本明細書及び図面は、限定の意味ではなく例示の意味で見なされるべきである。
【００８３】
以下、本発明の好ましい実施形態を項分け記載する。
実施形態１：
コンピュータを使用して、データを記憶する要求を受信する工程、
仮想化コンピュータシステムのデータ記憶システムに前記データを記憶させる工程、
前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される１つ又は複数の仮想ロケーションを識別するデータロケーションレコードを記憶する工程を含み、
１つ又は複数の計算装置を使用して実行されることを特徴とする方法。
実施形態２：
オブジェクトアドミニストレータに、前記データを記憶する命令を送信する工程、
前記命令の送信に応答して、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される仮想ロケーションを識別する１つ又は複数の仮想ロケーション識別子を受信する工程、
を含むことを特徴とする実施形態１に記載の方法。
実施形態３：
前記命令の送信に応答して、前記データが記憶される論理エクステントを識別する１つ又は複数の論理エクステント識別子を受信する工程を含み、前記論理エクステント識別子は、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される前記１つ又は複数の論理エクステントを識別することを特徴とする実施形態２に記載の方法。
実施形態４：
前記命令の送信に応答して、前記データが記憶される論理ブロックを識別する１つ又は複数の論理ブロック識別子を受信する工程を含み、前記論理ブロック識別子は、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される前記１つ又は複数の論理ブロックを識別することを特徴とする実施形態２に記載の方法。
実施形態５：
前記命令の送信に応答して、前記データが記憶される論理オブジェクトを識別する１つ又は複数の論理オブジェクト識別子を受信する工程を含み、
前記論理オブジェクト識別子は、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される前記１つ又は複数の論理オブジェクトを識別することを特徴とする実施形態２に記載の方法。
実施形態６：
前記１つ又は複数の論理オブジェクト識別子の受信に応答して、特定のエクステントが前記１つ又は複数の論理オブジェクト識別子を含むことを示すように、エクステント−オブジェクトマッピングを更新する工程を含むことを特徴とする実施形態４に記載の方法。
実施形態７：
仮想化コンピュータシステムのデータ記憶システムにおいて、データに対する要求を受信する工程、
前記データが記憶される仮想ロケーションを特定する工程、
前記データが記憶される前記仮想ロケーションと、オブジェクトアドミニストレータへの仮想ロケーションの１つ又は複数のマッピングとに基づいて、前記データの物理的記憶に関連付けられたオブジェクトアドミニストレータを識別する工程、
前記オブジェクトアドミニストレータにおいて、１つ又は複数のマッピングに基づいて、前記仮想ロケーションに対応する前記データ記憶システム内の１つ又は複数の物理的ロケーションを特定する工程、
前記仮想化コンピュータシステムの前記データ記憶システムの前記１つ又は複数の物理的ロケーションからデータを検索する工程を含み、
１つ又は複数の計算装置を使用して実行されることを特徴とする方法。
実施形態８：
オブジェクトアドミニストレータにおいて、前記データが記憶される少なくとも論理エクステントを識別するデータに対する要求を受信する工程、
前記要求において識別される前記論理エクステントに属する１つ又は複数のオブジェクトを特定する工程、
前記１つ又は複数のオブジェクトの各オブジェクトについて、前記オブジェクトに属する１つ又は複数の記憶ユニット部分を特定する工程、
前記１つ又は複数のオブジェクトの各オブジェクトに対応する前記１つ又は複数の記憶ユニット部分から前記データを検索する工程、
を含むことを特徴とする実施形態７に記載の方法。
実施形態９：
前記仮想ロケーションは論理オブジェクト識別子によって識別されることを特徴とする実施形態７に記載の方法。
実施形態１０：
前記仮想ロケーションは、仮想ディスク、ファイル、又はオブジェクト内の論理ブロック番号によって識別されることを特徴とする実施形態７に記載の方法。
実施形態１１：
前記仮想ロケーションは、仮想ディスク、ファイル、又はオブジェクト内のバイトオフセットによって識別されることを特徴とする実施形態７に記載の方法。
実施形態１２：
記憶アドミニストレータにおいて、特定のデータの変形を要求するか、又は仮想化コンピュータシステムのデータ記憶システム内の１つ又は複数の新しい物理的ロケーションへの特定のデータの移動を要求する条件が生じたことを判断する工程を含み、
前記特定のデータは特定の仮想ロケーションに記憶され、
前記判断に応答して、
前記特定のデータに対応するデータを前記１つ又は複数の新しい物理的ロケーションに記憶する工程と、前記特定の仮想ロケーションが、前記特定の仮想ロケーションへの任意の参照を更新せずに、１つ又は複数の前の物理的ロケーションの代わりに、前記１つ又は複数の新しい物理的ロケーションに対応することを示すように、前記特定の仮想ロケーションに対応するマッピングを更新する工程と、
を含み、
１つ又は複数の計算装置を使用して実行されることを特徴とする方法。
実施形態１３：
仮想データセンタ内の複数の異なる記憶ユニットの性能を監視する工程、
前記監視に基づいて、前記条件が発生したと判断する工程、
を含むことを特徴とする実施形態１２に記載の方法。
実施形態１４：
前記特定のデータは第１の記憶装置に記憶され、
前記データを前記１つ又は複数の新しい物理的ロケーションに記憶する工程は、前記第１の記憶装置とは異なる第２の記憶装置に前記特定のデータを移動する工程を含むことを特徴とする実施形態１２に記載の方法。
実施形態１５：
前記条件が発生したと判断する工程は、クライアントコンピュータから異なるサービスレベルに対する要求を受信する工程を含むことを特徴とする実施形態１２に記載の方法。
実施形態１６：
前記特定のデータは特定の論理エクステントに記憶され、
前記方法は、前記判断に応答して、
更新前は、特定の仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示していたエクステント−オブジェクトマッピングを、異なる仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示すように更新する工程、又は
更新前は、特定の組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを示していたオブジェクト−記憶ユニットマッピングを、異なる組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを代わりに示すように更新する工程
のうちの１つ又は複数を実行する工程を含み、
１つ又は複数の計算装置を使用して実行されることを特徴とする実施形態１２に記載の方法。
実施形態１７：
前記条件が発生したと判断する工程は、少なくとも特定の記憶ユニットが適宜実行してないと判断する工程を含み、前記特定の記憶ユニットは、前記特定の組の記憶ユニット部分に含まれ、且つ前記異なる組の記憶ユニット部分に含まれないことを特徴とする実施形態１６に記載の方法。
実施形態１８：
前記判断に応答して、更新前は、前記特定の組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを示していたオブジェクト−記憶ユニットマッピングを、前記異なる組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを代わりに示すように更新する工程を含み、
前記判断に応答して、前記特定のデータの１つ又は複数の仮想ロケーションを識別する論理エクステントロケーション情報に更新は行われないことを特徴とする実施形態１６に記載の方法。
実施形態１９：
前記条件が発生したと判断する工程は、前記特定のデータに対応するサービスレベルが変更されたと判断する工程を含み、
前記方法は、
更新前は、前記特定の仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示していた前記エクステント−オブジェクトマッピングを、前記異なる仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを代わりに示すように更新する工程を含むことを特徴とする実施形態１６に記載の方法。
実施形態２０：
前記異なる組の記憶ユニット部分の少なくとも２つの記憶ユニット部分は、２つの異なる記憶ユニット装置の部分であることを特徴とする実施形態１６に記載の方法。
実施形態２１：
前記特定の組の記憶ユニット部分は、前記異なる組の記憶ユニット部分に含まれない特定の記憶ユニット部分を含むことを特徴とする実施形態１６に記載の方法。
実施形態２２：
前記異なる組の記憶ユニット部分は、１つ又は複数の追加の記憶ユニット部分に加えて、前記特定の組の記憶ユニット部分内の各記憶ユニット部分を含むことを特徴とする実施形態１６に記載の方法。
実施形態２３：
２つの異なるタイプの変形を１つ又は複数のデータ部分に同時に適用する工程を含むことを特徴とする実施形態１６に記載の方法。
実施形態２４：
前記特定のデータは、論理エクステントに属する第１のオブジェクトに記憶される第１のデータ部分と、同じ論理エクステントに属する第２のオブジェクトに記憶される第２のデータ部分とを含み、
前記方法は、
単一の入力又は出力動作において、前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程を含み、
前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程は、
第１のタイプの変形を前記第１のデータ部分に適用する工程、前記第１のデータ部分の変形されたものを、前記第１のオブジェクトとは異なる第１の新しいオブジェクトに記憶する工程、前記第１のタイプの変形とは異なる第２のタイプの変形を前記第２のデータ部分に適用する工程、前記第２のデータ部分の変形されたものを、前記第２のオブジェクトとは異なる第２の新しいオブジェクトに記憶する工程、前記第１の新しいオブジェクト及び第２の新しいオブジェクトが前記論理エクステントに属することを示すように、前記論理エクステントに対応するマッピングを更新する工程を、含むことを特徴とする実施形態１６に記載の方法。
実施形態２５：
前記特定のデータは、仮想記憶オブジェクトに属する第１の記憶ユニット部分に記憶される第１のデータ部分と、同じ仮想記憶オブジェクトに属する第２の記憶ユニット部分に記憶される第２のデータ部分とを含み、
前記方法は、
単一の入力／出力動作において、前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程を含み、
前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程は、
第１のタイプの変形を前記第１のデータ部分に適用する工程、前記第１のデータ部分の変形されたものを、前記第１の記憶ユニット部分とは異なる第１の新しい記憶ユニット部分に記憶する工程、前記第１のタイプの変形とは異なる第２のタイプの変形を前記第２のデータ部分に適用する工程、前記第２のデータ部分の変形されたものを、前記第２の記憶ユニット部分とは異なる第２の新しい記憶ユニット部分に記憶する工程、前記第１の新しい記憶ユニット部分及び第２の新しい記憶ユニット部分が前記仮想記憶オブジェクトに属することを示すように、前記仮想記憶オブジェクトに対応するマッピングを更新する工程を、含むことを特徴とする実施形態１６に記載の方法。
実施形態２６：
１つ又は複数の命令シーケンスを含む非一時的コンピュータ可読記憶媒体において、前記命令シーケンスは、１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
コンピュータを使用して、データを記憶する要求を受信する工程、
仮想化コンピュータシステムのデータ記憶システムに前記データを記憶させる工程、
前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される１つ又は複数の仮想ロケーションを識別するデータロケーションレコードを記憶する工程、
を実行させることを特徴とする非一時的コンピュータ可読記憶媒体。
実施形態２７：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
オブジェクトアドミニストレータに、前記データを記憶する命令を送信する工程、
前記命令の送信に応答して、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される仮想ロケーションを識別する１つ又は複数の仮想ロケーション識別子を受信する工程、
を更に実行させることを特徴とする実施形態２６に記載の非一時的コンピュータ可読記憶媒体。
実施形態２８：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記命令の送信に応答して、前記データが記憶される論理エクステントを識別する１つ又は複数の論理エクステント識別子を受信する工程を更に実行させ、
前記論理エクステント識別子は、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される前記１つ又は複数の論理エクステントを識別することを特徴とする実施形態２７に記載の非一時的コンピュータ可読記憶媒体。
実施形態２９：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記命令の送信に応答して、前記データが記憶される論理ブロックを識別する１つ又は複数の論理ブロック識別子を受信する工程を更に実行させ、
前記論理ブロックは、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される前記１つ又は複数の論理ブロックを識別することを特徴とする実施形態２７に記載の非一時的コンピュータ可読記憶媒体。
実施形態３０：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記命令の送信に応答して、前記データが記憶される論理オブジェクトを識別する１つ又は複数の論理オブジェクト識別子を受信する工程を更に実行させ、
前記論理オブジェクトは、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される前記１つ又は複数の論理オブジェクトを識別することを特徴とする実施形態２７に記載の非一時的コンピュータ可読記憶媒体。
実施形態３１：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記１つ又は複数の論理オブジェクト識別子の受信に応答して、特定のエクステントが前記１つ又は複数の論理オブジェクト識別子を含むことを示すように、エクステント−オブジェクトマッピングを更新する工程を更に実行させることを特徴とする実施形態２９に記載の非一時的コンピュータ可読記憶媒体。
実施形態３２：
１つ又は複数の命令シーケンスを含む非一時的コンピュータ可読記憶媒体において、前記命令シーケンスは、１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
仮想化コンピュータシステムのデータ記憶システムにおいて、データに対する要求を受信する工程、
前記データが記憶される仮想ロケーションを特定する工程、
前記データが記憶される前記仮想ロケーションと、オブジェクトアドミニストレータへの仮想ロケーションの１つ又は複数のマッピングとに基づいて、前記データの物理的記憶に関連付けられたオブジェクトアドミニストレータを識別する工程、
前記オブジェクトアドミニストレータにおいて、１つ又は複数のマッピングに基づいて、前記仮想ロケーションに対応する前記データ記憶システム内の１つ又は複数の物理的ロケーションを特定する工程、
前記仮想化コンピュータシステムの前記データ記憶システムの前記１つ又は複数の物理的ロケーションからデータを検索する工程
を実行させることを特徴とする非一時的コンピュータ可読記憶媒体。
実施形態３３：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
オブジェクトアドミニストレータにおいて、前記データが記憶される少なくとも論理エクステントを識別するデータに対する要求を受信する工程、
前記要求において識別される前記論理エクステントに属する１つ又は複数のオブジェクトを特定する工程、
前記１つ又は複数のオブジェクトの各オブジェクトについて、前記オブジェクトに属する１つ又は複数の記憶ユニット部分を特定する工程、
前記１つ又は複数のオブジェクトの各オブジェクトに対応する前記１つ又は複数の記憶ユニット部分から前記データを検索する工程、
を更に実行させることを特徴とする実施形態３２に記載の非一時的コンピュータ可読記憶媒体。
実施形態３４：
前記仮想ロケーションは、論理オブジェクト識別子によって識別されることを特徴とする実施形態３２に記載の非一時的コンピュータ可読記憶媒体。
実施形態３５：
前記仮想ロケーションは、仮想ディスク、ファイル、又はオブジェクト内の論理ブロック番号によって識別されることを特徴とする実施形態３２に記載の非一時的コンピュータ可読記憶媒体。
実施形態３６：
前記仮想ロケーションは、仮想ディスク、ファイル、又はオブジェクト内のバイトオフセットによって識別されることを特徴とする実施形態３２に記載の非一時的コンピュータ可読記憶媒体。
実施形態３７：
１つ又は複数の命令シーケンスを含む非一時的コンピュータ可読記憶媒体において、前記命令シーケンスは、１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
記憶アドミニストレータにおいて、特定のデータの変形を要求するか、又は仮想化コンピュータシステムのデータ記憶システム内の１つ又は複数の新しい物理的ロケーションへの特定のデータの移動を要求する条件が生じたと判断する工程を実行させ、
前記特定のデータは特定の仮想ロケーションに記憶され、
前記判断に応答して、
前記特定のデータに対応するデータを前記１つ又は複数の新しい物理的ロケーションに記憶する工程と、前記特定の仮想ロケーションが、前記特定の仮想ロケーションへの任意の参照を更新せずに、１つ又は複数の前の物理的ロケーションの代わりに、前記１つ又は複数の新しい物理的ロケーションに対応することを示すように、前記特定の仮想ロケーションに対応するマッピングを更新する工程とを、実行させることを特徴とする非一時的コンピュータ可読記憶媒体。
実施形態３８：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
仮想データセンタ内の複数の異なる記憶ユニットの性能を監視する工程、
前記監視に基づいて、前記条件が発生したと判断する工程
を更に実行させることを特徴とする実施形態３７に記載の非一時的コンピュータ可読記憶媒体。
実施形態３９：
前記特定のデータは第１の記憶装置に記憶され、
前記データを前記１つ又は複数の新しい物理的ロケーションに記憶する工程は、前記第１の記憶装置とは異なる第２の記憶装置に前記特定のデータを移動する工程を含むことを特徴とする実施形態３７に記載の非一時的コンピュータ可読記憶媒体。
実施形態４０：
前記条件が発生したと判断する工程は、クライアントコンピュータから異なるサービスレベルに対する要求を受信する工程を含むことを特徴とする実施形態３７に記載の非一時的コンピュータ可読記憶媒体。
実施形態４１：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記特定のデータは特定の論理エクステントに記憶され、
前記判断に応答して、
更新前は、特定の仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示していたエクステント−オブジェクトマッピングを、異なる仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示すように更新する工程、又は
更新前は、特定の組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを示していたオブジェクト−記憶ユニットマッピングを、異なる組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを代わりに示すように更新する工程
のうちの１つ又は複数を更に実行させることを特徴とする実施形態３７に記載の非一時的コンピュータ可読記憶媒体。
実施形態４２：
前記条件が発生したと判断する工程は、少なくとも特定の記憶ユニットが適宜実行してないと判断する工程を含み、
前記特定の記憶ユニットは、前記特定の組の記憶ユニット部分に含まれ、且つ前記異なる組の記憶ユニット部分に含まれないことを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態４３：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記判断に応答して、更新前は、前記特定の組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを示していたオブジェクト−記憶ユニットマッピングを、異なる組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを代わりに示すように更新する工程を更に実行させ、
前記判断に応答して、前記特定のデータの１つ又は複数の仮想ロケーションを識別する論理エクステントロケーション情報に更新は行われないことを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態４４：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記条件が発生したと判断する工程は、前記特定のデータに対応するサービスレベルが変更されたと判断する工程を実行させ、
更新前は、前記特定の仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示していた前記エクステント−オブジェクトマッピングを、前記異なる仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを代わりに示すように更新する工程を更に実行させることを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態４５：
前記異なる組の記憶ユニット部分の少なくとも２つの記憶ユニット部分は、２つの異なる記憶ユニット装置の部分であることを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態４６：
前記特定の組の記憶ユニット部分は、前記異なる組の記憶ユニット部分に含まれない特定の記憶ユニット部分を含むことを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態４７：
前記異なる組の記憶ユニット部分は、１つ又は複数の追加の記憶ユニット部分に加えて、前記特定の組の記憶ユニット部分内の各記憶ユニット部分を含むことを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態４８：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
２つの異なるタイプの変形を１つ又は複数のデータ部分に同時に適用する工程を更に実行させることを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態４９：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記特定のデータは、論理エクステントに属する第１のオブジェクトに記憶される第１のデータ部分と、同じ論理エクステントに属する第２のオブジェクトに記憶される第２のデータ部分とを含み、
単一の入力又は出力動作において、前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程を更に実行させ、
前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程は、
第１のタイプの変形を前記第１のデータ部分に適用する工程、前記第１のデータ部分の変形されたものを、前記第１のオブジェクトとは異なる第１の新しいオブジェクトに記憶する工程、前記第１のタイプの変形とは異なる第２のタイプの変形を前記第２のデータ部分に適用する工程、前記第２のデータ部分の変形されたものを、前記第２のオブジェクトとは異なる第２の新しいオブジェクトに記憶する工程、前記第１の新しいオブジェクト及び第２の新しいオブジェクトが前記論理エクステントに属することを示すように、前記論理エクステントに対応するマッピングを更新する工程を、含むことを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態５０：
前記命令シーケンスが、前記１つ又は複数のプロセッサによって実行されると、前記１つ又は複数のプロセッサに、
前記特定のデータは、仮想記憶オブジェクトに属する第１の記憶ユニット部分に記憶される第１のデータ部分と、同じ仮想記憶オブジェクトに属する第２の記憶ユニット部分に記憶される第２のデータ部分とを含み、
単一の入力／出力動作において、前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程を更に実行させ、前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程を更に実行させ、
該工程は、
第１のタイプの変形を前記第１のデータ部分に適用する工程、前記第１のデータ部分の変形されたものを、前記第１の記憶ユニット部分とは異なる第１の新しい記憶ユニット部分に記憶する工程、前記第１のタイプの変形とは異なる第２のタイプの変形を前記第２のデータ部分に適用する工程、前記第２のデータ部分の変形されたものを、前記第２の記憶ユニット部分とは異なる第２の新しい記憶ユニット部分に記憶する工程、前記第１の新しい記憶ユニット部分及び第２の新しい記憶ユニット部分が前記仮想記憶オブジェクトに属することを示すように、前記仮想記憶オブジェクトに対応するマッピングを更新する工程
を、含むことを特徴とする実施形態４１に記載の非一時的コンピュータ可読記憶媒体。
実施形態５１：
１つ又は複数のプロセッサ、
前記１つ又は複数のプロセッサに結合され、かつ、データを記憶する要求又はデータを検索する要求を受信するように構成されるデータ要求ハンドラ、
前記１つ又は複数のプロセッサに結合され、かつ、複数のデータ項目の各データ項目について、前記データが記憶される任意の物理的ロケーションを識別せずに、前記データが記憶される１つ又は複数の仮想ロケーションを識別するデータロケーション情報を記憶するメモリ、
を備えることを特徴とする記憶アドミニストレータ装置。
実施形態５２：
前記データロケーション情報は、前記データが記憶される１つ又は複数の論理エクステントを識別することを特徴とする実施形態５１に記載の記憶アドミニストレータ装置。
実施形態５３：
前記データロケーション情報は、前記データが記憶される１つ又は複数の論理ブロックを識別することを特徴とする実施形態５１に記載の記憶アドミニストレータ装置。
実施形態５４：
前記データロケーション情報は、前記データが記憶される１つ又は複数の論理オブジェクトを識別することを特徴とする実施形態５１に記載の記憶アドミニストレータ装置。
実施形態５５：
１つ又は複数のプロセッサ、
前記１つ又は複数のプロセッサに結合され、及び仮想化コンピュータシステムの記憶システムの１つ又は複数の新しい記憶ユニットをインスタンス化するように構成されるインスタンシエータ、
複数の仮想ロケーションの各仮想ロケーションについて、前記仮想ロケーションに対応する１つ又は複数の物理的ロケーションを示すロケーション情報、
前記１つ又は複数のプロセッサに結合され、及び１つ又は複数の命令シーケンスを記憶するコンピュータメモリ、
を備え、
前記命令シーケンスは、前記１つ又は複数のプロセッサによって実行されると、
特定のデータの変形を要求するか、又は前記１つ又は複数の新しい物理的ロケーションへの特定のデータの移動を要求する条件が発生したと判断する工程を実行し、
前記特定のデータは特定の仮想ロケーションに記憶され、
前記判断に応答して、
前記特定のデータに対応するデータを前記１つ又は複数の新しい物理的ロケーションに記憶する工程と、前記特定の仮想ロケーションが、前記特定の仮想ロケーションへの任意の参照を更新せずに、前の物理的ロケーションの代わりに、前記１つ又は複数の新しい物理的ロケーションに対応することを示すように、前記特定の仮想ロケーションに対応するマッピングを更新する工程とを、実行させることを特徴とする記憶アドミニストレータ装置。
実施形態５６：
前記命令シーケンスが、実行されると、
仮想データセンタ内の複数の異なる記憶ユニットの性能を監視する工程、
前記監視に基づいて、前記条件が発生したと判断する工程
を更に実行させることを特徴とする実施形態５５に記載の記憶アドミニストレータ装置。
実施形態５７：
前記特定のデータは第１の記憶装置に記憶され、
前記データを前記１つ又は複数の新しい物理的ロケーションに記憶する工程は、前記第１の記憶装置とは異なる第２の記憶装置に前記特定のデータを移動する工程を含むことを特徴とする実施形態５５に記載の記憶アドミニストレータ装置。
実施形態５８：
前記条件が発生したと判断する工程は、クライアントコンピュータから異なるサービスレベルに対する要求を受信する工程を含むことを特徴とする実施形態５５に記載の記憶アドミニストレータ装置。
実施形態５９：
前記命令シーケンスが、実行されると、
前記特定のデータは特定の論理エクステントに記憶され、
前記判断に応答して、
更新前は、特定の仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示していたエクステント−オブジェクトマッピングを、異なる仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示すように更新する工程、又は
更新前は、特定の組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを示していたオブジェクト−記憶ユニットマッピングを、異なる組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを代わりに示すように更新する工程
のうちの１つ又は複数を更に実行させることを特徴とする実施形態５５に記載の記憶アドミニストレータ装置。
実施形態６０：
前記条件が発生したと判断する工程は、少なくとも特定の記憶ユニットが適宜実行してないと判断する工程を含み、
前記特定の記憶ユニットは、前記特定の組の記憶ユニット部分に含まれ、かつ、前記異なる組の記憶ユニット部分に含まれないことを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６１：
前記命令シーケンスが、実行されると、
前記判断に応答して、更新前は、前記特定の組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを示していたオブジェクト−記憶ユニットマッピングを、前記異なる組の記憶ユニット部分が前記特定の仮想記憶オブジェクトに属することを代わりに示すように更新する工程を更に実行させ、
前記判断に応答して、前記特定のデータの１つ又は複数の仮想ロケーションを識別する論理エクステントロケーション情報に更新は行われないことを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６２：
前記命令シーケンスが、実行されると、
前記条件が発生したと判断する工程は、前記特定のデータに対応するサービスレベルが変更されたと判断する工程を含み、
更新前は、前記特定の仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを示していた前記エクステント−オブジェクトマッピングを、前記異なる仮想記憶オブジェクトが前記特定の論理エクステントに属する情報を記憶することを代わりに示すように更新する工程を更に実行させることを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６３：
前記異なる組の記憶ユニット部分の少なくとも２つの記憶ユニット部分は、２つの異なる記憶ユニット装置の部分であることを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６４：
前記特定の組の記憶ユニット部分は、前記異なる組の記憶ユニット部分に含まれない特定の記憶ユニット部分を含むことを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６５：
前記異なる組の記憶ユニット部分は、１つ又は複数の追加の記憶ユニット部分に加えて、前記特定の組の記憶ユニット部分内の各記憶ユニット部分を含むことを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６６：
２つの異なるタイプの変形を１つ又は複数のデータ部分に同時に適用する工程を特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６７：
前記特定のデータは、論理エクステントに属する第１のオブジェクトに記憶される第１のデータ部分と、同じ論理エクステントに属する第２のオブジェクトに記憶される第２のデータ部分とを含み、
前記命令シーケンスが、実行されると、
単一の入力又は出力動作において、前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程を更に実行させ、
前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程は、
第１のタイプの変形を前記第１のデータ部分に適用する工程、前記第１のデータ部分の変形されたものを、前記第１のオブジェクトとは異なる第１の新しいオブジェクトに記憶する工程、前記第１のタイプの変形とは異なる第２のタイプの変形を前記第２のデータ部分に適用する工程、前記第２のデータ部分の変形されたものを、前記第２のオブジェクトとは異なる第２の新しいオブジェクトに記憶する工程、前記第１の新しいオブジェクト及び第２の新しいオブジェクトが前記論理エクステントに属することを示すように、前記論理エクステントに対応するマッピングを更新する工程を、含むことを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６８：
前記特定のデータは、仮想記憶オブジェクトに属する第１の記憶ユニット部分に記憶される第１のデータ部分と、同じ仮想記憶オブジェクトに属する第２の記憶ユニット部分に記憶される第２のデータ部分とを含み、
前記命令シーケンスが、実行されると、
単一の入力／出力動作において、前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程を更に実行させ、
前記第１のデータ部分及び前記第２のデータ部分の両方を同時に変形する工程は、
第１のタイプの変形を前記第１のデータ部分に適用する工程、前記第１のデータ部分の変形されたものを、前記第１の記憶ユニット部分とは異なる第１の新しい記憶ユニット部分に記憶する工程、前記第１のタイプの変形とは異なる第２のタイプの変形を前記第２のデータ部分に適用する工程、前記第２のデータ部分の変形されたものを、前記第２の記憶ユニット部分とは異なる第２の新しい記憶ユニット部分に記憶する工程、前記第１の新しい記憶ユニット部分及び第２の新しい記憶ユニット部分が前記仮想記憶オブジェクトに属することを示すように、前記仮想記憶オブジェクトに対応するマッピングを更新する工程を、含むことを特徴とする実施形態５９に記載の記憶アドミニストレータ装置。
実施形態６９：
１つ又は複数のプロセッサ、
前記１つ又は複数のプロセッサに結合され、及び新しい記憶ユニット部分をインスタンス化するように構成される記憶ユニット部分インスタンシエータ、
前記１つ又は複数のプロセッサに結合され、及び複数の仮想記憶オブジェクトの各仮想記憶オブジェクトについて、第１の記憶ユニット部分が特定の仮想記憶オブジェクトに属することの指示を含む前記仮想記憶オブジェクトに属する１つ又は複数の記憶ユニット部分を示すデータロケーションレコードを記憶するコンピュータメモリ
を備え、
前記コンピュータメモリは１つ又は複数の命令シーケンスを含み、前記命令シーケンスは、前記１つ又は複数のプロセッサによって実行されると、
新しい記憶ユニット部分を要求する工程、
前記第１の記憶ユニット部分に記憶されるデータを前記新しい記憶ユニット部分に転送する工程、
前記特定の仮想記憶オブジェクトへの任意の仮想ロケーション参照を変更せずに、前記特定の仮想記憶オブジェクトが、前記第１の記憶ユニット部分の代わりに、前記新しい記憶ユニット部分を含むことを示すように、前記データロケーションレコードを更新する工程
を実行させることを特徴とする記憶アドミニストレータ装置。
実施形態７０：
前記命令シーケンスが、実行されると、
１つ又は複数の記憶ユニット部分は前記仮想記憶オブジェクトに属し、
前記１つ又は複数の記憶ユニット部分にわたる前記特定の仮想記憶オブジェクトの現在の分散が、可用性又は性能目的に合わないと判断する工程、
前記判断に応答して、前記新しい記憶ユニット部分を要求し、及び前記データを転送する工程を、更に実行させることを特徴とする実施形態６９に記載の記憶アドミニストレータ装置。
実施形態７１：
前記命令シーケンスが、実行されると、
前記第１の記憶ユニット部分及び第２の記憶ユニット部分が両方とも同じ記憶ユニットの部分であると判断する工程を実行させ、
前記第１の記憶ユニット部分及び前記第２のユニット部分は両方とも、前記特定の仮想記憶オブジェクトに属し、
前記判断に応答して、前記新しい記憶ユニット部分を要求し、及び前記データを転送する工程を、更に実行させることを特徴とする実施形態６９に記載の記憶アドミニストレータ装置。