書名: Linux開源存儲全棧詳解:從Ceph到容器存儲作者名: 英特爾亞太研發有限公司本章字數: 1784字更新時間: 2019-11-15 16:04:53
2.3 存儲接口協議的演變
固態硬盤接口經歷了SATA、mSATA、SATAExpress、M.2和U.2等多次革新,但這些都只是物理接口標準,也就是我們在外觀上能夠直接分辨的接口形式。至于難以通過外觀直接判斷的通信協議,則可以分為上層協議與傳輸協議兩個方面的演變。存儲接口協議如圖2-8所示。

圖2-8 存儲接口協議
SATA接口最為原始,只支持SATA傳輸協議與AHCI上層協議。作為融合了多種協議的接口,M.2則能夠兼容AHCI和NVMe兩種上層協議,至于傳輸協議與傳輸層的布線有關,理論上一個M.2插槽既可以使用M.2 SATA傳輸協議的固態硬盤,也可以使用PCIe傳輸協議、NVMe上層協議的固態硬盤。M.2 SATA傳輸協議兼容性更好,而M.2 NVMe上層協議性能更佳。
AHCI的歷史可以追溯到2004年,是在英特爾公司的領導下由多家公司聯合研發的接口標準,它允許存儲驅動程序啟用高級串行ATA功能。相對于傳統的IDE技術,AHCI能夠改善傳統硬盤的性能,它設計之初面向的就是機械硬盤,針對的是高延遲的機械磁盤的優化。因此AHCI不能完全發揮固態硬盤的優勢,對Flash固態硬盤來說逐漸出現性能瓶頸,又因為非易失性存儲是存儲硬件的發展趨勢,所以需要一種新的協議來突破AHCI的局限,于是NVMe順勢而生。
1.NVMe
NVMe或稱NVMHCIS ( Non-Volatile Memory Host Controller Interface Specification,非易失性存儲主機控制器接口標準)最早是由英特爾公司于2007年提出的。英特爾公司領銜成立了NVMHCIS工作組,成員包括三星、美光等公司,致力于使將來的存儲產品從AHCI中解放出來。固態硬盤產品已經通過NVMe來取代AHCI發揮出極高的性能優勢。
簡單來說,NVMe就是能夠使固態硬盤與主機通信速度更快的主機控制器接口規范。打個比方,假設你剛買了一輛超級跑車,能達到每小時400千米的時速,問題是,普通的道路不允許以這樣的速度行駛,而且一般的城市道路限速為每小時幾十千米,如果想要讓跑車車速更快,那么就需要換一條路開。這個場景有點類似于固態硬盤推出之后存儲行業的情況。閃存技術比傳統的機械硬盤快很多倍,但是早期都是使用SATA或SAS將存儲設備連接到系統和網絡的,雖然對于硬盤驅動器來說,這些接口所能提供的性能已經足夠,但是它們為固態硬盤帶來了瓶頸。
這就促使人們尋找更好的方式將固態硬盤連接到主機,而這正是NVMe的用武之地。NVMe的主要特點如下所示。
· PCIe:NVMe使用PCIe總線來提供更大的帶寬和更低的延遲連接。
· 并行性:NVMe SSD在很大程度上實現了并行性,極大地提高了吞吐量。當數據從存儲設備傳輸到主機時,它會進入一個隊列。傳統的SATA設備只能支持一個隊列,一次只能接收32條數據;而NVMe存儲則支持最多64000個隊列,每個隊列有64000個條目。類似于跑車的例子,SATA就像只有一條車道的公路,可以容納32輛車;而NVMe就像有6.4萬條車道的公路,每條車道都能容納6.4萬輛汽車。當系統從硬盤驅動器讀取數據時,一次只能讀取一塊數據。因為硬盤驅動器的磁頭必須通過旋轉移動到第一個數據塊的正確位置,再次旋轉移動到第二個數據塊的正確位置,以此類推。但是閃存和其他非易失性存儲技術沒有移動部件,不需要旋轉定位的過程,這就意味著系統可以同時從許多不同的位置讀取數據。這就是為什么固態硬盤能夠充分利用NVMe提供的并行性,而硬盤驅動器不能。
· 限速:SATA和SAS連接有比較低的速度限制,對于SATA理論上最大傳輸速度為6.0Gbps,超過一定限度,使用再快的閃存對系統的整體性能也沒有影響。
2.NVMe-oF
在硬盤驅動器的時代,因為硬盤性能太低,所以要把很多硬盤堆在一起形成磁盤陣列,從而提供更高的性能或更大的容量。隨著固態硬盤的發展,開始出現固態硬盤加硬盤驅動器組成緩存或分層,或者純固態硬盤(全閃存)來滿足應用需求的方案。
但是,隨著NVMe SSD的普及,以及服務器本身能支持的固態硬盤數量進一步增加,本地的計算能力可能已經不能完全發揮固態硬盤的全部性能,計算或軟件成為了性能瓶頸。
這個時候,就有兩條途徑:一是減少軟件的開銷,因此出現了SPDK;二是將計算與存儲分離,把固態硬盤放到單獨設備里面,把存儲獨立出來供很多主機共享。但是計算和存儲分離了以后,卻帶來了帶寬和延遲上的挑戰,而這就是NVMe-oF要解決的問題。
NVMe-oF規范與NVMe規范大約有90%的內容相同,其實NVMe-oF只是在NVMe協議中的NVMe Transport部分進行了擴展,來支持InfiniBand、以太網及光纖通道等。
關于NVMe-oF,目前有兩種類型的傳輸正在開發,使用RDMA的NVMe-oF和使用FC-NVMe的NVMe-oF。這里的RDMA包括了InfiniBand、RoCE(RDMA over Converged Ethernet)和iWARP(internet Wide Area RDMA Protocol),RDMA支持在不涉及處理器的情況下將數據傳輸到兩臺計算機的內存,并提供低延遲和快速的數據傳輸。從邏輯架構上看,與NVMe over PCIe相比,NVMe over RDMA在軟件開銷上的增加很小,可以近似地認為跨網絡訪問和本地訪問的延遲幾乎是一樣的。
- Windows Server 2019 Cookbook
- Windows Vista基礎與應用精品教程
- Persistence in PHP with the Doctrine ORM
- 嵌入式Linux系統開發:基于Yocto Project
- Linux性能優化
- 循序漸進學Docker
- 混沌工程實戰:手把手教你實現系統穩定性
- 數據中心系統工程及應用
- RESS Essentials
- Distributed Computing with Go
- CentOS 6 Linux Server Cookbook
- Hadoop Real-World Solutions Cookbook
- 統信UOS應用開發進階教程
- 完美應用Ubuntu(第4版)
- 不可不知的Windows技巧