(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-28
(45)【発行日】2024-07-08
(54)【発明の名称】ファブリックを介したNVMエクスプレス
(51)【国際特許分類】
G06F 13/10 20060101AFI20240701BHJP
G06F 13/38 20060101ALI20240701BHJP
G06F 13/28 20060101ALI20240701BHJP
G06F 3/06 20060101ALI20240701BHJP
G06F 3/08 20060101ALI20240701BHJP
【FI】
G06F13/10 340B
G06F13/38 330B
G06F13/28 310E
G06F3/06 301R
G06F3/08 H
【外国語出願】
(21)【出願番号】P 2023020700
(22)【出願日】2023-02-14
(62)【分割の表示】P 2020505813の分割
【原出願日】2018-08-01
【審査請求日】2023-02-21
(32)【優先日】2017-08-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】クレイン、ヤーロン
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2002-082833(JP,A)
【文献】米国特許出願公開第2017/0149920(US,A1)
【文献】特表2010-512568(JP,A)
【文献】特開2006-164218(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10-13/14
G06F 13/20-13/42
G06F 3/06-3/08
(57)【特許請求の範囲】
【請求項1】
複数の
第1のソリッドステートディスクと、
前記複数の
第1のソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタであって、
前記ホストクライアントからデータを取得し、
前記データを前記ホストクライアントから前記複数の
第1のソリッドステートディスクに転送する
ように構成されるネットワークインタフェースアダプタと、
前記複数の
第1のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントからデータを受信し、
前記データを一時的に格納し、
前記データを前記複数の
第1のソリッドステートディスクの1つに転送する
ように構成される不揮発性半導体メモリデバイスと、
前記不揮発性半導体メモリデバイスおよび前記ネットワークインタフェースアダプタに通信可能に結合されたCPUであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントから書き込み要求を受信し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるかどうかを判定し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるという決定に応じて、前記ネットワークインタフェースアダプタを介した前記ホストクライアントから前記不揮発性半導体メモリデバイスへの前記データの前記転送を行うために、前記ネットワークインタフェースアダプタを始動し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能でないという決定に応じて、前記ネットワークインタフェースアダプタを介して、複数の
第2のソリッドステートディスクをそれぞれ含む1つ以上の外部ストレージへ、前記1つ以上の外部ストレージそれぞれが前記データを格納するために利用可能であるか否かを問い合わせるクエリをブロードキャストするために、前記ネットワークインタフェースアダプタを始動
し、
前記1つ以上の外部ストレージの内の第1外部ストレージが前記データの格納に利用可能である場合、前記ネットワークインタフェースアダプタを介して前記第1外部ストレージに第2の書き込み要求を送信する
ように構成されるCPUとを備え
、
前記第2の書き込み要求は、前記データを前記ホストクライアントから前記第1外部ストレージへ直接転送することを開始するために、前記第1外部ストレージを始動する、ネットワークストレージ装置。
【請求項2】
前記不揮発性半導体メモリデバイスは、
抵抗変化型ランダムアクセスメモリと、
磁気抵抗ランダムアクセスメモリと、
ナノランダムアクセスメモリと、
バッテリバック型ダイナミックランダムアクセスメモリとの内の1つを備える、請求項1に記載のネットワークストレージ装置。
【請求項3】
前記複数の
第1のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された揮発性半導体メモリデバイスをさらに備え、前記揮発性半導体メモリデバイスは、前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能ではないという決定に応じて、前記ネットワークインタフェースアダプタを介して前記1つ以上の外部ストレージから前記データを受信するように構成され、前記1つ以上の外部ストレージは、1つ以上の第2のネットワークストレージ装置に対応する、請求項1に記載のネットワークストレージ装置。
【請求項4】
前記揮発性半導体メモリデバイスはさらに、前記複数の
第1のソリッドステートディスクの1つに前記データを転送するように構成される、請求項3に記載のネットワークストレージ装置。
【請求項5】
前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントにアクノレッジメントステータスを送信するように構成され、前記アクノレッジメントステータスは、前記データが前記不揮発性半導体メモリデバイスまたは前記1つ以上の外部ストレージに格納されたことを示す、請求項1に記載のネットワークストレージ装置。
【請求項6】
前記1つ以上の外部ストレージは、複数の第2のネットワークストレージ装置の内の1つ以上である、請求項
1に記載のネットワークストレージ装置。
【請求項7】
前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記第1外部ストレージから信号を受信するように構成され、前記信号は、前記データが前記第1外部ストレージに格納されたことを示す、請求項
1に記載のネットワークストレージ装置。
【請求項8】
前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに第2のアクノレッジメントステータスを送信するように構成され、前記第2のアクノレッジメントステータスは、前記データが前記第1外部ストレージに格納されたことを示す、請求項
7に記載のネットワークストレージ装置。
【請求項9】
前記ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する、請求項1に記載のネットワークストレージ装置。
【請求項10】
前記ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続される、請求項1に記載のネットワークストレージ装置。
【請求項11】
前記データは、0.1μ秒より長く1μ秒より短い期間内に、前記ホストクライアントから前記ネットワークストレージ装置の前記不揮発性半導体メモリデバイスに転送される、請求項1に記載のネットワークストレージ装置。
【請求項12】
前記ネットワークインタフェースアダプタは、前記CPUから独立して前記不揮発性半導体メモリデバイスにアクセスする、請求項1に記載のネットワークストレージ装置。
【請求項13】
ホストクライアントからネットワークストレージ装置にデータを転送する方法であって、
ホストクライアントから、第1ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置へ第1の書き込み要求を送信することと、
前記対象のネットワークストレージ装置から、前記第1ネットワークインタフェースアダプタおよび第2ネットワークインタフェースアダプタを介して、複数のソリッドステートディスクを含む第2のネットワークストレージ装置に第2の書き込み要求を送信することと、
前記第1の書き込み要求に関連付けられたデータを、前記第2ネットワークインタフェースアダプタを介して
前記ホストクライアントから前記第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに
直接転送することと、
前記第2のネットワークストレージ装置から、前記第2ネットワークインタフェースアダプタおよび前記第1ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置に、前記データが前記第2のネットワークストレージ装置の前記不揮発性半導体メモリデバイスに格納されたことを示す信号を送信することと、
前記対象のネットワークストレージ装置から、前記第1ネットワークインタフェースアダプタを介して前記ホストクライアントに、前記データが格納されたことを示すアクノレッジメントステータスを送信することと、
前記第2のネットワークストレージ装置の前記不揮発性半導体メモリデバイスから、前記第2ネットワークインタフェースアダプタおよび前記第1ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置の揮発性半導体メモリデバイスに前記データを転送することと、
前記対象のネットワークストレージ装置の前記揮発性半導体メモリデバイスから、前記対象のネットワークストレージ装置のソリッドステートディスクに前記データを転送することとを含む方法。
【請求項14】
前記複数の
第2のソリッドステートディスクの各々は、NVMeディスクを備える、請求項1に記載のネットワークストレージ装置。
【請求項15】
前記複数のソリッドステートディスクの各々は、NVMeディスクを備える、請求項
13に記載の方法。
【発明の詳細な説明】
【優先権の主張】
【0001】
本出願は、参照によってその内容の全体がここに組み込まれる、“NVM Express Over Fabrics”と題された、2017年8月3日に出願された米国実用新案出願第15/668,314号に対する優先権を主張する。
【技術分野】
【0002】
本開示は、不揮発性メモリエクスプレスのストレージ装置、および高性能なストレージネットワークに不揮発性ランダムアクセスメモリを実装するための方法に関する。
【背景技術】
【0003】
ライトコマンドに対する低いレイテンシは、ハイパフォーマンスコンピューティング(HPC)において、そして特にストレージネットワークにおいて、重要な特徴である。その重要性の一例は、増大するメモリ内データベース(IMDB)の領域である。CPUやメモリのような演算リソースの増加は、データベース全体をメモリにロードし、CPUによってそれを処理することを可能にする。これは、大きなデータセットの高速なメモリ内処理を可能にする。しかし、到来するトランザクションは永続的であるに違いなく、そのため永続性の媒体に書き込まれる必要がある。処理が、そのようなトランザクションのアクノレッジメントまで失速する(stall)とき、それはプロセス全体へのボトルネックになる。
【0004】
高速PCIe(Peripheral Component Interface Express)インタフェースと、高効率の記憶スタックとを有するNVMe(登録商標)(「不揮発性メモリエクスプレス」)デバイスの導入により、永続性の媒体へのアクセス時間が減少した。加えて、リモートダイレクトメモリアクセス(RDMA)ネットワークインタフェースコントローラ(NIC)は、非常に速い(1桁μ秒)データ転送を提供するように進化した。ファブリック規格を介したNVMe(登録商標)の導入は、ホストクライアントが低レイテンシのネットワークファブリックを介してNVMe(登録商標)ディスクにアクセスできる環境を可能にする。各ホストクライアントおよびストレージ装置は、ファブリック内の各要素間での低レイテンシの転送を可能にするRDMA NICを有する。しかし、高性能なストレージネットワークにおいてNVMe(登録商標)デバイスを効率的に管理し、実装することへの長年にわたる要求が未だ存在する。
【発明の概要】
【0005】
本開示は、ソリッドステートディスクと、ソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタと、ソリッドステートディスクおよびネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスと、不揮発性半導体メモリデバイスおよびネットワークインタフェースアダプタに通信可能に結合されたCPUとを備えるネットワークストレージ装置に関する。ネットワークインタフェースアダプタは、ホストクライアントからデータを取得し、ホストクライアントからのデータをソリッドステートディスクに転送することができる。不揮発性半導体メモリデバイスは、ネットワークインタフェースアダプタを介してホストクライアントからのデータを受信し、データを一時的に格納し、ソリッドステートディスクの1つにデータを転送することができる。CPUは、ネットワークインタフェースアダプタを介してホストクライアントからの書き込み要求を受信し、不揮発性半導体メモリデバイスがデータを格納するために利用可能であるか否かを判定することができる。不揮発性半導体メモリデバイスがデータを格納するために利用可能であると決定する場合には、CPUは、ネットワークインタフェースアダプタを介したホストクライアントから不揮発性半導体メモリデバイスへのデータの転送を行うために、ネットワークインタフェースアダプタを始動できる。不揮発性半導体メモリデバイスがデータを格納するために利用可能でないと決定する場合には、CPUは、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージにクエリをブロードキャストするために、ネットワークインタフェースアダプタを始動できる。さらに、CPUは、ネットワークインタフェースアダプタを介して、データが不揮発性半導体メモリデバイスに格納されたことを示すアクノレッジメントステータスをホストクライアントに送信できる。
【0006】
ある実装によれば、不揮発性半導体メモリデバイスは、抵抗変化型ランダムアクセスメモリ、磁気抵抗ランダムアクセスメモリ、ナノランダムアクセスメモリ、およびバッテリバック型ダイナミックランダムアクセスメモリの内の1つを備え得る。
【0007】
いくつかの実装において、ネットワークストレージ装置は、ソリッドステートディスクおよびネットワークインタフェースアダプタに通信可能に結合された揮発性メモリデバイスを含み得る。揮発性メモリデバイスは、不揮発性半導体メモリデバイスがデータを格納するために利用可能ではないと決定する場合に、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージからデータを受信し得る。1つ以上の外部ストレージは、1つ以上の第2のネットワークストレージ装置に対応し得る。揮発性メモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)を備え得る。
【0008】
他の実装において、揮発性半導体メモリデバイスはデータを一時的に格納し、ソリッドステートディスクの1つにデータを転送し得る。
【0009】
ある実装において、CPUは、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージの内の第1外部ストレージから、クエリに対する応答を受信し得る。クエリに対する応答は、第1外部ストレージがデータを格納するために利用可能であることを示し得る。CPUは、ネットワークインタフェースアダプタを介して第1外部ストレージに第2の書き込み要求を送信し得る。1つ以上の外部ストレージは、ストレージネットワーク内の多数のネットワークストレージ装置の内の1つ以上であり得る。
【0010】
1つの実装によれば、第2の書き込み要求は、ホストクライアントから第1外部ストレージへのデータの転送を開始するために第1外部ストレージを始動し得る。
【0011】
いくつかの実装において、CPUは、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージから信号を受信し得る。信号は、データが1つ以上の外部ストレージに格納されたことを示し得る。
【0012】
他の実装において、CPUは、ネットワークインタフェースアダプタを介して第2のアクノレッジメントステータスをホストクライアントに送信し得る。第2のアクノレッジメントステータスは、データが1つ以上の外部ストレージに格納されたことを示し得る。
【0013】
いくつかの実装によれば、ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する。ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続され得る。1つの実装によれば、ネットワークインタフェースアダプタは、CPUから独立して不揮発性半導体メモリデバイスにアクセスする。
【0014】
いくつかの実装において、不揮発性半導体メモリデバイスは、ホストクライアントのための予約記憶領域を備え得る。不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備え得る。
【0015】
ある実装において、不揮発性半導体メモリデバイスは、予約記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。予約記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、予約記憶領域からデータを格納するための空間を割り当て得る。
【0016】
他の実装において、不揮発性半導体メモリデバイスは、予約記憶領域がデータを格納するために利用可能ではないという決定に応じて、ローカル記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。ローカル記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、ローカル記憶領域からデータを格納するための空間を割り当て得る。
【0017】
1つの実装によれば、不揮発性半導体メモリデバイスは、リモート記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。リモート記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、リモート記憶領域からデータを格納するための空間を割り当て得る。
【0018】
いくつかの実装において、データは、0.1μ秒より長く1μ秒より短い期間内に、ホストクライアントから対象のネットワークストレージ装置の不揮発性半導体メモリデバイスに転送される。
【0019】
本開示の第2の態様は、ホストクライアントからネットワークストレージ装置にデータを転送する方法に関する。方法は、ホストクライアントから、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置に第1の書き込み要求を送信することを含む。方法は、対象のネットワークストレージ装置から、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置に第2の書き込み要求を送信することも含む。方法はさらに、ホストクライアントから、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに、第1の書き込み要求に関連付けられたデータを転送することを含む。さらに、方法は、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置から対象のネットワークストレージ装置に、データが第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに格納されたことを示す信号を送信することを含む。方法は、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置からホストクライアントに、データが格納されたことを示すアクノレッジメントステータスを送信することも含む。さらに、方法は、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置の不揮発性半導体メモリデバイスから、対象のネットワークストレージ装置の揮発性半導体メモリデバイスにデータを転送することを含む。方法はさらに、対象のネットワークストレージ装置の揮発性半導体メモリデバイスから、対象のネットワークストレージ装置のソリッドステートディスクにデータを転送することを含む。
【0020】
いくつかの実装によれば、不揮発性半導体メモリデバイスは、抵抗変化型ランダムアクセスメモリ、磁気抵抗ランダムアクセスメモリ、ナノランダムアクセスメモリ、およびバッテリバック型ダイナミックランダムアクセスメモリの内の1つを備え得る。
【0021】
いくつかの実装において、揮発性メモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)を備え得る。
【0022】
他の実装において、ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する。ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続され得る。1つの実装によれば、ネットワークインタフェースアダプタは、CPUから独立して不揮発性半導体メモリデバイスにアクセスする。
【0023】
いくつかの実装によれば、不揮発性半導体メモリデバイスは、ホストクライアントのための予約記憶領域を備え得る。不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備え得る。
【0024】
ある実装において、方法はさらに、予約記憶領域がデータを格納するために利用可能であるかどうかを判定することと、予約記憶領域がデータを格納するために利用可能であるという決定に応じて、予約記憶領域からデータを格納するための空間を割り当てることとを備える。
【0025】
他の実装において、方法は、予約記憶領域がデータを格納するために利用可能ではないという決定に応じて、ローカル記憶領域がデータを格納するために利用可能であるかどうかを判定することと、ローカル記憶領域がデータを格納するために利用可能であるという決定に応じて、ローカル記憶領域からデータを格納するための空間を割り当てることとを備える。
【0026】
いくつかの実装によれば、方法はさらに、リモート記憶領域がデータを格納するために利用可能であるかどうかを判定することと、リモート記憶領域がデータを格納するために利用可能であるという決定に応じて、リモート記憶領域からデータを格納するための空間を割り当てることとを備える。
【0027】
ある実装において、方法はさらに、0.1μ秒より長く1μ秒より短い期間内に、ホストクライアントから対象のネットワークストレージ装置の不揮発性半導体メモリデバイスにデータを転送することを備える。
【0028】
ある実装において、第2のネットワークストレージ装置は、ストレージネットワーク内の多数のネットワークストレージ装置の内の1つであってもよい。
【図面の簡単な説明】
【0029】
上述のおよび他の目的および利点は、全体を通して同様の参照符号が同様の部分を指す添付図面とともに挙げられる、以下の詳細な説明の考察により明らかになる。
【0030】
【
図1】
図1は本開示の1つ以上の実施形態に従って構成された、不揮発性メモリを有するNVMe(登録商標)ストレージ装置の概略図を示す。
【0031】
【
図2】
図2は本開示の実施形態に係る、不揮発性メモリに対する、ファブリックを介したNVMe(登録商標)のライトコマンドに関する方法ステップのフロー図である。
【0032】
【
図3】
図3は本開示の1つ以上の実施形態に従って構成された、NVMe(登録商標)ストレージ装置および第2のNVMe(登録商標)ストレージ装置の概略図を示す。
【0033】
【
図4】
図4は本開示の実施形態に係る、第2のNVMe(登録商標)ストレージ装置に対する、ファブリックを介したNVMe(登録商標)のライトコマンドに関する方法ステップのフロー図である。
【0034】
【
図5】
図5は本開示の1つ以上の実施形態に従って構成された、不揮発性メモリ層およびNVMe(登録商標)層を有するNVMe(登録商標)ストレージ装置の概略図を示す。
【0035】
【
図6】
図6は本開示の1つ以上の実施形態に従って構成された、NVMe(登録商標)ストレージ装置内の不揮発性半導体メモリデバイスの概略図を示す。
【0036】
【
図7】
図7は本開示の実施形態に係る、ファブリックを介したNVMe(登録商標)のライトコマンドの間の、空間の割り当てに関する方法ステップのフロー図である。
【発明を実施するための形態】
【0037】
図1は、ファブリック112を介して通信するホストクライアント102およびストレージ装置114を備えるNVMe(登録商標)システム100の概略図を示す。ホストクライアント102は、アプリケーション104、CPU(「中央処理ユニット」)106、およびDRAM(「ダイナミックランダムアクセスメモリ」)108を備えるコンピューティングシステムである。ストレージ装置114は、CPU126、不揮発性メモリ308、および複数のNVMe(登録商標)ディスク116を備えるコンピューティングシステムである。ホストクライアント102とストレージ装置114とは、NICの一種であるRDMAネットワークアダプタ110および130を用いてインタフェース接続する。DRAM108は、電力が加えられている間のみデータを保持する。ファブリック112は、相互接続スイッチと、電気ケーブル、光ファイバ、または無線リンクのようなネットワーク接続とを介して、複数のノードが互いにデータを受け渡すネットワークトポロジである。
【0038】
不揮発性メモリ308は、電力がオフにされたときに自身の情報を保持するランダムアクセスメモリである。不揮発性メモリ308はバッテリバック型DRAM、または多数の新興技術の1つであり得る。バッテリバック型DRAMは、DRAM108と類似するが、DRAMが電力を失わず、データを保持するように、バッテリによってサポートされる。新興の不揮発性メモリ技術の一例は、誘電性固体材料にわたる抵抗を変化させることによって機能する抵抗変化型ランダムアクセスメモリ(RRAMまたはReRAM)である。新興の不揮発性メモリ技術の別の例は、磁気素子を用いる磁気抵抗ランダムアクセスメモリ(MRAM)である。加えて、カーボンナノチューブ技術に基づくナノRAM(Nano-RAM)のような将来の技術も存在する。不揮発性メモリ308は、NVMe(登録商標)ディスク116内にあってもよい。
【0039】
ホストクライアント102がストレージ装置114内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106はライトコマンドをカプセル化し、RDMAインタフェース110を用いてストレージ装置114のCPU126にライトコマンドを送信する。ストレージ装置114が受信可能になったらすぐに、データがストレージ装置114に送信可能な状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
【0040】
ストレージ装置114がRDMAインタフェース130を用いてライトコマンドを受信した時点で、ストレージ装置114のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。そして、ストレージ装置114のCPU126は、RDMAインタフェース130を用いてホストクライアント102のDRAM108からストレージ装置114の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データはストレージ装置114の不揮発性メモリ308に存在する。
【0041】
ストレージ装置114の不揮発性メモリ308にデータが存在した時点で、不揮発性メモリ308は、データが不揮発性メモリ308に格納されたことを示すステータスをストレージ装置114のCPU126に送信する。そして、ストレージ装置114のCPU126、そのステータスをカプセル化し、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、指定されたNVMe(登録商標)ディスク116にデータが格納された旨のアクノレッジメントとして役立つ。
【0042】
ストレージ装置114がホストクライアント102にアクノレッジメントを送信してから、バックグラウンド処理において、ストレージ装置114のCPU126は、ストレージ装置114の不揮発性メモリ308から、ライトコマンドによって指定されたNVMe(登録商標)ディスク116へのデータの転送を開始する。
【0043】
NVMe(登録商標)システム100を用いるライトコマンドの処理200が、
図2に示される。処理200は、ステップ402において、カプセル化されたライトコマンドを送信することで開始する。例えば、NVMe(登録商標)システム100において、ホストクライアント102がストレージ装置114内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いてストレージ装置114のCPU126にライトコマンドを送信する。ストレージ装置114が受信可能になったらすぐに、データがストレージ装置114に送信可能な状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
【0044】
処理200は、ステップ404において、ホストクライアント102からストレージ装置114にデータを転送することで継続する。例えば、NVMe(登録商標)システム100において、ストレージ装置114がRDMAインタフェース130を用いてライトコマンドを受信すると、ストレージ装置114のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。そして、ストレージ装置のCPU126は、RDMAインタフェース130を用いて、ホストクライアント102のDRAM108からストレージ装置114の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データはストレージ装置114の不揮発性メモリ308に存在する。
【0045】
処理200は、ステップ406において、ストレージ装置114のCPU126からホストクライアント102にアクノレッジメントを送信することで継続する。例えば、NVMe(登録商標)システム100において、データがストレージ装置114の不揮発性メモリ308に存在した時点で、不揮発性メモリ308は、データが不揮発性メモリ308に格納されたことを示すステータスをストレージ装置114のCPU126に送信する。そして、ストレージ装置114のCPU126は、そのステータスをカプセル化し、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、指定されたNVMe(登録商標)ディスク116にデータが格納された旨のアクノレッジメントとして役立つ。
【0046】
処理200は、ステップ408において、不揮発性メモリ308からNVMe(登録商標)ディスク116の1つにデータを転送することで終了する。例えば、NVMe(登録商標)システム100において、ストレージ装置114がホストクライアント102にアクノレッジメントを送信してから、バックグラウンド処理において、ストレージ装置114のCPU126は、ストレージ装置114の不揮発性メモリ308から、ライトコマンドによって指定されたNVMe(登録商標)ディスク116へのデータの転送を開始する。
【0047】
従来技術のシステムにおいて、ストレージ装置114は、データをNVMe(登録商標)ディスク116に転送する前に、ホストクライアント102から転送されたデータを格納するためにDRAMに頼る。DRAMは電力が加えられている間だけデータを保持するので、従来技術のシステムは、データが格納された旨のアクノレッジメントをホストクライアント102に送信する前に、データがNVMe(登録商標)ディスク116に転送されるまで待機する必要がある。RDMAインタフェース110および130は高帯域幅および低レイテンシを有するので、従来技術のシステムにおける主な時間消費は、ディスクアクセスにある。
【0048】
処理200は、レイテンシが、ホストクライアント102とストレージ装置114との間の転送レイテンシのみになることを可能にする。不揮発性メモリ308からNVMe(登録商標)ディスク116へのデータの転送は、処理200のレイテンシに影響を及ぼさない。しかし、バッテリバック型DRAMのストレージ装置114の実装でも、不揮発性メモリ308は、NVMe(登録商標)ディスク116に比べて相対的に小さい。よって、データを受信することが意図されたストレージ装置114が不揮発性メモリ308からNVMe(登録商標)ディスク116にデータを転送する間に、到来するデータを格納するために別のストレージ装置114を用いることが必要とされ得る。
【0049】
図3は、ファブリック112を介して通信する、ホストクライアント102と、対象のストレージ装置514と、第2のストレージ装置520とを備えるNVMe(登録商標)システム300の概略図を示す。ホストクライアント102は、アプリケーション104、CPU106、およびDRAM108を備えるコンピューティングシステムである。対象のストレージ装置514および第2のストレージ装置520は、CPU126、不揮発性メモリ308、DRAM518、および複数のNVMe(登録商標)ディスク116を備えるコンピューティングシステムである。ホストクライアント102、対象のストレージ装置514、および第2のストレージ装置520は、ネットワークインタフェースコントローラの一種であるRDMA110および130を用いてインタフェース接続する。DRAM518は、DRAM108と同様である。
【0050】
ホストクライアント102が、対象のストレージ装置514内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いて対象のストレージ装置514のCPU126にライトコマンドを送信する。データが送信可能な状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
【0051】
対象のストレージ装置514がRDMAインタフェース110を用いてライトコマンドを受信した時点で、対象のストレージ装置514のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。対象のストレージ装置514の不揮発性メモリ308が、ホストクライアント102が転送を所望するデータのための空き空間を有していない場合、対象のストレージ装置のCPU126は、RDMAインタフェース110を用いて、ライトコマンドを第2のストレージ装置520のCPU126へリダイレクトする。
【0052】
第2のストレージ装置520のCPU126は、対象のストレージ装置514のCPU126からリダイレクトされたライトコマンドを受信すると、コマンドを処理するためのリソースを有しているかどうかを判定する。第2のストレージ装置520が、ホストクライアント102からのデータを受信するためのリソースを有していない場合、対象のストレージ装置514のCPU126が、データを受信できる、別の通信可能に結合されたストレージ装置(図示せず)にコマンドを向けられるように、第2のストレージ装置520は対象のストレージ装置514のCPU126に通知することになる。
【0053】
第2のストレージ装置520が、データを受信するためのリソースを有している場合、第2のストレージ装置520のCPU126は、RDMAインタフェース130を用いて、ホストクライアント102のDRAM108から第2のストレージ装置520の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データは第2のストレージ装置520の不揮発性メモリ308に存在する。
【0054】
データが第2のストレージ装置520の不揮発性メモリ308に存在した時点で、不揮発性メモリ308は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスを、対象のストレージ装置514のCPU126に送信する。そして、対象のストレージ装置514のCPU126は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスをカプセル化して、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、データが第2のストレージ装置520の不揮発性メモリ308に格納された旨のアクノレッジメントとして役立つ。
【0055】
バックグラウンド処理において、第2のストレージ装置520のCPU126は、第2のストレージ装置520の不揮発性メモリ308から対象のストレージ装置514のDRAM518へのデータの転送を開始する。データが対象のストレージ装置514のDRAM518に格納された時点で、対象のストレージ装置514のCPU126は、対象のストレージ装置514のDRAM518から、ライトコマンドによって指定された対象のストレージ装置のNVMe(登録商標)ディスク116へのデータの転送を開始する。
【0056】
NVMe(登録商標)システム300を用いるライトコマンドの処理400が
図4に示される。処理400は、ステップ602において、カプセル化されたライトコマンドをホストクライアント102から対象のストレージ装置514に送信することで開始する。例えば、NVMe(登録商標)システム300において、ホストクライアント102が、対象のストレージ装置514内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望するとき、ホストクライアントのCPU106はライトコマンドをカプセル化し、RDMAインタフェース110を用いて対象のストレージ装置514のCPU126にライトコマンドを送信する。データが送信できる状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
【0057】
処理400は、ステップ604において、対象のストレージ装置514から第2のストレージ装置520へ、カプセル化されたライトコマンドを有するクエリをブロードキャストすることで継続する。例えば、NVMe(登録商標)システム300において、対象のストレージ装置514がRDMAインタフェース130を用いてライトコマンドを受信した時点で、対象のストレージ装置514のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。対象のストレージ装置514の不揮発性メモリ308が、ホストクライアント102が転送を所望するデータのための空き空間を有していない場合、対象のストレージ装置のCPU126は、RDMAインタフェース130を用いて、ライトコマンドを第2のストレージ装置520のCPU126へリダイレクトする。
【0058】
処理400は、ステップ606において、第2のストレージ装置520のリソースの利用の可能性を判定することで継続する。例えば、NVMe(登録商標)システム300において、第2のストレージ装置520のCPU126は、対象のストレージ装置514のCPU126からリダイレクトされたライトコマンドを受信すると、そのコマンドを処理するためのリソースを有しているかどうかを判定する。第2のストレージ装置520が、ホストクライアント102からのデータを受信するためのリソースを有していない場合、対象のストレージ装置514のCPU126が、データを受信できる、別の通信可能に結合されたストレージ装置(図示せず)へコマンドを向けられるように、第2のストレージ装置520は対象のストレージ装置514のCPU126に通知することになる。
【0059】
処理400は、ステップ608において、ホストクライアント102のDRAM108から第2のストレージ装置520の不揮発性メモリ308にデータを送信することで継続する。例えば、NVMe(登録商標)システム300において、第2のストレージ装置520がデータを受信するためのリソースを有している場合、第2のストレージ装置520のCPU126は、RDMAインタフェース130を用いた、ホストクライアント102のDRAM108から第2のストレージ装置520の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データは第2のストレージ装置520の不揮発性メモリ308に存在する。
【0060】
処理400は、ステップ610において、対象のストレージ装置514のCPU126からホストクライアント102にアクノレッジメントを送信することで継続する。例えば、NVMe(登録商標)システム300において、データが第2のストレージ装置520の不揮発性メモリ308に存在した時点で、不揮発性メモリ308は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスを、対象のストレージ装置514のCPU126に送信する。そして、対象のストレージ装置514のCPU126は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスをカプセル化し、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、データが第2のストレージ装置520の不揮発性メモリ308に格納された旨のアクノレッジメントとして役立つ。
【0061】
処理400は、ステップ612において、第2のストレージ装置の不揮発性メモリ308から対象のストレージ装置514のDRAM518にデータを転送することで継続する。例えば、NVMe(登録商標)システム300では、バックグラウンド処理において、第2のストレージ装置520のCPU126が、第2のストレージ装置520の不揮発性メモリ308から対象のストレージ装置514のDRAM518へのデータの転送を開始する。
【0062】
処理400は、ステップ614において、対象のストレージ装置514のDRAM518から、対象のストレージ装置514のNVMe(登録商標)ディスク116の1つにデータを転送することで終了する。例えば、NVMe(登録商標)システム300において、データが対象のストレージ装置514のDRAM518に格納された時点で、対象のストレージ装置514のCPU126は、対象のストレージ装置514のDRAM518から、ライトコマンドによって指定された対象のストレージ装置のNVMe(登録商標)ディスク116へのデータの転送を開始する。
【0063】
図5は、ファブリック112を介して通信する、2つのホストクライアント102と、対象のストレージ装置514と、第2のストレージ装置520とを備えるNVMe(登録商標)システム500の概略図を示す。ホストクライアント102は、アプリケーション104、CPU106、およびDRAM108を備えるコンピューティングシステムである。対象のストレージ装置514および第2のストレージ装置520は、CPU126、DRAM518、および複数のNVMe(登録商標)ディスクを備えるコンピューティングシステムである。ホストクライアント102と、対象のストレージ装置514と、第2のストレージ装置520とは、ネットワークインタフェースコントローラの一種であるRDMA110および130を用いてインタフェース接続する。NVMe(登録商標)システム500は、不揮発性メモリ層708およびNVMe(登録商標)層716を備える。不揮発性メモリ層708は、複数の不揮発性メモリデバイス308の集合である。NVMe(登録商標)層716は、複数のNVMe(登録商標)ディスク116の集合である。NVMe(登録商標)システム500は、3つ以上のホストクライアント102と、2つ以上の第2のストレージ装置520を備えていてもよい。
【0064】
NVMe(登録商標)システム500は、大規模なストレージの配備においてNVRAMの割り当てを可能にし、不揮発性メモリ層708を有効にする。ホストクライアント102が対象のストレージ装置514内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いて、対象のストレージ装置514のCPU126にライトコマンドを送信する。対象のストレージ装置514は、ホストクライアント102のDRAM108からデータを転送するために不揮発性メモリ層708を利用し、さらに、不揮発性メモリ層708からNVMe(登録商標)層716の特定のNVMe(登録商標)ディスクにデータを転送する。
【0065】
例えば、対象のストレージ装置514が十分なローカルリソースを有している場合、対象のストレージ装置514は、不揮発性メモリ層708のローカル部分にデータを格納する。そして、対象のストレージ装置514は、アクノレッジメントステータスをホストクライアント102に送信する。対象のストレージ装置514が十分なローカルリソースを有していない場合、対象のストレージ装置514は、ネットワーク内の全ての第2のストレージ装置520へクエリをブロードキャストして、データを受信できる第2のストレージ装置520が存在するかを問い合わせる。利用可能なリソースを有する第2のストレージ装置520の1つは、自身がデータを受信可能であることを示す信号を対象のストレージ装置514に送信する。このプロセスは、処理400によって説明したように継続する。
【0066】
不揮発性メモリ層708の貴重で有限なリソースを割り当てるために、適正かつユーザ定義のメカニズムが定義されるべきである。
図6は、NVRAMデバイス802の概略図を示す。NVRAM802は、不揮発性メモリ層708の貴重で有限なリソースを割り当てるためのユーザ定義のメカニズムの一例である。NVRAM802は、管理者によって経験的に予約領域804、ローカル領域812、およびリモート領域814に分割された記憶空間を備える不揮発性半導体メモリデバイスである。NVRAM802は、不揮発性メモリデバイス308の一例である。
【0067】
予約領域804は、各ホストクライアント102のために利用可能な、保証された記憶領域を定める。予約領域804は、複数の領域にさらに分割され、各領域が1つのホストクライアント102の専用である。ホスト1 806は、第1のホストクライアント102専用の記憶領域である。ホスト2 808は、第2のホストクライアント102専用の記憶領域である。ホストN 810は、N番目のホストクライアント102専用の記憶領域である。
【0068】
ローカル領域812は、ローカルNVMe(登録商標)ディスク116への格納のためにNVRAM802に送信されるデータに割り当てられた記憶領域である。ローカル領域812は、特定のホストクライアント102に対応する予約領域804が一杯である場合の余剰空間として機能する。例えば、ホストクライアント102に対応するホスト1記憶領域806が一杯であり、NVRAM802がホストクライアント102からデータを受信した場合、新たなデータはローカル領域812に格納され得る。
【0069】
リモート領域814は、遠隔のNVMe(登録商標)ディスク116への格納のためにNVRAM802に送信されるデータに割り当てられた記憶領域である。リモート領域814は、対象のストレージ装置514の予約領域804が一杯であり、第2のストレージ装置520がデータを受信する必要がある場合の余剰空間として機能する。例えば、対象のストレージ装置514のNVRAM802が一杯である場合、第2のストレージ装置520のNVRAM802はデータを受信して、リモート記憶領域814に格納することができる。
【0070】
NVRAMデバイス802においてライトコマンドのために空間を割り当てる処理700が、
図7に示される。処理700は、ステップ902において、ホストクライアント102から対象のストレージ装置514にカプセル化されたライトコマンドを送信することで開始する。例えば、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いて、対象のストレージ装置514のCPU106にライトコマンドを送信する。
【0071】
処理700は、ステップ904において、カプセル化されたライトコマンドのコマンド優先権を判定することで継続する。ホストクライアント102からのカプセル化されたライトコマンドは、ライトコマンドが、対象のストレージ装置514での格納を対象としているか、それとも第2のストレージ装置520での格納を対象としているかを指定するコマンド優先権を有していてもよい。コマンド優先権が、第2のストレージ装置520にデータを送信することである場合、処理700はステップ906へ続く。コマンド優先権が、対象のストレージ装置514にデータを送信することである場合、処理700はステップ908へ続く。
【0072】
ステップ906において、対象のストレージ装置514は、ライトコマンドを有するクエリを第2のストレージ装置520へブロードキャストする。例えば、対象のストレージ装置514のCPU106は、RDMAインタフェース110を用いて、第2のストレージ装置520のCPU106にライトコマンドを送信する。対象のストレージ装置514のCPU106は、RDMAインタフェース110を用いて第2のストレージ装置520へクエリをブロードキャストするためにRDMAインタフェース110を始動してもよい。ステップ906の後、処理700は、上述したように、処理400によって説明したように継続する。
【0073】
ステップ908において、処理700は、ホストクライアント102専用の利用可能な予約領域804が存在するどうかを判定することで継続する。ホストクライアント102専用の利用可能な予約領域804が存在する場合、処理700はステップ910へ続く。ホストクライアント102専用の利用可能な予約領域804が存在しない場合、処理700はステップ912へ続く。
【0074】
ステップ910において、処理700は、予約領域804からデータ格納のために空間を割り当てることで継続する。例えば、ホストクライアント102に対応するホスト1記憶領域806が利用可能である場合、ホスト1記憶領域806は、ホストクライアント102から到来するデータを格納するために用いられ得る。ステップ910の後、処理700は、上述したように、処理200によって説明したように継続する。
【0075】
ステップ912において、処理700は、利用可能なローカル領域812が存在するかどうかを判定することで継続する。利用可能なローカル領域812が存在しない場合、処理700はステップ906へ続く。利用可能なローカル領域812が存在する場合、処理700はステップ914へ続く。
【0076】
ステップ914において、処理700は、ホストクライアント102がローカル領域812内の割り当ての限界値に達したかどうかを判定することで継続する。ホストクライアント102がローカル領域812内の割り当ての限界値に達している場合、処理700はステップ906へ続く。ホストクライアント102がローカル領域812内の割り当ての限界値に達していない場合、処理700はステップ916へ続く。
【0077】
ステップ916において、処理700は、ライトコマンドの優先度が閾値優先度よりも高いかどうかを判定する。ライトコマンドの優先度が閾値優先度よりも高くない場合、処理700はステップ906へ続く。ライトコマンドの優先度が閾値優先度よりも高い場合、処理700はステップ918へ続く。
【0078】
処理700は、ステップ918において、ローカル領域812からデータ格納のために空間を割り当てることで終了する。例えば、ホストクライアント102に対応するホスト1記憶領域806が一杯であって、NVRAM802がホストクライアント102からデータを受信した場合、新たなデータはローカル領域812に格納され得る。
【0079】
同様のプロセスが、第2のホストクライアント102からのコマンドを受信した場合に発生する。この状況においては、対象のストレージ装置514は、利用可能な空間に関してリモート領域814を確認する。利用可能な空間がリモート領域814に存在する場合、対象のストレージ装置514は、リモート領域814から、到来するコマンドのために空間を割り当てる。
【0080】
本発明の様々な態様の他の目的、利点、および実施形態は、本発明の分野の当業者に明らかであり、本明細書および添付図面の範囲内である。例えば、限定はされないが、構造的または機能的な要素が本発明と矛盾することなく再編成され得る。同様に、本発明に係る原理は他の例にも適用されてよく、それらは、ここに詳しく記載されない場合でも、本発明の範囲内であるものとする。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
[1]複数のソリッドステートディスクと、
前記複数のソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタであって、
前記ホストクライアントからデータを取得し、
前記データを前記ホストクライアントから前記複数のソリッドステートディスクに転送する
ように構成されるネットワークインタフェースアダプタと、
前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントからデータを受信し、
前記データを一時的に格納し、
前記データを前記複数のソリッドステートディスクの1つに転送する
ように構成される不揮発性半導体メモリデバイスと、
前記不揮発性半導体メモリデバイスおよび前記ネットワークインタフェースアダプタに通信可能に結合されたCPUであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントから書き込み要求を受信し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるかどうかを判定し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるという決定に応じて、前記ネットワークインタフェースアダプタを介した前記ホストクライアントから前記不揮発性半導体メモリデバイスへの前記データの前記転送を行うために、前記ネットワークインタフェースアダプタを始動し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能でないという決定に応じて、前記ネットワークインタフェースアダプタを介して1つ以上の外部ストレージへクエリをブロードキャストするために、前記ネットワークインタフェースアダプタを始動する
ように構成されるCPUとを備えるネットワークストレージ装置。
[2]前記不揮発性半導体メモリデバイスは、
抵抗変化型ランダムアクセスメモリと、
磁気抵抗ランダムアクセスメモリと、
ナノランダムアクセスメモリと、
バッテリバック型ダイナミックランダムアクセスメモリとの内の1つを備える、[1]に記載のネットワークストレージ装置。
[3]前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された揮発性メモリデバイスをさらに備え、前記揮発性メモリデバイスは、前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能ではないという決定に応じて、前記ネットワークインタフェースアダプタを介して前記1つ以上の外部ストレージからデータを受信するように構成され、前記1つ以上の外部ストレージは、1つ以上の第2のネットワークストレージ装置に対応する、[1]に記載のネットワークストレージ装置。
[4]前記揮発性半導体メモリデバイスはさらに、前記複数のソリッドステートディスクの1つに前記データを転送するように構成される、[3]に記載のネットワークストレージ装置。
[5]前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントにアクノレッジメントステータスを送信するように構成され、前記アクノレッジメントステータスは、前記データが前記不揮発性半導体メモリデバイスまたは前記1つ以上の外部ストレージに格納されたことを示す、[1]に記載のネットワークストレージ装置。
[6]前記CPUはさらに、
前記ネットワークインタフェースアダプタを介して、前記1つ以上の外部ストレージの内の第1外部ストレージから、前記第1外部ストレージが前記データを格納するために利用可能であることを示す前記クエリに対する応答を受信し、
前記ネットワークインタフェースアダプタを介して前記第1外部ストレージに第2の書き込み要求を送信するように構成される、[1]に記載のネットワークストレージ装置。
[7]前記1つ以上の外部ストレージは、複数の第2のネットワークストレージ装置の内の1つ以上である、[6]に記載のネットワークストレージ装置。
[8]前記第2の書き込み要求は、前記ホストクライアントから前記第1外部ストレージへの前記データの前記転送を開始するために、前記第1外部ストレージを始動する、[6]に記載のネットワークストレージ装置。
[9]前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記第1外部ストレージから信号を受信するように構成され、前記信号は、前記データが前記第1外部ストレージに格納されたことを示す、[8]に記載のネットワークストレージ装置。
[10]前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに第2のアクノレッジメントステータスを送信するように構成され、前記第2のアクノレッジメントステータスは、前記データが前記第1外部ストレージに格納されたことを示す、[9]に記載のネットワークストレージ装置。
[11]前記ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する、[1]に記載のネットワークストレージ装置。
[12]前記ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続される、[1]に記載のネットワークストレージ装置。
[13]前記不揮発性半導体メモリデバイスは、前記ホストクライアントのための予約記憶領域を備える、[1]に記載のネットワークストレージ装置。
[14]前記不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備える、[13]に記載のネットワークストレージ装置。
[15]前記不揮発性半導体メモリデバイスはさらに、
前記予約記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記予約記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記予約記憶領域から前記データを格納するための空間を割り当てるように構成される、[14]に記載のネットワークストレージ装置。
[16]前記不揮発性半導体メモリデバイスはさらに、
前記予約記憶領域が前記データを格納するために利用可能ではないという決定に応じて、前記ローカル記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記ローカル記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記ローカル記憶領域から前記データを格納するための空間を割り当てるように構成される、[15]に記載のネットワークストレージ装置。
[17]前記不揮発性半導体メモリデバイスはさらに、
前記リモート記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記リモート記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記リモート記憶領域から前記データを格納するための空間を割り当てるように構成される、[14]に記載のネットワークストレージ装置。
[18]前記データは、0.1μ秒より長く1μ秒より短い期間内に、前記ホストクライアントから前記対象のネットワークストレージ装置の前記不揮発性半導体メモリデバイスに転送される、[1]に記載のネットワークストレージ装置。
[19]前記ネットワークインタフェースアダプタは、前記CPUから独立して前記不揮発性半導体メモリデバイスにアクセスする、[1]に記載のネットワークストレージ装置。
[20]ホストクライアントからネットワークストレージ装置にデータを転送する方法であって、
ホストクライアントから、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置へ第1の書き込み要求を送信することと、
前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置に第2の書き込み要求を送信することと、
前記ホストクライアントから、前記ネットワークインタフェースアダプタを介して前記第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに、前記第1の書き込み要求に関連付けられたデータを転送することと、
前記第2のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置に、前記データが前記第2のネットワークストレージ装置の前記不揮発性メモリデバイスに格納されたことを示す信号を送信することと、
前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに、前記データが格納されたことを示すアクノレッジメントステータスを送信することと、
前記第2のネットワークストレージ装置の前記不揮発性半導体メモリデバイスから、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置の揮発性半導体メモリデバイスに前記データを転送することと、
前記対象のネットワークストレージ装置の前記揮発性半導体メモリデバイスから、前記対象のネットワークストレージ装置のソリッドステートディスクに前記データを転送することとを含む方法。