JP2012503835A - Rdmaを用いて複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法 - Google Patents

Rdmaを用いて複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法 Download PDF

Info

Publication number
JP2012503835A
JP2012503835A JP2011529231A JP2011529231A JP2012503835A JP 2012503835 A JP2012503835 A JP 2012503835A JP 2011529231 A JP2011529231 A JP 2011529231A JP 2011529231 A JP2011529231 A JP 2011529231A JP 2012503835 A JP2012503835 A JP 2012503835A
Authority
JP
Japan
Prior art keywords
rdma
state memory
solid state
memory
processing system
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.)
Pending
Application number
JP2011529231A
Other languages
English (en)
Inventor
アーカディ・カネブスキー
スティーブン・シー・ミラー
Original Assignee
ネットアップ,インコーポレイテッド
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 ネットアップ,インコーポレイテッド filed Critical ネットアップ,インコーポレイテッド
Publication of JP2012503835A publication Critical patent/JP2012503835A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Abstract

処理システムは、リモートダイレクトメモリアクセス(RDMA)を用いることにより不揮発性ソリッドステートメモリ(NVSSM)サブシステムへの共用アクセスを行うことができる複数の仮想マシンを含む。NVSSMサブシステムは、フラッシュメモリ及び他のタイプの不揮発性ソリッドステートメモリを含む。処理システムは、スキャッタ・ギャザリストを用いてRDMA読み出し及び書き込み動作を特定する。複数の読み出し又は書き込みは単一のRDMA読み出し又は書き込みに結合され、これは、NVSSMサブシステムにおいて分解されて、複数の読み出し又は書き込みとして実行される。単一のRDMA読み出し又は書き込みによって生成されたメモリアクセスは、NVSSMサブシステム内の異なるメモリ装置に対して行われる。異なるメモリ装置は、異なる形態の不揮発性ソリッドステートメモリを含む。

Description

本発明に係る少なくとも1つの実施形態は、不揮発性ソリッドステートメモリへのアクセスが複数の仮想マシンによって共用される仮想マシン環境に関する。
本願は、2008年9月26日に出願された米国特許出願第12/239,092号の優先権を主張し、上記出願の全体は参照によって本願に含まれる。
今日、仮想マシンデータ処理環境は、マルチコア/マルチプロセッサコンピュータシステムの性能及び利用を向上させるために一般的に使用されている。ある仮想マシン環境において、複数の仮想マシンがメモリ及び入出力(I/O)装置等の同じ物理ハードウェアを共用している。典型的には、ハイパーバイザ又は仮想マシンマネージャと呼ばれるソフトウェアレイヤが、仮想化の提供、すなわちハードウェアの共用可能化を行う。
仮想マシンは、完全なオペレーティングシステムの実行をサポートする完全なシステムプラットフォームを提供することができる。仮想マシン環境の利点のうちの1つは、複数のオペレーティングシステム(これらは同じタイプのオペレーティングシステムであってもなくてもよい)が同じ物理プラットフォーム上で共存できるということにある。それに加えて、仮想マシンの命令及びアーキテクチャは、それを実装する物理プラットフォームのそれとは異なっていてもよい。
仮想マシン環境を実装するものを含む任意のデータ処理システムの性能を向上させることが望ましい。性能を向上させるための1つの方法は、遅延を低下させ、また、処理システムのメモリにアクセスすることに関連付けられたランダムアクセスのスループットを向上させることである。これに関して、フラッシュメモリと、特にNANDフラッシュメモリとは、ある非常に望ましい特性を有する。一般に、フラッシュメモリは、従来のディスクドライブに比較して非常に高速なランダム読み出しアクセス速度を有する。また、フラッシュメモリは、従来のDRAMよりも実質的に安価であり、DRAMのように揮発性ではない。
RFC5040, A Remote Direct Memory Access Protocol Specification, October 2007. RFC5041, Direct Data Placement over Reliable Transports. RFC5042, Direct Data Placement Protocol (DDP) / Remote Direct Memory Access Protocol (RDMAP) Security IETF proposed standard. RFC5043, Stream Control Transmission Protocol (SCTP) Direct Data Placement (DDP) Adaptation. RFC5044, Marker PDU Aligned Framing for TCP Specification. RFC5045, Applicability of Remote Direct Memory Access Protocol (RDMA) and Direct Data Placement Protocol (DDP). RFC4296, The Architecture of Direct Data Placement (DDP) and Remote Direct Memory Access (RDMA) on Internet Protocols. RFC4297, Remote Direct Memory Access (RDMA) over IP Problem Statement.
しかしながら、フラッシュメモリは、コンピュータのDRAM又はディスクドライブをフラッシュメモリで単に置き換えることを不可能にするようなある特性を有する。特に、従来のフラッシュメモリは、典型的にはブロックアクセス装置である。このような装置であることに起因してフラッシュメモリはホストから一度に1つのコマンド(例えば読み出し又は書き込み)しか受信できないので、低遅延及び/又は高スループットが必要なアプリケーションにおいてボトルネックになる可能性がある。
それに加えて、一般にはフラッシュメモリは従来のディスクドライブよりも優れた読み出し性能を有しているが、その書き込み性能は注意深く管理されなければならない。その理由の1つは、フラッシュメモリ内の1単位(書き込みブロック)に書き込む毎に、まず、フラッシュメモリ内の大きな単位(消去ブロック)が消去されなければならないということにある。典型的には、消去ブロックのサイズは、典型的な書き込みブロックよりもずっと大きい。これらの特性は書き込み動作に遅延をもたらす。さらに、フラッシュメモリは、有限回数の消去動作の後に摩耗する傾向がある。
仮想環境においてメモリが複数の仮想マシンによって共用されるとき、各仮想マシンのために適切な障害閉じこめを行うことが重要である。さらに、複数の仮想マシンによる効率的なメモリ共用を行うことが重要である。通常、これらの機能はハイパーバイザによって提供されるが、それにより、ハイパーバイザの複雑さ及びコードサイズが増大する。
処理システムは複数の仮想マシンを含み、これらの仮想マシンのすべてにより、NVSSMサブシステムを含む同じハードウェアが共用される。本システムは、ハイパーバイザ及びRDMAコントローラをさらに含む。RDMAコントローラは、データを読み書きするための仮想マシンによるNVSSMサブシステムへのアクセスを可能にするRDMA動作を制御する。ハイパーバイザは、各仮想マシン及びRDMAコントローラと通信し、一般に仮想マシン環境においてハイパーバイザに関連付けられる仮想化サービスを提供する。
不揮発性ソリッドステートメモリ(NVSSM)サブシステムを共用する複数の仮想マシンを含む処理システムを示す図である。 NVSSMサブシステムにアクセスするRDMAコントローラを含む、図1Aのシステムの詳細図である。 仮想マシンのアクセス権をNVSSMサブシステムに割り当てる方式を示す図である。 1つの実施形態に係る処理システム及び不揮発性ソリッドステートメモリ(NVSSM)サブシステムのアーキテクチャの例を示す高レベルのブロック図である。 もう1つの実施形態に係る処理システム及びNVSSMサブシステムのアーキテクチャの例を示す高レベルのブロック図である。 図2Aの実施形態に対応するNVSSMサブシステムのアーキテクチャの例を示す図である。 図2Bの実施形態に対応するNVSSMサブシステムのアーキテクチャの例を示す図である。 処理システムにおけるオペレーティングシステムのアーキテクチャの例を示す図である。 どのように複数のデータアクセス要求を単一のRDMAデータアクセス要求に結合できるのかを示す図である。 書き込み要求と、NVSSMサブシステムに対するRDMA書き込みとの間の関係の例を示す図である。 複数の書き込み要求と、NVSSMサブシステムに対する1回のRDMA書き込みとの間の関係の例を示す図である。 読み出し要求と、NVSSMサブシステムに対するRDMA読み出しとの間の関係の例を示す図である。 複数の読み出し要求と、NVSSMサブシステムに対する1回のRDMA読み出しとの間の関係の例を示す図である。 RDMA書き込みを行って処理システム内のメモリからNVSSMサブシステム内のメモリにデータを転送する処理を示すフロー図である。 RDMA書き込みを行って処理システム内のメモリからNVSSMサブシステム内のメモリにデータを転送する処理を示すフロー図である。 RDMA読み出しを行ってNVSSMサブシステム内のメモリから処理システム内のメモリにデータを転送する処理を示すフロー図である。 RDMA読み出しを行ってNVSSMサブシステム内のメモリから処理システム内のメモリにデータを転送する処理を示すフロー図である。
本発明の1つ又は複数の実施形態が、添付の図面において、限定ではなく例示として説明される。図面において、同じ参照符号は同様の構成要素を示す。
本明細書において「ある実施形態」又は「1つの実施形態」などと言及するとき、説明した特定の機能、構造、又は特性が本発明の少なくとも1つの実施形態に含まれることを意味する。本明細書においてこのような語句を用いるとき、必ずしもすべて同じ実施形態を示しているのではないが、相互に排他的であるものでもない。
複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法について説明する。以下に詳述するように、複数の仮想マシンを含む1つの処理システムは、データを永続的に記憶する生のフラッシュメモリを含む不揮発性ソリッドステートメモリ(NVSSM)サブシステムを含むことができる、又は当該NVSSMサブシステムにアクセスすることができる。不揮発性ソリッドステートメモリのいくつかの例を挙げると、フラッシュメモリや、バッテリでバックアップされたDRAMがある。NVSSMサブシステムは、例えば、処理システムの一次的な永続的ストレージ設備として、及び/又は、処理システムのメインメモリとして使用可能である。
仮想マシン環境においてフラッシュの望ましい特性を利用するためには、各仮想マシンのために適切な障害閉じこめを行うことが重要である。従って、本明細書で導入される技術によれば、複数の仮想マシンのそれぞれがNVSSMサブシステムの別個の部分への排他的な書き込みアクセスを行うことができるように当該複数の仮想マシンを構成することにより、ハイパーバイザは当該複数の仮想マシン間において耐障害性を実現することができる。
さらに、複数の仮想マシンによる効率的なフラッシュのメモリ共用を行うことが重要である。従って、本明細書で導入される技術によれば、NVSSMサブシステムとの間でデータを移動させるために従来のシリアルインターフェースではなくリモートダイレクトメモリアクセス(RDMA)を用いることにより、通常は従来のシリアルインターフェースを介してフラッシュメモリにアクセスすることに関連付けられるボトルネックが回避される。本明細書で導入される技術によれば、通常はホストとフラッシュメモリとの間のシリアルコマンドインターフェースに関連付けられる遅延及びスループット低下を招くことなく、フラッシュメモリの利点を得ることができる。
NVSSMサブシステムへの読み出しアクセス及び書き込みアクセスの両方は、各仮想マシンによって制御され、より具体的には、各仮想マシンのオペレーティングシステム(各仮想マシンはそれ自体の別個のオペレーティングシステムを有している)によって制御される。各仮想マシンは、所定の実施形態では、ログ構造化された、固定の書き込み位置を持たないデータレイアウトエンジンを含む。データレイアウトエンジンは、RDMA読み出し及び書き込み動作を特定するスキャッタ・ギャザリストを生成する。より低いレベルでは、NVSSMサブシステムへのすべての読み出し及び書き込みアクセスは、オペレーティングシステムの指示の下で、処理システムにおけるRDMAコントローラから制御可能である。
本明細書で導入される技術は、複合されたRDMAコマンドをサポートする。すなわち、クライアントによって開始された読み出し又は書き込み等の1つ又は複数の動作は、処理システムによって単一のRDMA読み出し又は書き込みにそれぞれ結合されることが可能であり、この単一のRDMA読み出し又は書き込みは、NVSSMサブシステムにおいて受信されたときに分解されて、複数の並列又は逐次的な読み出し又は書き込みとしてそれぞれ実行される。NVSSMサブシステムにおいて実行される複数の読み出し又は書き込みは、NVSSMサブシステムにおける複数の異なるメモリ装置に対して行われる可能性がある。これらのメモリ装置は、異なるタイプのメモリを含む場合がある。例えば、所定の実施形態では、ユーザデータ及び関連付けられた回復メタデータ(RAID(Redundant Array of Inexpensive Disks/Devices)データ及びチェックサム等)は、NVSSMサブシステムにおけるフラッシュメモリに記憶される一方、関連付けられたファイルシステムメタデータは、NVSSMサブシステムにおける不揮発性DRAMに記憶される。このアプローチによれば、フラッシュブロックを消去するコストを負う必要なしに、ファイルシステムメタデータの更新を行うことができる。ファイルシステムメタデータは頻繁に更新される傾向があるので、このことは有益である。さらに、処理システムによって複数のRDMA動作からなるシーケンスがNVSSMサブシステムに送られるとき、完了状態は、最後のものを除く個別のRDMA動作のすべてについて抑圧されてもよい。
本明細書で導入される技術は、優位点となりうる多数の特徴を有する。その1つは、仮想マシンの障害を隔離するためにRDMAセマンティックを使用することにより、性能を向上させ、また、障害の隔離をサポートするためのハイパーバイザの複雑さを低下させることにある。これはまた、いったんハイパーバイザがNVSSMサブシステムへの仮想マシンのアクセスをセットアップすると、各仮想マシンがハイパーバイザを完全にバイパスしてそれら自体でI/O動作を実行することをサポートし、これにより、さらに、性能を向上させ、また、ハイパーバイザを実行する「ドメイン0」のコアにかかるオーバーヘッドを低下させる。
優位点となりうるもう1つの特徴は、複数のI/O動作を単一のRDMA動作に結合することにより達成される性能の向上にある。このことは、RDMAプリミティブを用いた複数のデータ冗長化技術をサポートすることによるデータ回復のサポートを含む。優位点となりうるさらにもう1つの特徴は、RDMAアトミック動作を用いることによる仮想マシンのデータ共用の改善されたサポートにある。優位点となりうるさらにもう1つの特徴は、単一の仮想マシンのためのファイルシステムメタデータと、共用された仮想マシンのデータのためのファイルシステムメタデータとをサポートする、フラッシュメモリ(又は他のNVSSMメモリ)の拡張にある。優位点となりうるもう1つの特徴は、RDMAセマンティックを拡張することにより、複数の仮想マシンをサポートする1つのノードの背後における複数のフラッシュ装置をサポートすることにある。さらに、上記で導入した技術によれば、複数の仮想マシンの下の複数のNVSSM装置において、共用された独立の複数のNVSSMキャッシュと、永続的ストレージとを可能にする。
上述のように、所定の実施形態では、NVSSMサブシステムは「生」のフラッシュメモリを含み、また、NVSSMサブシステムにおけるデータのストレージは、「固定の書き込み位置を持たない(write anywhere)」というストレージポリシーを用いる処理システムの、(フラッシュ装置に対して)外部の、ログ構造化されたデータレイアウトエンジンによって制御される。「生(raw)」という用語により、(従来のフラッシュSSDとは対照的に)オンボードのデータレイアウトエンジンを一切持たないメモリ装置を意味する。本明細書において、「データレイアウトエンジン」は、データを記憶する場所を決定し、また、既に記憶されているデータの場所を特定する(ソフトウェア及び/又はハードウェアとして実装された)任意の構成要素として定義される。本明細書において定義する「ログ構造化」という用語により、データレイアウトエンジンがその書き込みパターンを(ログと同様に)概して逐次的な方法でレイアウトし、空きブロックへの全書き込みを実行することを意味する。
NVSSMサブシステムは、処理システムの一次的な永続的ストレージとして、又は処理システムのメインメモリとして、又はその両方として(又はその一部として)使用可能である。さらに、NVSSMサブシステムは、仮想マシン環境を実装する1つ又は複数の処理システムを含む、複数の処理システムにアクセス可能にされる。
いくつかの実施形態では、処理システムにおけるデータレイアウトエンジンは、以下に詳述するように、データをフラッシュメモリ(及び他の場所)に書き込む際に「固定の書き込み位置を持たない(write out-of-place)」(「write anywhere」とも呼ばれる)ポリシーを実施する。この文脈において、「固定の書き込み位置を持たない」とは、論理データブロックが変更されるときは常に、変更されたデータブロックが、その場所で上書きされるのではなく新たな物理ストレージの場所に書き込まれることを意味する。(なお、この文脈においてデータレイアウトエンジンによって管理される「論理データブロック」は、フラッシュメモリの物理「ブロック」と同じではない。論理ブロックは、物理ストレージ空間の仮想化であり、これは、フラッシュメモリのブロックのサイズには必ずしも対応しない。1つの実施形態では、データレイアウトエンジンによって管理される各論理データブロックは4kBであるのに対して、フラッシュメモリの各物理ブロックはずっと大きく、例えば128kBである。) フラッシュメモリは内部にいかなるデータレイアウトエンジンも持たないので、処理システムの外部の「固定の書き込み位置を持たない」データレイアウトエンジンは、フラッシュメモリ内の任意の空きの場所にデータを書き込むことができる。従って、外部の「固定の書き込み位置を持たない」データレイアウトエンジンは、データを同じ場所に再書き込みしなければならない場合よりも少ない個数の消去ブロックに、変更されたデータを書き込むことができ、このことは、フラッシュ装置の摩耗を低減するためのたすけとなる。
ここで図1Aを参照すると、図1Aは、本明細書で導入される技術を実装することが可能な処理システムを示す。図1Aにおいて、処理システム2は複数の仮想マシン4を含み、これらの仮想マシン4のすべてにより、NVSSMサブシステム26を含む同じハードウェアが共用される。各仮想マシン4は、完全なオペレーティングシステムであってもよく、又は、完全なオペレーティングシステムを含んでもよい。2つの仮想マシン4のみが図示されているが、本質的には、処理システム2内において任意個数の仮想マシンが存在して動作可能であることは理解されよう。処理システム2は、図示するようにネットワーク3に接続されることが可能であり、このネットワーク3は、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、インターネット等のグローバルエリアネットワーク、ファイバチャネルファブリック、又はこのような相互接続からなる任意の組み合わせであってもよい。
NVSSMサブシステム26は、仮想マシン4を含むものと同じ物理プラットフォーム/筐体内に設けられることが可能であるが、必ずしもそうでなくてもよい。いくつかの実施形態では、複数の仮想マシン4とNVSSMサブシステム26とはすべて、単一の処理システムの部分であるとみなされてもよいが、しかしながら、このことは、NVSSMサブシステム26が仮想マシン4と同じ物理プラットフォーム内になければならないということを意味するのではない。
1つの実施形態では、処理システム2はネットワークストレージサーバである。ストレージサーバは、NAS環境において一般に行われるように、ファイルレベルのデータアクセスサービスをクライアント(図示せず)に提供してもよく、又は、SAN環境において一般に行われるように、ブロックレベルのデータアクセスサービスを提供してもよく、又は、ファイルレベルとブロックレベルとの両方のデータアクセスサービスをクライアントに提供できてもよい。
さらに、図1では処理システム2を単一の装置として図示しているが、これは分散型アーキテクチャを有していてもよい。例えば、これがストレージサーバであると仮定すると、1つ又は複数のネットワークモジュール(例えば「Nブレード」)と、ネットワークモジュールから物理的に分離した1つ又は複数のディスク/データモジュール(例えば「Dブレード」)(図示せず)とを含み、ネットワークモジュールとディスク/データモジュールとが物理的相互接続を介して互いに通信するように設計可能である。このようなアーキテクチャによれば、処理システムについて都合のよいスケーリングが可能になる。
図1Bは、図1Aのシステムをより詳細に示す。図示するように、このシステムは、ハイパーバイザ11及びRDMAコントローラ12をさらに含む。RDMAコントローラ12は、以下に詳述するように、データを読み書きするための仮想マシン4によるNVSSMサブシステム26へのアクセスを可能にするRDMA動作を制御する。ハイパーバイザ11は、各仮想マシン4及びRDMAコントローラ12と通信し、一般に仮想マシン環境においてハイパーバイザに関連付けられる仮想化サービスを提供する。それに加えて、ハイパーバイザ11はまた、RDMAステアリングタグ(Steering Tag、STag)等のタグを生成して、各仮想マシン4にNVSSMサブシステム26の特定部分を割り当てる。このことは、NVSSMサブシステム26の別個の部分への排他的な書き込みアクセスを各仮想マシン4に提供することを意味する。
「特定部分」を割り当てる、という表現により、NVSSMサブシステム26のメモリ空間の特定部分を割り当てることを意味するが、このことは、NVSSMサブシステム26の特定物理部分を割り当てることを必ずしも意味するものではない。それにもかかわらず、いくつかの実施形態では、NVSSMサブシステム26のメモリ空間の複数の異なる部分を割り当てることは、実際には、NVSSMサブシステム26の複数の異なる物理部分を割り当てることをともなう可能性がある。
このように仮想マシンの障害を隔離するためにRDMAセマンティックを使用することにより、性能が向上し、また、障害の隔離をサポートするためのハイパーバイザ11の全体の複雑さが低下する。
動作時において、いったん各仮想マシン4がその1つ又は複数のSTagをハイパーバイザ11から受信すると、ハイパーバイザ11を関与させることなく、RDMAコントローラ12を介して通信することにより、NVSSMサブシステム26にアクセスすることができる。従って、この技術はまた、性能を向上させ、また、ハイパーバイザを実行する「ドメイン0」のプロセッサコアにかかるオーバーヘッドを低下させる。
ハイパーバイザ11は、NVSSMデータレイアウトエンジン13を含み、NVSSMデータレイアウトエンジン13は、以下に詳述するように、RDMA動作を制御可能であり、また、NVSSMサブシステム26内のデータ配置及びフラッシュウェアレベリングの決定を担当する。この機能は、NVSSMサブシステム26上で実行されるRDMA動作のためのスキャッタ・ギャザリストを生成することを含む。所定の実施形態では、複数の仮想マシン4のうちの少なくともいくつかもまた、図1Bに示すように、それら自体のNVSSMデータレイアウトエンジン46を含み、これらは、ハイパーバイザのNVSSMデータレイアウトエンジン13によって実行されるものと同様の機能を実行することができる。ある仮想マシン4におけるNVSSMデータレイアウトエンジン46は、当該仮想マシンに割り当てられたNVSSMサブシステム26におけるメモリの部分のみをカバーする。これらのデータレイアウトエンジンの機能については、以下に詳述する。
図1Cに示す1つの実施形態では、ハイパーバイザ11は、NVSSMサブシステム26のメモリ空間7の部分8に対する読み出しアクセス及び書き込みアクセスの両方を有しているのに対して、各仮想マシン4は、その部分8に対する読み出しアクセスのみを有している。さらに、各仮想マシン4は、NVSSMサブシステム26のメモリ空間7の別個の部分9−1〜9−Nのうちのそれ自体の部分に対する読み出しアクセス及び書き込みアクセスの両方を有しているのに対して、ハイパーバイザ11は、当該部分9−1〜9−Nに対する読み出しアクセスのみを有している。オプションとして、複数の仮想マシン4のうちの1つ又は複数には、例えばメモリ部分9−Jにより示すように、1つ又は複数の他の仮想マシンに属する部分に対する読み出しのみのアクセスが提供されてもよい。他の実施形態では、NVSSMサブシステム26に対する仮想マシンのアクセス権を割り当てるための異なる方法を使用可能である。
それに加えて、所定の実施形態では、NVSSM26においてリモートロックを行うことにより、データの一貫性が維持される。特に、このことは、アトミックメモリアクセス動作を用いることのみによって、RDMAコントローラを介するNVSSMサブシステム26のリモートロックメモリへのアクセスを各仮想マシン4に実行させることにより、達成される。このことは、ロック及びデータが同じメモリ上にあるので、分散型ロックマネージャの必要性を低下させ、障害処理を簡単化する。任意個数のアトミック動作を使用可能である。他のすべてのアトミック動作をサポートするために使用可能な具体例を2つ挙げると、比較及びスワップと、フェッチ及び加算とがある。
以上の説明によれば、ハイパーバイザ11が、複数の仮想マシン4に係る障害の隔離を制御するためにSTagを生成することがわかる。それに加えて、ハイパーバイザ11は、NVSSMサブシステム26にわたるウェアレベリング方式を実現するために、及び/又は、NVSSMサブシステム26にわたる負荷分散を実現するために、及び/又は、他の目的のために、STagを生成することもできる。
図2Aは、1つの実施形態に係る処理システム2及びNVSSMサブシステム26のアーキテクチャの例を示す、高レベルのブロック図である。処理システム2は、相互接続23に接続された複数のプロセッサ21及びメモリ22を含む。図2Aに示す相互接続23は、適当なブリッジ、アダプタ、又はコントローラで接続された、1つ又は複数の任意の別個の物理バス、ポイント・ツー・ポイント接続、又はそれらの両方を抽象的に表すものである。従って、相互接続23は、例えば、システムバス、PCI(Peripheral Component Interconnect)ファミリのバス、HyperTransport(登録商標)又はISA(industry standard architecture)バス、SCSI(small computer system interface)バス、USB(universal serial bus)、IIC(I2C)バス、IEEE(Institute of Electrical and Electronics Engineers)規格1394バス(ときどき、「Firewire(登録商標)」と呼ばれる)、又はこのような相互接続の任意の組み合わせを含んでもよい。
プロセッサ21は、処理システム2の中央処理装置(CPU)を含み、従って、処理システム2の全体の動作を制御する。所定の実施形態では、プロセッサ21は、メモリ22に記憶されたソフトウェア又はファームウェアを実行することによりこのことを達成する。プロセッサ21は、1つ又は複数のプログラム可能な汎用又は特定用途のマイクロプロセッサ、ディジタル信号プロセッサ(DSP)、プログラマブルコントローラ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、など、もしくはそのような装置の組み合わせであってもよく、又はこれらのものを含んでもよい。
メモリ22は、処理システム2のメインメモリであるか、又は処理システム2のメインメモリを含む。メモリ22は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、など、又はそのような装置の組み合わせからなる任意の形態を表す。使用時に、メモリ22は、とりわけ複数のオペレーティングシステム40を格納する可能性があり、これらのオペレーティングシステム40のそれぞれが、仮想マシン4(又はその部分)になる。複数のオペレーティングシステム40は、異なるタイプのオペレーティングシステムであってもよく、又は、1つのタイプのオペレーティングシステムの異なるインスタンスであってもよく、又は、これら2つの構成の組み合わせであってもよい。
プロセッサ21にはさらに、相互接続23を介して、ネットワークアダプタ24及びRDMAコントローラ25が接続されている。ストレージのアダプタ25を、以下、「ホストRDMAコントローラ」25と呼ぶ。ネットワークアダプタ24は、ネットワーク3を介してリモート装置と通信する能力を処理システム2に与え、ネットワークアダプタ24は、例えば、イーサネット(登録商標)、ファイバーチャネル、ATM、又はInfinibandアダプタであってもよい。
本明細書で説明するRDMA技術は、処理システム2内のホストメモリ(例えばメモリ22)と、NVSSMサブシステム26との間で、データを転送するために使用可能である。ホストRDMAコントローラ25は、NVSSMサブシステム26における全メモリのメモリマップを含む。NVSSMサブシステム26におけるメモリは、フラッシュメモリ27を含むとともに、何らかの形態の不揮発性DRAM28(例えば、バッテリでバックアップされたDRAM)を含む可能性がある。不揮発性DRAM28は、フラッシュメモリ27に記憶されたデータに関連付けられたファイルシステムメタデータを記憶するために使用され、これにより、このような頻繁に更新されるメタデータの更新に起因してフラッシュブロックを消去する必要性を回避する。ファイルシステムメタデータは、例えば、ファイル及びディレクトリ等のオブジェクトからなるツリー構造を含む可能性があり、これらのオブジェクトのそれぞれのメタデータは、当該オブジェクトにおいてルートが存在するかのように、ファイルシステムのメタデータを再帰的に有する。それに加えて、ファイルシステムメタデータは、それらのオブジェクトの名前、サイズ、所有権、アクセス権、などを含む可能性がある。
図2Aからわかるように、NVSSMサブシステム26に、複数の処理システム2が外部相互接続6を介してアクセスすることができる。図2Bは代替の実施形態を示し、ここでは、NVSSMサブシステム26は内部ファブリック6Bを含み、内部ファブリック6Bは、処理システム2内の相互接続23に直に接続されている。1つの実施形態では、ファブリック6B及び相互接続23の両方が、PCIeプロトコルを実装している。図2Bに係るある実施形態では、NVSSMサブシステム26はRDMAコントローラ29をさらに含み、以下、これを「ストレージRDMAコントローラ」29と呼ぶ。ストレージRDMAコントローラ29の動作については、以下に詳述する。
図3Aは、図2Aに対応する、本発明の実施形態に係るNVSSMサブシステム26の例を示す。図示した実施形態では、NVSSMサブシステム26は、ホスト相互接続31と、多数のNANDフラッシュメモリモジュール32と、FPGA(field programmable gate array)として示した多数のフラッシュコントローラ33とを含む。説明の簡単化のために、以下、メモリモジュール32がDIMMであると仮定するが、他の実施形態では、これらは異なるタイプのメモリモジュールであってもよい。1つの実施形態では、NVSSMサブシステム26のこれらの構成要素は、プリント回路基板又はアドインカード等の従来の基板上に実装される。
NVSSMサブシステム26の基本動作では、データは、NVSSMサブシステム26の外部に設けられた1つ又は複数のデータレイアウトエンジンによって複数のNANDフラッシュ装置に対してスケジューリングされる。データレイアウトエンジンは、処理システム2上で動作するオペレーティングシステム40又はハイパーバイザ11の一部であってもよい。このようなデータレイアウトエンジンの例を、図1B及び図4に関連して説明する。データの完全性を維持するために、各NANDフラッシュ構成要素において典型的な誤り訂正符号を用いることに加えて、各フラッシュコントローラ33にわたってRAIDのデータストライプングを実装することができる(例えば、RAID−3、RAID−4、RAID−5、RAID−6、RAID−DP)。
図示した実施形態では、NVSSMサブシステム26はスイッチ34も含み、各フラッシュコントローラ33はスイッチ34によって相互接続31に接続される。
NVSSMサブシステム26は、フラッシュコントローラ33のそれぞれに接続され、バッテリでバックアップされた別個のDRAM DIMMをさらに含み、これは不揮発性DRAM28を実装する。不揮発性DRAM28は、フラッシュ装置32に記憶されているデータに関連付けられたファイルシステムメタデータを記憶するために使用可能である。
図示した実施形態では、NVSSMサブシステム26はまた、スイッチ34に接続された、不揮発性の(例えば、バッテリでバックアップされた)もう1つのDRAMバッファDIMM36を含む。DRAMバッファDIMM36は、フラッシュ装置32からステージングされる、又はフラッシュ装置32に対してデステージングされるデータの短期ストレージのために使用される。DRAMバッファDIMM36を制御するために、また、DRAMバッファDIMM36をスイッチ34に接続するために、別個のDRAMコントローラ35(例えばFPGA)が使用される。
従来のSSDとは対照的に、フラッシュコントローラ33は、いかなるデータレイアウトエンジンを実装するものでもなく、単に、フラッシュDIMM32の特定の信号方式の要件と、ホスト相互接続31のそれとのインターフェースをとる。よって、フラッシュコントローラ33は、フラッシュメモリ内のデータにアクセスすることを目的としていかなるデータ間接参照又はデータアドレス仮想化を実装することもない。データレイアウトエンジンに係る通常の機能のすべて(例えば、どこにデータを格納すべきかを決定すること、及び、格納されたデータの場所を特定すること)は、処理システム2における外部データレイアウトエンジンによって実行される。NVSSMサブシステム26内にデータレイアウトエンジンが存在しないので、フラッシュDIMM32を、「生」のフラッシュメモリと呼ぶ。
なお、外部データレイアウトエンジンは、フラッシュメモリ内のデータ配置及びウェアレベリングについての詳細情報の知識を用いてもよい。この知識及び機能は、フラッシュ抽象化レイヤ内において実装されてもよい。ここで、フラッシュ抽象化レイヤは、NVSSMサブシステム26の外部に設けられたものであり、また、フラッシュ抽象化レイヤは、外部データレイアウトエンジンの構成要素であってもよく、又はそうでなくてもよい。
図3Bは、図2Bに対応する、本発明の実施形態に係るNVSSMサブシステム26の例を示す。図示した実施形態では、内部ファブリック6Bはスイッチ34の形態で実装され、スイッチ34は例えばPCI express(PCIe)スイッチであってもよく、この場合、ホスト相互接続31BはPCIeバスである。スイッチ34は、処理システム2の内部の相互接続23に直に接続されている。この実施形態では、NVSSMサブシステム26はまた、スイッチ34と各フラッシュコントローラ33との間に接続されたRDMAコントローラ29を含む。RDMAコントローラ29の動作については、以下に詳述する。
図4は、処理システム2において実装可能なオペレーティングシステムの例を概略的に示し、これは、仮想マシン4の部分であってもよく、又は、1つ又は複数の仮想マシン4を含んでもよい。図示するように、オペレーティングシステム40は、いくつかのソフトウェアモジュール又は「レイヤ」を含む、ネットワークストレージのオペレーティングシステムである。これらのレイヤには、ファイルシステムマネージャ41が含まれ、これは、オペレーティングシステム40のコアとなる機能構成要素である。ファイルシステムマネージャ41は、所定の実施形態では、(例えばNVSSMサブシステム26において)PPSサブシステム4に記憶されたデータに対して所定の構造(例えば階層構造)を付与するソフトウェアであって、クライアント1からの読み出し要求及び書き込み要求に対してサービスを提供するソフトウェアである。1つの実施形態では、ファイルシステムマネージャ41は、ログ構造化されたファイルシステムを管理し、データを長期ストレージに書き込む際に「固定の書き込み位置を持たない(write out-of-place)」(「write anywhere」とも呼ばれる)ポリシーを実施する。言い換えると、論理データブロックが変更されるときは常に、変更された当該論理データブロックは、その場所で上書きされるのではなく新たな物理ストレージの場所(物理ブロック)に書き込まれる。上述のように、この特徴によれば、あるブロックの一部が変更されたときは常に当該ブロック全体の消去及び再書き込みを行うという(従来のフラッシュメモリに関連付けられた)必要性が除去される。なお、ファイルシステムマネージャ41に係るこれらの機能のうちの一部は、後述するように、NVSSMサブシステム26へのアクセスを目的として、代わりにNVSSMデータレイアウトエンジン13又は46に実行させることができる。
論理的にはファイルシステムマネージャ41の「下」において、処理システム2にネットワーク3を介して(例えばクライアントと)通信させるために、オペレーティングシステム40はネットワークスタック42も含む。ネットワークスタック42は、処理システムがネットワーク3を介して通信することを可能にするための、さまざまなネットワークプロトコルを実装する。
論理的にはファイルシステムマネージャ41の「下」においてさらに、処理システム2にNVSSMサブシステム26と通信させるために、オペレーティングシステム40は、ストレージアクセスレイヤ44と、関連付けられたストレージドライバレイヤ45とを含み、さらに、オペレーティングシステム40は、論理的にはストレージアクセスレイヤ44とストレージドライバレイヤ45との間に設けられたNVSSMデータレイアウトエンジン46を含んでもよい。ストレージアクセスレイヤ44は、RAID−3、RAID−4、RAID−5、RAID−6、又はRAID−DP等の高レベルストレージ冗長化アルゴリズムを実装する。ストレージドライバレイヤ45は低レベルプロトコルを実装する。
NVSSMデータレイアウトエンジン46は、RDMA動作を制御することができ、また、以下に詳述するように、NVSSMサブシステム26内におけるデータ配置及びフラッシュウェアレベリングの決定を担当する。この機能は、NVSSMサブシステム26上で実行されるRDMA動作のスキャッタ・ギャザリストを生成することを含む。
ハイパーバイザ11が、上述したような機能を有するそれ自体のデータレイアウトエンジン13を含んでいることを仮定する。ただし、仮想マシン4がそれ自体のデータレイアウトエンジン46を含んでいても、含んでいなくてもよい。1つの実施形態では、これらのNVSSMデータレイアウトエンジン13及び46のうちのいずれか1つ又は複数の機能は、RDMAコントローラ内において実装される。
特定の仮想マシン4がそれ自体のデータレイアウトエンジン46を含む場合、そのデータレイアウトエンジンを用いて、NVSSMサブシステム26上のI/O動作を実行する。そうでない場合、仮想マシンは、ハイパーバイザ11のデータレイアウトエンジン13を用いて、そのような動作を実行する。説明の簡単化のために、本明細書の残りの部分では、各仮想マシン4がそれ自体のデータレイアウトエンジン46を含まないことを仮定する。しかしながら、本質的には、本明細書においてハイパーバイザ11のデータレイアウトエンジン13によって実装されるものとして説明する機能のすべては、仮想マシン4のうちの任意のものにおけるデータレイアウトエンジン46によっても実装可能である。
ストレージドライバレイヤ45はホストRDMAコントローラ25を制御し、また、ストレージドライバレイヤ45は、FCVI、InfiniBand、又はiWarp等の、従来のRDMAをサポートするネットワークプロトコルを実装する。図4ではまた、オペレーティングシステム40を介するデータフローの主経路47A及び47Bも示す。
NVSSMサブシステム26への読み出しアクセス及び書き込みアクセスの両方が、仮想マシン4のオペレーティングシステム40によって制御される。本明細書で導入される技術では、NVSSMサブシステム26との間で、例えばメモリ22とNVSSMサブシステム26との間で効率的なデータ転送を可能にするために、従来のRDMA技術が使用される。本明細書で説明するRDMA動作は、概して、InfiniBand(InfiniBand Trade Association (IBTA))又はIETF iWarp等の従来のRDMA規格と矛盾しないものであると仮定することができる(例えば、非特許文献1〜8を参照)。
図2A及び図3Aに係る実施形態では、通常の動作の前に(例えば、処理システム2の初期化中に)、ハイパーバイザ11は、NVSSMサブシステム26におけるメモリ空間の少なくとも一部、例えばメモリ22を、ホストRDMAコントローラ25に登録する。このことは、ハイパーバイザ41が標準的なメモリレジストレーションコールのうちの1つを用いてメモリ22の一部又は全体をホストRDMAコントローラ25に対して指定し、ホストRDMAコントローラ25が、ホストRDMAコントローラ25を将来に呼び出すときに使用されるSTagを返すことをともなう。
図2A及び図3Aに係る1つの実施形態では、NVSSMサブシステム26はまた、仮想マシンをサポートするのに十分な粒度をそれぞれ有するNVSSMメモリの各部分集合9−1〜9−N(図1C)に対するRDMA STagを、ホストRDMAコントローラ25に提供し、次いでホストRDMAコントローラ25は、それらをハイパーバイザ11のNVSSMデータレイアウトエンジン13に提供する。仮想マシンが初期化されるとき、ハイパーバイザ11は、その仮想マシンの対応するSTagを当該仮想マシンに提供する。そのSTagは、NVSSMメモリの対応する部分集合に対する排他的な書き込みアクセスを提供する。1つの実施形態では、ハイパーバイザは、初期化を行う仮想マシンに対して他の仮想マシンのSTagを提供し、このSTagにより、他の仮想マシンのメモリの部分集合に対する読み出しのみのアクセスを行うようにしてもよい。このことは、仮想マシン間の共用メモリをサポートするように実行可能である。
所定の粒度を有するNVSSMメモリ26の各部分集合について、NVSSMサブシステム26はまた、当該所定の粒度を有するメモリ部分集合にアクセスするために使用されるRDMA STag及びロックの場所を、ホストRDMAコントローラ25に提供し、次いでホストRDMAコントローラ25は、STagをハイパーバイザ11のNVSSMデータレイアウトエンジン13に提供する。
複数の処理システム2がNVSSMサブシステム26を共用している場合、各処理システム2は、NVSSMサブシステム26におけるメモリの異なる部分集合に対するアクセスを行うことができる場合がある。この場合、各処理システム2において提供されたSTagは、当該処理システム2によって使用されるNVSSMメモリの適当な部分集合を識別する。1つの実施形態では、メモリのどの部分集合がどの処理システム2によって所有されるのかを定義するために、NVSSMサブシステム26の外部のプロトコルが処理システム2間で使用される。このようなプロトコルについての詳細は、本明細書で導入される技術と密接に関係するものではなく、この目的のためには、さまざまな従来のネットワーク通信プロトコルのうちの任意のものを使用可能である。もう1つの実施形態では、メモリのどの部分集合がどの処理システム2によって所有されるのかを決定するために、DIMM28のメモリの一部又はすべてが各処理システム2のRDMA STagにマッピングされ、そのメモリに記憶された共用データが使用される。さらに、もう1つの実施形態では、NVSSMメモリの一部又はすべては、読み出し及び書き込みデータアクセスのために複数の異なる処理システム2間で共用される、当該複数の異なる処理システム2に係る1つのSTagにマッピングされることが可能である。なお、処理システム2間でメモリアクセスを同期するためのアルゴリズムは、本明細書で導入される技術と密接に関係するものではない。
図2A及び図3Aの実施形態では、通常の動作の前に(例えば、処理システム2の初期化中に)、ハイパーバイザ11は、処理システム2のメモリ空間の少なくとも一部、例えばメモリ22を、ホストRDMAコントローラ25に登録する。このことは、ハイパーバイザ11が標準的なメモリレジストレーションコールのうちの1つを用いて、ホストRDMAコントローラ25を呼び出すときにメモリ22の一部又は全体をホストRDMAコントローラ25に対して指定することをともなう。
図2B及び図3Bに係る1つの実施形態では、NVSSMサブシステム26はまた、仮想マシンをサポートするのに十分な粒度をそれぞれ有するNVSSMメモリの各部分集合9−1〜9−N(図1C)に対するRDMA STagを、ホストRDMAコントローラ29に提供し、ホストRDMAコントローラ29は、それらをハイパーバイザ11のNVSSMデータレイアウトエンジン13に提供する。仮想マシンが初期化されるとき、ハイパーバイザ11は、その仮想マシンの対応するSTagを当該仮想マシンに提供する。そのSTagは、NVSSMメモリの対応する部分集合に対する排他的な書き込みアクセスを提供する。1つの実施形態では、ハイパーバイザは、初期化を行う仮想マシンに対して他の仮想マシンのSTagを提供し、このSTagにより、他の仮想マシンのメモリの部分集合に対する読み出しのみのアクセスを行うようにしてもよい。このことは、仮想マシン間の共用メモリをサポートするように実行可能である。
図2B及び図3Bに係る実施形態では、通常の動作の前に(例えば、処理システム2の初期化中に)、ハイパーバイザ11は、処理システム2のメモリ空間の少なくとも一部、例えばメモリ22を、ホストRDMAコントローラ29に登録する。このことは、ハイパーバイザ11が標準的なメモリレジストレーションコールのうちの1つを用いて、ホストRDMAコントローラ29を呼び出すときにメモリ22の一部又は全体をホストRDMAコントローラ29に対して指定することをともなう。
通常の動作時に、NVSSMデータレイアウトエンジン13(図1B)は、NVSSMサブシステム26との間でデータを転送するためのRDMA読み出し及び書き込み動作を指定する、スキャッタ・ギャザリストを生成する。「スキャッタ・ギャザリスト」は、スキャッタリストとギャザリストとがペアになったものである。スキャッタリスト又はギャザリストは、NVSSMサブシステム26に対するSTagと、読み出し又は書き込み要求全体における1つのセグメントの場所及び長さとをそれぞれ含む、複数のエントリ(「ベクトル」又は「ポインタ」とも呼ぶ)からなるリストである。1つのギャザリストは、RDMA転送のソースにおけるデータの取り出し元になる1つ又は複数のソースメモリセグメントを特定し、1つのスキャッタリストは、RDMA転送の宛先におけるデータの書き込み先になる1つ又は複数の宛先メモリセグメントを特定する。スキャッタリスト又はギャザリストにおける各エントリは、初期化中に生成されたSTagを含む。しかしながら、本明細書で導入される技術によれば、NVSSMサブシステム26における不揮発性ソリッドステートメモリの複数の異なる部分集合における複数のセグメントを特定する、単一のRDMA STagを生成することができ、このとき、これらのセグメントのうちの少なくとも一部が異なるアクセス許可を有していてもよい(例えば、一部は読み書き可能であってもよく、又は、一部は読み出しのみ可能であってもよい)。さらに、処理システムのメモリを表す単一のSTagが、処理システムのバッファキャッシュ6の複数の異なる部分集合における複数のセグメントを特定することができ、このとき、これらのセグメントのうちの少なくとも一部が異なるアクセス許可を有していてもよい。処理システムのバッファキャッシュ6の複数の異なる部分集合における複数のセグメントが、互いに異なるアクセス許可を有していてもよい。
上述のように、ハイパーバイザ11はNVSSMデータレイアウトエンジン13を含むが、これは、図5に示すように、処理システム2のRDMAコントローラ53において実装することができる。RDMAコントローラ53は、例えば、図2AのホストRDMAコントローラ25の代わりになることができる。NVSSMデータレイアウトエンジン13は、クライアントによって開始された複数のデータアクセス要求51−1〜51−n(読み出し要求又は書き込み要求)を、単一のRDMAデータアクセス52(RDMA読み出し又は書き込み)に結合することができる。複数の要求51−1〜51−nは、2つ以上の異なる仮想マシン4をソースとする可能性がある。同様に、仮想マシン4内のNVSSMデータレイアウトエンジン46もまた、そのホストファイルシステムマネージャ41(図4)から又は他の何らかのソースからの複数のデータアクセス要求を単一のRDMAアクセスに結合することができる。
単一のRDMAデータアクセス52は、NVSSMデータレイアウトエンジン13によって生成されたスキャッタ・ギャザリストを含み、ここで、データレイアウトエンジン13は、NVSSMサブシステム26のためのリストを生成し、仮想マシンのファイルシステムマネージャ41は、処理システムの内部メモリ(例えば、バッファキャッシュ6)のためのリストを生成する。スキャッタリスト又はギャザリストは、ソース又は宛先(どちらでもよい)における複数のメモリセグメントを特定することができる。さらに、スキャッタリスト又はギャザリストは、メモリの複数の異なる部分集合におけるメモリセグメントを特定することができる。
図2B及び図3Bに係る実施形態では、単一のRDMA読み出し又は書き込みが(図5に示す)NVSSMサブシステム26に送られ、ここで、これは、ストレージRDMAコントローラ29によって複数のデータアクセス動作(読み出し又は書き込み)に分解され、次いで、これらは、NVSSMサブシステム26におけるストレージRDMAコントローラ29によって並列又は逐次に実行される。図2A及び図3Aに係る実施形態では、単一のRDMA読み出し又は書き込みは、処理システム2内でホストRDMAコントローラ25によって複数のデータアクセス動作(読み出し又は書き込み)に分解され、次いで、これらの複数の動作は、ホストRDMAコントローラ25によって、NVSSMサブシステム26上で並列又は逐次に実行される。
処理システム2は、NVSSMサブシステム26に対する複数の関連したRDMA読み出し又は書き込みからなるシーケンスを開始することができる(ここで、シーケンス中のどの個別のRDMA読み出し又は書き込みも、上述したように、複合された1つのRDMA動作であってもよい)。従って、処理システム2は、クライアントによって開始された1つ又は複数の読み出しもしくは書き込み、又は他の任意のデータもしくはメタデータ動作からなる任意の組み合わせを、1つ又は複数のRDMA読み出し又は書き込みからなる任意の組み合わせにそれぞれ変換することができ、ここで、これらのRDMA読み出し又は書き込みのうちのいずれも、それぞれ複合された読み出し又は書き込みであってもよい。
NVSSMサブシステム26に対する複数の関連したRDMA読み出しもしくは書き込み又は他の任意のデータもしくはメタデータ動作からなるシーケンスを処理システム2が開始する場合、シーケンス中の個別のRDMA動作のうちの最後のものを除くすべてについて完了状態を抑圧することが望ましい可能性がある。言い換えると、特定のRDMA読み出し又は書き込みに成功した場合、それがシーケンス中の最後の動作でない限り、NVSSMサブシステム26によって「完了」状態が生成されることはない。このような抑圧は従来のRDMA技術を用いることによって実行可能である。処理システム2において「完了」状態が受信されるということは、書き込まれたデータがNVSSMサブシステムのメモリ内にあるか、又はNVSSMサブシステムから読み出されたデータが処理システムのメモリ、例えばバッファキャッシュ6内にあり、それが有効であることを意味する。これとは対照的に、「完了失敗」状態は、NVSSMサブシステム26において動作を実行する際に問題が存在したことを示し、RDMA書き込みの場合では、RDMA書き込み動作のためのNVSSMの場所におけるデータの状態が未定義である一方、NVSSMへのデータの書き込みを行う処理システムにおけるデータの状態が元のままであることを示す。読み出しに係る失敗状態は、NVSSMにおいてデータが元のままであるが、処理システムのメモリの状態が未定義であることを意味する。また、失敗した場合には、RDMA動作において使用されたSTagは無効になるが、しかしながら、処理システム2とNVSSM26との間の接続は元のままであり、例えば新たなSTagを生成するために使用可能である。
所定の実施形態では、RDMA動作の完了を示すために、また、特定のプロセッサコア、例えばハイパーバイザ11を実行中のコア又は特定の仮想マシンを実行中のコアに割り込み処理を指示するために、MSI−X(message signaled interrupts (MSI) extension)が使用される。さらに、ハイパーバイザ11は、I/O動作を発行したコアにMSI−Xの割り込み処理を指示することにより、効率を向上させ、ユーザの遅延を縮小し、ハイパーバイザのコアに対するCPU負荷を低下させることができる。
NVSSMサブシステム26において実行される読み出し又は書き込みは、NVSSMサブシステム26における複数の異なるメモリ装置に対して行われることも可能である。例えば、所定の実施形態では、ユーザデータ及び関連付けられた回復メタデータ(例えば、RAIDパリティデータ及びチェックサム)は、NVSSMサブシステム26内の生のフラッシュメモリに記憶される一方、関連付けられたファイルシステムメタデータは、NVSSMサブシステム26内の不揮発性DRAMに記憶される。このアプローチによれば、フラッシュブロックを消去するコストを負うことなしに、ファイルシステムメタデータの更新を行うことができる。
図6〜図9にこのアプローチを示す。図6は、仮想マシン4によって単一の書き込み61に基づいてギャザリスト及びスキャッタリストをどのように生成することができるのかを示す。書き込み61は、1つ又は複数のヘッダ62と、書き込みデータ63(書き込まれるデータ)とを含む。クライアントによって開始された書き込み61は、任意の従来のフォーマットであってもよい。
処理システム2におけるファイルシステムマネージャ41は、最初に、書き込みデータ63をソースメモリ60に記憶し、次いでその後、書き込みデータ63をNVSSMサブシステム26にコピーさせる。ソースメモリ60は、例えばメモリ22(図2A及び図2B)であってもよい。
従って、ファイルシステムマネージャ41は、NVSSMデータレイアウトマネージャ46にRDMA書き込みを開始させ、データ63を処理システムのバッファキャッシュ6からNVSSMサブシステム26に書き込む。RDMA書き込みを開始するために、NVSSMデータレイアウトエンジン13は、書き込みデータ63が存在する場所であって、かつ、対応するRAIDメタデータ及びファイルメタデータをファイルシステムマネージャ41が生成した場所である、ソースメモリ60におけるバッファに対するソースポインタを含むギャザリスト65を生成し、NVSSMデータレイアウトエンジン13は、NVSSM26においてデータ63と対応するRAIDメタデータ及びファイルメタデータとが配置されるべき場所への宛先ポインタを含むスキャッタリスト64を生成する。RDMA書き込みの場合、ギャザリスト65は、転送すべきデータを取り出してくる場所であるソースメモリ60内の記憶場所を特定する一方、スキャッタリスト64は、データを書き込むべき場所であるNVSSMサブシステム26における記憶場所を特定する。宛先となる複数の記憶場所を特定することにより、スキャッタリスト64は、NVSSMサブシステム26において実行される複数の個別の書き込みアクセスを特定する。
スキャッタリスト64及びギャザリスト65はまた、RAIDメタデータ、パリティ、チェックサムなどの、仮想マシン4によって生成された回復メタデータに対するポインタを含むことができる。ギャザリスト65は、ソースメモリ60においてこのようなメタデータを取り出してくる場所を特定するソースポインタを含み、スキャッタリスト64は、NVSSMサブシステム26においてこのようなメタデータを書き込む場所を特定する宛先ポインタを含む。同様に、スキャッタリスト64及びギャザリスト65はさらに、NVSSMにおいてファイルデータ及び回復メタデータが書き込まれる場所であるNVSSMブロックを特定する、基本的なファイルシステムメタデータ67に対するポインタを含む(これにより、ファイルシステムメタデータを読むことによりファイルデータ及び回復メタデータを見つけることができる)。図6に示すように、スキャッタリスト64は、記憶すべき書き込みデータ及び回復メタデータをフラッシュメモリ27に送り、記憶すべきファイルシステムメタデータをNVSSMサブシステム26における不揮発性DRAM28に送るように生成可能である。上述のように、メタデータのストレージを分散して行うことによれば、フラッシュブロックの消去を必要とすることなく所定のメタデータ更新を行うことを可能にし、このことは、頻繁に更新されるメタデータの場合に特に有益である。なお、更新される頻度が低いファイルシステムメタデータ等である一部のファイルシステムメタデータがフラッシュメモリ27に記憶されてもよい。さらに、書き込みデータ及び回復メタデータは、複数の異なるフラッシュ装置に記憶されてもよく、又は、NVSSMサブシステム26におけるフラッシュメモリ27の複数の異なる部分集合に記憶されてもよい。
図7は、クライアントによって開始された複数の書き込みをどのように単一のRDMA書き込みに結合できるのかを示す。図6について議論したものと同様の方法で、クライアントによって開始された複数の書き込み71−1〜71−nを単一のギャザリスト及び対応する単一のスキャッタリスト74として表し、単一のRDMA書き込みを形成することができる。書き込みデータ73及びメタデータは、図6に関して上述したものと同様に分散されることが可能である。
公知のように、フラッシュメモリは、消去ブロックに関して構成される。フラッシュメモリへの書き込みが行われるときはいつでも、データをフラッシュに書き込む前に、書き込みの対象である1つ又は複数の消去ブロックの全体が最初に消去されなければならない。この消去−書き込みサイクルはフラッシュメモリ上で摩耗を生じさせ、このようなサイクルを何度も繰り返した後、フラッシュブロックに障害が発生する。従って、このような消去−書き込みサイクルの回数を減少させ、よってフラッシュメモリ上の摩耗を低減するために、RDMAコントローラ12は、対象とする各消去ブロックを単一のRDMA書き込みで実質的に満たすように、複数の書き込み要求を蓄積してそれらを単一のRDMA書き込みに結合することができる。
所定の実施形態では、RDMAコントローラ12は、各RDMA書き込みのデータをNVSSMサブシステム26内の複数のメモリ装置にわたって分散する、RAID冗長方式を実装する。特定の形式のRAIDと、これに関してデータが分散される方法とは、ハイパーバイザ11により適当なSTagを生成することで決定される。RDMAコントローラ12は、複数のメモリ装置にわたって広がる単一のアドレス空間を仮想マシン4に呈示することができ、これにより、単一のRDMA動作で複数の装置にアクセスしながら、単一の完了状態のみを有することができる。従って、RAID冗長方式は、複数の仮想マシン4のそれぞれに対してトランスペアレントである。フラッシュバンクにおける複数のメモリ装置のうちの1つは、例えば、チェックサム、パリティ、及び/又は、巡回冗長検査(CRC)の情報を記憶するために使用可能である。この技術はまた、上述したようなNVSSMサブシステム26を複数個提供することにより容易に拡張可能であり、この場合、単一の書き込みからのデータは、このような複数のNVSSMサブシステム26にわたって同様に分散されることが可能である。
図8は、RDMA読み出しをどのように生成できるのかを示す。なお、1つのRDMA読み出しは、上述のように複数の読み出し要求を反映することができる。1つの実施形態では、読み出し要求81は、要求されたデータのヘッダ82、開始オフセット88、及び長さ89を含む、クライアントによって開始された読み出し要求81は、任意の従来のフォーマットであってもよい。
要求されたデータがNVSSMサブシステム26内にある場合、まずファイルメタデータを取り出すために、NVSSMデータレイアウトマネージャ46は、NVSSMサブシステム26のためのギャザリスト85を生成し、ファイルシステムマネージャ41は、バッファキャッシュ6のための対応するスキャッタリスト84を生成する。1つの実施形態では、ファイルメタデータはNVSSMのDRAM28から取り出される。1つのRDMA読み出しでは、ファイルメタデータは、複数のファイルシステムに関して、さらに、1つのファイルシステムにおける複数のファイル及びディレクトリに関して取り出されることが可能である。取り出されたファイルメタデータに基づいて、次いで、第2のRDMA読み出しを取り出すことができ、このとき、ファイルシステムマネージャ41はスキャッタリストを特定し、NVSSMデータレイアウトマネージャ46は要求された読み出しデータのためのギャザリストを特定する。RDMA読み出しの場合、ギャザリスト85は、転送すべきデータを取り出してくる場所であるNVSSMサブシステム26における記憶場所を特定する一方、スキャッタリスト84は、データを書き込む場所である宛先メモリ80における記憶場所を特定する。宛先メモリ80は、例えばメモリ22であってもよい。ソースとなる複数の記憶場所を特定することにより、ギャザリスト85は、NVSSMサブシステム26において実行すべき複数の個別の読み出しアクセスを特定することができる。
ギャザリスト85はまた、NVSSMサブシステム29において第1のRDMA読み出し及び回復(例えば、RAIDメタデータ、チェックサム、など)のためのファイルシステムメタデータと第2のRDMA読み出しのためのファイルシステムメタデータとを読み出してくる場所である記憶場所を特定する。先に示したように、これらのさまざまな異なるタイプのデータ及びメタデータは、異なるタイプのメモリ(例えば、フラッシュ27及び不揮発性DRAM28)を含む、NVSSMサブシステム26における異なる場所から取り出されてくることが可能である。
図9は、クライアントによって開始された複数の読み出しをどのように単一のRDMA読み出しに結合できるのかを示す。図8について議論したものと同様の方法で、クライアントによって開始された複数の読み出し要求91−1〜91−nを単一のギャザリスト95及び対応する単一のスキャッタリスト94として表し、データ及びRAIDメタデータのための単一のRDMA読み出しと、ファイルシステムメタデータのためのもう1つの単一のRDMA読み出しとを形成することができる。メタデータ及び読み出しデータは、上述のように、NVSSMサブシステム26における複数の異なる場所及び/又はメモリ装置から集められてもよい。
なお、RDMAセマンティックを用いることの1つの利点は、データブロックの更新に関してであっても潜在的な性能向上を見込めるということにある。例えば、図2Bを参照すると、更新すべきデータブロックをメモリ22に読み込み、ファイルシステムマネージャ41によりRDMA書き込みデータに基づいて更新し、次いで、NVSSMサブシステム26に書き戻すことができる。1つの実施形態では、データ及びメタデータは、それらを取り出したNVSSMブロックに書き戻される。もう1つの実施形態では、データ及びメタデータは、NVSSMサブシステム26における異なるブロックに書き込まれ、古いメタデータの場所を指し示すファイルメタデータが更新される。従って、変更されたデータのみが処理システム2内のバス構造を横切る必要がある一方、大多数のフラッシュブロックデータはそうする必要がない。
図10A及び図10Bは、処理システム2において実行可能な書き込み処理の例を示す。図10Aは全体処理を示す一方、図10Bはその処理の一部をより詳細に示す。まず図10Aを参照すると、処理システム2は、最初に1001において、1つ又は複数の書き込み要求を生成する。この1つ又は複数の書き込み要求は、例えば、処理システム2内で実行中のアプリケーションによって、又は外部アプリケーションによって生成されてもよい。上述のように、処理システム2内において、複数の書き込み要求を単一の(複合された)RDMA書き込みに結合することができる。
次に、1002において、仮想マシン(「VM」)は、NVSSMサブシステム26におけるメモリの対象部分に対する書き込みロック(書き込みの所有権)を有しているか否かを決定する。VMがその部分に対する書き込みロックを有している場合、処理は続いて1003に進む。そうでない場合、処理は続いて1007に進み、これについては後述する。
次いで、1003において、処理システム2におけるファイルシステムマネージャ41(図4)は、書き込みデータの対象宛先(例えば、データを書き込む1つ又は複数のボリューム及び1つ又は複数のディレクトリ)に関するメタデータを読み出す。次いで、1004において、ファイルシステムマネージャ41は、要求された1つ又は複数の書き込み動作を反映させるように、メインメモリ(例えばメモリ22)内のメタデータの生成及び/又は更新を行う。1005において、オペレーティングシステム40は、データ及び関連付けられたメタデータをNVSSMサブシステム26に書き込ませる。1006において、処理は、書き込みする仮想マシンから書き込みロックを解放する。
1002において、書き込みが、複数の仮想マシン4間で共用されるメモリ(すなわちNVSSMサブシステム26)の一部に対するものであり、かつ、書き込みする仮想マシンがメモリのその部分に対する書き込みロックを持たない場合、次いで1007において、処理は、仮想マシンがメモリのその部分に対する書き込みロックを利用可能になるまで待機し、上述の1003に進む。
書き込みロックは、NVSSMサブシステム26におけるメモリに対するRDMAアトミック動作を用いて実装可能である。共用メモリアクセスのセマンティック及び制御は、ハイパーバイザの共用メモリのセマンティックに従うが、これは仮想マシンのセマンティックと同じであってもよい。従って、仮想マシンが書き込みロックを取得し、また、解放するとき、それは、ハイパーバイザにより標準的なオペレーティングシステムコールを用いて定義されることが可能である。
図10Bは、動作1004、すなわち、RDMA書き込みを実行してデータ及びメタデータを処理システム2におけるメモリからNVSSMサブシステム26におけるメモリに転送する処理の例をより詳細に示す。まず、1021において、ファイルシステムマネージャ41は、転送すべきデータ及びメタデータが存在する場所であるホストメモリ内(例えばメモリ22内)の場所を特定するギャザリストを作成する。1022において、NVSSMデータレイアウトエンジン13(図1B)は、データ及びメタデータを書き込む場所であるNVSSMサブシステム26内の場所のためのスキャッタリストを作成する。1023において、オペレーティングシステム40は、RDMA書き込み動作をスキャッタ・ギャザリストとともにRDMAコントローラ(図2A及び図3Aに係る実施形態では、ホストRDMAコントローラ25;図2B及び図3Bに係る実施形態では、ストレージRDMAコントローラ29)に送信する。1024において、RDMAコントローラは、ギャザリストによって特定されたメモリ22内のバッファから、スキャッタリストによって特定されたNVSSMメモリ内のバッファに、データ及びメタデータを移動させる。この動作は、上述のようにNVSSMサブシステム26において複数の個別の書き込みとして実行される、複合されたRDMA書き込みであってもよい。1025において、RDMAコントローラは、(複合された1つのRDMA書き込みである場合を想定するとき)シーケンス中の最後の書き込み動作について、「完了」状態メッセージをオペレーティングシステム40に送信し、処理を完了する。もう1つの実施形態では、処理システム2により、複数のRDMA書き込み動作1004からなるシーケンスが生成される。このような実施形態では、シーケンス中の先行する書き込み動作のすべてに成功した場合には、シーケンス中の最後のRDMA書き込み動作についてのみ完了状態が生成される。
図11A及び図11Bは、処理システム2において実行可能な読み出し処理の例を示す。図11Aは全体処理を示す一方、図11Bはその処理の一部をより詳細に示す。まず図11Aを参照すると、最初に1101において、処理システム2は、1つ又は複数の読み出し要求の生成又は受信を行う。この1つ又は複数の読み出し要求は、例えば、処理システム2内で実行中のアプリケーションによって、又は外部アプリケーションによって生成されてもよい。上述のように、複数の読み出し要求を単一の(複合された)RDMA読み出しに結合することが可能である。1102において、処理システム2におけるオペレーティングシステム40は、NVSSMサブシステム26から、要求されたデータに関するファイルシステムメタデータを取り出す。この動作は、上述のように、複合された1つのRDMA読み出しを含んでもよい。次いで、1103において、このファイルシステムメタデータは、NVSSMサブシステムにおける要求されたデータの場所を決定するために使用される。1104において、オペレーティングシステム40は、NVSSMサブシステムにおけるその場所から、要求されたデータを取り出す。この動作もまた、複合された1つのRDMA読み出しを含んでもよい。1105において、オペレーティングシステム40は、取り出されたデータを要求者に送る。
図11Bは、動作1102又は1104、すなわち、RDMA読み出しを実行してデータ又はメタデータをNVSSMサブシステム26におけるメモリから処理システム2におけるメモリに転送する処理の例をより詳細に示す。読み出しの場合、図11Aに関して上述したように、処理システム2は、最初に対象データのメタデータを読み出し、次いでメタデータに基づいて対象データを読み出す。従って、処理全体では実際に、2回の処理、すなわち最初はメタデータのための処理、次いで実際の対象データのための処理が行われる。説明の簡単化のために、以下の説明では「データ」の場合のみについて言及するが、処理はメタデータの場合にも本質的には同様の方法で適用可能であるということが理解されるであろう。
まず、1121において、NVSSMデータレイアウトエンジン13は、読み出すべきデータが存在する場所であるNVSSMサブシステム26内の場所を特定するギャザリストを作成する。1122において、ファイルシステムマネージャ41は、読み出しデータを書き込む場所であるホストメモリ(例えばメモリ22)内の場所を特定するスキャッタリストを作成する。1123において、オペレーティングシステム40は、RDMA読み出し動作をスキャッタ・ギャザリストとともにRDMAコントローラ(図2A及び図3Aに係る実施形態では、ホストRDMAコントローラ25;図2B及び図3Bに係る実施形態では、ストレージRDMAコントローラ29)に送信する。1124において、RDMAコントローラは、ギャザリストに従って特定されるNVSSMサブシステム26におけるフラッシュメモリ及び不揮発性DRAM28から、処理システムのホストメモリのスキャッタリストのバッファに、データを移動させる。この動作は、上述したように、NVSSMサブシステム26において複数の個別の読み出しとして実行される、複合された1つのRDMA読み出しであってもよい。1125において、RDMAコントローラは、(複合された1つのRDMA読み出しである場合を想定するとき)シーケンス中の最後の読み出しについて「完了」状態を示す信号をオペレーティングシステム40に送る。もう1つの実施形態では、処理システム2により、複数のRDMA読み出し動作1102又は1104からなるシーケンスが生成される。このような実施形態では、シーケンス中の先行する読み出し動作のすべてに成功した場合には、シーケンス中の最後のRDMA読み出し動作についてのみ完了状態が生成される。次いで、1126において、オペレーティングシステム40は、要求されたデータを要求者に送信し、処理を完了する。
以上に導入した技術は優位点となりうる多数の特徴を有するということが認識されるであろう。その1つは、仮想マシンの障害を隔離するためにRDMAセマンティックを使用することにより、性能を向上させ、また、障害の隔離をサポートするためのハイパーバイザの複雑さを低下させることにある。これはまた、仮想マシンがハイパーバイザを完全にバイパスすることをサポートし、これにより、さらに、性能を向上させ、また、ハイパーバイザを実行する「ドメイン0」のコアにかかるオーバーヘッドを低下させる。
優位点となりうるもう1つの特徴は、複数のI/O動作を単一のRDMA動作に結合することにより達成される性能の向上にある。このことは、RDMAプリミティブを用いた複数のデータ冗長化技術をサポートすることによるデータ回復のサポートを含む。
優位点となりうるさらにもう1つの特徴は、RDMAアトミック動作を用いることによる仮想マシンのデータ共用の改善されたサポートにある。優位点となりうるさらにもう1つの特徴は、単一の仮想マシンのためのファイルシステムメタデータと、共用された仮想マシンのデータのためのファイルシステムメタデータとをサポートする、フラッシュメモリ(又は他のNVSSMメモリ)の拡張にある。優位点となりうるもう1つの特徴は、RDMAセマンティックを拡張することにより、複数の仮想マシンをサポートする1つのノードの背後における複数のフラッシュ装置をサポートすることにある。さらに、上記で導入した技術によれば、複数の仮想マシンの下の複数のNVSSM装置において、共用された独立の複数のNVSSMキャッシュと、永続的ストレージとを可能にする。
以上により、複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法を説明した。
以上に導入した方法及び処理は、can be implemented in 特定用途のハードウェア回路で、プログラム可能な回路に関連したソフトウェア及び/又はファームウェアで、又は、これらの形態の組み合わせで実装可能である。特定用途のハードウェア回路は、例えば、1つ又は複数の特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、FPGA(field programmable gate array)、などであってもよい。
本明細書で導入される技術を実装するソフトウェア又はファームウェアは、機械可読媒体上に格納されてもよく、また、1つ又は複数の汎用又は特定用途のプログラマブルマイクロプロセッサによって実行されてもよい。本明細書で使用する「機械可読媒体」という用語は、マシン(例えば、コンピュータ、ネットワーク装置、個人情報端末(PDA)、製造ツール、1つ又は複数のプロセッサからなる集合を備えた任意の装置、など)によってアクセス可能な形態で情報を提供する(すなわち、記憶及び/又は送信を行う)任意のメカニズムを含む。例えば、マシンによりアクセス可能な媒体は、記録可能/記録不可の媒体(例えば、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリ装置、など)、などを含む。
本発明を特定の例示的な実施形態を参照して説明したが、本発明は説明した実施形態に限定されるものではなく、請求項の精神及び範囲内で変更及び改変して実施可能であることが認識されるであろう。従って、明細書及び図面は、限定ではなく、説明とみなされるべきである。

Claims (40)

  1. 複数の仮想マシンと、
    上記複数の仮想マシンによって共用される不揮発性ソリッドステートメモリと、
    上記複数の仮想マシンに機能的に接続されたハイパーバイザと、
    上記複数の仮想マシン及び上記ハイパーバイザに機能的に接続され、RDMA動作を用いることにより上記複数の仮想マシンの代わりに上記不揮発性ソリッドステートメモリにアクセスするリモートダイレクトメモリアクセス(RDMA)コントローラとを備えた処理システム。
  2. 上記各仮想マシン及び上記ハイパーバイザは、アトミックメモリアクセス動作を用いることにより、RDMAコントローラを介する不揮発性ソリッドステートメモリへの書き込みアクセスを同期させる請求項1記載の処理システム。
  3. 上記仮想マシンは、上記ハイパーバイザを用いることなく、上記RDMAコントローラを介して上記不揮発性ソリッドステートメモリと通信することにより、上記不揮発性ソリッドステートメモリにアクセスする請求項1記載の処理システム。
  4. 上記ハイパーバイザは、上記各仮想マシンがアクセス可能である上記不揮発性ソリッドステートメモリの部分を決定するタグを生成する請求項1記載の処理システム。
  5. 上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの複数の異なる部分に対する上記仮想マシンの読み出し及び書き込み権限を制御するためのタグを用いる請求項4記載の処理システム。
  6. 上記ハイパーバイザは、上記不揮発性ソリッドステートメモリにわたる負荷分散を実施するために上記タグを生成する請求項4記載の処理システム。
  7. 上記ハイパーバイザは、上記仮想マシン間において耐障害性を実現するために上記タグを生成する請求項4記載の処理システム。
  8. 上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの別個の部分に対して排他的な書き込みアクセスをそれぞれ行うことができるように上記仮想マシンを構成することにより、上記仮想マシン間において耐障害性を実現する請求項1記載の処理システム。
  9. 上記ハイパーバイザは、上記仮想マシンが排他的な書き込みアクセスを行うことができる場所である上記不揮発性ソリッドステートメモリの部分に対する読み出しアクセスを行うことができる請求項8記載の処理システム。
  10. 上記不揮発性ソリッドステートメモリは、不揮発性ランダムアクセスメモリと、第2の形態の不揮発性ソリッドステートメモリとを備え、
    上記不揮発性ソリッドステートメモリにデータを書き込むとき、上記RDMAコントローラは、上記第2の形態の不揮発性ソリッドステートメモリに記憶されているデータに関連付けられたメタデータを、上記不揮発性ランダムアクセスメモリに記憶する請求項1記載の処理システム。
  11. 上記システムは第1のメモリをさらに備え、
    上記RDMAコントローラは、上記不揮発性ソリッドステートメモリ及び上記第2のメモリのスキャッタ・ギャザリストを用いて、上記不揮発性ソリッドステートメモリと上記第2のメモリとの間のRDMAデータ転送を実行する請求項1記載の処理システム。
  12. 上記RDMAコントローラは、上記仮想マシンのうちの1つ又は複数からの複数の書き込み要求を、上記不揮発性ソリッドステートメモリを対象とする単一のRDMA書き込みに結合し、
    上記単一のRDMA書き込みは、上記不揮発性ソリッドステートメモリにおいて複数の個別の書き込みとして実行される請求項1記載の処理システム。
  13. 上記RDMAコントローラは、
    複数のRDMA書き込みのうちの個別のものに対する完了状態を示す情報を抑圧し、
    上記複数の個別の書き込みを完了することに成功した後で、単一の完了状態を示す情報のみを生成する請求項12記載の処理システム。
  14. 上記不揮発性ソリッドステートメモリは複数の消去ブロックを備え、
    上記単一のRDMA書き込みは、上記不揮発性ソリッドステートメモリの少なくとも1つの消去ブロックに影響し、
    上記RDMAコントローラは、上記単一のRDMA書き込みによって影響される各消去ブロックを上記単一のRDMA書き込みが実質的に満たすように、複数の書き込み要求を結合する請求項13記載の処理システム。
  15. 上記RDMAコントローラは、上記不揮発性ソリッドステートメモリを対象とするRDMA書き込みを開始し、
    上記RDMA書き込みは、書き込みデータと、上記書き込みデータに関連付けられた回復メタデータと、クライアント書き込みデータに関連付けられたファイルシステムメタデータとを含む、複数のデータ集合を含み、
    上記RDMA書き込みを行うことにより、上記RDMAコントローラによって生成されたRDMAスキャッタリストに従って、上記複数のデータ集合が上記不揮発性ソリッドステートメモリの複数の異なるセクションに書き込まれる請求項1記載の処理システム。
  16. 上記複数の異なるセクションは、複数の異なるタイプの不揮発性ソリッドステートメモリを含む請求項15記載の処理システム。
  17. 上記複数の異なるタイプは、フラッシュメモリ及び不揮発性ランダムアクセスメモリを含む請求項16記載の処理システム。
  18. 上記RDMA書き込みを行うことにより、上記クライアント書き込みデータ及び上記回復メタデータが上記フラッシュメモリに記憶され、その他のメタデータが上記不揮発性ランダムアクセスメモリに記憶される請求項17記載の処理システム。
  19. 上記RDMAコントローラは、上記仮想マシンのうちの1つ又は複数からの複数の読み出し要求を、上記不揮発性ソリッドステートメモリを対象とする単一のRDMA読み出しに結合する請求項1記載の処理システム。
  20. 上記単一のRDMA読み出しは、上記不揮発性ソリッドステートメモリにおいて複数の個別の読み出しとして実行される請求項19記載の処理システム。
  21. 上記RDMAコントローラは、RDMAを用いて、上記仮想マシンのうちの1つからの要求に応答して上記不揮発性ソリッドステートメモリからデータを読み出し、このことは、上記不揮発性ソリッドステートメモリの複数の異なる部分集合を読み出しソースとして特定するギャザリストとともにRDMA読み出しを読み出し要求から生成することを含む請求項1記載の処理システム。
  22. 上記複数の異なる部分集合のうちの少なくとも2つは、異なるタイプの不揮発性ソリッドステートメモリである請求項21記載の処理システム。
  23. 上記異なるタイプの不揮発性ソリッドステートメモリは、フラッシュメモリ及び不揮発性ランダムアクセスメモリを含む請求項22記載の処理システム。
  24. 上記不揮発性ソリッドステートメモリは複数のメモリ装置を備え、
    上記RDMAコントローラは、RDMAを用いて、単一のRDMA書き込みに係るデータを上記複数のメモリ装置にわたって分散させるRAID冗長方式を実施する請求項1記載の処理システム。
  25. 上記RAID冗長方式は、上記仮想マシンのそれぞれに対してトランスペアレントである請求項24記載の処理システム。
  26. 複数の仮想マシンと、
    不揮発性ソリッドステートメモリと、
    第2のメモリと、
    上記複数の仮想マシンに機能的に接続されたハイパーバイザと、
    上記複数の仮想マシン及び上記ハイパーバイザに機能的に接続されたリモートダイレクトメモリアクセス(RDMA)コントローラとを備えた処理システムであって、
    上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの別個の各部分への排他的な書き込みアクセスを行うことができるように上記仮想マシンを構成し、上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの上記各部分への読み出しアクセスを少なくとも行うことができ、上記ハイパーバイザは、上記仮想マシンによって使用するためのタグであって、上記不揮発性ソリッドステートメモリのどの部分に上記各仮想マシンがアクセスできるのかを制御するタグを生成し、
    上記RDMAコントローラは、上記不揮発性ソリッドステートメモリ及び上記第2のメモリに関連付けられたスキャッタ・ギャザリストを生成して上記不揮発性ソリッドステートメモリと上記第2のメモリとの間でRDMAデータ転送を行うことにより、上記各仮想マシンの代わりに上記不揮発性ソリッドステートメモリにアクセスし、上記仮想マシンは、上記ハイパーバイザを用いることなく、上記RDMAコントローラを介して上記不揮発性ソリッドステートメモリと通信することにより、上記不揮発性ソリッドステートメモリにアクセスする処理システム。
  27. 上記ハイパーバイザは、RDMAタグを用いて、上記不揮発性ソリッドステートメモリの複数の異なる部分に対する上記仮想マシンのアクセス権限を制御する請求項26記載の処理システム。
  28. 上記不揮発性ソリッドステートメモリは、不揮発性ランダムアクセスメモリと、第2の形態の不揮発性ソリッドステートメモリとを備え、
    上記不揮発性ソリッドステートメモリにデータを書き込むとき、上記RDMAコントローラは、上記第2の形態の不揮発性ソリッドステートメモリに記憶されているデータに関連付けられたメタデータを、上記不揮発性ランダムアクセスメモリに記憶する請求項26記載の処理システム。
  29. 上記RDMAコントローラは、上記仮想マシンのうちの1つ又は複数からの複数の書き込み要求と、上記不揮発性ソリッドステートメモリを対象とする単一のRDMA書き込みに結合し、
    上記単一のRDMA書き込みは、上記不揮発性ソリッドステートメモリにおいて複数の個別の書き込みとして実行される請求項26記載の処理システム。
  30. 上記RDMAコントローラは、RDMAを用いて、上記仮想マシンのうちの1つからの要求に応答して上記不揮発性ソリッドステートメモリからデータを読み出し、このことは、上記不揮発性ソリッドステートメモリの複数の異なる部分集合を読み出しソースとして特定するギャザリストとともにRDMA読み出しを読み出し要求から生成することを含む請求項26記載の処理システム。
  31. 上記複数の異なる部分集合のうちの少なくとも2つは、異なるタイプの不揮発性ソリッドステートメモリである請求項30記載の処理システム。
  32. 処理システムにおける複数の仮想マシンを動作させることと、
    リモートダイレクトメモリアクセス(RDMA)を用いて、上記複数の仮想マシンが不揮発性ソリッドステートメモリに対する共用アクセスを行うことができるようにする方法であって、RDMAを用いて、上記不揮発性ソリッドステートメモリに関連して上記仮想マシン間において耐障害性を実現することを含む方法。
  33. RDMAを用いて上記仮想マシン間において耐障害性を実現することは、ハイパーバイザを用いて、上記不揮発性ソリッドステートメモリの別個の各部分に対する排他的な書き込みアクセスを行うことができるように上記仮想マシンを構成することを含む請求項32記載の方法。
  34. 上記仮想マシンは、上記不揮発性ソリッドステートメモリにアクセスする際に、上記ハイパーバイザを用いることなく上記不揮発性ソリッドステートメモリにアクセスする請求項33記載の方法。
  35. ハイパーバイザを用いることは、上記ハイパーバイザが、上記各仮想マシンがアクセスできる上記不揮発性ソリッドステートメモリの部分を決定するタグであって、上記不揮発性ソリッドステートメモリの複数の異なる部分に対する上記仮想マシンの読み出し及び書き込み権限を制御するタグを生成することを含む請求項33記載の方法。
  36. 上記RDMA動作を用いることは、RDMAを用いて、
    上記不揮発性ソリッドステートメモリにわたるウェアレベリングと、
    上記不揮発性ソリッドステートメモリにわたる負荷分散と
    のうちの少なくとも一方を実施することをさらに含む請求項32記載の方法。
  37. 上記RDMA動作を用いることは、上記仮想マシンのうちの1つ又は複数からの複数の書き込み要求を、上記不揮発性ソリッドステートメモリを対象とする単一のRDMA書き込みに結合することを含み、
    上記単一のRDMA書き込みは、上記不揮発性ソリッドステートメモリにおいて複数の個別の書き込みとして実行されることを含む請求項32記載の方法。
  38. 上記RDMA動作を用いることは、RDMAを用いて、上記仮想マシンのうちの1つからの要求に応答して上記不揮発性ソリッドステートメモリからデータを読み出すことを含み、このことは、上記不揮発性ソリッドステートメモリの複数の異なる部分集合を読み出しソースとして特定するギャザリストとともにRDMA読み出しを読み出し要求から生成することを含む請求項32記載の方法。
  39. 上記複数の異なる部分集合のうちの少なくとも2つは、異なるタイプの不揮発性ソリッドステートメモリである請求項38記載の方法。
  40. 上記不揮発性ソリッドステートメモリは複数のメモリ装置を備え、
    RDMAを用いて耐障害性を実現することは、RDMAを用いて、単一のRDMA書き込みに係るデータを上記不揮発性ソリッドステートメモリの上記複数のメモリ装置にわたって分散させ、上記仮想マシンのそれぞれに対してトランスペアレントであるRAID冗長方式を実施することを含む請求項32記載の方法。
JP2011529231A 2008-09-26 2009-09-24 Rdmaを用いて複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法 Pending JP2012503835A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/239,092 US20100083247A1 (en) 2008-09-26 2008-09-26 System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA
US12/239,092 2008-09-26
PCT/US2009/058256 WO2010036819A2 (en) 2008-09-26 2009-09-24 System and method of providing multiple virtual machines with shared access to non-volatile solid-state memory using rdma

Publications (1)

Publication Number Publication Date
JP2012503835A true JP2012503835A (ja) 2012-02-09

Family

ID=42059086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011529231A Pending JP2012503835A (ja) 2008-09-26 2009-09-24 Rdmaを用いて複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法

Country Status (5)

Country Link
US (1) US20100083247A1 (ja)
JP (1) JP2012503835A (ja)
AU (1) AU2009296518A1 (ja)
CA (1) CA2738733A1 (ja)
WO (1) WO2010036819A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221945A (ja) * 2010-04-14 2011-11-04 Hitachi Ltd データ転送装置、計算機システム及びメモリコピー装置
JP2013535711A (ja) * 2010-07-21 2013-09-12 日本電気株式会社 計算機システム、及び計算機システムにおけるオフローディング方法
WO2015181933A1 (ja) * 2014-05-29 2015-12-03 株式会社日立製作所 メモリモジュールとメモリバスシステム及び計算機システム

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103258572B (zh) 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
CN101715595A (zh) 2007-03-12 2010-05-26 爱诺彼得技术有限责任公司 存储器单元读取阈的自适应估计
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
WO2009063450A2 (en) 2007-11-13 2009-05-22 Anobit Technologies Optimized selection of memory units in multi-unit memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US7921178B2 (en) * 2008-12-04 2011-04-05 Voltaire Ltd. Device, system, and method of accessing storage
US7979619B2 (en) * 2008-12-23 2011-07-12 Hewlett-Packard Development Company, L.P. Emulating a line-based interrupt transaction in response to a message signaled interrupt
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8180963B2 (en) * 2009-05-21 2012-05-15 Empire Technology Development Llc Hierarchical read-combining local memories
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
JP2011118578A (ja) * 2009-12-02 2011-06-16 Renesas Electronics Corp 情報処理装置
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
CN102141928A (zh) 2010-01-29 2011-08-03 国际商业机器公司 虚拟环境下的数据处理方法、系统以及系统的部署方法
US8577986B2 (en) * 2010-04-02 2013-11-05 Microsoft Corporation Mapping RDMA semantics to high speed storage
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US8909727B2 (en) * 2010-11-24 2014-12-09 International Business Machines Corporation RDMA read destination buffers mapped onto a single representation
US20120182993A1 (en) * 2011-01-14 2012-07-19 International Business Machines Corporation Hypervisor application of service tags in a virtual networking environment
US10142218B2 (en) 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
US8943248B2 (en) * 2011-03-02 2015-01-27 Texas Instruments Incorporated Method and system for handling discarded and merged events when monitoring a system bus
US8812566B2 (en) * 2011-05-13 2014-08-19 Nexenta Systems, Inc. Scalable storage for virtual machines
US8806112B2 (en) 2011-07-14 2014-08-12 Lsi Corporation Meta data handling within a flash media controller
US8645618B2 (en) 2011-07-14 2014-02-04 Lsi Corporation Flexible flash commands
US9354933B2 (en) 2011-10-31 2016-05-31 Intel Corporation Remote direct memory access adapter state migration in a virtual environment
US9081504B2 (en) 2011-12-29 2015-07-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Write bandwidth management for flash devices
US10360176B2 (en) 2012-01-17 2019-07-23 Intel Corporation Techniques for command validation for access to a storage device by a remote client
DE102012201225A1 (de) * 2012-01-27 2013-08-01 Continental Automotive Gmbh Rechnersystem
US9749413B2 (en) * 2012-05-29 2017-08-29 Intel Corporation Peer-to-peer interrupt signaling between devices coupled via interconnects
US9229901B1 (en) 2012-06-08 2016-01-05 Google Inc. Single-sided distributed storage system
US9311240B2 (en) 2012-08-07 2016-04-12 Dell Products L.P. Location and relocation of data within a cache
US9495301B2 (en) 2012-08-07 2016-11-15 Dell Products L.P. System and method for utilizing non-volatile memory in a cache
US20140047183A1 (en) * 2012-08-07 2014-02-13 Dell Products L.P. System and Method for Utilizing a Cache with a Virtual Machine
US9852073B2 (en) 2012-08-07 2017-12-26 Dell Products L.P. System and method for data redundancy within a cache
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US9549037B2 (en) 2012-08-07 2017-01-17 Dell Products L.P. System and method for maintaining solvency within a cache
US9058122B1 (en) 2012-08-30 2015-06-16 Google Inc. Controlling access in a single-sided distributed storage system
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US9154543B2 (en) * 2012-12-18 2015-10-06 Lenovo (Singapore) Pte. Ltd. Multiple file transfer speed up
US10031820B2 (en) * 2013-01-17 2018-07-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Mirroring high performance and high availablity applications across server computers
US9235471B2 (en) * 2013-04-29 2016-01-12 Netapp, Inc. Background initialization for protection information enabled storage volumes
US9336166B1 (en) * 2013-05-30 2016-05-10 Emc Corporation Burst buffer appliance with operating system bypass functionality to facilitate remote direct memory access
US9313274B2 (en) 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
US10037222B2 (en) * 2013-09-24 2018-07-31 University Of Ottawa Virtualization of hardware accelerator allowing simultaneous reading and writing
US10979503B2 (en) 2014-07-30 2021-04-13 Excelero Storage Ltd. System and method for improved storage access in multi core system
KR102308782B1 (ko) 2014-08-19 2021-10-05 삼성전자주식회사 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
US9785374B2 (en) 2014-09-25 2017-10-10 Microsoft Technology Licensing, Llc Storage device management in computing systems
KR102254101B1 (ko) 2014-10-20 2021-05-20 삼성전자주식회사 데이터 처리 시스템 및 이의 동작 방법
CN112584388A (zh) * 2014-11-28 2021-03-30 索尼公司 用于无线通信系统的控制设备和控制方法、通信设备
US10108339B2 (en) 2014-12-17 2018-10-23 Intel Corporation Reduction of intermingling of input and output operations in solid state drives
US10956189B2 (en) * 2015-02-13 2021-03-23 Red Hat Israel, Ltd. Methods for managing virtualized remote direct memory access devices
US10055381B2 (en) 2015-03-13 2018-08-21 International Business Machines Corporation Controller and method for migrating RDMA memory mappings of a virtual machine
US9904627B2 (en) 2015-03-13 2018-02-27 International Business Machines Corporation Controller and method for migrating RDMA memory mappings of a virtual machine
US9864710B2 (en) * 2015-03-30 2018-01-09 EMC IP Holding Company LLC Writing data to storage via a PCI express fabric having a fully-connected mesh topology
US10019409B2 (en) 2015-08-03 2018-07-10 International Business Machines Corporation Extending remote direct memory access operations for storage class memory access
US10031883B2 (en) 2015-10-16 2018-07-24 International Business Machines Corporation Cache management in RDMA distributed key/value stores based on atomic operations
US20180314544A1 (en) * 2015-10-30 2018-11-01 Hewlett Packard Enterprise Development Lp Combining data blocks from virtual machines
US20170155717A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Direct memory access for endpoint devices
US10261703B2 (en) 2015-12-10 2019-04-16 International Business Machines Corporation Sharing read-only data among virtual machines using coherent accelerator processor interface (CAPI) enabled flash
US10685290B2 (en) 2015-12-29 2020-06-16 International Business Machines Corporation Parameter management through RDMA atomic operations
US10764368B2 (en) * 2016-05-03 2020-09-01 Excelero Storage Ltd. System and method for providing data redundancy for remote direct memory access storage devices
US20180143882A1 (en) * 2016-11-23 2018-05-24 2236008 Ontario Inc. File system framework
US10732893B2 (en) * 2017-05-25 2020-08-04 Western Digital Technologies, Inc. Non-volatile memory over fabric controller with memory bypass
CN112422615B (zh) * 2018-02-24 2023-11-10 华为技术有限公司 一种通信的方法及装置
CN108733454B (zh) * 2018-05-29 2021-10-01 郑州云海信息技术有限公司 一种虚拟机故障处理方法和装置
CN110647480B (zh) * 2018-06-26 2023-10-13 华为技术有限公司 数据处理方法、远程直接访存网卡和设备
US11295205B2 (en) * 2018-09-28 2022-04-05 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization
US11687400B2 (en) * 2018-12-12 2023-06-27 Insitu Inc., A Subsidiary Of The Boeing Company Method and system for controlling auxiliary systems of unmanned system
US11481335B2 (en) * 2019-07-26 2022-10-25 Netapp, Inc. Methods for using extended physical region page lists to improve performance for solid-state drives and devices thereof
US20220179675A1 (en) 2020-12-03 2022-06-09 Nutanix, Inc. Memory registration for optimizing rdma performance in hyperconverged computing environments
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11573741B2 (en) * 2021-05-11 2023-02-07 Vmware, Inc. Write input/output optimization for virtual disks in a virtualized computing system
CN113360293B (zh) * 2021-06-02 2023-09-08 奥特酷智能科技(南京)有限公司 一种基于远程虚拟共享内存机制的车身电气网络架构
US20220391240A1 (en) * 2021-06-04 2022-12-08 Vmware, Inc. Journal space reservations for virtual disks in a virtualized computing system
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11726702B2 (en) 2021-11-02 2023-08-15 Netapp, Inc. Methods and systems for processing read and write requests
US20230229525A1 (en) * 2022-01-20 2023-07-20 Dell Products L.P. High-performance remote atomic synchronization

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119205A (en) * 1997-12-22 2000-09-12 Sun Microsystems, Inc. Speculative cache line write backs to avoid hotspots
US7624156B1 (en) * 2000-05-23 2009-11-24 Intel Corporation Method and system for communication between memory regions
US7099955B1 (en) * 2000-10-19 2006-08-29 International Business Machines Corporation End node partitioning using LMC for a system area network
US6971044B2 (en) * 2001-04-20 2005-11-29 Egenera, Inc. Service clusters and method in a processing system with failover capability
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
AU2002311585A1 (en) * 2002-06-06 2003-12-22 Crescendo Networks Ltd. System and method for connecting multiple slow connections to multiple fast connections
US7610348B2 (en) * 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
US7203796B1 (en) * 2003-10-24 2007-04-10 Network Appliance, Inc. Method and apparatus for synchronous data mirroring
US7640543B2 (en) * 2004-06-30 2009-12-29 Intel Corporation Memory isolation and virtualization among virtual machines
US20060236063A1 (en) * 2005-03-30 2006-10-19 Neteffect, Inc. RDMA enabled I/O adapter performing efficient memory management
JP2007004661A (ja) * 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US8688800B2 (en) * 2005-10-05 2014-04-01 Hewlett-Packard Development Company, L.P. Remote configuration of persistent memory system ATT tables
US7702826B2 (en) * 2005-12-28 2010-04-20 Intel Corporation Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
US20070208820A1 (en) * 2006-02-17 2007-09-06 Neteffect, Inc. Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations
US20070282967A1 (en) * 2006-06-05 2007-12-06 Fineberg Samuel A Method and system of a persistent memory
US20070288921A1 (en) * 2006-06-13 2007-12-13 King Steven R Emulating a network-like communication connection between virtual machines on a physical device
US8307148B2 (en) * 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
CN101622594B (zh) * 2006-12-06 2013-03-13 弗森-艾奥公司 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
US7987469B2 (en) * 2006-12-14 2011-07-26 Intel Corporation RDMA (remote direct memory access) data transfer in a virtual environment
US7886115B2 (en) * 2007-07-13 2011-02-08 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for implementing virtual storage devices
US8364983B2 (en) * 2008-05-08 2013-01-29 Microsoft Corporation Corralling virtual machines with encryption keys

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221945A (ja) * 2010-04-14 2011-11-04 Hitachi Ltd データ転送装置、計算機システム及びメモリコピー装置
JP2013535711A (ja) * 2010-07-21 2013-09-12 日本電気株式会社 計算機システム、及び計算機システムにおけるオフローディング方法
WO2015181933A1 (ja) * 2014-05-29 2015-12-03 株式会社日立製作所 メモリモジュールとメモリバスシステム及び計算機システム

Also Published As

Publication number Publication date
US20100083247A1 (en) 2010-04-01
CA2738733A1 (en) 2010-04-01
WO2010036819A2 (en) 2010-04-01
AU2009296518A1 (en) 2010-04-01
WO2010036819A3 (en) 2010-07-29

Similar Documents

Publication Publication Date Title
JP2012503835A (ja) Rdmaを用いて複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法
US8775718B2 (en) Use of RDMA to access non-volatile solid-state memory in a network storage system
US20190073296A1 (en) Systems and Methods for Persistent Address Space Management
US10073656B2 (en) Systems and methods for storage virtualization
US9767017B2 (en) Memory device with volatile and non-volatile media
US9075557B2 (en) Virtual channel for data transfers between devices
KR101480659B1 (ko) 2-레벨 시스템 메인 메모리
US10140136B2 (en) Distributed virtual array data storage system and method
US8074021B1 (en) Network storage system including non-volatile solid-state memory controlled by external data layout engine
US10114763B2 (en) Fork-safe memory allocation from memory-mapped files with anonymous memory behavior
EP3989052B1 (en) Method of operating storage device and method of operating storage system using the same
US10515014B1 (en) Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
US10503416B1 (en) Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
US20220188010A1 (en) Method and system for a local storage engine collaborating with a solid state drive controller
CN113722131A (zh) 用于促进存储设备中的快速崩溃恢复的方法和系统
US10496284B1 (en) Software-implemented flash translation layer policies in a data processing system
US10713334B1 (en) Data processing system with a scalable architecture over ethernet
EP4276641A1 (en) Systems, methods, and apparatus for managing device memory and programs
US11301170B2 (en) Performing sub-logical page write operations in non-volatile random access memory (NVRAM) using pre-populated read-modify-write (RMW) buffers
CN117234414A (zh) 用于支持独立磁盘冗余阵列的系统和方法
KR20230172394A (ko) 캐시 일관된 상호 연결 저장 장치에서 raid 회로를 사용하는 중복 배열 독립 디스크 시스템 및 방법
CN115809018A (zh) 改善系统的读取性能的设备和方法
TW201610853A (zh) 用於儲存虛擬化的系統和方法
CN116662217A (zh) 持久性存储器装置及应用持久性存储器装置的方法
CN117785751A (zh) 非易失性存储装置对主机任务的分担