一是SSD失敗并不是單純地隨閃存芯片磨損增加。它們歷經(jīng)幾個(gè)明顯的時(shí)期,與失敗如何出現(xiàn)和隨后如何被檢測到相一致。
二是讀干擾錯(cuò)誤并不普遍。但寫一般會有影響的,因?yàn)閷懯且匦录与姡央娂ぐl(fā)到cell,但讀不是,讀是電位感應(yīng)。
三是跨SSD物理地址空間的稀疏邏輯數(shù)據(jù)布局(如不連續(xù)數(shù)據(jù)),需要通過大量的存 儲在SSD內(nèi)部DRAM緩存的metadata來跟蹤邏輯地址翻譯,會極大地影響SSD 失敗率。“如果說你的數(shù)據(jù)布局和物理的區(qū)域布局非常分散,就是說本來我在邏輯上是連續(xù)的數(shù)值,但是在物理上是分散布局,這對損害值會大。這和我們磁盤是完全不一樣的,磁盤是說我一個(gè)邏輯上連續(xù)的文件最好是分散的布局。”
四是高溫會帶來高的失敗率,通過截流SSD操作看來可以極大地減少高溫帶來的可靠性負(fù)面影響,會帶來潛在的性能下降。對此,李炫輝指出,“閃存并不是溫度越低性能越高,實(shí)際上溫度越低由于電子驅(qū)動性能會下降因此還需要合適的工作溫度,50到55攝氏度是比較好的工作環(huán)境。既比較流暢,又沒有那么高的激發(fā)態(tài)會出現(xiàn)電子流失。如果說太高了,可能電子流失會比較多一點(diǎn)。如果太低了,對于電子操作性能會下降了,所以說還不能太低。”,不過對于這個(gè)問題,“所謂限流,直接對供電進(jìn)行限制,相對來講就是降低散熱,降低散熱實(shí)際上就變相地降低溫度了。通過限流可以降低溫度、提高可靠性,但問題是這樣又影響到了性能,實(shí)際上這是一個(gè)矛盾體。這個(gè)問題就需要在板卡的設(shè)計(jì)過程中,怎么去這個(gè)給分?jǐn)偟?,防止出現(xiàn)熱點(diǎn)。熱點(diǎn)就是真正的熱點(diǎn)了,就是溫度高點(diǎn),一個(gè)地方的溫度高會造成整個(gè)系統(tǒng)溫度高。這就是之所以用分布式架構(gòu)的原因,防止出現(xiàn)集中式的熱點(diǎn)。”
五是由于SSD控制器的優(yōu)化以及系統(tǒng)軟件的緩存機(jī)制,操作系統(tǒng)寫到閃存SSD的數(shù)量 并不能精確地反映閃存Cell上的擦寫數(shù)量。
基于這樣的發(fā)現(xiàn),業(yè)界同仁希望在真實(shí)工作負(fù)載以及真實(shí)系統(tǒng)中有所新發(fā)現(xiàn),然后需要了解各種不同因素對閃存可靠性的影響,包括系統(tǒng)軟件、應(yīng)用以及SSD控制器;更需要設(shè)計(jì)更加可靠的閃存架構(gòu)和系統(tǒng);同時(shí)為今后閃存可靠性研究改善評估方法。
穩(wěn)定性測試帶來什么啟示?
不過,在閃存層面,可靠性大家探討比較多,但穩(wěn)定性幾乎很少有人探討,原因在于使用磁盤時(shí),一個(gè)15000轉(zhuǎn)的磁盤,性能是200 IOPS,用上十年還是200個(gè)IOPS。但是閃存就完全不一樣了,實(shí)際上閃存顆粒在使用過程中會越寫越慢,由于bad Block問題,實(shí)際的性能會隨著使用時(shí)間和頻率逐漸下降,出現(xiàn)性能衰減的問題。常理來說,板卡廠商要有一些數(shù)據(jù)來幫助用戶了解這個(gè)方面的情況,當(dāng)然需要做一系列的測試、評估。
對于穩(wěn)定性方面,一個(gè)產(chǎn)品應(yīng)該在整個(gè)生命周期里面所定標(biāo)準(zhǔn)應(yīng)該是99.9%的時(shí)間里面性能不低于90%。李炫輝介紹說,對于穩(wěn)定性,Greenliant有一組測試數(shù)據(jù),使用閃存卡一直在做測試擦寫,全盤擦寫了差不多18000次,性能衰減基本上控制良好,像寫的性能衰減值只有3-4%,讀的性能衰減稍大一點(diǎn),接近7-8%。這樣的性能表現(xiàn)是在5年的閃存生命周期最后一段時(shí)間里面,意味著如果人的壽命是100歲,他已經(jīng)99歲、100歲了,他的承受能力和20歲時(shí)基本上是一樣。作為閃存專業(yè)廠商,這就是做產(chǎn)品化必須考慮的,這樣的跑卡測試一直在進(jìn)行著。
由于閃存設(shè)備在長期擦寫情況下,壞塊會逐漸 增多,故障率上升,由此會帶來潛在的性能大幅下降。
Greenliant對產(chǎn)品進(jìn)行長期擦寫以及性能測試 。在疲勞測試環(huán)境中,每天全盤擦寫50次, 超過18000次擦寫后,性能衰減不超過10%。
DWPD是每天全盤擦寫的縮寫(Disk Write Per Day),10 DWPD就是每天全盤擦寫10次,為什么會有這樣的數(shù)據(jù)呢?因?yàn)槲覀冎篱W存顆粒有擦寫次數(shù)的限制,如3000次,我們通過架構(gòu)設(shè)計(jì)、磨損平衡算法以及配置冗余的顆粒,來延長閃存卡的壽命,通過全盤擦寫這個(gè)數(shù)值,就可以推算出閃存卡的使用壽命。每天擦寫次數(shù)越高,其實(shí)對閃存卡的壽命影響就越大,因?yàn)殚W存還有一個(gè)特點(diǎn),就是它需要有一個(gè)relax時(shí)間,叫放松時(shí)間。原因是什么呢?因?yàn)殚W存是電子器件,當(dāng)進(jìn)行數(shù)據(jù)操作的時(shí)候,實(shí)際上是要釋放電子調(diào)整電位,當(dāng)電子隧道突然打通之后,電子泄漏到規(guī)定的閥值馬上就關(guān)閉隧道,實(shí)際上里面的電子仍然處于不穩(wěn)的抖動狀態(tài),需要一個(gè)放松時(shí)間。這個(gè)放松時(shí)間越長,有利于閃存持久性。這就好像我們搬東西,一小時(shí)搬50塊磚和五天搬50塊磚的感覺是不一樣的。
Greenliant測試在55度的恒溫環(huán)境下,每天50次擦寫, 并且現(xiàn)在還再繼續(xù)跑,已經(jīng)跑了一年。最終計(jì)劃要把這幾塊卡全部跑到最后不能用, 到底可以到什么程度。Greenliant當(dāng)時(shí)設(shè)計(jì)目標(biāo)是每天10次全盤擦寫,壽命可以用不少于5年。實(shí)際上已經(jīng)測到了,10DWPD是保守值,但Greenliant想看實(shí)際值究竟能撐到多少?
做閃存卡設(shè)計(jì)的時(shí)候,GreenLiant每做一次具有軟件功能的固件firmware的升級,就要把整個(gè)板卡的測試跑一遍。從開發(fā)完新的firmware到這個(gè)新的firmware能正式通過至少一個(gè)月。原因是什么呢?閃存的Firmware升級,可能會對設(shè)備運(yùn)行帶來不確定因素。如新的算法帶來組件發(fā)熱量或功耗的升高,底層設(shè)備訪問的機(jī)制變化與其它代碼和接口的兼容性等等,可能會影響板卡的穩(wěn)定性。并且對于一些BUG修改,也許會帶來一些新的BUG,所以要把整個(gè)卡的都要跑一遍。例如以前其它廠商閃存產(chǎn)品曾經(jīng)出現(xiàn)的意外掉電容量丟失,錯(cuò)誤的指令造成數(shù)據(jù)丟失等等,都是由于測試不完整造成。
因此,Greenliant每一次Firmware的更新,從高溫耐受到整個(gè)的功能性能測試都要跑一遍,并且同時(shí)在異地兩個(gè)實(shí)驗(yàn)室同時(shí)做測試,只有兩個(gè)實(shí)驗(yàn)室均通過測試后,才會發(fā)布新的Firmware版本。
因此,對于一個(gè)專業(yè)閃存廠商來說,閃存的可靠性設(shè)計(jì),實(shí)際上必須要將整個(gè)的設(shè)計(jì)和生產(chǎn)流程考慮進(jìn)去。
為什么分布式ECC可以帶來更好的穩(wěn)定性與可靠性?
穩(wěn)定性測試只是啟示我們對于閃存卡穩(wěn)定性和可靠性的驗(yàn)證還是有所不同,如何做到閃存卡架構(gòu)上更好的穩(wěn)定性與可靠性,不得不提到散熱問題,這也是Facebook論文研究最為關(guān)注的第四個(gè)方面。
如何消除性能衰減和可靠性下降的問題,這就需要在架構(gòu)設(shè)計(jì)方面進(jìn)行創(chuàng)新。Greenliant在閃存設(shè)備架構(gòu)上實(shí)現(xiàn)了分布式ECC 設(shè)計(jì)架構(gòu), 在每一個(gè)NAND Package中都封裝一個(gè)閃存控制器里面。這樣就避免了前面所講的性能衰減和可靠性下降的問題。同時(shí)為了防止閃存顆粒故障造成數(shù)據(jù)丟失,在架構(gòu)上還實(shí)現(xiàn)了板載硬件RAID的功能。
當(dāng)然,目前大家都明白了:散熱對穩(wěn)定性和可靠性影響很大。過熱的話會造成系統(tǒng)不穩(wěn)定,現(xiàn)在閃存卡都采用FPGA,F(xiàn)PGA在高溫情況下可能會算出錯(cuò)誤的值,系統(tǒng)就會出問題。Greenliant采用分布式的架構(gòu),因?yàn)樵谡麄€(gè)閃存卡控制里面主要存在幾個(gè)高性能計(jì)算的環(huán)境,一是ECC校驗(yàn),ECC校驗(yàn)是計(jì)算密集型的;二是XOR RAID也是高計(jì)算型的。過去的情況下,一般來講在一個(gè)控制器里面,一個(gè)ECC校驗(yàn)碼處理整個(gè)板卡芯片上的ECC請求,一個(gè)XOR芯片處理整個(gè)板卡上的所有RAID的請求。這就意味著這兩個(gè)芯片是計(jì)算量非常高的芯片,就會產(chǎn)生過熱,高密集計(jì)算過程中會過熱,這就可能產(chǎn)生穩(wěn)定性問題。
Greenliant的思路就是:把ECC引擎封裝在顆粒里面做分布式ECC,一個(gè)板卡上可能做40個(gè)ECC的引擎,這樣把計(jì)算給分開了。原來是1個(gè),現(xiàn)在是40個(gè)了。XOR的RAID根據(jù)分組是8個(gè)芯片,也把計(jì)算量分開了,就意味著總發(fā)熱量不變,分?jǐn)偠嗔司透?,散熱面更大,所以性能更穩(wěn)定。并且閃存卡散熱不能靠風(fēng)扇,要靠熱傳導(dǎo),最多在控制器上加一個(gè)散熱片,而里面的閃存顆粒全是靠熱傳導(dǎo)出來。如果能降低每一個(gè)顆粒的發(fā)熱量,那么實(shí)際上就使系統(tǒng)會更加穩(wěn)定、更低,可靠性就更高。這就是為什么測完之后Greenliant數(shù)值穩(wěn)定性會很高,這是這個(gè)分布式ECC架構(gòu)帶來的好處。
怎么理解閃存中最關(guān)鍵的底層?xùn)|西,比如Cell?
在談?wù)摿诉@么對針對《Facebook閃存失效大規(guī)模研究》論文的話題,相信大家對SSD包括閃存的技術(shù)架構(gòu)和特點(diǎn)有了很多了解了,不過,這還不夠深入。比如你了解閃存中最關(guān)鍵的Cell嗎?你對閃存中最底層的東西有多少了解呢?
在日常對于閃存的討論中,經(jīng)常會提到Cell,Cell是什么,怎么串起來的?這些都是一些常識問題,其底層到底什么樣子?《大話存儲1&2》作者冬瓜哥(張冬)給出了深入淺出的詮釋。
一個(gè)Cell就是一個(gè)晶體管,現(xiàn)在叫晶體管不太合適,叫半導(dǎo)體長效應(yīng)管。這就是兩個(gè)電極,給個(gè)電壓,這是控制芯片,給了電壓就會產(chǎn)生電場。一旦通電的話,本來是絕緣的,加電壓之后就打通了,電子就流動起來。通電開關(guān)打通之后,這就是晶體管。所有的數(shù)字電路都是拿開關(guān)去堆起來的,包括加法器、計(jì)數(shù)器等等堆成一個(gè)CPU。
但是這個(gè)東西讓Flash用作存儲了,是把中間這個(gè)地方加了一個(gè)floating Gate浮動?xùn)诺臇|西,內(nèi)部是能儲電的電容。DDRAM也是這么干的,但是里面的電容外面是沒有絕緣體的,充電馬上就漏掉了,漏得非???,所以要不斷刷新。但是Flash充進(jìn)去能夠保存一部分電,而且能保存一段時(shí)間。不過,其外面也是一個(gè)絕緣體,意味著充電時(shí)間就長,所以Flash性能不如DDARM。
這是一個(gè)Cell,儲存一個(gè)bite,怎么把Cell連起來呢?把正負(fù)極串聯(lián),把控制器并聯(lián),有32768個(gè)列。為什么72768?就是除以8之后是4K,這就是一個(gè)Page。
32768列,然后一行一個(gè)Page,具體多少行每個(gè)廠商設(shè)定也不一樣。比如一個(gè)Block設(shè)定512k,那么里有多少行。
要讀寫Page的話,需要把Block里面所有其他的Page控制極都加一個(gè)電壓。正負(fù)級會打通, 開關(guān)串聯(lián)起來,如果把其他開關(guān)都打通,然后加一個(gè)信號,在另一邊考察信號能不能從上面透下來,如果透不下來證明里面是斷開的。這就證明里面存了電,或者說不存電。
其里面是很復(fù)雜的,里面存了電。給里面加正電壓,導(dǎo)通性增強(qiáng)了,如果加負(fù)電壓,導(dǎo)通性就降低,絕緣性就更強(qiáng)了。
其實(shí)把所有打通之后,還要比擬器,需要在旁邊有預(yù)充電的比較電壓,再加一個(gè)基準(zhǔn)電壓,基準(zhǔn)電壓跟比較電壓一樣值,看你這邊漏電的速度有多快。如果多少納秒以后,基本不漏電證明里面是斷開的。導(dǎo)通性基本不導(dǎo)通的,絕緣性增強(qiáng)了,證明里面是有電的。
如果比較的時(shí)候發(fā)現(xiàn)漏電很快,證明這里面沒有電。沒有電也會漏電,這個(gè)開關(guān)都是漏電的,所以功耗大,而漏電占了很大一部分。
如何讀寫?寫是充電,往Cell里面充,充電是代表0,沒電代表1。正常是充電表示1,這里為什么是充電代表0呢?因?yàn)橛蠸enseAMP放大器,放大器的邏輯就是對充了電反而輸出高電壓是1,所以最后是不穩(wěn)定了。問題是不能同時(shí)對Cell放電又充電,不能寫1又寫0,如果對它進(jìn)行放電的話,這一塊就是要加一個(gè)高電壓。比如說起碼要20伏的壓差,當(dāng)然實(shí)際上不會這么高,在這里只是舉個(gè)例子。這里起碼要加40伏,40減10等于30,那只能充電,但不能同時(shí)充滿電。
NAND Flash最大的罪魁禍?zhǔn)资遣荒芡瑫r(shí)充滿電,但是DDARM可以對每個(gè)Cell同時(shí)充滿電,可以對每個(gè)Cell里面根據(jù)一大堆電路充滿電,正因?yàn)槿绱穗娐访娣e變大了。Flash比DDR密度要高,不用每個(gè)Cell都充電,這就是拿價(jià)錢、拿密度來換性能。
再就是寫放大,正因?yàn)椴荒芡瑫r(shí)寫,所以每次都寫到擦好的Block,每次只寫0就可以了,1已經(jīng)寫好了。
如果出現(xiàn)寫放大沒有辦法,把整個(gè)Block讀出來擦成1再寫回去,這樣的性能就非常差了。
對于用戶采購閃存的最佳建議?
閃存是由核心的顆粒組成,電子總會有問題的時(shí)候。誠然,它和磁盤不一樣,閃存隨著使用時(shí)間延長,性能出現(xiàn)下降。好顆粒更需要好的架構(gòu)。但是,我們在了解完由《Facebook閃存失效大規(guī)模研究》論文引發(fā)的多個(gè)方面思考后,是否對采購SSD或閃存卡存在疑慮了呢?
當(dāng)然不是。
美光相關(guān)人士在出差途中也參與了微群技術(shù)會——閃存夏日清涼聊活動,他指出了幾個(gè)方面的比較理性和積極的認(rèn)知。這里阿明將他非常精辟入理的觀點(diǎn)分享給各位:
一是,SSD使用上大致分消費(fèi)級應(yīng)用和企業(yè)級應(yīng)用兩種應(yīng)用場景。消費(fèi)級應(yīng)用的特點(diǎn):a.不會滿盤使用; b.不會隨時(shí)隨刻使用; c.幾乎大部分操作都是讀操作、順序地址操作。
企業(yè)級應(yīng)用的特點(diǎn):a.滿盤使用; b.要求隨時(shí)隨刻都在讀寫; c.讀寫比例有要求,很多系統(tǒng)要求更高的隨機(jī)地址性能。
二是,針對這兩種應(yīng)用場景,消費(fèi)級SSD更多關(guān)注于FOB性能,即新開封狀態(tài),或出廠狀態(tài) (FOB) fresh out of box;企業(yè)級SSD更多關(guān)注于穩(wěn)態(tài)性能Steady state。
三是,關(guān)于穩(wěn)態(tài)性能測試,大家可以搜索SNIA,有一套成熟可靠和穩(wěn)定的測試方法。
四是,所有的SSD都有冗余即OP的存在(over provisioning),只不過有多有少,因?yàn)榛贜AND結(jié)構(gòu)的容量是1024*1024*1024=1GB,而廠商的SSD標(biāo)稱容量1G基于1000*1000*1000,所以,就算是消費(fèi)級的SSD,也至少有1024*1024*1024-1000*1000*1000,即~7%的OP。
五是,再來討論溫度,SSD廠商一般在SSD內(nèi)部都有temp senser,SMART信息中也有溫度監(jiān)控,溫度高了一般做法是SSD自主降速。
六是,個(gè)人認(rèn)為,由于NAND晶體構(gòu)造,bit錯(cuò)誤更多的是浮柵層的charge loss或charge gain,更低的溫度讓charge更難自主在能級中躍遷。所以,溫度越低,基于NAND的出錯(cuò)的概率越低。
Greenliant李炫輝也補(bǔ)充了一點(diǎn),閃存可靠性問題對于客戶、行業(yè)以及產(chǎn)業(yè)有著重大的影響 ,業(yè)界廠商都有相對應(yīng)的應(yīng)對措施。但對于要采購SSD或閃存卡的用戶來說,性能、可靠性和成本都顯得很重要,這三者卻很難同時(shí)獲得,客戶需要根據(jù)應(yīng)用的特點(diǎn),根據(jù)最重要的特性選取最合適的產(chǎn)品。(阿明)
上一篇大數(shù)據(jù)時(shí)代的企業(yè)如何管理?
下一篇餐飲O2O:由數(shù)據(jù)引發(fā)的餐桌上的顛覆
感谢您访问我们的网站,您可能还对以下资源感兴趣:
噜噜噜综合