從SSD到加速卡再到全閃存陣列,近幾年閃存新技術(shù)新產(chǎn)品不斷涌現(xiàn),存儲(chǔ)巨頭在閃存上角力,存儲(chǔ)初創(chuàng)公司也大多選擇在閃存上找到自己的位置,而且閃存密度和應(yīng)用水平越來(lái)越高,更有消息稱,SSD將于兩年內(nèi)突破HDD的容量/價(jià)格“臨界點(diǎn)”,加上媒體對(duì)閃存的鼓吹,一些人想當(dāng)然的開(kāi)始認(rèn)為閃存就是絕對(duì)正確,閃存兇猛!但一直以來(lái)就有一波人冷靜的看待閃存確實(shí)存在的問(wèn)題,這其中有一些用戶有一些行業(yè)專家,但從來(lái)沒(méi)有人站出來(lái)擺出數(shù)據(jù)和事實(shí)說(shuō)些什么,直到最近Facebook的一篇報(bào)告(點(diǎn)擊下載)丟出來(lái)之后,人們才重新把目光投向這有意無(wú)意被忽視掉的問(wèn)題-——閃存失效問(wèn)題,換句話說(shuō),閃存能放心用嗎?
較早前的應(yīng)用主要出現(xiàn)在一些工控設(shè)備、移動(dòng)設(shè)備中,閃存在現(xiàn)在數(shù)據(jù)中心中的主要形式就是SATA/SAS接口SSD,PCIe加速卡和閃存陣列。Facebook的閃存失效大規(guī)模研究正是在一個(gè)運(yùn)行著現(xiàn)代程序和系統(tǒng)軟件的數(shù)據(jù)中心完成的,涵蓋了閃存主要的應(yīng)用形式,觀察了閃存的整個(gè)生命周期里的各種特性特點(diǎn),不同于以往閃存從業(yè)者自己發(fā)表對(duì)閃存的認(rèn)識(shí),不同于用戶對(duì)產(chǎn)品使用中發(fā)現(xiàn)的個(gè)別bug現(xiàn)象,這篇論文第一次展示了閃存SSD的可靠性大規(guī)模研究結(jié)果,具有很強(qiáng)的實(shí)際參考意義。
6月29日,筆者聽(tīng)到Greenliant亞太營(yíng)銷副總裁李炫輝,PMC資深產(chǎn)品架構(gòu)師《大話存儲(chǔ)》作者張冬,達(dá)沃時(shí)代雷迎春博士,樂(lè)生活與愛(ài)IT微信號(hào)作者SDS技術(shù)專家Peter Ye,以及人人網(wǎng)李蓓、美圖楊尚剛等互聯(lián)網(wǎng)用戶的對(duì)這一熱點(diǎn)技術(shù)話題的討論。
價(jià)格決定買不買
毫無(wú)疑問(wèn),更便宜更快速更可靠是每個(gè)買閃存賣閃存人的不懈追求,其中價(jià)格是許多人決定是不是用閃存的首要因素,如何花更少的錢拿到更多的閃存容量呢?其實(shí)價(jià)格這個(gè)話題跟密度有很大關(guān)系,從SLC、到MLC到TLC,到QLC,每個(gè)單元存儲(chǔ)的bit隨之增多,單位容量的價(jià)格越來(lái)越低。
但這也是有代價(jià)的,72納米的MLC可擦除次數(shù)為1萬(wàn)次,35納米的MLC可擦除次數(shù)則降到了幾千次,使用壽命明顯降低。雖然說(shuō)低制程的產(chǎn)品比高制程產(chǎn)品便宜很多但為了保持較高的可靠性,許多企業(yè)級(jí)產(chǎn)品一直維持較高的制程工藝,這也是閃存廠商開(kāi)始青睞3D NAND的原因。
加州大學(xué)2012年的一項(xiàng)研究:閃存密度增加帶來(lái)可靠性的降低
另外,由于單位空間bit的增多,單位空間的復(fù)雜度提升,隨之而來(lái)的是可靠性不斷降低,性能的不斷降低。
性能要穩(wěn)定才能用
隨著使用的增多閃存的性能會(huì)逐漸衰減,危害在于,比如某企業(yè)級(jí)客戶中一個(gè)節(jié)點(diǎn)需要處理2萬(wàn)個(gè)交易,當(dāng)性能衰減后處理的交易數(shù)顯著降低,這對(duì)用戶來(lái)說(shuō)是很難接受的。既然性能的衰減不可避免,那么有一個(gè)問(wèn)題是:用戶如何看到這些性能衰減數(shù)據(jù)呢?
談到這個(gè)問(wèn)題前先介紹一個(gè)閃存的特性,許多廠家在做測(cè)試的時(shí)候要10 DWPD(Diskful Writes Per Day),為什么不是別的次數(shù)呢?這是因?yàn)殚W存這類電子器件在進(jìn)行數(shù)據(jù)操作的時(shí)候要釋放電子調(diào)整電位,當(dāng)突然電子隧道打通之后,電子泄漏到規(guī)定的閥值就馬上關(guān)閉隧道之后,實(shí)際上里面的電子仍然處于抖動(dòng)狀態(tài),所以需要一個(gè)放松時(shí)間。Greenliant業(yè)務(wù)發(fā)展副總裁李炫輝介紹說(shuō)。
圖注:閃存的性能依賴于很多因素,如主機(jī)配置,主機(jī)訪問(wèn)模式,塊大小,閃存架構(gòu)等等,而且性能測(cè)試非常耗時(shí)。
回到剛才的問(wèn)題,我們了解到:廠商其實(shí)是了解這種情況的,但是客戶并不了解衰減程度,只有實(shí)際運(yùn)行才能看到表現(xiàn),然而性能測(cè)試非常耗時(shí)(上圖)。
“一個(gè)產(chǎn)品應(yīng)該在整個(gè)生命周期里面定標(biāo)準(zhǔn)是99.9%的時(shí)間里面性能不低于90%。我們現(xiàn)在要做的是在整個(gè)五年的生命周期里面性能是5的衰減。(如下圖)” 這句話是李炫輝在介紹說(shuō)他們產(chǎn)品時(shí)說(shuō)的,一定程度上這也對(duì)閃存的應(yīng)用提供了一種可能。
Greenliant的產(chǎn)品在測(cè)試中的閃存性能衰減
由于閃存設(shè)備在長(zhǎng)期擦寫情況下,壞塊會(huì)逐漸增多,故障率上升,由此會(huì)帶來(lái)潛在的性能大幅下降。(論文4.1中有所闡述) 。
Greenliant對(duì)產(chǎn)品進(jìn)行長(zhǎng)期擦寫以及性能測(cè)試。在疲勞測(cè)試環(huán)境中,每天全盤擦寫50次,超過(guò)18000次擦寫后,性能衰減不超過(guò)10%。
可靠性決定敢不敢用
美圖網(wǎng)楊尚剛表示:“性能和可靠性相比,用戶更為關(guān)注的是可靠性。”可靠性的測(cè)試沒(méi)有通用的靈活工具,而是要靠長(zhǎng)時(shí)間實(shí)際寫入來(lái)觀察。
圖注:SSD失效率變化曲線
在Facebook的報(bào)告中我們看到了如上圖這樣的調(diào)查結(jié)果,SSD的出錯(cuò)并不是簡(jiǎn)單的隨著磨損次數(shù)的增加而增加,也就是說(shuō)并不都是過(guò)度擦寫造成的。還有什么原因呢?
當(dāng)閃存顆粒沒(méi)有經(jīng)過(guò)大規(guī)模讀寫操作時(shí)是穩(wěn)定的,有大規(guī)模操作后不好的顆粒壞掉,這時(shí)靠OP(over provisioning)過(guò)度配置空白的顆粒開(kāi)始替換,一些沒(méi)有替換過(guò)來(lái)的就出現(xiàn)故障(Failure)。
報(bào)告中也提到,早期替換較多的后期更為穩(wěn)定,這是因?yàn)樵缙谟幸恍┨幱谂R界狀態(tài)的塊沒(méi)被替換掉,當(dāng)突破臨界值之后故障(Failure)就出現(xiàn)了,隨后稍微穩(wěn)定些,再往后又出現(xiàn)一些故障,這就是算法的問(wèn)題了。
圖注:溫度與失效率的關(guān)系
高溫會(huì)帶來(lái)高的失敗率,但是通過(guò)節(jié)流SSD操作看來(lái)可以極大地減少高溫帶來(lái)的可靠性負(fù)面影響,但是會(huì)帶來(lái)潛在的性能下降。節(jié)流的做法也很簡(jiǎn)單,當(dāng)溫度過(guò)高時(shí)對(duì)供電功率進(jìn)行限制。溫度和可靠性相互矛盾,這就需要在板卡的設(shè)計(jì)中做到均勻散熱,防止熱點(diǎn),這就是選用分布式架構(gòu)的原因之一。
Greenliant的分布式ECC
以Greenliant的Gcard為例(上圖),這里采用了分布式ECC,分布式的組件布局降低單個(gè)組件的功耗和溫度,防止溫度過(guò)高對(duì)系統(tǒng)可靠性和穩(wěn)定性的影響。
另外,也是因?yàn)椴捎昧朔植际紼CC,還帶來(lái)了更可靠的校驗(yàn)計(jì)算能力,同時(shí),Built-in RAID保護(hù)和掉電數(shù)據(jù)保護(hù)也增強(qiáng)了數(shù)據(jù)的可靠性。
降低每一個(gè)顆粒的發(fā)熱量,實(shí)際上就使系統(tǒng)會(huì)更加穩(wěn)定、更低,可靠性就更高。然而,并不是說(shuō)溫度越低閃存的性能越高,因?yàn)榈蜏貢?huì)影響到電子驅(qū)動(dòng)性能,合適的工作溫度是50-55度之間。比如做控制器的需要計(jì)算控制器的發(fā)熱量,而且隨著對(duì)數(shù)據(jù)中心換進(jìn)溫度的調(diào)整(出于環(huán)保要求-數(shù)據(jù)中心的溫度有所提升),在設(shè)計(jì)的時(shí)候需要重新考慮溫度的影響。
幾位專家也表示,閃存的可靠性評(píng)測(cè)也沒(méi)有一個(gè)通用工具,各廠家在測(cè)試可靠性的時(shí)候只有最笨最原始的辦法,就是不斷擦寫,這也是一個(gè)耗時(shí)的過(guò)程。
圖注:報(bào)告中研究也指出:讀干擾并不普遍,但是寫干擾有影響。
李炫輝提到讀干擾基本上不會(huì)影響到可靠性,因?yàn)殚W存顆粒里面提到當(dāng)對(duì)一個(gè)cell進(jìn)行加電或放電操作的時(shí)候,會(huì)對(duì)臨近的cell產(chǎn)生波動(dòng)。讀沒(méi)有影響,但寫一般會(huì)有影響的,因?yàn)閷懯且匦录与姡央娂ぐl(fā)到0。
其實(shí)從設(shè)計(jì)的角度來(lái)講,整個(gè)設(shè)計(jì)的階段都要考慮可靠性,比如當(dāng)閃存固件升級(jí)的時(shí)候,廠商要把要把花至少一個(gè)月時(shí)間把整個(gè)板卡的測(cè)試跑一遍。當(dāng)閃存在更新固件后,可能由于因?yàn)橐敫呙芗乃惴▽?dǎo)致發(fā)熱量會(huì),進(jìn)而影響板卡的穩(wěn)定性。另外也要解決一些可能出現(xiàn)的新BUG。
閃存的固件更新
壽命決定你要怎么用
壽命這塊內(nèi)容的話,我們都知道閃存顆粒的讀寫是有次數(shù)限制的,從SLC到TLC依次下降,在實(shí)際使用中,為了提升閃存的壽命第一個(gè)提到的就是:“磨損均衡”(Wear Leveling)。
磨損均衡:磨損均衡又分為動(dòng)態(tài)磨損、靜態(tài)磨損和全景磨損。全景磨損是在顆粒級(jí)做一次磨損,動(dòng)態(tài)磨損、靜態(tài)磨損在塊級(jí)做磨損,這些磨損需要在控制器操作下來(lái)完成。結(jié)果是增加了壽命,降低性能。
圖注:實(shí)際寫到SSD里的數(shù)據(jù)與操作系統(tǒng)反饋的數(shù)據(jù)量不一樣
優(yōu)化讀寫次數(shù):由于SSD控制器的優(yōu)化以及系統(tǒng)軟件的緩存機(jī)制,操作系統(tǒng)寫到閃存SSD的數(shù)量并不能精確地反映閃存Cell上的擦寫數(shù)量。
當(dāng)SSD出現(xiàn)壞頁(yè)和壞塊的時(shí)候許多人都希望廠商可以提供一種工具來(lái)把壞掉的部分屏蔽掉,其實(shí)這樣的工具是有的,只是有些廠商不會(huì)提供給用戶。為了解決這種情況,提升使用壽命,許多SSD廠商普遍的做法是還只是磨損均衡。
圖注:分散的數(shù)據(jù)布局,小碎片的數(shù)據(jù)布局對(duì)失敗影響會(huì)非常大。
跨SSD物理地址空間的稀疏邏輯數(shù)據(jù)布局(如,不連續(xù)數(shù)據(jù)),需要通過(guò)大量的存儲(chǔ)在SSD內(nèi)部DRAM緩存的metadata來(lái)跟蹤邏輯地址翻譯, 會(huì)極大地影響SSD失敗率。
如果說(shuō)你的數(shù)據(jù)布局和物理的區(qū)域布局非常分散,就是說(shuō)本來(lái)我在邏輯上是連續(xù)的數(shù)值,但是在物理上是分散布局,這對(duì)損害值會(huì)大。這和我們磁盤是完全不一樣的,磁盤是說(shuō)我一個(gè)邏輯上連續(xù)的文件最好是分散的布局。李炫輝舉例說(shuō):曾經(jīng)碰到一個(gè)用戶,他的應(yīng)用基本上是幾十個(gè)B的寫,連K都到不了,結(jié)果用了三個(gè)月SSD就不行。
在注意以上的特性后,我們可以做一些用法上的調(diào)整,比如把一塊寫多的盤換到讀多的環(huán)境下,這就可以延長(zhǎng)壽命。
結(jié)語(yǔ)
以上是圍繞這次報(bào)告討論過(guò)程中的幾個(gè)要點(diǎn),閃存確實(shí)存在許多問(wèn)題,討論中還談到了許多一些用戶不敢用PCIe的原因,限于篇幅和一些原因不便多說(shuō)。