NVMe1.4的:IO Determinism及多路徑(Multipathing)訪問共享名稱空間
FMS2018已經過去了,但是快閃記憶體的熱度並沒有消退。NVMe組織在FMS2018上通過8個演講對NVMe、NVMe-oF、NVMe-MI、JBOF以及NVMe基準測試等話題進行了介紹。在其官網上有這次演講的PPT(據說視訊也會更新上來)。接下來通過NVMe 組織在FMS2018上的主旨演講看下未來一年NVMe的演進重點。
NVMe協議族的路線圖
從上圖可以看到當前NVMe一些主要的特性和下一步將要做的重點。
這篇文章就說NVMe 1.4的兩大更新。
名稱空間(namespace)是NVMe協議中一個基本的邏輯空間的概念,簡單地說名稱空間將NVMe SSD的使用者空間進行邏輯劃分,每個名稱空間擁有自身的NAND,可以獨立的進行格式化和加密等操作。關於名稱空間的討論可以檢視文末的參考文章或者公眾號回覆namespace。 |
NVMe官網最新的一版NVMe標準是1.3c,釋出於2018年5月24日。而今年第四季度以及2019年,NVMe1.4版本將是NVMe標準化組織工作重點,此次更新的重點包括IO Determinism、PMR以及多路徑訪問共享名稱空間。
IO Determinism:NVMe提高QoS的利器
NVMe協議將在1.4版中通過定義IO Determinism,實現對SSD的物理介質資源精細化管理和控制。在沒有IO Determinism時,多個APP由1個SSD承載,一定程度上QoS也比較難保障。多個APP訪問不同的namespace,但是不同namespace是共享底層channel和Die的。
IO Determinism應用前後負載訪問盤的變化
有了IO Determinism之後,NVMe協議提供將整塊SSD的物理空間劃分為多個NVM Set,每個NVM Set可以包含1到多個Channel和Die,不同的NVM Set的擦除、讀寫都是相互獨立的。不同的Set供不同的App使用(如上圖中右側)。如此一來,應用之間不會互相干擾,效能和延遲也可以得到更好的保障。Facebook在FMS2018上釋出了關於NVMe SSD實現 IO Determinism詳細的測試結果,如下圖:
Facebook對IO Determinism應用後的測試結果
從上圖Facebook對IO Determinism的測試結果可以看出,讀延遲QoS在IO Determinism應用後有了8倍的提升。此外,如今NVMe SSD單盤容量不斷提升(Memblaze的PBlaze5 910/916可以做到15.36TB),IO Determinism將一塊大盤分為多個“小盤”,供上層多個應用使用,提高了資源的利用率。
NVMe多路徑(Multipathing)訪問共享名稱空間(Namespace Sharing)
NVMe多路徑訪問共享名稱空間的意思是單個或多個主機可以通過不同的NVMe Controler訪問同一個Namespace。下圖是一個基本的原理。
當前高可用的NVMe儲存系統多使用雙埠NVMe SSD,並採用如下方案實現:
NVMe1.4以後有了多路經訪問特性,高可用的儲存系統就可以結合NVMe SSD的雙埠實現下圖這樣的高可用方案。每一個Contorller都可以看到NVMe SSD一個Port的兩條路徑,這需要NVMe SSD支援多路經功能。
這與SAS時代實現高可用系統的理念類似,只是從Switch到盤的效能都有了質的提升。JBOD也升級到了JBOF/FBOF。業務連續和資料的完整性是企業客戶對儲存系統的重要訴求,要打造高可用方案,Memblaze在雙埠的研發上已經有諸多積累,相關的討論和技術解讀可以看文末關於雙埠的文章。
NVMe協議還有NVMe-MI和NVMe-oF兩個重要的分支,分別定義了NVMe SSD管理命令和網路層面的規範。未來這兩個分支也會有所演進,NVMe-MI將允許應用通過In-Band方式向NVMe 子系統(一般為NVMe SSD或者多塊NVMe SSD組成的組)傳送NVMe-MI Send和NVMe-MI Receive兩個新的命令,獲取子系統的基本資訊。這些資訊之前多由BMC系統獲取。這一新的特性提高了應用獲取底層SSD狀態資訊的能力,可以更高效的感知NVMe 子系統的健康狀態。
NVMe-oF也會開始支援NVMe Over TCP,這部分內容將在後續的文章中進行詳細的闡述。
相關閱讀:
NVMe官網的FMS2018專題頁面
https://nvmexpress.org/about/flash-memory-summit-2018/
實錘,PBlaze5實力演繹multiple namespaces 功能(上)
https://mp.weixin.qq.com/s/KV4QOGzNVn-J7wWzX39TnA
實錘,PBlaze5實力演繹multiple namespaces 功能(下)
https://mp.weixin.qq.com/s/Xi2zo5JQeVOHh03RiTHSYw
淺析U.2介面NVMe SSD雙埠模式(上)——應用模式與設計實現
https://mp.weixin.qq.com/s/jc0ySv70Fgqx5lXb04gTxw
淺析U.2介面NVMe SSD雙埠模式(下)——可靠性及效能測試
https://mp.weixin.qq.com/s/AZ4buSBxdpXSip6o_PxGOg
企業級全閃是SAS的,也是NVMe的,最終都是NVMe的
Memblaze公眾號請關注
相關文章
- JAXB名稱空間及名稱空間字首處理
- linux iscsi multipath多路徑及名稱持久化配置Linux持久化
- 名稱空間
- PHP 名稱空間PHP
- PHP名稱空間PHP
- vuex名稱空間Vue
- jQuery 名稱空間jQuery
- JavaScript 名稱空間JavaScript
- 使用p名稱空間和c名稱空間的XML快捷方式XML
- JavaScript 中的名稱空間JavaScript
- Python 的名稱空間Python
- python名稱空間Python
- C++名稱空間C++
- 更改模型名稱空間模型
- 全域性名稱空間
- C++ 名稱空間C++
- Python 名稱空間Python
- 11. 名稱空間
- ts---名稱空間
- 小編帶你瞭解如何訪問名稱空間內部元素(php版)PHP
- Objective-C 的名稱空間Object
- 一篇弄懂PHP名稱空間及use的使用PHP
- swift中的名稱空間及動態載入類Swift
- package-make 新增自定義包的名稱空間和生成路徑Package
- PHP 核心特性 - 名稱空間PHP
- Spring名稱空間解析Spring
- 使用名稱空間:基礎
- ros節點名稱空間ROS
- PHP名稱空間概念解析PHP
- JAXB玩轉名稱空間
- System.Web 名稱空間Web
- Python名稱空間包Python
- PHP名稱空間及自動載入淺析PHP
- C#解決一個奇怪的,名稱空間“XXX”中不存在型別或名稱空間名稱“xxx”的問題C#型別
- Python中名稱空間是什麼?名稱空間生命週期是多久?Python
- php名稱空間的呼叫順序PHP
- spring框架中的名稱空間Spring框架
- jquery的事件名稱空間詳解jQuery事件