大家知道,前幾天Google在USENIXFAST2016發(fā)布了一篇論文,說在實(shí)際環(huán)境中,閃存的可靠性其實(shí)不如硬盤。
這可在業(yè)界興起了軒然大波,很多不太了解的客戶就會(huì)問,這么說,全閃存時(shí)代不會(huì)這么快來了,還是暫時(shí)不考慮全閃存陣列了吧,可靠性不行啊。
其實(shí),仔細(xì)研究論文的人,應(yīng)該是沒有這個(gè)想法的。因?yàn)镚oogle說的閃存的可靠性不高,指的只是顆粒層面,到了SSD(我這里用SSD來表示閃存盤)層面,再到AFA(全閃存陣列)系統(tǒng)層面,可靠性完全是可以滿足要求,甚至超過HDD系統(tǒng)的可靠性。
這不,NimbleStorage的CTO就是這么一個(gè)愛學(xué)習(xí)的人。今天,西瓜哥就聊聊他對(duì)該論文的解讀,還有NimbleStorage的應(yīng)對(duì)之道。
Google說,SSD和HDD的故障模式有兩點(diǎn)不同:
整盤故障(需要更換驅(qū)動(dòng)器):SSD的年故障率要低于HDD;
部分?jǐn)?shù)據(jù)丟失:SSD比HDD有很高的不可恢復(fù)錯(cuò)誤(每一個(gè)扇區(qū),典型大小0.5-4KB,被糾錯(cuò)碼(ECC)保護(hù)。但一個(gè)扇區(qū)有太多的比特錯(cuò)誤,超過了ECC的糾錯(cuò)能力,就會(huì)導(dǎo)致這個(gè)扇區(qū)的數(shù)據(jù)丟失)
大家可以看到,其實(shí)SSD整盤的故障率其實(shí)比HDD低,只是在扇區(qū)層面故障率比較高。因此,存儲(chǔ)廠商必須了解這些特點(diǎn),對(duì)癥下藥,才能提高AFA系統(tǒng)的可靠性。
Google的論文還說,原始比特誤碼率(RBER)并不能預(yù)測不可恢復(fù)錯(cuò)誤的發(fā)生,也就是這兩者沒有相關(guān)性。這個(gè)好像和我們的常識(shí)不符。但具體原因,Google沒有解釋。
NimbleCTO說Nimble了解閃存這些故障特點(diǎn),并在Nimble系統(tǒng)層面已經(jīng)解決這些問題,并且試圖解釋為什么RBER和不可恢復(fù)錯(cuò)誤不相關(guān)。
整盤失效
為啥HDD容易整個(gè)盤都?jí)牧四?其實(shí)原因很簡單,HDD是機(jī)械部件,某個(gè)部件比如馬達(dá)壞了,磁盤也就完完了。而SSD是電子器件。
Google說他們的驅(qū)動(dòng)器故障率是這樣的:
SSD:4年多的更換率是4%-10%,平均每年1%-2.5%;
HDD:每年2-9%
大家知道Nimble有一個(gè)很牛的云監(jiān)控軟件叫InfoInsight。NimbleCTO說,他們也監(jiān)控了5年,他們的陣列的驅(qū)動(dòng)器整體故障率要低于Google,但比例相似,即SSD的更換率只有HDD的1/3。
但要注意的是,SSD的固件復(fù)雜,因?yàn)橐鯢TL和垃圾收集。Google應(yīng)該針對(duì)自己的應(yīng)用定制了自己的固件,但市場上的商用產(chǎn)品,由于不同的固件版本,故障率可能也不同。
另外,SSD相比HDD來說還是新事物。HDD已經(jīng)有60多年歷史,但現(xiàn)在還不斷發(fā)現(xiàn)影響故障率的因素。比如就在同一個(gè)會(huì)議的另外一篇論文就說HDD的故障率受到濕度的影響很大。而SSD才10年多歷史,未來估計(jì)還會(huì)有更多的發(fā)現(xiàn)。
Nimble如何應(yīng)對(duì)整盤失效呢?Nimble的tripleparityRAID(也叫RAID3P,喂,這位男同學(xué),不要想歪了,不是那個(gè)3P可以支持3塊硬盤同時(shí)故障。
當(dāng)然,Nimble還留有熱備盤,這樣驅(qū)動(dòng)器故障后可以馬上進(jìn)行重構(gòu),減少故障時(shí)間。
你可能說,3個(gè)校驗(yàn)加熱備,是否太浪費(fèi)空間了?這個(gè),Nimble通過增加RAID組成員的數(shù)量解決容量使用率的問題,比如20D+3P+1S,使用率也是很高的。
當(dāng)然,要減少計(jì)算校驗(yàn)的時(shí)間和寫放大,應(yīng)該就是Nimble的CASL架構(gòu)應(yīng)該考慮的事情了。
部分?jǐn)?shù)據(jù)丟失
RAID3P很好解決了整盤故障,但是如果SSD內(nèi)部部分?jǐn)?shù)據(jù)丟失怎么辦?Google說,4年來一共有23-60%的SSD丟失過某些數(shù)據(jù),而HDD在2.5年里只有3.5%(底層丟失數(shù)據(jù)但上層還有保護(hù),因此應(yīng)用系統(tǒng)是不受影響的,不要理解為系統(tǒng)丟失數(shù)據(jù))。
如果整個(gè)盤只有幾個(gè)壞塊,自己能夠修復(fù)其實(shí)是最好的方式。Nimble把每個(gè)盤分成很多chunk,每個(gè)chunk比如包含100個(gè)扇區(qū),系統(tǒng)在每個(gè)chunk加上1個(gè)或幾個(gè)校驗(yàn)扇區(qū),當(dāng)這個(gè)chunk有不可恢復(fù)錯(cuò)誤時(shí)用來進(jìn)行盤內(nèi)修復(fù)。如果把橫向的校驗(yàn)叫盤間校驗(yàn)的話,chunk的校驗(yàn)就叫盤內(nèi)校驗(yàn)。盤內(nèi)校驗(yàn)空間一般無需太大,約1%即可。
這樣,我們可以看到,Nimble的RAID邏輯結(jié)構(gòu)如下:
由于RAID3P還多了一層盤內(nèi)校驗(yàn),因此,Nimble內(nèi)部把這個(gè)叫做RAID3P+,哈哈,這個(gè)是否有點(diǎn)華為RAID2.0+的意思。不過,從上圖我們看到,由于RAID3P+還是保留了熱備盤,重構(gòu)的時(shí)候熱備盤還是容易成為瓶頸。不過,Nimble的人很多從NetApp出來的,因此其CASL必然也吸取了RAIDDP的優(yōu)點(diǎn),只是變成了RAID3P而已。不過,基于chunk的RAID肯定比基于盤的RAID重構(gòu)快,因?yàn)橹恍枰貥?gòu)寫過的chunk。
Nimble還說,其實(shí)加上熱備盤(不是所有廠商都有),應(yīng)該宣傳RAID3P++,哈哈。
還有,針對(duì)靜默故障,Nimble也采用checksum校驗(yàn)碼保護(hù)每一個(gè)塊。并且后臺(tái)會(huì)掃描并修復(fù)發(fā)生問題的塊。這個(gè)很多陣列也一樣,不提。
RBER和不可恢復(fù)錯(cuò)誤
關(guān)于原始比特誤碼率和不可恢復(fù)錯(cuò)誤為什么沒有關(guān)系,Nimble認(rèn)為應(yīng)該是RBER是按照整個(gè)硬盤統(tǒng)計(jì)的,但其實(shí)原始比特誤碼并不是均勻分布的。如果集中在某些扇區(qū),這些扇區(qū)可能就發(fā)生不可恢復(fù)錯(cuò)誤,即ECC也糾錯(cuò)不了了。
就像雪的多少和平均海拔的關(guān)系一樣。某些地方,平均海拔不高,但并不代表雪不多。因?yàn)楦呱蕉啵┚投?。而某些地方,就算平均海拔比較高,但不見得雪就多,因?yàn)闆]有高山。
NimbleCTO說和Google論文作者交流了他們的想法,Google認(rèn)為有道理。
【學(xué)習(xí)心得】
1、針對(duì)閃存的特點(diǎn),看來傳統(tǒng)的RAID方式難滿足要求了。Nimble的RAID3P+給我們一些很好的啟示。EMC的DSSD的CubicRAID(參考1分鐘看懂EMCDSSD的CubicRAID原理)更是一種創(chuàng)新,雖然Nimble其實(shí)也是一種多維RAID,我個(gè)人感覺CubicRAID更完善一些。而PureStorage的RAID3D,EMCXtremIO的XDP等都沒有采用傳統(tǒng)的RAID形式。據(jù)了解,華為的新一代全閃存陣列DoradoV3雖然還是采用RAID2.0+,但是可能采用3校驗(yàn)的方式,支持同時(shí)壞3塊SSD,不知道華為是否會(huì)宣傳RAID2.0+3P呢?O(∩_∩)O哈!
2、SSD作為較新的一種介質(zhì)類型,就像HDD一樣,相信以后不斷會(huì)有新的故障特征被發(fā)現(xiàn)。因此,存儲(chǔ)廠商需要時(shí)刻關(guān)注這些研究結(jié)果,特別是大型互聯(lián)網(wǎng)公司的生產(chǎn)實(shí)踐,不斷創(chuàng)新,以較小的代價(jià)持續(xù)提高閃存系統(tǒng)的可靠性。
分享到微信 ×
打開微信,點(diǎn)擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁分享至朋友圈。