NVMe 2.0規(guī)范發(fā)布:重大重組
本文轉(zhuǎn)載自微信公眾號(hào)「存儲(chǔ)加速器」,作者加速狗 。轉(zhuǎn)載本文請(qǐng)聯(lián)系存儲(chǔ)加速器公眾號(hào)。
NVM Express(NVMe) 規(guī)范系列定義了主機(jī)軟件如何通過(guò) PCI Express (PCIe)、RDMA、TCP 等多種傳輸方式與非易失性存儲(chǔ)器進(jìn)行通信。它是所有外形規(guī)格(U.2、M.2、AIC、EDSFF)的固態(tài)硬盤(pán) (SSD) 的行業(yè)標(biāo)準(zhǔn)。NVM Express 是由定義、管理和營(yíng)銷(xiāo) NVMe 技術(shù)的技術(shù)行業(yè)領(lǐng)導(dǎo)者組成的非營(yíng)利聯(lián)盟。該系列規(guī)范的最新版本 NVMe 2.0 規(guī)范已于 2021 年 6 月 3 日發(fā)布。
NVM Express 規(guī)范的 2.0 版現(xiàn)在已經(jīng)有十年歷史了。與其他 NVMe 規(guī)范更新一樣,2.0 版帶有各種新特性和功能供驅(qū)動(dòng)器實(shí)現(xiàn)(通常作為可選特性)。但最重要的變化也就是將其稱為 2.0 版而不是 1.5 版的原因,是規(guī)范已經(jīng)通過(guò)并徹底重組,以更好地適應(yīng) NVMe 現(xiàn)在包含的廣泛功能。從最初不起眼的作為基于 PCI Express 運(yùn)行的塊存儲(chǔ)協(xié)議的開(kāi)始,NVMe 已經(jīng)發(fā)展成為最重要的網(wǎng)絡(luò)存儲(chǔ)協(xié)議之一,現(xiàn)在還支持與 NVMe 最初提供的類(lèi)似硬盤(pán)的塊存儲(chǔ)抽象完全不同的存儲(chǔ)范式。
2.0 版不是典型 PCIe SSD 的基本規(guī)范和單獨(dú)的 NVMe over Fabrics 規(guī)范,而是被設(shè)計(jì)為更加模塊化的規(guī)范,并已拆分為多個(gè)文檔?;疽?guī)范現(xiàn)在涵蓋了本地連接的設(shè)備和 NVMeoF,但更抽象地 — 已經(jīng)從基本規(guī)范中移出了足夠多的內(nèi)容,以至于它不再足以定義實(shí)現(xiàn)簡(jiǎn)單 SSD 所需的所有功能。真實(shí)設(shè)備還需要參考至少一個(gè)傳輸規(guī)范和至少一個(gè)命令集規(guī)范. 對(duì)于典型的消費(fèi)類(lèi) SSD,這意味著使用 PCIe 傳輸規(guī)范和塊存儲(chǔ)命令集。其他傳輸選項(xiàng)目前包括使用 TCP 或 RDMA 的網(wǎng)絡(luò) NVMe over Fabrics。
其他命令集選項(xiàng)包括 Zoned Namespace 和 Key-Value 命令集。去年批準(zhǔn)納入時(shí),我們已經(jīng)深入介紹了Zoned Namespaces。三個(gè)標(biāo)準(zhǔn)化命令集(塊、分區(qū)、鍵值)涵蓋了從簡(jiǎn)單的 SSD 到底層閃存上的簡(jiǎn)單抽象,到相對(duì)復(fù)雜的智能驅(qū)動(dòng)器,這些驅(qū)動(dòng)器承擔(dān)了一些傳統(tǒng)上可能需要的存儲(chǔ)管理任務(wù)。由主機(jī)系統(tǒng)上的軟件處理。
NVMe 2.0 中的許多新功能是對(duì)現(xiàn)有功能的次要擴(kuò)展,使這些功能更有用和更廣泛使用。例如,NVMe 1.4 中引入了將設(shè)備的存儲(chǔ)劃分為NVM 集和耐久性組,但規(guī)范沒(méi)有說(shuō)明如何創(chuàng)建這些劃分;該配置要么需要由驅(qū)動(dòng)器的固件硬編碼,要么使用供應(yīng)商特定的命令處理。
NVMe 2.0 為要分配的耐力組和 NVM 集添加了標(biāo)準(zhǔn)容量管理機(jī)制,并且還添加了另一層分區(qū)(域),以便需要更多工具來(lái)分割可用存儲(chǔ)池的海量 NVMeoF 存儲(chǔ)設(shè)備,或隔離不同用戶對(duì)共享驅(qū)動(dòng)器或陣列的性能影響。
NVMe 規(guī)范最初預(yù)測(cè)了基本塊存儲(chǔ)命令集之外的多個(gè)命令集的可能性。但是用于支持多個(gè)命令集的原始機(jī)制不足以滿足當(dāng)今的用例:控制器功能數(shù)據(jù)結(jié)構(gòu)中的少量保留位不足以涵蓋當(dāng)今 SSD 可能實(shí)現(xiàn)的所有可能性。特別是,處理多個(gè)命令集的新系統(tǒng)現(xiàn)在可以讓同一控制器后面的不同命名空間支持不同的命令集,而不是要求所有命名空間都支持其父控制器支持的所有命令集。
當(dāng) NVMe 1.4 完成時(shí),分區(qū)和鍵值命令集已經(jīng)在雷達(dá)上,現(xiàn)在這些技術(shù)已被納入 2.0,與原始?jí)K存儲(chǔ)命令集具有同等地位。未來(lái)的命令集(例如用于計(jì)算存儲(chǔ)驅(qū)動(dòng)器)仍在進(jìn)行中,尚未準(zhǔn)備好標(biāo)準(zhǔn)化,但 NVMe 規(guī)范現(xiàn)在能夠更輕松地整合此類(lèi)新開(kāi)發(fā)。NVMe 原則上還可以添加一個(gè)開(kāi)放通道命令集,以公開(kāi)管理 NAND 閃存(頁(yè)面、擦除塊、缺陷管理等)的大部分或全部原始細(xì)節(jié),但普遍的行業(yè)共識(shí)是分區(qū)存儲(chǔ)范式達(dá)到了更合理的平衡,并且對(duì)開(kāi)放通道 SSD 的興趣正在減弱,有利于分區(qū)命名空間。
對(duì)于企業(yè)用例,NVMe 繼承了 SCSI/SAS 的保護(hù)信息支持,將一些額外信息與每個(gè)邏輯塊相關(guān)聯(lián),用于驗(yàn)證端到端數(shù)據(jù)完整性。NVMe 2.0 將現(xiàn)有的保護(hù)信息支持從支持 16 位 CRC 擴(kuò)展到還支持 32 位和 64 位 CRC,從而為大規(guī)模存儲(chǔ)系統(tǒng)提供更強(qiáng)大的數(shù)據(jù)保護(hù)。
NVMe 2.0 引入了一項(xiàng)重要的新安全功能:命令組控制,使用新的 Lockdown 命令進(jìn)行配置。NVMe 1.4 添加了命名空間寫(xiě)保護(hù)功能,允許主機(jī)系統(tǒng)將命名空間置于寫(xiě)保護(hù)模式,直到明確解鎖或驅(qū)動(dòng)器重新啟動(dòng)。NVMe 2.0 的 Lockdown 允許類(lèi)似的控制來(lái)禁止其他命令。這可用于將驅(qū)動(dòng)器置于允許普通讀取和寫(xiě)入的狀態(tài),但各種管理命令被鎖定,因此無(wú)法重新配置驅(qū)動(dòng)器的其他功能。與之前的寫(xiě)保護(hù)功能一樣,此命令組控制支持設(shè)置這些限制,直到它們被明確刪除,或者直到重新啟動(dòng)。
對(duì)于 NVMe over Fabrics 用例,NVMe 2.0 闡明了如何在可通過(guò)多個(gè)控制器訪問(wèn)共享存儲(chǔ)的情況下處理固件更新和安全設(shè)備關(guān)機(jī)?,F(xiàn)在還明確支持硬盤(pán)驅(qū)動(dòng)器。盡管硬盤(pán)驅(qū)動(dòng)器不太可能很快切換到本地使用 PCIe 連接而不是 SAS 或 SATA,但支持多種旋轉(zhuǎn)介質(zhì)意味著企業(yè)可以使用 NVMe over Fabrics 統(tǒng)一他們的存儲(chǔ)網(wǎng)絡(luò),并放棄像 iSCSI 這樣的舊協(xié)議。
總的來(lái)說(shuō),NVMe 2.0 并沒(méi)有像之前的一些更新那樣帶來(lái)那么多的新功能。特別是,此更新中沒(méi)有任何內(nèi)容與客戶端/消費(fèi)者 SSD 相關(guān)。但是規(guī)范重組應(yīng)該使迭代和試驗(yàn)新功能變得更加容易,并且在接下來(lái)的幾年里,有望看到更頻繁的更新和更小的更改,而不是將兩三年的工作捆綁在大的規(guī)范更新上。
參考鏈接:https://www.anandtech.com/show/16702/nvme-20-specification-released