隨著越來越多客戶從 NOR Flash 遷移到CS品牌的 SD NAND 存儲產品,有工程師會遇到“明明寫入成功了,為什么設備突然斷電后,數據消失了?”的問題。
這種情況聽起來像“異常”,但其實,它是系統層面必然存在的特性。這里我們來解釋一下底層原因,從而更容易找到解決方法。

01|NAND Flash 不是實時寫入設備
相比 NOR,NAND Flash 采用完全不同的底層結構:
NAND 的 寫入粒度是 Page(頁)
NAND 的 擦除粒度是 Block(塊)
也就是說:即使只寫入 1 個字節,最終也要以整頁數據方式寫入。
寫入過程不是一步完成,而是:
數據進入控制器 → 緩存 → 整理成 Page → 寫入 NAND → 更新映射表
這意味著,在數據落盤之前,會存在一段“過渡期”。
如果斷電發生在這個階段,數據就有可能未完成寫入——自然也不會被保存。
02|Flash 管理算法決定寫入結果不是瞬間固定
為了延長壽命、減少寫擴散、優化訪問性能,SD NAND 內部有:
FTL(Flash Translation Layer)
Wear-Leveling(均衡寫入)
Garbage Collection(垃圾回收)
ECC/BCH/LDPC 校驗機制
這些機制會帶來一個事實:寫操作并不是同步落盤,而是異步過程。
更重要的是:
有時 NAND 已經寫完數據,但映射表還未更新
有些 Page 數據正在被復制或合并
有時系統正在進行垃圾回收(GC)
這些階段若意外斷電,就可能出現:
寫入數據丟失
數據結構損壞
文件變成“看得見卻打不開”
這不是故障,而是 NAND 的工作方式。
03|文件系統不會立即寫盤,而是“延遲寫入”
很多用戶以為:只要 APP、系統或驅動 write() 成功,數據就已經寫到存儲器里。
事實上,大多數文件系統,包括:
FAT32 / exFAT
LittleFS
Linux EXT4 / F2FS
都采用寫入緩存策略(Write-Back Cache),即:數據會先存在系統內存或設備緩存中,而不是立即寫入存儲芯片。
這是為了:
加快速度
減少 NAND 寫入次數
增加壽命
但是,這也帶來結果:寫入成功 ≠ 數據已安全保存。
04|為什么用 NOR 時沒問題?
很簡單:

換句話說:使用 NAND,就意味著系統行為會從“實時寫入”,變成“階段性寫入”。這不是優劣差異,而是技術路線的不同。
05|理解存儲介質,才能正確使用它
掉電數據丟失并不是 SD NAND 的“問題”,而是使用 NAND 介質時必須考慮的設計因素。影響因素包括:
寫入策略
供電穩定性
文件系統設計
控制器算法
寫入數據量大小和寫入頻率
是否存在頻繁隨機小寫入場景
了解了底層原理,在面對出現問題的場景時,我們和客戶也更容易找到解決方案。也歡迎有這種困惑的客戶聯系我們,我們會結合您的具體應用場景,寫入模型給出對應的解決方法。
親愛的卡友們,歡迎光臨雷龍發展
審核編輯 黃宇
-
NAND
+關注
關注
16文章
1762瀏覽量
141250 -
FlaSh
+關注
關注
10文章
1757瀏覽量
155818 -
存儲介質
+關注
關注
0文章
27瀏覽量
12224
發布評論請先 登錄
NOR FLASH和NAND FLASH的對比
NOR Flash和NAND flash有什么區別
從NOR Flash 到 NAND Flash 和SD NAND,從底層結構到應用差異
SPI NOR Flash和SPI NAND Flash存儲芯片的區別
NAND Flash選型旺宏MX35LF2GE4AD-Z4I實現高可靠數據留存
如何保存NAND Flash數據完整之 “掉電丟數據”底層原因
評論