最近在拜讀SSDFans 的年度巨作《深入淺出SSD》,幾位作者(呆,蛋,MARX,濕,波)把SSD的知識講得通俗易懂,獲益匪淺。其中第四章第六節(jié),對掉電恢復(fù)進行了詳細闡述,特別提到阿呆最近在銀行存入100W,由于異常掉電導(dǎo)致銀行系統(tǒng)沒有寫入,回來一看還是10元,這……就算阿呆昏死過去,估計呆嫂也不會放過他啦,后面的場景應(yīng)該會很有趣….
掉電是SSD使用過程中常見的問題,今天主要是從測試角度來討論掉電,掉電可以分為兩大類:正常掉電和異常掉電。正常掉電:掉電前host會發(fā)Standy Immediately命令通知SSD,然后SSD走正常掉電流程,host 和SSD 間 有商有量,和和氣氣;異常掉電:host根本不通知SSD,上來就是干,簡單粗暴的拉閘掉電,一副強拆的節(jié)奏。SSD 特別怕這種粗暴的方式,這種情況發(fā)生時,需要做很多幕后的工作才能保證數(shù)據(jù)安全。下面主要講講異常掉電的測試,畢竟這才是吃掉阿呆100W的魔鬼。
對消費級SSD來說,由于大多數(shù)產(chǎn)品不帶電容,對掉電時刻的數(shù)據(jù)無法保證寫下去。不過對于大多數(shù)的普通用戶也還是能接受的,畢竟只要種子在,小電影沒了還可以再下的 ,只要你系統(tǒng)能恢復(fù)過來,我能正常的進入系統(tǒng),后續(xù)的電影能正常下載和播放,這事也就過去了。但對企業(yè)級SSD來說,就沒那么容易了,畢竟牽涉到許許多多的阿呆,許許多多的100W,所以需要保證所有數(shù)據(jù)都不能丟失.
無論是消費級SSD還是企業(yè)級SSD,測試方法大體上是一樣的,只不過在企業(yè)級SSD測試過程中,我們要更注意各個環(huán)節(jié)節(jié)點的數(shù)據(jù)對比測試。
當前的掉電測試主要有3種方案1.DriveMaster 2.OakGate 3. 各公司自己的方法。 從SSD 的使用方法來講,又可以分成2大類 :
作為數(shù)據(jù)盤,純粹用來存儲數(shù)據(jù)。
作為系統(tǒng)盤,除了存放數(shù)據(jù),還會把操作系統(tǒng)安裝在這個盤上。
無論DriveMaster 還是 OakGate 測試思路是一致的, 都是把盤當作數(shù)據(jù)盤來測試,這樣的好處是測試host始終不會掉電,可以對測試盤有更多操作,特別是做數(shù)據(jù)比較的時候,很有優(yōu)勢。
這次我們先拿2塊消費級的NVMe SSD (三星 SM961 和 Liteon T10 plus)來測試,看看消費級SSD異常掉電測試情況。以下分別是2塊盤的測試結(jié)果:
由于是消費級的盤,SSD不帶電容,對其基本要求是,掉電瞬間的寫數(shù)據(jù)可以不保證寫成功,但是正?;謴?fù)回來,盤要能正常地進行后續(xù)的讀寫,實際測試中可以根據(jù)各自要求,決定是否加入數(shù)據(jù)對比測試。
測試步驟為:
對SSD進行隨機寫填滿盤;
對SSD進行隨機讀寫操作;
對SSD突然掉電;
對SSD 上電,確保成功恢復(fù);
對SSD 再次進行隨機讀寫;
重復(fù)2-5步操作。
1.OakGate 平臺
LiteOn T10 plus
跑了24小時左右,不幸出現(xiàn)Read Error , IO Hang.
三星SM 961
順利跑了24小時, 沒出現(xiàn)Error
DriveMaster
這個測試我們還是沿用以上測試思路,同樣只做掉電測試,不做數(shù)據(jù)比較。
這次DM 測試相對來說壓力還是較小的,因為本文主要是為了講講測試方案,測試時間沒有加很長,測試結(jié)果僅供參考。
3 PowerShark掉電測試方案
對于掉電測試來說,以上2種方案是否足夠呢?是不是總覺得好像還缺了點什么?如上所述,無論是DriveMaster 還是OakGate,都是把盤當成數(shù)據(jù)存儲盤來用,從行為上看 是不是更像是對SSD盤做熱插拔?實際使用過程中,特別是消費級的SSD ,用戶可不僅僅是用來做數(shù)據(jù)盤,存存文件,放放電影,而是會把系統(tǒng)也裝在SSD上。這樣SSD的壓力就更大,不僅要保證成功恢復(fù)未及時寫入的數(shù)據(jù),還要保證系統(tǒng)文件不能損壞,否則死給你看,不是黑屏就是藍屏。
最近我們嘗試了PowerShark的無線掉電測試方案,把系統(tǒng)裝在測試SSD上,通過他們的設(shè)備和測試軟件,在測試主機上對SSD進行異常掉電測試。
測試步驟:
安裝好測試軟件和測試硬件;
把操作系統(tǒng)安裝在測試SSD上(我們挑了最主流的Windows 10);
對SSD進行全盤隨機寫填盤;
開機運行隨機讀寫測試(讀寫測試時間定為3分鐘);
通過主機運行測試測試軟件(可設(shè)置測試次數(shù),時間,測試Fail的條件);
無線測試設(shè)備控制測試機完全掉電;
重復(fù)步驟4-6。
測試界面
設(shè)備主件
測試結(jié)果
Debug 串口日志
測試過程中還可以結(jié)合各廠家實際的串口打印,設(shè)置關(guān)鍵字來判斷測試狀況,判斷是否要停下來保留現(xiàn)場。
如對PowerShark有興趣,可以自行私信詢問獲取更多資料 。
總結(jié):
3種測試方法的測試結(jié)果是一致的,但是顯然第三種作為系統(tǒng)盤來測試的方案可以更快的發(fā)現(xiàn)問題。這和我們實際使用下來的結(jié)果也是一致的,我們在產(chǎn)品開發(fā)過程中,通過第三種方法確實幫助我們發(fā)現(xiàn)了異常掉電引起的各種問題。我們認為這種測試方法更加貼近實際使用場景,是更加真實的異常掉電。不過可以將以上3種方案相結(jié)合,使得測試效率和測試覆蓋面都有保障。