在過去幾年里,主流企業已經逐漸轉生產速度更快、延遲更少的NAND閃存,但是一些廠商賣給消費的產品仍有一些限制,以致于無法發揮閃存的全部性能。
傳統的磁盤陣列將數據存放在離CPU較遠的集成了NAND閃存的固態硬盤上,但卻使用的是一個過時的存儲控制器。無論NAND閃存的速度有多快,都要受這一數據傳輸過程的局限,以致于應用程序的實際吞吐量只有小的改進。
讓我們退后一步,分析一下磁盤存儲的弊端,傳統架構使用閃存的缺陷,以及如何發揮NAND的最大性能。
傳統外部存儲系統的性能瓶頸
與CPU相比,磁盤的速度局限是眾所周知的,但很少有人知道,IT管理員在配置磁盤以發揮其最大性能的痛苦。這包括購買昂貴的FC磁盤以及復雜的結構,例如每塊磁盤只使用一部分以提高性能,這就意味著大量的閑置容量將隨磁盤堆棧的增加而增加,并且管理員還要花費更多精力去檢測故障(這還不包括空間、電力以及散熱所增加的成本)。
即便是有這些技巧,但由于外部磁盤存儲系統與CPU之間的距離,磁盤通常很難達到滿足其所需的性能水平。當CPU與內存以微秒的速度運行時,卻是以毫秒的速度訪問基于磁盤的外部存儲系統,這之間是一千倍的差距。即使磁盤陣列可以快速地存取數據,但從CPU獲得數據卻有很長的延遲,以致于CPU要花費大量的時間等待數據。這就給應用程序和數據庫的性能發揮帶來了影響。
圖1:應用程序和數據庫與磁盤陣列所引發的延遲
傳統應用模式下閃存性能瓶頸
如果你只是將閃存當一種新的媒質,如同磁帶和磁盤一樣的媒質,如果在應用過程中當作之前媒質的使用方式,那么實際上存儲技術就只是前進了一小步。
閃存本身消除了傳統磁盤由于緩慢旋轉所造成的部分延遲,但卻并沒有解決從CPU獲取關鍵數據過程所造成的延遲。
使用錯誤的存儲通道將關鍵過程數據存儲在遠離服務器CPU的閃存陣列中,導致應用程序和數據庫請求超時。
這樣只能達到很小的性能增益效果,除了要采購更多的硬件之外,企業還必須增加復雜和昂貴的存儲區域網絡基礎設施,包括主機總線適配器、交換機和單片陣列。
最為重要的是,這些架構仍沿用的是傳統的存儲架構,還有RAID、SATA/SAS控制器-所有已優化的傳統旋轉磁盤,但沒有NAND閃存芯片。圖2顯示的是傳統的存儲層。
[page]
全新的PCIe接口將讓閃存發揮巨大潛力
越來越多的固態硬盤供應商已經認識到這點,實現SSD性能提高的關鍵因素是將閃存靠近CPU。他們正研發使用主機PCIe端口的設備,以消除目前翻譯層的局限。
然而,現在一些設備的基礎性能是通過將閃存放置在最初是為磁盤設計的SATA或SAS控制器下所獲得的,這些協議和數據處理機制,并不適用于閃存,也沒有對閃存做任何的優化,這就好像把一臺高性能的汽車引擎安裝在一輛已經有25個年頭的老爺車上。
同樣的事情還發生在RAID控制器上,其最初的設計目的是為了聚合多個磁盤的性能,以避免單個磁盤故障所造成的數據丟失。對于傳統的旋轉媒質而言,RAID機制性能優越。但是,但這些機制并不能與NAND閃存相適應,因為其造成了太多的延遲。
最好的方法就是將閃存放置在服務器內部,并采用PCIe接入,拋開傳統的存儲技術,使用一個新的、劃時代的架構以給NAND閃存和主機內存提供一個最直接、最方便以及最低延遲的通道。
請記住,CPU從來沒有從存儲系統中讀取任何數據,這一切都必須首先通過系統內存。在一過程中,主機PCIe閃存設備像磁盤一樣存儲應用程序或數據庫數據,但實際上,它們通過直接內存訪問或DMA向系統內存提供數據。這樣能有效保證數據存儲與CPU處理處于最低延遲狀態。
通過讓服務器CPU不受限制地訪問閃存,主機PCIe可將應用程序和數據庫的性能提升10倍以上。這種方法和其他固態產品之間最大的區別是明顯改善了應用程序的吞吐量,而不只是媒質本身的性能。沒有傳統存儲協議的服務器數據位置將使應用程序能夠充分利用服務器的CPU,而不是強迫它們等待服務器的訪問速度。如圖3所示。
圖3:主機PCIe NAND閃存給應用程序和數據庫提供更低的延遲
將閃存作為磁盤或高速緩存
主機PCIe NAND閃存設備可用作磁盤驅動器或高速緩存設備。與傳統的基于磁盤的系統相比,都有明顯的性能優勢。
在磁盤模式下,NAND閃存PCIe設備可像傳統磁盤一樣存儲數據,這是將整個數據集放置在一個或多個PCIe設備上的數據庫的最佳選擇。NAND閃存PCIe設備可以聚合主機操作系統軟件或內置卷管理功能,如Oracle的自動存儲管理(ASM)。NAND閃存PCIe設備也可作為本地的大容量存儲空間使用,其可在單個服務器內存儲超過10TB的數據,充足的容量幾乎涵蓋了大部分市場。即使整個數據集不能存儲在閃存中,大多數的數據庫允許將諸如索引或“熱”數據之類的活躍文件以手動的方式放置在一個特定的位置進行存儲。
在緩存模式下,PCIe NAND閃存可在不改變現有的外部存儲基礎設施前提下,緩存頻繁存取的數據。對已部署的基于子系統的數據保護和恢復機制而言,這是最適合的選擇。
緩存每個服務器內的本地頻繁存取數據以保證活躍數據的最大性能,并同時保留現有的數據存儲。這種組合對于I/O密集型裸機或虛擬環境應用來說,是最佳選擇。在許多情況下,虛擬環境常常遭遇I/O性能不足,或者以極高的成本才能獲得高I/O。在PCIe設備上緩存虛擬機頻繁訪問的數據可以緩解這種痛苦。
閃存技術為提升企業應用程序和數據庫速度帶來了很多的好處。但如果只是將閃存當作一種新的磁盤驅動器的話,企業將不能發揮其潛在的性能。采用主機PCIe的方式,放棄傳統的存儲協議和關鍵位置過程數據以更貼近CPU,以最大限度減少延遲,實現閃存對企業的承諾。