編者按
網(wǎng)絡(luò)側(cè)現(xiàn)在還沒有形成標(biāo)準(zhǔn)的接口。Virtio-net因?yàn)檐浖摂M化的流行所以標(biāo)準(zhǔn),但其性能較差;AWS有自己的ENA/EFA接口,NVIDIA提供的是NV-SRIOV自定義接口,以及基于此封裝的Virtio-net接口。 在存儲(chǔ)側(cè),業(yè)界形成了“偉大”的共識(shí):NVMe標(biāo)準(zhǔn)接口,兼顧了標(biāo)準(zhǔn)化和高性能。與此同時(shí),從Virtio-blk逐步切換到NVMe在業(yè)界得到了眾多的認(rèn)可。
高速存儲(chǔ)接口NVMe
跟網(wǎng)絡(luò)接口相比,存儲(chǔ)的接口標(biāo)準(zhǔn)化程度相對(duì)較高。NVMe是本地高性能存儲(chǔ)主流的接口標(biāo)準(zhǔn),同時(shí)基于NVMe擴(kuò)展的NVMeoF是高性能網(wǎng)絡(luò)存儲(chǔ)主要的接口及整體解決方案標(biāo)準(zhǔn)。
1 NVMe概述
NVMe(Non-Volatile Memory Express)是經(jīng)過優(yōu)化的、高性能的、可擴(kuò)展的主機(jī)控制器接口,專為非易失性存儲(chǔ)器(NVM)技術(shù)而設(shè)計(jì)。NVMe解決了如下一些性能問題:
帶寬:通過支持PCIe和諸如RDMA和光纖之類的通道,NVMe可以支持比SATA或SAS高很多的帶寬。
IOPS:例如,串行ATA可能的最大IOPS為20萬,而NVMe設(shè)備已被證明超過100萬IOPS。
延遲:NVM以及未來的存儲(chǔ)技術(shù)具有一微秒以內(nèi)的訪問延遲,需要一種更簡潔的軟件協(xié)議,能夠?qū)崿F(xiàn)包括軟件堆棧在內(nèi)的不超過10毫秒的端到端延遲。
NVMe協(xié)議支持多個(gè)深度隊(duì)列,這是對(duì)傳統(tǒng)SAS和SATA協(xié)議的改進(jìn)。典型的SAS設(shè)備在單個(gè)隊(duì)列中最多支持256個(gè)命令,而SATA設(shè)備最多支持32個(gè)命令。這些隊(duì)列深度對(duì)于傳統(tǒng)的硬盤驅(qū)動(dòng)器技術(shù)已經(jīng)足夠,但不能充分利用NVM技術(shù)的性能。
相比之下,圖1所示的NVMe多隊(duì)列,每個(gè)隊(duì)列支持64K命令,最多支持64K隊(duì)列。這些隊(duì)列的設(shè)計(jì)使得IO命令和對(duì)命令的處理不僅可以在同一處理器內(nèi)核上運(yùn)行,也可以充分利用多核處理器的并行處理能力。每個(gè)應(yīng)用程序或線程可以有自己的獨(dú)立隊(duì)列,因此不需要IO鎖定。NVMe還支持MSI-X和中斷控制,避免了CPU中斷處理的瓶頸,實(shí)現(xiàn)了系統(tǒng)擴(kuò)展的可伸縮性。NVMe采用簡化的命令集,相比SAS或SATA,NVMe命令集使用的處理IO請(qǐng)求的指令數(shù)量減少了一半,從而在單位CPU指令周期內(nèi)可以提供更高的IOPS,并且降低主機(jī)中IO軟件堆棧的處理延遲。
圖1 NVMe多隊(duì)列
2 NVMe寄存器
NVMe(Over PCIe)寄存器主要分為兩類,一類是PCIe配置空間寄存器,一類是NVMe控制器相關(guān)的寄存器。
a.PCIe配置空間和功能
NVMe PCIe總線寄存器如表1所示,NVMe跟主機(jī)CPU的接口主要是基于PCIe總線,使用PCIe的Config和Capability機(jī)制。包括PCI/PCIe頭、PCI功能和PCIe擴(kuò)展功能。
表1 NVMe PCIe配置空間和功能
起始 | 結(jié)束 | 名稱 | 類型 |
00h | 3Fh | PCI/PCIe頭 | |
PMCAP | PMCAP+7h | PCI功耗管理(Power Management)功能 | PCI功能 |
MSICAP | MSICAP+9h | MSI(Message Signaled Interrupt)功能 | PCI功能 |
MSIXCAP | MSIXCAP+Bh | MSI-X(MSI eXtension,MSI擴(kuò)展)功能 | PCI功能 |
PXCAP | PXCAP+29h | PCIe功能 | PCI功能 |
AERCAP | AERCAP+47h | AER(Advanced Error Reporting)功能 | PCIe擴(kuò)展功能 |
b.NVMe控制器寄存器
NVMe控制器寄存器位于MLBAR/MUBAR寄存器(PCI BAR0和BAR1)中,這些寄存器應(yīng)映射到支持順序訪問和可變?cè)L問寬度的內(nèi)存空間。NVMe 1.3d版本的控制器寄存器列表如表2所示。
表2 NVMe 1.3d版本的控制器寄存器列表
起始 | 結(jié)束 | 縮寫 | 描述 |
0h | 7h | CAP | 控制功能 |
8h | Bh | VS | 版本 |
Ch | Fh | INTMS | 中斷屏蔽設(shè)置 |
10h | 13h | INTMC | 中斷屏蔽清楚 |
14h | 17h | CC | 控制器配置 |
18h | 1Bh | Reserved | 保留 |
1Ch | 1Fh | CSTS | 控制器狀態(tài) |
20h | 23h | NSSR | NVM子系統(tǒng)重置(可選) |
24h | 27h | AQA | 管理隊(duì)列屬性 |
28h | 2Fh | ASQ | 管理提交隊(duì)列基地址 |
30h | 37h | ACQ | 管理完成隊(duì)列基地址 |
38h | 3Bh | CMBLOC | 控制器存儲(chǔ)緩沖位置(可選) |
3Ch | 3Fh | CMBSZ | 控制器存儲(chǔ)緩沖大?。蛇x) |
40h | 43h | BPINFO | 引導(dǎo)分區(qū)信息(可選) |
44h | 47h | BPRSEL | 引導(dǎo)分區(qū)讀選擇(可選) |
48h | 4Fh | BPMBL | 引導(dǎo)分區(qū)存儲(chǔ)緩沖位置(可選) |
50h | EFFh | Reserved | 保留 |
F00h | FFFh | Reserved | 命令設(shè)置具體的寄存器 |
1000h | 1003h | SQ0TDBL | 管理SQ0尾Db |
1000h + (1 * (4 << CAP.DSTRD)) | 1003h + (1 * (4 << CAP.DSTRD)) | CQ0HDBL | 管理CQ0頭Db |
1000h + (2 * (4 << CAP.DSTRD)) | 1003h + (2 * (4 << CAP.DSTRD)) | SQ1TDBL | SQ1尾Db |
1000h + (3 * (4 << CAP.DSTRD)) | 1003h + (3 * (4 << CAP.DSTRD)) | CQ1HDBL | CQ1頭Db |
… | … | … | … |
1000h+ (2y * (4 << CAP.DSTRD)) | 1003h + (2y * (4 << CAP.DSTRD)) | SQyTDBL | SQy尾Db |
1000h + ((2y + 1) * (4 << CAP.DSTRD)) | 1003h + ((2y + 1) * (4 << CAP.DSTRD)) | CQyHDBL | CQy頭Db |
供應(yīng)商定制寄存器(可選) | |||
SQ:Submission Queue,提交隊(duì)列;CQ:Completion Queue,完成隊(duì)列;Db:Doorbell,門鈴。 |
3 NVMe隊(duì)列
NVMe的隊(duì)列是經(jīng)典的環(huán)形隊(duì)列結(jié)構(gòu),通過提交/完成隊(duì)列對(duì)來實(shí)現(xiàn)隊(duì)列的傳輸交互。
a.隊(duì)列概述
NVMe使用的是經(jīng)典的循環(huán)隊(duì)列結(jié)構(gòu)來傳遞消息(例如,傳遞命令和命令完成通知)。隊(duì)列可以映射到任何PCIe可訪問的內(nèi)存中,通常是放在主機(jī)內(nèi)存。
如圖2,隊(duì)列是固定大小的,通過Tail和Head來分別指向?qū)懭牒妥x取的指針。像通常的隊(duì)列數(shù)據(jù)結(jié)構(gòu)一樣,隊(duì)列實(shí)際可使用的大小是隊(duì)列大小減1,并且用Head等于Tail指示隊(duì)列空,用Head等于(Tail+1)除以隊(duì)列大小的余數(shù)來指示隊(duì)列滿。
圖2 NVMe隊(duì)列結(jié)構(gòu)
如上一節(jié)的圖1,根據(jù)用途,NVMe隊(duì)列有兩類:管理隊(duì)列和IO隊(duì)列;根據(jù)傳輸方向有兩類:提交隊(duì)列和完成隊(duì)列。具體介紹見表3。
表3 NVMe隊(duì)列類型
管理 | IO | |
提交 |
用于提交管理命令,最大4K項(xiàng); 用于配置控制器和IO隊(duì)列等; 從主機(jī)側(cè)到控制器側(cè)。 |
用于傳輸IO命令,最大64K項(xiàng); 用于提交IO操作命令; 從主機(jī)側(cè)到控制器側(cè)。 |
完成 |
管理命令的完成確認(rèn),最大4K項(xiàng); 從控制器側(cè)到主機(jī)側(cè); 獨(dú)立的MSI-X中斷處理。 |
IO命令的完成確認(rèn),最大64K項(xiàng); 從控制器側(cè)到主機(jī)側(cè); 獨(dú)立的MSI-X中斷處理。 |
b.隊(duì)列處理流程
NVMe的驅(qū)動(dòng)和設(shè)備交互跟Virtio不同:Virtio是在通過一個(gè)隊(duì)列完成雙向通知交互;而NVMe則采用提交隊(duì)列和完成隊(duì)列配合完成雙向交互的方式。
如圖3,NVMe隊(duì)列處理流程如下(其中主機(jī)為軟件驅(qū)動(dòng),控制器為硬件設(shè)備):
(1)主機(jī)寫命令到提交隊(duì)列項(xiàng)中。
(2)主機(jī)寫DB(Doorbell)寄存器,通知控制器有新命令待處理。
(3)控制器從內(nèi)存中的提交隊(duì)列中讀取命令。
(4)控制器執(zhí)行命令。
(5)控制器更新完成隊(duì)列,表示當(dāng)前的SQ項(xiàng)已經(jīng)處理。
(6)控制器發(fā)MSI-x中斷到主機(jī)CPU。
(7)主機(jī)處理完成隊(duì)列,同步更新提交隊(duì)列中的已處理項(xiàng)。
(8)主機(jī)寫完成隊(duì)列Db到控制器,告知完成隊(duì)列項(xiàng)已釋放。
圖3 NVMe隊(duì)列處理流程
4 NVMe命令結(jié)構(gòu)
我們通過如下一些概念來理解NVMe命令結(jié)構(gòu):
隊(duì)列項(xiàng)的數(shù)據(jù)格式。NVMe的提交命令固定64字節(jié),完成命令固定16字節(jié)。
命令。NVMe命令分為Admin和IO兩類。
NVMe的數(shù)據(jù)塊組織方式有PRP和SGL兩種。
a.隊(duì)列項(xiàng)的數(shù)據(jù)格式
提交隊(duì)列和完成隊(duì)列,組成隊(duì)列對(duì),協(xié)作完成NVMe驅(qū)動(dòng)和設(shè)備之間的命令傳輸。提交隊(duì)列每一項(xiàng)64字節(jié)固定大小,完成隊(duì)列每一項(xiàng)16字節(jié)固定大小。
提交隊(duì)列的數(shù)據(jù)格式如圖4所示。NVMe提交隊(duì)列項(xiàng)的數(shù)據(jù)格式屬性如下:
Opcode:命令操作碼
FUSE:熔合兩個(gè)命令為一條命令
PSDT:PRP或SGL數(shù)據(jù)傳輸
Command Identifier:命令I(lǐng)D
Namespace Identifier:命名空間ID
Metadata Pointer:元數(shù)據(jù)指針
PRP entry 1/2:物理區(qū)域頁項(xiàng),對(duì)應(yīng)的由PRP和PRP列表
SGL:散列聚合列表
圖4 提交隊(duì)列項(xiàng)的數(shù)據(jù)格式
完成隊(duì)列的數(shù)據(jù)格式如圖5所示。
圖5 完成隊(duì)列項(xiàng)的數(shù)據(jù)格式
NVMe完成隊(duì)列的數(shù)據(jù)格式屬性如下:
SQ Header pointer:SQ頭指針
SQ Identifier:SQ ID
Command Identifier:命令I(lǐng)D
P:相位標(biāo)志phase tag,完成隊(duì)列沒有head/tail交互,通過相位標(biāo)志實(shí)現(xiàn)完成隊(duì)列項(xiàng)的釋放
Status Field:狀態(tài)域
b.NVMe命令
NVMe管理類的命令如表4所示。
表4 NVMe管理命令列表
命令 | 必選或可選 | 類別 |
創(chuàng)建IO SQ | 必選 | 隊(duì)列管理 |
刪除IO SQ | 必選 | |
創(chuàng)建IO CQ | 必選 | |
刪除IO CQ | 必選 | |
鑒別 | 必選 | 配置 |
獲取特征 | 必選 | |
設(shè)置特征 | 必選 | |
獲取日志頁 | 必選 | 狀態(tài)報(bào)告 |
異步事件請(qǐng)求 | 必選 | |
中止 | 必選 | 中止命令 |
固件鏡像下載 | 可選 | 固件更新和管理 |
固件可用 | 可選 | |
IO命令集定制命令 | 可選 | IO命令集定制 |
供應(yīng)商定制命令 | 可選 | 供應(yīng)商定制 |
NVMe IO類命令如表5所示。
表5 NVMe IO類命令列表
命令 | 必選或可選 | 類別 |
讀 | 必選 | 必選的數(shù)據(jù)命令 |
寫 | 必選 | |
清洗 | 必選 | |
不可改正的寫 | 可選 | 可選的數(shù)據(jù)命令 |
寫0 | 可選 | |
比較 | 可選 | |
數(shù)據(jù)集管理 | 可選 | 數(shù)據(jù)提示 |
預(yù)約獲取 | 可選 | 預(yù)約命令 |
預(yù)約寄存器 | 可選 | |
預(yù)約釋放 | 可選 | |
預(yù)約報(bào)告 | 可選 | |
供應(yīng)商專用命令 | 可選 | 供應(yīng)商專用 |
c.物理區(qū)域頁P(yáng)RP
PRP本質(zhì)是一個(gè)鏈表,鏈表中的每一個(gè)指針都指向一個(gè)不超過頁大小的數(shù)據(jù)塊。PRP為8字節(jié)(64bits)固定大小,PRPList則最多可以占滿一整個(gè)頁。
PRP1和PRP2的格式如圖6(a)所示。如果是首個(gè)PRP,則Offset(偏移量)可能是非零的數(shù)據(jù),另外,偏移量是32bits對(duì)齊的(即末尾兩位為0)。如圖6(b)所示,在PRP列表中的所有PRP項(xiàng)的偏移量都為0,也即是PRP指針指向頁面起始地址。
圖6 PRP和PRP列表的格式
如圖7(a)所示,當(dāng)數(shù)據(jù)只有一個(gè)或兩個(gè)頁面的時(shí)候,就不需要使用PRP列表數(shù)據(jù)結(jié)構(gòu),直接PRP1和PRP2指向內(nèi)存頁面。當(dāng)一個(gè)命令指向的數(shù)據(jù)超過兩個(gè)內(nèi)存頁面的時(shí)候,就需要使用PRP列表,圖7(b)所顯式的為使用PRP列表的數(shù)據(jù)結(jié)構(gòu)。
(a) 范例1:PRP直接指向內(nèi)存頁面
(b) 范例2:PRP列表指針,指向PRP列表,再指向內(nèi)存頁面
圖7 PRP數(shù)據(jù)結(jié)構(gòu)范例
d.散列聚合列表SGL
PRP每個(gè)鏈表指針最多指向一個(gè)頁大小的數(shù)據(jù)塊,即使若干個(gè)頁在內(nèi)存連續(xù)放置,PRP也需要對(duì)應(yīng)的多個(gè)PRP項(xiàng)。為了減少元數(shù)據(jù)規(guī)模,SGL不限制指針指向數(shù)據(jù)塊的大小,這樣連續(xù)的若干個(gè)頁的數(shù)據(jù),只需要一個(gè)SGL項(xiàng)就可以標(biāo)識(shí)。
NVMe中SGL的長度為16字節(jié)固定長度,其格式如圖8(a)所示,在最高的第15字節(jié)SGL描述符類型域和子類型域標(biāo)識(shí)不同類型的SGL描述符,根據(jù)不同的描述符,字節(jié)14-0的格式各有不同。SGL描述符類型如圖8(b)所示。
圖8 NVMe SGL數(shù)據(jù)格式
如圖9,NVMe SGL的數(shù)據(jù)結(jié)構(gòu)是鏈表形式,SQ中的首個(gè)SGL段只有1項(xiàng),為指向下一個(gè)SGL段的指針。下一個(gè)SGL段包含若干SGL數(shù)據(jù)塊描述符,SGL段的最后的一個(gè)SGL描述符為另一個(gè)SGL段指針,指向下一個(gè)SGL段。根據(jù)傳輸數(shù)據(jù)大小,在最后一個(gè)SGL 段中,所有的SGL描述符都是SGL數(shù)據(jù)塊描述符。
PRP只能指向單個(gè)內(nèi)存頁,這樣,當(dāng)要傳輸?shù)臄?shù)據(jù)塊非常大的時(shí)候,就需要非常多的PRP項(xiàng)。而SGL可以指向不同大小的數(shù)據(jù)塊,處于連續(xù)內(nèi)存區(qū)域的多個(gè)數(shù)據(jù)塊只需要一個(gè)SGL描述符就可以標(biāo)識(shí)。因此,一般情況下,SGL比PRP更高效,更節(jié)省描述符資源。
圖9 NVMe SGL數(shù)據(jù)結(jié)構(gòu)范例
5 網(wǎng)絡(luò)存儲(chǔ)接口NVMeoF
NVMeoF(NVMe over Fabrics)定義了一種通用架構(gòu),該架構(gòu)支持一系列基于NVMe塊存儲(chǔ)協(xié)議的存儲(chǔ)網(wǎng)絡(luò)系統(tǒng)。包括從前端存儲(chǔ)接口到后端擴(kuò)展的大量NVMe設(shè)備或NVMe子系統(tǒng),也包括訪問遠(yuǎn)程N(yùn)VMe設(shè)備和NVMe子系統(tǒng)所需的網(wǎng)絡(luò)傳輸系統(tǒng)。
如圖10所示,NVMeoF支持以太網(wǎng)、光纖和InfiniBand等不同的網(wǎng)絡(luò)傳輸介質(zhì)?;赗DMA的NVMeoF,使用的是InfiniBand、RoCEv1/v2或iWARP。NVMeoF的主要目標(biāo)是提供與NVMe設(shè)備的低延遲遠(yuǎn)程連接,與服務(wù)器本地NVMe設(shè)備相比,增加的延遲不超過10μs。
圖10 NVMe over Fabrics支持的網(wǎng)絡(luò)傳輸介質(zhì)
利用NVMeoF技術(shù),可以輕松構(gòu)建由許多NVMe設(shè)備組成的存儲(chǔ)系統(tǒng),它通過基于RDMA或光纖網(wǎng)絡(luò)實(shí)現(xiàn)的NVMeoF,構(gòu)成了完整的NVMe端到端存儲(chǔ)解決方案。NVMeoF系統(tǒng)可以提供非常高的訪問性能,同時(shí)保持非常低的訪問延遲。
為了遠(yuǎn)距離傳輸NVMe協(xié)議,理想的基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)具有以下特征:
可靠的基于信用的流量控制和傳輸機(jī)制。需要網(wǎng)絡(luò)能支持自動(dòng)流量調(diào)節(jié),從而提供可靠的網(wǎng)絡(luò)連接?;谛庞玫牧髁靠刂剖枪饫w、InfiniBand和PCIe原生支持的功能。
優(yōu)化的NVMe客戶端。客戶端軟件能夠直接與傳輸網(wǎng)絡(luò)之間發(fā)送和接收NVMe命令,不需要使用諸如SCSI之類比較低效的轉(zhuǎn)換層。
低延遲的網(wǎng)絡(luò)。網(wǎng)絡(luò)應(yīng)該是針對(duì)低延遲優(yōu)化過的,網(wǎng)絡(luò)路徑(包括交換機(jī))端到端延遲不能超過10 μs。
能夠減少延遲和CPU使用率的硬件接口卡。接口卡支持直接內(nèi)存注冊(cè)給用戶模式的應(yīng)用程序使用,以便數(shù)據(jù)傳輸可以直接從應(yīng)用程序傳遞到接口卡。
網(wǎng)絡(luò)擴(kuò)展。網(wǎng)絡(luò)能夠支持?jǐn)U展到成千上萬個(gè)設(shè)備,甚至更多。
多主機(jī)支持。該網(wǎng)絡(luò)應(yīng)能夠支持多個(gè)主機(jī)同時(shí)發(fā)送和接收命令。這也適用于多個(gè)存儲(chǔ)子系統(tǒng)。
多端口支持。主機(jī)服務(wù)器和存儲(chǔ)系統(tǒng)應(yīng)能夠同時(shí)支持多個(gè)端口。
多路徑支持。該網(wǎng)絡(luò)應(yīng)能夠同時(shí)支持任何NVMe主機(jī)發(fā)起端和任何NVMe存儲(chǔ)目標(biāo)端之間的多個(gè)路徑。
最多可達(dá)64K的獨(dú)立IO隊(duì)列以及IO隊(duì)列固有的并行性可以很好地與上述特征一起使用。每個(gè)IO隊(duì)列可同時(shí)支持64K個(gè)命令。另外,NVMe命令數(shù)量非常少,因此在各種不同的網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)起來也非常的簡單高效。
NVMeoF協(xié)議大約90%與NVMe協(xié)議相同。這包括NVMe命名空間、IO和管理命令、寄存器和屬性、電源狀態(tài)、異步事件等。兩者的差異對(duì)比如表6所示。
表6 NVMe和NVMeoF對(duì)比
差異性 | NVMe(PCIe) | NVMeoF |
識(shí)別碼 | BDF信息 | NVMe合格名稱(NQN) |
設(shè)備發(fā)現(xiàn) | 總線枚舉 | 發(fā)現(xiàn)和連接命令 |
排隊(duì) | 基于內(nèi)存 | 基于消息 |
數(shù)據(jù)傳輸 | PRP或SGL | 僅SGL,添加了密鑰 |
NVMe基于分層的設(shè)計(jì):如果把NVMe傳輸映射到內(nèi)存訪問和PCIe總線,則是通常所理解的NVMe;如果把NVMe傳輸映射到RoCE等網(wǎng)絡(luò)接口,基于消息傳輸和內(nèi)存訪問,則是NVMeoF。
如圖11,在本地NVMe中,NVMe命令和響應(yīng)映射到主機(jī)中的共享內(nèi)存,可以通過PCIe接口訪問。但是,NVMeoF是基于節(jié)點(diǎn)之間發(fā)送和接收消息的概念構(gòu)建的。NVMeoF通過把NVMe命令和響應(yīng)封裝到消息,每個(gè)消息包含一個(gè)或多個(gè)NVMe命令或響應(yīng)。
圖11 NVMeoF堆棧
對(duì)于NVMeoF來說,多隊(duì)列特征是支持的。通過使用類似NVMe的提交隊(duì)列和完成隊(duì)列機(jī)制來支持NVMe多隊(duì)列模型,但是將命令封裝在基于消息的傳輸中。NVMe IO隊(duì)列對(duì)(提交和完成)是為多核CPU設(shè)計(jì)的,這種低延遲的設(shè)計(jì)在NVMeoF也同樣支持。
當(dāng)通過網(wǎng)絡(luò)將復(fù)雜的消息發(fā)送到遠(yuǎn)端NVMe設(shè)備時(shí),允許將多個(gè)小消息合并成一條消息發(fā)送,從而提高傳輸效率并減少延遲。如圖12,一條消息封裝了提交隊(duì)列項(xiàng)或完成隊(duì)列項(xiàng)、多個(gè)SGL、多組數(shù)據(jù)以及元數(shù)據(jù)等。每一項(xiàng)的內(nèi)容與本地NVMe協(xié)議相同,但是封裝是將它們打包在一起,用以提高傳輸效率。
圖12 NVMeoF的命令和響應(yīng)封裝
6 NVMe及NVMeoF總結(jié)
NVMe是為了高速非易失性存儲(chǔ)定制的存儲(chǔ)接口訪問協(xié)議,定向優(yōu)化了存儲(chǔ)的主要性能指標(biāo):帶寬、延遲和IOPS。NVMe最重要的特征體現(xiàn)在:
面向高速存儲(chǔ)場(chǎng)景定制:NVMe是專門面向高速存儲(chǔ)場(chǎng)景定制的協(xié)議,因此充分考慮了塊存儲(chǔ)的特點(diǎn),重點(diǎn)解決存儲(chǔ)性能的關(guān)鍵問題。
多隊(duì)列支持:多隊(duì)列不僅僅充分利用了硬件的并行處理能力,同時(shí),也充分的利用了多核系統(tǒng)多線程并行的特點(diǎn),最大化的優(yōu)化了NVMe的性能。
標(biāo)準(zhǔn)化:NVMe是得到廣泛應(yīng)用的PCIe SSD接口標(biāo)準(zhǔn),各大主流操作系統(tǒng)支持統(tǒng)一的標(biāo)準(zhǔn)NVMe驅(qū)動(dòng)。
NVMeoF集成現(xiàn)有的NVMe和高速低延遲傳輸網(wǎng)絡(luò)的技術(shù),提供一整套整合的遠(yuǎn)程高速存儲(chǔ)系統(tǒng)解決方案,非常適應(yīng)于大規(guī)模存儲(chǔ)集群的應(yīng)用場(chǎng)景。
原文標(biāo)題:高速的、標(biāo)準(zhǔn)化的存儲(chǔ)接口NVMe
文章出處:【微信公眾號(hào):中科院半導(dǎo)體所】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7455瀏覽量
163622 -
接口
+關(guān)注
關(guān)注
33文章
8526瀏覽量
150861 -
設(shè)備
+關(guān)注
關(guān)注
2文章
4480瀏覽量
70547
原文標(biāo)題:高速的、標(biāo)準(zhǔn)化的存儲(chǔ)接口NVMe
文章出處:【微信號(hào):bdtdsj,微信公眾號(hào):中科院半導(dǎo)體所】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論