(57)【要約】  ネットワークストレージ装置は、ソリッドステートディスクと、ソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタと、ソリッドステートディスクおよびネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスと、不揮発性半導体メモリデバイスおよびネットワークインタフェースアダプタに通信可能に結合されたＣＰＵとを備える。不揮発性半導体メモリデバイスは、ネットワークインタフェースアダプタを介してホストクライアントからデータを受信し、データを一時的に格納し、ソリッドステートディスクの１つにデータを転送することができる。ＣＰＵは、ネットワークインタフェースアダプタを介してホストクライアントから書き込み要求を受信し、不揮発性半導体メモリデバイスがデータを格納するために利用可能であるか否かを判定し、不揮発性半導体メモリデバイスがデータを格納するために利用可能である場合、ホストクライアントから不揮発性半導体メモリデバイスへのデータの転送を行うためにネットワークインタフェースアダプタを始動し、不揮発性半導体メモリデバイスがデータを格納するために利用可能でない場合、１つ以上の外部ストレージへクエリをブロードキャストするためにネットワークインタフェースアダプタを始動することができる。
2020529678.tif 000002
【特許請求の範囲】
【請求項１】
複数のソリッドステートディスクと、
前記複数のソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタであって、
前記ホストクライアントからデータを取得し、
前記データを前記ホストクライアントから前記複数のソリッドステートディスクに転送する
ように構成されるネットワークインタフェースアダプタと、
前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントからデータを受信し、
前記データを一時的に格納し、
前記データを前記複数のソリッドステートディスクの１つに転送する
ように構成される不揮発性半導体メモリデバイスと、
前記不揮発性半導体メモリデバイスおよび前記ネットワークインタフェースアダプタに通信可能に結合されたＣＰＵであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントから書き込み要求を受信し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるかどうかを判定し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるという決定に応じて、前記ネットワークインタフェースアダプタを介した前記ホストクライアントから前記不揮発性半導体メモリデバイスへの前記データの前記転送を行うために、前記ネットワークインタフェースアダプタを始動し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能でないという決定に応じて、前記ネットワークインタフェースアダプタを介して１つ以上の外部ストレージへクエリをブロードキャストするために、前記ネットワークインタフェースアダプタを始動する
ように構成されるＣＰＵと
を備えるネットワークストレージ装置。
【請求項２】
前記不揮発性半導体メモリデバイスは、
抵抗変化型ランダムアクセスメモリと、
磁気抵抗ランダムアクセスメモリと、
ナノランダムアクセスメモリと、
バッテリバック型ダイナミックランダムアクセスメモリと
の内の１つを備える、請求項１に記載のネットワークストレージ装置。
【請求項３】
前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された揮発性メモリデバイスをさらに備え、前記揮発性メモリデバイスは、前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能ではないという決定に応じて、前記ネットワークインタフェースアダプタを介して前記１つ以上の外部ストレージからデータを受信するように構成され、前記１つ以上の外部ストレージは、１つ以上の第２のネットワークストレージ装置に対応する、
請求項１に記載のネットワークストレージ装置。
【請求項４】
前記揮発性半導体メモリデバイスはさらに、前記複数のソリッドステートディスクの１つに前記データを転送するように構成される、請求項３に記載のネットワークストレージ装置。
【請求項５】
前記ＣＰＵはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントにアクノレッジメントステータスを送信するように構成され、前記アクノレッジメントステータスは、前記データが前記不揮発性半導体メモリデバイスまたは前記１つ以上の外部ストレージに格納されたことを示す、請求項１に記載のネットワークストレージ装置。
【請求項６】
前記ＣＰＵはさらに、
前記ネットワークインタフェースアダプタを介して、前記１つ以上の外部ストレージの内の第１外部ストレージから、前記第１外部ストレージが前記データを格納するために利用可能であることを示す前記クエリに対する応答を受信し、
前記ネットワークインタフェースアダプタを介して前記第１外部ストレージに第２の書き込み要求を送信する
ように構成される、請求項１に記載のネットワークストレージ装置。
【請求項７】
前記１つ以上の外部ストレージは、複数の第２のネットワークストレージ装置の内の１つ以上である、請求項６に記載のネットワークストレージ装置。
【請求項８】
前記第２の書き込み要求は、前記ホストクライアントから前記第１外部ストレージへの前記データの前記転送を開始するために、前記第１外部ストレージを始動する、請求項６に記載のネットワークストレージ装置。
【請求項９】
前記ＣＰＵはさらに、前記ネットワークインタフェースアダプタを介して前記第１外部ストレージから信号を受信するように構成され、前記信号は、前記データが前記第１外部ストレージに格納されたことを示す、請求項８に記載のネットワークストレージ装置。
【請求項１０】
前記ＣＰＵはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに第２のアクノレッジメントステータスを送信するように構成され、前記第２のアクノレッジメントステータスは、前記データが前記第１外部ストレージに格納されたことを示す、請求項９に記載のネットワークストレージ装置。
【請求項１１】
前記ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに従って機能する、請求項１に記載のネットワークストレージ装置。
【請求項１２】
前記ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続される、請求項１に記載のネットワークストレージ装置。
【請求項１３】
前記不揮発性半導体メモリデバイスは、前記ホストクライアントのための予約記憶領域を備える、請求項１に記載のネットワークストレージ装置。
【請求項１４】
前記不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備える、請求項１３に記載のネットワークストレージ装置。
【請求項１５】
前記不揮発性半導体メモリデバイスはさらに、
前記予約記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記予約記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記予約記憶領域から前記データを格納するための空間を割り当てる
ように構成される、請求項１４に記載のネットワークストレージ装置。
【請求項１６】
前記不揮発性半導体メモリデバイスはさらに、
前記予約記憶領域が前記データを格納するために利用可能ではないという決定に応じて、前記ローカル記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記ローカル記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記ローカル記憶領域から前記データを格納するための空間を割り当てる
ように構成される、請求項１５に記載のネットワークストレージ装置。
【請求項１７】
前記不揮発性半導体メモリデバイスはさらに、
前記リモート記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記リモート記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記リモート記憶領域から前記データを格納するための空間を割り当てる
ように構成される、請求項１４に記載のネットワークストレージ装置。
【請求項１８】
前記データは、０．１μ秒より長く１μ秒より短い期間内に、前記ホストクライアントから前記対象のネットワークストレージ装置の前記不揮発性半導体メモリデバイスに転送される、請求項１に記載のネットワークストレージ装置。
【請求項１９】
前記ネットワークインタフェースアダプタは、前記ＣＰＵから独立して前記不揮発性半導体メモリデバイスにアクセスする、請求項１に記載のネットワークストレージ装置。
【請求項２０】
ホストクライアントからネットワークストレージ装置にデータを転送する方法であって、
ホストクライアントから、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置へ第１の書き込み要求を送信することと、
前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して第２のネットワークストレージ装置に第２の書き込み要求を送信することと、
前記ホストクライアントから、前記ネットワークインタフェースアダプタを介して前記第２のネットワークストレージ装置の不揮発性半導体メモリデバイスに、前記第１の書き込み要求に関連付けられたデータを転送することと、
前記第２のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置に、前記データが前記第２のネットワークストレージ装置の前記不揮発性メモリデバイスに格納されたことを示す信号を送信することと、
前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに、前記データが格納されたことを示すアクノレッジメントステータスを送信することと、
前記第２のネットワークストレージ装置の前記不揮発性半導体メモリデバイスから、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置の揮発性半導体メモリデバイスに前記データを転送することと、
前記対象のネットワークストレージ装置の前記揮発性半導体メモリデバイスから、前記対象のネットワークストレージ装置のソリッドステートディスクに前記データを転送することと
を含む方法。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、参照によってその内容の全体がここに組み込まれる、“ＮＶＭ  Ｅｘｐｒｅｓｓ  Ｏｖｅｒ  Ｆａｂｒｉｃｓ”と題された、２０１７年８月３日に出願された米国実用新案出願第１５／６６８，３１４号に対する優先権を主張する。
【技術分野】
【０００２】
本開示は、不揮発性メモリエクスプレスのストレージ装置、および高性能なストレージネットワークに不揮発性ランダムアクセスメモリを実装するための方法に関する。
【背景技術】
【０００３】
ライトコマンドに対する低いレイテンシは、ハイパフォーマンスコンピューティング（ＨＰＣ）において、そして特にストレージネットワークにおいて、重要な特徴である。その重要性の一例は、増大するメモリ内データベース（ＩＭＤＢ）の領域である。ＣＰＵやメモリのような演算リソースの増加は、データベース全体をメモリにロードし、ＣＰＵによってそれを処理することを可能にする。これは、大きなデータセットの高速なメモリ内処理を可能にする。しかし、到来するトランザクションは永続的であるに違いなく、そのため永続性の媒体に書き込まれる必要がある。処理が、そのようなトランザクションのアクノレッジメントまで失速する（ｓｔａｌｌ）とき、それはプロセス全体へのボトルネックになる。
【０００４】
高速ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ  Ｅｘｐｒｅｓｓ）インタフェースと、高効率の記憶スタックとを有するＮＶＭｅ（登録商標）（「不揮発性メモリエクスプレス」）デバイスの導入により、永続性の媒体へのアクセス時間が減少した。加えて、リモートダイレクトメモリアクセス（ＲＤＭＡ）ネットワークインタフェースコントローラ（ＮＩＣ）は、非常に速い（１桁μ秒）データ転送を提供するように進化した。ファブリック規格を介したＮＶＭｅ（登録商標）の導入は、ホストクライアントが低レイテンシのネットワークファブリックを介してＮＶＭｅ（登録商標）ディスクにアクセスできる環境を可能にする。各ホストクライアントおよびストレージ装置は、ファブリック内の各要素間での低レイテンシの転送を可能にするＲＤＭＡ  ＮＩＣを有する。しかし、高性能なストレージネットワークにおいてＮＶＭｅ（登録商標）デバイスを効率的に管理し、実装することへの長年にわたる要求が未だ存在する。
【発明の概要】
【０００５】
本開示は、ソリッドステートディスクと、ソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタと、ソリッドステートディスクおよびネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスと、不揮発性半導体メモリデバイスおよびネットワークインタフェースアダプタに通信可能に結合されたＣＰＵとを備えるネットワークストレージ装置に関する。ネットワークインタフェースアダプタは、ホストクライアントからデータを取得し、ホストクライアントからのデータをソリッドステートディスクに転送することができる。不揮発性半導体メモリデバイスは、ネットワークインタフェースアダプタを介してホストクライアントからのデータを受信し、データを一時的に格納し、ソリッドステートディスクの１つにデータを転送することができる。ＣＰＵは、ネットワークインタフェースアダプタを介してホストクライアントからの書き込み要求を受信し、不揮発性半導体メモリデバイスがデータを格納するために利用可能であるか否かを判定することができる。不揮発性半導体メモリデバイスがデータを格納するために利用可能であると決定する場合には、ＣＰＵは、ネットワークインタフェースアダプタを介したホストクライアントから不揮発性半導体メモリデバイスへのデータの転送を行うために、ネットワークインタフェースアダプタを始動できる。不揮発性半導体メモリデバイスがデータを格納するために利用可能でないと決定する場合には、ＣＰＵは、ネットワークインタフェースアダプタを介して１つ以上の外部ストレージにクエリをブロードキャストするために、ネットワークインタフェースアダプタを始動できる。さらに、ＣＰＵは、ネットワークインタフェースアダプタを介して、データが不揮発性半導体メモリデバイスに格納されたことを示すアクノレッジメントステータスをホストクライアントに送信できる。
【０００６】
ある実装によれば、不揮発性半導体メモリデバイスは、抵抗変化型ランダムアクセスメモリ、磁気抵抗ランダムアクセスメモリ、ナノランダムアクセスメモリ、およびバッテリバック型ダイナミックランダムアクセスメモリの内の１つを備え得る。
【０００７】
いくつかの実装において、ネットワークストレージ装置は、ソリッドステートディスクおよびネットワークインタフェースアダプタに通信可能に結合された揮発性メモリデバイスを含み得る。揮発性メモリデバイスは、不揮発性半導体メモリデバイスがデータを格納するために利用可能ではないと決定する場合に、ネットワークインタフェースアダプタを介して１つ以上の外部ストレージからデータを受信し得る。１つ以上の外部ストレージは、１つ以上の第２のネットワークストレージ装置に対応し得る。揮発性メモリデバイスは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を備え得る。
【０００８】
他の実装において、揮発性半導体メモリデバイスはデータを一時的に格納し、ソリッドステートディスクの１つにデータを転送し得る。
【０００９】
ある実装において、ＣＰＵは、ネットワークインタフェースアダプタを介して１つ以上の外部ストレージの内の第１外部ストレージから、クエリに対する応答を受信し得る。クエリに対する応答は、第１外部ストレージがデータを格納するために利用可能であることを示し得る。ＣＰＵは、ネットワークインタフェースアダプタを介して第１外部ストレージに第２の書き込み要求を送信し得る。１つ以上の外部ストレージは、ストレージネットワーク内の多数のネットワークストレージ装置の内の１つ以上であり得る。
【００１０】
１つの実装によれば、第２の書き込み要求は、ホストクライアントから第１外部ストレージへのデータの転送を開始するために第１外部ストレージを始動し得る。
【００１１】
いくつかの実装において、ＣＰＵは、ネットワークインタフェースアダプタを介して１つ以上の外部ストレージから信号を受信し得る。信号は、データが１つ以上の外部ストレージに格納されたことを示し得る。
【００１２】
他の実装において、ＣＰＵは、ネットワークインタフェースアダプタを介して第２のアクノレッジメントステータスをホストクライアントに送信し得る。第２のアクノレッジメントステータスは、データが１つ以上の外部ストレージに格納されたことを示し得る。
【００１３】
いくつかの実装によれば、ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに従って機能する。ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続され得る。１つの実装によれば、ネットワークインタフェースアダプタは、ＣＰＵから独立して不揮発性半導体メモリデバイスにアクセスする。
【００１４】
いくつかの実装において、不揮発性半導体メモリデバイスは、ホストクライアントのための予約記憶領域を備え得る。不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備え得る。
【００１５】
ある実装において、不揮発性半導体メモリデバイスは、予約記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。予約記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、予約記憶領域からデータを格納するための空間を割り当て得る。
【００１６】
他の実装において、不揮発性半導体メモリデバイスは、予約記憶領域がデータを格納するために利用可能ではないという決定に応じて、ローカル記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。ローカル記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、ローカル記憶領域からデータを格納するための空間を割り当て得る。
【００１７】
１つの実装によれば、不揮発性半導体メモリデバイスは、リモート記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。リモート記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、リモート記憶領域からデータを格納するための空間を割り当て得る。
【００１８】
いくつかの実装において、データは、０．１μ秒より長く１μ秒より短い期間内に、ホストクライアントから対象のネットワークストレージ装置の不揮発性半導体メモリデバイスに転送される。
【００１９】
本開示の第２の態様は、ホストクライアントからネットワークストレージ装置にデータを転送する方法に関する。方法は、ホストクライアントから、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置に第１の書き込み要求を送信することを含む。方法は、対象のネットワークストレージ装置から、ネットワークインタフェースアダプタを介して第２のネットワークストレージ装置に第２の書き込み要求を送信することも含む。方法はさらに、ホストクライアントから、ネットワークインタフェースアダプタを介して第２のネットワークストレージ装置の不揮発性半導体メモリデバイスに、第１の書き込み要求に関連付けられたデータを転送することを含む。さらに、方法は、ネットワークインタフェースアダプタを介して第２のネットワークストレージ装置から対象のネットワークストレージ装置に、データが第２のネットワークストレージ装置の不揮発性半導体メモリデバイスに格納されたことを示す信号を送信することを含む。方法は、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置からホストクライアントに、データが格納されたことを示すアクノレッジメントステータスを送信することも含む。さらに、方法は、ネットワークインタフェースアダプタを介して第２のネットワークストレージ装置の不揮発性半導体メモリデバイスから、対象のネットワークストレージ装置の揮発性半導体メモリデバイスにデータを転送することを含む。方法はさらに、対象のネットワークストレージ装置の揮発性半導体メモリデバイスから、対象のネットワークストレージ装置のソリッドステートディスクにデータを転送することを含む。
【００２０】
いくつかの実装によれば、不揮発性半導体メモリデバイスは、抵抗変化型ランダムアクセスメモリ、磁気抵抗ランダムアクセスメモリ、ナノランダムアクセスメモリ、およびバッテリバック型ダイナミックランダムアクセスメモリの内の１つを備え得る。
【００２１】
いくつかの実装において、揮発性メモリデバイスは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を備え得る。
【００２２】
他の実装において、ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに従って機能する。ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続され得る。１つの実装によれば、ネットワークインタフェースアダプタは、ＣＰＵから独立して不揮発性半導体メモリデバイスにアクセスする。
【００２３】
いくつかの実装によれば、不揮発性半導体メモリデバイスは、ホストクライアントのための予約記憶領域を備え得る。不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備え得る。
【００２４】
ある実装において、方法はさらに、予約記憶領域がデータを格納するために利用可能であるかどうかを判定することと、予約記憶領域がデータを格納するために利用可能であるという決定に応じて、予約記憶領域からデータを格納するための空間を割り当てることとを備える。
【００２５】
他の実装において、方法は、予約記憶領域がデータを格納するために利用可能ではないという決定に応じて、ローカル記憶領域がデータを格納するために利用可能であるかどうかを判定することと、ローカル記憶領域がデータを格納するために利用可能であるという決定に応じて、ローカル記憶領域からデータを格納するための空間を割り当てることとを備える。
【００２６】
いくつかの実装によれば、方法はさらに、リモート記憶領域がデータを格納するために利用可能であるかどうかを判定することと、リモート記憶領域がデータを格納するために利用可能であるという決定に応じて、リモート記憶領域からデータを格納するための空間を割り当てることとを備える。
【００２７】
ある実装において、方法はさらに、０．１μ秒より長く１μ秒より短い期間内に、ホストクライアントから対象のネットワークストレージ装置の不揮発性半導体メモリデバイスにデータを転送することを備える。
【００２８】
ある実装において、第２のネットワークストレージ装置は、ストレージネットワーク内の多数のネットワークストレージ装置の内の１つであってもよい。
【図面の簡単な説明】
【００２９】
上述のおよび他の目的および利点は、全体を通して同様の参照符号が同様の部分を指す添付図面とともに挙げられる、以下の詳細な説明の考察により明らかになる。
【００３０】
【図１】図１は本開示の１つ以上の実施形態に従って構成された、不揮発性メモリを有するＮＶＭｅ（登録商標）ストレージ装置の概略図を示す。
【００３１】
【図２】図２は本開示の実施形態に係る、不揮発性メモリに対する、ファブリックを介したＮＶＭｅ（登録商標）のライトコマンドに関する方法ステップのフロー図である。
【００３２】
【図３】図３は本開示の１つ以上の実施形態に従って構成された、ＮＶＭｅ（登録商標）ストレージ装置および第２のＮＶＭｅ（登録商標）ストレージ装置の概略図を示す。
【００３３】
【図４】図４は本開示の実施形態に係る、第２のＮＶＭｅ（登録商標）ストレージ装置に対する、ファブリックを介したＮＶＭｅ（登録商標）のライトコマンドに関する方法ステップのフロー図である。
【００３４】
【図５】図５は本開示の１つ以上の実施形態に従って構成された、不揮発性メモリ層およびＮＶＭｅ（登録商標）層を有するＮＶＭｅ（登録商標）ストレージ装置の概略図を示す。
【００３５】
【図６】図６は本開示の１つ以上の実施形態に従って構成された、ＮＶＭｅ（登録商標）ストレージ装置内の不揮発性半導体メモリデバイスの概略図を示す。
【００３６】
【図７】図７は本開示の実施形態に係る、ファブリックを介したＮＶＭｅ（登録商標）のライトコマンドの間の、空間の割り当てに関する方法ステップのフロー図である。
【発明を実施するための形態】
【００３７】
図１は、ファブリック１１２を介して通信するホストクライアント１０２およびストレージ装置１１４を備えるＮＶＭｅ（登録商標）システム１００の概略図を示す。ホストクライアント１０２は、アプリケーション１０４、ＣＰＵ（「中央処理ユニット」）１０６、およびＤＲＡＭ（「ダイナミックランダムアクセスメモリ」）１０８を備えるコンピューティングシステムである。ストレージ装置１１４は、ＣＰＵ１２６、不揮発性メモリ３０８、および複数のＮＶＭｅ（登録商標）ディスク１１６を備えるコンピューティングシステムである。ホストクライアント１０２とストレージ装置１１４とは、ＮＩＣの一種であるＲＤＭＡネットワークアダプタ１１０および１３０を用いてインタフェース接続する。ＤＲＡＭ１０８は、電力が加えられている間のみデータを保持する。ファブリック１１２は、相互接続スイッチと、電気ケーブル、光ファイバ、または無線リンクのようなネットワーク接続とを介して、複数のノードが互いにデータを受け渡すネットワークトポロジである。
【００３８】
不揮発性メモリ３０８は、電力がオフにされたときに自身の情報を保持するランダムアクセスメモリである。不揮発性メモリ３０８はバッテリバック型ＤＲＡＭ、または多数の新興技術の１つであり得る。バッテリバック型ＤＲＡＭは、ＤＲＡＭ１０８と類似するが、ＤＲＡＭが電力を失わず、データを保持するように、バッテリによってサポートされる。新興の不揮発性メモリ技術の一例は、誘電性固体材料にわたる抵抗を変化させることによって機能する抵抗変化型ランダムアクセスメモリ（ＲＲＡＭまたはＲｅＲＡＭ）である。新興の不揮発性メモリ技術の別の例は、磁気素子を用いる磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）である。加えて、カーボンナノチューブ技術に基づくナノＲＡＭ（Ｎａｎｏ−ＲＡＭ）のような将来の技術も存在する。不揮発性メモリ３０８は、ＮＶＭｅ（登録商標）ディスク１１６内にあってもよい。
【００３９】
ホストクライアント１０２がストレージ装置１１４内の特定のＮＶＭｅ（登録商標）ディスク１１６にデータを書き込むことを所望すると、ホストクライアントのＣＰＵ１０６はライトコマンドをカプセル化し、ＲＤＭＡインタフェース１１０を用いてストレージ装置１１４のＣＰＵ１２６にライトコマンドを送信する。ストレージ装置１１４が受信可能になったらすぐに、データがストレージ装置１１４に送信可能な状態になるように、アプリケーション１０４はホストクライアントのＤＲＡＭ１０８にデータを送る。
【００４０】
ストレージ装置１１４がＲＤＭＡインタフェース１３０を用いてライトコマンドを受信した時点で、ストレージ装置１１４のＣＰＵ１２６は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。そして、ストレージ装置１１４のＣＰＵ１２６は、ＲＤＭＡインタフェース１３０を用いてホストクライアント１０２のＤＲＡＭ１０８からストレージ装置１１４の不揮発性メモリ３０８へのデータのトランザクションを開始する。ＲＤＭＡ１３０のトランザクションの後、データはストレージ装置１１４の不揮発性メモリ３０８に存在する。
【００４１】
ストレージ装置１１４の不揮発性メモリ３０８にデータが存在した時点で、不揮発性メモリ３０８は、データが不揮発性メモリ３０８に格納されたことを示すステータスをストレージ装置１１４のＣＰＵ１２６に送信する。そして、ストレージ装置１１４のＣＰＵ１２６、そのステータスをカプセル化し、ＲＤＭＡインタフェース１３０を用いてホストクライアント１０２のＣＰＵ１０６に送信する。ステータスは、指定されたＮＶＭｅ（登録商標）ディスク１１６にデータが格納された旨のアクノレッジメントとして役立つ。
【００４２】
ストレージ装置１１４がホストクライアント１０２にアクノレッジメントを送信してから、バックグラウンド処理において、ストレージ装置１１４のＣＰＵ１２６は、ストレージ装置１１４の不揮発性メモリ３０８から、ライトコマンドによって指定されたＮＶＭｅ（登録商標）ディスク１１６へのデータの転送を開始する。
【００４３】
ＮＶＭｅ（登録商標）システム１００を用いるライトコマンドの処理２００が、図２に示される。処理２００は、ステップ４０２において、カプセル化されたライトコマンドを送信することで開始する。例えば、ＮＶＭｅ（登録商標）システム１００において、ホストクライアント１０２がストレージ装置１１４内の特定のＮＶＭｅ（登録商標）ディスク１１６にデータを書き込むことを所望すると、ホストクライアントのＣＰＵ１０６は、ライトコマンドをカプセル化し、ＲＤＭＡインタフェース１１０を用いてストレージ装置１１４のＣＰＵ１２６にライトコマンドを送信する。ストレージ装置１１４が受信可能になったらすぐに、データがストレージ装置１１４に送信可能な状態になるように、アプリケーション１０４はホストクライアントのＤＲＡＭ１０８にデータを送る。
【００４４】
処理２００は、ステップ４０４において、ホストクライアント１０２からストレージ装置１１４にデータを転送することで継続する。例えば、ＮＶＭｅ（登録商標）システム１００において、ストレージ装置１１４がＲＤＭＡインタフェース１３０を用いてライトコマンドを受信すると、ストレージ装置１１４のＣＰＵ１２６は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。そして、ストレージ装置のＣＰＵ１２６は、ＲＤＭＡインタフェース１３０を用いて、ホストクライアント１０２のＤＲＡＭ１０８からストレージ装置１１４の不揮発性メモリ３０８へのデータのトランザクションを開始する。ＲＤＭＡ１３０のトランザクションの後、データはストレージ装置１１４の不揮発性メモリ３０８に存在する。
【００４５】
処理２００は、ステップ４０６において、ストレージ装置１１４のＣＰＵ１２６からホストクライアント１０２にアクノレッジメントを送信することで継続する。例えば、ＮＶＭｅ（登録商標）システム１００において、データがストレージ装置１１４の不揮発性メモリ３０８に存在した時点で、不揮発性メモリ３０８は、データが不揮発性メモリ３０８に格納されたことを示すステータスをストレージ装置１１４のＣＰＵ１２６に送信する。そして、ストレージ装置１１４のＣＰＵ１２６は、そのステータスをカプセル化し、ＲＤＭＡインタフェース１３０を用いてホストクライアント１０２のＣＰＵ１０６に送信する。ステータスは、指定されたＮＶＭｅ（登録商標）ディスク１１６にデータが格納された旨のアクノレッジメントとして役立つ。
【００４６】
処理２００は、ステップ４０８において、不揮発性メモリ３０８からＮＶＭｅ（登録商標）ディスク１１６の１つにデータを転送することで終了する。例えば、ＮＶＭｅ（登録商標）システム１００において、ストレージ装置１１４がホストクライアント１０２にアクノレッジメントを送信してから、バックグラウンド処理において、ストレージ装置１１４のＣＰＵ１２６は、ストレージ装置１１４の不揮発性メモリ３０８から、ライトコマンドによって指定されたＮＶＭｅ（登録商標）ディスク１１６へのデータの転送を開始する。
【００４７】
従来技術のシステムにおいて、ストレージ装置１１４は、データをＮＶＭｅ（登録商標）ディスク１１６に転送する前に、ホストクライアント１０２から転送されたデータを格納するためにＤＲＡＭに頼る。ＤＲＡＭは電力が加えられている間だけデータを保持するので、従来技術のシステムは、データが格納された旨のアクノレッジメントをホストクライアント１０２に送信する前に、データがＮＶＭｅ（登録商標）ディスク１１６に転送されるまで待機する必要がある。ＲＤＭＡインタフェース１１０および１３０は高帯域幅および低レイテンシを有するので、従来技術のシステムにおける主な時間消費は、ディスクアクセスにある。
【００４８】
処理２００は、レイテンシが、ホストクライアント１０２とストレージ装置１１４との間の転送レイテンシのみになることを可能にする。不揮発性メモリ３０８からＮＶＭｅ（登録商標）ディスク１１６へのデータの転送は、処理２００のレイテンシに影響を及ぼさない。しかし、バッテリバック型ＤＲＡＭのストレージ装置１１４の実装でも、不揮発性メモリ３０８は、ＮＶＭｅ（登録商標）ディスク１１６に比べて相対的に小さい。よって、データを受信することが意図されたストレージ装置１１４が不揮発性メモリ３０８からＮＶＭｅ（登録商標）ディスク１１６にデータを転送する間に、到来するデータを格納するために別のストレージ装置１１４を用いることが必要とされ得る。
【００４９】
図３は、ファブリック１１２を介して通信する、ホストクライアント１０２と、対象のストレージ装置５１４と、第２のストレージ装置５２０とを備えるＮＶＭｅ（登録商標）システム３００の概略図を示す。ホストクライアント１０２は、アプリケーション１０４、ＣＰＵ１０６、およびＤＲＡＭ１０８を備えるコンピューティングシステムである。対象のストレージ装置５１４および第２のストレージ装置５２０は、ＣＰＵ１２６、不揮発性メモリ３０８、ＤＲＡＭ５１８、および複数のＮＶＭｅ（登録商標）ディスク１１６を備えるコンピューティングシステムである。ホストクライアント１０２、対象のストレージ装置５１４、および第２のストレージ装置５２０は、ネットワークインタフェースコントローラの一種であるＲＤＭＡ１１０および１３０を用いてインタフェース接続する。ＤＲＡＭ５１８は、ＤＲＡＭ１０８と同様である。
【００５０】
ホストクライアント１０２が、対象のストレージ装置５１４内の特定のＮＶＭｅ（登録商標）ディスク１１６にデータを書き込むことを所望すると、ホストクライアントのＣＰＵ１０６は、ライトコマンドをカプセル化し、ＲＤＭＡインタフェース１１０を用いて対象のストレージ装置５１４のＣＰＵ１２６にライトコマンドを送信する。データが送信可能な状態になるように、アプリケーション１０４はホストクライアントのＤＲＡＭ１０８にデータを送る。
【００５１】
対象のストレージ装置５１４がＲＤＭＡインタフェース１３０を用いてライトコマンドを受信した時点で、対象のストレージ装置５１４のＣＰＵ１２６は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。対象のストレージ装置５１４の不揮発性メモリ３０８が、ホストクライアント１０２が転送を所望するデータのための空き空間を有していない場合、対象のストレージ装置のＣＰＵ１２６は、ＲＤＭＡインタフェース１１０を用いて、ライトコマンドを第２のストレージ装置５２０のＣＰＵ１２６へリダイレクトする。
【００５２】
第２のストレージ装置５２０のＣＰＵ１２６は、対象のストレージ装置５１４のＣＰＵ１２６からリダイレクトされたライトコマンドを受信すると、コマンドを処理するためのリソースを有しているかどうかを判定する。第２のストレージ装置５２０が、ホストクライアント１０２からのデータを受信するためのリソースを有していない場合、対象のストレージ装置５１４のＣＰＵ１２６が、データを受信できる、別の通信可能に結合されたストレージ装置（図示せず）にコマンドを向けられるように、第２のストレージ装置５２０は対象のストレージ装置５１４のＣＰＵ１２６に通知することになる。
【００５３】
第２のストレージ装置５２０が、データを受信するためのリソースを有している場合、第２のストレージ装置５２０のＣＰＵ１２６は、ＲＤＭＡインタフェース１３０を用いて、ホストクライアント１０２のＤＲＡＭ１０８から第２のストレージ装置５２０の不揮発性メモリ３０８へのデータのトランザクションを開始する。ＲＤＭＡ１３０のトランザクションの後、データは第２のストレージ装置５２０の不揮発性メモリ３０８に存在する。
【００５４】
データが第２のストレージ装置５２０の不揮発性メモリ３０８に存在した時点で、不揮発性メモリ３０８は、データが第２のストレージ装置５２０の不揮発性メモリ３０８に格納されたことを示すステータスを、対象のストレージ装置５１４のＣＰＵ１２６に送信する。そして、対象のストレージ装置５１４のＣＰＵ１２６は、データが第２のストレージ装置５２０の不揮発性メモリ３０８に格納されたことを示すステータスをカプセル化して、ＲＤＭＡインタフェース１３０を用いてホストクライアント１０２のＣＰＵ１０６に送信する。ステータスは、データが第２のストレージ装置５２０の不揮発性メモリ３０８に格納された旨のアクノレッジメントとして役立つ。
【００５５】
バックグラウンド処理において、第２のストレージ装置５２０のＣＰＵ１２６は、第２のストレージ装置５２０の不揮発性メモリ３０８から対象のストレージ装置５１４のＤＲＡＭ５１８へのデータの転送を開始する。データが対象のストレージ装置５１４のＤＲＡＭ５１８に格納された時点で、対象のストレージ装置５１４のＣＰＵ１２６は、対象のストレージ装置５１４のＤＲＡＭ５１８から、ライトコマンドによって指定された対象のストレージ装置のＮＶＭｅ（登録商標）ディスク１１６へのデータの転送を開始する。
【００５６】
ＮＶＭｅ（登録商標）システム３００を用いるライトコマンドの処理４００が図４に示される。処理４００は、ステップ６０２において、カプセル化されたライトコマンドをホストクライアント１０２から対象のストレージ装置５１４に送信することで開始する。例えば、ＮＶＭｅ（登録商標）システム３００において、ホストクライアント１０２が、対象のストレージ装置５１４内の特定のＮＶＭｅ（登録商標）ディスク１１６にデータを書き込むことを所望するとき、ホストクライアントのＣＰＵ１０６はライトコマンドをカプセル化し、ＲＤＭＡインタフェース１１０を用いて対象のストレージ装置５１４のＣＰＵ１２６にライトコマンドを送信する。データが送信できる状態になるように、アプリケーション１０４はホストクライアントのＤＲＡＭ１０８にデータを送る。
【００５７】
処理４００は、ステップ６０４において、対象のストレージ装置５１４から第２のストレージ装置５２０へ、カプセル化されたライトコマンドを有するクエリをブロードキャストすることで継続する。例えば、ＮＶＭｅ（登録商標）システム３００において、対象のストレージ装置５１４がＲＤＭＡインタフェース１３０を用いてライトコマンドを受信した時点で、対象のストレージ装置５１４のＣＰＵ１２６は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。対象のストレージ装置５１４の不揮発性メモリ３０８が、ホストクライアント１０２が転送を所望するデータのための空き空間を有していない場合、対象のストレージ装置のＣＰＵ１２６は、ＲＤＭＡインタフェース１３０を用いて、ライトコマンドを第２のストレージ装置５２０のＣＰＵ１２６へリダイレクトする。
【００５８】
処理４００は、ステップ６０６において、第２のストレージ装置５２０のリソースの利用の可能性を判定することで継続する。例えば、ＮＶＭｅ（登録商標）システム３００において、第２のストレージ装置５２０のＣＰＵ１２６は、対象のストレージ装置５２０のＣＰＵ１２６からリダイレクトされたライトコマンドを受信すると、そのコマンドを処理するためのリソースを有しているかどうかを判定する。第２のストレージ装置５２０が、ホストクライアント１０２からのデータを受信するためのリソースを有していない場合、対象のストレージ装置５１４のＣＰＵ１２６が、データを受信できる、別の通信可能に結合されたストレージ装置（図示せず）へコマンドを向けられるように、第２のストレージ装置５２０は対象のストレージ装置５１４のＣＰＵ１２６に通知することになる。
【００５９】
処理４００は、ステップ６０８において、ホストクライアント１０２のＤＲＡＭ１０８から第２のストレージ装置５２０の不揮発性メモリ３０８にデータを送信することで継続する。例えば、ＮＶＭｅ（登録商標）システム３００において、第２のストレージ装置５２０がデータを受信するためのリソースを有している場合、第２のストレージ装置５２０のＣＰＵ１２６は、ＲＤＭＡインタフェース１３０を用いた、ホストクライアント１０２のＤＲＡＭ１０８から第２のストレージ装置５２０の不揮発性メモリ３０８へのデータのトランザクションを開始する。ＲＤＭＡ１３０のトランザクションの後、データは第２のストレージ装置５２０の不揮発性メモリ３０８に存在する。
【００６０】
処理４００は、ステップ６１０において、対象のストレージ装置５１４のＣＰＵ１２６からホストクライアント１０２にアクノレッジメントを送信することで継続する。例えば、ＮＶＭｅ（登録商標）システム３００において、データが第２のストレージ装置５２０の不揮発性メモリ３０８に存在した時点で、不揮発性メモリ３０８は、データが第２のストレージ装置５２０の不揮発性メモリ３０８に格納されたことを示すステータスを、対象のストレージ装置５１４のＣＰＵ１２６に送信する。そして、対象のストレージ装置５１４のＣＰＵ１２６は、データが第２のストレージ装置５２０の不揮発性メモリ３０８に格納されたことを示すステータスをカプセル化し、ＲＤＭＡインタフェース１３０を用いてホストクライアント１０２のＣＰＵ１０６に送信する。ステータスは、データが第２のストレージ装置５２０の不揮発性メモリ３０８に格納された旨のアクノレッジメントとして役立つ。
【００６１】
処理４００は、ステップ６１２において、第２のストレージ装置の不揮発性メモリ３０８から対象のストレージ装置５１４のＤＲＡＭ５１８にデータを転送することで継続する。例えば、ＮＶＭｅ（登録商標）システム３００では、バックグラウンド処理において、第２のストレージ装置５２０のＣＰＵ１２６が、第２のストレージ装置５２０の不揮発性メモリ３０８から対象のストレージ装置５１４のＤＲＡＭ５１８へのデータの転送を開始する。
【００６２】
処理４００は、ステップ６１４において、ＤＲＡＭ５１８から対象のストレージ装置５１４の１つに、対象のストレージ装置５１４のＮＶＭｅ（登録商標）ディスク１１６の１つにデータを転送することで終了する。例えば、ＮＶＭｅ（登録商標）システム３００において、データが対象のストレージ装置５１４のＤＲＡＭ５１８に格納された時点で、対象のストレージ装置５１４のＣＰＵ１２６は、対象のストレージ装置５１４のＤＲＡＭ５１８から、ライトコマンドによって指定された対象のストレージ装置のＮＶＭｅ（登録商標）ディスク１１６へのデータの転送を開始する。
【００６３】
図５は、ファブリック１１２を介して通信する、２つのホストクライアント１０２と、対象のストレージ装置５１４と、第２のストレージ装置５２０とを備えるＮＶＭｅ（登録商標）システム５００の概略図を示す。ホストクライアント１０２は、アプリケーション１０４、ＣＰＵ１０６、およびＤＲＡＭ１０８を備えるコンピューティングシステムである。対象のストレージ装置５１４および第２のストレージ装置５２０は、ＣＰＵ１２６、ＤＲＡＭ５１８、および複数のＮＶＭｅ（登録商標）ディスクを備えるコンピューティングシステムである。ホストクライアント１０２と、対象のストレージ装置５１４と、第２のストレージ装置５２０とは、ネットワークインタフェースコントローラの一種であるＲＤＭＡ１１０および１３０を用いてインタフェース接続する。ＮＶＭｅ（登録商標）システム５００は、不揮発性メモリ層７０８およびＮＶＭｅ（登録商標）層７１６を備える。不揮発性メモリ層７０８は、複数の不揮発性メモリデバイス３０８の集合である。ＮＶＭｅ（登録商標）層７１６は、複数のＮＶＭｅ（登録商標）ディスク１１６の集合である。ＮＶＭｅ（登録商標）システム５００は、３つ以上のホストクライアント１０２と、２つ以上の第２のストレージ装置５２０を備えていてもよい。
【００６４】
ＮＶＭｅ（登録商標）システム５００は、大規模なストレージの配備においてＮＶＲＡＭの割り当てを可能にし、不揮発性メモリ層７０８を有効にする。ホストクライアント１０２が対象のストレージ装置５１４内の特定のＮＶＭｅ（登録商標）ディスク１１６にデータを書き込むことを所望すると、ホストクライアントのＣＰＵ１０６は、ライトコマンドをカプセル化し、ＲＤＭＡインタフェース１１０を用いて、対象のストレージ装置５１４のＣＰＵ１２６にライトコマンドを送信する。対象のストレージ装置５１４は、ホストクライアント１０２のＤＲＡＭ１０８からデータを転送するために不揮発性メモリ層７０８を利用し、さらに、不揮発性メモリ層７０８からＮＶＭｅ（登録商標）層７１６の特定のＮＶＭｅ（登録商標）ディスクにデータを転送する。
【００６５】
例えば、対象のストレージ装置５１４が十分なローカルリソースを有している場合、対象のストレージ装置５１４は、不揮発性メモリ層７０８のローカル部分にデータを格納する。そして、対象のストレージ装置５１４は、アクノレッジメントステータスをホストクライアント１０２に送信する。対象のストレージ装置５１４が十分なローカルリソースを有していない場合、対象のストレージ装置５１４は、ネットワーク内の全ての第２のストレージ装置５２０へクエリをブロードキャストして、データを受信できる第２のストレージ装置５２０が存在するかを問い合わせる。利用可能なリソースを有する第２のストレージ装置５２０の１つは、自身がデータを受信可能であることを示す信号を対象のストレージ装置５１４に送信する。このプロセスは、処理４００によって説明したように継続する。
【００６６】
不揮発性メモリ層７０８の貴重で有限なリソースを割り当てるために、適正かつユーザ定義のメカニズムが定義されるべきである。図６は、ＮＶＲＡＭデバイス８０２の概略図を示す。ＮＶＲＡＭ８０２は、不揮発性メモリ層７０８の貴重で有限なリソースを割り当てるためのユーザ定義のメカニズムの一例である。ＮＶＲＡＭ８０２は、管理者によって経験的に予約領域８０４、ローカル領域８１２、およびリモート領域８１４に分割された記憶空間を備える不揮発性半導体メモリデバイスである。ＮＶＲＡＭ８０２は、不揮発性メモリデバイス３０８の一例である。
【００６７】
予約領域８０４は、各ホストクライアント１０２のために利用可能な、保証された記憶領域を定める。予約領域８０４は、複数の領域にさらに分割され、各領域が１つのホストクライアント１０２の専用である。ホスト１  ８０６は、第１のホストクライアント１０２専用の記憶領域である。ホスト２  ８０８は、第２のホストクライアント１０２専用の記憶領域である。ホストＮ  ８１０は、Ｎ番目のホストクライアント１０２専用の記憶領域である。
【００６８】
ローカル領域８１２は、ローカルＮＶＭｅ（登録商標）ディスク１１６への格納のためにＮＶＲＡＭ８０２に送信されるデータに割り当てられた記憶領域である。ローカル領域８１２は、特定のホストクライアント１０２に対応する予約領域８０４が一杯である場合の余剰空間として機能する。例えば、ホストクライアント１０２に対応するホスト１記憶領域８０６が一杯であり、ＮＶＲＡＭ８０２がホストクライアント１０２からデータを受信した場合、新たなデータはローカル領域８１２に格納され得る。
【００６９】
リモート領域８１４は、遠隔のＮＶＭｅ（登録商標）ディスク１１６への格納のためにＮＶＲＡＭ８０２に送信されるデータに割り当てられた記憶領域である。リモート領域８１４は、対象のストレージ装置５１４の予約領域８０４が一杯であり、第２のストレージ装置５２０がデータを受信する必要がある場合の余剰空間として機能する。例えば、対象のストレージ装置５１４のＮＶＲＡＭ８０２が一杯である場合、第２のストレージ装置５２０のＮＶＲＡＭ８０２はデータを受信して、リモート記憶領域８１４に格納することができる。
【００７０】
ＮＶＲＡＭデバイス８０２においてライトコマンドのために空間を割り当てる処理７００が、図７に示される。処理７００は、ステップ９０２において、ホストクライアント１０２から対象のストレージ装置５１４にカプセル化されたライトコマンドを送信することで開始する。例えば、ホストクライアントのＣＰＵ１０６は、ライトコマンドをカプセル化し、ＲＤＭＡインタフェース１１０を用いて、対象のストレージ装置５１４のＣＰＵ１０６にライトコマンドを送信する。
【００７１】
処理７００は、ステップ９０４において、カプセル化されたライトコマンドのコマンド優先権を判定することで継続する。ホストクライアント１０２からのカプセル化されたライトコマンドは、ライトコマンドが、対象のストレージ装置５１４での格納を対象として
いるか、それとも第２のストレージ装置５２０での格納を対象としているかを指定するコマンド優先権を有していてもよい。コマンド優先権が、第２のストレージ装置５２０にデータを送信することである場合、処理７００はステップ９０６へ続く。コマンド優先権が、対象のストレージ装置５１４にデータを送信することである場合、処理７００はステップ９０８へ続く。
【００７２】
ステップ９０６において、対象のストレージ装置５１４は、ライトコマンドを有するクエリを第２のストレージ装置５２０へブロードキャストする。例えば、対象のストレージ装置５１４のＣＰＵ１０６は、ＲＤＭＡインタフェース１１０を用いて、第２のストレージ装置５２０のＣＰＵ１０６にライトコマンドを送信する。対象のストレージ装置５１４のＣＰＵ１０６は、ＲＤＭＡインタフェース１１０を用いて第２のストレージ装置５２０へクエリをブロードキャストするためにＲＤＭＡインタフェース１１０を始動してもよい。ステップ９０６の後、処理７００は、上述したように、処理４００によって説明したように継続する。
【００７３】
ステップ９０８において、処理７００は、ホストクライアント１０２専用の利用可能な予約領域８０４が存在するどうかを判定することで継続する。ホストクライアント１０２専用の利用可能な予約領域８０４が存在する場合、処理７００はステップ９１０へ続く。ホストクライアント１０２専用の利用可能な予約領域８０４が存在しない場合、処理７００はステップ９１２へ続く。
【００７４】
ステップ９１０において、処理７００は、予約領域８０４からデータ格納のために空間を割り当てることで継続する。例えば、ホストクライアント１０２に対応するホスト１記憶領域８０６が利用可能である場合、ホスト１記憶領域８０６は、ホストクライアント１０２から到来するデータを格納するために用いられ得る。ステップ９１０の後、処理７００は、上述したように、処理２００によって説明したように継続する。
【００７５】
ステップ９１２において、処理７００は、利用可能なローカル領域８１２が存在するかどうかを判定することで継続する。利用可能なローカル領域８１２が存在しない場合、処理７００はステップ９０６へ続く。利用可能なローカル領域８１２が存在する場合、処理７００はステップ９１４へ続く。
【００７６】
ステップ９１４において、処理７００は、ホストクライアント１０２がローカル領域８１２内の割り当ての限界値に達したかどうかを判定することで継続する。ホストクライアント１０２がローカル領域８１２内の割り当ての限界値に達している場合、処理７００はステップ９０６へ続く。ホストクライアント１０２がローカル領域８１２内の割り当ての限界値に達していない場合、処理７００はステップ９１６へ続く。
【００７７】
ステップ９１６において、処理７００は、ライトコマンドの優先度が閾値優先度よりも高いかどうかを判定する。ライトコマンドの優先度が閾値優先度よりも高くない場合、処理７００はステップ９０６へ続く。ライトコマンドの優先度が閾値優先度よりも高い場合、処理７００はステップ９１８へ続く。
【００７８】
処理７００は、ステップ９１８において、ローカル領域８１２からデータ格納のために空間を割り当てることで終了する。例えば、ホストクライアント１０２に対応するホスト１記憶領域８０６が一杯であって、ＮＶＲＡＭ８０２がホストクライアント１０２からデータを受信した場合、新たなデータはローカル領域８１２に格納され得る。
【００７９】
同様のプロセスが、第２のホストクライアント１０２からのコマンドを受信した場合に発生する。この状況においては、対象のストレージ装置５１４は、利用可能な空間に関してリモート領域８１４を確認する。利用可能な空間がリモート領域８１４に存在する場合、対象のストレージ装置５１４は、リモート領域８１４から、到来するコマンドのために空間を割り当てる。
【００８０】
本発明の様々な態様の他の目的、利点、および実施形態は、本発明の分野の当業者に明らかであり、本明細書および添付図面の範囲内である。例えば、限定はされないが、構造的または機能的な要素が本発明と矛盾することなく再編成され得る。同様に、本発明に係る原理は他の例にも適用されてよく、それらは、ここに詳しく記載されない場合でも、本発明の範囲内であるものとする。
【図１】
2020529678.tif 000003
【図２】
2020529678.tif 000004
【図３】
2020529678.tif 000005
【図４】
2020529678.tif 000006
【図５】
2020529678.tif 000007
【図６】
2020529678.tif 000008
【図７】
2020529678.tif 000009
【国際調査報告】
2020529678.tif 000010
2020529678.tif 000011
2020529678.tif 000012
2020529678.tif 000013