我們在十幾年前開始使用U盤時,只看到它的便攜與易用,估計很少有人能意識到閃存蘊藏著巨大的性能潛力。
今天,包括PCIe SSD在內的閃存存儲在企業級應用中的普及,歸根結底要歸功于半導體技術的發展。一方面,CPU性能越來越快,而發展緩慢的硬盤越發顯得跟不上;另一方面,以NAND閃存為代表的半導體存儲容量密度增大,而且越來越便宜。當那個拐點的時間到來,人們發現用小小的SSD就能頂上幾十,甚至上百塊硬盤的性能。
在企業級SSD發展初期,更多的應用形式是安裝在EMC等存儲系統廠商的陣列中,替代磁盤的SAS SSD;或者服務器里面使用的SATA SSD。它們能夠與傳統硬盤控制器良好兼容,但當時主流的SATA和SAS接口帶寬只有3Gb/s或者6Gb/s(300-600MB/s),如今12Gb/s SAS還沒有普及,而x8 PCIe 2.0的理論帶寬已經達到4GB/s,PCIe 3.0更是翻了一倍。
曾經是PCIe SSD單卡容量之冠的Fusion-io ioScale 3.2TB。當年它從Facebook走出,帶有為互聯網行業定制,高性價比的特點。令人可喜的是,今年全球率先達到單卡6.4TB容量的寶存科技是一家國內廠商。
此外,針對傳統硬盤設計的SAS控制器自身也存在性能瓶頸,那么“有路何須搭橋”?直接將閃存做到PCIe卡上,顯然速度和延時都會更好,服務器的存儲架構也會變得更加簡單,甚至實際量產的成本都會降低。
這就是今天PCIe SSD越發流行的原因。
產品架構之間的PK
PCIe SSD從產品架構方面來分,包括FPGA/ASIC原生控制器方案和SAS IOC轉接SAS/SATA SSD兩種方式。
盡管筆者一直不看好SAS轉接方案的長遠發展,但兼容性好和成熟的架構是它最大的優勢。產品形態就是把SAS控制器連接的多個SSD盤RAID 0做在一張PCIe卡上,因此它們的Firmware(固件)和主機端驅動與SAS HBA基本通用,兼容絕大多數的服務器、各種操作系統版本都沒有問題。
SAS轉接方案的PCIe SSD現在很少宣傳其性能,畢竟這方面對比原生PCIe閃存控制器沒有優勢。不過,如今幾乎所有PCIe閃存卡的性能對企業級客戶都不是問題。因此,目前市面上Oracle Exadata數據庫一體機就用的SAS轉接PCIe SSD。最近還有國內云和恩墨用EMC ScaleIO分布式SAN軟件搭建的Oracle預集成系統。
總的來說,SAS轉接PCIe SSD的多芯片控制方案從效率、成本上都不占優,因此,我們幾乎只看到LSI這一家先天有利的廠商(該部門如今已賣給希捷)在該領域表現尚可。Intel做了一段過渡的SSD 910,今年也推出自有ASIC控制器的NVMe產品了。
FPGA(現場可編程門陣列)的特點是設計靈活性強,在現有的芯片上通過不同的軟件就可以定義出差異化的閃存卡(盤),并且易于升級。這種低門檻方案非常適合中小規模的廠商。FPGA芯片的缺點是封裝尺寸和發熱量比ASIC較大,數量達到一定規模后,成本不如ASIC。代表廠商是PCIe閃存卡領域的先行者,被SanDisk收購的Fusion-io,被HGST收購的Virident,以及國內的Memblaze和Shannon寶存科技等。
當PCIe閃存卡向著容量越來越大、性能越來越高的方向發展,單卡的功耗就容易超過普通PCIe插槽的25W限制。像SFF-8639尺寸的2.5英寸驅動器形式,插在服務器的前端密度更大,還要注意散熱的問題,這時功能相對固定,但功耗較低的ASIC就體現出價值了。只是設計出一顆優秀的ASIC,僅僅是流片成功都要付出巨大的成本。目前比較多見的原生PCIe SSD ASIC,有被芯片廠商PMC收購的IDT產品線,曾用于美光(Micron)的卡和盤。再有就是Intel和三星這樣的巨頭,還有Marvell和幾經轉手被希捷收購的SandForce。盡管后者的原生PCIe SSD控制器應該還不能量產出貨,但對價格和技術門檻要求低,向來是他們的優勢。
用戶最該關注什么?
對于用戶而言,他們應該如何衡量一款PCIe SSD呢?筆者將從兼容性、可靠性和可用性、性能和本地化支持服務等方面進行衡量。
1.軟硬兼容性
軟件兼容性與上述所講的產品架構有關。無論FPGA還是ASIC方案,PCIe SSD的硬件做出來,產品好壞的關鍵還是在于軟件。這里說的軟件包括Firmware和驅動兩部分。許多消費級SSD,Firmware在控制器廠商提供的公版基礎上改改就可以賣了,SATA盤也不需要開發驅動。在NVMe(稍后會專門介紹NVMe標準)之前,由于企業級SSD沒有這方面通用的標準,因此每家廠商都要提供自己的SCSI塊設備驅動。
硬件方面,相信這個領域中的廠商幾乎都遇到過PCIe SSD插在某款服務器主板上不兼容的情況,這可能就會涉及到Firmware的bug,或者說需要為兼容性做些改動。必要的時候,與服務器/主板廠商對接聯合解決問題應該也是有的。
至于操作系統,目前該類產品以互連網和電商行業用戶為主,大都是Linux,但具體有RedHat、Debain/Ubuntu等幾大發行版分支,以及各種不同的update小版本和Kernel。能否良好兼容每家用戶具體使用的版本,乃至于對用戶定制化Linux版本的支持力度,都是很現實的問題。
2.穩定性、可靠性
談完了軟硬件兼容性,只是過了第一關,畢竟產品能用不等于一定就好用。R.A.S.這個常用的概念分別表示可靠性、可用性和可服務性。
可靠性:對于閃存產品來說一個是寫壽命,因為NAND有自身的PE Cycle(編程/擦除周期)限制。SLC、MLC(包括消費級的cMLC和企業級eMLC)、TLC閃存的結構和制造工藝,導致它們能容忍的寫入次數不同,3D NAND理論上對壽命有益,但實際效果還有待觀察,磨損均衡算法也會影響到寫入放大率。另一方面,用戶放在SSD里的數據如果丟失或者出錯,也不是個小問題。在消費級SSD上出現過的“8MB變磚門”,以及長期不讀取的數據訪問性能下降這類問題,在企業級產品上也是有可能遇到的。
設備的形態,以及系統中可能要插多塊卡/盤的密度,決定了對PCIe SSD的散熱措施不可能像CPU被“照顧”的那樣好,不同服務器系統的局部風量(單位是LFM)也是不同的。我們曾聽說有的FPGA方案PCIe SSD能達到90℃以上的高溫(應該是表面溫度),如果散熱設計不好會導致閃存卡過熱,對閃存卡壽命,以及數據存儲有影響。
接著引出一個價值點:部署多了,用戶需要對閃存卡的性能、壽命、溫度有統一監控管理軟件,或者閃存卡廠商對用戶的網管平臺能提供統一接口定制。
盡管PCIe SSD在近些年接受了Facebook等大客戶和OEM的長期考驗,但它對于許多用戶來說還屬于新鮮事物。特別是國內外初創廠商的產品,其中也有表現好的,但為了便宜,有可能會承擔更大一些的風險(盡管這不是絕對的)。為了保險起見,建議還是多做測試。另外就是看看其他用戶使用的反饋情況。
可用性:可從兩個方面來看,一個是由SSD導致的停機時間,即使閃存卡/盤做得再穩定,服務器也難免會遇到異常掉電的情況。為了提高寫入性能和降低延時,SSD通常都會用少量DRAM內存來作為緩存,這也是我們看到廠商公布的寫延時低于讀延時的原因。有些SSD把元數據放在內存里也有助于提高性能。
企業級產品為了保護異常掉電時內存中數據的完整性,通常會有電容能將內存里的數據備份到閃存。不過再次加電時往往需要一個元數據校驗的恢復時間,就像文件系統的fsck檢查那樣。不同品牌和型號,有的需要1~2分鐘,也有的是8~40分鐘。當然它不會影響最終數據的完整性,如果用戶機房的UPS比較好的話,也許可以不在意吧。
另一方面,NAND閃存介質的特點,決定了它的寫入性能不會像磁盤那樣精確、穩定。從FOB到穩態之間的隨機寫IOPS,差距不小(當然降低后也遠高于HDD)。我們認為,IO穩態寫入時是否有過大波動?IO穩態寫入是否有數據庫異常的現象出現?在極端偶然的特定情況下,如果IO性能突然降低,可能造成系統宕機的風險。這些都會影響到用戶的使用體驗。
可服務(維護)性:因為PCIe閃存卡更換需要關機,再開機箱蓋對用戶傳統體驗有影響,這才有了SFF-8639接口,支持熱插拔。當然也有NVMe(本身對硬件形態沒要求,這里指的也是8639 2.5英寸盤),但對熱插拔背板等硬件及系統(包括主板BIOS)版本都有要求,所以現階段比較靠譜的還是SFF-8639的閃存盤。
另外,在升級SSD Firmware的時候會不會出現數據完整性的風險?盡管用戶的重要數據一般會有備份,但能不用恢復的辦法總是更方便的。
3.性能
其實PCIe SSD性能普遍能夠滿足絕大多數用戶現有的需求,因此本文中不想羅列廠商們經常掛在嘴邊的那些性能數字。
閃存卡一直宣傳高帶寬、高IOPS和低延時(無論隨機還是順序訪問),但用戶的體驗往往不是以測試最高帶寬、最高IOPS為基準的。首先,一般用戶使用峰值也就15~20萬IOPS,但低延時的價值會非常明顯,讀寫的平均和最大延時會直接影響用戶體驗。
4.本地化支持服務
本地化服務的能力,以及響應時間是每個用戶所關注的。如果同樣是初創廠商,相對而言國內公司在這方面會有先天優勢。特別是在產品的第一、二代還沒有完全穩定成熟的情況下(畢竟都要經過這個階段),服務支持能力就顯得更加重要。
甚至有PCIe SSD廠商的受訪者表示:“用戶只關心穩定性及本地化支持。”
此外還有對用戶數據庫、虛擬化應用支撐團隊的支持。這里有個例子,某國際存儲巨頭去年曾對國內媒體說,BAT中的某一家“再也不會從之前的PCIe SSD供應商那里買卡了,理由是用戶需要數據庫方面的支持時跟不上,而他們則有DBA專家來協助用戶/合作伙伴解決存儲本身之外的問題”。(這家巨頭自己并不造卡,但可以轉售或者加上閃存緩存軟件來賣。)所以,PCIe產品對用戶數據庫、虛擬化應用的技術支持,也是用戶需要考慮的因素之一。
NVMe橫空出世
NVM Express(NVMe)是一種為企業級、客戶端系統所用的PCI Express SSD而專門設計的高性能、可擴展主機控制接口。它由Intel等十幾個發起成員公司領導,以及數十個成員組成的行業聯盟共同開發。
NVMe主要解決的問題,或者說好處主要包括以下幾點:
(1) 標準化的驅動,比如較高版本的Linux內核集成通用的NVMe SSD驅動程序。
(2) 精簡優化的存儲堆棧,提高效率。比如支持更大的隊列深度、MSI-X將IO產生的中斷更好地分配到多個CPU核心上,避免出現性能瓶頸。
(3) NVMe還有個好處,就是它不僅盯著NAND閃存,還宣稱考慮了下一代性能更高的非易失性半導體存儲介質。就眼前來看,已經有人拿DRAM放在NVMe卡上跑Demo,也有廠商做出了類似的產品。
除了性能考慮、驅動層面對熱插拔更好的支持之外,如果各家的PCIe SSD都同樣使用操作系統自帶的驅動,無疑對用戶是個好事情——至少能減少許多測試和驗證工作。但另一方面,SSD個性化的增強功能目前主要是狀態監控,乃至于進一步增值的緩存軟件、RAID支持等,都可能要依賴廠商專門的驅動。如果是帶來同質化的結果,最后比拼供應鏈和成本,這個市場剩下的估計只有三星、美光等NAND閃存廠商和Intel這樣的業界巨頭了。
戴爾是率先支持SFF-8639規格PCIe SSD的服務器大廠。如上圖:盡管長得像盤,但它與主板通信走的也是PCIe信號。
NVMe最初是在Fusion-io一家獨大的情況下出現,到如今PCIe SSD百花齊放的時代,NVMe產品也接近成熟。但由于各家廠商的利益不一致,對NVMe支持的力度也不盡相同。
針對NVMe,幾位受訪者的觀點值得關注:“美國人和國內對于NVMe的態度、普及時間上有些差距。美國人覺得NVMe沒有那么快成熟,而且熱插拔沒有行業標準,暫時還不可靠,產品之間不兼容,感覺國內幾大家都已經要撲上去了。”
“注意各家的驅動不兼容都不是用的原始驅動(+本站微信networkworldweixin),因為性能不夠。而且目前價格真的不便宜。”
“某國外服務器廠商對NVMe的支持推遲到2015年下半年,可能仍會延期。因性價比還不如任何一家‘非標準’的PCIe SSD。”
在PCIe SSD消除了性能瓶頸之后,如何消除單點故障是許多用戶接下來會考慮的一個問題。如果只是作為加速緩存或者放臨時數據還好,而其他數據怎么保護呢?這也是PCIe SSD和傳統磁盤陣列,乃至閃存陣列之間的一個重要區別。
PCIe SSD的性能給OLTP交易型應用帶來的效果最明顯,傳統的共享式磁盤陣列面臨著被顛覆的可能。因此,我們現在一方面看到DBA在研究閃存,另一方面有的國內閃存廠商甚至招募了多名Oracle ACE高手來推動解決方案的研發和銷售。
回顧這兩年來PCIe SSD的發展歷程,可以發現這個市場變化是非常巨大的。當時的很多熱門廠商如今都被收購了,Fusion-io被SandDisk收購,LSI被Avago收購,閃存業務后來又被轉手賣給了希捷,而Virident被WD-HGST收購了。這些新興閃存廠商幾乎都是被之前以消費級產品為主的硬盤廠商或閃存大廠給并購,而SSD正是對傳統企業級高轉速硬盤威脅最大的。可以預想,未來的企業級SSD市場競爭將會更加激烈。
目前PCIe SSD廠商們仍在加強競爭力,包括把卡做穩定,對所有系統提供兼容性及支持。由于這些東西慢慢都能做上來,所以以后做卡的廠家會越來越多。現有的閃存卡廠商都開始往解決方案及閃存陣列上轉型了。
關于全閃存陣列,國外已經有許多比較成熟的產品,而且傳統陣列廠商和初創公司(其團隊基本上也來自前者)都盯著這塊大蛋糕,可謂競爭激烈。PCIe SSD廠商如果想進入這一領域,需要比較大的決心和勇氣。
新浪微博的閃存經驗談
大約兩年多以前,微博開始風靡全中國,對于微博用戶而言,帶來的是移動互聯網的新體驗,而對于新浪微博的后臺運維工程師來說,這種飛速增長的業務著實令他們感到棘手。
據新浪研發中心平臺部楊尚剛所說,在2011年,新浪微博業務增長非常快,導致某些地方遇到了性能瓶頸。在當時,對SATA SSD的熟悉程度也不高,因此嘗試了PCIe SSD。楊尚剛表示:“新浪當前持有的PCIe SSD在百片級別,主要應用在數據庫業務上。使用過程是從最初直接使用PCIe SSD作為存儲,中間部分用PCIe SSD作為緩存加速,最后還是將其作為存儲來用。”他坦言,PCIe SSD確實解決了新浪微博遇到的很多問題。
PCIe SSD最初的應用場合一般都是在互聯網企業,而經過這幾年的發展,該產品在技術方面逐漸成熟,且加入該市場的廠商越來越多,同類產品之間的差異化也越來越小。楊尚剛表示,目前PCIe SSD基本可以滿足大多數用戶的存儲需求。楊尚剛認為,SSD未來的應用場景是非常廣闊的,他比較看好的是公有云[注]和NoSQL上應用SSD。
作為資深的PCIe SSD用戶代表,楊尚剛認為,用戶再考慮購買一款PCIe SSD時需要考慮以下幾點:
1.IOPS和延遲時間,以及這兩個技術指標的穩定性。因為很多產品的平均時間都可以達到,但是在穩定性方面還是有差距的。
2.PCIe SSD本身的穩定性,這主要體現在故障率上。
3.此外,還需要考慮的就是成本問題和SSD的壽命問題,這需要用戶進行充分的壽命測試,根據磨損程度來判斷壽命。
4.最后,要關注數據的安全性問題,要看產品是否能夠支持端到端保護和掉電保護都安全機制。
楊尚剛表示,在關注具體的技術細節的同時,用戶還要多參考一些業界的使用案例。
其實,雖然有關閃存的討論一直比較火熱,而且市場競爭也變得更加熱鬧,但是楊尚剛表示,PCIe SSD還是有很多不成熟的地方。他說:“新浪在兩年以前開始使用PCIe SSD,但是后來基本沒有采購類似產品,還是主要以SATA SSD為主,這個和BAT一樣的,PCIe SSD還沒有那么的成熟。”在他們的使用過程中,遇到過一些由PCIe SSD固件本身的bug導致的不可用,不過細節方面他并沒有透露。另外,楊尚剛表示:“現在各家PCIe SSD廠商都是用的自家的私有協議,通用性比較差,規范化不夠,而且不支持熱插拔”。楊尚剛認為,未來一兩年內,SATA SSD在成本方面還是非常有優勢的,所以,除非有特殊的高性能需求,他會優先考慮SATA SSD。
“冷水”雖潑完了,但不可否認的是這個市場會持續前進,一方面技術不斷成熟,一方面產品價格也會有所下跌,對用戶而言總歸是利好的消息。