Facebook大規模Flash失效分析研究 - SIGMetrics, 2015

Facebook與卡內基梅隆大學最近在SIGMetrics ( June 15–19, 2015, Portland, OR, USA).發表一篇關於大規模應用下PCI-e flash失效研究的文章」A Large-Scale Study of Flash Memory Failures in the Field」 。基於對Facebook數據中心近4年來大量flash失效數據的總結,揭示了一些有趣的現象,對flash,存儲軟件,全閃存陣列,應用者以及基礎架構運維者有啓發意義。架構

原文在  http://users.ece.cmu.edu/~omutlu/pub/flash-memory-failures-in-the-field-at-facebook_sigmetrics15.pdf。如下作個綜述和總結。app

數據樣本運維

看任何數據前很重要的要仔細明確基於什麼樣的樣本。 論文中的樣本主要來自Facebook數據中心部署的PCI-e flash,所有是MLC介質,來源有多家廠商,多批次(包括Fusion-io, Hitachi, Intel, OCZ, Seagate, Virident)。容量方面有720GB, 1.2TB和3.2TB。因爲來源衆多,須要合理分類以揭示區別。論文主要依據容量,PCI-e V1 仍是V2, 以及單塊仍是雙塊使用等。其中使用1.5年之內,容量1.2TB/3.2TB的佔樣本多數71%。分佈式

相似SMART,Flash健康情況經過特殊的寄存器由Facebook的採集腳本每小時蒐集一次,並導入Hive經過MapReduce-R語義進行歸併分析和處理。惋惜的是通過歸併以後 研究沒有保留足夠多的時間戳信息。事實上Rawdata主要是基於2014年11月的快照點。ide

 

注意1): 控制器都會內置ECC校驗和糾錯,一般採用分級-漸進方式: 小範圍錯誤(每KB幾個bit)每每由控制器本身搞定;而更大粒度的錯誤每每交由host driver來調度處理。論文中的failure是指控制器本身沒法處理和由host來處理的錯誤。      性能

     2)由於是累計最長達4年的數據,如今的flash,FTL和控制器和當時已經發生很是大的變化,因此比較新的ssd(如E/F)表現和特徵應更有指導意義。優化

 UBER: SSD不可糾錯碼率。其餘在受控環境下Raw flash的錯誤率大概在1*10(-6) ~ 1*10(-8)之間,而實際環境下, 因爲控制器優化和糾錯 則更低:10(-9) ~10(-11). 同時數據傾斜現象很是明顯(如圖中的B),出現10% 的設備貢獻了95%的高錯碼率. 論文發現比較服務Weibull分佈。猜想其中一個緣由是高相關性, 本週發生了失效 下週極可能也失效,一臺host內SSD-A發生失效,另外一個SSD-B也極可能有失效報告。 (筆者猜想另外一個可能性是產品批次工藝的良品率,但論文沒有對比研究)。spa

  

 數據寫和失效模型設計

論文最重要的一個發現是3階段失效模型:首先錯碼率並不是單調遞增,相比學者針對機械磁盤總結髮現的bathtub(浴缸)2-階段模型,它多了一個Early-Detection階段(以下). 做者作了個簡單的解釋性說明,能夠認爲flash裏block歸屬於2個pool: weaker/stronger pool: 早期weaker pool里老是迅速發現小的錯誤並糾正致使上升,以後錯碼率變得安分而降低;但以後強力失效的pool則主導了走勢。GC/擦除和數據寫入基本符合相同的模型和影響。視頻

 

 樣本D和F看起來比較怪異(寫入量增長了 錯碼率反而還降低),其實這極可能是由於他們目前處於第1/2階段(甜蜜期), 若是看樣本分類表,這兩組中整體寫入量仍是低於其餘好比C/E,然後者可能已步入了老年期.

注: 這裏的寫入是指實際寫入到flash cell的數據量 (不徹底等於App/OS寫入量,由於有各類寫放大和消除技術)

 

flash對壽命的影響

比較幸運,沒有觀察到明顯的關聯關係。

 

大塊和小塊和DRAM Buf

FTL內部維護logical offset-page address, 小寫每每致使非連續和更多的元數據開銷(DRAM buffer). 結論和磁盤相似,從元數據使用有效(注以及GC),flash也更適合大塊讀寫

 

溫度和功耗影響

30-40度運行期間,各個平臺表現一致(小幅上升)。超過了40度則進入3階段失效模型。其中主要的影響因素 1)超過了必定溫度,控制器開始彰顯本身的存在,並試圖降速穩定系統 相似CPU的降頻。注意,一些老的控制器可能沒有這樣功能。 2) 系統中多塊SSD每每功耗更大加快了溫度上升。

 

 寫放大

毋庸置疑,App/OS的寫入量和實際Cell的寫入量不盡相同,中間有不少變數,不利的變數主要是寫放大包括: 額外的元數據開銷,replica,RAID等,經常使用的優化技術包括buffering, batch, append-log, dedup, compression, new-RAID等。正因如此,簡單把磁盤替換成閃盤,而不作系統級別的優化是難以發揮SSD的優點的,尤爲是全閃存 須要在系統軟件(包括調度,CPU, Mem)和IO層面(合併, inline dedup, compression, RAID)等作深刻的架構優化設計。

市面上幾家典型的表明 (如EMC XtremIO, SolidFire, PureStorage)無不如此,出於產品定位,自身特長以及Time-To-Market等綜合考慮,各家在架構和實現方面仍是有很大差異的,若是想作更多深刻了解全閃存,這裏推薦2個很是不錯的視頻(TechField, 2014)。分別由XtremIO和SolidFire當家領袖或闡述自身特色 或 對比分析。固然,這裏並無一好百好,看場景,看需求,哪家更適合大衆場景 哪家就有優點。

1, EMC XtremIO Architecture & EMC Evolving All-Flash Use Cases & Why Architecture Matters, Robin Ren, CTO, EMC XtremIO

- http://techfieldday.com/appearance/emc-presents-at-storage-field-day-5/

2,  Comparing Modern All-Flash Architectures - Dave Wright, CEO, SolidFire

- http://techfieldday.com/video/comparing-modern-all-flash-architectures-dave-wright-solidfire

 

論文的不足和侷限

做者作了簡單的例舉:

-  論文並無針對分佈式系統中常見的多份Replica可能帶來的跨節點的SSD失效相關性進行深刻研究

-  SSD失效與性能的相關分析

-  受限於數據採集侷限性,無法得到SSD內部各個flash上workload的分佈和模式

-  糾錯模型: 論文的錯碼率指的是控制器無法處理而交由host處理的,未來NVMe設備可能並不是採用這種方式。

 

總結

1. Facebook大規模flash部署和實用是能夠展開深刻研究分析的前提,這一點和Big Data相似,誰握有數據 誰握有發言權!

由此想到一個相似領域的文章,今年FAST15上 EMC 發表一篇文章,主要蒐集了5年多來,近1百萬磁盤(都是基於RAID)失效log,論文從中發現了些若干前導性主因素,以此爲切入點,設計出更有效的主動防護性保護,並已投入實用 減小近90%的3盤失效。 感興趣的能夠看看,怎麼經過好的數據源 作些有意思的事情。 https://www.usenix.org/system/files/conference/fast15/fast15-paper-ma.pdf

2. 主要的發現點 1)3階段失效模型 2)讀影響和壽命不相關. 其餘幾點基本都是目前已確認或者造成了共識例如溫度, 寫放大,大塊/小塊等。

3. 遺憾點:

1) 數據沒有作有效的時間序列標記,而更多的是一段時間aggregate以後的截屏(snapshot) 這就丟失了中間隨時間變化而可能存在的現象,規律。

2) 沒有更多圍繞性能, workload而作深刻的分析

3) 缺少定量分析從而下降了現實指導性。論文的不少數據以及多因素 vs失效的對比分析,在我看來,更多的是抓到一兜數據,作把關聯分析,恰巧展示了(或沒有展示)某種相關性,可是沒有定量性研究因果關係和主因素分析。好比,溫度上升到底是個初始因素仍是由於R/W負載過大 致使的一個結果,若是是結果的話,天然而然,其對失效的影響也就保護在R/W的影響以內了。

欠缺深刻的定量分析(其中一個受限因素是ssd沒有提供更多API接口),致使其餘開發/研究者難以從本論文汲取到新的研究點 來開展更多的優化。

      4) 論文沒有提到要開放採集到的數據。我猜想彷佛能挖的 都挖了,遺憾,守着大礦,沒有造成我心目中更優質的Raw data source!

相關文章
相關標籤/搜索