這幾張圖來(lái)自我的一位朋友@XeonPhiCluster上個(gè)月發(fā)的微博——“sTec企業(yè)級(jí)800GB SAS接口SSD,亮點(diǎn)是sTec自研的Controller,自帶4* (2.7V/6F)超級(jí)電容,最多16個(gè)NAND顆粒,性能可靠性不錯(cuò)。”
在“sTec”主控右上方有1顆DRAM緩存芯片,它的背面(也就是前一張照片上)應(yīng)該還有2顆相同的芯片,可以起到ECC的效果?
這里的重點(diǎn)講的是電容——“四個(gè)2.7V/6F超級(jí)電容,個(gè)頭不大見(jiàn)圖(需要掰開(kāi)塑膠件才能看到6F字樣),使用這么大超級(jí)電容和SAS企業(yè)級(jí)應(yīng) 用相關(guān)。以前接觸Intel,前期產(chǎn)品如X25-M沒(méi)用電容,SSD 320是6個(gè)470uF/6V的鉭電容,后來(lái)S3500是3個(gè)45uF/35V的鋁電解電容。說(shuō)白了,看用 戶,看場(chǎng)景,以前統(tǒng)一存儲(chǔ)主板上還用超大的BBU電池呢。”
這款sTec SAS SSD使用電容之大,我覺(jué)得可以歸為本文開(kāi)頭的分類“a”——大量寫(xiě)Cache數(shù)據(jù)(包括元數(shù)據(jù))。記得我還曾詢問(wèn)過(guò)sTec關(guān)于 PCIe SSD上使用外置DRAM的原因,答復(fù)并不意外——“優(yōu)化(合并)對(duì)NAND的寫(xiě)入,獲得更好的性能和壽命”。
提到Intel SSD 320,使我想起前幾年參加過(guò)的采訪。
當(dāng)時(shí)Intel的齊煒是這樣解釋的:“斷電這塊,今天我們會(huì)用電容,英特爾只是把內(nèi)存里的數(shù)據(jù)存進(jìn)去,有一些數(shù)據(jù)會(huì)放在我們控制器里面緩 沖區(qū),所以在斷電保護(hù)時(shí)間里面要完成數(shù)據(jù)的拷貝量是不大的,是相對(duì)小的。其他的廠家可能有很大的電容來(lái)提供保護(hù),但他們面臨著安全性的 問(wèn)題,電容本身的壽命可能比不上整個(gè)固態(tài)硬盤,所以就是說(shuō)你的電容大,很可能會(huì)成為里面最早壞的元件。”
如上圖,幾顆黃色鉭電容保護(hù)的就是旁邊那顆64MB Hynix DRAM中的數(shù)據(jù)。Intel當(dāng)時(shí)表示,SSD主控里的Cache存放的是臨時(shí)數(shù)據(jù),而外置DRAM 則是元數(shù)據(jù)(映射表),而電容正是針對(duì)的后者。
我認(rèn)為Intel SSD 320,包括他們后來(lái)的企業(yè)級(jí)SATA、PCIe產(chǎn)品都應(yīng)該屬于分類“b”——掉電保護(hù)少量元數(shù)據(jù)、正在寫(xiě)入的頁(yè)面。
相比之下,當(dāng)時(shí)SandForce(現(xiàn)在屬于希捷了)控制器采用壓縮方案,無(wú)外置DRAM因此控制器內(nèi)置的緩存大一些。企業(yè)級(jí)產(chǎn)品可以加電容來(lái)保 護(hù),消費(fèi)級(jí)SSD通常不會(huì)配置。
上圖為L(zhǎng)SI Nytro的前身——SATA轉(zhuǎn)PCIe的WarpDrive,卡背面有2顆0.6F 5.5V的電容,它們肩負(fù)著正面6個(gè)SandForce控制器SLC模塊的掉電保 護(hù)。
那么這款WarpDrive估計(jì)也屬于分類“b”或者“a”。
不久前,有朋友在網(wǎng)上詢問(wèn)“Fusion-io主機(jī)內(nèi)存里的元數(shù)據(jù)每次更新是透寫(xiě)到卡里么?”
業(yè)內(nèi)資深人士@jebtang回復(fù)說(shuō):“沒(méi)有,只是把內(nèi)存中的元數(shù)據(jù)的b+tree的頭和尾寫(xiě)入在FPGA上的SDRAM里,這樣可以在掉電的時(shí)候rebuild整 個(gè)tree出來(lái)就行了。”
可見(jiàn)Fusion-io卡上只需要少量電容,應(yīng)該屬于典型的分類“b”,不過(guò)正如我在《破解PCIeSSD進(jìn)化:從踩坑到解決方案》一文中所寫(xiě)的, PCIe SSD恢復(fù)供電后rebuild元數(shù)據(jù)通常會(huì)有一段時(shí)間,“有的1-2分鐘,也有的8-40分鐘”。
接下來(lái)我們?cè)倏纯磭?guó)內(nèi)兩家PCIe SSD初創(chuàng)廠商是怎么說(shuō)的,由于是技術(shù)討論,具體品牌在這里只用代號(hào)表示。
F:“只有我們是寫(xiě)到flash的,呵呵,這可是技術(shù)活。
做Cache應(yīng)用是不需要的,我們是需要保證的,一旦告訴業(yè)務(wù)層寫(xiě)入成功,那必須是。這涉及誠(chéng)信問(wèn)題。
元數(shù)據(jù)都不實(shí)時(shí)寫(xiě)flash,那還談啥子可靠性。說(shuō)到代價(jià),基本可以忽略,我們的4k寫(xiě)IOPS還不是到35萬(wàn),所以說(shuō)是技術(shù)活呢。
一般電容保護(hù)不了這個(gè),卡上電容的目的是保護(hù)正在寫(xiě)入的頁(yè),不是RAM里的數(shù)據(jù)。普通的SSD還行,PCIe的,用電容不現(xiàn)實(shí)。我們的系統(tǒng)級(jí)產(chǎn) 品倒是提供了RAM的數(shù)據(jù)保護(hù),4個(gè)尺寸是30*30mm的電容,很大個(gè)的。異常掉電的恢復(fù)時(shí)間很快啊,分分鐘搞定。”
K:“4個(gè)電容總備電量多大?單卡最大功耗多大?RAM容量多大?”
F:“這么說(shuō)吧,我們的目的是保證給200瓦的系統(tǒng)20ms的時(shí)間,處理異常掉電的善后工作。”
K:“20ms 夠不夠?我們2.5寸的SSD2.5瓦,無(wú)外置緩存,備電電容90-400mF,保證200-300ms.PCIe卡最大35瓦,無(wú)外置緩存,0.8F超級(jí)電容。 總體來(lái)說(shuō),沒(méi)有為跑分而設(shè)計(jì)外置緩存,減小備電要求,同時(shí),安全冗余還是放的很大。以上供你參考。一起努力,中國(guó)閃存創(chuàng)業(yè)者雄 起!”
F:“每頁(yè)的寫(xiě)入時(shí)間是1.5-2ms. 結(jié)合你的RAM大小,應(yīng)該很容易算出電容的需求。”
K:“DRAM不只是存儲(chǔ)一些頁(yè)大小的數(shù)據(jù),合并優(yōu)化中的用戶數(shù)據(jù)、映射表,否則沒(méi)必要用那么大的緩存的。
我們?yōu)榱丝煽啃裕艞塅PGA了,是ASIC方案。外置DRAM其實(shí)很不錯(cuò),對(duì)性能,壽命都有很大幫助。 但我們測(cè)試了多家的外置緩存的方案,發(fā) 現(xiàn)得到好處的同時(shí)代價(jià)和風(fēng)險(xiǎn)也很大,進(jìn)行優(yōu)化寫(xiě)入技術(shù)對(duì)掉電要求很高,風(fēng)險(xiǎn)很大,而電容,電池都有老化問(wèn)題,安全冗余必須很大才行。最 終我們否了外置緩存方案。”
點(diǎn)評(píng):上面這兩家討論的還算友好:)可以看出他們的產(chǎn)品有些共性——卡上電容的目的是保護(hù)正在寫(xiě)入的頁(yè),據(jù)稱至少有一家的元數(shù)據(jù)是實(shí) 時(shí)寫(xiě)NAND閃存。也就是說(shuō),他們可能都屬于本文開(kāi)頭的分類“c”。
看上去一切都很好,我也希望真的那樣好。然而在3年多之前,我在一次和國(guó)內(nèi)某PCIe SSD初創(chuàng)廠商交流時(shí)(那時(shí)他們的卡還只是樣版),曾 經(jīng)問(wèn)過(guò)元數(shù)據(jù)直接寫(xiě)NAND是否會(huì)有性能問(wèn)題,當(dāng)時(shí)對(duì)方的答復(fù)相當(dāng)肯定——不會(huì)。不過(guò)后來(lái)聽(tīng)到其掉電后第一次重啟恢復(fù)的時(shí)間,又讓我感覺(jué)有 點(diǎn)像Fusion-io rebuild元數(shù)據(jù)的方式,甚至?xí)r間更長(zhǎng)。
再次聲明,本文沒(méi)有指責(zé)哪家的意思。正如一位業(yè)內(nèi)朋友所說(shuō):“即使產(chǎn)品出現(xiàn)過(guò)問(wèn)題,只要下功夫,半年一年之內(nèi)基本也能解決。”
如果元數(shù)據(jù)真的100%直接寫(xiě)NAND,即使對(duì)IOPS影響不大的話,我還是有點(diǎn)擔(dān)心寫(xiě)放大,還有延時(shí)。
上圖是Intel最新一代PCIe(NVMe)SSD規(guī)格,在讀/寫(xiě)延時(shí)數(shù)字中,這里的讀“作弊”了,因?yàn)槭窃陧樞騃/O也就是說(shuō)有Cache預(yù)讀的情況下。
如果某家產(chǎn)品每一個(gè)寫(xiě)I/O都是直接到NAND的話,寫(xiě)延時(shí)就更不可能這樣短了,特別是元數(shù)據(jù)立即寫(xiě)到閃存。
如上圖,三星SFF-8639規(guī)格的XS1715 SSD PCB背面布滿了大量的鉭電容。如下圖,它的DRAM緩存芯片是1顆256MB的,PMC主控中有多少緩存需 要做掉電保護(hù)我不太確定。但參考本文前面的經(jīng)驗(yàn),該產(chǎn)品可能又回到了“b”甚至“a”分類。
那么好處是啥呢?我覺(jué)得可能還是為了性能、簡(jiǎn)化設(shè)計(jì)等。沒(méi)有一種方案十全十美,都是有取舍的。
看到這顆同樣金屬上蓋的PMC NVMe控制器,我又想起了sTec——也包括他們的PCIe ASIC。在SAS企業(yè)級(jí)SSD陷入同質(zhì)化競(jìng)爭(zhēng)之后,PCIe又會(huì)怎 樣呢。如今PMC被Micron、三星和Memblaze選用可謂風(fēng)光無(wú)限,有人開(kāi)玩笑說(shuō)SandForce被LSI給搞廢了:)不過(guò)Marvell和其他人還是會(huì)加進(jìn)來(lái)玩 的。
最后這張圖,來(lái)自Greenliant VP李炫輝的ppt,是講如何做SSD掉電保護(hù)測(cè)試的。廠商說(shuō)的再好,用戶還是要通過(guò)自己的測(cè)試來(lái)驗(yàn)證。
本文出自黃亮的微信公眾號(hào),企業(yè)存儲(chǔ)技術(shù)(微信號(hào):huangliang_storage),歡迎大家關(guān)注!