淺析U.2介面NVMe SSD雙埠模式(上)——應用模式與設計實現

memblaze_2011發表於2018-04-19

看這名就知道文章特別乾貨,雙埠對於SSD和資料中心來講著實是個重要特性,Memblaze工程師汪洋傾力打造了上下兩篇雙埠文章,從應用模型、設計實現到可靠性和效能測試,都介紹一遍。這篇是上篇,介紹了雙埠應用模式和設計實現。


雙資料路徑(或多路徑)對企業級應用並不陌生。原來,電腦都通過單一路徑連線到一個裝置。隨著時間的推移,這種實現模式逐漸暴露出了種種弊端。在單路徑場景中,如果從主機到驅動器本身的資料路徑受到破壞,則無法訪問資料,這為雙路徑(或多路徑)概念鋪平道路。


SCSI裝置是第一個使用兩個物理連線實現雙埠功能的裝置。隨著序列連線的SCSI(SAS)的出現,通過一個物理連線來實現雙埠連線成為可能。由於雙埠允許資料從兩個埠獨立傳輸,因此該技術可以為任何一條資料路徑提供容錯。雙埠很快成為流行的配置。


隨著NVMe SSD技術的飛速發展,雙埠技術在企業級儲存系統中的應用也成為必然,由於其在高效能高可靠性上的優勢,有著更為廣闊的前景及市場。


雙埠NVMe SSD支援單個主機記憶體在的兩條資料路徑,同時通過兩個控制器訪問相同的儲存裝置實現冗餘。在另一種常見的應用場景中,兩個主機系統也可以同時使用雙埠訪問同一儲存系統。如果在一條資料路徑丟失時發生系統故障或電源丟失,可用的資料路徑將繼續執行,對業務連續無影響,就好像沒有發生故障,對QoS的影響達到最小。

雙埠應用模型

根據雙埠應用的場景,可以分為雙活,主從,以及鏈路冗餘等模式。如下圖所示,

圖1 - 雙活模式


Server A 與server B分別通過PCIe switch連線同一塊NVMe SSD,兩者能夠同時訪問相同的儲存空間,互相做儲存資料的冗餘備份。當然整個系統可以有多塊PBlaze5,這要看伺服器的配置而定。

圖2 - 主從模式


Server A 與server B 分別通過PCIe switch 連線到多塊NVMe SSD,兩個server通過心跳線互為雙機熱備,在一條路徑失敗的情況下,可以保證服務不中斷。

圖3 - 鏈路冗餘模式


一個Server分別通過兩個PCIe switch連線到同一塊NVMe SSD,相當於對資料鏈路做了冗餘,在這種模型下,server可以看到2個x2的PCIe裝置,即2個NVMe裝置,通過作業系統本身的multiple path等技術使能鏈路冗餘。


雙埠設計實現

雙埠PBlaze5 PCIe NVMe SSD既可以應用於常規的server採用單埠模式,提供PCIe3.0 x4的頻寬,又可以接入雙埠伺服器自動適配成雙埠模式,每個控制器達到PCIe3.0 x2的頻寬。在雙埠模式下,兩個埠完全獨立,控制器提供兩組PCIe介面的埠暫存器,包括埠控制,埠狀態,時鐘狀態暫存器。由於儲存裝置是獨立供電的,每一個server完全獨立於另一個server實現上電或者下電,互不影響。


圖4 - 單埠與雙埠模式對比


另外,由於NVMe 協議支援multiple namespace,將multiple namespace擴充套件到雙埠NVMe SSD將會使企業級儲存系統更加靈活和多元化。


圖5 - multiple namespace下雙埠模式


Namespace在NVMe協議裡有詳細的定義,Multiple namespaces是指根據盤的邏輯地址劃分多個namespace空間,多個空間可以獨立的進行格式化等操作,與雙埠一樣也是是PBlaze5的重要特性。下圖是一個Linux中32個namespace的PBlaze5。(Multiple namespaces更多細節將由我們另一位工程師解讀,這裡不再贅述。)


這節就先寫到這,後續有一個多圖進階篇,介紹雙埠盤的可靠性測試,並展示雙埠模式下各種場景中的效能效果。好看的還在後面。


相關文章