(57)【特許請求の範囲】
【請求項１】
第１のノードを含み、前記第１のノードは、
データを格納するように構成された第１の不揮発性メモリ（ＮＶＭ）と、
ＮＶＭインターフェースを介して前記第１のＮＶＭに接続された第１のメモリ・コントローラと、
前記第１のメモリ・コントローラに接続され、ネットワークを通じて通信するように構成された第１のネットワーク・インターフェース・カード（ＮＩＣ）と、
第１のプロセッサと、
前記第１のプロセッサと統合され及び／又は前記第１のプロセッサにより実行可能な第１の論理と、を含み、前記第１の論理は、
ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを生成し、
所定の間隔で前記ＮＶＭクラスタのクラスタ・パラメータを前記ＮＶＭクラスタ内の全ての他のノードにマルチキャストし、
第２のノードから、前記第１のノード上の共有ＮＶＭの詳細に対する要求を受け取り、
前記第２のノードから、前記第２のノード上の各共有ＮＶＭ内のファイル位置を含む、前記第２のノード上の前記共有ＮＶＭの詳細を受け取り、
前記第１のノード上の各共有ＮＶＭ内のファイル位置を含む、前記第１のノード上の前記共有ＮＶＭの前記詳細を前記第２のノードに送り、
前記第２のノード上の前記共有ＮＶＭの前記詳細に基づいて、前記第２のノード上前記共有ＮＶＭの送信及び完了キューを前記第１のメモリ・コントローラにマッピングする、ように構成され、
前記送信キューは、先出し先入れ（ＦＩＦＯ）スキームに従って、前記第２のノード上の前記共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、前記完了キューは、前記送信キューを通じて処理された後、完了コマンドを格納するように構成される、システム。
【請求項２】
前記第２のノードをさらに含み、前記第２のノードは、
データを格納するように構成された第２のＮＶＭと、
ＮＶＭインターフェースを介して前記第２のＮＶＭに接続された第２のメモリ・コントローラと、
前記第２のメモリ・コントローラに接続され、前記ネットワークを通じて通信するように構成された第２のＮＩＣと、
第２のプロセッサと、
前記第２のプロセッサと統合され及び／又は前記第２のプロセッサにより実行可能な第２の論理と、を含み、前記第２の論理は、
ローカル・クラスタ構成ファイルからローカル・クラスタ・パラメータを受け取り、
前記ＮＶＭクラスタの前記クラスタ・パラメータを含むマルチキャスト・メッセージを受け取り、
前記第１のノードからの前記マルチキャスト・メッセージの受信に応答して、前記第１のノード上の前記共有ＮＶＭの詳細に対する前記要求を前記第１のノードに送り、
前記第２のノード上の前記共有ＮＶＭの前記送信及び完了キューを初期化し、前記第２のノード上の前記共有ＮＶＭの前記送信及び完了キューを前記ＮＶＭクラスタ内の前記他のノードにマッピングし、前記第２のノード上の前記共有ＮＶＭの詳細を前記第１のノードに送り、
前記第１のノード上の前記共有ＮＶＭの前記詳細に基づいて、前記第１のノード上の前記共有ＮＶＭを前記第２のメモリ・コントローラにマッピングする、
ように構成される、請求項１に記載のシステム。
【請求項３】
前記クラスタ・パラメータは、前記第１のノード上の前記共有ＮＶＭに格納されたデータについてのアクセス・ポリシーを含む、請求項１に記載のシステム。
【請求項４】
前記第１の論理は、前記所定の間隔で前記クラスタ・パラメータをマルチキャストする前に、前記第２のノードから、前記クラスタ・パラメータに対する要求を受け取るようにさらに構成される、請求項１に記載のシステム。
【請求項５】
リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）を用いて、前記第２のノード上の前記共有ＮＶＭの前記送信及び完了キューを前記第１のメモリ・コントローラにマッピングする、請求項１に記載のシステム。
【請求項６】
前記第２のノード上の前記共有ＮＶＭの前記詳細は、前記ＮＶＭクラスタ内のいずれかの他のノードにより前記第２のノード上の前記共有ＮＶＭにアクセスするために用いられる、前記第２のノードのＲＤＭＡオーバー・コンバージド・イーサネット（ＲｏＣＥ）ネットワーク・インターフェース・カード（ＮＩＣ）アドレスを含む、請求項５に記載のシステム。
【請求項７】
コヒーレント・アクセラレータ・プロセッサ・インターフェース（ＣＡＰＩ）及びＮＶＭエクスプレス（ＮＶＭｅ）の少なくとも１つを介して、前記第１のノード上の前記共有ＮＶＭ及び前記第２のノード上の前記共有ＮＶＭは、前記ＮＶＭクラスタ内の他のノードにアクセス可能である、請求項１に記載のシステム。
【請求項８】
前記第１のノード上の前記共有ＮＶＭ及び前記第２のノード上の前記共有ＮＶＭは、ソリッド・ステート・ドライブ、フラッシュ・メモリ、読み出し専用メモリ（ＲＯＭ）、強誘電体ランダム・アクセス・メモリ（ＦＲＡＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、及び不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）のうちの少なくとも１つを含む、請求項１に記載のシステム。
【請求項９】
前記第１の論理は、
ＮＶＭエクスプレス（ＭＶＭｅ）オーバー・イーサネット及びコヒーレント・アクセラレータ・プロセッサ・インターフェース（ＣＡＰＩ）オーバー・イーサネットの少なくとも１つを用いて、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）を介して、データを前記第１のノード上の前記共有ＮＶＭから前記第２のノードに送り、
ＲＤＭＡオーバー・コンバージド・イーサネット（ＲｏＣＥ）を介して、前記第２のノード上の前記共有ＮＶＭの前記送信及び完了キューの操作であって、データにアクセスすること、命令にアクセスすること、データをキューに入れること、及び命令をキューに入れることの少なくとも１つを含む操作を実行する、ようにさらに構成される、請求項１に記載のシステム。
【請求項１０】
ネットワーク・ストレージ・アプライアンスをさらに含み、前記ネットワーク・ストレージ・アプライアンスは、
データを格納するように構成された複数のＮＶＭストレージ・デバイスと、
ＮＶＭインターフェースを介して、前記複数のＮＶＭストレージ・デバイスに接続された第３のメモリ・コントローラと、
前記第３のメモリ・コントローラに接続され、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）オーバー・コンバージド・イーサネット（ＲｏＣＥ）を介して、ネットワークを通じて前記ＮＶＭクラスタ内の他のノードと通信するように構成された第３のネットワーク・インターフェース・カード（ＮＩＣ）と、
第３のプロセッサと、
前記第３のプロセッサと統合され及び／又は前記第３のプロセッサにより実行可能な第３の論理と、を含み、前記第３の論理は、
ローカル・クラスタ構成ファイルからローカル・クラスタ・パラメータを受け取り、
前記第１のノードから、前記ＮＶＭクラスタの前記クラスタ・パラメータを含むマルチキャスト・メッセージを受け取り、
前記第１のノードからの前記マルチキャスト・メッセージの受信に応答して、前記第１のノード上の前記共有ＮＶＭの詳細に対する要求を前記第１のノードに送り、
前記ネットワーク・ストレージ・アプライアンス上の前記共有ＮＶＭの送信及び完了キューを初期化し、前記ネットワーク・ストレージ・アプライアンスの前記共有ＮＶＭの前記送信及び完了キューを前記ＮＶＭクラスタ内の前記他のノードにマッピングし、前記ネットワーク・ストレージ・アプライアンス上の前記共有ＮＶＭの詳細を前記第１のノードに送り、
前記第１のノード上の前記共有ＮＶＭの前記詳細を受け取り、
前記第１のノード上の前記共有ＮＶＭの前記詳細に基づいて、前記第１のノード上の前記共有ＮＶＭを前記第３のメモリ・コントローラにマッピングする、
ように構成される、請求項１に記載のシステム。
【請求項１１】
第１の不揮発性メモリ（ＮＶＭ）と第１のプロセッサとを内部に有する第１のノードが、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを活性化することと、
前記第１のノードが、所定の間隔で前記ＮＶＭクラスタのクラスタ・パラメータを前記ＮＶＭクラスタ内の全ての他のノードにマルチキャストすることと、
前記第１のノードが、前記第１のノード上の共有ＮＶＭの詳細に対する要求を受け取ることと、
前記第１のノードが、第２のノード上の各共有ＮＶＭ内のファイル位置を含む、第２のノード上の共有ＮＶＭの詳細を受け取ることと、
前記第１のノードが、前記第１のノード上の各共有ＮＶＭ内のファイル位置を含む、前記第１のノード上の前記共有ＮＶＭの前記詳細を前記第２のノードに送ることと、
前記第１のノードが、前記第２のノード上の前記共有ＮＶＭの前記詳細に基づいて、前記第２のノード上の前記共有ＮＶＭの送信及び完了キューを前記第１のノードにマッピングすることと、を含み、
前記送信キューは、先出し先入れ（ＦＩＦＯ）スキームに従って、前記第２のノード上の前記共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、
前記完了キューは、前記送信キューを通じて処理された後、完了コマンドを格納するように構成される、方法。
【請求項１２】
前記クラスタ・パラメータは、前記第１のノード上の前記共有ＮＶＭに格納されたデータについてのアクセス・ポリシーを含む、請求項１１に記載の方法。
【請求項１３】
前記所定の間隔で前記クラスタ・パラメータをマルチキャストする前に、前記第１のノードが、前記クラスタ・パラメータに対する要求を受け取ることをさらに含む、請求項１１に記載の方法。
【請求項１４】
前記第１のノードは、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）を用いて、前記第２のノード上の前記共有ＮＶＭの前記送信及び完了キューを前記第１のノードにマッピングする、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト・ベースの不揮発性メモリに関し、より具体的には、本発明は、ネットワーク・マップド・ストレージを用いたホスト・ベースの不揮発性メモリのクラスタ化に関する。
【背景技術】
【０００２】
不揮発性メモリ（ＮＶＭ）は、電力なしで情報を保持する能力のために、多くの現代の用途に用いることができる非常に有用なメモリ・タイプである。オフタイム中のいずれのバッテリの消耗もデバイスの有用性を損なうので、このＮＶＭは、唯一の電力源としてバッテリに依存するモバイル機器において特に有利である。さらに、ＮＶＭは、ネットワーク・ストレージなどの、あまり明らかではない他の用途においても、ますます使用されるようになってきている。
【０００３】
要求が厳しい今日の用途においてＮＶＭを用いるための、幾つかの求められるアクセス仕様がある。すなわち、（１）ＮＶＭは、ダブル・データ・レート・タイプ３の同期式ダイナミック・ランダム・アクセス・メモリ（ＤＤＲ３  ＳＤＲＡＭ）を用いて達成できるものに類似した速度を達成できなければならない。（２）ＮＶＭは、企業のネットワーク・ストレージ・インフラストラクチャにおけるメモリの可用性のための指標と考えられる、１秒当たり百万回又はそれより多い入力／出力（Ｉ／Ｏ）操作（ＩＯＰＳ）を達成できなければならない。（３）ＮＶＭは、同じく企業のネットワーク・ストレージ・インフラストラクチャにおけるメモリの可用性のための指標と考えられる、３μｓから１０μｓまでの間の相互接続レイテンシを達成できなければならない。（４）ＮＶＭは、周辺機器コンポーネント相互接続エクスプレス（peripheralcomponent interconnect express、ＰＣＩｅ）シリアライザ／デシリアライザ（ＳｅｒＤｅｓ）レーンと類似した性能を達成できなければならない。
【０００４】
しかしながら、ＮＶＭ、特にフラッシュ・メモリを用いる現在の方法は、これらの求められるアクセス仕様を達成することができない。企業のネットワーク・ストレージとの関連でＮＶＭの実装に関連する幾つかの問題は、ネットワーク・インフラストラクチャにおいてデータのシームレスで高性能な転送を提供する方法を発見すること、ＮＶＭベースのストレージを提供できるストレージ・アプライアンスをどのように構築するか、ＮＶＭを用いるホスト・ベースのソリッド・ステート・ドライブ（ＳＳＤ）をどのように互いにクラスタ化するか、ネットワーク・インストラクチャにおいてホスト・ベースのＳＳＤを中央ストレージ・アプライアンスとどのように互いにクラスタ化するか、及びネットワーク上でＮＶＭストレージのサーバ・ベース及びネットワーク・ベースの仮想化をどのように達成するかを含む。
【０００５】
ＮＶＭの現在の実装は、ネットワーク・インフラストラクチャにおいてＮＶＭの全性能を使用しることを可能にする方法で、ネットワークの他の要素と相互作用するための能力を有していない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワーク・マップド・ストレージを用いたホスト・ベースの不揮発性メモリのクラスタ化を提供する。
【課題を解決するための手段】
【０００７】
一実施形態において、システムは、第１のノードを含む。第１のノードは、データを格納するように構成された第１の不揮発性メモリ（ＮＶＭ）を含む。第１のノードは、ＮＶＭインターフェースを介して第１のＮＶＭに接続された第１のメモリ・コントローラをさらに含む。第１のノードは、第１のメモリ・コントローラに接続され、ネットワークを通じて通信するように構成された第１のネットワーク・インターフェース・カード（ＮＩＣ）をさらに含む。第１のノードは第１のプロセッサをさらに含む。第１のノードは、第１のプロセッサと統合され及び／又は第１のプロセッサにより実行される第１の論理をさらに含む。第１の論理は、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを活性化（initiate、以下同様）するように構成される。第１の論理は、所定の間隔でＮＶＭクラスタのクラスタ・パラメータをＮＶＭクラスタ内の全ての他のノードにマルチキャストするようにさらに構成される。第１の論理は、第２のノードから、第１のノード上の共有ＮＶＭの詳細に対する要求を受け取るようにさらに構成される。第１の論理は、第２のノードから、第１のノード上の各共有ＮＶＭ内のファイル位置を含む、第２のノード上の共有ＮＶＭの詳細を受け取るようにさらに構成される。第１のノードは、第１のノード上の各共有ＮＶＭ内のファイル位置を含む、第１のノード上の共有ＮＶＭの詳細を第２のノードに送るようにさらに構成される。第１の論理は、第２のノード上の共有ＮＶＭの詳細に基づいて、第２のノード上の共有ＮＶＭの送信及び完了キューを第１のメモリ・コントローラにマッピングするようにさらに構成され、送信キューは、先入れ先出し（ＦＩＦＯ）スキームに従って、第２のノード上の共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成される。この実施形態は、ネットワーク上でＮＶＭストレージのサーバ・ベース及びネットワーク・ベースの仮想化を提供する。
【０００８】
この実施形態において、システムは、第２のノードをさらに含む。第２のノードは、データを格納するように構成された第２のＮＶＭを含む。第２のノードは、ＮＶＭインターフェースを介して第２のＮＶＭに接続された第２のメモリ・コントローラをさらに含む。第２のノードは、第２のメモリ・コントローラに接続され、ネットワークを通じて通信するように構成された第２のＮＩＣをさらに含む。第２のノードは第２のプロセッサをさらに含む。第２のノードは、第２のプロセッサと統合され及び／又は第２のプロセッサにより実行される第２の論理をさらに含む。第２の論理は、ローカル・クラスタ構成ファイルからローカル・クラスタ・パラメータを受け取るように構成される。第２の論理は、ＮＶＭクラスタのクラスタ・パラメータを含むマルチキャスト・メッセージを受け取るようにさらに構成される。第２の論理は、第１のノードからのマルチキャスト・メッセージの受信に応答して、第１のノード上の共有ＮＶＭの詳細に対する要求を第１のノードに送るようにさらに構成される。第２の論理は、第２のノード上の共有ＮＶＭの送信及び完了キューを初期化することによって、ＮＶＭクラスタに参加するようにさらに構成される。第２の論理は、第２のノード上の共有ＮＶＭの送信及び完了キューをＮＶＭクラスタ内の他のノードにマッピングするようにさらに構成される。また、第２の論理は、第２のノード上の共有ＮＶＭの詳細を第１のノードに送るようにさらに構成される。第２の論理は、第１のノード上の共有ＮＶＭの詳細を受け取るようにさらに構成される。第２の論理は、第１のノード上の共有ＮＶＭの詳細に基づいて、第１のノード上の共有ＮＶＭを第２のメモリ・コントローラにマッピングするようにさらに構成される。この実施形態は、ネットワークにおいてデータをシームレスに転送することができる、第１のノード及び第２のノードを含むＮＶＭクラスタを提供する。
【０００９】
別の実施形態において、ホスト・ベースのデータ・ストレージ・システムは、データを格納するように構成されたＮＶＭを含む。ホスト・ベースのデータ・ストレージ・システムは、ＮＶＭインターフェースを介してＮＶＭに接続されたメモリ・コントローラをさらに含む。ホスト・ベースのデータ・ストレージ・システムは、メモリ・コントローラに接続され、ネットワークを通じて通信するように構成されたＮＩＣをさらに含む。ホスト・ベースのデータ・ストレージ・システムは、プロセッサをさらに含む。ホスト・ベースのデータ・ストレージ・システムは、プロセッサと統合され及び／又はプロセッサにより実行される論理をさらに含む。この論理は、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを活性化するように構成される。論理は、所定の間隔でＮＶＭクラスタのクラスタ・パラメータをＮＶＭクラスタ内の全ての他のノードにマルチキャストするようにさらに構成される。論理は、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細に基づいて、ＮＶＭクラスタ内の上記他のノード上の全ての共有ＮＶＭの送信及び完了キューをメモリ・コントローラにマッピングするようにさらに構成され、送信キューは、ＦＩＦＯスキームに従って共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成される。この実施形態は、ネットワーク上でＮＶＭストレージのサーバ・ベース及びネットワーク・ベースの仮想化を提供する。
【００１０】
この実施形態において、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）を用いて、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの送信及び完了キューをメモリ・コントローラにマッピングすることができる。ＲＤＭＡを用いて、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの送信及び完了キューをメモリ・コントローラにマッピングすることにより、ネットワーク内の他の共有ＮＶＭ上に格納されたデータへのシームレスで高速なクセスが提供される。
【００１１】
別の実施形態によると、ネットワーク・ストレージ・アプライアンスは、データを格納するように構成された複数のＮＶＭストレージ・デバイスを含む。ネットワーク・ストレージ・アプライアンスは、ＮＶＭインターフェースを介して複数のＮＶＭストレージ・デバイスに接続されたメモリ・コントローラをさらに含む。ネットワーク・ストレージ・アプライアンスは、メモリ・コントローラに接続されたＮＩＣをさらに含む。ＮＩＣは、ＲＤＭＡオーバー・コンバージド・イーサネット（RDMA over converged Ethernet、ＲｏＣＥ）を介してネットワークを通じてＮＶＭクラスタ内の他のノードと通信するように構成される。ネットワーク・ストレージ・アプライアンスは、プロセッサをさらに含む。ネットワーク・ストレージ・アプライアンスは、プロセッサと統合され及び／又はプロセッサにより実行可能な論理をさらに含む。論理は、ＮＶＭクラスタのクラスタ・パラメータを含むマルチキャスト・メッセージを受け取るように構成される。ＮＶＭクラスタは、そこにアクセス可能な共有ＮＶＭを有する１つ又は複数のノードを含む。論理は、マルチキャスト・メッセージの受信に応答して、ＮＶＭクラスタ内のいずれかの他のノード上の共有ＮＶＭの詳細に対する要求を送るように構成される。論理は、ネットワーク・ストレージ・アプライアンス上の共有ＮＶＭの送信及び完了キューを初期化することによって、ＮＶＭクラスタに参加するようにさらに構成される。論理は、ネットワーク・ストレージ・アプライアンス上の共有ＮＶＭの送信及び完了キューをＮＶＭクラスタ内の他のノードにマッピングするようにさらに構成される。論理は、ネットワーク・ストレージ・アプライアンス上の共有ＮＶＭの詳細をＮＶＭクラスタ内の他のノードに送るようにさらに構成され、送信キューは、ＦＩＦＯスキームに従って共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納し、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細を受け取り、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細に基づいて、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭをメモリ・コントローラにマッピングするように構成される。この実施形態は、ＮＶＭベースのストレージをネットワークに提供できるストレージ・アプライアンスを提供する。
【００１２】
この実施形態において、ネットワーク・ストレージ・アプライアンス上の共有ＮＶＭは、コヒーレント・アクセラレータ・プロセッサ・インターフェース（coherent accelerator processorinterface、ＣＡＰＩ）及びＮＶＭエクスプレス（ＮＶＭｅ）の少なくとも１つを介して、ＮＶＭクラスタ内の他のノードにアクセス可能であり得る。ＣＡＰＩ及びＮＶＭｅの少なくとも１つを介してネットワーク・ストレージ・アプライアンス上の共有ＮＶＭにアクセスすることにより、ネットワーク内の他の共有ＮＶＭ上に格納されたデータへのシームレスな高速アクセスが提供される。
【００１３】
別の実施形態によると、方法は、第１のＮＶＭを内部に有する第１のノードを用いて、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを活性化することを含む。方法は、第１のノードを用いて、所定の間隔でＮＶＭクラスタのクラスタ・パラメータをＮＶＭクラスタ内の全ての他のノードにマルチキャストすることをさらに含む。方法は、第１のノードにおいて、第１のノード上の共有ＮＶＭの詳細に対する要求を受け取ることをさらに含む。方法は、第１のノードにおいて、第２のノード上の共有ＮＶＭの詳細を受け取ることをさらに含む。第２のノード上の共有ＮＶＭの詳細は、第２のノード上の各共有ＮＶＭ内のファイル位置を含む。方法は、第１のノード上の共有ＮＶＭの詳細を第２のノードに送ることをさらに含む。第１のノード上の共有ＮＶＭの詳細は、第１のノード上の各共有ＮＶＭ内のファイル位置を含む。方法は、第１のノードを用いて、第２のノード上の共有ＮＶＭの詳細に基づき、第２のノード上の共有ＮＶＭの送信及び完了キューを第１のノードにマッピングすることをさらに含み、送信キューは、先出し先入れ（ＦＩＦＯ）スキームに従って、第２のノード上の共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成される。この方法は、ＮＶＭクラスタ内の共通ＮＶＭ上に格納されたデータへのシームレスで高速なアクセスを提供する。
【００１４】
別の実施形態において、方法は、ＮＶＭクラスタのクラスタ・パラメータを含むマルチキャスト・メッセージを受け取ることを含む。ＮＶＭクラスタは、そこにアクセス可能な共有ＮＶＭを有する１つ又は複数のノードを含む。方法は、マルチキャスト・メッセージの受信に応答して、ＮＶＭクラスタ内のいずれかの他のノード上の共有ＮＶＭの詳細に対する要求を送ることをさらに含む。方法は、ローカル共有ＮＶＭの送信及び完了キューを初期化することによって、ＮＶＭクラスタに参加することをさらに含む。方法は、ローカル共有ＮＶＭの送信及び完了キューをＮＶＭクラスタ内の他のノードにマッピングすることをさらに含む。方法は、ローカル共有ＮＶＭの詳細をＮＶＭクラスタ内の他のノードに送ることをさらに含む。方法は、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細を受け取ることをさらに含む。方法は、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細に基づいて、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭをマッピングすることをさらに含む。この方法は、ＮＶＭクラスタ内の共有ＮＶＭ上に格納されたデータへのシームレスで高速なアクセスを提供する。
【００１５】
本発明の他の態様及び実施形態は、図面と併せて、本発明の原理の例として示す以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】一実施形態による、ネットワーク・アーキテクチャを示す。
【図２】一実施形態による、図１のサーバ及び／又はクライアントと関連付けることができるプロセッサ・システムの代表的なハードウェア環境を示す。
【図３】一実施形態における、ホスト・ベースのデータ・ストレージ・システムを示す。
【図４】一実施形態による、ホスト・ベースの不揮発性メモリ（ＮＶＭ）ストレージ・システムの動作を示す。
【図５】一実施形態による、ネットワーク・ストレージ・アプライアンスを示す。
【図６】一実施形態による、ネットワーク・ストレージ・アプライアンスの動作を示す。
【図７】一実施形態による、ホスト・ベースのＮＶＭストレージのクラスタ化を示す。
【図８】一実施形態による、方法のフローチャートを示す。
【発明を実施するための形態】
【００１７】
以下の説明は、本発明の一般的な原理を説明するためになされたものであり、本明細書で特許請求される本発明の概念を限定することを意図していない。さらに、本明細書で説明される特定の特徴は、種々の可能な組み合わせ及び置換の各々の他の説明される特徴と共に用いることができる。
【００１８】
特に別段の定めがない限り、全ての用語は、明細書から暗示される意味、並びに当業者により理解される及び／又は辞書、論文等に定められる意味を含む、その最も広い可能か解釈が与えられるべきである。
【００１９】
また、明細書及び添付の特許請求の範囲において用いられる場合、単数形「ａ」、「ａｎ」及び「ｔｈｅ」は、他に断りのない限り、複数の指示物を含むことにも留意すべきである。
【００２０】
一実施形態によると、今日の複雑でリソースを大量に消費するアプリケーションにおいて有用である、不揮発性メモリ（ＮＶＭ）を用いるためのアクセス方法が提供される。ＮＶＭへの１つのこうしたアクセス方法は、ストレージ・アプライアンスの構築を提供し、ソリッド・ステート・ドライブ（ＳＳＤ）のようなホスト・ベースのＮＶＭストレージ・デバイスのクラスタ化を可能にし、ホスト・ベースのＮＶＭストレージ・デバイス及び中央ストレージ・アプライアンスのクラスタ化を提供し、ＮＶＭのサーバ・ベース及びネットワーク・ベースの仮想化を提供する、シームレスで高性能の転送である。
【００２１】
１つの一般的な実施形態において、システムは、データを格納するように構成された第１のＮＶＭを含む第１のノードと、ＮＶＭインターフェースを介して第１のＮＶＭに接続された第１のメモリ・コントローラと、第１のメモリ・コントローラに接続され、ネットワークを通じて通信するように構成された第１のネットワーク・インターフェース・カード（ＮＩＣ）と、第１のプロセッサと、第１のプロセッサと統合され及び／又は第１のプロセッサにより実行可能な第１の論理とを含み、第１の論理は、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを生成し、所定の間隔でＮＶＭクラスタ内のクラスタ・パラメータをＮＶＭクラスタ内の全ての他のノードにマルチキャストし、第２のノードから、第１のノード上の共有ＮＶＭの詳細に対する要求を受け取り、第２のノードから、第２のノード上の各共有ＮＶＭ内のファイル位置を含む、第２のノード上の共有ＮＶＭの詳細を受け取り、第１のノード上の各共有ＮＶＭ内のファイル位置を含む、第１のノード上の共有ＮＶＭの詳細を第２のノードに送り、第２のノード上の共有ＮＶＭの詳細に基づいて、第２のノード上の共有ＮＶＭの送信及び完了キューを第１のメモリ・コントローラにマッピングするように構成され、送信キューは、先出し先入れ（ＦＩＦＯ）スキームに従って、第２のノード上の共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成される。
【００２２】
別の一般的な実施形態において、ホスト・ベースのデータ・ストレージ・システムは、データを格納するように構成されたＮＶＭと、ＮＶＭインターフェースを介してＮＶＭに接続されたメモリ・コントローラと、メモリ・コントローラに接続され、ネットワークを通じて通信するように構成されたＮＩＣと、プロセッサと、プロセッサと統合され及び／又はプロセッサにより実行可能な論理とを含み、論理は、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを生成し、所定の間隔でＮＶＭクラスタ内のクラスタ・パラメータをＮＶＭクラスタ内の全ての他のノードにマルチキャストし、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細に基づいて、ＮＶＭクラスタ内の他のノード上の全ての共有ＮＶＭの送信及び完了キューをメモリ・コントローラにマッピングするように構成され、送信キューは、ＦＩＦＯスキームに従って、共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成される。
【００２３】
別の一般的な実施形態において、ネットワーク・ストレージ・アプライアンスは、データを格納するように構成された複数のＮＶＭストレージ・デバイスと、ＮＶＭインターフェースを介して複数のＮＶＭストレージ・デバイスに接続されたメモリ・コントローラと、メモリ・コントローラに接続され、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）オーバー・コンバージド・イーサネット（ＲｏＣＥ）を介して、ネットワークを通じてＮＶＭクラスタ内の他のノードと通信するように構成されたＮＩＣと、プロセッサと、プロセッサと統合され及び／又はプロセッサにより実行可能な論理とを含み、論理は、そこにアクセス可能な共有ＮＶＭを有する１つ又は複数のノードを含むＮＶＭクラスタのクラスタ・パラメータを含むマルチキャスト・メッセージを受け取り、マルチキャスト・メッセージの受信に応答して、ＮＶＭクラスタ内のいずれかの他のノード上の共有ＮＶＭの詳細に対する要求を送り、ネットワーク・ストレージ・アプライアンス上の共有ＮＶＭの送信及び完了キューを初期化することによって、ＮＶＭクラスタに参加し、ネットワーク・ストレージ・アプライアンス上の共有ＮＶＭの送信及び完了キューをＮＶＭクラスタ内の他のノードにマッピングし、ネットワーク・ストレージ・アプライアンス上の共有ＮＶＭの詳細をＮＶＭクラスタ内の他のノードに送るように構成され、送信キューは、ＦＩＦＯスキームに従って、共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納し、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細を受け取り、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細に基づいてＮＶＭクラスタ内の他のノード上の共有ＮＶＭをメモリ・コントローラにマッピングするように構成される。
【００２４】
別の一般的な実施形態によると、方法は、第１のＮＶＭを内部に有する第１のノードを用いて、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを活性化することと、第１のノードを用いて、所定の間隔でＮＶＭクラスタのクラスタ・パラメータをＮＶＭクラスタ内の全ての他のノードにマルチキャストすることと、第１のノードにおいて、第１のノード上の共有ＮＶＭの詳細に対する要求を受け取ることと、第１のノードにおいて、第２のノード上の各共有ＮＶＭ内のファイル位置を含む、第２のノード上の共有ＮＶＭの詳細を受け取ることと、第１のノード上の各共有ＮＶＭ内のファイル位置を含む、第１のノード上の共有ＮＶＭの詳細を第２のノードに送ることと、第１のノードを用いて、第２のノード上の共有ＮＶＭの詳細に基づいて、第２のノード上の共有ＮＶＭの送信及び完了キューを第１のノードにマッピングすることとを含み、送信キューは、先入れ先出し（ＦＩＦＯ）スキームに従って、第２のノード上の共有ＮＶＭにアクセスするためのコマンドを格納するように構成され、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成される。
【００２５】
別の一般的な実施形態において、方法は、そこにアクセス可能な共有ＮＶＭを有する１つ又は複数のノードを含むＮＶＭクラスタのクラスタ・パラメータを含むマルチキャスト・メッセージを受け取ることと、マルチキャスト・メッセージの受信に応答して、ＮＶＭクラスタ内のいずれかの他のノード上の共有ＮＶＭの詳細に対する要求を送ることと、ローカル共有ＮＶＭの送信及び完了キューを初期化することによって、ＮＶＭクラスタに参加することと、ローカル共有ＮＶＭの送信及び完了キューをＮＶＭクラスタ内の他のノードにマッピングすることと、ローカル共有ＮＶＭの詳細をＮＶＭクラスタ内の他のノードに送ることと、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細を受け取ることと、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細に基づいて、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭをマッピングすることとを含む。
【００２６】
図１は、一実施形態による、ネットワーク・アーキテクチャ１００を示す。図１に示されるように、第１の遠隔ネットワーク１０４及び第２の遠隔ネットワーク１０６を含む複数の遠隔ネットワーク１０２が提供される。ゲートウェイ１０１が、遠隔ネットワーク１０２と近接ネットワーク１０８との間を結合させることができる。本ネットワーク・アーキテクチャ１００との関連において、ネットワーク１０４、１０６はそれぞれ、これらに限られるものではないが、ＬＡＮ、インターネット、公衆交換電話網（public switched telephone network、ＰＳＴＮ）、内線電話ネットワーク等のようなＷＡＮを含む、任意の形態をとることができる。
【００２７】
使用中、ゲートウェイ１０１は、遠隔ネットワーク１０２から近接ネットワーク１０８への入口点（entrancepoint）として働く。従って、ゲートウェイ１０１は、ゲートウェイ１０１に到着するデータの所定のパケットを指向させることができるルータ、及び、所定のパケットについての、ゲートウェイ１０１に出入りする実際の経路を提供するスイッチとして機能することができる。
【００２８】
近接ネットワーク１０８に結合され、かつ、ゲートウェイ１０１を介して遠隔ネットワーク１０２からアクセス可能である少なくとも１つのデータ・サーバ１１４が、さらに含まれる。データ・サーバ１１４は、いずれのタイプのコンピューティング・デバイス／グループウエアも含むことができることに留意されたい。複数のユーザ・デバイス１１６が、各データ・サーバ１１４に結合される。こうしたユーザ・デバイス１１６は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、手持ち式コンピュータ、プリンタ、及び／又はいずれかの他のタイプの論理含有デバイスを含むことができる。幾つかの実施形態において、ユーザ・デバイス１１１を、ネットワークのいずれかに直接結合することもできることに留意されたい。
【００２９】
例えばファクシミリ装置、プリンタ、スキャナ、ハードディスク・ドライブ、ネットワーク化及び／又はローカル・データ・ストレージ・ユニット若しくはシステム等の周辺機器１２０又は一連の周辺機器１２０を、ネットワーク１０４、１０６、１０８の１つ又は複数に結合することができる。データベース及び／又は付加的なコンポーネントを、ネットワーク１０４、１０６、１０８に結合されたいずれかのタイプのネットワーク要素と共に利用すること、又はこれらに統合することが可能であることに留意されたい。本説明との関連において、ネットワーク要素は、ネットワークの任意のコンポーネントを指すことができる。
【００３０】
幾つかの手法によると、本明細書で説明される方法及びシステムは、ＩＢＭ  ｚ／ＯＳ（商標）環境をエミュレートするＵＮＩＸ（商標）システム、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（商標）環境を仮想的にホストするＵＮＩＸ（商標）システム、又はＩＢＭ  ｚ／ＯＳ（商標）環境をエミュレートするＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（商標）システムのような、１つ又は複数の他のシステムをエミュレートする仮想システム及び／又はシステムと共に、及び／又は仮想システム及び／又はシステム上で実装することができる。幾つかの実施形態において、この仮想化及び／又はエミュレーションは、ＶＭＷＡＲＥを用いて機能強化することができる。
【００３１】
さらなる手法において、１つ又は複数のネットワーク１０４、１０６、１０８は、一般的に「クラウド」と呼ばれるシステムのクラスタを表すことができる。クラウド・コンピューティングにおいて、処理能力、周辺機器、ソフトウェア、データ、サーバ等のような共有リソースは、オンデマンド関係でクラウド内のいずれかのシステムに提供され、それにより多くのコンピューティング・システムにわたるアクセス及びサービスの分散が可能になる。クラウド・コンピューティングは、一般に、クラウド内で動作するシステム間のインターネット接続を必要とするが、当技術分野において周知であるような、システムを接続する他の技術を用いることもできる。
【００３２】
図２は、一実施形態による、図１のユーザ・デバイス１１６及び／又はサーバ１１４と関連した代表的なハードウェア環境を示す。図２は、一実施形態による、マイクロプロセッサのような中央処理ユニット２１０と、システム・バス２１２を介して相互接続された多数の他のユニットとを有するプロセッサ・システム２００の一般的なハードウェア構成を示す。
【００３３】
図２に示されるプロセッサ・システム２００は、ランダム・アクセス・メモリ（ＲＡＭ）２１４と、読み出し専用メモリ（ＲＯＭ）２１６と、ストレージ・サブシステム２２０などの周辺機器をバス２１２に接続するためのＩ／Ｏアダプタ２１８と、キーボード２２４、マウス２２６、スピーカ２２８、マイクロフォン２３２、及び／又は、タッチスクリーン、デジタル・カメラ（図示せず）などの他のユーザ・インターフェース・デバイスをバス２１２に接続するためのユーザ・インターフェース・アダプタ２２２と、プロセッサ・システム２００を通信ネットワーク２３５（例えば、データ処理ネットワーク）に接続するための通信アダプタ２３４と、バス２１２をディスプレイ装置２３８に接続するためのディスプレイ・アダプタ２３６とを含む。
【００３４】
プロセッサ・システム２００は、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システム（ＯＳ）、ＭＡＣ  ＯＳ、ＵＮＩＸ  ＯＳ等のようなオペレーティング・システムがそこに常駐することができる。上述したもの以外のプラットホーム及びオペレーティング・システム上で、好ましい実施形態を実施できることも理解されるであろう。好ましい実施形態は、オブジェクト指向プログラミング方法と共に、ＪＡＶＡ、ＸＭＬ、Ｃ、及び／又はＣ＋＋言語、或いは他のプログラミング言語を用いて書くことができる。複雑なアプリケーションを開発するのにますます用いられるようになったオブジェクト指向プログラミング（ＯＯＰ）を用いることができる。
【００３５】
ここで図３を参照すると、一実施形態による、ホスト・ベースのデータ・ストレージ・システム３００が示される。ホスト・ベースのデータ・ストレージ・システム３００は、ＮＶＭエクスプレス（ＮＶＭｅ）ストレージ・デバイス、ＳＳＤ、フラッシュ・ドライブ等のような１つ又は複数のＮＶＭストレージ・デバイス３０２を有することができる。各ＮＶＭストレージ・デバイス３０２は、フラッシュ・メモリ、読み出し専用メモリ（ＲＯＭ）、強誘電体ランダム・アクセス・メモリ（ＦＲＡＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）等のような、当技術分野において周知のタイプのＮＶＭを有することができる。一実施形態において、ホスト・プロセッサ３０４は、メモリ・コントローラ３０８と通信するように構成することができ、種々のＮＶＭストレージ・デバイス３０２上のＮＶＭのクラスタ化を提供し、サポートする。
【００３６】
ホスト・プロセッサ３０４は、例えば８レーン、３２レーン等の８の倍数のこうしたレーンのような、複数の周辺機器コンポーネント相互接続エクスプレス（peripheral component interconnect express、ＰＣＩｅ）レーン３１２を介して、ホスト・プロセッサ３０４のドライバ３０６を用いてメモリ・コントローラ３０８と通信するように構成することができる。ホスト・プロセッサ３０４は、１つ又は複数の中央処理ユニット（ＣＰＵ）、又は当技術分野において周知の何らかの他の適切なプロセッサ・タイプを有することができる。
【００３７】
メモリ・コントローラ３０８は、当技術分野において周知のタイプのＮＶＭインターフェース３１０を介して、種々のＮＶＭストレージ・デバイス３０２と通信することができる。メモリ・コントローラ３０８は、ハードウェア・モジュール、ブロック、及び／又はＡＳＩＣ、ＦＰＧＡ等といったプロセッサとして実装することができる。また、メモリ・コントローラ３０８は、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）オーバー・コンバージド・イーサネット（ＲｏＣＥ）、コヒーレント・アクセラレータ・プロセッサ・インターフェース（ＣＡＰＩ）オーバーＲｏＣＥ、ＣＡＰＩオーバー・イーサネット、ＮＶＭｅオーバー・イーサネット等のような、データを格納し、ＮＶＭストレージ・デバイス３０２からデータを取り出すのに適した１つ又は複数の通信プロトコルを介して通信するように構成することができる。ＣＡＰＩは、ローカルＳＳＤと通信するためのプロトコルであり、ＮＶＭｅは、ローカル接続ストレージのためのＰＣＩｅに類似したデータの伝送のためのプロトコルである。
【００３８】
データ・ストレージ・システム３００との関連で、ファイバ・チャネル（Fiber Channel、ＦＣ）、ＦＣオーバー・イーサネット（ＦＣｏＥ）、インフィニバンド（Infiniband）、インターネット・スモール・コンピュータ・システム・インターフェース（Internet SmallComputer System Interface、ｉＳＣＳＩ）、転送制御プロトコル／インターネット・プロトコル（Transport Control Protocol/Internet Protocol、ＴＣＰ／ＩＰ）、ＰＣＩｅ等、及び／又はそれらのいずれかの組み合わせのような、他の通信プロトコルを用いることもできる。
【００３９】
ＮＶＭのクラスタ化を提供するために（ＮＶＭｅ、ＣＡＰＩ等を介して）、送信及び／又は完了キューのような操作キューを、遠隔メモリ・アクセスのためにマッピングすることができる。本実施形態において、いずれのタイプのメモリ・アクセス・プロトコルを用いることもできる。このように、分散型メモリ（又はディスク）クラスタ化を、現在可能であるよりも直接的かつ効率的な方法でもたらすことができる。
【００４０】
ここで図４を参照すると、一実施形態による、ホスト・ベースのＮＶＭストレージ・システムの動作が示される。ホスト・プロセッサ・メモリ４０２は、ホスト・プロセッサに接続することができ、複数のバッファ、特定的には、一般的なダウンタイム、サービス中断、コマンドのバースト等の際、あらゆるコマンドをバッファから押し出すことなく、複数のコマンドを格納するように構成されたサイズの１つ又は複数のリング・バッファを有することができる。一実施形態において、ホスト・プロセッサ・メモリ４０２は、１つ又は複数の送信キュー・リング・バッファ４０４（２つのこうしたリング・バッファが図示されているが、いずれの数を用いることもできる）及び１つ又は複数の完了キュー・リング・バッファ４１０（１つのこうしたリング・バッファが図示されているが、いずれの数を用いることもできる）を有することができる。送信キュー及び／又は完了キューのために、線形バッファ又は当技術分野において周知の何らかの他のバッファのような、他のタイプのバッファを用いることができる。
【００４１】
送信キュー・リング・バッファ４０４は、先入れ先出し（ＦＩＦＯ）スキーム、又は当技術分野において周知の何らかの他の所望のイン／アウト・スキームに従って実行することができるコマンドを格納するように構成することができる。送信キュー・リング・バッファ４０４は、ヘッド４０６からテール４０８へとコマンドを格納することができ、付加的なコマンドは、それ以上コマンドがキュー内に入らなくなるまで、ヘッド４０６に配置される。一実施形態において、コマンドは、送信キュー・リング・バッファ４０４のテールから引き出される。
【００４２】
完了キュー・リング・バッファ４１０は、送信キュー・リング・バッファ４０４を通じて処理された後、完了コマンドを格納することができる。完了キュー・リング・バッファ４１０は、ＦＩＦＯスキーム、又は当技術分野において周知の何らかの他の所望のイン／アウト・スキームに従って実行できたコマンドを格納することもできる。さらに、完了キュー・リング・バッファ４１０は、ヘッド４１２からテール４１４へとコマンドを格納することができ、付加的な完了コマンドは、ヘッド４１２の前方に配置される。
【００４３】
メモリ・コントローラ３０８は、新しいコマンドが送信キュー・リング・バッファ４０４に付加されたという表示を受け取るように構成することができる。一実施形態において、この表示は、ドアベル・メッセージ・シグナル割り込み（doorbell message signaled interrupt、ＭＳＩ）とすることができる。次に、メモリ・コントローラ３０８は、送信キュー・リング・バッファ４０４からコマンドをフェッチし、完了するまでコマンドを処理し、コマンドが完了したという表示をホスト・プロセッサに送る（例えば、完了ＭＳＩを介して）。次に、一実施形態によると、メモリ・コントローラ３０８は、例えば、完了キュー・リング・バッファ４１０におけるドアベルＭＳＩ（新しいヘッドを示す）を介して、プロセスの完了が確認応答されたとの表示を受け取ることができる。
【００４４】
一実施形態による、ネットワーク５１２を介してホスト５１０に接続することができるネットワーク・ストレージ・アプライアンス５００が、図５に示される。ネットワーク・ストレージ・アプライアンス５００は、ネットワーク５１２を通じて通信するように構成できるネットワーク・インターフェース・カード（ＮＩＣ）５０２を有することができる。ネットワーク５１２は、１つ又は複数のスイッチ５０４を有することができる。１つ又は複数のスイッチ５０４は、プライオリティ・フロー制御（priority flow control、ＰＦＣ）、拡張伝送選択（enhancedtransmission selection、ＥＴＳ）、量子化輻輳通知（quantizedcongestion notification、ＱＣＮ）のうちの少なくとも１つを実施するように構成された、物理スイッチ、仮想スイッチ、分散スイッチ等の任意の組み合わせとすることができる。一実施形態において、ネットワーク・ストレージ・アプライアンス５００とホスト５１０との間の経路における１つ又は複数のスイッチ５０４は、上記に列挙された全てのフロー・プロトコルを実施するように構成することができる。さらに、ネットワーク・ストレージ・アプライアンス５００とホスト５１０との間の経路におけるスイッチ５０４の各々は、ＲｏＣＥ、及び／又は上記に列挙された他の通信プロトコルの幾つか又は全てを介して通信するように構成することができる。
【００４５】
図３に示されるように、ネットワーク・ストレージ・アプライアンス５００は、ホスト・ベースのデータ・ストレージ・システムのコンポーネントの幾つか又は全てを有することができる。図５に示されるように、ネットワーク・ストレージ・アプライアンス５００は、ネットワーク５１２を通じて通信するように構成することができるＮＩＣ５０２と、ネットワーク・ストレージ・アプライアンス５００の動作を制御するためのプロセッサ５０８と、メモリ・コントローラ３０８と、メモリ・コントローラ３０８がＮＶＭインターフェース３１０を介して通信することができる複数のＮＶＭストレージ・デバイス３０２とを有することができる。
【００４６】
一実施形態において、ホスト５１０はＮＩＣ５０６を有することができ、このＮＩＣ５０６は、ネットワーク５１２を通じて通信するように構成することができ、かつ、上記に列挙された種々の通信プロトコルの１つ又は複数を介して通信するためのドライバ３０６に接続することができる。ドライバ３０６は、プロセッサ３０４により制御することができる。
【００４７】
一実施形態において、ＮＩＣ５０２及びＮＩＣ５０６の両方とも、１つ又は複数のスイッチ５０４を介してネットワーク５１２上のＲｏＣＥを介して通信するように構成することができ、その結果、ネットワーク・ストレージ・アプライアンス５００とホスト５１０との間の経路における１つ又は複数のスイッチ５０４の各々は、ＲｏＣＥを介して通信するように構成することができる。
【００４８】
このように、ホスト５１０は、ネットワーク・ストレージ・アプライアンス５００内の種々のＮＶＭストレージ・デバイス３０２上のＮＶＭにアクセスするように構成することができる。ネットワーク５１２がイーサネット接続を用いるとき、一定の低レイテンシ、コンバージド・イーサネット（converged Ethernet）能力（ロスレス機能のための）及びＲｏＣＥサポートを伴って、実際の構成に応じて、１０／４０／１００Ｇｂｐｓのいずれも可能である。これは、ネットワーク・ストレージ・アプライアンス５００上のＮＶＭへの直接アクセスのための、ユビキタス、迅速で、拡張可能な、コスト競争力のある解決法である。
【００４９】
一実施形態において、ネットワーク・ストレージ・アプライアンス５００は、データを格納するように構成することができる複数のＮＶＭストレージ・デバイス３０２と、ＮＶＭインターフェース３１０を介して複数のＮＶＭストレージ・デバイス３０２に接続することができるメモリ・コントローラ３０８と、メモリ・コントローラ３０８に接続することができ、ＲｏＣＥ又は当技術分野において周知の何らかの他の適切なプロトコルを介してＮＶＭクラスタ内の他のノードとネットワーク５１２を通じて通信するように構成することができるＮＩＣ５０２と、プロセッサ５０８と、プロセッサ５０８と統合することができ及び／又はプロセッサ５０８により実行可能な論理とを有することができ、この論理は、そこにアクセス可能な共有ＮＶＭを有する１つ又は複数のノードを含むＮＶＭクラスタのクラスタ・パラメータを含むマルチキャスト・メッセージを受け取り、マルチキャスト・メッセージの受信に応答して、ＮＶＭクラスタ内のいずれかの他のノード上の共有ＮＶＭの詳細に対する要求を送り、ネットワーク・ストレージ・アプライアンス５００上の共有ＮＶＭの送信及び完了キューを初期化することによって、ＮＶＭクラスタに参加し、ネットワーク・ストレージ・アプライアンス５００上の共有ＮＶＭの送信及び完了キューをＮＶＭクラスタ内の他のノードにマッピングし、ネットワーク・ストレージ・アプライアンス５００上の共有ＮＶＭの詳細をＮＶＭクラスタ内の他のノードに送り、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細を受け取り、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭの詳細に基づいて、ＮＶＭクラスタ内の他のノード上の共有ＮＶＭをメモリ・コントローラ３０８にマッピングするように構成することができる。送信キューは、先入れ先出し（ＦＩＦＯ）スキームに従って、他のノード上の共有ＮＶＭにアクセスするためのコマンドを格納するように構成することができ、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成することができる。
【００５０】
図６の一実施形態によると、ネットワーク・ストレージ・アプライアンス５００の動作が示される。示されるように、ホスト・プロセッサ３０４はキュー・コマンドを発行することができ、このキュー・コマンドは、ＮＩＣ５０６を介して（矢印６０８で示されるように）ネットワークを通じて通信することができ、ＮＩＣ５０２により他のエンドで受け取ることができ、次に送信キュー・リング・バッファ６０４にＲＭＤＡすることができる。一実施形態によると、これは、ホスト・プロセッサ３０４をネットワーク・ストレージ・アプライアンス５００のマッピングされたメモリ６０２にＲＤＭＡマッピングすることができ、その結果、他の処理を必要とすることなく、ホスト・プロセッサ３０４からのキュー・コマンドを送信キュー・リング・バッファ６０４にＲＭＤＡすることができることによって可能である。
【００５１】
この動作が成功し、繰り返し可能であるために、一実施形態において、少なくともＲｏＣＥ、ＰＦＣ及びＱＣＮによって、ネットワークを通じた通信６０８をサポートすることができる。
【００５２】
次に、メモリ・コントローラ３０８は、新しいコマンドが送信キュー・リング・バッファ６０４に付加されたという表示を受け取ることができる。一実施形態において、この表示は、ドアベルＭＳＩとすることができる。次に、メモリ・コントローラ３０８は、送信キュー・リング・バッファ６０４からコマンドをフェッチし、コマンドを完了するまで処理し、コマンドが完了した（例えば、完了ＭＳＩを介して）という表示をホスト・プロセッサ３０４に送る。次に、一実施形態によれば、メモリ・コントローラ３０８は、例えば、完了キュー・リング・バッファ６０６におけるドアベルＭＳＩ（新しいヘッドを示す）を介して、プロセスの完了が確認応答されたとの表示を受け取ることができる。
【００５３】
ここで図７を参照すると、一実施形態による、ホスト・ベースのＮＶＭストレージのクラスタ化が示される。示されるように、複数のホスト・ベースのＮＶＭを、例えばホスト０  ７０２、ホスト１  ７０４、ホスト２  ７０６、ホスト３  ７０８、ホスト４  ７１０等の各ホストと共に、ＮＶＭクラスタ７００内に含ませ、それぞれのローカルＮＶＭを管理し、ＮＶＭクラスタ７００の他のメンバーへのアクセスを提供することができる。同様に、それぞれのローカルＮＶＭを管理し、ＮＶＭクラスタ７００の他のメンバーへのアクセスを提供するように、いずれかのネットワーク・ストレージ・アプライアンス７１２を構成することもできる。このＮＶＭクラスタ７００は、任意の数のノードを含むことができる。ＮＶＭクラスタ７００のノードは、１つ又は複数のネットワーク・ストレージ・アプライアンス、１つ又は複数のホスト・ベースのＮＶＭ、及び／又はその任意の組み合わせを含むことができる。これは、ネットワーク内の全ての権限付与されたコンポーネントに対して、ＮＶＭクラスタ７００内の共有ＮＶＭ上に格納されたデータへのシームレスで高速なアクセスを提供できる利点を有する。
【００５４】
このＮＶＭクラスタ７００を達成するために、一実施形態において、ＮＶＭクラスタ７００が立ち上がって作動するように、次の操作ステップが続き得る。
１）第１のノード（例えば、ホスト０  ７０２）がブートし、ＮＶＭクラスタ７００がどのように機能し動作するかを制御するクラスタ・パラメータを活性化する。
２）第１のノードは、所定の間隔でクラスタの詳細をＮＶＭクラスタ７００内の全ての他のノードにマルチキャストする。クラスタ詳細は、アクセスのポリシー（例えば、ＮＶＭクラスタ７００の種々のＮＶＭに格納されたいずれかの情報にどのように及び誰がアクセスすることが可能か）を含むことができる。これは、共有ＮＶＭ上の特定のデータへのアクセスを制限する方法を提供する。
３）第２のノードがブートし（例えば、ホスト１〜５のいずれか）、第２のノードは、ローカル・ディスク・ファイル（例えば、クラスタ構成ファイル）から、ローカル・クラスタ・パラメータを受け取る。これらのローカル・クラスタ・パラメータは、第１のノードからのマルチキャスト・メッセージに対して何をリッスン（listen）するかを含むことができる。
４）次に、第２のノードは、ＮＶＭクラスタ７００内の全てのメンバー・ノードから情報を要求し、現在唯一のメンバー・ノードは第１のノードであるが第２のノードはそれを知らず、従って、情報を求めるこの要求を作成する。上記要求は上記間隔以内に作成され、第２のノードが上記間隔で第１のノードから情報を受け取れば、この要求は不要になり得る。
５）第２のノードは、マルチキャスト・メッセージをリッスンし、第１のノードからこれを受け取る。
６）１つの手法において、第２のノードは、第１のノードからのマルチキャスト・メッセージの受信に応答して、ファイル位置及び第１のノード上の共有メモリの詳細を要求し、それは、ファイルのアクセス可能なインデックス内に提供することができる。
７）第２のノードは、それぞれの送信及び完了キューを初期化することによって、ＮＶＭクラスタ７００に参加し、ＲＤＭＡを介してそのローカルＮＶＭストレージ（送信及び完了キュー）をＮＶＭクラスタ７００内の他のノードにマッピングし、第２のノードのローカルＮＶＭにアクセスするためのローカルＲｏＣＥ  ＮＩＣアドレスなどのそれ自身のＮＶＭ詳細を提供する。これは、クラスタの他のノード上の共有ＮＶＭへの迅速で信頼できるアクセスを提供する。
８）第１のノードは、第２のノードからＮＶＭ詳細を受け取り、ＲＤＭＡで第２のノードの送信及び完了キューをマッピングし、第１のノードのＮＶＭ詳細を第２のノードに提供する。特定の共有制限、時間的制約、アクセス制約等を用いるＮＶＭクラスタ７００を設定するとき、他の特定の操作も可能であり、この時点で、この情報も共有される。
９）この時点で、ＮＶＭクラスタ７００は、２つのノードを含み、各ノードのＮＶＭは、他のノードに見える。
【００５５】
ここで、ＮＶＭクラスタ７００内のいずれのノードも、他のノードのローカルＮＶＭにアクセスするために、リモート・アクセス要求を他のノードに送ることができる。これらのリモート・アクセス要求は、他のノードのローカル送信キュー内に格納し、前述のように処理することができ、動作の完了に応答して、特定のリモート・アクセス要求に適したいずれかの情報、データ、確認等と共に、もとの開始ノードに対して示すことができる。これは、ネットワーク内の他の共有ＮＶＭ上に格納されるデータへのシームレスで迅速なアクセスを提供する利点を有する。しかしながら、ローカル・ホストは、ローカル・ホストのＮＶＭに対するリモート・アクセス要求への可視性を有さず、代わりに、この機能は、ＮＶＭコントローラによって提供される。
【００５６】
別の実施形態において、ホスト・ベースのストレージ及び／又はネットワーク・ストレージ・アプライアンスは、ネットワーク内の特定の事前に権限付与されたエンティティによってのみアクセス可能な、１つ又は複数のアクセス制限キューを有することができる。アクセスを許容するか否かを判断するために、１つ又は複数のアクセス制限キューにアクセスしたいと望む遠隔エンティティの間で、情報の交換を行うことができる。１つの手法において、これらの１つ又は複数のアクセス制限キューは、ＲＤＭＡを介して共有することができる。これは、ネットワーク内の特定の共有ＮＶＭへのアクセスを制限する利点を有する。
【００５７】
ここで図８を参照すると、一実施形態による、ＮＶＭのクラスタ化を提供するための方法８００が示される。動作８０２において、第１のノードを用いて、ＮＶＭクラスタがどのように機能し動作するかを制御するクラスタ・パラメータを活性化する。
【００５８】
一実施形態において、第１のノードは、データを格納するように構成することができる第１のＮＶＭと、ＮＶＭインターフェースを介して第１のＮＶＭに接続することができる第１のメモリ・コントローラと、第１のメモリ・コントローラに接続することができ、ネットワークを通じて通信するように構成することができる第１のＮＩＣと、第１のプロセッサと、第１のプロセッサと統合することができ及び／又は第１のプロセッサにより実行可能な第１の論理とを含むことができる。一実施形態において、第１の論理は、方法８００を実行するように構成することができる。
【００５９】
動作８０４において、所定の間隔で、ネットワークを通じてＮＶＭクラスタのクラスタ・パラメータをＮＶＭクラスタ内の全ての他のノードにマルチキャストすることができる、その結果、これらの他のノードに、ＮＶＭクラスタの存在を認識させることができる。
【００６０】
動作８０６において、第２のノードから、第１のノード上の共有ＮＶＭの詳細に対する要求を受け取ることができる。第１のノードの全てのＮＶＭを共有するように構成する必要はなく、従って、第１のノード上の共有ＮＶＭと呼ぶ、第１のＮＶＭのどの部分が共有されるかを決定するように、第１のノードを構成することができる。
【００６１】
動作８０８において、第２のノードから、第１のノードにおいて、第２のノード上の共有ＮＶＭの詳細を受け取ることができる。第２のノード上の共有ＮＶＭの詳細は、第２のノード上の各共有ＮＶＭ内のファイル位置を含むことができるので、ファイル位置は、第１のノードの第１のメモリ・コントローラにマッピングすることができる。
【００６２】
動作８１０において、第１のノード上の共有ＮＶＭの詳細を、第２のノードに送ることができる。第１のノード上の共有ＮＶＭの詳細は、第１のノード上の各共有ＮＶＭ内のファイル位置を含むことができるので、ファイル位置は、第２のノードの第２のメモリ・コントローラにマッピングすることができる。
【００６３】
動作８１２において、第２のノード上の共有ＮＶＭの詳細に基づいて、第２のノード上の共有ＮＶＭの送信及び完了キューを第１のメモリ・コントローラにマッピングすることができる。送信キューは、先出し先入れ（ＦＩＦＯ）スキームに従って、第２のノード上の共有ＮＶＭにアクセスするためのコマンドを格納するように構成することができ、完了キューは、送信キューを通じて処理された後、完了コマンドを格納するように構成することができる。
【００６４】
このことは、ＮＶＭクラスタにわたってＮＶＭクラスタ内の全てのノードの共有メモリにアクセスすることを可能にする。
【００６５】
更に別の実施形態において、方法８００は、ローカル・クラスタ構成ファイルからローカル・クラスタ・パラメータを受け取ることと、ＮＶＭクラスタのクラスタ・パラメータを含むマルチキャスト・メッセージを受け取ることと、第１のノードからのマルチキャスト・メッセージの受信に応答して、第１のノード上の共有ＮＶＭの詳細に対する要求を第１のノードに送ることと、第２のノード上の共有ＮＶＭの送信及び完了キューを初期化することによって、ＮＶＭクラスタに参加することと、第２のノード上の共有ＮＶＭの詳細を第１のノードに送ることと、第１のノード上の共有ＮＶＭの詳細を受け取ることと、第１のノード上の共有ＮＶＭの詳細に基づいて、第１のノード上の共有ＮＶＭを第２のメモリ・コントローラにマッピングすることとを含むことができる。
【００６６】
一実施形態において、クラスタの詳細は、第１のノード上の共有ＮＶＭに格納されるデータについてのアクセス・ポリシーを含むことができる。このように、当業者により理解されるように、制限アクセス・ファイルを示すことができ、ＮＶＭ内の他のノードはアクセスすることができず、又は制限コンテンツにアクセスするための特権を必要することがある。
【００６７】
別の実施形態において、方法８００は、所定の間隔でクラスタの詳細をマルチキャストする前に、第２のノードから、クラスタの詳細に対する要求を受け取ることを含むことができる。このことは、クラスタの詳細をやみくもにブロードキャストする前に、第１のノードが第２のノードの存在を認識することを可能にする。
【００６８】
１つの手法において、ＲＤＭＡを用いて、第２のノード上の共有ＮＶＭの送信及び完了キューを第１のメモリ・コントローラにマッピングすることができる。さらに、第２のノード上の共有ＮＶＭの詳細は、ＮＶＭクラスタ内のいずれかの他のノードにより第２のノード上の共有ＮＶＭにアクセスするために用いられる第２のノードのＲｏＣＥ  ＮＩＣアドレスを含むことができる。
【００６９】
さらに、第１のノード上の共有ＮＶＭ及び第２のノード上の共有ＮＶＭは、ＣＡＰＩ及びＮＶＭｅの少なくとも１つを介して、ＮＶＭクラスタ内の他のノードにアクセス可能であり得る。
【００７０】
ＮＶＭクラスタ内のノードのいずれにおいても、本明細書で説明されるもの及び当技術分野において周知の他のものを含む、いずれかの適切なＮＶＭを用いることができる。
【００７１】
更に別の実施形態において、方法８００は、ＮＶＭｅオーバー・イーサネット及びＣＡＰＩオーバー・イーサネットの少なくとも１つを用いて、ＲＤＭＡを介して、データを第１のノード上の共有ＮＶＭから第２のノードに送ることと、データにアクセスすること、命令にアクセスすること、データをキューに入れること、及び命令をキューに入れることの少なくとも１つを含む、ＲｏＣＥを介して第２のノード上の共有ＮＶＭでの操作を実行することとを含むことができる。
【００７２】
ＮＶＭクラスタは、１つ又は複数のネットワーク・ストレージ・アプライアンス、及び／又は当業者には周知のような、ＮＶＭを含む他のネットワーク・ストレージ・デバイスを含むこともできる。
【００７３】
種々の実施形態による本明細書で提示されるＮＶＭのアクセス方法は、不揮発性メモリ上のデータ格納のための低い一定のレイテンシを可能にし、プロセッサの待ち時間を減らし、アプリケーションの性能を改善し、拡張可能なＮＶＭストレージ・アプリケーション内に含ませることができ、クラスタ化を可能にし、ストレージの仮想化を提供し、現在のアクセス方法に比べて開発コストを減少させる。
【００７４】
本発明は、システム、方法、及び／又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００７５】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令が記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って伝搬される電気信号などの、一時的信号自体として解釈されるべきではない。
【００７６】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び／又は無線ネットワークなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【００７７】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、又は、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【００７８】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００７９】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００８０】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００８１】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【００８２】
さらに、種々の実施形態によるシステムは、プロセッサと、プロセッサと統合され及び／又はプロセッサにより実行可能な論理とを含むことができ、この論理は、本明細書に列挙されるプロセス・ステップの１つ又は複数を実行するように構成される。統合が意味するのは、プロセッサが、ＡＳＩＣ、ＦＰＧＡ等のようなハードウェア論理として埋め込まれた論理を有することである。プロセッサにより実行可能が意味するのは、論理が、ハードウェア論理、ファームウェアのようなソフトウェア論理、オペレーティング・システムの部分、アプリケーション・プログラムの部分等、又はプロセッサによりアクセス可能であり、かつ、プロセッサによる実行時にプロセッサに何らかの機能を実施させるように構成された、ハードウェア及びソフトウェア論理パーティションの何らかの組み合わせである。ソフトウェア論理は、当技術分野において周知のようないずれかのメモリ・タイプのローカル及び／又は遠隔メモリ上に格納することができる。ソフトウェア・プロセッサ・モジュール、及び／又はＡＳＩＣ、ＦＰＧＡ、ＣＰＵ、集積回路（ＩＣ）、グラフィック処理ユニット（ＧＰＵ）等のようなハードウェア・プロセッサといった、任意のプロセッサを用いることができる。
【００８３】
上記のシステム及び／又は方法の種々の特徴をいずれかの方法で組み合わせて、上記に提示された説明から複数の組み合わせを活性化することができることは明らかであろう。
【００８４】
さらに、本発明の実施形態は、オンデマンドでサービスを提供するために、顧客のために配備されたサービスの形で提供することができることが理解されるであろう。
【００８５】
種々の実施形態が上述されたが、それらは、単なる例示として提示されたものであり、限定ではないことを理解されたい。従って、本発明の実施形態の範囲は、上述した例示的な実施形態のいずれにも限定されるべきではなく、以下の特許請求の範囲及びその等価物に従ってのみ定められるべきである。
【符号の説明】
【００８６】
１００：ネットワーク・アーキテクチャ
１０１：ゲートウェイ
１０２、１０４、１０６：遠隔ネットワーク
１０８：近接ネットワーク
１１１、１１６：ユーザ・デバイス
１１４：データ・サーバ
１２０：周辺機器
２００：プロセッサ・システム
２１０：中央処理ユニット
２１２：システム・バス
２１４：ランダム・アクセス・メモリ（ＲＡＭ）
２１６：読み出し専用メモリ（ＲＯＭ）
２２０：ストレージ・サブシステム
２１８：Ｉ／Ｏアダプタ
２２２：ユーザ・インターフェース・アダプタ
２３４：通信アダプタ
２３５：通信ネットワーク
２３８：ディスプレイ装置
３００：ホスト・ベースのデータ・ストレージ・システム
３０２：不揮発性（ＮＶＭ）ストレージ・デバイス
３０４：ホスト・プロセッサ
３０６：ドライバ
３０８：メモリ・コントローラ
３１２：相互接続エクスプレス（ＰＣＩｅ）レーン
４０２：ホスト・プロセッサ・メモリ
４０４、６０４：送信キュー・リング・バッファ
４１０、６０６：完了キュー・リング・バッファ
５００、７１２：ネットワーク・ストレージ・アプライアンス
５０２、５０６：ネットワーク・インターフェース・カード（ＮＩＣ）
５０４：スイッチ
５０８：プロセッサ
５１０：ホスト
５１２：ネットワーク
６０８：通信
７００：ＮＶＭクラスタ
７０２、７０４、７０６、７０８、７１０：ホスト
８００：方法
【図１】
0006663434.tif 000002
【図２】
0006663434.tif 000003
【図３】
0006663434.tif 000004
【図４】
0006663434.tif 000005
【図５】
0006663434.tif 000006
【図６】
0006663434.tif 000007
【図７】
0006663434.tif 000008
【図８】
0006663434.tif 000009