(57)【要約】  処理システムは、リモートダイレクトメモリアクセス（ＲＤＭＡ）を用いることにより不揮発性ソリッドステートメモリ（ＮＶＳＳＭ）サブシステムへの共用アクセスを行うことができる複数の仮想マシンを含む。ＮＶＳＳＭサブシステムは、フラッシュメモリ及び他のタイプの不揮発性ソリッドステートメモリを含む。処理システムは、スキャッタ・ギャザリストを用いてＲＤＭＡ読み出し及び書き込み動作を特定する。複数の読み出し又は書き込みは単一のＲＤＭＡ読み出し又は書き込みに結合され、これは、ＮＶＳＳＭサブシステムにおいて分解されて、複数の読み出し又は書き込みとして実行される。単一のＲＤＭＡ読み出し又は書き込みによって生成されたメモリアクセスは、ＮＶＳＳＭサブシステム内の異なるメモリ装置に対して行われる。異なるメモリ装置は、異なる形態の不揮発性ソリッドステートメモリを含む。
2012503835.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンと、
上記複数の仮想マシンによって共用される不揮発性ソリッドステートメモリと、
上記複数の仮想マシンに機能的に接続されたハイパーバイザと、
上記複数の仮想マシン及び上記ハイパーバイザに機能的に接続され、ＲＤＭＡ動作を用いることにより上記複数の仮想マシンの代わりに上記不揮発性ソリッドステートメモリにアクセスするリモートダイレクトメモリアクセス（ＲＤＭＡ）コントローラとを備えた処理システム。
【請求項２】
上記各仮想マシン及び上記ハイパーバイザは、アトミックメモリアクセス動作を用いることにより、ＲＤＭＡコントローラを介する不揮発性ソリッドステートメモリへの書き込みアクセスを同期させる請求項１記載の処理システム。
【請求項３】
上記仮想マシンは、上記ハイパーバイザを用いることなく、上記ＲＤＭＡコントローラを介して上記不揮発性ソリッドステートメモリと通信することにより、上記不揮発性ソリッドステートメモリにアクセスする請求項１記載の処理システム。
【請求項４】
上記ハイパーバイザは、上記各仮想マシンがアクセス可能である上記不揮発性ソリッドステートメモリの部分を決定するタグを生成する請求項１記載の処理システム。
【請求項５】
上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの複数の異なる部分に対する上記仮想マシンの読み出し及び書き込み権限を制御するためのタグを用いる請求項４記載の処理システム。
【請求項６】
上記ハイパーバイザは、上記不揮発性ソリッドステートメモリにわたる負荷分散を実施するために上記タグを生成する請求項４記載の処理システム。
【請求項７】
上記ハイパーバイザは、上記仮想マシン間において耐障害性を実現するために上記タグを生成する請求項４記載の処理システム。
【請求項８】
上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの別個の部分に対して排他的な書き込みアクセスをそれぞれ行うことができるように上記仮想マシンを構成することにより、上記仮想マシン間において耐障害性を実現する請求項１記載の処理システム。
【請求項９】
上記ハイパーバイザは、上記仮想マシンが排他的な書き込みアクセスを行うことができる場所である上記不揮発性ソリッドステートメモリの部分に対する読み出しアクセスを行うことができる請求項８記載の処理システム。
【請求項１０】
上記不揮発性ソリッドステートメモリは、不揮発性ランダムアクセスメモリと、第２の形態の不揮発性ソリッドステートメモリとを備え、
上記不揮発性ソリッドステートメモリにデータを書き込むとき、上記ＲＤＭＡコントローラは、上記第２の形態の不揮発性ソリッドステートメモリに記憶されているデータに関連付けられたメタデータを、上記不揮発性ランダムアクセスメモリに記憶する請求項１記載の処理システム。
【請求項１１】
上記システムは第１のメモリをさらに備え、
上記ＲＤＭＡコントローラは、上記不揮発性ソリッドステートメモリ及び上記第２のメモリのスキャッタ・ギャザリストを用いて、上記不揮発性ソリッドステートメモリと上記第２のメモリとの間のＲＤＭＡデータ転送を実行する請求項１記載の処理システム。
【請求項１２】
上記ＲＤＭＡコントローラは、上記仮想マシンのうちの１つ又は複数からの複数の書き込み要求を、上記不揮発性ソリッドステートメモリを対象とする単一のＲＤＭＡ書き込みに結合し、
上記単一のＲＤＭＡ書き込みは、上記不揮発性ソリッドステートメモリにおいて複数の個別の書き込みとして実行される請求項１記載の処理システム。
【請求項１３】
上記ＲＤＭＡコントローラは、
複数のＲＤＭＡ書き込みのうちの個別のものに対する完了状態を示す情報を抑圧し、
上記複数の個別の書き込みを完了することに成功した後で、単一の完了状態を示す情報のみを生成する請求項１２記載の処理システム。
【請求項１４】
上記不揮発性ソリッドステートメモリは複数の消去ブロックを備え、
上記単一のＲＤＭＡ書き込みは、上記不揮発性ソリッドステートメモリの少なくとも１つの消去ブロックに影響し、
上記ＲＤＭＡコントローラは、上記単一のＲＤＭＡ書き込みによって影響される各消去ブロックを上記単一のＲＤＭＡ書き込みが実質的に満たすように、複数の書き込み要求を結合する請求項１３記載の処理システム。
【請求項１５】
上記ＲＤＭＡコントローラは、上記不揮発性ソリッドステートメモリを対象とするＲＤＭＡ書き込みを開始し、
上記ＲＤＭＡ書き込みは、書き込みデータと、上記書き込みデータに関連付けられた回復メタデータと、クライアント書き込みデータに関連付けられたファイルシステムメタデータとを含む、複数のデータ集合を含み、
上記ＲＤＭＡ書き込みを行うことにより、上記ＲＤＭＡコントローラによって生成されたＲＤＭＡスキャッタリストに従って、上記複数のデータ集合が上記不揮発性ソリッドステートメモリの複数の異なるセクションに書き込まれる請求項１記載の処理システム。
【請求項１６】
上記複数の異なるセクションは、複数の異なるタイプの不揮発性ソリッドステートメモリを含む請求項１５記載の処理システム。
【請求項１７】
上記複数の異なるタイプは、フラッシュメモリ及び不揮発性ランダムアクセスメモリを含む請求項１６記載の処理システム。
【請求項１８】
上記ＲＤＭＡ書き込みを行うことにより、上記クライアント書き込みデータ及び上記回復メタデータが上記フラッシュメモリに記憶され、その他のメタデータが上記不揮発性ランダムアクセスメモリに記憶される請求項１７記載の処理システム。
【請求項１９】
上記ＲＤＭＡコントローラは、上記仮想マシンのうちの１つ又は複数からの複数の読み出し要求を、上記不揮発性ソリッドステートメモリを対象とする単一のＲＤＭＡ読み出しに結合する請求項１記載の処理システム。
【請求項２０】
上記単一のＲＤＭＡ読み出しは、上記不揮発性ソリッドステートメモリにおいて複数の個別の読み出しとして実行される請求項１９記載の処理システム。
【請求項２１】
上記ＲＤＭＡコントローラは、ＲＤＭＡを用いて、上記仮想マシンのうちの１つからの要求に応答して上記不揮発性ソリッドステートメモリからデータを読み出し、このことは、上記不揮発性ソリッドステートメモリの複数の異なる部分集合を読み出しソースとして特定するギャザリストとともにＲＤＭＡ読み出しを読み出し要求から生成することを含む請求項１記載の処理システム。
【請求項２２】
上記複数の異なる部分集合のうちの少なくとも２つは、異なるタイプの不揮発性ソリッドステートメモリである請求項２１記載の処理システム。
【請求項２３】
上記異なるタイプの不揮発性ソリッドステートメモリは、フラッシュメモリ及び不揮発性ランダムアクセスメモリを含む請求項２２記載の処理システム。
【請求項２４】
上記不揮発性ソリッドステートメモリは複数のメモリ装置を備え、
上記ＲＤＭＡコントローラは、ＲＤＭＡを用いて、単一のＲＤＭＡ書き込みに係るデータを上記複数のメモリ装置にわたって分散させるＲＡＩＤ冗長方式を実施する請求項１記載の処理システム。
【請求項２５】
上記ＲＡＩＤ冗長方式は、上記仮想マシンのそれぞれに対してトランスペアレントである請求項２４記載の処理システム。
【請求項２６】
複数の仮想マシンと、
不揮発性ソリッドステートメモリと、
第２のメモリと、
上記複数の仮想マシンに機能的に接続されたハイパーバイザと、
上記複数の仮想マシン及び上記ハイパーバイザに機能的に接続されたリモートダイレクトメモリアクセス（ＲＤＭＡ）コントローラとを備えた処理システムであって、
上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの別個の各部分への排他的な書き込みアクセスを行うことができるように上記仮想マシンを構成し、上記ハイパーバイザは、上記不揮発性ソリッドステートメモリの上記各部分への読み出しアクセスを少なくとも行うことができ、上記ハイパーバイザは、上記仮想マシンによって使用するためのタグであって、上記不揮発性ソリッドステートメモリのどの部分に上記各仮想マシンがアクセスできるのかを制御するタグを生成し、
上記ＲＤＭＡコントローラは、上記不揮発性ソリッドステートメモリ及び上記第２のメモリに関連付けられたスキャッタ・ギャザリストを生成して上記不揮発性ソリッドステートメモリと上記第２のメモリとの間でＲＤＭＡデータ転送を行うことにより、上記各仮想マシンの代わりに上記不揮発性ソリッドステートメモリにアクセスし、上記仮想マシンは、上記ハイパーバイザを用いることなく、上記ＲＤＭＡコントローラを介して上記不揮発性ソリッドステートメモリと通信することにより、上記不揮発性ソリッドステートメモリにアクセスする処理システム。
【請求項２７】
上記ハイパーバイザは、ＲＤＭＡタグを用いて、上記不揮発性ソリッドステートメモリの複数の異なる部分に対する上記仮想マシンのアクセス権限を制御する請求項２６記載の処理システム。
【請求項２８】
上記不揮発性ソリッドステートメモリは、不揮発性ランダムアクセスメモリと、第２の形態の不揮発性ソリッドステートメモリとを備え、
上記不揮発性ソリッドステートメモリにデータを書き込むとき、上記ＲＤＭＡコントローラは、上記第２の形態の不揮発性ソリッドステートメモリに記憶されているデータに関連付けられたメタデータを、上記不揮発性ランダムアクセスメモリに記憶する請求項２６記載の処理システム。
【請求項２９】
上記ＲＤＭＡコントローラは、上記仮想マシンのうちの１つ又は複数からの複数の書き込み要求と、上記不揮発性ソリッドステートメモリを対象とする単一のＲＤＭＡ書き込みに結合し、
上記単一のＲＤＭＡ書き込みは、上記不揮発性ソリッドステートメモリにおいて複数の個別の書き込みとして実行される請求項２６記載の処理システム。
【請求項３０】
上記ＲＤＭＡコントローラは、ＲＤＭＡを用いて、上記仮想マシンのうちの１つからの要求に応答して上記不揮発性ソリッドステートメモリからデータを読み出し、このことは、上記不揮発性ソリッドステートメモリの複数の異なる部分集合を読み出しソースとして特定するギャザリストとともにＲＤＭＡ読み出しを読み出し要求から生成することを含む請求項２６記載の処理システム。
【請求項３１】
上記複数の異なる部分集合のうちの少なくとも２つは、異なるタイプの不揮発性ソリッドステートメモリである請求項３０記載の処理システム。
【請求項３２】
処理システムにおける複数の仮想マシンを動作させることと、
リモートダイレクトメモリアクセス（ＲＤＭＡ）を用いて、上記複数の仮想マシンが不揮発性ソリッドステートメモリに対する共用アクセスを行うことができるようにする方法であって、ＲＤＭＡを用いて、上記不揮発性ソリッドステートメモリに関連して上記仮想マシン間において耐障害性を実現することを含む方法。
【請求項３３】
ＲＤＭＡを用いて上記仮想マシン間において耐障害性を実現することは、ハイパーバイザを用いて、上記不揮発性ソリッドステートメモリの別個の各部分に対する排他的な書き込みアクセスを行うことができるように上記仮想マシンを構成することを含む請求項３２記載の方法。
【請求項３４】
上記仮想マシンは、上記不揮発性ソリッドステートメモリにアクセスする際に、上記ハイパーバイザを用いることなく上記不揮発性ソリッドステートメモリにアクセスする請求項３３記載の方法。
【請求項３５】
ハイパーバイザを用いることは、上記ハイパーバイザが、上記各仮想マシンがアクセスできる上記不揮発性ソリッドステートメモリの部分を決定するタグであって、上記不揮発性ソリッドステートメモリの複数の異なる部分に対する上記仮想マシンの読み出し及び書き込み権限を制御するタグを生成することを含む請求項３３記載の方法。
【請求項３６】
上記ＲＤＭＡ動作を用いることは、ＲＤＭＡを用いて、
上記不揮発性ソリッドステートメモリにわたるウェアレベリングと、
上記不揮発性ソリッドステートメモリにわたる負荷分散と
のうちの少なくとも一方を実施することをさらに含む請求項３２記載の方法。
【請求項３７】
上記ＲＤＭＡ動作を用いることは、上記仮想マシンのうちの１つ又は複数からの複数の書き込み要求を、上記不揮発性ソリッドステートメモリを対象とする単一のＲＤＭＡ書き込みに結合することを含み、
上記単一のＲＤＭＡ書き込みは、上記不揮発性ソリッドステートメモリにおいて複数の個別の書き込みとして実行されることを含む請求項３２記載の方法。
【請求項３８】
上記ＲＤＭＡ動作を用いることは、ＲＤＭＡを用いて、上記仮想マシンのうちの１つからの要求に応答して上記不揮発性ソリッドステートメモリからデータを読み出すことを含み、このことは、上記不揮発性ソリッドステートメモリの複数の異なる部分集合を読み出しソースとして特定するギャザリストとともにＲＤＭＡ読み出しを読み出し要求から生成することを含む請求項３２記載の方法。
【請求項３９】
上記複数の異なる部分集合のうちの少なくとも２つは、異なるタイプの不揮発性ソリッドステートメモリである請求項３８記載の方法。
【請求項４０】
上記不揮発性ソリッドステートメモリは複数のメモリ装置を備え、
ＲＤＭＡを用いて耐障害性を実現することは、ＲＤＭＡを用いて、単一のＲＤＭＡ書き込みに係るデータを上記不揮発性ソリッドステートメモリの上記複数のメモリ装置にわたって分散させ、上記仮想マシンのそれぞれに対してトランスペアレントであるＲＡＩＤ冗長方式を実施することを含む請求項３２記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係る少なくとも１つの実施形態は、不揮発性ソリッドステートメモリへのアクセスが複数の仮想マシンによって共用される仮想マシン環境に関する。
【背景技術】
【０００２】
本願は、２００８年９月２６日に出願された米国特許出願第１２／２３９，０９２号の優先権を主張し、上記出願の全体は参照によって本願に含まれる。
【０００３】
今日、仮想マシンデータ処理環境は、マルチコア／マルチプロセッサコンピュータシステムの性能及び利用を向上させるために一般的に使用されている。ある仮想マシン環境において、複数の仮想マシンがメモリ及び入出力（Ｉ／Ｏ）装置等の同じ物理ハードウェアを共用している。典型的には、ハイパーバイザ又は仮想マシンマネージャと呼ばれるソフトウェアレイヤが、仮想化の提供、すなわちハードウェアの共用可能化を行う。
【０００４】
仮想マシンは、完全なオペレーティングシステムの実行をサポートする完全なシステムプラットフォームを提供することができる。仮想マシン環境の利点のうちの１つは、複数のオペレーティングシステム（これらは同じタイプのオペレーティングシステムであってもなくてもよい）が同じ物理プラットフォーム上で共存できるということにある。それに加えて、仮想マシンの命令及びアーキテクチャは、それを実装する物理プラットフォームのそれとは異なっていてもよい。
【０００５】
仮想マシン環境を実装するものを含む任意のデータ処理システムの性能を向上させることが望ましい。性能を向上させるための１つの方法は、遅延を低下させ、また、処理システムのメモリにアクセスすることに関連付けられたランダムアクセスのスループットを向上させることである。これに関して、フラッシュメモリと、特にＮＡＮＤフラッシュメモリとは、ある非常に望ましい特性を有する。一般に、フラッシュメモリは、従来のディスクドライブに比較して非常に高速なランダム読み出しアクセス速度を有する。また、フラッシュメモリは、従来のＤＲＡＭよりも実質的に安価であり、ＤＲＡＭのように揮発性ではない。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】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.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、フラッシュメモリは、コンピュータのＤＲＡＭ又はディスクドライブをフラッシュメモリで単に置き換えることを不可能にするようなある特性を有する。特に、従来のフラッシュメモリは、典型的にはブロックアクセス装置である。このような装置であることに起因してフラッシュメモリはホストから一度に１つのコマンド（例えば読み出し又は書き込み）しか受信できないので、低遅延及び／又は高スループットが必要なアプリケーションにおいてボトルネックになる可能性がある。
【０００８】
それに加えて、一般にはフラッシュメモリは従来のディスクドライブよりも優れた読み出し性能を有しているが、その書き込み性能は注意深く管理されなければならない。その理由の１つは、フラッシュメモリ内の１単位（書き込みブロック）に書き込む毎に、まず、フラッシュメモリ内の大きな単位（消去ブロック）が消去されなければならないということにある。典型的には、消去ブロックのサイズは、典型的な書き込みブロックよりもずっと大きい。これらの特性は書き込み動作に遅延をもたらす。さらに、フラッシュメモリは、有限回数の消去動作の後に摩耗する傾向がある。
【０００９】
仮想環境においてメモリが複数の仮想マシンによって共用されるとき、各仮想マシンのために適切な障害閉じこめを行うことが重要である。さらに、複数の仮想マシンによる効率的なメモリ共用を行うことが重要である。通常、これらの機能はハイパーバイザによって提供されるが、それにより、ハイパーバイザの複雑さ及びコードサイズが増大する。
【課題を解決するための手段】
【００１０】
処理システムは複数の仮想マシンを含み、これらの仮想マシンのすべてにより、ＮＶＳＳＭサブシステムを含む同じハードウェアが共用される。本システムは、ハイパーバイザ及びＲＤＭＡコントローラをさらに含む。ＲＤＭＡコントローラは、データを読み書きするための仮想マシンによるＮＶＳＳＭサブシステムへのアクセスを可能にするＲＤＭＡ動作を制御する。ハイパーバイザは、各仮想マシン及びＲＤＭＡコントローラと通信し、一般に仮想マシン環境においてハイパーバイザに関連付けられる仮想化サービスを提供する。
【図面の簡単な説明】
【００１１】
【図１Ａ】不揮発性ソリッドステートメモリ（ＮＶＳＳＭ）サブシステムを共用する複数の仮想マシンを含む処理システムを示す図である。
【図１Ｂ】ＮＶＳＳＭサブシステムにアクセスするＲＤＭＡコントローラを含む、図１Ａのシステムの詳細図である。
【図１Ｃ】仮想マシンのアクセス権をＮＶＳＳＭサブシステムに割り当てる方式を示す図である。
【図２Ａ】１つの実施形態に係る処理システム及び不揮発性ソリッドステートメモリ（ＮＶＳＳＭ）サブシステムのアーキテクチャの例を示す高レベルのブロック図である。
【図２Ｂ】もう１つの実施形態に係る処理システム及びＮＶＳＳＭサブシステムのアーキテクチャの例を示す高レベルのブロック図である。
【図３Ａ】図２Ａの実施形態に対応するＮＶＳＳＭサブシステムのアーキテクチャの例を示す図である。
【図３Ｂ】図２Ｂの実施形態に対応するＮＶＳＳＭサブシステムのアーキテクチャの例を示す図である。
【図４】処理システムにおけるオペレーティングシステムのアーキテクチャの例を示す図である。
【図５】どのように複数のデータアクセス要求を単一のＲＤＭＡデータアクセス要求に結合できるのかを示す図である。
【図６】書き込み要求と、ＮＶＳＳＭサブシステムに対するＲＤＭＡ書き込みとの間の関係の例を示す図である。
【図７】複数の書き込み要求と、ＮＶＳＳＭサブシステムに対する１回のＲＤＭＡ書き込みとの間の関係の例を示す図である。
【図８】読み出し要求と、ＮＶＳＳＭサブシステムに対するＲＤＭＡ読み出しとの間の関係の例を示す図である。
【図９】複数の読み出し要求と、ＮＶＳＳＭサブシステムに対する１回のＲＤＭＡ読み出しとの間の関係の例を示す図である。
【図１０Ａ】ＲＤＭＡ書き込みを行って処理システム内のメモリからＮＶＳＳＭサブシステム内のメモリにデータを転送する処理を示すフロー図である。
【図１０Ｂ】ＲＤＭＡ書き込みを行って処理システム内のメモリからＮＶＳＳＭサブシステム内のメモリにデータを転送する処理を示すフロー図である。
【図１１Ａ】ＲＤＭＡ読み出しを行ってＮＶＳＳＭサブシステム内のメモリから処理システム内のメモリにデータを転送する処理を示すフロー図である。
【図１１Ｂ】ＲＤＭＡ読み出しを行ってＮＶＳＳＭサブシステム内のメモリから処理システム内のメモリにデータを転送する処理を示すフロー図である。
【発明を実施するための形態】
【００１２】
本発明の１つ又は複数の実施形態が、添付の図面において、限定ではなく例示として説明される。図面において、同じ参照符号は同様の構成要素を示す。
【００１３】
本明細書において「ある実施形態」又は「１つの実施形態」などと言及するとき、説明した特定の機能、構造、又は特性が本発明の少なくとも１つの実施形態に含まれることを意味する。本明細書においてこのような語句を用いるとき、必ずしもすべて同じ実施形態を示しているのではないが、相互に排他的であるものでもない。
【００１４】
複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法について説明する。以下に詳述するように、複数の仮想マシンを含む１つの処理システムは、データを永続的に記憶する生のフラッシュメモリを含む不揮発性ソリッドステートメモリ（ＮＶＳＳＭ）サブシステムを含むことができる、又は当該ＮＶＳＳＭサブシステムにアクセスすることができる。不揮発性ソリッドステートメモリのいくつかの例を挙げると、フラッシュメモリや、バッテリでバックアップされたＤＲＡＭがある。ＮＶＳＳＭサブシステムは、例えば、処理システムの一次的な永続的ストレージ設備として、及び／又は、処理システムのメインメモリとして使用可能である。
【００１５】
仮想マシン環境においてフラッシュの望ましい特性を利用するためには、各仮想マシンのために適切な障害閉じこめを行うことが重要である。従って、本明細書で導入される技術によれば、複数の仮想マシンのそれぞれがＮＶＳＳＭサブシステムの別個の部分への排他的な書き込みアクセスを行うことができるように当該複数の仮想マシンを構成することにより、ハイパーバイザは当該複数の仮想マシン間において耐障害性を実現することができる。
【００１６】
さらに、複数の仮想マシンによる効率的なフラッシュのメモリ共用を行うことが重要である。従って、本明細書で導入される技術によれば、ＮＶＳＳＭサブシステムとの間でデータを移動させるために従来のシリアルインターフェースではなくリモートダイレクトメモリアクセス（ＲＤＭＡ）を用いることにより、通常は従来のシリアルインターフェースを介してフラッシュメモリにアクセスすることに関連付けられるボトルネックが回避される。本明細書で導入される技術によれば、通常はホストとフラッシュメモリとの間のシリアルコマンドインターフェースに関連付けられる遅延及びスループット低下を招くことなく、フラッシュメモリの利点を得ることができる。
【００１７】
ＮＶＳＳＭサブシステムへの読み出しアクセス及び書き込みアクセスの両方は、各仮想マシンによって制御され、より具体的には、各仮想マシンのオペレーティングシステム（各仮想マシンはそれ自体の別個のオペレーティングシステムを有している）によって制御される。各仮想マシンは、所定の実施形態では、ログ構造化された、固定の書き込み位置を持たないデータレイアウトエンジンを含む。データレイアウトエンジンは、ＲＤＭＡ読み出し及び書き込み動作を特定するスキャッタ・ギャザリストを生成する。より低いレベルでは、ＮＶＳＳＭサブシステムへのすべての読み出し及び書き込みアクセスは、オペレーティングシステムの指示の下で、処理システムにおけるＲＤＭＡコントローラから制御可能である。
【００１８】
本明細書で導入される技術は、複合されたＲＤＭＡコマンドをサポートする。すなわち、クライアントによって開始された読み出し又は書き込み等の１つ又は複数の動作は、処理システムによって単一のＲＤＭＡ読み出し又は書き込みにそれぞれ結合されることが可能であり、この単一のＲＤＭＡ読み出し又は書き込みは、ＮＶＳＳＭサブシステムにおいて受信されたときに分解されて、複数の並列又は逐次的な読み出し又は書き込みとしてそれぞれ実行される。ＮＶＳＳＭサブシステムにおいて実行される複数の読み出し又は書き込みは、ＮＶＳＳＭサブシステムにおける複数の異なるメモリ装置に対して行われる可能性がある。これらのメモリ装置は、異なるタイプのメモリを含む場合がある。例えば、所定の実施形態では、ユーザデータ及び関連付けられた回復メタデータ（ＲＡＩＤ（Redundant Array of Inexpensive Disks／Devices）データ及びチェックサム等）は、ＮＶＳＳＭサブシステムにおけるフラッシュメモリに記憶される一方、関連付けられたファイルシステムメタデータは、ＮＶＳＳＭサブシステムにおける不揮発性ＤＲＡＭに記憶される。このアプローチによれば、フラッシュブロックを消去するコストを負う必要なしに、ファイルシステムメタデータの更新を行うことができる。ファイルシステムメタデータは頻繁に更新される傾向があるので、このことは有益である。さらに、処理システムによって複数のＲＤＭＡ動作からなるシーケンスがＮＶＳＳＭサブシステムに送られるとき、完了状態は、最後のものを除く個別のＲＤＭＡ動作のすべてについて抑圧されてもよい。
【００１９】
本明細書で導入される技術は、優位点となりうる多数の特徴を有する。その１つは、仮想マシンの障害を隔離するためにＲＤＭＡセマンティックを使用することにより、性能を向上させ、また、障害の隔離をサポートするためのハイパーバイザの複雑さを低下させることにある。これはまた、いったんハイパーバイザがＮＶＳＳＭサブシステムへの仮想マシンのアクセスをセットアップすると、各仮想マシンがハイパーバイザを完全にバイパスしてそれら自体でＩ／Ｏ動作を実行することをサポートし、これにより、さらに、性能を向上させ、また、ハイパーバイザを実行する「ドメイン０」のコアにかかるオーバーヘッドを低下させる。
【００２０】
優位点となりうるもう１つの特徴は、複数のＩ／Ｏ動作を単一のＲＤＭＡ動作に結合することにより達成される性能の向上にある。このことは、ＲＤＭＡプリミティブを用いた複数のデータ冗長化技術をサポートすることによるデータ回復のサポートを含む。優位点となりうるさらにもう１つの特徴は、ＲＤＭＡアトミック動作を用いることによる仮想マシンのデータ共用の改善されたサポートにある。優位点となりうるさらにもう１つの特徴は、単一の仮想マシンのためのファイルシステムメタデータと、共用された仮想マシンのデータのためのファイルシステムメタデータとをサポートする、フラッシュメモリ（又は他のＮＶＳＳＭメモリ）の拡張にある。優位点となりうるもう１つの特徴は、ＲＤＭＡセマンティックを拡張することにより、複数の仮想マシンをサポートする１つのノードの背後における複数のフラッシュ装置をサポートすることにある。さらに、上記で導入した技術によれば、複数の仮想マシンの下の複数のＮＶＳＳＭ装置において、共用された独立の複数のＮＶＳＳＭキャッシュと、永続的ストレージとを可能にする。
【００２１】
上述のように、所定の実施形態では、ＮＶＳＳＭサブシステムは「生」のフラッシュメモリを含み、また、ＮＶＳＳＭサブシステムにおけるデータのストレージは、「固定の書き込み位置を持たない（write anywhere）」というストレージポリシーを用いる処理システムの、（フラッシュ装置に対して）外部の、ログ構造化されたデータレイアウトエンジンによって制御される。「生（raw）」という用語により、（従来のフラッシュＳＳＤとは対照的に）オンボードのデータレイアウトエンジンを一切持たないメモリ装置を意味する。本明細書において、「データレイアウトエンジン」は、データを記憶する場所を決定し、また、既に記憶されているデータの場所を特定する（ソフトウェア及び／又はハードウェアとして実装された）任意の構成要素として定義される。本明細書において定義する「ログ構造化」という用語により、データレイアウトエンジンがその書き込みパターンを（ログと同様に）概して逐次的な方法でレイアウトし、空きブロックへの全書き込みを実行することを意味する。
【００２２】
ＮＶＳＳＭサブシステムは、処理システムの一次的な永続的ストレージとして、又は処理システムのメインメモリとして、又はその両方として（又はその一部として）使用可能である。さらに、ＮＶＳＳＭサブシステムは、仮想マシン環境を実装する１つ又は複数の処理システムを含む、複数の処理システムにアクセス可能にされる。
【００２３】
いくつかの実施形態では、処理システムにおけるデータレイアウトエンジンは、以下に詳述するように、データをフラッシュメモリ（及び他の場所）に書き込む際に「固定の書き込み位置を持たない（write out-of-place）」（「write anywhere」とも呼ばれる）ポリシーを実施する。この文脈において、「固定の書き込み位置を持たない」とは、論理データブロックが変更されるときは常に、変更されたデータブロックが、その場所で上書きされるのではなく新たな物理ストレージの場所に書き込まれることを意味する。（なお、この文脈においてデータレイアウトエンジンによって管理される「論理データブロック」は、フラッシュメモリの物理「ブロック」と同じではない。論理ブロックは、物理ストレージ空間の仮想化であり、これは、フラッシュメモリのブロックのサイズには必ずしも対応しない。１つの実施形態では、データレイアウトエンジンによって管理される各論理データブロックは４ｋＢであるのに対して、フラッシュメモリの各物理ブロックはずっと大きく、例えば１２８ｋＢである。）  フラッシュメモリは内部にいかなるデータレイアウトエンジンも持たないので、処理システムの外部の「固定の書き込み位置を持たない」データレイアウトエンジンは、フラッシュメモリ内の任意の空きの場所にデータを書き込むことができる。従って、外部の「固定の書き込み位置を持たない」データレイアウトエンジンは、データを同じ場所に再書き込みしなければならない場合よりも少ない個数の消去ブロックに、変更されたデータを書き込むことができ、このことは、フラッシュ装置の摩耗を低減するためのたすけとなる。
【００２４】
ここで図１Ａを参照すると、図１Ａは、本明細書で導入される技術を実装することが可能な処理システムを示す。図１Ａにおいて、処理システム２は複数の仮想マシン４を含み、これらの仮想マシン４のすべてにより、ＮＶＳＳＭサブシステム２６を含む同じハードウェアが共用される。各仮想マシン４は、完全なオペレーティングシステムであってもよく、又は、完全なオペレーティングシステムを含んでもよい。２つの仮想マシン４のみが図示されているが、本質的には、処理システム２内において任意個数の仮想マシンが存在して動作可能であることは理解されよう。処理システム２は、図示するようにネットワーク３に接続されることが可能であり、このネットワーク３は、例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、インターネット等のグローバルエリアネットワーク、ファイバチャネルファブリック、又はこのような相互接続からなる任意の組み合わせであってもよい。
【００２５】
ＮＶＳＳＭサブシステム２６は、仮想マシン４を含むものと同じ物理プラットフォーム／筐体内に設けられることが可能であるが、必ずしもそうでなくてもよい。いくつかの実施形態では、複数の仮想マシン４とＮＶＳＳＭサブシステム２６とはすべて、単一の処理システムの部分であるとみなされてもよいが、しかしながら、このことは、ＮＶＳＳＭサブシステム２６が仮想マシン４と同じ物理プラットフォーム内になければならないということを意味するのではない。
【００２６】
１つの実施形態では、処理システム２はネットワークストレージサーバである。ストレージサーバは、ＮＡＳ環境において一般に行われるように、ファイルレベルのデータアクセスサービスをクライアント（図示せず）に提供してもよく、又は、ＳＡＮ環境において一般に行われるように、ブロックレベルのデータアクセスサービスを提供してもよく、又は、ファイルレベルとブロックレベルとの両方のデータアクセスサービスをクライアントに提供できてもよい。
【００２７】
さらに、図１では処理システム２を単一の装置として図示しているが、これは分散型アーキテクチャを有していてもよい。例えば、これがストレージサーバであると仮定すると、１つ又は複数のネットワークモジュール（例えば「Ｎブレード」）と、ネットワークモジュールから物理的に分離した１つ又は複数のディスク／データモジュール（例えば「Ｄブレード」）（図示せず）とを含み、ネットワークモジュールとディスク／データモジュールとが物理的相互接続を介して互いに通信するように設計可能である。このようなアーキテクチャによれば、処理システムについて都合のよいスケーリングが可能になる。
【００２８】
図１Ｂは、図１Ａのシステムをより詳細に示す。図示するように、このシステムは、ハイパーバイザ１１及びＲＤＭＡコントローラ１２をさらに含む。ＲＤＭＡコントローラ１２は、以下に詳述するように、データを読み書きするための仮想マシン４によるＮＶＳＳＭサブシステム２６へのアクセスを可能にするＲＤＭＡ動作を制御する。ハイパーバイザ１１は、各仮想マシン４及びＲＤＭＡコントローラ１２と通信し、一般に仮想マシン環境においてハイパーバイザに関連付けられる仮想化サービスを提供する。それに加えて、ハイパーバイザ１１はまた、ＲＤＭＡステアリングタグ（Steering Tag、ＳＴａｇ）等のタグを生成して、各仮想マシン４にＮＶＳＳＭサブシステム２６の特定部分を割り当てる。このことは、ＮＶＳＳＭサブシステム２６の別個の部分への排他的な書き込みアクセスを各仮想マシン４に提供することを意味する。
【００２９】
「特定部分」を割り当てる、という表現により、ＮＶＳＳＭサブシステム２６のメモリ空間の特定部分を割り当てることを意味するが、このことは、ＮＶＳＳＭサブシステム２６の特定物理部分を割り当てることを必ずしも意味するものではない。それにもかかわらず、いくつかの実施形態では、ＮＶＳＳＭサブシステム２６のメモリ空間の複数の異なる部分を割り当てることは、実際には、ＮＶＳＳＭサブシステム２６の複数の異なる物理部分を割り当てることをともなう可能性がある。
【００３０】
このように仮想マシンの障害を隔離するためにＲＤＭＡセマンティックを使用することにより、性能が向上し、また、障害の隔離をサポートするためのハイパーバイザ１１の全体の複雑さが低下する。
【００３１】
動作時において、いったん各仮想マシン４がその１つ又は複数のＳＴａｇをハイパーバイザ１１から受信すると、ハイパーバイザ１１を関与させることなく、ＲＤＭＡコントローラ１２を介して通信することにより、ＮＶＳＳＭサブシステム２６にアクセスすることができる。従って、この技術はまた、性能を向上させ、また、ハイパーバイザを実行する「ドメイン０」のプロセッサコアにかかるオーバーヘッドを低下させる。
【００３２】
ハイパーバイザ１１は、ＮＶＳＳＭデータレイアウトエンジン１３を含み、ＮＶＳＳＭデータレイアウトエンジン１３は、以下に詳述するように、ＲＤＭＡ動作を制御可能であり、また、ＮＶＳＳＭサブシステム２６内のデータ配置及びフラッシュウェアレベリングの決定を担当する。この機能は、ＮＶＳＳＭサブシステム２６上で実行されるＲＤＭＡ動作のためのスキャッタ・ギャザリストを生成することを含む。所定の実施形態では、複数の仮想マシン４のうちの少なくともいくつかもまた、図１Ｂに示すように、それら自体のＮＶＳＳＭデータレイアウトエンジン４６を含み、これらは、ハイパーバイザのＮＶＳＳＭデータレイアウトエンジン１３によって実行されるものと同様の機能を実行することができる。ある仮想マシン４におけるＮＶＳＳＭデータレイアウトエンジン４６は、当該仮想マシンに割り当てられたＮＶＳＳＭサブシステム２６におけるメモリの部分のみをカバーする。これらのデータレイアウトエンジンの機能については、以下に詳述する。
【００３３】
図１Ｃに示す１つの実施形態では、ハイパーバイザ１１は、ＮＶＳＳＭサブシステム２６のメモリ空間７の部分８に対する読み出しアクセス及び書き込みアクセスの両方を有しているのに対して、各仮想マシン４は、その部分８に対する読み出しアクセスのみを有している。さらに、各仮想マシン４は、ＮＶＳＳＭサブシステム２６のメモリ空間７の別個の部分９−１〜９−Ｎのうちのそれ自体の部分に対する読み出しアクセス及び書き込みアクセスの両方を有しているのに対して、ハイパーバイザ１１は、当該部分９−１〜９−Ｎに対する読み出しアクセスのみを有している。オプションとして、複数の仮想マシン４のうちの１つ又は複数には、例えばメモリ部分９−Ｊにより示すように、１つ又は複数の他の仮想マシンに属する部分に対する読み出しのみのアクセスが提供されてもよい。他の実施形態では、ＮＶＳＳＭサブシステム２６に対する仮想マシンのアクセス権を割り当てるための異なる方法を使用可能である。
【００３４】
それに加えて、所定の実施形態では、ＮＶＳＳＭ２６においてリモートロックを行うことにより、データの一貫性が維持される。特に、このことは、アトミックメモリアクセス動作を用いることのみによって、ＲＤＭＡコントローラを介するＮＶＳＳＭサブシステム２６のリモートロックメモリへのアクセスを各仮想マシン４に実行させることにより、達成される。このことは、ロック及びデータが同じメモリ上にあるので、分散型ロックマネージャの必要性を低下させ、障害処理を簡単化する。任意個数のアトミック動作を使用可能である。他のすべてのアトミック動作をサポートするために使用可能な具体例を２つ挙げると、比較及びスワップと、フェッチ及び加算とがある。
【００３５】
以上の説明によれば、ハイパーバイザ１１が、複数の仮想マシン４に係る障害の隔離を制御するためにＳＴａｇを生成することがわかる。それに加えて、ハイパーバイザ１１は、ＮＶＳＳＭサブシステム２６にわたるウェアレベリング方式を実現するために、及び／又は、ＮＶＳＳＭサブシステム２６にわたる負荷分散を実現するために、及び／又は、他の目的のために、ＳＴａｇを生成することもできる。
【００３６】
図２Ａは、１つの実施形態に係る処理システム２及びＮＶＳＳＭサブシステム２６のアーキテクチャの例を示す、高レベルのブロック図である。処理システム２は、相互接続２３に接続された複数のプロセッサ２１及びメモリ２２を含む。図２Ａに示す相互接続２３は、適当なブリッジ、アダプタ、又はコントローラで接続された、１つ又は複数の任意の別個の物理バス、ポイント・ツー・ポイント接続、又はそれらの両方を抽象的に表すものである。従って、相互接続２３は、例えば、システムバス、ＰＣＩ（Peripheral Component Interconnect）ファミリのバス、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）又はＩＳＡ（industry standard architecture）バス、ＳＣＳＩ（small computer system interface）バス、ＵＳＢ（universal serial bus）、ＩＩＣ（Ｉ２Ｃ）バス、ＩＥＥＥ（Institute of Electrical and Electronics Engineers）規格１３９４バス（ときどき、「Ｆｉｒｅｗｉｒｅ（登録商標）」と呼ばれる）、又はこのような相互接続の任意の組み合わせを含んでもよい。
【００３７】
プロセッサ２１は、処理システム２の中央処理装置（ＣＰＵ）を含み、従って、処理システム２の全体の動作を制御する。所定の実施形態では、プロセッサ２１は、メモリ２２に記憶されたソフトウェア又はファームウェアを実行することによりこのことを達成する。プロセッサ２１は、１つ又は複数のプログラム可能な汎用又は特定用途のマイクロプロセッサ、ディジタル信号プロセッサ（ＤＳＰ）、プログラマブルコントローラ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、など、もしくはそのような装置の組み合わせであってもよく、又はこれらのものを含んでもよい。
【００３８】
メモリ２２は、処理システム２のメインメモリであるか、又は処理システム２のメインメモリを含む。メモリ２２は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、など、又はそのような装置の組み合わせからなる任意の形態を表す。使用時に、メモリ２２は、とりわけ複数のオペレーティングシステム４０を格納する可能性があり、これらのオペレーティングシステム４０のそれぞれが、仮想マシン４（又はその部分）になる。複数のオペレーティングシステム４０は、異なるタイプのオペレーティングシステムであってもよく、又は、１つのタイプのオペレーティングシステムの異なるインスタンスであってもよく、又は、これら２つの構成の組み合わせであってもよい。
【００３９】
プロセッサ２１にはさらに、相互接続２３を介して、ネットワークアダプタ２４及びＲＤＭＡコントローラ２５が接続されている。ストレージのアダプタ２５を、以下、「ホストＲＤＭＡコントローラ」２５と呼ぶ。ネットワークアダプタ２４は、ネットワーク３を介してリモート装置と通信する能力を処理システム２に与え、ネットワークアダプタ２４は、例えば、イーサネット（登録商標）、ファイバーチャネル、ＡＴＭ、又はＩｎｆｉｎｉｂａｎｄアダプタであってもよい。
【００４０】
本明細書で説明するＲＤＭＡ技術は、処理システム２内のホストメモリ（例えばメモリ２２）と、ＮＶＳＳＭサブシステム２６との間で、データを転送するために使用可能である。ホストＲＤＭＡコントローラ２５は、ＮＶＳＳＭサブシステム２６における全メモリのメモリマップを含む。ＮＶＳＳＭサブシステム２６におけるメモリは、フラッシュメモリ２７を含むとともに、何らかの形態の不揮発性ＤＲＡＭ２８（例えば、バッテリでバックアップされたＤＲＡＭ）を含む可能性がある。不揮発性ＤＲＡＭ２８は、フラッシュメモリ２７に記憶されたデータに関連付けられたファイルシステムメタデータを記憶するために使用され、これにより、このような頻繁に更新されるメタデータの更新に起因してフラッシュブロックを消去する必要性を回避する。ファイルシステムメタデータは、例えば、ファイル及びディレクトリ等のオブジェクトからなるツリー構造を含む可能性があり、これらのオブジェクトのそれぞれのメタデータは、当該オブジェクトにおいてルートが存在するかのように、ファイルシステムのメタデータを再帰的に有する。それに加えて、ファイルシステムメタデータは、それらのオブジェクトの名前、サイズ、所有権、アクセス権、などを含む可能性がある。
【００４１】
図２Ａからわかるように、ＮＶＳＳＭサブシステム２６に、複数の処理システム２が外部相互接続６を介してアクセスすることができる。図２Ｂは代替の実施形態を示し、ここでは、ＮＶＳＳＭサブシステム２６は内部ファブリック６Ｂを含み、内部ファブリック６Ｂは、処理システム２内の相互接続２３に直に接続されている。１つの実施形態では、ファブリック６Ｂ及び相互接続２３の両方が、ＰＣＩｅプロトコルを実装している。図２Ｂに係るある実施形態では、ＮＶＳＳＭサブシステム２６はＲＤＭＡコントローラ２９をさらに含み、以下、これを「ストレージＲＤＭＡコントローラ」２９と呼ぶ。ストレージＲＤＭＡコントローラ２９の動作については、以下に詳述する。
【００４２】
図３Ａは、図２Ａに対応する、本発明の実施形態に係るＮＶＳＳＭサブシステム２６の例を示す。図示した実施形態では、ＮＶＳＳＭサブシステム２６は、ホスト相互接続３１と、多数のＮＡＮＤフラッシュメモリモジュール３２と、ＦＰＧＡ（field programmable gate array）として示した多数のフラッシュコントローラ３３とを含む。説明の簡単化のために、以下、メモリモジュール３２がＤＩＭＭであると仮定するが、他の実施形態では、これらは異なるタイプのメモリモジュールであってもよい。１つの実施形態では、ＮＶＳＳＭサブシステム２６のこれらの構成要素は、プリント回路基板又はアドインカード等の従来の基板上に実装される。
【００４３】
ＮＶＳＳＭサブシステム２６の基本動作では、データは、ＮＶＳＳＭサブシステム２６の外部に設けられた１つ又は複数のデータレイアウトエンジンによって複数のＮＡＮＤフラッシュ装置に対してスケジューリングされる。データレイアウトエンジンは、処理システム２上で動作するオペレーティングシステム４０又はハイパーバイザ１１の一部であってもよい。このようなデータレイアウトエンジンの例を、図１Ｂ及び図４に関連して説明する。データの完全性を維持するために、各ＮＡＮＤフラッシュ構成要素において典型的な誤り訂正符号を用いることに加えて、各フラッシュコントローラ３３にわたってＲＡＩＤのデータストライプングを実装することができる（例えば、ＲＡＩＤ−３、ＲＡＩＤ−４、ＲＡＩＤ−５、ＲＡＩＤ−６、ＲＡＩＤ−ＤＰ）。
【００４４】
図示した実施形態では、ＮＶＳＳＭサブシステム２６はスイッチ３４も含み、各フラッシュコントローラ３３はスイッチ３４によって相互接続３１に接続される。
【００４５】
ＮＶＳＳＭサブシステム２６は、フラッシュコントローラ３３のそれぞれに接続され、バッテリでバックアップされた別個のＤＲＡＭ  ＤＩＭＭをさらに含み、これは不揮発性ＤＲＡＭ２８を実装する。不揮発性ＤＲＡＭ２８は、フラッシュ装置３２に記憶されているデータに関連付けられたファイルシステムメタデータを記憶するために使用可能である。
【００４６】
図示した実施形態では、ＮＶＳＳＭサブシステム２６はまた、スイッチ３４に接続された、不揮発性の（例えば、バッテリでバックアップされた）もう１つのＤＲＡＭバッファＤＩＭＭ３６を含む。ＤＲＡＭバッファＤＩＭＭ３６は、フラッシュ装置３２からステージングされる、又はフラッシュ装置３２に対してデステージングされるデータの短期ストレージのために使用される。ＤＲＡＭバッファＤＩＭＭ３６を制御するために、また、ＤＲＡＭバッファＤＩＭＭ３６をスイッチ３４に接続するために、別個のＤＲＡＭコントローラ３５（例えばＦＰＧＡ）が使用される。
【００４７】
従来のＳＳＤとは対照的に、フラッシュコントローラ３３は、いかなるデータレイアウトエンジンを実装するものでもなく、単に、フラッシュＤＩＭＭ３２の特定の信号方式の要件と、ホスト相互接続３１のそれとのインターフェースをとる。よって、フラッシュコントローラ３３は、フラッシュメモリ内のデータにアクセスすることを目的としていかなるデータ間接参照又はデータアドレス仮想化を実装することもない。データレイアウトエンジンに係る通常の機能のすべて（例えば、どこにデータを格納すべきかを決定すること、及び、格納されたデータの場所を特定すること）は、処理システム２における外部データレイアウトエンジンによって実行される。ＮＶＳＳＭサブシステム２６内にデータレイアウトエンジンが存在しないので、フラッシュＤＩＭＭ３２を、「生」のフラッシュメモリと呼ぶ。
【００４８】
なお、外部データレイアウトエンジンは、フラッシュメモリ内のデータ配置及びウェアレベリングについての詳細情報の知識を用いてもよい。この知識及び機能は、フラッシュ抽象化レイヤ内において実装されてもよい。ここで、フラッシュ抽象化レイヤは、ＮＶＳＳＭサブシステム２６の外部に設けられたものであり、また、フラッシュ抽象化レイヤは、外部データレイアウトエンジンの構成要素であってもよく、又はそうでなくてもよい。
【００４９】
図３Ｂは、図２Ｂに対応する、本発明の実施形態に係るＮＶＳＳＭサブシステム２６の例を示す。図示した実施形態では、内部ファブリック６Ｂはスイッチ３４の形態で実装され、スイッチ３４は例えばＰＣＩ  ｅｘｐｒｅｓｓ（ＰＣＩｅ）スイッチであってもよく、この場合、ホスト相互接続３１ＢはＰＣＩｅバスである。スイッチ３４は、処理システム２の内部の相互接続２３に直に接続されている。この実施形態では、ＮＶＳＳＭサブシステム２６はまた、スイッチ３４と各フラッシュコントローラ３３との間に接続されたＲＤＭＡコントローラ２９を含む。ＲＤＭＡコントローラ２９の動作については、以下に詳述する。
【００５０】
図４は、処理システム２において実装可能なオペレーティングシステムの例を概略的に示し、これは、仮想マシン４の部分であってもよく、又は、１つ又は複数の仮想マシン４を含んでもよい。図示するように、オペレーティングシステム４０は、いくつかのソフトウェアモジュール又は「レイヤ」を含む、ネットワークストレージのオペレーティングシステムである。これらのレイヤには、ファイルシステムマネージャ４１が含まれ、これは、オペレーティングシステム４０のコアとなる機能構成要素である。ファイルシステムマネージャ４１は、所定の実施形態では、（例えばＮＶＳＳＭサブシステム２６において）ＰＰＳサブシステム４に記憶されたデータに対して所定の構造（例えば階層構造）を付与するソフトウェアであって、クライアント１からの読み出し要求及び書き込み要求に対してサービスを提供するソフトウェアである。１つの実施形態では、ファイルシステムマネージャ４１は、ログ構造化されたファイルシステムを管理し、データを長期ストレージに書き込む際に「固定の書き込み位置を持たない（write out-of-place）」（「write anywhere」とも呼ばれる）ポリシーを実施する。言い換えると、論理データブロックが変更されるときは常に、変更された当該論理データブロックは、その場所で上書きされるのではなく新たな物理ストレージの場所（物理ブロック）に書き込まれる。上述のように、この特徴によれば、あるブロックの一部が変更されたときは常に当該ブロック全体の消去及び再書き込みを行うという（従来のフラッシュメモリに関連付けられた）必要性が除去される。なお、ファイルシステムマネージャ４１に係るこれらの機能のうちの一部は、後述するように、ＮＶＳＳＭサブシステム２６へのアクセスを目的として、代わりにＮＶＳＳＭデータレイアウトエンジン１３又は４６に実行させることができる。
【００５１】
論理的にはファイルシステムマネージャ４１の「下」において、処理システム２にネットワーク３を介して（例えばクライアントと）通信させるために、オペレーティングシステム４０はネットワークスタック４２も含む。ネットワークスタック４２は、処理システムがネットワーク３を介して通信することを可能にするための、さまざまなネットワークプロトコルを実装する。
【００５２】
論理的にはファイルシステムマネージャ４１の「下」においてさらに、処理システム２にＮＶＳＳＭサブシステム２６と通信させるために、オペレーティングシステム４０は、ストレージアクセスレイヤ４４と、関連付けられたストレージドライバレイヤ４５とを含み、さらに、オペレーティングシステム４０は、論理的にはストレージアクセスレイヤ４４とストレージドライバレイヤ４５との間に設けられたＮＶＳＳＭデータレイアウトエンジン４６を含んでもよい。ストレージアクセスレイヤ４４は、ＲＡＩＤ−３、ＲＡＩＤ−４、ＲＡＩＤ−５、ＲＡＩＤ−６、又はＲＡＩＤ−ＤＰ等の高レベルストレージ冗長化アルゴリズムを実装する。ストレージドライバレイヤ４５は低レベルプロトコルを実装する。
【００５３】
ＮＶＳＳＭデータレイアウトエンジン４６は、ＲＤＭＡ動作を制御することができ、また、以下に詳述するように、ＮＶＳＳＭサブシステム２６内におけるデータ配置及びフラッシュウェアレベリングの決定を担当する。この機能は、ＮＶＳＳＭサブシステム２６上で実行されるＲＤＭＡ動作のスキャッタ・ギャザリストを生成することを含む。
【００５４】
ハイパーバイザ１１が、上述したような機能を有するそれ自体のデータレイアウトエンジン１３を含んでいることを仮定する。ただし、仮想マシン４がそれ自体のデータレイアウトエンジン４６を含んでいても、含んでいなくてもよい。１つの実施形態では、これらのＮＶＳＳＭデータレイアウトエンジン１３及び４６のうちのいずれか１つ又は複数の機能は、ＲＤＭＡコントローラ内において実装される。
【００５５】
特定の仮想マシン４がそれ自体のデータレイアウトエンジン４６を含む場合、そのデータレイアウトエンジンを用いて、ＮＶＳＳＭサブシステム２６上のＩ／Ｏ動作を実行する。そうでない場合、仮想マシンは、ハイパーバイザ１１のデータレイアウトエンジン１３を用いて、そのような動作を実行する。説明の簡単化のために、本明細書の残りの部分では、各仮想マシン４がそれ自体のデータレイアウトエンジン４６を含まないことを仮定する。しかしながら、本質的には、本明細書においてハイパーバイザ１１のデータレイアウトエンジン１３によって実装されるものとして説明する機能のすべては、仮想マシン４のうちの任意のものにおけるデータレイアウトエンジン４６によっても実装可能である。
【００５６】
ストレージドライバレイヤ４５はホストＲＤＭＡコントローラ２５を制御し、また、ストレージドライバレイヤ４５は、ＦＣＶＩ、ＩｎｆｉｎｉＢａｎｄ、又はｉＷａｒｐ等の、従来のＲＤＭＡをサポートするネットワークプロトコルを実装する。図４ではまた、オペレーティングシステム４０を介するデータフローの主経路４７Ａ及び４７Ｂも示す。
【００５７】
ＮＶＳＳＭサブシステム２６への読み出しアクセス及び書き込みアクセスの両方が、仮想マシン４のオペレーティングシステム４０によって制御される。本明細書で導入される技術では、ＮＶＳＳＭサブシステム２６との間で、例えばメモリ２２とＮＶＳＳＭサブシステム２６との間で効率的なデータ転送を可能にするために、従来のＲＤＭＡ技術が使用される。本明細書で説明するＲＤＭＡ動作は、概して、ＩｎｆｉｎｉＢａｎｄ（InfiniBand Trade Association （IBTA））又はＩＥＴＦ  ｉＷａｒｐ等の従来のＲＤＭＡ規格と矛盾しないものであると仮定することができる（例えば、非特許文献１〜８を参照）。
【００５８】
図２Ａ及び図３Ａに係る実施形態では、通常の動作の前に（例えば、処理システム２の初期化中に）、ハイパーバイザ１１は、ＮＶＳＳＭサブシステム２６におけるメモリ空間の少なくとも一部、例えばメモリ２２を、ホストＲＤＭＡコントローラ２５に登録する。このことは、ハイパーバイザ４１が標準的なメモリレジストレーションコールのうちの１つを用いてメモリ２２の一部又は全体をホストＲＤＭＡコントローラ２５に対して指定し、ホストＲＤＭＡコントローラ２５が、ホストＲＤＭＡコントローラ２５を将来に呼び出すときに使用されるＳＴａｇを返すことをともなう。
【００５９】
図２Ａ及び図３Ａに係る１つの実施形態では、ＮＶＳＳＭサブシステム２６はまた、仮想マシンをサポートするのに十分な粒度をそれぞれ有するＮＶＳＳＭメモリの各部分集合９−１〜９−Ｎ（図１Ｃ）に対するＲＤＭＡ  ＳＴａｇを、ホストＲＤＭＡコントローラ２５に提供し、次いでホストＲＤＭＡコントローラ２５は、それらをハイパーバイザ１１のＮＶＳＳＭデータレイアウトエンジン１３に提供する。仮想マシンが初期化されるとき、ハイパーバイザ１１は、その仮想マシンの対応するＳＴａｇを当該仮想マシンに提供する。そのＳＴａｇは、ＮＶＳＳＭメモリの対応する部分集合に対する排他的な書き込みアクセスを提供する。１つの実施形態では、ハイパーバイザは、初期化を行う仮想マシンに対して他の仮想マシンのＳＴａｇを提供し、このＳＴａｇにより、他の仮想マシンのメモリの部分集合に対する読み出しのみのアクセスを行うようにしてもよい。このことは、仮想マシン間の共用メモリをサポートするように実行可能である。
【００６０】
所定の粒度を有するＮＶＳＳＭメモリ２６の各部分集合について、ＮＶＳＳＭサブシステム２６はまた、当該所定の粒度を有するメモリ部分集合にアクセスするために使用されるＲＤＭＡ  ＳＴａｇ及びロックの場所を、ホストＲＤＭＡコントローラ２５に提供し、次いでホストＲＤＭＡコントローラ２５は、ＳＴａｇをハイパーバイザ１１のＮＶＳＳＭデータレイアウトエンジン１３に提供する。
【００６１】
複数の処理システム２がＮＶＳＳＭサブシステム２６を共用している場合、各処理システム２は、ＮＶＳＳＭサブシステム２６におけるメモリの異なる部分集合に対するアクセスを行うことができる場合がある。この場合、各処理システム２において提供されたＳＴａｇは、当該処理システム２によって使用されるＮＶＳＳＭメモリの適当な部分集合を識別する。１つの実施形態では、メモリのどの部分集合がどの処理システム２によって所有されるのかを定義するために、ＮＶＳＳＭサブシステム２６の外部のプロトコルが処理システム２間で使用される。このようなプロトコルについての詳細は、本明細書で導入される技術と密接に関係するものではなく、この目的のためには、さまざまな従来のネットワーク通信プロトコルのうちの任意のものを使用可能である。もう１つの実施形態では、メモリのどの部分集合がどの処理システム２によって所有されるのかを決定するために、ＤＩＭＭ２８のメモリの一部又はすべてが各処理システム２のＲＤＭＡ  ＳＴａｇにマッピングされ、そのメモリに記憶された共用データが使用される。さらに、もう１つの実施形態では、ＮＶＳＳＭメモリの一部又はすべては、読み出し及び書き込みデータアクセスのために複数の異なる処理システム２間で共用される、当該複数の異なる処理システム２に係る１つのＳＴａｇにマッピングされることが可能である。なお、処理システム２間でメモリアクセスを同期するためのアルゴリズムは、本明細書で導入される技術と密接に関係するものではない。
【００６２】
図２Ａ及び図３Ａの実施形態では、通常の動作の前に（例えば、処理システム２の初期化中に）、ハイパーバイザ１１は、処理システム２のメモリ空間の少なくとも一部、例えばメモリ２２を、ホストＲＤＭＡコントローラ２５に登録する。このことは、ハイパーバイザ１１が標準的なメモリレジストレーションコールのうちの１つを用いて、ホストＲＤＭＡコントローラ２５を呼び出すときにメモリ２２の一部又は全体をホストＲＤＭＡコントローラ２５に対して指定することをともなう。
【００６３】
図２Ｂ及び図３Ｂに係る１つの実施形態では、ＮＶＳＳＭサブシステム２６はまた、仮想マシンをサポートするのに十分な粒度をそれぞれ有するＮＶＳＳＭメモリの各部分集合９−１〜９−Ｎ（図１Ｃ）に対するＲＤＭＡ  ＳＴａｇを、ホストＲＤＭＡコントローラ２９に提供し、ホストＲＤＭＡコントローラ２９は、それらをハイパーバイザ１１のＮＶＳＳＭデータレイアウトエンジン１３に提供する。仮想マシンが初期化されるとき、ハイパーバイザ１１は、その仮想マシンの対応するＳＴａｇを当該仮想マシンに提供する。そのＳＴａｇは、ＮＶＳＳＭメモリの対応する部分集合に対する排他的な書き込みアクセスを提供する。１つの実施形態では、ハイパーバイザは、初期化を行う仮想マシンに対して他の仮想マシンのＳＴａｇを提供し、このＳＴａｇにより、他の仮想マシンのメモリの部分集合に対する読み出しのみのアクセスを行うようにしてもよい。このことは、仮想マシン間の共用メモリをサポートするように実行可能である。
【００６４】
図２Ｂ及び図３Ｂに係る実施形態では、通常の動作の前に（例えば、処理システム２の初期化中に）、ハイパーバイザ１１は、処理システム２のメモリ空間の少なくとも一部、例えばメモリ２２を、ホストＲＤＭＡコントローラ２９に登録する。このことは、ハイパーバイザ１１が標準的なメモリレジストレーションコールのうちの１つを用いて、ホストＲＤＭＡコントローラ２９を呼び出すときにメモリ２２の一部又は全体をホストＲＤＭＡコントローラ２９に対して指定することをともなう。
【００６５】
通常の動作時に、ＮＶＳＳＭデータレイアウトエンジン１３（図１Ｂ）は、ＮＶＳＳＭサブシステム２６との間でデータを転送するためのＲＤＭＡ読み出し及び書き込み動作を指定する、スキャッタ・ギャザリストを生成する。「スキャッタ・ギャザリスト」は、スキャッタリストとギャザリストとがペアになったものである。スキャッタリスト又はギャザリストは、ＮＶＳＳＭサブシステム２６に対するＳＴａｇと、読み出し又は書き込み要求全体における１つのセグメントの場所及び長さとをそれぞれ含む、複数のエントリ（「ベクトル」又は「ポインタ」とも呼ぶ）からなるリストである。１つのギャザリストは、ＲＤＭＡ転送のソースにおけるデータの取り出し元になる１つ又は複数のソースメモリセグメントを特定し、１つのスキャッタリストは、ＲＤＭＡ転送の宛先におけるデータの書き込み先になる１つ又は複数の宛先メモリセグメントを特定する。スキャッタリスト又はギャザリストにおける各エントリは、初期化中に生成されたＳＴａｇを含む。しかしながら、本明細書で導入される技術によれば、ＮＶＳＳＭサブシステム２６における不揮発性ソリッドステートメモリの複数の異なる部分集合における複数のセグメントを特定する、単一のＲＤＭＡ  ＳＴａｇを生成することができ、このとき、これらのセグメントのうちの少なくとも一部が異なるアクセス許可を有していてもよい（例えば、一部は読み書き可能であってもよく、又は、一部は読み出しのみ可能であってもよい）。さらに、処理システムのメモリを表す単一のＳＴａｇが、処理システムのバッファキャッシュ６の複数の異なる部分集合における複数のセグメントを特定することができ、このとき、これらのセグメントのうちの少なくとも一部が異なるアクセス許可を有していてもよい。処理システムのバッファキャッシュ６の複数の異なる部分集合における複数のセグメントが、互いに異なるアクセス許可を有していてもよい。
【００６６】
上述のように、ハイパーバイザ１１はＮＶＳＳＭデータレイアウトエンジン１３を含むが、これは、図５に示すように、処理システム２のＲＤＭＡコントローラ５３において実装することができる。ＲＤＭＡコントローラ５３は、例えば、図２ＡのホストＲＤＭＡコントローラ２５の代わりになることができる。ＮＶＳＳＭデータレイアウトエンジン１３は、クライアントによって開始された複数のデータアクセス要求５１−１〜５１−ｎ（読み出し要求又は書き込み要求）を、単一のＲＤＭＡデータアクセス５２（ＲＤＭＡ読み出し又は書き込み）に結合することができる。複数の要求５１−１〜５１−ｎは、２つ以上の異なる仮想マシン４をソースとする可能性がある。同様に、仮想マシン４内のＮＶＳＳＭデータレイアウトエンジン４６もまた、そのホストファイルシステムマネージャ４１（図４）から又は他の何らかのソースからの複数のデータアクセス要求を単一のＲＤＭＡアクセスに結合することができる。
【００６７】
単一のＲＤＭＡデータアクセス５２は、ＮＶＳＳＭデータレイアウトエンジン１３によって生成されたスキャッタ・ギャザリストを含み、ここで、データレイアウトエンジン１３は、ＮＶＳＳＭサブシステム２６のためのリストを生成し、仮想マシンのファイルシステムマネージャ４１は、処理システムの内部メモリ（例えば、バッファキャッシュ６）のためのリストを生成する。スキャッタリスト又はギャザリストは、ソース又は宛先（どちらでもよい）における複数のメモリセグメントを特定することができる。さらに、スキャッタリスト又はギャザリストは、メモリの複数の異なる部分集合におけるメモリセグメントを特定することができる。
【００６８】
図２Ｂ及び図３Ｂに係る実施形態では、単一のＲＤＭＡ読み出し又は書き込みが（図５に示す）ＮＶＳＳＭサブシステム２６に送られ、ここで、これは、ストレージＲＤＭＡコントローラ２９によって複数のデータアクセス動作（読み出し又は書き込み）に分解され、次いで、これらは、ＮＶＳＳＭサブシステム２６におけるストレージＲＤＭＡコントローラ２９によって並列又は逐次に実行される。図２Ａ及び図３Ａに係る実施形態では、単一のＲＤＭＡ読み出し又は書き込みは、処理システム２内でホストＲＤＭＡコントローラ２５によって複数のデータアクセス動作（読み出し又は書き込み）に分解され、次いで、これらの複数の動作は、ホストＲＤＭＡコントローラ２５によって、ＮＶＳＳＭサブシステム２６上で並列又は逐次に実行される。
【００６９】
処理システム２は、ＮＶＳＳＭサブシステム２６に対する複数の関連したＲＤＭＡ読み出し又は書き込みからなるシーケンスを開始することができる（ここで、シーケンス中のどの個別のＲＤＭＡ読み出し又は書き込みも、上述したように、複合された１つのＲＤＭＡ動作であってもよい）。従って、処理システム２は、クライアントによって開始された１つ又は複数の読み出しもしくは書き込み、又は他の任意のデータもしくはメタデータ動作からなる任意の組み合わせを、１つ又は複数のＲＤＭＡ読み出し又は書き込みからなる任意の組み合わせにそれぞれ変換することができ、ここで、これらのＲＤＭＡ読み出し又は書き込みのうちのいずれも、それぞれ複合された読み出し又は書き込みであってもよい。
【００７０】
ＮＶＳＳＭサブシステム２６に対する複数の関連したＲＤＭＡ読み出しもしくは書き込み又は他の任意のデータもしくはメタデータ動作からなるシーケンスを処理システム２が開始する場合、シーケンス中の個別のＲＤＭＡ動作のうちの最後のものを除くすべてについて完了状態を抑圧することが望ましい可能性がある。言い換えると、特定のＲＤＭＡ読み出し又は書き込みに成功した場合、それがシーケンス中の最後の動作でない限り、ＮＶＳＳＭサブシステム２６によって「完了」状態が生成されることはない。このような抑圧は従来のＲＤＭＡ技術を用いることによって実行可能である。処理システム２において「完了」状態が受信されるということは、書き込まれたデータがＮＶＳＳＭサブシステムのメモリ内にあるか、又はＮＶＳＳＭサブシステムから読み出されたデータが処理システムのメモリ、例えばバッファキャッシュ６内にあり、それが有効であることを意味する。これとは対照的に、「完了失敗」状態は、ＮＶＳＳＭサブシステム２６において動作を実行する際に問題が存在したことを示し、ＲＤＭＡ書き込みの場合では、ＲＤＭＡ書き込み動作のためのＮＶＳＳＭの場所におけるデータの状態が未定義である一方、ＮＶＳＳＭへのデータの書き込みを行う処理システムにおけるデータの状態が元のままであることを示す。読み出しに係る失敗状態は、ＮＶＳＳＭにおいてデータが元のままであるが、処理システムのメモリの状態が未定義であることを意味する。また、失敗した場合には、ＲＤＭＡ動作において使用されたＳＴａｇは無効になるが、しかしながら、処理システム２とＮＶＳＳＭ２６との間の接続は元のままであり、例えば新たなＳＴａｇを生成するために使用可能である。
【００７１】
所定の実施形態では、ＲＤＭＡ動作の完了を示すために、また、特定のプロセッサコア、例えばハイパーバイザ１１を実行中のコア又は特定の仮想マシンを実行中のコアに割り込み処理を指示するために、ＭＳＩ−Ｘ（message signaled interrupts (MSI) extension）が使用される。さらに、ハイパーバイザ１１は、Ｉ／Ｏ動作を発行したコアにＭＳＩ−Ｘの割り込み処理を指示することにより、効率を向上させ、ユーザの遅延を縮小し、ハイパーバイザのコアに対するＣＰＵ負荷を低下させることができる。
【００７２】
ＮＶＳＳＭサブシステム２６において実行される読み出し又は書き込みは、ＮＶＳＳＭサブシステム２６における複数の異なるメモリ装置に対して行われることも可能である。例えば、所定の実施形態では、ユーザデータ及び関連付けられた回復メタデータ（例えば、ＲＡＩＤパリティデータ及びチェックサム）は、ＮＶＳＳＭサブシステム２６内の生のフラッシュメモリに記憶される一方、関連付けられたファイルシステムメタデータは、ＮＶＳＳＭサブシステム２６内の不揮発性ＤＲＡＭに記憶される。このアプローチによれば、フラッシュブロックを消去するコストを負うことなしに、ファイルシステムメタデータの更新を行うことができる。
【００７３】
図６〜図９にこのアプローチを示す。図６は、仮想マシン４によって単一の書き込み６１に基づいてギャザリスト及びスキャッタリストをどのように生成することができるのかを示す。書き込み６１は、１つ又は複数のヘッダ６２と、書き込みデータ６３（書き込まれるデータ）とを含む。クライアントによって開始された書き込み６１は、任意の従来のフォーマットであってもよい。
【００７４】
処理システム２におけるファイルシステムマネージャ４１は、最初に、書き込みデータ６３をソースメモリ６０に記憶し、次いでその後、書き込みデータ６３をＮＶＳＳＭサブシステム２６にコピーさせる。ソースメモリ６０は、例えばメモリ２２（図２Ａ及び図２Ｂ）であってもよい。
【００７５】
従って、ファイルシステムマネージャ４１は、ＮＶＳＳＭデータレイアウトマネージャ４６にＲＤＭＡ書き込みを開始させ、データ６３を処理システムのバッファキャッシュ６からＮＶＳＳＭサブシステム２６に書き込む。ＲＤＭＡ書き込みを開始するために、ＮＶＳＳＭデータレイアウトエンジン１３は、書き込みデータ６３が存在する場所であって、かつ、対応するＲＡＩＤメタデータ及びファイルメタデータをファイルシステムマネージャ４１が生成した場所である、ソースメモリ６０におけるバッファに対するソースポインタを含むギャザリスト６５を生成し、ＮＶＳＳＭデータレイアウトエンジン１３は、ＮＶＳＳＭ２６においてデータ６３と対応するＲＡＩＤメタデータ及びファイルメタデータとが配置されるべき場所への宛先ポインタを含むスキャッタリスト６４を生成する。ＲＤＭＡ書き込みの場合、ギャザリスト６５は、転送すべきデータを取り出してくる場所であるソースメモリ６０内の記憶場所を特定する一方、スキャッタリスト６４は、データを書き込むべき場所であるＮＶＳＳＭサブシステム２６における記憶場所を特定する。宛先となる複数の記憶場所を特定することにより、スキャッタリスト６４は、ＮＶＳＳＭサブシステム２６において実行される複数の個別の書き込みアクセスを特定する。
【００７６】
スキャッタリスト６４及びギャザリスト６５はまた、ＲＡＩＤメタデータ、パリティ、チェックサムなどの、仮想マシン４によって生成された回復メタデータに対するポインタを含むことができる。ギャザリスト６５は、ソースメモリ６０においてこのようなメタデータを取り出してくる場所を特定するソースポインタを含み、スキャッタリスト６４は、ＮＶＳＳＭサブシステム２６においてこのようなメタデータを書き込む場所を特定する宛先ポインタを含む。同様に、スキャッタリスト６４及びギャザリスト６５はさらに、ＮＶＳＳＭにおいてファイルデータ及び回復メタデータが書き込まれる場所であるＮＶＳＳＭブロックを特定する、基本的なファイルシステムメタデータ６７に対するポインタを含む（これにより、ファイルシステムメタデータを読むことによりファイルデータ及び回復メタデータを見つけることができる）。図６に示すように、スキャッタリスト６４は、記憶すべき書き込みデータ及び回復メタデータをフラッシュメモリ２７に送り、記憶すべきファイルシステムメタデータをＮＶＳＳＭサブシステム２６における不揮発性ＤＲＡＭ２８に送るように生成可能である。上述のように、メタデータのストレージを分散して行うことによれば、フラッシュブロックの消去を必要とすることなく所定のメタデータ更新を行うことを可能にし、このことは、頻繁に更新されるメタデータの場合に特に有益である。なお、更新される頻度が低いファイルシステムメタデータ等である一部のファイルシステムメタデータがフラッシュメモリ２７に記憶されてもよい。さらに、書き込みデータ及び回復メタデータは、複数の異なるフラッシュ装置に記憶されてもよく、又は、ＮＶＳＳＭサブシステム２６におけるフラッシュメモリ２７の複数の異なる部分集合に記憶されてもよい。
【００７７】
図７は、クライアントによって開始された複数の書き込みをどのように単一のＲＤＭＡ書き込みに結合できるのかを示す。図６について議論したものと同様の方法で、クライアントによって開始された複数の書き込み７１−１〜７１−ｎを単一のギャザリスト及び対応する単一のスキャッタリスト７４として表し、単一のＲＤＭＡ書き込みを形成することができる。書き込みデータ７３及びメタデータは、図６に関して上述したものと同様に分散されることが可能である。
【００７８】
公知のように、フラッシュメモリは、消去ブロックに関して構成される。フラッシュメモリへの書き込みが行われるときはいつでも、データをフラッシュに書き込む前に、書き込みの対象である１つ又は複数の消去ブロックの全体が最初に消去されなければならない。この消去−書き込みサイクルはフラッシュメモリ上で摩耗を生じさせ、このようなサイクルを何度も繰り返した後、フラッシュブロックに障害が発生する。従って、このような消去−書き込みサイクルの回数を減少させ、よってフラッシュメモリ上の摩耗を低減するために、ＲＤＭＡコントローラ１２は、対象とする各消去ブロックを単一のＲＤＭＡ書き込みで実質的に満たすように、複数の書き込み要求を蓄積してそれらを単一のＲＤＭＡ書き込みに結合することができる。
【００７９】
所定の実施形態では、ＲＤＭＡコントローラ１２は、各ＲＤＭＡ書き込みのデータをＮＶＳＳＭサブシステム２６内の複数のメモリ装置にわたって分散する、ＲＡＩＤ冗長方式を実装する。特定の形式のＲＡＩＤと、これに関してデータが分散される方法とは、ハイパーバイザ１１により適当なＳＴａｇを生成することで決定される。ＲＤＭＡコントローラ１２は、複数のメモリ装置にわたって広がる単一のアドレス空間を仮想マシン４に呈示することができ、これにより、単一のＲＤＭＡ動作で複数の装置にアクセスしながら、単一の完了状態のみを有することができる。従って、ＲＡＩＤ冗長方式は、複数の仮想マシン４のそれぞれに対してトランスペアレントである。フラッシュバンクにおける複数のメモリ装置のうちの１つは、例えば、チェックサム、パリティ、及び／又は、巡回冗長検査（ＣＲＣ）の情報を記憶するために使用可能である。この技術はまた、上述したようなＮＶＳＳＭサブシステム２６を複数個提供することにより容易に拡張可能であり、この場合、単一の書き込みからのデータは、このような複数のＮＶＳＳＭサブシステム２６にわたって同様に分散されることが可能である。
【００８０】
図８は、ＲＤＭＡ読み出しをどのように生成できるのかを示す。なお、１つのＲＤＭＡ読み出しは、上述のように複数の読み出し要求を反映することができる。１つの実施形態では、読み出し要求８１は、要求されたデータのヘッダ８２、開始オフセット８８、及び長さ８９を含む、クライアントによって開始された読み出し要求８１は、任意の従来のフォーマットであってもよい。
【００８１】
要求されたデータがＮＶＳＳＭサブシステム２６内にある場合、まずファイルメタデータを取り出すために、ＮＶＳＳＭデータレイアウトマネージャ４６は、ＮＶＳＳＭサブシステム２６のためのギャザリスト８５を生成し、ファイルシステムマネージャ４１は、バッファキャッシュ６のための対応するスキャッタリスト８４を生成する。１つの実施形態では、ファイルメタデータはＮＶＳＳＭのＤＲＡＭ２８から取り出される。１つのＲＤＭＡ読み出しでは、ファイルメタデータは、複数のファイルシステムに関して、さらに、１つのファイルシステムにおける複数のファイル及びディレクトリに関して取り出されることが可能である。取り出されたファイルメタデータに基づいて、次いで、第２のＲＤＭＡ読み出しを取り出すことができ、このとき、ファイルシステムマネージャ４１はスキャッタリストを特定し、ＮＶＳＳＭデータレイアウトマネージャ４６は要求された読み出しデータのためのギャザリストを特定する。ＲＤＭＡ読み出しの場合、ギャザリスト８５は、転送すべきデータを取り出してくる場所であるＮＶＳＳＭサブシステム２６における記憶場所を特定する一方、スキャッタリスト８４は、データを書き込む場所である宛先メモリ８０における記憶場所を特定する。宛先メモリ８０は、例えばメモリ２２であってもよい。ソースとなる複数の記憶場所を特定することにより、ギャザリスト８５は、ＮＶＳＳＭサブシステム２６において実行すべき複数の個別の読み出しアクセスを特定することができる。
【００８２】
ギャザリスト８５はまた、ＮＶＳＳＭサブシステム２９において第１のＲＤＭＡ読み出し及び回復（例えば、ＲＡＩＤメタデータ、チェックサム、など）のためのファイルシステムメタデータと第２のＲＤＭＡ読み出しのためのファイルシステムメタデータとを読み出してくる場所である記憶場所を特定する。先に示したように、これらのさまざまな異なるタイプのデータ及びメタデータは、異なるタイプのメモリ（例えば、フラッシュ２７及び不揮発性ＤＲＡＭ２８）を含む、ＮＶＳＳＭサブシステム２６における異なる場所から取り出されてくることが可能である。
【００８３】
図９は、クライアントによって開始された複数の読み出しをどのように単一のＲＤＭＡ読み出しに結合できるのかを示す。図８について議論したものと同様の方法で、クライアントによって開始された複数の読み出し要求９１−１〜９１−ｎを単一のギャザリスト９５及び対応する単一のスキャッタリスト９４として表し、データ及びＲＡＩＤメタデータのための単一のＲＤＭＡ読み出しと、ファイルシステムメタデータのためのもう１つの単一のＲＤＭＡ読み出しとを形成することができる。メタデータ及び読み出しデータは、上述のように、ＮＶＳＳＭサブシステム２６における複数の異なる場所及び／又はメモリ装置から集められてもよい。
【００８４】
なお、ＲＤＭＡセマンティックを用いることの１つの利点は、データブロックの更新に関してであっても潜在的な性能向上を見込めるということにある。例えば、図２Ｂを参照すると、更新すべきデータブロックをメモリ２２に読み込み、ファイルシステムマネージャ４１によりＲＤＭＡ書き込みデータに基づいて更新し、次いで、ＮＶＳＳＭサブシステム２６に書き戻すことができる。１つの実施形態では、データ及びメタデータは、それらを取り出したＮＶＳＳＭブロックに書き戻される。もう１つの実施形態では、データ及びメタデータは、ＮＶＳＳＭサブシステム２６における異なるブロックに書き込まれ、古いメタデータの場所を指し示すファイルメタデータが更新される。従って、変更されたデータのみが処理システム２内のバス構造を横切る必要がある一方、大多数のフラッシュブロックデータはそうする必要がない。
【００８５】
図１０Ａ及び図１０Ｂは、処理システム２において実行可能な書き込み処理の例を示す。図１０Ａは全体処理を示す一方、図１０Ｂはその処理の一部をより詳細に示す。まず図１０Ａを参照すると、処理システム２は、最初に１００１において、１つ又は複数の書き込み要求を生成する。この１つ又は複数の書き込み要求は、例えば、処理システム２内で実行中のアプリケーションによって、又は外部アプリケーションによって生成されてもよい。上述のように、処理システム２内において、複数の書き込み要求を単一の（複合された）ＲＤＭＡ書き込みに結合することができる。
【００８６】
次に、１００２において、仮想マシン（「ＶＭ」）は、ＮＶＳＳＭサブシステム２６におけるメモリの対象部分に対する書き込みロック（書き込みの所有権）を有しているか否かを決定する。ＶＭがその部分に対する書き込みロックを有している場合、処理は続いて１００３に進む。そうでない場合、処理は続いて１００７に進み、これについては後述する。
【００８７】
次いで、１００３において、処理システム２におけるファイルシステムマネージャ４１（図４）は、書き込みデータの対象宛先（例えば、データを書き込む１つ又は複数のボリューム及び１つ又は複数のディレクトリ）に関するメタデータを読み出す。次いで、１００４において、ファイルシステムマネージャ４１は、要求された１つ又は複数の書き込み動作を反映させるように、メインメモリ（例えばメモリ２２）内のメタデータの生成及び／又は更新を行う。１００５において、オペレーティングシステム４０は、データ及び関連付けられたメタデータをＮＶＳＳＭサブシステム２６に書き込ませる。１００６において、処理は、書き込みする仮想マシンから書き込みロックを解放する。
【００８８】
１００２において、書き込みが、複数の仮想マシン４間で共用されるメモリ（すなわちＮＶＳＳＭサブシステム２６）の一部に対するものであり、かつ、書き込みする仮想マシンがメモリのその部分に対する書き込みロックを持たない場合、次いで１００７において、処理は、仮想マシンがメモリのその部分に対する書き込みロックを利用可能になるまで待機し、上述の１００３に進む。
【００８９】
書き込みロックは、ＮＶＳＳＭサブシステム２６におけるメモリに対するＲＤＭＡアトミック動作を用いて実装可能である。共用メモリアクセスのセマンティック及び制御は、ハイパーバイザの共用メモリのセマンティックに従うが、これは仮想マシンのセマンティックと同じであってもよい。従って、仮想マシンが書き込みロックを取得し、また、解放するとき、それは、ハイパーバイザにより標準的なオペレーティングシステムコールを用いて定義されることが可能である。
【００９０】
図１０Ｂは、動作１００４、すなわち、ＲＤＭＡ書き込みを実行してデータ及びメタデータを処理システム２におけるメモリからＮＶＳＳＭサブシステム２６におけるメモリに転送する処理の例をより詳細に示す。まず、１０２１において、ファイルシステムマネージャ４１は、転送すべきデータ及びメタデータが存在する場所であるホストメモリ内（例えばメモリ２２内）の場所を特定するギャザリストを作成する。１０２２において、ＮＶＳＳＭデータレイアウトエンジン１３（図１Ｂ）は、データ及びメタデータを書き込む場所であるＮＶＳＳＭサブシステム２６内の場所のためのスキャッタリストを作成する。１０２３において、オペレーティングシステム４０は、ＲＤＭＡ書き込み動作をスキャッタ・ギャザリストとともにＲＤＭＡコントローラ（図２Ａ及び図３Ａに係る実施形態では、ホストＲＤＭＡコントローラ２５；図２Ｂ及び図３Ｂに係る実施形態では、ストレージＲＤＭＡコントローラ２９）に送信する。１０２４において、ＲＤＭＡコントローラは、ギャザリストによって特定されたメモリ２２内のバッファから、スキャッタリストによって特定されたＮＶＳＳＭメモリ内のバッファに、データ及びメタデータを移動させる。この動作は、上述のようにＮＶＳＳＭサブシステム２６において複数の個別の書き込みとして実行される、複合されたＲＤＭＡ書き込みであってもよい。１０２５において、ＲＤＭＡコントローラは、（複合された１つのＲＤＭＡ書き込みである場合を想定するとき）シーケンス中の最後の書き込み動作について、「完了」状態メッセージをオペレーティングシステム４０に送信し、処理を完了する。もう１つの実施形態では、処理システム２により、複数のＲＤＭＡ書き込み動作１００４からなるシーケンスが生成される。このような実施形態では、シーケンス中の先行する書き込み動作のすべてに成功した場合には、シーケンス中の最後のＲＤＭＡ書き込み動作についてのみ完了状態が生成される。
【００９１】
図１１Ａ及び図１１Ｂは、処理システム２において実行可能な読み出し処理の例を示す。図１１Ａは全体処理を示す一方、図１１Ｂはその処理の一部をより詳細に示す。まず図１１Ａを参照すると、最初に１１０１において、処理システム２は、１つ又は複数の読み出し要求の生成又は受信を行う。この１つ又は複数の読み出し要求は、例えば、処理システム２内で実行中のアプリケーションによって、又は外部アプリケーションによって生成されてもよい。上述のように、複数の読み出し要求を単一の（複合された）ＲＤＭＡ読み出しに結合することが可能である。１１０２において、処理システム２におけるオペレーティングシステム４０は、ＮＶＳＳＭサブシステム２６から、要求されたデータに関するファイルシステムメタデータを取り出す。この動作は、上述のように、複合された１つのＲＤＭＡ読み出しを含んでもよい。次いで、１１０３において、このファイルシステムメタデータは、ＮＶＳＳＭサブシステムにおける要求されたデータの場所を決定するために使用される。１１０４において、オペレーティングシステム４０は、ＮＶＳＳＭサブシステムにおけるその場所から、要求されたデータを取り出す。この動作もまた、複合された１つのＲＤＭＡ読み出しを含んでもよい。１１０５において、オペレーティングシステム４０は、取り出されたデータを要求者に送る。
【００９２】
図１１Ｂは、動作１１０２又は１１０４、すなわち、ＲＤＭＡ読み出しを実行してデータ又はメタデータをＮＶＳＳＭサブシステム２６におけるメモリから処理システム２におけるメモリに転送する処理の例をより詳細に示す。読み出しの場合、図１１Ａに関して上述したように、処理システム２は、最初に対象データのメタデータを読み出し、次いでメタデータに基づいて対象データを読み出す。従って、処理全体では実際に、２回の処理、すなわち最初はメタデータのための処理、次いで実際の対象データのための処理が行われる。説明の簡単化のために、以下の説明では「データ」の場合のみについて言及するが、処理はメタデータの場合にも本質的には同様の方法で適用可能であるということが理解されるであろう。
【００９３】
まず、１１２１において、ＮＶＳＳＭデータレイアウトエンジン１３は、読み出すべきデータが存在する場所であるＮＶＳＳＭサブシステム２６内の場所を特定するギャザリストを作成する。１１２２において、ファイルシステムマネージャ４１は、読み出しデータを書き込む場所であるホストメモリ（例えばメモリ２２）内の場所を特定するスキャッタリストを作成する。１１２３において、オペレーティングシステム４０は、ＲＤＭＡ読み出し動作をスキャッタ・ギャザリストとともにＲＤＭＡコントローラ（図２Ａ及び図３Ａに係る実施形態では、ホストＲＤＭＡコントローラ２５；図２Ｂ及び図３Ｂに係る実施形態では、ストレージＲＤＭＡコントローラ２９）に送信する。１１２４において、ＲＤＭＡコントローラは、ギャザリストに従って特定されるＮＶＳＳＭサブシステム２６におけるフラッシュメモリ及び不揮発性ＤＲＡＭ２８から、処理システムのホストメモリのスキャッタリストのバッファに、データを移動させる。この動作は、上述したように、ＮＶＳＳＭサブシステム２６において複数の個別の読み出しとして実行される、複合された１つのＲＤＭＡ読み出しであってもよい。１１２５において、ＲＤＭＡコントローラは、（複合された１つのＲＤＭＡ読み出しである場合を想定するとき）シーケンス中の最後の読み出しについて「完了」状態を示す信号をオペレーティングシステム４０に送る。もう１つの実施形態では、処理システム２により、複数のＲＤＭＡ読み出し動作１１０２又は１１０４からなるシーケンスが生成される。このような実施形態では、シーケンス中の先行する読み出し動作のすべてに成功した場合には、シーケンス中の最後のＲＤＭＡ読み出し動作についてのみ完了状態が生成される。次いで、１１２６において、オペレーティングシステム４０は、要求されたデータを要求者に送信し、処理を完了する。
【００９４】
以上に導入した技術は優位点となりうる多数の特徴を有するということが認識されるであろう。その１つは、仮想マシンの障害を隔離するためにＲＤＭＡセマンティックを使用することにより、性能を向上させ、また、障害の隔離をサポートするためのハイパーバイザの複雑さを低下させることにある。これはまた、仮想マシンがハイパーバイザを完全にバイパスすることをサポートし、これにより、さらに、性能を向上させ、また、ハイパーバイザを実行する「ドメイン０」のコアにかかるオーバーヘッドを低下させる。
【００９５】
優位点となりうるもう１つの特徴は、複数のＩ／Ｏ動作を単一のＲＤＭＡ動作に結合することにより達成される性能の向上にある。このことは、ＲＤＭＡプリミティブを用いた複数のデータ冗長化技術をサポートすることによるデータ回復のサポートを含む。
【００９６】
優位点となりうるさらにもう１つの特徴は、ＲＤＭＡアトミック動作を用いることによる仮想マシンのデータ共用の改善されたサポートにある。優位点となりうるさらにもう１つの特徴は、単一の仮想マシンのためのファイルシステムメタデータと、共用された仮想マシンのデータのためのファイルシステムメタデータとをサポートする、フラッシュメモリ（又は他のＮＶＳＳＭメモリ）の拡張にある。優位点となりうるもう１つの特徴は、ＲＤＭＡセマンティックを拡張することにより、複数の仮想マシンをサポートする１つのノードの背後における複数のフラッシュ装置をサポートすることにある。さらに、上記で導入した技術によれば、複数の仮想マシンの下の複数のＮＶＳＳＭ装置において、共用された独立の複数のＮＶＳＳＭキャッシュと、永続的ストレージとを可能にする。
【００９７】
以上により、複数の仮想マシンに不揮発性ソリッドステートメモリへの共用アクセスを提供するシステム及び方法を説明した。
【００９８】
以上に導入した方法及び処理は、can be implemented in 特定用途のハードウェア回路で、プログラム可能な回路に関連したソフトウェア及び／又はファームウェアで、又は、これらの形態の組み合わせで実装可能である。特定用途のハードウェア回路は、例えば、１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、ＦＰＧＡ（field programmable gate array）、などであってもよい。
【００９９】
本明細書で導入される技術を実装するソフトウェア又はファームウェアは、機械可読媒体上に格納されてもよく、また、１つ又は複数の汎用又は特定用途のプログラマブルマイクロプロセッサによって実行されてもよい。本明細書で使用する「機械可読媒体」という用語は、マシン（例えば、コンピュータ、ネットワーク装置、個人情報端末（ＰＤＡ）、製造ツール、１つ又は複数のプロセッサからなる集合を備えた任意の装置、など）によってアクセス可能な形態で情報を提供する（すなわち、記憶及び／又は送信を行う）任意のメカニズムを含む。例えば、マシンによりアクセス可能な媒体は、記録可能／記録不可の媒体（例えば、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリ装置、など）、などを含む。
【０１００】
本発明を特定の例示的な実施形態を参照して説明したが、本発明は説明した実施形態に限定されるものではなく、請求項の精神及び範囲内で変更及び改変して実施可能であることが認識されるであろう。従って、明細書及び図面は、限定ではなく、説明とみなされるべきである。
【図１Ａ】
2012503835.tif 000003
【図１Ｂ】
2012503835.tif 000004
【図１Ｃ】
2012503835.tif 000005
【図２Ａ】
2012503835.tif 000006
【図２Ｂ】
2012503835.tif 000007
【図３Ａ】
2012503835.tif 000008
【図３Ｂ】
2012503835.tif 000009
【図４】
2012503835.tif 000010
【図５】
2012503835.tif 000011
【図６】
2012503835.tif 000012
【図７】
2012503835.tif 000013
【図８】
2012503835.tif 000014
【図９】
2012503835.tif 000015
【図１０Ａ】
2012503835.tif 000016
【図１０Ｂ】
2012503835.tif 000017
【図１１Ａ】
2012503835.tif 000018
【図１１Ｂ】
2012503835.tif 000019
【国際調査報告】
2012503835.tif 000020
2012503835.tif 000021