(57)【要約】【課題】オブジェクトストア内にストアされたオブジェクトへの多数のクライアントによる同時アクセスをサポートするよう意図された、オブジェクトストアのためのファイルシステムインタフェースを提供する。【解決手段】１つの方法によれば、オブジェクトストアについての階層名前空間へのルートディレクトリのアブストラクションが、クライアントに露出される。オブジェクトストアは、複数のホストコンピュータに収容されたまたは直接に取り付けられた複数の物理ストレージデバイスにより支持され、ストアされたオブジェクトへと一意識別子をマッピングするフラットな名前空間を使用して、そのストアされたオブジェクトを内部的に追跡する。ルートディレクトリのサブディレクトリとして現れるトップレベルオブジェクトの作成が可能であり、各トップレベルオブジェクトは、任意の指定ファイルシステムに従って編成され得る別個の名前空間を有するストレージデバイスの別個のアブストラクションを表す。【選択図】  図２
2018022529.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトストア内にストアされたオブジェクトへの多数のクライアントによる同時アクセスをサポートするよう意図された、オブジェクトストアのためのファイルシステムインタフェースを提供する方法であって、
前記オブジェクトストアについての階層名前空間へのルートディレクトリのアブストラクションをクライアントに露出することであって、前記オブジェクトストアは、（ｉ）複数のホストコンピュータに収容されたまたは直接に取り付けられた複数の物理ストレージデバイスにより支持され、（ｉｉ）前記ストアされたオブジェクトへと一意識別子をマッピングするフラットな名前空間を使用して、そのストアされたオブジェクトを内部的に追跡する、露出することと、
前記ルートディレクトリのサブディレクトリとして現れるトップレベルオブジェクトの作成を可能とすることであって、各トップレベルオブジェクトは、任意の指定ファイルシステムに従って編成され得る別個の名前空間を有するストレージデバイスの別個のアブストラクションを表す、可能とすることと
を備える方法。
【請求項２】
少なくとも１つのトップレベルオブジェクトは、最大限界までのクライアントによる同時アクセスをサポートするよう設計されたクラスタ化ファイルシステムを含む、請求項１に記載の方法。
【請求項３】
前記トップレベルオブジェクトは、前記クラスタ化ファイルシステム内にストアされたファイルへのアクセスを前記クライアントが試みたときに、前記ルートディレクトリの前記アブストラクションのクライアントのローカルバージョンでのサブディレクトリとして自動マウントされる、請求項２に記載の方法。
【請求項４】
前記トップレベルオブジェクトは、前記クラスタ化ファイルシステム内にストアされたファイルを表すファイルオブジェクトのためのメタデータをストアするよう構成され、前記ファイルオブジェクトは、前記トップレベルオブジェクトとは別個の前記オブジェクトストア内にストアされる、請求項２に記載の方法。
【請求項５】
ファイルオブジェクトは、前記ファイルの別個の部分を表し、かつ前記ファイルオブジェクトとは別個の前記オブジェクトストア内にストアされた対応するコンポーネントオブジェクトの位置を発見するために前記フラットな名前空間により使用可能な一意識別子をストアするよう構成される、請求項４に記載の方法。
【請求項６】
ファイルオブジェクトのために前記トップレベルオブジェクト内にストアされた前記メタデータは少なくとも、前記オブジェクトストア内の前記ファイルオブジェクトの位置を発見するために前記フラットな名前空間により使用可能な一意識別子を備えるファイル記述子を含む、請求項４に記載の方法。
【請求項７】
前記ファイルオブジェクトにより表される前記ファイルは、前記複数のホストコンピュータのうちの１つで実行中の仮想マシンにより使用される仮想ディスクファイルである、請求項６に記載の方法。
【請求項８】
前記トップレベルオブジェクトは、前記複数のホストコンピュータのうちのいずれかでインスタンス化されることが可能な複数の仮想マシンのうちの１つによってのみ利用されるファイルオブジェクトのためのメタデータをストアするよう構成される、請求項７に記載の方法。
【請求項９】
前記トップレベルオブジェクトは、前記クラスタ化ファイルシステム内にストアされたファイルが全く前記クライアントによりアクセスされない期間の後、自動的にアンマウントされる、請求項３に記載の方法。
【請求項１０】
前記フラットな名前空間は、メモリ内データベースとして実装され、メモリ内データベースの同期化コピーが前記ホストコンピュータの各々のメモリ内にストアされる、請求項１に記載の方法。
【請求項１１】
トップレベルオブジェクトの前記指定ファイルシステム内のパス名は、クライアントが前記指定ファイルシステム内にストアされたファイルへのアクセスを試みたときに、任意の指定ファイルシステムに従って編成され得、かつ前記クライアントで自動マウントされ得る別個の名前空間を有するストレージデバイスの別個のアブストラクションを表すよう構成されるオブジェクトにマッピングされ得る、請求項１に記載の方法。
【請求項１２】
前記フラットな名前空間が、オブジェクトについて自動生成された一意識別子とのコンフリクトを報告するときに、前記オブジェクトについてのアドミニストレータ特定名称は、前記オブジェクトについての一意識別子に変換される、請求項１に記載の方法。
【請求項１３】
プロセッサ上で実行されたときに、オブジェクトストア内にストアされたオブジェクトへの多数のクライアントによる同時アクセスをサポートするよう意図された、前記オブジェクトストアのためのファイルシステムインタフェースを提供するオペレーションを実行する命令をストアする、非一時的コンピュータ可読ストレージ媒体であって、前記オペレーションが、
ストレージデバイスのアブストラクションをクラスタ内の複数のホストコンピュータへ露出することであって、前記ストレージデバイスは、前記複数のホストコンピュータ内に収容された複数の物理ストレージデバイスを集約的に備えるオブジェクトストアにより支持される、露出することと、
各々が別個のファイルシステムを表す前記オブジェクトストア内の多数のトップレベルファイルシステムオブジェクトの作成を可能とすることであって、各トップレベルファイルシステムオブジェクトは、（ｉ）その対応するファイルシステムのセマンティクスに従って応答し、（ｉｉ）前記対応するファイルシステム内にストアされたファイルを表すファイルオブジェクトのためのメタデータをストアするよう構成され、前記ファイルオブジェクトはそれらの対応するトップレベルファイルシステムオブジェクトとは別個の前記オブジェクトストア内にストアされる、可能とすることと
を備える、非一時的コンピュータ可読ストレージ媒体。
【請求項１４】
少なくとも１つのトップレベルオブジェクトは、最大限界までのクライアントによる同時アクセスをサポートするよう設計されたクラスタ化ファイルシステムを含む、請求項１３に記載のコンピュータ可読ストレージ媒体。
【請求項１５】
前記トップレベルオブジェクトは、前記クラスタ化ファイルシステム内にストアされたファイルへのアクセスを前記クライアントが試みたときに、前記ルートディレクトリの前記アブストラクションのクライアントのローカルバージョンでのサブディレクトリとして自動マウントされる、請求項１４に記載のコンピュータ可読ストレージ媒体。
【請求項１６】
前記トップレベルオブジェクトは、前記クラスタ化ファイルシステム内にストアされたファイルを表すファイルオブジェクトのためのメタデータをストアするよう構成され、前記ファイルオブジェクトは、前記トップレベルオブジェクトとは別個の前記オブジェクトストア内にストアされる、請求項１４に記載のコンピュータ可読ストレージ媒体。
【請求項１７】
ファイルオブジェクトは、前記ファイルの別個の部分を表し、前記ファイルオブジェクトとは別個の前記オブジェクトストア内にストアされた対応するコンポーネントオブジェクトの位置を発見するために前記フラットな名前空間により使用可能な一意識別子をストアするよう構成される、請求項１６に記載のコンピュータ可読ストレージ媒体。
【請求項１８】
ファイルオブジェクトのために前記トップレベルオブジェクト内にストアされた前記メタデータは少なくとも、前記オブジェクトストア内の前記ファイルオブジェクトの位置を発見するために前記フラットな名前空間により使用可能な一意識別子を備えるファイル記述子を含む、請求項１６に記載のコンピュータ可読ストレージ媒体。
【請求項１９】
前記ファイルオブジェクトにより表される前記ファイルは、前記複数のホストコンピュータのうちの１つで実行中の仮想マシンにより使用される仮想ディスクファイルである、請求項１９に記載のコンピュータ可読ストレージ媒体。
【請求項２０】
前記トップレベルオブジェクトは、前記複数のホストコンピュータのうちのいずれかでインスタンス化されることが可能な複数の仮想マシンのうちの１つによってのみ利用されるファイルオブジェクトのためのメタデータをストアするよう構成される、請求項１９に記載のコンピュータ可読ストレージ媒体。
【請求項２１】
前記フラットな名前空間は、メモリ内データベースとして実装され、メモリ内データベースの同期化コピーが前記ホストコンピュータの各々のメモリ内にストアされる、請求項１３に記載のコンピュータ可読ストレージ媒体。
【請求項２２】
トップレベルオブジェクトの前記指定ファイルシステム内のパス名は、クライアントが前記指定ファイルシステム内にストアされたファイルへのアクセスを試みたときに、任意の指定ファイルシステムに従って編成され得、かつ前記クライアントで自動マウントされ得る別個の名前空間を有するストレージデバイスの別個のアブストラクションを表すよう構成されるオブジェクトにマッピングされ得る、請求項１３に記載のコンピュータ可読ストレージ媒体。
【請求項２３】
プロセッサと、
モジュールをホストするメモリであって、前記プロセッサ上で実行されたときに、オブジェクトストア内にストアされたオブジェクトへの多数のクライアントによる同時アクセスをサポートするよう意図された、前記オブジェクトストアのためのファイルシステムインタフェースを提供するオペレーションを実行するメモリと
を備えるコンピュータシステムであって、前記オペレーションが、
ストレージデバイスのアブストラクションをクラスタ内の複数のホストコンピュータへ露出することであって、前記ストレージデバイスは、前記複数のホストコンピュータ内に収容された複数の物理ストレージデバイスを集約的に備えるオブジェクトストアにより支持される、露出することと、
各々が別個のファイルシステムを表す前記オブジェクトストア内の多数のトップレベルファイルシステムオブジェクトの作成を可能とすることであって、各トップレベルファイルシステムオブジェクトは、（ｉ）その対応するファイルシステムのセマンティクスに従って応答し、（ｉｉ）前記対応するファイルシステム内にストアされたファイルを表すファイルオブジェクトのためのメタデータをストアするよう構成され、前記ファイルオブジェクトはそれらの対応するトップレベルファイルシステムオブジェクトとは別個の前記オブジェクトストア内にストアされる、可能とすることと
を備える、コンピュータシステム。
【請求項２４】
少なくとも１つのトップレベルオブジェクトは、最大限界までのクライアントによる同時アクセスをサポートするよう設計されたクラスタ化ファイルシステムを含む、請求項２３に記載のコンピュータシステム。
【請求項２５】
前記トップレベルオブジェクトは、前記クラスタ化ファイルシステム内にストアされたファイルへのアクセスを前記クライアントが試みたときに、前記ルートディレクトリの前記アブストラクションのクライアントのローカルバージョンでのサブディレクトリとして自動マウントされる、請求項２４に記載のコンピュータシステム。
【請求項２６】
前記トップレベルオブジェクトは、前記クラスタ化ファイルシステム内にストアされたファイルを表すファイルオブジェクトのためのメタデータをストアするよう構成され、前記ファイルオブジェクトは、前記トップレベルオブジェクトとは別個の前記オブジェクトストア内にストアされる、請求項２４に記載のコンピュータシステム。
【請求項２７】
ファイルオブジェクトは、前記ファイルの別個の部分を表し、前記ファイルオブジェクトとは別個の前記オブジェクトストア内にストアされた対応するコンポーネントオブジェクトの位置を発見するために前記フラットな名前空間により使用可能な一意識別子をストアするよう構成される、請求項２６に記載のコンピュータシステム。
【請求項２８】
ファイルオブジェクトのために前記トップレベルオブジェクト内にストアされた前記メタデータは少なくとも、前記オブジェクトストア内の前記ファイルオブジェクトの位置を発見するために前記フラットな名前空間により使用可能な一意識別子を備えるファイル記述子を含む、請求項２６に記載のコンピュータシステム。
【請求項２９】
前記ファイルオブジェクトにより表される前記ファイルは、前記複数のホストコンピュータのうちの１つで実行中の仮想マシンにより使用される仮想ディスクファイルである、請求項２８に記載のコンピュータシステム。
【請求項３０】
前記トップレベルオブジェクトは、前記複数のホストコンピュータのうちのいずれかでインスタンス化されることが可能な複数の仮想マシンのうちの１つによってのみ利用されるファイルオブジェクトのためのメタデータをストアするよう構成される、請求項２９に記載のコンピュータシステム。
【請求項３１】
前記フラットな名前空間は、メモリ内データベースとして実装され、メモリ内データベースの同期化コピーが前記ホストコンピュータの各々のメモリ内にストアされる、請求項２３に記載のコンピュータシステム。
【請求項３２】
トップレベルオブジェクトの前記指定ファイルシステム内のパス名は、クライアントが前記指定ファイルシステム内にストアされたファイルへのアクセスを試みたときに、任意の指定ファイルシステムに従って編成され得、前記クライアントで自動マウントされ得る別個の名前空間を有するストレージデバイスの別個のアブストラクションを表すよう構成されるオブジェクトにマッピングされ得る、請求項２３に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
分散システムにより、ネットワーク内の多数のクライアントが共有リソースのプールへアクセスすることが可能である。例えば、分散ストレージシステムにより、ホストコンピュータのクラスタが、各ホストコンピュータ内に位置するか、または、それに取り付けられたローカルディスク（例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）ベースのフラッシュストレージ、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴ  Ａｔｔａｃｈｍｅｎｔ）、またはＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）磁気ディスク）を集約してストレージの単一または共有のプールを作成することが可能となる。このストレージのプール（本開示では時に「データストア」または「ストア」とも称される）は、クラスタ内の全てのホストコンピュータによりアクセス可能であり、ストレージエンティティの単一名前空間として存在し得る（ファイルの場合の階層ファイルシステム名前空間、オブジェクトの場合の一意識別子のフラットな名前空間、等のように）。ホストコンピュータ上で生成された仮想マシン等のストレージクライアントは、データストアを使用し得、例えば、仮想マシンによりその動作中にアクセスされる仮想ディスクを格納する。データストアを形成する共有ローカルディスクは異なる性能特性（例えば、容量、毎秒入力／出力またはＩＯＰＳ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｐｅｒ  Ｓｅｃｏｎｄ）能力、等）を有し得るため、仮想ディスクまたはその一部を格納するためのこのような共有ローカルディスクの使用量は、各所与の仮想マシンのニーズに基づいて仮想マシン間で分散され得る。
【０００２】
このアプローチは、企業に費用効率の高い性能を提供する。例えば、プールされたローカルディスクを使用する分散ストレージは、安価であり、かつ高度にスケーラブルで、比較的に管理が簡単である。このような分散ストレージはクラスタ内の市販品ディスクを使用可能であるので、企業は追加のストレージインフラストラクチャに投資する必要がない。しかしながら、生じる１つの課題は、クラスタ内の市販品ディスクに亘ってオブジェクトがどこにストアされるかを効率的に追跡する機構の開発、および、必要なときに如何に効率的にそれらにアクセスするか、という点にある。例えば、フラットな名前空間の利用は、オブジェクトをストアおよび取得する単純すぎる効率的手段を提供し得るものの、クライアントの既存のインタフェースに対して互換性のある方法でオブジェクトを編成するのに有用であり得る、または、異なるクライアントの異なるストレージ要件を別様に満たす、オブジェクト間の階層関係を作成するための十分な柔軟性を、それは提供しない。例えば、このようなスケーラブルなオブジェクトストア（例えば、アプリケーション、ストレージ管理ツール、仮想化ハイパーバイザ、等）を利用することができたであろう多くの既存の環境は、オブジェクトストアがストレージインタフェースに基づいてある階層ファイルシステムを提供することを要求し得る。１つの例は、仮想マシンメタデータを階層ファイルシステム内のファイルの形態でストアする、ヴイエムウェア社（ＶＭｗａｒｅ，  Ｉｎｃ．）のｖＳｐｈｅｒｅ  Ｈｙｐｅｒｖｉｓｏｒである。さらに、データストアは、データストアにストアされた同じデータに同時にアクセスし得るホストコンピュータのクラスタ間で共有されるので、データストアにより提供される単一の名前空間の管理に使用される任意のファイルシステムは、同時実行制御のための機構を有する必要がある。現在の分散またはクラスタ化ファイルシステムは、同時実行制御のある形態を通常提供する。しかしながら、それらの固有の設計における制限のために、このような現在のファイルシステムは、それらがサポート可能な同時「クライアント」（例えば、ファイルシステムにアクセスするホストコンピュータまたは仮想マシン）の数における制限を通常有する。データストアを管理するために使用される現在のファイルシステムが、同時にそれにアクセス可能なクライアントの数の限界を有すると、たとえその容量を増大させるために追加の市販品ストレージが容易にデータストアに追加可能であっても、このような追加のストレージへのアクセスのためにさらなるクライアントが追加されはしないので、高度にスケーラブルなデータストアのユーティリティは、頭打ちになる。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の一実施形態は、オブジェクトストア内にストアされたオブジェクトへの多数のクライアントによる同時アクセスをサポートするよう意図された、オブジェクトストアのためのファイルシステムインタフェースを提供する方法に関する。本方法によれば、オブジェクトストアについての階層名前空間へのルートディレクトリのアブストラクションが、クライアントに露出される。オブジェクトストアは、複数のホストコンピュータに収容されたまたは直接に取り付けられた複数の物理ストレージデバイスにより支持され、ストアされたオブジェクトへと一意識別子をマッピングするフラットな名前空間を使用して、そのストアされたオブジェクトを内部的に追跡する。ルートディレクトリのサブディレクトリとして現れるトップレベルオブジェクトの作成が可能とされ、各トップレベルオブジェクトは、任意の指定ファイルシステムに従って編成され得る別個の名前空間を有するストレージデバイスの別個のアブストラクションを表す。
【０００４】
フラットな名前空間を使用してオブジェクトを内部的にストアし、アクセスする一方で、クライアントにより使用され得る階層名前空間を層化することにより、本開示の技術は、市販品ストレージリソースの分散を使用するラージスケーラブルクラスタ化ファイルシステムをサポートするフレームワークをオファーすることが可能である。例えば、究極的にクライアントによりアクセスされ得るファイルオブジェクトを含むファイルシステムを表すトップレベルオブジェクトを作成する能力を提供して、前述のオブジェクトストアは、既存の分散またはクラスタ化ファイルシステムよりも高度なスケーラビリティをオファーする。なぜならばそれは、例えば、オブジェクトストア内の任意の特定のファイルシステムオブジェクトのために構成された任意の特定の分散クラスタ化ファイルシステム（例えば、ＶＭＷａｒｅ  ＶＭＦＳ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、等）の設計に固有の同時クライアント数の如何なる制限にも限定されないからである。すなわち、クラスタ化ファイルシステムの異なる部分は、あるオブジェクトに一方で存在する名前空間のあるサブ空間内のデータにアクセスするこのようなクライアントのサブセットによってのみ、特定のクライアントからのスケーラビリティ要件が達成される必要があるように、異なるオブジェクトに配置され得るので、オブジェクトストアのトップにおけるクラスタ化ファイルシステムの実装は、スケーラビリティアドバンテージを有する。
【０００５】
他の実施形態は、限定するわけではないが、処理ユニットに本開示の方法の１つ以上の態様を実装させ得る命令を含むコンピュータ可読媒体、ならびに、本開示の方法の１つ以上の態様を実装するよう構成された、プロセッサ、メモリおよびモジュールを有するコンピュータシステムを含む。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に係る、例示的なコンピューティング環境を示す。
【図２】一実施形態に係る、仮想ディスクを表すオブジェクトストア内に編成されたオブジェクトの例示的な階層構造を示す。
【図３】一実施形態に係る、ＶＳＡＮ（Ｖｉｒｔｕａｌ  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）モジュールのコンポーネントを示す。
【図４】一実施形態に係る、定義されたストレージポリシーに基づく仮想ディスクオブジェクト作成の方法フロー図を示す。
【図５】一実施形態に係る、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）で生じたＩ／Ｏオペレーションの取り扱いを示す。
【発明を実施するための形態】
【０００７】
図１は、一実施形態に係る、コンピューティング環境１００を示す。図示されるように、コンピューティング環境１００は、ノードで実行中の仮想マシン（ＶＭ）１１２に集約オブジェクトストア１１６を提供するために、クラスタ１１０のホストサーバまたはノード１１１に収容されるか、または直接取り付けられた市販品ローカルストレージを利用するソフトウェアベースの「仮想ストレージエリアネットワーク」（ＶＳＡＮ）環境である。以下、用語「収容された」または「に収容された」の使用は、収容され、または別様に直接に取り付けられたことの両方を包含するよう使用され得る。ノード１１１に収容されるか、または別様に直接に取り付けられたローカル市販品ストレージは、ソリッドステートドライブ（ＳＳＤ）１１７および磁気もしくはスピニングディスク１１８のうちの少なくとも一つの組み合わせを含み得る。ある実施形態において、ＳＳＤ１１７は、Ｉ／Ｏ性能向上のための磁気ディスク１１８手前の読み出しキャッシュおよび書き込みバッファのうち少なくともいずれか一方として機能する。下記に詳述されるように、各ノード１１１は、（例えば、オブジェクトストアにオブジェクトを作成する、等の）ストレージ管理ワークフローを自動化し、オブジェクトストア内のオブジェクトに対し指定された所定のストレージポリシーに基づいて、（例えば、オブジェクトストア内のオブジェクトに対するＩ／Ｏオペレーションを取り扱う、等の）オブジェクトストア内のオブジェクトへのアクセスを提供するために、ストレージ管理モジュール（本開示においては、「ＶＳＡＮモジュール」と称される）を含み得る。例えば、ＶＭは、その使用目的に応じてその「仮想ディスク」のための特定のストレージ要件（例えば、容量、可用性、ＩＯＰＳ等）を有するようアドミニストレータにより最初に構成され得るため、アドミニストレータは、このような可用性、容量およびＩＯＰＳ等を定義する各ＶＭ毎のストレージプロファイルまたはポリシーを定義し得る。さらに後述するように、ＶＳＡＮモジュールは、定義されたポリシーに基づいてオブジェクトストアの物理ストレージリソースにより支持することにより、指定された仮想ディスクのために「オブジェクト」を作成し得る。
【０００８】
仮想化管理プラットフォーム１０５は、ノード１１１のクラスタ１１０と関連付けられる。仮想化管理プラットフォーム１０５により、アドミニストレータがノード１１１でのＶＭの構成及び生成を管理することが可能となる。図１の実施形態に示されているように、各ノード１１１は、仮想化層またはハイパーバイザ１１３、ＶＳＡＮモジュール１１４、および（ＳＳＤ１１７およびノード１１１の磁気ディスク１１８を含む）ハードウェア１１９を含む。ハイパーバイザ１１３を通じて、ノード１１１は、多数のＶＭ１１２を立ち上げて実行することができる。ハイパーバイザ１１３は、部分的に、各ＶＭ１１２についてコンピューティングリソース（例えば、処理能力、ランダムアクセスメモリ等）を適切に割り当てるためにハードウェア１１９を管理する。さらに、後述するように、各ハイパーバイザ１１３は、その対応するＶＳＡＮモジュール１１４を通じて、仮想ディスク（またはその一部）用のストレージとしての使用のためにハードウェア１１９に位置するストレージリソース（例えば、ＳＳＤ１１７および磁気ディスク１１８）へのアクセスと、クラスタ１１０内の任意のノード１１１に存在する任意のＶＭ１１２によりアクセスされ得る他の関連ファイルへのアクセスとを提供する。特定の実施形態において、ヴィエムウェア社（ＶＭｗａｒｅ，  Ｉｎｃ．）のヴィ・スフィア・ハイパーバイザ（ｖＳｐｈｅｒｅ  Ｈｙｐｅｒｖｉｓｏｒ）が、ハイパーバイザ１１３としてノード１１１にインストールされ得、ヴィエムウェアのヴィ・センタサーバ（ｖＣｅｎｔｅｒ  Ｓｅｒｖｅｒ）が仮想化管理プラットフォーム１０５として使用され得る。
【０００９】
一実施形態において、ＶＳＡＮモジュール１１４はハイパーバイザ１１３内に「ＶＳＡＮ」デバイスドライバとして実装される。このような実施形態において、ＶＳＡＮモジュール１１４は、概念的「ＶＳＡＮ」１１５へのアクセスを提供し、ＶＳＡＮ１１５を介してアドミニストレータがオブジェクトストア１１６により支持される多数のトップレベル「デバイス」または名前空間オブジェクトを生成し得る。よくある状況の１つとして、デバイスオブジェクトの作成中、アドミニストレータは、デバイスオブジェクトのための特定のファイルシステムを規定し得る（このようなデバイスオブジェクトは以下、「ファイルシステムオブジェクト」とも称される）。例えば、一実施形態において、各ノード１１１内の各ハイパーバイザ１１３は、ブートプロセスの間、ＶＳＡＮモジュール１１４により露出される概念的グローバル名前空間のための／ｖｓａｎ／ルートノードを発見し得る。例えば、ＶＳＡＮモジュール１１４により露出されるＡＰＩにアクセスすることにより、ハイパーバイザ１１３は、ＶＳＡＮ１１５にその時点で存在する全てのトップレベルファイルシステムオブジェクト（または他のタイプのトップレベルデバイスオブジェクト）を決定し得る。ＶＭ（または他のクライアント）がファイルシステムオブジェクトのうちの１つにアクセスしようと試みると、ハイパーバイザ１１３は、そのときのファイルシステムオブジェクトを動的に「自動マウント」し得る。ある実施形態において、ファイルシステムオブジェクト内のオブジェクトへのアクセスが中止またはある期間アイドルとなるとき、ファイルシステムオブジェクトはさらに、周期的に「自動アンマウント」され得る。ＶＳＡＮ１１５を通じてアクセス可能なファイルシステムオブジェクト（例えば、／ｖｓａｎ／ｆｓ＿ｎａｍｅ１、等）は、例えば、ＶＭへの同時アクセス中に同時実行制御を提供するよう設計された、ヴィエムウェアの分散またはクラスタ化ファイルシステム、ＶＭＦＳ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）のような、特定のファイルシステムのセマンティクスをエミュレートするよう実装され得る。ＶＳＡＮ１１５が多数のファイルシステムオブジェクトをサポートするため、任意の特定のクラスタ化ファイルシステムの限定に縛られることなくオブジェクトストア１１６を通じたストレージリソースの提供が可能である。例えば、多くのクラスタ化ファイルシステム（例えば、ＶＭＦＳ等）は、ある量のノード１１１をサポートするためにだけスケール可能である。多数のトップレベルファイルシステムオブジェクトサポートを提供することにより、ＶＳＡＮ１１５は、このようなクラスタ化ファイルシステムのスケーラビリティ制限を克服する。
【００１０】
下記の図２の文脈における更なる詳述に示されるように、ファイルシステムオブジェクトは、それ自身、クラスタ１１０で実行中のＶＭ１１２によりアクセス可能な多数の仮想ディスク記述子ファイル（例えば、ヴィ・スフィア（ｖＳｐｈｅｒｅ）環境における．ｖｍｄｋファイル、等）へのアクセスを提供し得る。これらの仮想ディスク記述子ファイルは、仮想ディスクのための実際のデータを含むとともに、オブジェクトストア１１６により別個に支持される仮想ディスク「オブジェクト」への参照を含む。仮想ディスクオブジェクトは、それ自身、階層的または「複合」オブジェクトであり得、階層的または「複合」オブジェクトは、下記に説明されるように、仮想ディスクの最初の作成時にアドミニストレータにより生成される対応するストレージプロファイルまたはポリシーのストレージ要件（例えば、容量、可用性、ＩＯＰＳ等）を反映する「コンポーネント」オブジェクト（これもオブジェクトストア１１６により別個に支持される）によりさらに構成される。下記にさらに議論されるように、各ＶＳＡＮモジュール１１４は、（下記にさらに説明される実施形態において、クラスタレベルオブジェクト管理すなわち「ＣＬＯＭ（Ｃｌｕｓｔｅｒ  Ｌｅｖｅｌ  Ｏｂｊｅｃｔ  Ｍａｎａｇｅｒ）」サブモジュールを通じて）、他のノード１１１の他のＶＳＡＮモジュール１１４と通信して、オブジェクトストア１１６内にストアされた種々のオブジェクト間の位置、構成、ポリシーおよび関係を記述するメタデータを含むメモリ内メタデータデータベース（例えば、各ノード１１１のメモリ内に、別個に、しかし、同期方式により維持された）を作成および維持する。このメモリ内メタデータデータベースは、例えば、アドミニストレータが最初にＶＭのために仮想ディスクを作成するとき、および、ＶＭが実施中であり仮想ディスク上のＩ／Ｏオペレーション（例えば、読み出しまたは書き込み）を行う場合に、ノード１１１上のＶＳＡＮモジュール１１４により利用される。図３の文脈で下記にさらに議論されるように、ＶＳＡＮモジュール１１４は、（下記にさらに説明される一実施形態において、ドキュメントオブジェクトマネージャすなわち「ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍａｎａｇｅｒ）」サブモジュールを通じて）Ｉ／Ｏオペレーションの対象となる仮想ディスクの一部を支持する実際の物理ローカルストレージを収容するノード（または、ノード群）へのＩ／Ｏオペレーションリクエストを適切に送るために、メモリ内データベース内のメタデータを使用してオブジェクトの階層を横断する。
【００１１】
図２は、一実施形態に係る、仮想ディスクを表すオブジェクトストア１１６内に編成されたオブジェクトの例示的な階層構造を示す。上記において先に詳述されたように、１つのノード１１１にて実行中のＶＭ１１２は、オブジェクトストア１１６内に階層的または複合オブジェクト２００としてストアされた仮想ディスク上のＩ／Ｏオペレーションを実行し得る。ハイパーバイザ１１３は、ＶＳＡＮモジュール１１４を通じてＶＳＡＮ１１５のアブストラクションとインターフェースすることにより（例えば、一実施形態において先に議論されたように、仮想ディスクオブジェクトに対応するトップレベルファイルシステムオブジェクトを自動マウントすることにより）、ＶＭ１１２に仮想ディスクへのアクセスを提供する。例えば、ＶＳＡＮモジュール１１４は、メモリ内メタデータデータベースのそのローカルコピーをクエリすることにより、仮想ディスクのための記述子ファイル２１０（例えば．ｖｍｄｋファイル）を格納するＶＳＡＮ１１５内にストアされた特定のファイルシステムオブジェクト２０５（例えば、一実施形態におけるＶＭＦＳファイルシステムオブジェクト、等）を識別することができる。ファイルシステムオブジェクト２０５が、仮想化環境をサポートする際に仮想マシン構成ファイル（例えば、ｖＳｐｈｅｒｅ環境における．ｖｍｘファイル、等）等の、その目的に沿った各種の他のファイルをストアし得ることが理解されるであろう。ある実施形態において、各ファイルシステムオブジェクトは、特定のＶＭに対応するそれらの仮想ディスク（例えば、「毎ＶＭ」ファイルシステムオブジェクト）のみをサポートするよう構成され得る。
【００１２】
記述子ファイル２１０は、オブジェクトストア１１６に別個にストアされ、仮想ディスクを概念的に表す（および本開示において時に仮想ディスクオブジェクトとも称され得る）複合オブジェクト２００への参照を含む。複合オブジェクト２００は、仮想ディスク作成時にアドミニストレータにより生成された対応ストレージプロファイルまたはポリシー内のストレージ要件（例えば、容量、可用性、ＩＯＰＳ、等）またはサービスレベルアグリーメント（ＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ））に適する仮想ディスクのストレージ編成または構成（本開示において仮想ディスク「ブループリント」と時に称される）を記述するメタデータを格納する。例えば、図２の実施形態において、複合オブジェクト２００は、仮想ディスクの２つのミラーコピー（例えば、ミラー）がＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）  ０構成内でさらにそれぞれストライプ化されるＲＡＩＤ  １構成を記述する仮想ディスクブループリント２１５を含む。したがって、複合オブジェクト２２５は、各仮想ディスクミラー内の各ストライプ（例えば、仮想ディスクのデータパーティション）に対応する、多数の「リーフ」または「コンポーネント」オブジェクト２２０ｘに対する参照を含み得る。各コンポーネントオブジェクト２２０のための（例えば、各ストライプのための）メモリ内メタデータデータベースにおいてＶＳＡＮモジュール１１４によりアクセス可能なメタデータは、ストライプ（およびこのような物理リソース内のストライプの位置）を実際に格納する物理ストレージリソース（例えば、磁気ディスク１１８、等）を収容するクラスタ１１０内の特定のノード１１１ｘに対するマッピングを提供するか、または、別様に同特定のノード１１１ｘを識別する。
【００１３】
図３は、一実施形態に係る、ＶＳＡＮモジュール１１４の構成要素を示す。前述のように、ある実施形態において、ＶＳＡＮモジュール１１４は、ハイパーバイザ１１３へのＶＳＡＮ１１５のアブストラクションの露出するデバイスドライバとして実行し得る。ＶＳＡＮモジュール１１４の各種のサブモジュールは、異なる責務を取り扱い、このような責務に応じてユーザ空間３１５またはカーネル空間３２０のいずれかにおいて動作し得る。図３の実施形態に示されるように、ＶＳＡＮモジュール１１４は、ユーザ空間３１５で動作するクラスタレベルオブジェクト管理（ＣＬＯＭ：（ＣＬＯＭ：ｃｌｕｓｔｅｒ  ｌｅｖｅｌ  ｏｂｊｅｃｔ  ｍａｎａｇｅｍｅｎｔ））サブモジュール３２５を含む。ＣＬＯＭサブモジュール３２５は、アドミニストレータによる仮想ディスクの作成中に、仮想ディスクブループリントを生成し、このような仮想ディスクブループリントのために作成されたオブジェクトが、アドミニストレータにより設定されたストレージプロファイルまたはポリシー要件を満たすよう構成されることを確実にする。（例えば、仮想ディスクのための）オブジェクト作成中にアクセスされることに加えて、ＣＬＯＭサブモジュール３２５は、（例えば、仮想ディスクブループリントまたはオブジェクトストア１１６内の実際の物理ストレージへの仮想ディスクブループリントのマッピングを動的に修正または別様に更新するために）オブジェクトに関するストレージプロファイルまたはポリシーへのアドミニストレータによりなされた変更の際、または、クラスタまたは作業負荷に対する変更が、現在のストレージプロファイルまたはポリシーに準拠しないオブジェクトを生じるときに、アクセスされ得る。
【００１４】
一実施形態において、アドミニストレータが、仮想ディスクオブジェクト２００等の複合オブジェクトのストレージプロファイルまたはポリシーを作成すると、ＣＬＯＭサブモジュール３２５は、各種の発見的アルゴリズムおよび分散アルゴリズムのうち少なくとも一方を適用して、ストレージポリシーを満たすか、または別様にストレージポリシーに適合するクラスタ１１０内の構成（例えば、ミラーリングを介した所望の冗長性およびストライピングを介したアクセス性能を達成するためのＲＡＩＤ構成：負荷バランシングを達成するために、どのノードのローカルストレージが、仮想ディスクのある部分／パーティション／ストライプを格納すべきか、等）を記述する仮想ディスクブループリント２１５を生成する。例えば、ＣＬＯＭサブモジュール３２５は、一実施形態において、仮想ディスクが最初にアドミニストレータにより作成されたときに、図２における仮想ディスクオブジェクト２００のＲＡＩＤ  １／ＲＡＩＤ  ０構成を記述するブループリント２１５の生成を担当する。上記において説明されたように、ストレージポリシーは、容量、ＩＯＰＳ、可用性および信頼性についての要件を規定し得る。ストレージポリシーはまた、作業負荷特徴（例えば、ランダムまたはシーケンシャルアクセス、Ｉ／Ｏリクエストサイズ、キャッシュサイズ、期待キャッシュヒット率、等）を規定し得る。さらに、アドミニストレータはまた、あるノード１１１（またはノード１１１に収容されたローカルディスク）を優先的に使用するためにＶＳＡＮモジュール１１４への親和度を規定し得る。例えば、ＶＭの新たな仮想ディスクの提供時に、アドミニストレータは、仮想ディスクが４００ＧＢの予備容量、１５０読み出しＩＯＰＳの予約、３００書き込みＩＯＰＳの予約および９９．９９％の所望の可用性を有することを規定する仮想ディスクのストレージポリシーまたはプロファイルを生成し得る。生成されたストレージポリシーの受信時に、ＣＬＯＭサブモジュール３２５は、生成されたストレージポリシーに適する複合オブジェクト（例えば、仮想ディスクオブジェクト）の仮想ディスクブループリントを生成する目的で、そのＶＳＡＮモジュール１１４により維持されるメモリ内メタデータデータベースを調べてクラスタ１１０の現在の状態を判定する。下記においてさらに説明されるように、ＣＬＯＭサブモジュール３２５は、その対応する分散オブジェクトマネージャ（ＤＯＭ）サブモジュール３４０にブループリントを伝達し、分散オブジェクトマネージャ（ＤＯＭ）サブモジュール３４０は、オブジェクト空間１１６と相互作用して、例えば、クラスタ１１０の各種ノード１１１内の物理ストレージ位置に複合オブジェクトのコンポーネントオブジェクト（例えば、ストライプ）を割り当てるか、または別様にマッピングすることにより、ブループリントを実施する。
【００１５】
ＣＬＯＭサブモジュール３２５およびＤＯＭサブモジュール３４０に加えて、図３にさらに示されるように、ＶＳＡＮモジュール１１４はまた、クラスタ１１０の状態についての情報をＶＳＡＮモジュール１１４の他のサブモジュールに提供するために、上述のメモリ内メタデータデータベースを維持するとともに、クラスタ１１０内の各ノード１１１のステータス、アクセス可能性および可視性をモニタリングすることによりクラスタ１１０の全般的な「ヘルス」の追跡も行なう、クラスタモニタリング、メンバシップおよびディレクトリサービス（ＣＭＭＤＳ（Ｃｌｕｓｔｅｒ  Ｍｏｎｉｔｏｒｉｎｇ，  Ｍｅｍｂｅｒｓｈｉｐ，  ａｎｄ  Ｄｉｒｅｃｔｏｒｙ  Ｓｅｒｖｉｃｅｓ））サブモジュール３３５を含み得る。メモリ内メタデータデータベースは、各種ノード１１１、ノード１１１内に収容されたストレージリソース（ＳＳＤ、磁気ディスク、等）およびその特性／能力、ノード１１１の現在の状態、および、それらの対応するストレージリソース、ノード１１１間のネットワーク経路、等のＶＳＡＮ環境の物理インベントリを維持するディレクトリサービスとして機能する。先に説明されたように、物理インベントリを維持することに加えて、メモリ内メタデータデータベースはさらに、オブジェクトストア１１６にストアされるオブジェクトについてのメタデータのカタログ（例えば、どのような複合オブジェクト・コンポーネントオブジェクトが存在するか、どのようなコンポーネントオブジェクトがどのような複合オブジェクトに属するか、どのノードがいずれのオブジェクトへのアクセスを制御する「コーディネータ」または「オーナー」として機能するか、各オブジェクトについてのサービス品質要件、オブジェクト構成、オブジェクトの物理ストレージ位置へのマッピング、等）を提供する。先に説明されたように、ＶＳＡＮモジュール１１４内の他のサブモジュールは、更新目的でＣＭＭＤＳサブモジュール３３５（図３において接続線で表される）にアクセスして、クラスタトポロジおよびオブジェクト構成における変更を学習し得る。例えば、先に説明されたように、仮想ディスク作成中、ＣＬＯＭサブモジュール３２５は、仮想ディスクブループリントを生成するためにメモリ内メタデータデータベースにアクセスし、実行中のＶＭ１１２からのＩ／Ｏオペレーションに対処する目的で、ＤＯＭサブモジュール３４０は、メモリ内メタデータデータベースにアクセスして、対応する複合オブジェクト（仮想ディスクオブジェクト）のコンポーネントオブジェクト（例えば、ストライプ）を格納するノード１１１、および、Ｉ／Ｏオペレーションを満たすためにそれらのノードが到達可能な経路を決定する。
【００１６】
上記において説明されたように、ＤＯＭサブモジュール３４０は、Ｉ／Ｏオペレーションの取り扱いの間、および、オブジェクト作成の間、ＤＯＭサブモジュール３４０が実行される特定のノード１１１のローカルストレージにストアされたオブジェクトストア１１６内のそれらのコンポーネントオブジェクト、および、そのノード１１１が現在「コーディネータ」または「オーナー」として指定され続けているある他の複合オブジェクトへのアクセスの制御およびそのオペレーションの取り扱いを実施する。例えば、ＶＭからのＩ／Ｏオペレーションの取り扱い時に、ある実施形態における複合オブジェクトの階層的性質のため、目的の複合オブジェクト（例えば、Ｉ／Ｏオペレーションの対象となる仮想ディスクオブジェクト）のためのコーディネータとして機能するＤＯＭサブモジュール３４０は、第２のノード１１１（またはノード群）内の異なるＤＯＭサブモジュール３４０とのネットワークを介してさらなる通信を必要とし得る。第２のノード１１１（またはノード群）は、第２のノード１１１のローカルストレージにストアされ、かつＩ／Ｏオペレーションの対象である仮想ディスクの一部分である仮想ディスクオブジェクトの特定のコンポーネントオブジェクト（例えば、ストライプ等）についてのコーディネータとして機能する。Ｉ／Ｏオペレーションを発行するＶＭが、仮想ディスクオブジェクトのコーディネータとも異なるノード１１１上に存在すると、ＶＭを実行中のノードのＤＯＭサブモジュール３４０は、コーディネータのＤＯＭサブモジュール３４０ともネットワークを介して通信する必要があるであろう。ある実施形態において、Ｉ／Ｏオペレーションを発行するＶＭが、Ｉ／Ｏオペレーションの対象となる仮想ディスクオブジェクトのコーディネータと異なるノード上に存在すると、２つのノードの２つのＤＯＭサブモジュール３４０は、ＶＭを実行中のノードに対して仮想ディスクオブジェクトのコーディネータの役割を変更するために互いに通信し得る（例えば、それにより、ＶＭを実行中のノードと仮想ディスクオブジェクトについてのコーディネータとして機能するノードとの間のＩ／Ｏオペレーションを調整するのに必要なネットワーク通信の量が低減される）。
【００１７】
ＤＯＭサブモジュール３４０もまた同様に、オブジェクト作成中に互いに通信する。例えば、仮想ディスク作成中にＣＬＯＭモジュール３２５により生成された仮想ディスクブループリントは、どのノード１１１が仮想ディスクオブジェクトおよびその対応するコンポーネントオブジェクト（ストライプ等）についてのコーディネータとして機能すべきかを指定する情報を含み得る。このような指定されたノードについてのＤＯＭサブモジュール３４０の各々には、オブジェクトに関するメタデータでメモリ内メタデータデータベースを更新する目的で、それらの各オブジェクトを作成し、このようなオブジェクトにローカルストレージを（必要に応じ）割り当て、それらのオブジェクトをそれらの対応するＣＭＭＤＳサブモジュール３３５に通知するためのリクエストが発行される（例えば、実施形態に応じて、仮想ディスクオブジェクトについてのコーディネータとして指定されたＤＯＭサブモジュール３４０により、または、仮想ディスクブループリントを生成するノードのＤＯＭサブモジュール３４０により、等）。このようなリクエストを実施するために、ＤＯＭサブモジュール３４０は、そのノード１１１のローカルＳＳＤおよび磁気ディスクとの通信を実際に行なうＶＳＡＮモジュール１１４内のコンポーネントとして機能するログ構造化オブジェクトマネージャ（ＬＳＯＭ（Ｌｏｇ  Ｓｔｒｕｃｔｕｒｅｄ  Ｏｂｊｅｃｔ  Ｍａｎａｇｅｒ））サブモジュール３５０と相互作用する。コンポーネントオブジェクトについてのローカルストレージの割り当て（およびそのノードがコーディネータとして機能する複合オブジェクトについてのポリシーおよび構成等の他のメタデータのストア、等）に加えて、ＬＳＯＭサブモジュール３５０はさらに、例えば、ストレージリソースが輻輳したかどうかを報告するために、そのノード１１１のローカルストレージへのＩ／Ｏオペレーションの流れをモニタリングする。
【００１８】
図３はまた、論理エンドポイント（例えば、ノード、オブジェクト、等）間の任意サイズのデータグラムを提供する高信頼データグラムトランスポート（ＲＤＴ（Ｒｅｌｉａｂｌｅ  Ｄａｔａｇｒａｍ  Ｔｒａｎｓｐｏｒｔ））サブモジュール３４５を示し、エンドポイントは潜在的に、多数の経路に渡り得る。一実施形態において、基礎となるトランスポートはＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）である。代替的に、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）等の他のトランスポートが使用され得る。ＲＤＴサブモジュール３４５は、例えば、上記において先に説明されたようにオブジェクト作成またはＩ／Ｏオペレーション取り扱いのために、ＤＯＭサブモジュール３４０が互いに通信する時に、使用される。ある実施形態において、ＲＤＴモジュール３４５は、ＣＭＭＤＳモジュール３３５と相互作用することにより、メモリ内メタデータデータベース内の最新の位置情報を維持し、リンクヘルスステータスに基づいて接続を作成、除去または再確立するために、論理エンドポイントのアドレスを動的に解決する。例えば、ＣＭＭＤＳモジュール３３５がリンクがヘルシーでないと報告すると、ＲＤＴサブモジュール３４５は、よりよい状況でのリンクを好み、接続を切り得る。
【００１９】
図４は、一実施形態に係る、定義されたストレージポリシーに基づく仮想ディスクオブジェクト作成の方法フロー図を示す。例えば、ステップ４００において、アドミニストレータは、容量、可用性およびＩＯＰＳ要件（例えば、定義されたストレージポリシー）を有する仮想ディスクを作成するために、仮想管理プラットフォーム１０５のユーザインタフェースと相互作用し得る。一実施形態において、仮想管理プラットフォーム１０５は、ステップ４０５において「マスター」ノード１１１に仮想ディスクについてのオブジェクトを作成するようリクエストし得る。ステップ４１０において、このようなマスターノード１１１は、ＶＳＡＮモジュール内のそのＣＬＯＭサブモジュール３２５を通じて仮想ディスクブループリントを生成し得る。先に説明されたように、ＣＬＯＭサブモジュール３５は、ＣＭＭＳ（Ｃｏｍｐｕｔｅｒｉｚｅｄ  Ｍａｉｎｔｅｎａｎｃｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）サブモジュール３３５のメモリ内メタデータデータベースへのコンサルティングにより判定されたように、クラスタ１１０のステータスに基づいて仮想ディスクオブジェクト（例えば、複合オブジェクト）の作成のために仮想ディスクブループリントを生成する。仮想ディスクブループリントは、仮想ディスクオブジェクトのコーディネータまたはオーナーとして機能すべき特定のノードを識別し得る。ステップ４１５において、マスターノード１１１のＤＯＭサブモジュール３４０は、識別されたノードのＤＯＭサブモジュール３４０に仮想ディスクオブジェクトを作成するようリクエストし得る。ステップ４２０において、識別されたノードのＤＯＭサブモジュール３４０は、例えば、その対応するＬＳＯＭサブモジュール３５０と通信することにより、リクエストを受信し、仮想ディスクオブジェクトを作成し、仮想ディスクオブジェクトを記述するメタデータをそのローカルストレージに持続的に格納する。ステップ４２５において、ＤＯＭサブモジュール３４０は、仮想ディスクオブジェクトブループリントに基づいて、仮想ディスクブループリント内の任意のコンポーネントオブジェクトについてのコーディネータまたはオーナーとして機能するよう指定されているクラスタ１１０内のそれらの他のノードを識別する。ＤＯＭサブモジュール３４０は、コンポーネントオブジェクトについてのコーディネータとして機能する他のノードのＤＯＭサブモジュール３４０と（例えば、そのＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）サブモジュール３４５を使用して）通信し、それらのローカルストレージ内にこのようなコンポーネントオブジェクトを支持するデータを格納する。このようなＤＯＭサブモジュール３４０が、仮想ディスクオブジェクトのコーディネータのＤＯＭサブモジュール３４０から各コンポーネントオブジェクトを作成するリクエストを受信すると、ＤＯＭサブモジュール３４０は、今度はステップ４３０において、コンポーネントオブジェクト（およびその関連するメタデータ）についてのローカルストレージを割り当てるために各モジュール３５０と通信する。ひとたびこのようなコンポーネントオブジェクトが作成されると、ステップ４３５において、それ��のＤＯＭサブモジュール３４０は、そのＣＭＭＳサブモジュール３３５のメモリ内メタデータデータベースにコンポーネントの作成を通知する。ステップ４４０において、仮想ディスクオブジェクトのコーディネータのＤＯＭサブモジュール３４０はまた、メモリ内メタデータデータベースを更新するために、その作成をそのＣＭＭＤＳサブモジュール３３５に通知し、最終的にはアドミニストレータに確認を送信する（例えば、マスターノードを介して仮想管理プラットフォーム１０５に通信し戻す）。
【００２０】
図５は、一実施形態に係る、ＶＭから生じたＩ／Ｏオペレーションの取り扱いを示す。特定のノードで実行中のＶＭがその仮想ディスクへのＩ／Ｏオペレーションを実施すると、ＶＭのゲストオペレーティングシステムは、ステップ５００において、その仮想ディスクについて意図されたＩ／Ｏオペレーションリクエストを（ゲストオペレーティングシステムのデバイスドライバを通じて）送信し、ステップ５０５において、そのリクエストはハイパーバイザ１１３により受信され、ハイパーバイザ１１３内のＩ／Ｏスタックの各種の層を介してＶＳＡＮモジュール１１４のＤＯＭサブモジュール３４０に最終的には送信されて変換される。ステップ５１０において、ＤＯＭサブモジュール３４０により受信されたＩ／Ｏリクエストは、ＣＭＭＳサブモジュール３３５のメモリ内メタデータデータベースへのアクセスにより仮想ディスクオブジェクトのコーディネータノードを識別するためにＤＯＭサブモジュール３４０が使用する仮想ディスクを表すオブジェクトについての一意識別子を含む（ある実施形態において、コーディネータノードの識別子の一意識別子へのマッピングをルックアップするためにメモリ内メタデータデータベースへアクセスすることは、仮想ディスクオブジェクトが最初にアクセスされた時にのみ生じ、このようなマッピングは、後続のルックアップが必要とされないように将来のＩ／Ｏオペレーションについて持続する）。仮想ディスクオブジェクトについてのコーディネータノードを識別すると、ＶＭを実行中のノードのＤＯＭサブモジュール３４０は、ステップ５１５においてＩ／Ｏオペレーションを実行するようリクエストするために（例えば、そのＲＴＰサブモジュール３４５を使用して）コーディネータノードのＤＯＭサブモジュール３４０と通信する。先に説明されたように、ある実施形態において、ＶＭを実行中のノードと仮想ディスクオブジェクトのコーディネータとして機能するノードとが異なると、２つのＤＯＭサブモジュールは、仮想ディスクオブジェクトのコーディネータの役割を、実行中のＶＭのノードとなるよう更新するように通信する。コーディネータによるＩ／Ｏリクエストを受信すると、ステップ５２０において、そのＤＯＭサブモジュールは、Ｉ／Ｏオペレーションの対象となる仮想ディスクオブジェクトの特定のコンポーネントオブジェクト（例えば、ストライプ）のそれらのコーディネータノードを（例えば、ある実施形態において、再びメモリ内メタデータデータベースを参照することにより）識別する。例えば、Ｉ／ＯオペレーションがＲＡＩＤ  ０構成の多数のストライプ（例えば、多数のコンポーネントオブジェクト）にまたがれば、ＤＯＭサブモジュール３４０は、Ｉ／Ｏオペレーションを分割し、対応するＩ／Ｏリクエストを２つのストライプに対応する関連コンポーネントオブジェクトについての各コーディネートノードに適切に送信し得る。ステップ５２５において、仮想ディスクオブジェクトのコーディネータノードのＤＯＭサブモジュールは、識別されたコンポーネントオブジェクトのコーディネータノードのＤＯＭサブモジュールがＩ／Ｏオペレーションリクエストを実行するようリクエストし、ステップ５３０において、識別された���ンポーネントオブジェクトについてのこのようなコーディネータノードのＤＯＭサブモジュールは、コンポーネントオブジェクトがストアされるローカルストレージリソース内でＩ／Ｏオペレーションを実行するために、それらの対応するＬＳＯＭサブモジュールと相互作用する。
【００２１】
１つ以上の実施形態が理解を明確にするために詳細に記述されてきたが、特許請求の範囲内においてある変更および修正がなされ得ることは明らかである。従って、記述された実施形態は例示的であり制限するものではないと考えられるべきであって、特許請求の範囲は、本開示にて与えられた詳細に制限されるべきではなく、しかし特許請求の範囲およびその均等物内において修正され得る。例えば、前述の多数の実施形態は、仮想マシンをＶＳＡＮモジュールにより提供される仮想ディスクにアクセスするクライアントとして記述したが、非仮想化ホストサーバおよびそこで実行中の非仮想化アプリケーションのうちの少なくとも一方のクラスタ等の任意のクライアントが、代替実施形態においてＶＳＡＮモジュールを同様に利用し得ることが理解されるべきである。同様に、ＶＳＡＮモジュールの代替実施形態が、限定するものではないが、ＲＥＳＴ（ＲＥｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）オブジェクト、ファイル、ファイルシステム、ブロブ（バイナリーラージオブジェクト）および他のオブジェクト等の、仮想ディスク以外の高レベルストレージオブジェクトを作成可能であり得る。同様に、ＶＳＡＮモジュール１１４がハイパーバイザ１１３内に埋め込まれるとして概して記述されてきたが、代替実施形態は、例えば特別な仮想マシンまたは仮想アプライアンス、別個のアプリケーションまたは分散オブジェクトストアを提供および管理するためにコンピューティングプラットフォームに挿入可能な任意の他の「プラガブル（ｐｌｕｇｇａｂｌｅ）」モジュールまたはドライバとして、ハイパーバイザ１１３とは別個のＶＳＡＮモジュールを実装し得る。同様に、前述の実施形態はブループリントを編成する１つの技術としてＲＡＩＤ構成を参照してきたが、他の実施形態において、限定するものではないが、抹消符号および他の類似技術の使用を含む他の構成を利用し得ることが理解されるべきである。本開示の記述はオブジェクト内の参照オブジェクトへの「一意識別子」を用いて説明されてきたが、一意識別子（ハッシュ、等）を生成する技術において、真に一意な識別子の生成が必ずしも保証されるわけではなく、それゆえ、ある実施形態が、オブジェクトの識別子が真に一意ではない例がある場合に名前衝突を取り扱う技術をさらに実装し得ることが理解されるであろう。１つのこのような実施形態において、意図されている一意識別子に加えて、さらなるアドミニストレータまたはユーザ特定識別子も、その作成の間にオブジェクトに割り当てられる（または別様にオブジェクトの一意識別子にマッピングされる）。新たに作成されたオブジェクトと同じ一意識別子を有する既存のオブジェクトのために名前衝突がある場合、アドミニストレータまたはユーザ特定名称は、新たに作成されたオブジェクトのユーザ識別子に変換され得る。
【００２２】
本開示に記述された各種の実施形態は、コンピュータシステム内にストアされたデータを伴う各種のコンピュータ実装オペレーションを採用し得る。例えば、これらのオペレーションは、通常は物理量の物理マニピュレーションを要求し得るが、必ずしもではないものの、これらの量は電気的または磁気的信号の形態を取り得、そこでは、それら、あるいは、それらの代表値は、ストアされ、伝送され、結合され、比較され、または別様にマニピュレートされることが可能である。さらに、このようなマニピュレーションは、しばしば製造、識別、判定または比較の観点で参照される。１つ以上の実施形態の一部を形成する本開示で記述された任意のオペレーションは、有用なマシンオペレーションであり得る。さらに、１つ以上の実施形態はまた、それらのオペレーションを実行するためのデバイスまたは装置に関する。装置は、特定の要求目的のために特別に構築され得、または、コンピュータにストアされたコンピュータプログラムにより選択的に活性化され、または構成される汎用コンピュータであり得る。特に、各種の汎用マシンが、本開示の教示に従って書かれたコンピュータプログラムと共に使用され得、または、要求されるオペレーションの実行のためにより特別化された装置を構築することが、より都合がよい場合もあり得る。
【００２３】
本開示に記述された各種の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ、等を含む他のコンピュータシステム構成で実践され得る。
【００２４】
１つ以上の実施形態は、１つ以上のコンピュータ可読媒体内に具現化された１つ以上のコンピュータプログラムとして、または、１つ以上のコンピュータプログラムモジュールとして実装され得る。用語「コンピュータ可読媒体」は、後にコンピュータシステムに入力され得るデータを格納することが可能な任意のデータストレージデバイスを指し、コンピュータ可読媒体は、コンピュータによりコンピュータプログラムを読み取り可能なようにコンピュータプログラムを具現化するための任意の既存のまたは将来開発される技術に基づき得る。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ：Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、リードオンリーメモリ、ランダムアクセスメモリ（例えば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）、ＣＤ−ＲＯＭ、ＣＤ−ＲまたはＣＤ−ＲＷ、ＤＶＤ（デジタルバーサタイルディスク）、磁気テープ、および、他の光学および非光学データストレージデバイスが含まれる。コンピュータ可読媒体はまた、コンピュータ可読コードが分散方式でストアされ、実行されるように、ネットワーク結合コンピュータシステム上に分散され得る。
【００２５】
さらに、記述された仮想化方法は概して、仮想マシンが特定のハードウェアシステムに沿ったインターフェースを提示するものとしてきたが、記述された方法は、任意の特定のハードウェアシステムに直接には対応しない仮想化と共に使用され得る。ホスト化実施形態、非ホスト化実施形態、または、その両者間の区別があいまいとなりがちな実施形態として実装される、各種の実施形態に係る仮想化システムが、全て想定される。さらに、各種の仮想化オペレーションが、全体としてまたは部分的にハードウェア内に実装され得る。例えば、ハードウェア実装は、非ディスクデータをセキュアにするためにストレージアクセスリクエストの修正のためのルックアップテーブルを採用し得る。
【００２６】
仮想化の程度にかかわらず、多くの変形、修正、付加および改良が可能である。仮想化ソフトウェアはそれゆえ、ホスト、コンソールまたは仮想化機能を実行するゲストオペレーティングシステムのコンポーネントを含み得る。複数のインスタンスが、単一のインスタンスとして本開示に説明されるコンポーネント、オペレーションまたは構造のために提供され得る。最後に、各種コンポーネント、オペレーションおよびデータストアの境界は、いくらか恣意的であり、特定のオペレーションは特定の例示的構成の文脈で例示される。機能性の他の割り当てが想定され、１つ以上の実施形態の範囲に収まり得る。一般に、例示の構成において別個のコンポーネントとして表される構造および機能性は、結合された構造またはコンポーネントとして実装され得る。同様に、単一のコンポーネントとして表される構造および機能性は、別個のコンポーネントとして実装され得る。これらのおよび他の変形、修正、付加および改良は、添付の請求項の範囲内に収まり得る。請求項において、要素およびステップの内少なくともいずれか一方は、請求項において明示的に述べられていない限り、オペレーションの如何なる特定の順序も暗示しない。
【図１】
2018022529.tif 000003
【図２】
2018022529.tif 000004
【図３】
2018022529.tif 000005
【図４】
2018022529.tif 000006
【図５】
2018022529.tif 000007