JP2019036361A - クラスタメンバーシップ管理における分断耐性 - Google Patents

クラスタメンバーシップ管理における分断耐性 Download PDF

Info

Publication number
JP2019036361A
JP2019036361A JP2018218227A JP2018218227A JP2019036361A JP 2019036361 A JP2019036361 A JP 2019036361A JP 2018218227 A JP2018218227 A JP 2018218227A JP 2018218227 A JP2018218227 A JP 2018218227A JP 2019036361 A JP2019036361 A JP 2019036361A
Authority
JP
Japan
Prior art keywords
partition
stored
node
cluster
store
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.)
Granted
Application number
JP2018218227A
Other languages
English (en)
Other versions
JP6715309B2 (ja
Inventor
アール、ウィリアム
Earl William
カラマノリス、クリストス
Karamanolis Christos
エイ. スミス、グレゴリー
A Smith Gregory
エイ. スミス、グレゴリー
ノーフト、エリック
Knauft Eric
レノード、パスカル
Renauld Pascal
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.)
VMware LLC
Original Assignee
VMware LLC
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 VMware LLC filed Critical VMware LLC
Publication of JP2019036361A publication Critical patent/JP2019036361A/ja
Application granted granted Critical
Publication of JP6715309B2 publication Critical patent/JP6715309B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • 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/13File access structures, e.g. distributed indices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】クラスタを少なくとも第1および第2のパーティションへ分割することに続いてコンピューティングノードのクラスタを管理する。
【解決手段】クラスタはオブジェクトストアを提供するためにノード111からのローカルストレージリソースを集約し、オブジェクトストア内に格納されたオブジェクトを、データコンポーネントに分割する。第1のオブジェクトを含むデータコンポーネントの大多数が第1のパーティション内のノード内に格納され、第2のオブジェクトを含むデータコンポーネントの大多数が第2のパーティション内のノード内に格納される。構成オブジェクトが、第2のパーティションから第1のオブジェクトへのアクセスを拒絶し、第1のパーティション内の第1のオブジェクトに対し行われることが許可され、第1のパーティションから第2のオブジェクトへのアクセスを拒絶し、第2のパーティション内の第2のオブジェクトに対して行われることが許可される。
【選択図】 図2

Description

分散システムは、ネットワーク内の複数のクライアントが共用資源のプールへアクセスできるようにする。例えば、分散ストレージシステムは、ホストコンピュータのクラスタが各ホストコンピュータ内に位置するか、または各ホストコンピュータに取り付けられたローカルディスク(例えば、SSD(Solid State Drive)、PCI(Peripheral Component Interconnect)ベースのフラッシュストレージ、SATA(Serial AT Attachment)またはSAS(Serial Attached SCSI)磁気ディスク)を集約してストレージの単一かつ共有プールを生成できるようにする。このストレージのプール(本明細書では「データストア(datastore)」または「ストア(store)」と呼ぶことがある)は、クラスタ内のすべてのホストコンピュータによりアクセス可能であり、ストレージエンティティの単一名前空間(ファイルの場合は階層ファイルシステム名前空間、オブジェクトの場合は一意的識別子のフラット名前空間など)として提示され得る。ストレージクライアント(storage client)(ホストコンピュータ上に生み出された仮想マシンなど)は、例えばその動作中に仮想マシンによりアクセスされる仮想ディスクを格納するためにデータストアを使用し得る。データストアを構成する共有ローカルディスクは異なる性能特性(例えば、容量、毎秒当り入力/出力動作すなわちIOPS能力など)を有し得るので、仮想ディスクまたはその一部を格納するこのような共有ローカルディスクの使用量は、各所与の仮想マシンのニーズに基づき仮想マシン間で分散され得る。
この手法は企業に費用効率の高い性能を提供する。例えば、プールされたローカルディスクを使用する分散ストレージは安価でありかつ高度にスケーラブルであり、かつ管理することが比較的簡単である。このような分散ストレージはクラスタ内に市販品ディスクを使用し得るので、企業は追加のストレージインフラストラクチャに投資する必要は無い。しかし、ホストコンピュータ(または「ノード」)の「クラスタ」のローカルストレージにより支援されるデータストアに伴って生じる1つの問題は、1つまたは複数のノードが失敗し、不活性になり得るか、またはそうでなければオフラインとなり得、したがってノードは、クラスタ内の他のノードからはもはや見えなくなることである。例えば、クラスタは、ノード同士を接続するネットワーク内の失敗または間違い設定のためにサブクラスタの多くの「パーティション」に再分割され得る。ノード障害は、しばしば、ネットワーク分断(network partition)では識別不可能であり、この分断影響を診断すること、およびこれに対応することが困難となる。ノード障害に起因する特定のパーティション内のノードは正常に通信し続け得るが、他のパーティション内のノードを介して通信することができない(「分離脳(split brain)」状況と呼ばれる)。このような「分離脳」状況では、異なるパーティション内のノードは、他のパーティション内のノードとの調整無しにデータのそれらのローカルコピーへアクセスまたはそれを修正するオペレーションを実行し得、全クラスタにわたって一貫しないまたは不正確なデータを生じる。このような問題を回避するために、既存の分散ストレージシステムは、クラスタの最大で1つのパーティションが任意の時点で機能できるようにする。しかし、この手法は保守的であり、この手法は、クラスタの様々なノード内のデータの特定の分布および複製特徴(replication characteristic)を所与として、特定のパーティション内で安全にアクセスされ得るあるデータへのアクセスを却下し得る。
本明細書において開示される1つまたは複数の実施形態は、クラスタを少なくとも第1のパーティションと第2のパーティションに分割する失敗事象または管理事象を受けてコンピューティングノードのクラスタを管理する方法を提供する。クラスタはオブジェクトストアを提供するためにコンピューティングノードの各々のローカルストレージリソースを集約し、オブジェクトストアに格納されたオブジェクトはコンピューティングノードを介して格納されるデータコンポーネントに分割される。本方法は通常、オブジェクトストアに格納された第1のオブジェクトを含むデータコンポーネントの大多数が第1のパーティション内のコンピューティングノード内に格納されるということが判断される工程を含む。本方法はまた、オブジェクトストア内に格納された第2のオブジェクトを含むデータコンポーネントの大多数が第2のパーティション内のコンピューティングノード内に格納されるということが判断される工程を含む。本方法は、第2のパーティションから第1のオブジェクトへのいかなるアクセスも拒絶しつつ、構成オペレーションが第1のパーティション内の第1のオブジェクトに対して行われることを許可する工程を含む。本方法はまた、第1のパーティションから第2のオブジェクトへのいかなるアクセスも拒絶しつつ、構成オペレーションが第2のパーティション内の第2のオブジェクトに対して行われることを許可する工程を含む。
他の実施形態は、限定しないが、開示された方法の1つまたは複数の態様を処理ユニットが実施できるようにする命令を含むコンピュータ可読媒体と、プロセッサ、メモリ、および開示された方法の1つまたは複数の態様を実施するように構成されたアプリケーションプログラムとを有するシステムとを含む。
一実施形態による例示的コンピューティング環境を示す。 一実施形態による、オブジェクトストア内に編成されたオブジェクト(仮想ディスクを表す)の例示的階層構造を示す。 一実施形態によるVSANモジュールの構成要素を示す。 一実施形態による、規定のストレージポリシーに基づき仮想ディスクオブジェクトを生成するための方法フローチャートを示す。 一実施形態による、複合オブジェクトがノードのクラスタのパーティションからアクセス可能かどうかを判断するためのフローチャートを示す。 一実施形態による、パーティションが単一クラスタのノードに戻る場合の調整のフローチャートを示す。 一実施形態による、VMから発するI/Oオペレーションの対処を示す。
本明細書において開示される実施形態は、ノードまたはネットワーク故障またはネットワークまたは他のタイプの間違った設定などの故障事象が発生した場合にクラスタ内のノードの複数のパーティションを容認するための技術を提供する。クラスタ内の各ノードは集約型オブジェクトストア(aggregate object store)(オブジェクトストア内に格納されたオブジェクトの一部または「コンポーネント」がクラスタ内の異なるノードのストレージにより支援され得る)を提供するようにローカルストレージに寄与する。以下にさらに詳細に説明されるように、クラスタの分断を生じる故障事象が発生した場合に、本明細書の技術は、分断脳シナリオを防止するために特定のパーティションへの完全アクセスを拒絶するのではなく「オブジェクト毎」ベースで、クラスタ内に格納されたデータのアクセス可能性を評価する。以下にさらに詳細に説明されるように、本明細書の技術は、並列パーティションが共存できるようにするとともに、所与のパーティション内に存在するそのコンポーネントの定足数(例えば、大多数)を有するオブジェクトに対しいくつかのオペレーションを実行できるようにする。オブジェクトの「オーナ」ノードは、オブジェクトに対する定足数のコンポーネントが存在するかどうかを判断し、そうであればパーティション内のオブジェクトへのアクセスを調整する。
その例を添付図面に示すいくつかの実施形態を以下に詳細に参照する。実行可能なときはいつも添付図面では同様なまたは類似の参照番号が使用され得、これらは同様なまたは類似の機能を指し得ることに留意されたい。添付図面は例示目的のためだけの実施形態を描写する。当業者は、本明細書で示される構造および方法の代替実施形態が本明細書に記載の原理から逸脱することなく採用され得るということを以下の説明から容易に認識することになる。
以下では、仮想コンピューティング環境内のソフトウェア定義ストレージエリアネットワークの例が、分散資源システム内のクラスタ分断を容認する参考例として使用される。この参考例は本明細書で説明する実施形態の理解を助けるために含まれる。しかし、実施形態は共用資源に関するクラスタ分断耐性(cluster partition tolerance)に関係する他の文脈で使用されるように適合化され得るということは当業者にとって明白である。
同様に、多くの特定の詳細は実施形態の完全な理解を助けるために提供される。実施形態はこれら特定の詳細無しに実施され得るということを当業者は理解することになる。別の事例では、周知の処理オペレーションおよび実装詳細は本開示の新規な態様を不必要にあいまいにすることを回避するために詳細に説明されなかった。
図1は一実施形態によるコンピューティング環境100を示す。図示のように、コンピューティング環境100は、ノード上で実行される仮想マシン(VM:virtual machine)112に集約型オブジェクトストア116を提供するためにクラスタ110のホストサーバまたはノード111に収容されるか、または直接取り付けられた市販品ローカルストレージを活用するソフトウェアベース「仮想ストレージエリアネットワーク」(VSAN:virtual storage area network)環境である。以下、用語「収容された」または「内に収容された」の使用は、内に収容されるか、またはそうでなければ直接取り付けられたことの両方を包含するように使用され得る。ノード111内に収容されるか、またはそうでなければノード111に直接取り付けられたローカル市販品ストレージは、ソリッドステートドライブ(SSD:solid state drive)117、磁気または回転ディスク118、および任意の他のタイプの不揮発性メモリのうちの少なくとも一つの組み合わせを含み得る。いくつかの実施形態では、SSD117は、I/O性能を高めるために磁気ディスク118の前の読み出しキャッシュおよび書き込みバッファのうちの少なくとも一つとして働く。以下にさらに論述されるように、各ノード111は、ストレージ管理ワークフローを自動化する(例えば、オブジェクトストア内にオブジェクトを生成する等)し、かつオブジェクトストア内のオブジェクトに対し指定された所定ストレージポリシーに基づきオブジェクトストア内のオブジェクトへのアクセスを提供する(例えば、オブジェクトストア内のオブジェクトに対するI/Oオペレーションに対処する等)ために、ストレージ管理モジュール(本明細書では、「VSANモジュール」と呼ぶ)を含み得る。例えば、VMは、その使用目的に依存してその「仮想ディスク」の特定のストレージ要件(例えば、容量、可用性、IOPSなど)を有するようにアドミニストレータにより当初構成され得るので、アドミニストレータはこのような可用性、容量、IOPSなどを規定するVM毎のストレージプロファイルまたはポリシーを定義し得る。以下にさらに説明するように、VSANモジュールは、規定ポリシーに基づきオブジェクトストアの物理的ストレージリソースにより支援することにより指定仮想ディスクの「オブジェクト」を生成し得る。
仮想化管理プラットホーム105はノード111のクラスタ110と関連付けられる。仮想化管理プラットホーム105は、アドミニストレータが様々なノード111上のVMの構成と生成を管理できるようにする。図1の実施形態に描写するように、各ノード111は、仮想化層またはハイパーバイザ113、VSANモジュール114、ハードウェア119(ノード111のSSD117と磁気ディスク118を含む)を含む。ハイパーバイザ113を介し、ノード111は複数のVM112を立ち上げ動作させることができる。ハイパーバイザ113は、ひとつには、VM112毎にコンピューティングリソース(例えば、処理能力、ランダムアクセスメモリなど)を適切に割り振るようにハードウェア119を管理する。さらに、以下にさらに説明するように、各ハイパーバイザ113は、その対応するVSANモジュール114を介して、仮想ディスク(またはその一部)のストレージとして使用するためのハードウェア119内に配置されたストレージリソース(例えば、SSD117と磁気ディスク118)へのアクセスと、クラスタ110内のノード111のうちの任意のノード内に存在する任意のVM112によりアクセスされ得る他の関連ファイルへのアクセスとを提供する。特定の実施形態では、ヴィエムウェア(VMware)社(VMware)のヴィ・スフィア・ハイパーバイザ(vSphere Hypervisor)がハイパーバイザ113としてノード111上にインストールされ得、ヴィエムウェア(VMware)のヴィ・センタサーバ(vCenter Server)が仮想化管理プラットホーム105として使用され得る。
一実施形態では、VSANモジュール114はハイパーバイザ113内の「VSAN」デバイスドライバとして実装される。このような実施形態では、VSANモジュール114は概念的「VSAN」115へのアクセスを提供し、VSAN115を介しアドミニストレータはオブジェクトストア116により支援される多くのトップレベル「デバイス」または名前空間オブジェクトを生成し得る。1つの共通シナリオでは、名前空間オブジェクトの生成中に、アドミニストレータは、名前空間オブジェクトの特定のファイルシステムを規定し得る(したがって、このような名前空間オブジェクトは本明細書では「ファイルシステムオブジェクト」とも呼ばれる)。例えば、一実施形態では、各ノード111内の各ハイパーバイザ113は、ブート処理中に、VSANモジュール114により露出される概念的グローバル名前空間の/vsan/ルートノードを発見し得る。例えば、VSANモジュール114により露出されるAPIへアクセスすることにより、ハイパーバイザ113は、VSAN115内に現在存在するすべてのトップレベルファイルシステムオブジェクト(または他のタイプのトップレベル名前空間オブジェクト)を判断し得る。VM(または他のクライアント)がファイルシステムオブジェクトのうちの1つにアクセスしようとすると、ハイパーバイザ113はファイルシステムオブジェクトを動的に「自動マウント」し得る。VSAN115を介しアクセス可能なファイルシステムオブジェクト(例えば、/vsan/fs_name1など)は、同時アクセス中のホスト間の同時制御を提供するように設計されたヴィエムウェア(VMware)の分散またはクラスタ化ファイルシステム(VMFS(Virtual Machine File System))など特定のファイルシステムのセマンティクスに一致するオブジェクトストア116内に格納された他のデータ(例えば、ファイルシステムのファイル)に関係するメタデータを格納し得る。次に、このようなVMFSファイルシステムオブジェクトは、VMFSに従ってフォーマット化された物理的ストレージデバイスと同様なやり方で、ハイパーバイザ113内のVMFSファイルシステムドライバと相互作用することができるだろう(例えば、仮想ストレージデバイスのように)。VSAN115は複数のファイルシステムオブジェクトを支援するので、VSAN115はいかなる特定のクラスタ化ファイルシステムの制限により限定されることなくオブジェクトストア116を介しストレージリソースを提供することができる。例えば、多くのクラスタ化ファイルシステム(例えば、VMFSなど)はある量のノード111を支援するためにだけスケーリングし得る。複数のトップレベルファイルシステムオブジェクト支援を提供することにより、VSAN115はこのようなクラスタ化ファイルシステムのスケーラビリティ制限を克服する。
以下の図2の文脈でさらに詳細に説明するように、ファイルシステムオブジェクト自体は、クラスタ110内で実行されるVM112によりアクセス可能な多くの仮想ディスク記述子ファイル(例えば、ヴィ・スフィア(vSphere)環境内のvmdkファイル)へのアクセスを提供し得る。これらの仮想ディスク記述子ファイルは、仮想ディスクの実データを含むとともに、オブジェクトストア116により別々に支援される仮想ディスク「オブジェクト」に対する参照を含む。仮想ディスクオブジェクト自体は、階層的または「複合」オブジェクトであり得、階層的または「複合」オブジェクトは、以下にさらに説明するように、仮想ディスクを当初生成する際にアドミニストレータにより生成される対応するストレージプロファイルまたはポリシーのストレージ要件(例えば、容量、可用性、IOPSなど)を反映する「コンポーネント」オブジェクト(再びオブジェクトストア116により別々に支援される)でさらに構成される。以下にさらに論述されるように、各VSANモジュール114は(以下にさらに説明する実施形態における、クラスタ監視、メンバーシップおよびディレクトリサービスすなわち「CMMDS:cluster monitoring,membership and directory services」サブモジュールを介し)、他のノード111の他のVSANモジュール114と通信して、オブジェクトストア116内に格納された様々なオブジェクト間の位置、構成、ポリシー、および関係を記述するメタデータを含むメモリ内メタデータデータベース(例えば、各ノード111のメモリ内に別々にではあるが同期されたやり方で維持される)を生成および維持する。このメモリ内メタデータデータベースは、例えば第1のアドミニストレータがVMの仮想ディスクを生成する場合だけでなく、VMが実行中であり仮想ディスクに対してI/Oオペレーション(例えば、読み取りまたは書き込み)を行う場合に、ノード111上のVSANモジュール114により利用される。図3の文脈で以下にさらに論述されるように、VSANモジュール114は(以下にさらに説明する一実施形態における分散オブジェクトマネジャまたは「DOM」サブモジュールを介し)、I/Oオペレーションを受ける仮想ディスクの一部を支援する実際の物理的ローカルストレージを収容するノード(または、ノード群)へI/Oオペレーション要求を適切に送るために、メモリ内データベース内のメタデータを使用してオブジェクトの階層を横断する。
図2は、一実施形態による、オブジェクトストア116内に編成されたオブジェクト(仮想ディスクを表す)の例示的階層構造を示す。上で既に論述されたように、ノード111のうちの1つで動作しているVM112は、オブジェクトストア116内に階層的または複合オブジェクト200として格納される仮想ディスク上のI/Oオペレーションを行い得る。ハイパーバイザ113は、VSANモジュール114を介しVSAN115のアブストラクションとインターフェースすることにより(例えば、一実施形態において既に論述されたように仮想ディスクオブジェクトに対応するトップレベルファイルシステムオブジェクトを自動マウントすることにより)、VM112に仮想ディスクへのアクセスを提供する。例えば、VSANモジュール114は、メモリ内メタデータデータベースのそのローカルコピーに問い合わせすることにより、以下にさらに説明するようにメタデータまたは仮想ディスクの記述子ファイル210(例えば、vmdkファイルなど)を格納するVSAN115内に格納された特定のファイルシステムオブジェクト205(例えば、一実施形態におけるVMFSファイルシステムオブジェクト等)を識別することができる。ファイルシステムオブジェクト205は仮想化環境を支援する際に仮想マシン構成ファイル(例えば、ヴィ・スフィア(vSphere)環境内のvmxファイル等)などその目的に合致する多種多様な他のメタデータまたは記述子ファイルを格納し得るということを認識すべきである。いくつかの実施形態では、各ファイルシステムオブジェクトは特定のVMに対応するそれらの仮想ディスク(例えば、「VM毎」ファイルシステムオブジェクト)だけを支援するように構成され得る。
記述子ファイル210は、オブジェクトストア116内に別々に格納されるとともに仮想ディスクを概念的に表す(したがって本明細書では時に仮想ディスクオブジェクトとも呼ばれる)複合オブジェクト200に対する参照を含む。複合オブジェクト200は、仮想ディスクを生成する際にアドミニストレータにより生成された当該ストレージプロファイルまたはポリシー内のストレージ要件(例えば、容量、可用性、IOPなど)またはサービスレベルアグリーメント(SLA:service level agreement)に適合する仮想ディスクのストレージ編成または構成(本明細書では時に仮想ディスク「ブループリント」と呼ばれる)について記述するメタデータを格納する。例えば、図2の実施形態では、複合オブジェクト200は、仮想ディスクの2つのミラー・コピー(例えば、ミラー)が各々さらにRAID 0構成においてストライプ化されるRAID 1構成について記述する仮想ディスクブループリント215を含む。したがって、複合オブジェクト225は、仮想ディスクミラーの各々における各ストライプ(例えば、仮想ディスクのデータパーティーション)に対応する多数の「リーフ(leaf)」または「コンポーネント」オブジェクト220に対する参照を含み得る。各コンポーネントオブジェクト220(例えば、各ストライプ)のメモリ内メタデータデータベースにおいてVSANモジュール114によりアクセス可能なメタデータは、(このような物理資源内のストライプの位置だけでなく)ストライプを実際に格納する物理的ストレージリソース(例えば、磁気ディスク118など)を収容するクラスタ110内の特定のノード111に対するマッピングを提供するか、またはそうでなければ同特定のノード111を識別する。
図3は、一実施形態によるVSANモジュール114の構成要素を示す。先に説明したように、いくつかの実施形態では、VSANモジュール114は、VSAN115のアブストラクションをハイパーバイザ113へ露出するデバイスドライバとして実行し得る。VSANモジュール114の様々なサブモジュールは、異なる責務を担い、このような責務に応じてユーザ空間315内またはカーネル空間320内のいずれかで動作し得る。図3の実施形態に描写するように、VSANモジュール114は、ユーザ空間315において動作するクラスタレベルオブジェクト管理(CLOM:cluster level object management)サブモジュール325を含む。CLOMサブモジュール325は、アドミニストレータによる仮想ディスクの生成中に仮想ディスクブループリントを生成し、このような仮想ディスクブループリントのために生成されたオブジェクトがアドミニストレータにより設定されたストレージプロファイルまたはポリシー要件を満足するように構成されることを保証する。オブジェクト生成(例えば、仮想ディスクの)中にアクセスされることに加えて、CLOMサブモジュール325はまた、(例えば、仮想ディスクブループリントを、またはオブジェクトストア116内の実際の物理的ストレージデバイスへの仮想ディスクブループリントのマッピングを動的に修正するか、またはそうでなければ更新するために)オブジェクトに関係するストレージプロファイルまたはポリシーに対しアドミニストレータにより変更がなされるか、またはクラスタまたは作業負荷に対する変更が現在のストレージプロファイルまたはポリシーに準拠しないオブジェクトを生じると、アクセスされ得る。
一実施形態では、アドミニストレータが仮想ディスクオブジェクト200などの複合オブジェクトのストレージプロファイルまたはポリシーを生成すれば、CLOMサブモジュール325は、多種多様な発見的方法および分散アルゴリズムのうちの少なくとも一方を適用して、ストレージポリシーを満足するか、またはそうでなければストレージポリシーに適するクラスタ110内の構成(例えば、ミラーリングにより所望の冗長性を実現しストライピングによりアクセス性能を達成するRAID構成:負荷バランスなどを達成するためにどのノードのローカルストレージが仮想ディスクのいくつかの部分/パーティション/ストライプを格納すべきか)を記述する仮想ディスクブループリント215を生成する。例えば、CLOMサブモジュール325は、一実施形態では、仮想ディスクがアドミニストレータにより最初に生成されると、図2における仮想ディスクオブジェクト200のRAID 1/RAID 0構成について記述するブループリント215を生成する責任を負う。既に論述されたように、ストレージポリシーは、容量、IOPS、可用性および信頼性の要件を規定し得る。ストレージポリシーはまた、作業負荷特徴(例えば、ランダムまたはシーケンシャルアクセス、I/O要求サイズ、キャッシュサイズ、予想キャッシュヒット率など)を規定し得る。加えて、アドミニストレータはまた、いくつかのノード111(またはノード111中に収容されたローカルディスク)を優先的に使用するためにVSANモジュール114に対する親和度を規定し得る。例えば、VMの新しい仮想ディスクを設ける際、アドミニストレータは、仮想ディスクは400GBの予備容量、150読み出しIOPSの留保、300書き込みIOPSの留保および99.99%の所望可用性を有するということを規定する仮想ディスクのストレージポリシーまたはプロファイルを生成し得る。生成されたストレージポリシーを受信すると、CLOMサブモジュール325は、生成されたストレージポリシーに適する複合オブジェクト(例えば、仮想ディスクオブジェクト)の仮想ディスクブループリントを生成するためにそのVSANモジュール114により維持されるメモリ内メタデータデータベースを調べてクラスタ110の現在状態を判断する。以下にさらに論述されるように、このとき、CLOMサブモジュール325は、その対応する分散オブジェクトマネジャ(DOM:distributed object manager)サブモジュール340にブループリントを伝達し、分散オブジェクトマネジャ(DOM)サブモジュール340は、オブジェクトストア116と相互作用して、例えばクラスタ110の様々なノード111内の物理ストレージ位置へ複合オブジェクトのコンポーネントオブジェクト(例えば、ストライプ)を割り付けるか、またはそうでなければマッピングすることによりブループリントを実施する。
CLOMサブモジュール325とDOMサブモジュール340に加えて、図3でさらに描写するように、VSANモジュール114はまた、クラスタ110の状態に関する情報をVSANモジュール114の他のサブモジュールに提供するために、既に論述されたメモリ内メタデータデータベースを維持するとともに、クラスタ110内の各ノード111の状態、アクセス可能性および可視性を監視することによりクラスタ110の全般的「健康」を追跡するクラスタ監視、メンバーシップおよびディレクトリサービス(CMMDS:cluster monitoring,membership and directory services)サブモジュール335を含み得る。メモリ内メタデータデータベースは、様々なノード111、ノード111中に収容されたノード111内のストレージリソース(SSD、磁気ディスクなど)およびその特性/能力、ノード111の現在状態およびそれらの対応するストレージリソース、ノード111間のネッワーク経路などのVSAN環境の物理インベントリを維持するディレクトリサービスとして働く。既に論述されたように、物理インベントリを維持することに加えて、メモリ内メタデータデータベースは、さらに、オブジェクトストア116に格納されたオブジェクトのメタデータのカタログ(例えば、どんな複合およびコンポーネントオブジェクトが存在するか、どんなコンポーネントオブジェクトがどんな複合オブジェクトに属するか、どのノードがどのオブジェクトへのアクセスを制御する「コーディネータ」または「オーナ」として働くか、オブジェクト毎のサービス品質要件、オブジェクト構成、物理ストレージ位置へのオブジェクトのマッピングなど)を提供する。既に論述されたように、VSANモジュール114内の他のサブモジュールは、更新のためにCMMDSサブモジュール335(図3では関連線により表される)へアクセスして、クラスタトポロジーとオブジェクト構成の変更を学習する。例えば、既に論述されたように、仮想ディスク生成中に、CLOMサブモジュール325は、仮想ディスクブループリントを生成するためにメモリ内メタデータデータベースへアクセスする。DOMサブモジュール340は、実行中VM112からのI/Oオペレーションに対処するために、メモリ内メタデータデータベースへアクセスして、対応する複合オブジェクト(例えば、仮想ディスクオブジェクト)のコンポーネントオブジェクト(例えば、ストライプ)を格納するノード111と、I/Oオペレーションに応じるためにそれらのノードが到達可能な経路とを判定する。
前に論述したように、DOMサブモジュール340は、オブジェクト生成中だけでなくI/Oオペレーションの対処中に、DOMサブモジュール340が実行される特定のノード111のローカルストレージ内に格納されたオブジェクトストア116内のそれらのコンポーネントオブジェクトおよびそのノード111が「コーディネータ」または「オーナ」として現在指定されているいくつかの他の複合オブジェクトへのアクセスを制御し、これらのオペレーションに対処する。例えば、VMからのI/Oオペレーションに対処する際、いくつかの実施形態における複合オブジェクトの階層的性質に起因して、ターゲット複合オブジェクト(例えば、I/Oオペレーションを受ける仮想ディスクオブジェクト)のコーディネータとして働くDOMサブモジュール340は、第2のノード111(またはノード群)内の異なるDOMサブモジュール340とネットワークを介してさらに通信する必要があるかもしれない。第2のノード111(またはノード群)は、第2のノード111のローカルストレージ内に格納され、かつI/Oオペレーションを受ける仮想ディスクの一部分である仮想ディスクオブジェクトの特定のコンポーネントオブジェクト(例えば、ストライプなど)のコーディネータとして働く。I/Oオペレーションを発行するVMが、仮想ディスクオブジェクトのコーディネータとはまた異なるノード111上に存在すれば、VMを動作させるノードのDOMサブモジュール340はまた、仮想ディスクオブジェクトのコーディネータのDOMサブモジュール340とネットワークを介して通信する必要があるだろう。いくつかの実施形態では、I/Oオペレーションを発行するVMが、I/Oオペレーションを受ける仮想ディスクオブジェクトのコーディネータと異なるノード上に存在すれば、2つのノードの2つのDOMサブモジュール340は、VMを動作させるノードへ仮想ディスクオブジェクトのコーディネータの役割を変更するために互いに通信し得る(例えば、これにより、VMを動作させるノードと仮想ディスクオブジェクトのコーディネータとして働くノードとの間のI/Oオペレーションを調整するために必要とされるネットワーク通信の量が低減される)。
DOMサブモジュール340はまた同等に、オブジェクト生成中に互いに通信し合う。例えば、仮想ディスクの生成中にCLOMモジュール325により生成された仮想ディスクブループリントは、どのノード111がその対応するコンポーネントオブジェクト(ストライプなど)としてだけでなく仮想ディスクオブジェクトのコーディネータとして働くべきかを指定する情報を含み得る。このような指定ノードのDOMサブモジュール340の各々には、オブジェクトに関するメタデータによりメモリ内メタデータデータベースを更新するために、各々のオブジェクトを生成し、このようなオブジェクトへローカルストレージを(必要に応じ)割り振り、それらのオブジェクトをそれらの対応するCMMDSサブモジュール335へ通知する要求が発行される(例えば、実施形態に依存して、仮想ディスクオブジェクトのコーディネータとして指定されたDOMサブモジュール340により、または仮想ディスクブループリントなどを生成するノードのDOMサブモジュール340により)。このような要求を行うために、DOMサブモジュール340は、そのノード111のローカルSSDおよび磁気ディスクとの通信を実際に推進するVSANモジュール114内のコンポーネントとして働くログ構造化オブジェクトマネジャ(LSOM:log structured object manager)サブモジュール350と相互作用する。コンポーネントオブジェクトのローカルストレージを割り振る(およびそのノードがコーディネータして働く複合オブジェクトのこのようなポリシーおよび構成などの他のメタデータを格納する)ことに加えて、LSOMサブモジュール350は追加的に、そのノード111のローカルストレージに対するI/Oオペレーションのフローを監視する。
図3はまた、論理的エンドポイント(例えば、ノード、オブジェクトなど)間に任意のサイズのデータグラムを提供する高信頼データグラムトランスポート(RDT:reliable datagram transport)サブモジュール345を描写する。同エンドポイントは場合によっては複数の経路にわたり得る。一実施形態では、下位トランスポートはTCPである。代替的に、RDMAなどの他のトランスポートが使用され得る。RDTサブモジュール345は、例えば上で既に論述されたようにオブジェクトを生成するか、またはI/Oオペレーションに対処するためにDOMサブモジュール340が互いに通信する場合に使用される。いくつかの実施形態では、RDTモジュール345は、CMMDSモジュール335と相互作用することにより、メモリ内メタデータデータベース内に最新の位置情報を維持し、リンク健康状態に基づき接続を生成、除去、または再確立するために、論理的エンドポイントのアドレスを動的に決定する。例えば、CMMDSモジュール335がリンクを不健康であるとして報告すれば、RDTサブモジュール345は、より良い状態のリンクを好み、この接続を取り止め得る。
図4は、一実施形態による、規定のストレージポリシーに基づき仮想ディスクオブジェクトを生成するための方法フローチャートを示す。例えば、工程400では、アドミニストレータは、容量、可用性およびIOPS要件(例えば、規定ストレージポリシー)を有する仮想ディスクを生成するために仮想管理プラットホーム105のユーザインターフェースと相互作用し得る。一実施形態では、次に、仮想管理プラットホーム105は、工程405において、「マスタ」ノード111に仮想ディスクのオブジェクトを生成するように要求し得る。工程410では、このようなマスタノード111は、VSANモジュール内のそのCLOMサブモジュール325を介し仮想ディスクブループリントを生成し得る。既に論述したように、CLOMサブモジュール325は、CMMDSサブモジュール335のメモリ内メタデータデータベースを調べることにより判断されたクラスタ110の状態に基づき、仮想ディスクオブジェクト(例えば、複合オブジェクト)の生成のための仮想ディスクブループリントを生成する。仮想ディスクブループリントは、仮想ディスクオブジェクトのコーディネータまたはオーナとして働くべき特定のノードを識別し得る。工程415では、マスタノード111のDOMサブモジュール340は、識別されたノードのDOMサブモジュール340に仮想ディスクオブジェクトを生成するように要求し得る。工程420では、識別されたノードのDOMサブモジュール340は、例えばその対応するLSOMサブモジュール350と通信することにより要求を受信し、仮想ディスクオブジェクトを生成し、仮想ディスクオブジェクトについて記述するメタデータをそのローカルストレージ内に持続的に格納する。工程425では、DOMサブモジュール340は、仮想ディスクオブジェクトブループリントに基づきクラスタ110内のそれらの他のノード(仮想ディスクブループリント内の任意のコンポーネントオブジェクトのコーディネータまたはオーナとして働くように指定された)を識別する。DOMサブモジュール340は、コンポーネントオブジェクトのコーディネータとして働く他のノードのDOMサブモジュール340と通信し(例えば、そのRDTサブモジュール345を使用することにより)、このようなコンポーネントオブジェクトを支援するデータをそれらのローカルストレージ内に格納する。仮想ディスクオブジェクトのコーディネータのDOMサブモジュール340から各々のコンポーネントオブジェクトを生成する要求を受信すると、DOMサブモジュール340は、工程430において、コンポーネントオブジェクト(およびその関連メタデータ)のローカルストレージを割り振るために各々のLSOMモジュール350と通信する。このようなコンポーネントオブジェクトが生成されると、工程435において、それらのDOMサブモジュール340はコンポーネントの生成をそのCMMDSサブモジュール335のメモリ内メタデータデータベースへ通知する。工程440では、仮想ディスクオブジェクトのコーディネータのDOMサブモジュール340はまた、メモリ内メタデータデータベースを更新するためにそのCMMDSサブモジュール335にその生成を通知し、最終的に確認をアドミニストレータへ送信する(例えば、仮想管理プラットホーム105へのマスタノード通信を介し)。一実施形態では、仮想ディスクオブジェクトのコーディネータのDOMサブモジュール340および仮想ディスクオブジェクトの各コンポーネントオブジェクトのコーディネータのDOMサブモジュール340は、さらに、または仮想ディスクオブジェクトまたは関連コンポーネントオブジェクトに影響を与えるだろう(例えば、ノードが消える、ローカルディスクが消えるなど)クラスタ110の状態に対する関連事象または変更(CMMDSサブモジュール335により連続的に監視される)について通知される「コールバック」を定期的に読むか、またはそれらの対応するCMMDSサブモジュール335に登録する。例えば、仮想ディスクオブジェクトのコーディネータのCMMDSサブモジュール335が「仮想ディスクオブジェクトのコンポーネントオブジェクトのうちの1つのコーディネータとして働く特定のノードにもはや到達可能ではない」ということを発見すれば、CMMDSサブモジュール335はコールバックメカニズムを介しその対応するDOMサブモジュール340に通知する。同様に、仮想ディスクオブジェクトのコンポーネントオブジェクトのコーディネータのCMMDSサブモジュール335が、「仮想ディスクオブジェクト(または仮想ディスクオブジェクトの任意の他のコンポーネントオブジェクト)のコーディネータとして働く特定のノードにもはや到達可能ではない」ということを発見すれば、このようなCMMDSサブモジュール335は同様に、コールバックメカニズムを介しその対応するDOMサブモジュール340に通知する。このようなコールバックメカニズムは、クラスタ110内のノードのDOMサブモジュール340が、行動を取ることができるように、以下にさらに説明するように、例えばノード障害または任意の他の事象により生成され得るクラスタ110のいくつかのパーティションにおいていくつかのオブジェクトがアクセス可能または利用可能となるようにする。
いくつかの実施形態では、工程435、440においてコーディネータノードにより行われる通知(およびメモリ内メタデータのそれらのローカルバージョンに対してコーディネータノードによりなされる任意の他の更新)は、クラスタ110の「リーダ(leader)」または「マスタ」ノード(いくつかの実施形態において先に述べた同じマスタノードであり得る)と通信することにより実施される。リーダノードは、メモリ内メタデータデータベースの真のバージョンを維持し、様々なVSANモジュール114すべてからのこのような通知された更新を受信し、このような更新に全順序を課し、次に、これらの更新をクラスタ110内のノードのVSANモジュール114(更新自体を通知したノードを含む)へ伝達する。VSANモジュール114は、リーダノードにより課された順序でメモリ内メタデータデータベースのそれらのローカルバージョンを常時かつ確実に更新することができる。一実施形態では、各VSANモジュール114のCMMDSサブモジュール335はクラスタ110内のリーダノードを選ぶためのプロトコルを含む。クラスタ110が生成されると、クラスタ110内の各ノードのCMMDSサブモジュール335はリーダノードを選ぶために互いに通信する。クラスタ内の様々なノードへ更新を伝達することに加えて、いくつかの実施形態では、リーダノードはさらに、新しいノード同士を同期させるとともにメモリ内メタデータデータベースを介しノード到達可能性およびクラスタ情報を発行する責任を負い得る。選ばれると、リーダノードは、現在のリーダノードが失敗した場合にリーダノードになるバックアップリーダノードを指定する。一実施形態では、リーダノードにより受信された各更新は最初に、クラスタ内のノードの残りへ送信される前にバックアップリーダノードと同期される。
クラスタ110が分断されると、例えば、ノードまたはネットワーク故障に、またはオフラインとなるノードに起因して、各パーティションのノードは同様に、例えばこのようなパーティションがリーダノードもバックアップリーダノードも含まなければパーティションの新しいリーダノードおよびバックアップリーダノードのうちの少なくとも一方を選ぶ。前に論述したように、CMMDSサブモジュール335はクラスタ110内の各ノードの状態、アクセス可能性および可視性を監視するので、ノード111のCMMDSサブモジュール335は、1つまたは複数のパーティションをクラスタ110内に出現させるノードまたはネットワーク故障を集合的に認識し、パーティションの新しいリーダノードおよびバックアップリーダノードのうちの少なくとも一方を既に論述したように適切に選ぶ。CMMDSサブモジュール335は、認識されたパーティションが非重複メンバーシップを有するようにノードが他のノードと通信し得る場合に限り、このようなノードがパーティションに属する、すなわちパーティションのメンバーであると判断し得る(および逆もまた同様)。
図5は、一実施形態による、複合オブジェクトがノードのクラスタのパーティションからアクセス可能かどうかを判断するためのフローチャートを示す。工程500において、1つまたは複数のパーティションがノード障害または他の事象(例えば、再構成など)に起因してクラスタ110内で認識されれば、工程505において、このようなパーティションのリーダノードが、例えば図5A)で説明したように、未だ存在していなければ選ばれる。工程510では、分断に起因してもはやアクセス可能でない他のノード(例えば、故障したノードまたは別のパーティション内に存在するノード等)により調整された関連オブジェクト(例えば、複合オブジェクトの他のコンポーネントオブジェクトまたは複合オブジェクト自体)を有する複合またはコンポーネントオブジェクトのコーディネータまたはオーナとして働くパーティション内の各ノードは、このような他の関連オブジェクトへのアクセスの欠如について通知される。例えば、既に論述されたコールバックメカニズムを利用する一実施形態では、このようなノードのCMMDSサブモジュール335は、そのクラスタ監視活動を通じて、他の関連オブジェクトへのアクセスの欠如を生じるクラスタ110の状態の変化(例えば、分断)を認識し、ノードの対応するDOMサブモジュール340に通知する。工程515では、複合オブジェクトのコーディネータがパーティションからアクセス可能でなければ、工程520において、パーティション内の複合オブジェクトの各々のコンポーネントオブジェクトの各コーディネータはパーティションの複合オブジェクトのコーディネータとして自身を選ぼうとする。工程525では、コンポーネントオブジェクトのコーディネータのうちの1つだけが、パーティション内の複合オブジェクトのコーディネータとして自身を首尾よく選ぶ。工程530では、複合オブジェクトのコーディネータとして働くパーティション内のノードのCMMDSサブモジュール335(工程525において既に存在していたか、または選ばれた)は、コンポーネントオブジェクトの定足数または大多数がパーティションのメンバーであるノード内に存在する複合オブジェクトを構成するかどうかを判断する。一実施形態では、複合オブジェクトがその生成中に偶数のコンポーネントオブジェクトを有すれば、複合オブジェクトのオーナノードは、クラスタ110を分断する故障事象が発生した場合に特定のパーティションの定足数を提供するために、複合オブジェクトの生成中に奇数の「ウイットネス」コンポーネントオブジェクト(コンポーネントオブジェクトが存在しない1つまたは複数のノードに通常は属する)を追加し得る。複合オブジェクトのコーディネータが「複合オブジェクトを構成するコンポーネントオブジェクトの定足数または大多数がパーティションのノード内に格納される」と判断すれば、コーディネータノードは、工程535において、メタデータまたは構成オペレーション(例えば、そのストレージプロファイルまたはポリシーを修正する、そのブループリント215を修正する等)が複合オブジェクトに対し行われることをオーナノードが許可するように(例えば、すべてのこのようなオペレーションは通常、「構成」オペレーションまたは「メタデータ」オペレーションのいずれかと呼ばれる)、複合オブジェクトがパーティション内で「アクセス可能である」ということを示すためにそのメモリ内メタデータデータベースを更新する。このような更新は、既に論述したようにリーダノードによりパーティション内の他のノードへ伝達されるであろう。工程540において、コーディネータノードがさらに、「パーティション内のコンポーネントオブジェクトの定足数がまた、複合オブジェクトのデータの全コピーを含む」と判断すれば、工程545では、オーナノードはさらに、I/Oオペレーションが複合オブジェクトに対し行われることをオーナノードがまた許可するように、複合オブジェクトがパーティション内で「利用可能である」ということを示すためにそのメモリ内メタデータデータベースを更新する。
工程530において、複合オブジェクトのコーディネータノードが、パーティション内のコンポーネントオブジェクトの定足数(例えば、大多数)を有していないと判断すれば、工程550において、複合オブジェクトのコーディネータノードは、そのメモリ内メタデータデータベース内で複合オブジェクトがパーティションからアクセス可能でない(パーティション内でリーダノードにより他のノードの他のメモリ内メタデータデータベースへ伝達されたので)ということを示す。工程555において、複合オブジェクトのいかなるコンポーネントオブジェクトもパーティション内に存在しなければ、工程560では、コーディネータノードはまた、このようなコンポーネントオブジェクトが「劣化した」、「アクセス不能である」、またはそうでなければパーティションからアクセスされ得ないということを示すために、そのメモリ内メタデータデータベース(およびリーダノードを介しパーティション内の他のノードのローカルメモリ内メタデータデータベース)を更新する。
オブジェクトストア116内の複合オブジェクト毎に、1つの特定のパーティションの複合オブジェクトのオーナまたはコーディネータとして働く当該パーティション内の最大で1つのノードが「複合オブジェクトがアクセス可能である」ということを検証するということを認識すべきである。前述の分断技術を実施する実施形態は、分断を生じる故障をクラスタ110が経験できるようにするとともに、並列パーティションが共存することと、ノード上で実行されるVMなどのクライアントからのI/Oオペレーションを場合によっては支援することとを許容するということをさらに認識すべきである。例えば、複合オブジェクト200を構成するコンポーネントオブジェクトの定足数または大多数がまた、同じ特定のパーティション内に存在し、また複合オブジェクトのデータの全コピーを含む限り、同じパーティション内のノードにおいて実行されるVMなどのクライアントは、たとえクラスタ110が分断に悩まされてきたとしても、複合オブジェクト200(例えば、仮想ディスクオブジェクト)に対しI/Oオペレーションを行い得る。
図6は、多数のパーティションを単一クラスタへ戻す調整のフローチャートを示す。パーティションが単一クラスタ110にマージされ戻されるようにノード障害、ネットワーク故障または他の故障事象が解決される(または、ノードがオンラインに戻る)と、工程600では、すべてのパーティションのリーダおよびバックアップリーダノードがそれらの役割を放棄するか、または単一のリーダおよびバックアップリーダノードへ譲る。例えば、一実施形態では、最大ノードメンバーシップを有するパーティションのリーダおよびバックアップリーダノードはそれらの役割を保持し、残りのパーティションのすべてのリーダおよびバックアップリーダノードは各々の役割を放棄する。工程605では、そのリーダノードがその指導的役割を放棄したパーティション内に存在した各ノードは、ノードがこのようなオブジェクトのオーナノードとして働いたそのメモリ内メタデータデータベースに対してなされたオブジェクト(複合またはコンポーネントオブジェクト)に対するいかなる更新(例えば、メタデータオペレーションなど)もキューまたはログ(または類似データ構造)内に格納する。例えば、ノードが、そのパーティション内に存在する間に新しいコンポーネントオブジェクトを複合オブジェクトへ追加した複合オブジェクトのコーディネータノードであれば、同ノードは、新しいコンポーネントオブジェクトの追加に関係するメタデータオペレーションをそのキューへ追加するであろう。同様に、新たに生成されたコンポーネントオブジェクトのコーディネータノードだったノードは同様に、新しいコンポーネントオブジェクトに関係する更新をそのキュー内に追加するだろう。
一実施形態では、CMMDSサブモジュール335は、このようなオブジェクトに対してなされたいかなる更新(例えば、メタデータおよびI/Oオペレーション等)も追跡するためにメモリ内メタデータデータベース内にオブジェクト毎の構成順位識別子または番号を維持する。例えば、仮想ディスクブループリント215に対する変更などのメタデータオペレーションが複合オブジェクト200に対しなされると、複合オブジェクト200のオーナノードは、複合オブジェクト200に対応する構成順位番号をインクリメントし得る(これは、次に、既に論述したように、クラスタ110または場合によってはパーティション内のノードの残りへ例えば2相コミットプロトコルを使用することによりリーダノードにより伝達され得る)。既に論述したように、クラスタ110の分断が発生した場合には1つのパーティションの1つのオーナノードだけが複合オブジェクトへ「アクセス」することができ、したがって複合オブジェクトの構成順位番号をインクリメントすることができ、これにより可能な分断脳状況を回避するということを認識すべきである。
工程610では、そのリーダノードがその指導的役割を放棄したパーティション内に存在した各ノードは次に、そのローカルメモリ内メタデータデータベースを削除する。メモリ内メタデータデータベースの削除は、ノードがパーティション内に存在する間に複合オブジェクトのために働いてきたであろういかなる以前のオーナーシップ役割も効果的に除去する。工程615では、このような各ノードは、存続リーダノードのメモリ内メタデータデータベースを受信する。工程620では、このような各ノードは次に、そのキュー内のいかなる更新も、存続メモリ内メタデータデータベース中へ伝達およびコミット(例えば、2相コミット等)するために存続リーダノードへ送出または「再生」する。工程625では、伝搬のための様々なノードからのこのような更新をすべて受信するとリーダノードは、このような更新に対応するオブジェクト毎に、「更新が更新に関連付けられたオブジェクトの構成順位番号に基づき昇順でクラスタ内のすべてのノードによりコミットされる」ということを送信および要求する。このようにして、更新は正しい順序でメモリ内メタデータデータベースへコミットされる。
図7は、一実施形態による、VMから発するI/Oオペレーションの対処を示す。特定のノード上で実行されるVMがその仮想ディスクに対してI/Oオペレーションを行うと、VMのゲストオペレーティングシステムは、工程700において、その仮想ディスクを対象としたI/Oオペレーション要求を発行する(ゲストオペレーティングシステムのデバイスドライバを介し)。同I/Oオペレーション要求は、工程705において、ハイパーバイザ113により受信され、最終的にはハイパーバイザ113内のI/Oスタックの様々な層を介してVSANモジュール114のDOMサブモジュール340へ転送および変換される。工程710では、DOMサブモジュール340により受信されたI/O要求は、CMMDSサブモジュール335のメモリ内メタデータデータベースへアクセスすることにより仮想ディスクオブジェクトのコーディネータノードを識別するためにDOMサブモジュール340が使用する仮想ディスクを表すオブジェクトの一意的識別子を含む(いくつかの実施形態では、一意的識別子へのコーディネータノードの識別子のマッピングを参照するためにメモリ内メタデータデータベースへアクセスすることは、仮想ディスクオブジェクトが当初アクセスされた場合だけ発生し、このようなマッピングは後の参照が必要とされないように将来のI/Oオペレーションにわたって持続する)。仮想ディスクオブジェクトのコーディネータノードを識別すると、VMを動作させるノードのDOMサブモジュール340は、工程715においてI/Oオペレーションを行うこと要求するためにコーディネータノードのDOMサブモジュール340と通信する(例えば、そのRDTサブモジュール345を使用することにより)。既に論述したように、いくつかの実施形態では、VMを動作させるノードと仮想ディスクオブジェクトのコーディネータとして働くノードが異なれば、2つのDOMサブモジュールは、仮想ディスクオブジェクトのコーディネータの役割を実行中VMのノードとなるように更新するように通信する。コーディネータのI/O要求を受信すると、工程720では、そのDOMサブモジュールは、I/Oオペレーションを受ける仮想ディスクオブジェクトの特定のコンポーネントオブジェクト(例えば、ストライプ)のそれらのコーディネータノードを識別する(例えば、いくつかの実施形態では、メモリ内メタデータデータベースを再び参照することにより)。例えば、I/OオペレーションがRAID 0構成の複数のストライプ(例えば、複数のコンポーネントオブジェクト)にまたがれば、DOMサブモジュール340は、I/Oオペレーションを分割し、2つのストライプに対応する関連コンポーネントオブジェクトの各々のコーディネイトノードへ当該I/O要求を適切に送信し得る。工程725では、仮想ディスクオブジェクトのコーディネータノードのDOMサブモジュールは、識別されたコンポーネントオブジェクトのコーディネータノードのDOMサブモジュールがI/Oオペレーション要求を行うことを要求し、工程730では、識別されたコンポーネントオブジェクトのこのようなコーディネータノードのDOMサブモジュールは、コンポーネントオブジェクトが格納されるローカルストレージリソースのI/Oオペレーションを行うためにそれらの対応するLSOMサブモジュールと相互作用する。
有利には、本開示の実施形態はオブジェクト毎ベースで分散システム内のノードクラスタの分断耐性を提供する。ソフトウェアベースVSANでは、コンポーネントオブジェクトの定足数が最大で1つのパーティション内に存在するということを保証することにより、クラスタパーティションは、「分断脳」状況がクラスタ内に発生したとしてもクラスタ内の複合オブジェクトが一定レベルの可用性で依然として動作するように共存し得る。これまでの実施形態はハイパーバイザ内のVSANモジュール114について説明したが、代替実施形態は非仮想化従来型オペレーティングシステム内など他の文脈において仮想機器内(例えば、仮想マシンの内部)などで実行されるVSANモジュール114の機能を実現し得るということを認識すべきである。同様に、これまでの実施形態のいくつかはオブジェクトストア116内のファイルシステムオブジェクトおよび仮想ディスクオブジェクトのストレージに焦点を合わせたが、他の多くのタイプのオブジェクトがオブジェクトストア116内で格納され得るということを認識すべきである。例えば、名前空間またはファイルシステムオブジェクトおよび仮想ディスクオブジェクトに加えて、いくつかの実施形態はさらに、オブジェクトストア116内にVMスワップエリアオブジェクト、メモリチェックポイントオブジェクトおよび任意の他のオブジェクトを格納し得る。上述のいくつかの実施形態では、メモリ内メタデータデータベースはオブジェクト生成中とI/Oオペレーション中の両方で利用される。別の実施形態では、複数のメタデータデータベースが利用され得る。例えば、1つの別の実施形態では、例えばオブジェクトの各コーディネータノードは、I/Oオペレーション中に使用されるがクラスタ110内のノードを介して必ずしも分散されないオブジェクトのそれ自身のメモリ内状態を維持する(例えば、未マーシャル化(unmarshalled)RAIDツリーを有するデータ構造として)。同様に、いくつかの実施形態では、メモリ内メタデータデータベース(例えば、オブジェクトメタデータ情報だけでなくホスト、ディスク情報も含む)は、それらのコーディネータノードにより、オブジェクトのために格納された一貫性データから再生成され得るということを認識すべきである。
一般的に言えば、本明細書に記載の様々な実施形態は、コンピュータシステム内に格納されたデータに関わる様々なコンピュータ実施型オペレーションを採用し得る。例えば、これらのオペレーションは物理量の物理マニピュレーションを必要とし得る。通常、必ずしもではないが、これらの量は電気的または磁気的信号の形式を取り得、これらまたはその代表値は格納され、転送され、合成され、比較され、またはそうでなければマニピュレートされることができる。さらに、このようなマニピュレーションは、製造、識別、判断、または比較などの観点でしばしば参照される。1つまたは複数の実施形態の一部をなす本明細書に記載の任意のオペレーションは、有用なマシンオペレーションであり得る。加えて、1つまたは複数の実施形態はまた、これらのオペレーションを行うためのデバイスまたは装置に関する。上記装置は、特別に必要な目的のために特に構築され得る、またはコンピュータ内に格納されたコンピュータプログラムにより選択的に活性化または構成される汎用コンピュータデバイスであり得る。特に、様々な汎用マシンが本明細書の教示に従って書かれたコンピュータプログラムと共に使用され得る、または必要な動作を実行するためにより専用化された装置を構築することがより便利かもしれない。
本明細書に記載の様々な実施形態は、携帯型デバイス、マイクロプロセッサシステム、マイクロプロセサベースまたはプログラム可能民生電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成と共に実施され得る。
1つまたは複数の実施形態が、1つまたは複数のコンピュータ可読媒体内に具現化された1つまたは複数のコンピュータプログラム、または1つまたは複数のコンピュータプログラムモジュールとして実施され得る。用語「コンピュータ可読媒体」は、その後コンピュータシステムに入力されることができるデータを格納することができる任意のデータストレージデバイスを指す。コンピュータ可読媒体は、コンピュータプログラムをコンピュータにより読まれることを可能にするやり方で具現化する任意の既存技術または今後開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードディスク駆動装置、ネットワーク付属ストレージ(NAS:network attached storage)、読み取り専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリ装置)、CD(コンパクトディスク)、CD−ROM、CD−RまたはCD−RW、DVD(デジタルバーサタイルディスク)、磁気テープ、他の光学的および非光学的データストレージデバイスが挙げられる。コンピュータ可読媒体はまた、コンピュータ可読コードが分散されたやり方で格納され実行されるように、ネットワーク結合されたコンピュータシステム上に分散され得る。
1つまたは複数の実施形態が理解の明確のために詳しく説明されたが、いくつかの変更と修正が本開示の範囲内でなされ得るということは明らかである。したがって、記載の実施形態は例示的であって制限的でないと考えるべきであり、特許請求の範囲は本明細書に記載された詳細に限定されなく、請求項の範囲と均等物内で修正され得る。特許請求の範囲において、要素および工程のうちの少なくとも一方は特許請求範囲に明示的に示されない限り動作の任意特定順序を意味しない。
加えて、説明した仮想化方法は通常、特定のハードウェアシステムと整合するインターフェースを仮想マシンが提示するものと仮定してきたが、説明した方法は、任意特定のハードウェアシステムに直接対応しない仮想化と併せて使用され得る。様々な実施形態による仮想化システムは、ホストされた実施形態、ホストされない実施形態、またはこれら2つの差異をあいまいにする傾向がある実施形態として実施され得、すべて想定される。さらに、様々な仮想化オペレーションは、ハードウェアで完全にまたは部分的に実施され得る。例えば、ハードウェア実施形態は、非ディスクデータを安全にするためにストレージアクセス要求の修正のための参照テーブルを採用し得る。
仮想化の程度にかかわらず、多くの変形、修正、追加、改良が可能である。したがって、仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、またはゲストオペレーティングシステムのコンポーネントを含むことができる。複数のインスタンスが、単一インスタンスとして本明細書に記載の構成要素、動作、または構造に対し設けられ得る。最後に、様々な構成要素、動作、データストレージ間の境界はいささか任意的であり、特定のオペレーションが特定の例示的構成の文脈の中で示される。機能の他の割り振りが想定され、1つまたは複数の実施形態の範囲に入り得る。一般的に、例示的構成において別個の構成要素として提示された構造と機能は組み合わせられた構造または構成要素として実現され得る。同様に、単一構成部品として提示された構造と機能は別々の構成要素として実現され得る。これらおよび他の変形、修正、追加、改良は添付特許請求の範囲に入り得る。

Claims (27)

  1. クラスタを少なくとも第1のパーティションと第2のパーティションに分割する失敗事象または管理事象を受けてコンピューティングノードのクラスタを管理する方法であって、(i)前記クラスタはオブジェクトストアを提供するために前記コンピューティングノードの各々のローカルストレージリソースを集約し、(ii)前記オブジェクトストアに格納されたオブジェクトは前記コンピューティングノードを介して格納されるデータコンポーネントに分割され、前記方法は、
    前記オブジェクトストアに格納された第1のオブジェクトを含むデータコンポーネントの大多数が前記第1のパーティション内のコンピューティングノード内に格納されるということを判断する工程と、
    前記オブジェクトストア内に格納された第2のオブジェクトを含むデータコンポーネントの大多数が前記第2のパーティション内のコンピューティングノード内に格納されるということを判断する工程と、
    前記第2のパーティションから前記第1のオブジェクトへのいかなるアクセスを拒絶しつつ、構成オペレーションが前記第1のパーティション内の前記第1のオブジェクトに対して行われることを許可する工程と、
    前記第1のパーティションから前記第2のオブジェクトへのいかなるアクセスを拒絶しつつ、構成オペレーションが前記第2のパーティション内の前記第2のオブジェクトに対して行われることを許可する工程とを含む方法。
  2. 前記第1のオブジェクトを含むデータコンポーネントの大多数がさらに前記第1のオブジェクトを含むすべてのデータを含むということを判断する工程と、
    前記第1のパーティション内の前記コンピューティングノードのうちの1つの上で実行される要求処理により前記第1のパーティション内の前記第1のオブジェクトに対しI/Oオペレーションが行われることを許可する工程とをさらに含む請求項1に記載の方法。
  3. 前記要求処理は仮想マシンであり、前記第1のオブジェクトは前記仮想マシンの仮想ディスクを表す、請求項2に記載の方法。
  4. 構成オペレーションが、前記オブジェクトストア内に格納されたオブジェクトの容量、可用性またはIOPSを修正するオペレーションを含む、請求項1に記載の方法。
  5. 前記コンピューティングノードの各々は、前記オブジェクトストア内に格納された各オブジェクトの現在の構成を追跡するとともに、オブジェクトが前記コンピューティングノードによりアクセス可能かどうかを示すメモリ内データベースのローカルコピーを維持する、請求項1に記載の方法。
  6. 前記第1のパーティション内のコンピューティングノードにより前記第1のオブジェクトに対し行われるいかなるオペレーションもログ内に格納する工程をさらに含む請求項5に記載の方法。
  7. 故障事象から回復した場合、
    前記第1のパーティションの前記コンピューティングノード内の前記メモリ内データベースの前記ローカルコピーを前記第2のパーティションのリーダノードからの前記メモリ内データベースの置換コピーで置換する工程と、
    前記メモリ内データベースの前記置換コピーが更新されて前記第1のパーティションで行われたオペレーションを含むように前記ログ内の前記オペレーションを再生する工程とをさらに含む請求項6に記載の方法。
  8. 前記第1のパーティションと前記第2のパーティションをマージした場合、前記第1のパーティション内のコンピューティングノード内に格納された前記第1のオブジェクトのデータコンポーネントと前記第2のパーティション内に格納された前記第1のオブジェクトの任意の他のデータコンポーネントとを調整する工程をさらに含む請求項1に記載の方法。
  9. 前記調整する工程は、前記第1のオブジェクトになされた更新をマージされたクラスタのリーダノードで再生する工程をさらに含む、請求項8に記載の方法。
  10. プロセッサで実行されると、クラスタを少なくとも第1のパーティションと第2のパーティションに分割する失敗事象または管理事象を受けてコンピューティングノードのクラスタを管理するオペレーションを行う命令を格納する非一時的コンピュータ可読記憶媒体であって、(i)前記クラスタはオブジェクトストアを提供するために前記コンピューティングノードの各々のローカルストレージリソースを集約し、(ii)前記オブジェクトストアに格納されたオブジェクトは前記コンピューティングノードを介して格納されるデータコンポーネントに分割され、前記オペレーションは、
    前記オブジェクトストアに格納された第1のオブジェクトを含むデータコンポーネントの大多数が前記第1のパーティション内のコンピューティングノード内に格納されるということを判断すること、
    前記オブジェクトストア内に格納された第2のオブジェクトを含むデータコンポーネントの大多数が前記第2のパーティション内のコンピューティングノード内に格納されるということを判断すること、
    前記第2のパーティションから前記第1のオブジェクトへのいかなるアクセスも拒絶しつつ、構成オペレーションが前記第1のパーティション内の前記第1のオブジェクトに対して行われることを許可すること、
    前記第1のパーティションから前記第2のオブジェクトへのいかなるアクセスも拒絶しつつ、構成オペレーションが前記第2のパーティション内の前記第2のオブジェクトに対して行われることを許可することを含む、コンピュータ可読記憶媒体。
  11. 前記オペレーションは、
    前記第1のオブジェクトを含むデータコンポーネントの大多数がさらに前記第1のオブジェクトを含むすべてのデータを含むということを判断すること、
    前記第1のパーティション内の前記コンピューティングノードのうちの1つの上で実行される要求処理により前記第1のパーティション内の前記第1のオブジェクトに対しI/Oオペレーションが行われることを許可することをさらに含む、請求項10に記載のコンピュータ可読記憶媒体。
  12. 前記要求処理は仮想マシンであり、前記第1のオブジェクトは前記仮想マシンの仮想ディスクを表す、請求項11に記載のコンピュータ可読記憶媒体。
  13. 構成オペレーションが、前記オブジェクトストア内に格納されたオブジェクトの容量、可用性またはIOPSを修正するオペレーションを含む、請求項10に記載のコンピュータ可読記憶媒体。
  14. 前記コンピューティングノードの各々は、前記オブジェクトストア内に格納された各オブジェクトの現在の構成を追跡するとともに、オブジェクトが前記コンピューティングノードによりアクセス可能かどうかを示すメモリ内データベースのローカルコピーを維持する、請求項10に記載のコンピュータ可読記憶媒体。
  15. 前記オペレーションは、前記第1のパーティション内のコンピューティングノードにより前記第1のオブジェクトに対し行われたいかなるオペレーションもログ内に格納することをさらに含む、請求項14に記載のコンピュータ可読記憶媒体。
  16. 故障事象から回復した場合、前記オペレーションは、
    前記第1のパーティションの前記コンピューティングノード内の前記メモリ内データベースの前記ローカルコピーを前記第2のパーティションのリーダノードからの前記メモリ内データベースの置換コピーで置換すること、
    前記メモリ内データベースの前記置換コピーが更新されて前記第1のパーティションで行われたオペレーションを含むようにログ内の前記オペレーションを再生することをさらに含む、請求項15に記載のコンピュータ可読記憶媒体。
  17. 前記第1のパーティションと前記第2のパーティションをマージした場合、前記オペレーションは、前記第1のパーティション内のコンピューティングノード内に格納された前記第1のオブジェクトのデータコンポーネントと前記第2のパーティション内に格納された前記第1のオブジェクトの任意の他のデータコンポーネントとを調整することをさらに含む、請求項10に記載のコンピュータ可読記憶媒体。
  18. 前記調整することは、前記第1のオブジェクトに対しなされた更新をマージされたクラスタのリーダノードで再生することをさらに含む、請求項17に記載のコンピュータ可読記憶媒体。
  19. システムであって、
    プロセッサと、
    前記プロセッサで実行されると、クラスタを少なくとも第1のパーティションと第2のパーティションに分割する失敗または管理事象を受けてコンピューティングノードのクラスタを管理するオペレーションを行うアプリケーションをホストするメモリとを備え、(i)前記クラスタはオブジェクトストアを提供するために前記コンピューティングノードの各々のローカルストレージリソースを集約し、(ii)前記オブジェクトストアに格納されたオブジェクトは前記コンピューティングノードを介して格納されるデータコンポーネントに分割され、前記オペレーションは、
    前記オブジェクトストアに格納された第1のオブジェクトを含むデータコンポーネントの大多数が前記第1のパーティション内のコンピューティングノード内に格納されるということを判断すること、
    前記オブジェクトストア内に格納された第2のオブジェクトを含むデータコンポーネントの大多数が前記第2のパーティション内のコンピューティングノード内に格納されるということを判断すること、
    前記第2のパーティションから前記第1のオブジェクトへのいかなるアクセスも拒絶しつつ、構成オペレーションが前記第1のパーティション内の前記第1のオブジェクトに対して行われることを許可すること、
    前記第1のパーティションから前記第2のオブジェクトへのいかなるアクセスも拒絶しつつ、構成オペレーションが前記第2のパーティション内の前記第2のオブジェクトに対して行われることを許可することを含む、システム。
  20. 前記オペレーションは、
    前記第1のオブジェクトを含むデータコンポーネントの大多数がさらに前記第1のオブジェクトを含むすべてのデータを含むということを判断すること、
    前記第1のパーティション内の前記コンピューティングノードのうちの1つの上で実行される要求処理により前記第1のパーティション内の前記第1のオブジェクトに対しI/Oオペレーションが行われることを許可することをさらに含む、請求項19に記載のシステム。
  21. 前記要求処理は仮想マシンであり、前記第1のオブジェクトは前記仮想マシンの仮想ディスクを表す、請求項20に記載のシステム。
  22. 構成オペレーションが、前記オブジェクトストア内に格納されたオブジェクトの容量、可用性またはIOPSを修正するオペレーションを含む、請求項19に記載のシステム。
  23. 前記コンピューティングノードの各々は、前記オブジェクトストア内に格納された各オブジェクトの現在の構成を追跡するとともにオブジェクトが前記コンピューティングノードによりアクセス可能かどうかを示すメモリ内データベースのローカルコピーを維持する、請求項19に記載のシステム。
  24. 前記オペレーションは、前記第1のパーティション内のコンピューティングノードにより前記第1のオブジェクトに対し行われたいかなるオペレーションもログ内に格納することをさらに含む、請求項23に記載のシステム。
  25. 故障事象から回復した場合、前記オペレーションは、
    前記第1のパーティションの前記コンピューティングノード内の前記メモリ内データベースの前記ローカルコピーを前記第2のパーティションのリーダノードからの前記メモリ内データベースの置換コピーで置換すること、
    前記メモリ内データベースの前記置換コピーが更新されて前記第1のパーティションで行われたオペレーションを含むようにログ内の前記オペレーションを再生することをさらに含む、請求項24に記載のシステム。
  26. 前記第1のパーティションと前記第2のパーティションをマージした場合、前記オペレーションは、前記第1のパーティション内のコンピューティングノード内に格納された前記第1のオブジェクトのデータコンポーネントと前記第2のパーティション内に格納された前記第1のオブジェクトの任意の他のデータコンポーネントとを調整することをさらに含む、請求項19に記載のシステム。
  27. 前記調整することは、前記第1のオブジェクトになされた更新をマージされたクラスタのリーダノードで再生することをさらに含む、請求項26に記載のシステム。
JP2018218227A 2013-08-26 2018-11-21 クラスタメンバーシップ管理における分断耐性 Active JP6715309B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361870167P 2013-08-26 2013-08-26
US61/870,167 2013-08-26
US14/209,426 US9672115B2 (en) 2013-08-26 2014-03-13 Partition tolerance in cluster membership management
US14/209,426 2014-03-13

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017208072A Division JP6438104B2 (ja) 2013-08-26 2017-10-27 クラスタメンバーシップ管理における分断耐性

Publications (2)

Publication Number Publication Date
JP2019036361A true JP2019036361A (ja) 2019-03-07
JP6715309B2 JP6715309B2 (ja) 2020-07-01

Family

ID=52481317

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2016529765A Active JP6392345B2 (ja) 2013-08-26 2014-06-05 クラスタメンバーシップ管理における分断耐性
JP2017208072A Active JP6438104B2 (ja) 2013-08-26 2017-10-27 クラスタメンバーシップ管理における分断耐性
JP2018218227A Active JP6715309B2 (ja) 2013-08-26 2018-11-21 クラスタメンバーシップ管理における分断耐性

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2016529765A Active JP6392345B2 (ja) 2013-08-26 2014-06-05 クラスタメンバーシップ管理における分断耐性
JP2017208072A Active JP6438104B2 (ja) 2013-08-26 2017-10-27 クラスタメンバーシップ管理における分断耐性

Country Status (5)

Country Link
US (1) US9672115B2 (ja)
EP (2) EP3039548B1 (ja)
JP (3) JP6392345B2 (ja)
AU (1) AU2014311869B2 (ja)
WO (1) WO2015030895A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US10747475B2 (en) 2013-08-26 2020-08-18 Vmware, Inc. Virtual disk blueprints for a virtualized storage area network, wherein virtual disk objects are created from local physical storage of host computers that are running multiple virtual machines
US11016820B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Load balancing of resources
US9811531B2 (en) 2013-08-26 2017-11-07 Vmware, Inc. Scalable distributed storage architecture
US9887924B2 (en) 2013-08-26 2018-02-06 Vmware, Inc. Distributed policy-based provisioning and enforcement for quality of service
US9450852B1 (en) * 2014-01-03 2016-09-20 Juniper Networks, Inc. Systems and methods for preventing split-brain scenarios in high-availability clusters
DE102014105473A1 (de) * 2014-04-16 2015-10-22 Fresenius Medical Care Deutschland Gmbh Verfahren zum Entfernen von Blut aus einem extrakorporalen Blutkreislauf unter Druckkontrolle sowie Vorrichtungen
US20150317556A1 (en) * 2014-04-30 2015-11-05 Prophetstor Data Services, Inc. Adaptive quick response controlling system for software defined storage system for improving performance parameter
WO2015172107A1 (en) 2014-05-09 2015-11-12 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US9646103B2 (en) * 2014-07-10 2017-05-09 MyMojo Corporation Client-side template engine and method for constructing a nested DOM module for a website
US9678680B1 (en) * 2015-03-30 2017-06-13 EMC IP Holding Company LLC Forming a protection domain in a storage architecture
US10884727B2 (en) * 2015-05-20 2021-01-05 International Business Machines Corporation Rolling upgrade of a distributed application
US10341252B2 (en) 2015-09-30 2019-07-02 Veritas Technologies Llc Partition arbitration optimization
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10268408B2 (en) * 2017-08-28 2019-04-23 Vmware, Inc. Flexible efficient runtime placement of data across multiple disks
US10467107B1 (en) * 2017-11-01 2019-11-05 Pure Storage, Inc. Maintaining metadata resiliency among storage device failures
US10817392B1 (en) 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
JP6984437B2 (ja) * 2018-01-24 2021-12-22 富士通株式会社 処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
WO2020168477A1 (zh) * 2019-02-20 2020-08-27 北京大学深圳研究生院 一种联盟链共识下满足分区容忍性的拓扑构造方法及系统
JP7270755B2 (ja) * 2019-03-04 2023-05-10 ヒタチ ヴァンタラ エルエルシー 分散システムでのメタデータルーティング
US11108700B2 (en) * 2019-06-28 2021-08-31 Oracle International Corporation Method and system to implement messaging for cluster elections
US11593583B2 (en) 2019-06-28 2023-02-28 Oracle International Corporation Method and system to implement cluster failure prediction to facilitate split brain resolution
US11461191B2 (en) * 2019-11-14 2022-10-04 Vmware, Inc. Orchestrating and prioritizing the rebuild of storage object components in a hyper-converged infrastructure
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US11416450B1 (en) * 2021-03-16 2022-08-16 EMC IP Holding Company LLC Clustering data management entities distributed across a plurality of processing nodes
US20230152992A1 (en) * 2021-11-15 2023-05-18 Vmware, Inc. Force provisioning virtual objects in degraded stretched clusters

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110766A (ja) 1992-09-25 1994-04-22 Hitachi Ltd 分割格納ファイルシステムのディレクトリ構成方法および計算機システム
US6314526B1 (en) 1998-07-10 2001-11-06 International Business Machines Corporation Resource group quorum scheme for highly scalable and highly available cluster system management
US6553389B1 (en) 1999-09-13 2003-04-22 Hewlett-Packard Company Resource availability determination mechanism for distributed data storage system
US6658473B1 (en) 2000-02-25 2003-12-02 Sun Microsystems, Inc. Method and apparatus for distributing load in a computer environment
JP2002108567A (ja) 2000-09-28 2002-04-12 Hitachi Ltd 記憶制御装置
US6839752B1 (en) 2000-10-27 2005-01-04 International Business Machines Corporation Group data sharing during membership change in clustered computer system
US6915391B2 (en) * 2000-12-15 2005-07-05 International Business Machines Corporation Support for single-node quorum in a two-node nodeset for a shared disk parallel file system
US20040136379A1 (en) 2001-03-13 2004-07-15 Liao Raymond R Method and apparatus for allocation of resources
US6708175B2 (en) * 2001-06-06 2004-03-16 International Business Machines Corporation Program support for disk fencing in a shared disk parallel file system across storage area network
US20020188592A1 (en) 2001-06-11 2002-12-12 Storage Technology Corporation Outboard data storage management system and method
US6687701B2 (en) * 2001-09-25 2004-02-03 Hewlett-Packard Development Company, L.P. Namespace management in a distributed file system
US8914429B2 (en) 2002-02-08 2014-12-16 Willaim Pitts Method for creating global distributed namespace
US6985914B2 (en) 2002-02-20 2006-01-10 Emc Corporation Cluster meta file system of file system cells managed by respective data movers of a network file server
US7035858B2 (en) * 2002-04-29 2006-04-25 Sun Microsystems, Inc. System and method dynamic cluster membership in a distributed data system
JP4124331B2 (ja) 2002-09-17 2008-07-23 株式会社日立製作所 Dbms向け仮想ボリューム作成・管理方法
EP2299375A3 (en) 2002-11-14 2012-02-01 EMC Corporation Systems and methods for restriping files in a distributed file system
US8234517B2 (en) * 2003-08-01 2012-07-31 Oracle International Corporation Parallel recovery by non-failed nodes
US7277897B2 (en) * 2003-08-01 2007-10-02 Oracle International Corporation Dynamic reassignment of data ownership
US8527541B2 (en) 2003-11-05 2013-09-03 Emc Corporation Method for mapping a flat namespace onto a hierarchical namespace using locality of reference cues
US20050166011A1 (en) 2004-01-23 2005-07-28 Burnett Robert J. System for consolidating disk storage space of grid computers into a single virtual disk drive
US20050240714A1 (en) 2004-04-13 2005-10-27 Bea Systems, Inc. System and method for virtual content repository deployment
US7360030B1 (en) 2004-06-01 2008-04-15 Sanbolic, Inc. Methods and apparatus facilitating volume management
US20060161753A1 (en) 2005-01-18 2006-07-20 Aschoff John G Method, apparatus and program storage device for providing automatic performance optimization of virtualized storage allocation within a virtualized storage subsystem
US20060218360A1 (en) 2005-03-22 2006-09-28 Burkey Todd R Method, apparatus and program storage device for providing an optimized read methodology for synchronously mirrored virtual disk pairs
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US8127059B1 (en) 2005-09-02 2012-02-28 Pmc-Sierra Us, Inc. Apparatus for interconnecting hosts with storage devices
US20070055703A1 (en) 2005-09-07 2007-03-08 Eyal Zimran Namespace server using referral protocols
US7716425B1 (en) 2006-09-27 2010-05-11 Hewlett-Packard Development Company, L.P. Prefetching data in distributed storage systems
US7669029B1 (en) 2006-11-15 2010-02-23 Network Appliance, Inc. Load balancing a data storage system
JP4505763B2 (ja) * 2007-01-31 2010-07-21 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ノードクラスタの管理
JP2008210057A (ja) 2007-02-23 2008-09-11 Hitachi Ltd 記憶システム及びその管理方法
US8090792B2 (en) 2007-03-08 2012-01-03 Nec Laboratories America, Inc. Method and system for a self managing and scalable grid storage
US8682916B2 (en) 2007-05-25 2014-03-25 F5 Networks, Inc. Remote file virtualization in a switched file system
WO2009088435A1 (en) 2007-12-31 2009-07-16 Netapp, Inc. System and method for automatic storage load balancing in virtual server environments
JP2009217475A (ja) 2008-03-10 2009-09-24 Fujitsu Ltd ストレージシステム,ストレージ装置,ストレージシステムの制御方法および制御プログラム
TWI476610B (zh) 2008-04-29 2015-03-11 Maxiscale Inc 同級間冗餘檔案伺服器系統及方法
US8612678B2 (en) 2008-04-30 2013-12-17 Netapp, Inc. Creating logical disk drives for raid subsystems
JP5250869B2 (ja) 2008-08-28 2013-07-31 株式会社日立製作所 ストレージシステム、論理記憶領域割り当て方法及び計算機システム
US20100114826A1 (en) 2008-10-24 2010-05-06 Microsoft Corporation Configuration management in distributed data systems
US9396021B2 (en) 2008-12-16 2016-07-19 International Business Machines Corporation Techniques for dynamically assigning jobs to processors in a cluster using local job tables
JP5180865B2 (ja) 2009-02-10 2013-04-10 株式会社日立製作所 ファイルサーバ、ファイル管理システムおよびファイル管理方法
KR101042908B1 (ko) 2009-02-12 2011-06-21 엔에이치엔(주) 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체
US8176289B2 (en) 2009-05-21 2012-05-08 Red Hat Israel, Ltd. Method to support sparse volumes or thin provisioned volumes in real time
US8694578B2 (en) * 2009-05-29 2014-04-08 Microsoft Corporation Swarm-based synchronization over a network of object stores
US8103769B1 (en) 2009-09-03 2012-01-24 Amazon Technologies, Inc. Dynamic isolation of shared resources
US8387060B2 (en) 2009-10-01 2013-02-26 Dell Products L.P. Virtual machine resource allocation group policy based on workload profile, application utilization and resource utilization
US8326799B2 (en) 2009-10-09 2012-12-04 Seagate Technology Llc Data distribution in systems with multiple storage entities
US8635422B1 (en) 2009-10-29 2014-01-21 Symantec Corporation Systems and methods for reclaiming storage space from deleted volumes on thin-provisioned disks
US8074003B1 (en) 2009-12-28 2011-12-06 Emc Corporation Host-based storage controller providing block devices in geographically distributed storage
US8453036B1 (en) 2010-02-01 2013-05-28 Network Appliance, Inc. System and method for dynamically resizing a parity declustered group
US8645750B2 (en) 2010-03-04 2014-02-04 Hitachi, Ltd. Computer system and control method for allocation of logical resources to virtual storage areas
US20110238857A1 (en) 2010-03-29 2011-09-29 Amazon Technologies, Inc. Committed processing rates for shared resources
US9128626B2 (en) 2010-10-01 2015-09-08 Peter Chacko Distributed virtual storage cloud architecture and a method thereof
CN102232282B (zh) 2010-10-29 2014-03-26 华为技术有限公司 一种实现数据中心资源负载均衡的方法及装置
US9032146B2 (en) 2010-11-30 2015-05-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic use of raid levels responsive to workload requirements
WO2012090247A1 (en) 2010-12-28 2012-07-05 Hitachi, Ltd. Storage system, management method of the storage system, and program
WO2012104912A1 (en) 2011-02-02 2012-08-09 Hitachi, Ltd. Data storage apparatus and data management method
JP2012173996A (ja) 2011-02-22 2012-09-10 Nec Corp クラスタシステム、クラスタ管理方法、およびクラスタ管理プログラム
US8904136B2 (en) * 2011-03-15 2014-12-02 Symantec Corporation Optimized shrinking of virtual disks
US20120303322A1 (en) 2011-05-23 2012-11-29 Rego Charles W Incorporating memory and io cycle information into compute usage determinations
US8954979B1 (en) 2011-08-15 2015-02-10 Netapp, Inc. Method and system for managing resources in a network
US8819230B2 (en) * 2011-11-05 2014-08-26 Zadara Storage, Ltd. Virtual private storage array service for cloud servers
US8276140B1 (en) 2011-11-14 2012-09-25 Google Inc. Adjustable virtual network performance
US20140130055A1 (en) 2012-02-14 2014-05-08 Aloke Guha Systems and methods for provisioning of storage for virtualized applications
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9298715B2 (en) 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9348724B2 (en) 2012-05-21 2016-05-24 Hitachi, Ltd. Method and apparatus for maintaining a workload service level on a converged platform
US20140115579A1 (en) 2012-10-19 2014-04-24 Jonathan Kong Datacenter storage system
US9092161B2 (en) 2012-12-05 2015-07-28 Red Hat Israel, Ltd. Selection of allocation policy and format for virtual machine disk images
US9122528B2 (en) 2012-12-13 2015-09-01 Telefonaktiebolaget L M Ericsson (Publ) Energy conservation and hardware usage management for data centers
US8924664B2 (en) 2012-12-13 2014-12-30 Infinidat Ltd. Logical object deletion
US9239730B2 (en) 2013-01-11 2016-01-19 Red Hat Israel, Ltd. Managing connections in a distributed virtualization environment
US9495404B2 (en) 2013-01-11 2016-11-15 Commvault Systems, Inc. Systems and methods to process block-level backup for selective file restoration for virtual machines
US9015123B1 (en) 2013-01-16 2015-04-21 Netapp, Inc. Methods and systems for identifying changed data in an expandable storage volume
US8984243B1 (en) 2013-02-22 2015-03-17 Amazon Technologies, Inc. Managing operational parameters for electronic resources

Also Published As

Publication number Publication date
EP3039548A1 (en) 2016-07-06
JP6392345B2 (ja) 2018-09-19
JP6438104B2 (ja) 2018-12-12
EP3528124A3 (en) 2019-10-23
EP3039548B1 (en) 2018-12-19
WO2015030895A1 (en) 2015-03-05
EP3528124A2 (en) 2019-08-21
JP2018049644A (ja) 2018-03-29
US20150058298A1 (en) 2015-02-26
US9672115B2 (en) 2017-06-06
AU2014311869B2 (en) 2017-08-03
JP2016531348A (ja) 2016-10-06
AU2014311869A1 (en) 2016-02-11
EP3528124B1 (en) 2020-12-02
JP6715309B2 (ja) 2020-07-01

Similar Documents

Publication Publication Date Title
JP6438104B2 (ja) クラスタメンバーシップ管理における分断耐性
US11210035B2 (en) Creating, by host computers, respective object of virtual disk based on virtual disk blueprint
US11249956B2 (en) Scalable distributed storage architecture
US10769036B2 (en) Distributed transaction log
US11018988B2 (en) Translating high level requirements policies to distributed configurations
US10270469B2 (en) Efficient data write approach for distributed multi-mirror erasure coding system
US10509708B2 (en) Code block resynchronization for distributed multi-mirror erasure coding system
US20190034087A1 (en) Reducing data amplification when replicating objects across different sites
US11693559B2 (en) Dynamic object policy reconfiguration mechanism for object storage system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191008

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: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200608

R150 Certificate of patent or registration of utility model

Ref document number: 6715309

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350