NVMe Over Fabrics架構概述
NVMe Over Fabrics使用RDMA或光纖通道(FC)架構等Fabric技術取代PCIe傳輸。如圖所示,除了基於RDMA架構的傳輸包括乙太網(ROCE),InfiniBand和iWARP,當然,採用基於原生TCP(非RDMA)傳輸也是可能的(截至2018年7月,TCP技術仍在研發階段)。
圖RDMA和FC Fabric NVMe架構
圖中所示的NVM子系統是一個或多個物理結構介面(埠)的集合,每個單獨的控制器通常連接到單個埠。多個控制器可以共享一個埠。儘管允許NVM子系統的埠支持不同的NVMe傳輸,但實際上,單個埠可能僅支持單個傳輸類型。
注意:NVM子系統包括一個或多個控制器,一個或多個命名空間,一個或多個PCI Express埠,非易失性存儲器存儲介質,以及控制器和非易失性存儲器存儲介質之間的介面。
下圖是一個存儲陣列的示例,該陣列是由通過FC結構連接到3個主機的NVM子系統組成。
圖:由通過Fabric連接到3個主機的NVM子系統組成的示例陣列
通常,NVM子系統呈現一個或多個NVMe控制器(最大約64K)的集合,其用於通過一個或多個(最多64K)NVM子系統埠訪問與一個或多個主機相關聯的命名空間。實際上,子系統控制器的數量或子系統埠的數量往往非常小。
NVMe Over Fabrics(NVMe-oF)也是基於NVMe架構,包括命令集和排隊介面。除Admin和I/O命令外,它也支持Fabric命令。NVMe-oF在某些方面與基本NVMe規範有所不同(例如,不允許中斷),因為NVMe中的Interrupt的說法,僅僅限於NVMe over PCIe的架構,在NVMe over Fabric的架構下,不存在任何Interrupt的說法。
注意:有關NVMeover Fabrics與NVMe基本規範之間差異的完整列表,請參閱NVMe Over Fabric 1.0規範
控制器一次只與一個主機關聯,而埠可以共享。NVMe允許主機通過相同的埠或不同的埠連接到NVM子系統中的多個控制器。
NVMe-oF支持發現服務,使用發現機制,主機可以獲得具有主機可訪問的名稱空間的NVM子系統的列表,包括發現到NVM子系統的多個路徑的能力。NVMe Identify Admin命令用於確定控制器的命名空間。
如前所述,NVMe規範支持多路徑I/O和命名空間共享。雖然多路徑I / O,命名空間共享,多主機連接和預留等概念並不相同,但為了方便將它們一起描述,它們在涉及多主機命名空間訪問,尤其是在使用NVMe預訂(Reservations)時有些相互關聯。以下提供了這些概念的簡要說明。
命名空間共享
命名空間共享是指兩個或多個主機使用不同的NVMe控制器訪問公共命名空間的能力。命名空間共享要求NVM子系統包含兩個或更多控制器。
下圖顯示了兩個NVMe控制器通過兩個NVM子系統埠連接的示例; 在此示例中,命名空間B(NS B)由兩個控制器共享。NVMe操作可用於協調對共享命名空間的訪問。與共享命名空間相關聯的控制器可以同時在命名空間上操作。可以使用全局唯一標識符或與命名空間本身關聯的命名空間ID(NSID)來確定何時存在到同一共享命名空間的多個路徑。
NVM子系統不需要將相同的命名空間附加到所有控制器。在圖中,只有命名空間B被共享並連接到控制器。
註:當前的NVMe規範未指定跨NVM子系統的命名空間共享,這在NVMe 1.4規範草案中得到了解決。
圖:具有對共享命名空間的專用埠訪問的示例
多路徑
NVMe多路徑I/O是指單個主機和命名空間之間的兩個或多個完全獨立的路徑。每個路徑使用自己的控制器,儘管多個控制器可以共享子系統埠。命名空間共享等多路徑I/O要求NVM子系統包含兩個或更多控制器。
在下圖所示的示例中,主機A通過控制器1和控制器2具有2個路徑。NVMe標準技術委員會目前正在制定關於多路徑I/O的規範草案。
多主機連接和預留
NVMe預留功能類似於SCSI-3持久保留,可用於提供兩個或多個主機用於協調對共享命名空間的訪問的功能。命名空間上的NVMe預留限制了主機對該命名空間的訪問。例如,受驅動程序支持的VMware ESXi可以使用NVMe預訂來支持使用VM的MicrosoftWindows Server故障轉移群集。
NVMe預留需要主機和命名空間之間的關聯。多路徑I/O和命名空間共享環境中的每個控制器只與一個主機相關聯,如下圖中的示例所示。主機可以通過向與其關聯的每個控制器註冊相同的主機ID來與多個控制器相關聯。
注意:為了唯一標識主機ID,控制器可以支持以下兩種格式之一:
1)64位主機標識符
2)擴展的128位主機標識符; NVMeOver Fabrics需要128位擴展格式
如下圖所示的示例中,主機A與2個控制器相關聯,而主機B與單個控制器相關聯。主機標識符(例如,主機ID A)允許NVM子系統識別與同一主機(例如,主機A)相關聯的控制器,並保留跨這些控制器的預留屬性。
圖:對共享命名空間的多主機訪問
提醒一下,NVMe-oF是一種通過可擴展的方式在主流互連上擴展NVMe架構的事實標準。該標準旨在使非易失性存儲器快速基於消息的命令能夠 通過網路在主計算機和目標固態存儲設備或系統之間傳輸數據。主要的好處包括提高性能,減少網路延遲和瓶頸。
關於NVMe-oF/TCP
一個更有趣的新發展是NVMe和傳輸控制協議(TCP)的新傳輸綁定。對開發人員來說,好處是遷移NVMe技術到Internet小型計算機系統介面(iSCSI)。對於希望利用其乙太網基礎設施並避免遠程直接內存訪問(RDMA)協議的複雜性的企業而言,NVMe-oF/TCP是一個很好的選擇。
NVMe-oF的傳輸無關性意味著NVMe-oF可以支持所有傳輸,目前有幾種主流傳輸方式:RoCEv2,iWARP,InfiniBand和FCoE(乙太網光纖通道/FC)。這裡面有一些傳輸使用我們的規範中包含的RDMA協議實現綁定,但目前NVMe相關組織在正在添加TCP以滿足市場需求。
業界對NVMe-oF /TCP標準持樂觀態度, 許多行業領導者都支持它,包括Facebook,谷歌,戴爾EMC,英特爾和其他公司。
外部存儲市場已經開始採用NVMe-oF技術,我們希望企業客戶能夠繼續在高性能要求的應用中使用和部署它。目前已經看到頂級供應商,包括Broadcom,思科,英特爾,IBM等,並宣布推出NVMe-oF解決方案。
NVMe-oF的未來在企業存儲領域是光明的,新興的計算密集型市場需要NVMe-oF技術。
人工智慧,機器學習和實時分析都需要NVMe-oF提供的更低延遲和更快的吞吐量。NVMe-oF技術具有許多優勢,可以滿足新的應用需求。在伺服器端,NVMe-oF減少了操作系統存儲堆棧的長度,從而可以更有效地進行連接。在存儲陣列方面,由於通過目標堆棧的路徑較短,從而改善陣列性能。
然而,最重要的好處之一是NVMe-oF利用存儲陣列的原有技術,通過從SAS/SATA驅動器轉移到NVMe SSD,加速解決方案上市。
內容分享到此為止,更多技術細節請參考整理成文的「NVMe技術標準和原理深度解析」電子書,詳細內容和目錄如下。
一、NVMe技術和應用概述6
1.1 NVMe技術獨特優勢7
1.2 NVMe-oF技術概述7
1.2.1 NVMe over FC8
1.2.2 NVMe over乙太網和InfiniBand8
1.2.3 NVMe over TCP8
1.3 NVMe數據中心應用現狀分析8
1.3.1戴爾EMC(PowerMax)8
1.3.2 E8存儲公司(E8設備和軟體)9
1.3.3 Excelero Inc (NVMesh)10
1.3.4 IBM (FlashSystem 9100)11
1.3.5 NetApp (AFF A800及EF570)12
1.3.6 Pure Storage(FlashArray和FlashBlade)16
1.3.7 Vexata公司(VX-100M和VX-100F)17
二、NVMe標準術語解釋19
三、NVMe-oF和NVMe over PCIe差異37
3.1 NVMe-oF原理和概述37
3.2 NVMe over PCIe原理和概述39
3.3 NVMe over FC如何工作40
3.4 NVMe/TCP(NVMe over TCP)如何工作43
3.4.1 NVMe/TCP PDU的定義43
3.4.2 基於NVMe/TCP transport通信45
四、NVMe Over Fabric命令解析46
4.1 Command欄位分析47
4.1.1 Fabric Command 欄位47
4.1.2 Admin/IO Command47
4.2 Command響應欄位分析48
4.2.1 Fabric Response欄位48
4.2.2 Admin/IO 響應欄位48
五、Discovery處理流程50
5.1 Discovery初始化過程50
5.2 Discovery Log Page51
5.3 Discovery終止機制57
六、Connection處理流程57
七、數據傳輸流程61
7.1數據傳輸總體介紹61
7.2 傳輸單元Capsule61
7.2.1 Command Capsule 大小62
7.2.2 Command Capsule報文結構62
7.2.3 Response Capsule報文結構64
7.2.4 In Capsule傳輸方式64
7.2.5 In memory 傳輸方式65
7.2.6 Out of Order傳輸方式66
7.3 傳輸命令和流程66
7.3.1 NVM讀命令66
7.3.2 NVM寫命令68
7.4 SGL散列表69
八、NVMe元數據71
8.1 NVMe元數據定義71
8.2 NOF Metadata傳輸方式72
8.2.1數據In capsule傳輸(數據對齊)72
8.2.2數據In capsule傳輸(數據未對齊)73
8.2.3數據In memory傳輸(SGL在memory)74
8.2.3數據In memory傳輸(SGL在capsule)74
九、NVMe/NVMe over Fabric流控處理75
十、NVMe安全認證機制77
10.1 安全認證概述77
10.2 認證相關命令78
10.3 認證流程78
十一、Stream數據流80
11.1 Stream概述80
11.2 Stream命令80
11.3 Stream配置和實現82
十二、加速後台操作(ABO)84
12.1 ABO概述84
12.2 ABO模式84
12.3 ABO狀態查詢84
12.4 啟動/停止Host觸發的ABO85
12.5 ABO參數配置85
十三、NVMe傳輸層綁定實現85
十四、Sanitize機制原理85
14.1 Sanitize概述85
14.2 Sanitize和Format格式差異86
14.3 Sanitize作用範圍88
14.4 Sanitize工作模式89
14.5 Sanitize狀態機89
14.6 Sanitize命令90
十五、Reservations機制分析90
15.1 Reservations概述90
15.2 Reservation角色91
15.3 Reservation類型92
15.4 Reservations操作流圖93
15.5 Reservations支持條件94
15.6 Reservations實現和相關命令95
十六、Keep Alive機制103
16.1 Keep Alive背景103
16.2 功能概述103
16.3 Keep Alive應用範圍103
16.4 Keep Alive實現104
十七、Interrupt中斷機制104
17.1 Interrupt具體實現104
17.2 Interrupt Aggregation中斷聚合105
17.3 NVMe中斷映射方式105
十八、NVMe Virtulization虛擬化機制108
18.1 虛擬化機制概述108
18.2 虛擬化應用場景109
18.3 虛擬化具體實現109
18.3.1 Primary Controller109
18.3.2 Secondary Contgroller109
18.3.3 Privileged Actions109
18.3.4 Virtualization管理命令110
18.3.5 Seconary Controller Command110
18.3.6 Resource資源分配110
18.3.7 虛擬化隊列 (Virtual Queue)112
18.3.8 虛擬中斷(Virtual Interrupt)112
十九、NVMe/NVMe over Fabric學習資源113


※黑科技:高性能計算BurstBuffer技術詳解
※SCM和NVM是什麼鬼,與NVMe是什麼關係?
TAG:架構師技術聯盟 |