什麼是NVMe?
【轉載】什麼是NVMe:http://storage.it168.com/a2018/0921/5045/000005045252.shtmlhtml
NVMe是Non-Volatile Memory express(非易失性內存主機控制器接口規範)的簡稱,它是一種協議,可以使固態硬盤(SSD)運行得更快,現在在企業用戶中已愈來愈流行。前端
理解什麼是NVMe的最簡單的方法就是打個比方——假設你剛買了一輛跑車,速度能達到400千米每小時,是你之前那輛老汽車的3到4倍。惟一的問題是,普通的道路是沒法容許以這樣的速度行駛的,並且通常城市道路限速幾十千米每小時,每每還得考慮車流的問題。若是你想要讓跑車更快,就須要換一條路開。git
這個場景有點像製造商推出基於閃存技術的SSD以後,存儲行業的狀況。閃存技術比傳統機械硬盤快不少倍(快多少倍取決於你使用的設備),可是早期的設備都使用與硬盤驅動器相同的SATA或SAS鏈接到系統和網絡。雖然這些接口對於硬盤驅動器(HDD)所能提供的性能來講已經足夠了,可是它們爲SSD帶來了瓶頸。這對於企業大數據分析和其餘數據密集型工做負載來講,尤爲是個問題。express
這些性能問題促令人們尋找更好的方式將SSD鏈接到服務器,這正NVMe的用武之地。服務器
一、什麼是NVMe?
NVMe協議標準由NVM Express公司監管,這是一個由100多個組織組成的聯盟,這些組織致力於開發更快的協議以提升非易失性存儲的性能。該組織由一個13家公司組成的董事會領導,其中包括Cavium、Cisco、Dell EMC、Facebook、英特爾、Micron、Microsemi、微軟、NetApp、三星、希捷、東芝內存和Western Digital。網絡
HDD能達到的最高理論速度,與SATA、NVMe最高提供的理論速度對比架構
NVMe的官方定義將其描述爲「一個開放的標準和信息集合,以充分釋放非易失性存儲在從移動端到數據中心的全部類型的計算環境中可以提供的優點。NVMe從底層開始設計,爲當前和將來的NVM技術提供高帶寬和低延遲存儲訪問。」性能
NVMe是經過PCI Express總線將存儲鏈接到服務器的接口規範,簡單來講就是,使SSD與主機系統通訊的速度更快。它有助於緩解閃存經過最初爲HDD設計的SAS或SATA鏈接到系統時出現的瓶頸。大數據
二、NVMe的速度遠遠快於SATA或SAS
NVMe控制器經過幾種不一樣的方式提升性能。一種是使用PCIe總線,它將存儲直接鏈接到系統CPU。這種直接鏈接消除了SATA的一些必要步驟,並提升了總體性能。設計
此外,NVMe SSD在很大程度上實現了並行性,極大地提升了吞吐量。當數據從存儲傳輸到服務器主機時,它會進入一行或隊列。傳統的SATA鏈接只能支持一個隊列,一次只能接收32條數據。再回到車的類比上,這就像只有一條車道的車流能夠容納32輛車。
而NVMe存儲支持最多64000個隊列,每一個隊列有64000個條目。換句話說,這就像從一條單行道走到一條6.4萬車道的路上,每條車道都能容納6.4萬輛汽車,這對總體表現產生了巨大的影響。
正如咱們的類比中說城市道路通常限速在幾十千米每小時同樣,SATA和SAS鏈接也有速度限制。對於SATA,理論最大傳輸速度爲6.0 Gbps(在實踐中,最大傳輸速度要低得多)。這就至關於給SATA SSD的運行速度設定了上限。超過必定限度,使用再快的閃存對系統的總體性能沒有影響,由於SATA鏈接會形成瓶頸。
對於大多數消費者來講,SATA SSD提供了足夠的性能來完成平常工做。並且因爲SATA SSD比NVMe SSD便宜,大多數消費者級別的固態存儲仍然使用SATA接口。
然而,企業處理的數據一般比消費者多得多,對他們來講,SATA鏈接帶來的延遲可能會成爲一個問題。
英特爾750系列是支持NVMe技術的固態硬盤產品之一
三、只有SSD運行在NVMe上
由於NVMe驅動器要比SATA快得多,因此將NVMe與HDD放在一塊兒使用來提升性能彷佛是個好主意。可是請記住,NVMe表明非易失性存儲接口規範,它是專門爲NAND 閃存等非易失性存儲設計的(儘管它也能夠用於較新的非易失性內存,好比3D XPoint)。
當系統從HDD讀取數據時,它一次只能讀取一塊數據。由於它必須進行旋轉以定位到第一個數據塊的正確物理位置,而後再次旋轉,移動到第二個數據塊的正確位置,以此類推。另外一方面,閃存和其餘非易失性存儲技術沒有移動部件。這意味着系統能夠同時從許多不一樣的位置讀取數據。這就是爲何SSD能夠利用NVMe提供的並行性,而HDD不能。
四、PCIe和NVMe有關係,但它們不是同一個東西
對於不少人來講,NVMe最使人困惑的部分是它與PCIe的關係。一些廠商使用NVMe做爲標籤來指代他們的SSD,另一些廠商則使用PCIe標籤,還有一些廠商彷佛能夠互換使用這些術語。
雖然PCIe和NVMe密切相關,但兩個術語指的是略有不一樣的技術。能夠將PCIe看做是系統的物理部分。當您將一個NVMe SSD插入服務器時,您須要經過一個PCIe插槽鏈接它。
相比之下,NVMe是一種協議,是一組容許SSD使用PCIe總線的軟硬件標準。能夠這麼說,NVMe是容許存儲設備與服務器鏈接的語言,而PCIe是實際的物理鏈接。
五、NVMe-oF鏈接SSD到網絡
本文主要關注的是標準的NVMe,它將SSD直接鏈接到服務器,可是NVM Express組織也發佈了NVMe over Fabric (NVMe- oF)的規範,它將用於塊存儲的非易失性存儲鏈接到網絡。根據該組織的說法,「NVMe- oF定義了一個通用架構,它支持一系列存儲網絡結構,用於存儲網絡結構之上的NVMe塊存儲協議。」這包括在存儲系統中啓用前端接口,擴展到大量NVMe設備,並在數據中心內延長NVMe設備和NVMe子系統可訪問的距離。
NVMe-oF規範與NVMe規範有大約90%的相同;然而,它確實使用了一種不一樣的傳輸映射機制。NVME-oF也有兩種不一樣的變體:一種用於RDMA,另外一種用於光纖通道。
NVMe-oF規範也比NVMe規範新得多,儘管一些廠商已經宣佈支持這項技術,但實際上不多有廠商銷售NVMe的產品。期待這種技術在將來幾年變得更加廣泛。