首頁>數碼>

最近儲存圈有個事,說大不大但是也不能算小,就是西數硬碟的“冷資料”門事件,大痣在11月月底,有網友爆出西數固態硬碟在開啟/複製較長時間沒有開啟的檔案速度變慢,甚至只有幾十M/S。最初看到的時候因為對於這類產品特性有所瞭解,所以覺得並不奇怪,不過考慮到不是所有人都能理解這個事,所以就寫一篇文章,解釋下為啥這樣。

首先,最初看到西數“冷資料”的事情,我第一反應就是類似的事情在5年前就已經上演過一次,當時的主角還是三桑,也是存在老舊檔案訪問速度低,經過幾個月多次的韌體更新,三星“解決”了這次的問題,而如今換了家廠商,問題還是那個問題。

因為兩次事情是相同的原因造成,並且三星已經“解決”問題了,所以這次文章會有一些關於三星的內容,然後是關於原理部分的解釋。

要理解這次事情,首先需要了解幾個東東。

1.寫入放大

寫入放大其實很好解釋,就是 主機對硬碟的寫入 * 寫入放大倍率=實際固態硬碟對NAND寫入 ,原理是因為固態硬碟在寫入檔案之前需要將已有舊資料清除後才可寫入(機械硬碟可以直接覆寫,你電腦刪除的檔案只是在系統層面【軟體】刪除,實際硬碟只是將資料段標記為“刪除”,待下次寫入或者主控空閒時進行刪除作業),而實際擦除的部分是要高於寫入部分,請求寫入的次數也會增加,最終導致寫入資料過多。

而寫入放大也並非沒有解決方法,代價是會犧牲寫入的速度(直說就是表面資料不好看了,不能忽悠消費者了,無視寫入放大才能順應消費主義),例如採用了壓縮型主控SF2281的英特爾520,就擁有極佳的寫入放大,最佳狀態為0.14倍(相當於寫入縮小,我之前的520寫入放大倍率為0.75,圖中的建興S960寫入放大倍率為43,我摸過的固態,最大倍率為143倍)。

關於寫入放大部分,MLC時代還比較OK,雖然個別固態能出現上百倍的寫入放大,但是仰仗MLC的壽命,基本上問題不大,但是TLC時代,問題會比較嚴峻(和SLC Cache有關),而TLC時代的大部分固態,因為這部分資料難看主控直接遮蔽了對NAND寫入量的檢測。

2.SLC Cache

SLC Cache是目前幾乎所有TLC/QLC固態必備(MLC固態選配,企業級TLC選配但最好沒有),簡單地說:

SLC狀態為0和1,一個單元擁有兩種電平狀態,恢復極快、讀寫極快;

MLC狀態為00、10、01和11,一個單元有四種電平狀態,恢復較快,寫入較快;

TLC狀態為000、100、110、111、011、001、101和010,一個單元有八種電平狀態,恢復一般、寫入一般;

QLC狀態為0000、1000、1100·····和1111,一個單元擁有十六種電平狀態,恢復慢、寫入慢。

PLC依次類推,越往後電子排布方式越複雜,因而主控在讀寫資料時需要更長的時間定位資料和準確識別資料,同理需要更長的時間清除資料(並且放大倍率會更大),所以實際寫入速度也是依次遞減(讀取速度影響不太大),SLC>MLC>TLC>QLC,而在進入TLC時代後,SLC Cache的設計被廣泛接受了,簡單地說就是將TLC顆粒的一個單元以SLC模式執行,既寫入時只寫入0和1,而非TLC模式的八種電平狀態,在寫入完成或者超出SLC Cache容量後迴歸TLC模式,再將SLC Cache容量內的資料再次寫回顆粒中。在寫入過程中,因為電平狀態的關係,實際上SLC Cache會幾倍的消耗顆粒壽命,同樣也需要幾倍的空間才能實現SLC Cache;

MLC顆粒實現1G SLC Cache需要2G以上MLC空間,並且產生2倍以上寫入放大;

TLC顆粒實現1G SLC Cache需要3G以上TLC空間,並且產生3倍以上寫入放大;

QLC顆粒實現1G SLC Cache需要4G以上QLC空間,並且產生4倍以上寫入放大;

SLC Cache產生的寫入放大倍率,與本身寫入放大倍率並存,SLC Cache容量內檔案需要經過多次寫入才能被儲存。

而SLC Cache的加入,讓TLC/QLC固態表面資料變得好看(忽悠人警告!),但是對於主控的演算法等又提出了更高的要求,在840EVO舊檔案掉速的事件中,就有840EVO第一批老使用者表示,第一批並沒有出現這麼嚴重的掉速,而新版加入了SLC Cache的840EVO才出現了比較嚴重掉速/丟檔案現象。

目前有一些企業級的TLC固態並沒有採用SLC Cache的設計(例如東芝XD-5),主要是為了避免SLC Cache內資料轉移至TLC顆粒過程中出現斷電等特殊情況,會提高資料丟失的風險,所以沒有采用。

對於企業級產品來說,穩定才是重中之重,表面資料是不需要的。

3.LDPC/ECC等糾錯校驗碼

這裡不解釋具體的原理,只說明最終結果,因為這個過程太複雜,我們只需要知道作用就可以了。

綜12兩點,不論是寫入放大還是SLC Cache都會造成過多的寫入,而LDPC和ECC等糾錯編碼的作用就是在寫入的同時,去校驗資料是否寫入正確,以避免重複寫入,從而最佳化壽命,讀取時也能夠用來校驗資料是否正確,有一定的容錯率。

一句話來說就是糾錯,LDPC目前為主流,糾錯能力優秀,編碼簡單(目前主控基本必備)。

4.西數“冷資料”事件和三星840EVO 舊檔案掉速BUG事件

由於NAND快閃記憶體特殊結構決定了其用於儲存資料的電子會隨著時間的變化而產生電子丟失或者界限模糊的情況,換言之是所有的NAND快閃記憶體(固態)都存在的現象(傲騰除外)。

這麼說可能不太好理解,以電池舉例,正常狀態下電池會有一個自然放電的過程,只要時間夠久,即使你未曾使用,一塊電池也會從滿電變成虧電,同理在NAND快閃記憶體內部也發生著“自然放電”的過程,只是“電池”數量會多得多,放電過程進度不一。

而日常使用中,電池會因為裝置的使用而放電和充電,等於定期會重新整理電量,所以並不會短期內就“自然放電”至虧電狀態,轉換到NAND快閃記憶體內同樣存在,如果定期讀寫資料,那麼這個資料會被校準電壓狀態,等於完成一次“充電”,重新整理了一次,重置了丟失電子的進度條。

而沒有定期訪問,或者說長時間沒有讀寫的資料,就屬於“冷資料”,就處於“自然放電”的過程中,隨著“自然放電”的進度加深,讀取的速度就會變慢,最終可能出現數據完全丟失的情況。而變慢的原因其實很簡單,因為部分資料缺失,需要利用LDPC等糾錯碼進行糾錯,運算後才能得出缺失的部分資料,所以對於冷資料的讀取就會變慢。

簡單地說就是套公式運算需要時間,在LDPC編碼容錯率允許的範圍內,丟失資料越多則運算時間越長,讀取速度越慢。

由於TLC/QLC顆粒複雜的電平狀態,所以電子丟失導致資料模糊/資料丟失的情況,在TLC和QLC顆粒中出現的機率和嚴重程度會高於SLC/MLC顆粒,對於主控演算法要求也更高,目前TLC能夠維持較高的壽命也是極大的依賴於高超的主控演算法,擁有極佳的“國師”才能扶得起那些阿斗,而如今QLC還沒有遍地開花,其中一個原因就是主控還沒有最佳化到那個程度。

至於解決方法,其實也簡單,在韌體中設定固態硬碟定期重新整理資料就可以,需要主控定期將冷資料重新寫入即可完成一次資料重新整理,在下一次電子嚴重丟失之前再次重新整理就可以解決,代價就是會徒增NAND寫入量,降低使用壽命,不過也是沒有辦法的辦法,而三星的解決方案大致如此,其實並不能算解決,只算緩兵之計。

實際上由於資料在儲存的時候有一定的隨機性,儲存的檔案大小不一,使用者訪問寫入時間不一,再結合“均衡寫入”等技術,對於一般固態而言,儘管使用者沒有進行讀寫操作,主控本身依舊可能會根據演算法去改變資料儲存位置,變相也在完成資料重新整理。

而對於近期的西數“冷資料”掉速門事件來說,消費者等待西數官方更新韌體就可以,或者說無視這個事情就好(所有NAND都存在這個現象,看淡就好),如果實在不放心,在韌體更新之前,隔上幾個月全盤複製一遍或者重要檔案定期複製一次就可以解決問題了。

對於重要資料,重中之重就是多備份,備份才是王道!!!

說起來我那個吃灰多年的512G MLC的盤就存在老檔案掉速的問題,甚至個別檔案已經打不開了~~~

後記

其實冷資料這件事,歸根到底我覺得還是消費者對於產品本身並沒有多少了解,而消費主義時代,很多東西都沒有被解釋或者說曲解,當然消費者也未必有興趣瞭解,這裡也給自己挖個坑,以後有機會寫篇文章,看看我覺得什麼樣的固態算是好固態。

至於上面截圖,大家看著樂吧,還記得三星是最先爆出的問題吧?關於這次西數冷資料的問題,某些人就這樣說起了三星~~~ 手 動 白 眼

10
最新評論
  • 雙11 神舟放大招,11代i7筆電直降1100?
  • 三星S21 Ultra獨享S Pen,中杯、超大杯羨慕嗎?