隨著電子設(shè)備的廣泛應(yīng)用,NAND閃存和eMMC作為主流存儲介質(zhì),其使用壽命受到廣泛關(guān)注。本文將探討其損壞的軟件原因,并提供延長使用壽命的實用方法。
?前言
長時間運行后出現(xiàn)NAND或者eMMC損壞,可能的原因有物理損壞如雷擊損壞,也有可能因為頻繁擦寫操作引起壽命到期損壞。下面就應(yīng)用軟件方面的可能性進行探討,尋求延長NAND/eMMC使用壽命的方法。
?閃存的壽命和計算公式
在NAND閃存中,P/E Cycle也稱為擦除次數(shù),是判斷NAND閃存壽命的關(guān)鍵參數(shù)。隨著P/E Cycle的增加,浮柵與溝道之間的氧化層被磨損的越來越嚴重,導(dǎo)致浮柵中電子的控制越來越艱難,最終結(jié)果就是:NAND的壽命走到了盡頭。每顆NAND閃存,在出廠的那一刻,壽命就固定了。
NAND閃存根據(jù)存儲顆粒密度和結(jié)構(gòu)差異,可分為SLC、MLC、TLC和QLC。存儲密度越來越高,容量越來越大,但單位可擦寫次數(shù)卻越來越少。SLC的密度最低,擦寫次數(shù)最多,使用壽命最長,但現(xiàn)在很少能買到了,特別是大容量閃存,基本都是MLC、TLC甚至QLC了。一般都說MLC的擦寫壽命是3000~10000次,但實際上去咨詢半導(dǎo)體原廠,得到的答案通常都是3000次,哪怕三星、海力士以及Skyhigh這樣的國際品牌,都是這個答案。eMMC實際上是NAND閃存加了控制器,底層存儲還是NAND閃存,所以可在此一并討論。如何延長閃存的使用壽命,確保存儲的數(shù)據(jù)可靠,是工業(yè)產(chǎn)品一直在試圖解決的問題。一個NAND閃存能使用多久,我們先給出一個預(yù)測公式:

對于特定的Linux系統(tǒng),文件系統(tǒng)開銷可看成一個常數(shù),暫時不考慮。根據(jù)公式不難看出,預(yù)期使用壽命與分區(qū)容量大小、可擦寫次數(shù)正相關(guān),與寫入放大、每天寫入的次數(shù)以及每次寫入的數(shù)據(jù)量成負相關(guān)。在產(chǎn)品設(shè)計方案選型階段,容量、可擦寫次數(shù)是一個正相關(guān)變量,但對于特定的一個產(chǎn)品,閃存一旦選定,可擦寫次數(shù)也就定了,如果有條件擴大分區(qū)容量,也是能改善使用壽命的,但改善非常有限。要想比較有效的提高閃存壽命,必須從分母的寫入放大、每天寫入的次數(shù)以及每次寫入的數(shù)據(jù)量上面來優(yōu)化。 ?寫入放大
我們知道,閃存在寫入數(shù)據(jù)前必須先進行擦除,而擦除操作的粒度與寫入操作相比低得多,執(zhí)行這些操作就會多次移動(或改寫)用戶數(shù)據(jù)和元數(shù)據(jù)。因此,要改寫數(shù)據(jù),就需要讀取閃存某些已使用的部分,更新它們,并寫入到新的位置,如果新位置在之前已被使用過,還需連同先擦除;由于閃存的這種工作方式,必須擦除改寫的閃存部分比新數(shù)據(jù)實際需要的大得多,這就是寫入放大,此倍增效應(yīng)會增加請求寫入的次數(shù)。
寫入放大,簡單的計算公式如下:

影響寫入放大的因素:
垃圾回收,啟用垃圾回收,WA會減小。
預(yù)留空間,增大預(yù)留空間,能減小WA。
順序?qū)懭?/strong>,理論上順序?qū)懭耄琖A為1,當(dāng)然其他因素會影響到WA。
隨機寫入,寫入到非連續(xù)的LBA對寫入放大的影響最大。零散寫入會帶來極大的WA影響。例如寫入一個字節(jié),實際上閃存最小寫入單位是頁,擦除單位是塊,這樣會影響到在這個塊內(nèi)的所有數(shù)據(jù)的搬移和寫入,數(shù)據(jù)量會非常大。
數(shù)據(jù)壓縮,數(shù)據(jù)壓縮后再寫入,能減少數(shù)據(jù)量的寫入。
刪除重復(fù)數(shù)據(jù),這樣能減少磁盤占用,能減小WA。
從公式來看,減小WA能增加閃存壽命,具體方法有啟用垃圾回收、增大預(yù)留空間、盡量順序?qū)懭?、進行數(shù)據(jù)壓縮以及刪除重復(fù)數(shù)據(jù)等。 ?如何計算數(shù)據(jù)量?
寫入NAND數(shù)據(jù)量的計算,并不是按照應(yīng)用程序數(shù)據(jù)來計算的,這與NAND閃存的結(jié)構(gòu)和擦寫方式緊密相關(guān)。
一般NAND閃存內(nèi)部結(jié)構(gòu)分為多個塊(Block),每個塊包含多個頁面(page),每個頁面又是由有效個數(shù)據(jù)區(qū)和spare area區(qū)(即OOB區(qū))組成。NAND閃存以塊為單位進行擦除,以頁為單位進行讀寫。

圖1 NAND閃存結(jié)構(gòu)示意圖
圖1所示的NAND閃存,每個頁面為4096字節(jié),一個塊為64頁,整個器件為2048塊,總?cè)萘繛?096*64*2048=512MB。
如果產(chǎn)品使用的NAND是這樣的結(jié)構(gòu),哪怕寫入1字節(jié)數(shù)據(jù),在計算數(shù)據(jù)量的時候,也得按4096向上取整,即4096字節(jié),而不是1字節(jié)。當(dāng)然,寫入4095字節(jié)也是按4096向上取整,4096字節(jié)。同理,寫入4097字節(jié)數(shù)據(jù),則向上取整為8192字節(jié)。
如果不清楚NAND閃存的這些具體信息,可以查看數(shù)據(jù)手冊或者內(nèi)核啟動信息:
?改善措施
綜合上述信息,要延長NAND/eMMC的讀寫壽命,就要盡量減少對閃存的擦寫次數(shù),特別是零散數(shù)據(jù)寫入。歸納一下,可以采取以下措施:
1. 合理分區(qū),動靜分離
動靜數(shù)據(jù)分離,將數(shù)據(jù)按修改頻率分組。一般可將系統(tǒng)分區(qū)與數(shù)據(jù)分區(qū)分開,確保系統(tǒng)分區(qū)不受數(shù)據(jù)寫的影響。
有效地使用RAM文件系統(tǒng)。系統(tǒng)log信息,以及應(yīng)用程序的log信息,不要直接寫入閃存,盡量寫在RAM文件系統(tǒng)中,僅對異常log定期寫入閃存,減少閃存寫入次數(shù)。
2. 減少數(shù)據(jù)寫入次數(shù)
- 先將數(shù)據(jù)寫在內(nèi)存里,可以在系統(tǒng)中生成一個Ramdisk并掛載到某個目錄,將需要寫入到閃存的數(shù)據(jù)先暫存在這個目錄,到一定時間再寫到閃存里面去。也可以使用系統(tǒng)的ramfs目錄存放暫存數(shù)據(jù)。
- 將頻繁修改的數(shù)據(jù)存儲在一塊連續(xù)的區(qū)域中,并定期將數(shù)據(jù)遷移到新的區(qū)域,以避免在同一區(qū)域反復(fù)擦寫。
- 進行數(shù)據(jù)壓縮,減小寫入的數(shù)據(jù)量,特別是對于海量數(shù)據(jù)的應(yīng)用,數(shù)據(jù)壓縮尤為重要。
3. 避免零碎散數(shù)據(jù)寫入
確保在寫入數(shù)據(jù)時,數(shù)據(jù)塊的大小是擦除塊大小的整數(shù)倍,以避免無效的擦除操作。
4. 維持合理的分區(qū)占用率
不要寫滿分區(qū),維持較低的磁盤占用率,能有效地提高閃存使用壽命。磁盤占用率管理分兩種情況,采用系統(tǒng)的磁盤配額管理或者應(yīng)用程序自行管理。
對于eMMC閃存,在使用Ext3/4文件系統(tǒng)的時候,啟用磁盤配額管理,確保磁盤使用率在一個合理的范圍之內(nèi)。注意,啟用磁盤配額管理,需要普通用戶,建議產(chǎn)品應(yīng)用程序都運行在普通用戶模式,而不是root用戶來運行。
對于NAND閃存,一般都會使用Yaffs/Yaffs2文件系統(tǒng),支持不了磁盤配額。這種情況要想維持合理的磁盤占用率的話,可以寫一個磁盤占用率監(jiān)控程序,當(dāng)磁盤占用率超過某個閾值,就進行磁盤清理工作,刪除不重要或者陳舊的文件,以保持閃存處于比較健康的狀態(tài)。
無論是NAND還是eMMC,都要定期進行數(shù)據(jù)處理,對于過期的數(shù)據(jù)要及時刪除,減小無用數(shù)據(jù)在閃存使用中的搬運和寫入次數(shù)。
5. 閃存健康管理
對于eMMC,可以在系統(tǒng)中通過mmc_erase_info文件查看eMMC的擦寫次數(shù),以判斷eMMC的健康狀況。一旦eMMC的擦寫次數(shù)已經(jīng)接近廠商理論值,就要特別留意此閃存上的數(shù)據(jù),并做好預(yù)案處理。

對于NAND閃存,不能像eMMC這樣方便的查看NAND閃存的擦寫次數(shù),則可以自行統(tǒng)計NAND擦寫次數(shù),并結(jié)合壽命預(yù)測公式對NAND閃存的健康狀況進行大致判斷。
6. 壞塊檢查和替換
定期進行壞塊檢測和替換,以防止使用壞塊導(dǎo)致的數(shù)據(jù)丟失和寫失敗。一旦發(fā)現(xiàn)NAND壞塊數(shù)量超過一定數(shù)值,就要對NAND整體健康做重新評估,并啟動數(shù)據(jù)安全性預(yù)案處理。
-
閃存
+關(guān)注
關(guān)注
16文章
1823瀏覽量
115406 -
NAND
+關(guān)注
關(guān)注
16文章
1706瀏覽量
137154 -
emmc
+關(guān)注
關(guān)注
7文章
223瀏覽量
53357
發(fā)布評論請先 登錄
相關(guān)推薦
Flash存儲芯片:NOR Flash、NAND Flash、UFS和eMMC的比較與解析

于SD卡測試結(jié)構(gòu)的EMMC測試座,nand flashEMMC測試治具說明書
【BeagleBone Black試用體驗】進階設(shè)置(性能優(yōu)化以及延長板載eMMC存儲壽命)
NAND閃存的自適應(yīng)閃存映射層設(shè)計

eMMC改寫內(nèi)嵌閃存卡格局

評論