分析固態(tài)硬盤掉速原因及解決方法
如果說“TLC”和“NVMe”是今年固態(tài)硬盤的熱門話題,如果回到三年以前提,當(dāng)時(shí)的固態(tài)硬盤熱門話題可能會(huì)是“掉速”。
掉速就是硬盤在工作時(shí)實(shí)際速度低于預(yù)期的一種現(xiàn)象,引發(fā)掉速的原因有很多。最早的硬盤掉速或許源于西部數(shù)據(jù)綠盤,由于盤片質(zhì)量差在讀取過程中會(huì)有一些突發(fā)的卡頓出現(xiàn),讀取速度突然降低。
當(dāng)然今天要討論的是固態(tài)硬盤的掉速問題。最為古老的固態(tài)硬盤掉速始于2009年以前,當(dāng)時(shí)Trim指令尚未出現(xiàn),而閃存在寫入之前又必須先進(jìn)行擦除,擦除需要的額外時(shí)間導(dǎo)致寫入變慢:
幸運(yùn)的是2009年之后Windows 7面市,首次增加了對(duì)Trim指令的支持,蘋果的MacOS系統(tǒng)也在10.10.4之后對(duì)所有SSD開放Trim指令支持。Trim指令的作用是在刪除文件的時(shí)候通知SSD哪些位置的數(shù)據(jù)已經(jīng)無效,請(qǐng)?jiān)诶厥諘r(shí)進(jìn)行回收。有了Trim指令之后SSD就不必等到覆蓋寫入指令下達(dá)才匆忙進(jìn)行標(biāo)記,而是能提前對(duì)閃存上存儲(chǔ)的數(shù)據(jù)進(jìn)行整理。
幸運(yùn)的是,當(dāng)前市售的所有固態(tài)硬盤都已經(jīng)支持Trim指令??梢酝ㄟ^在命令行提示符中輸入fsutil behavior QUERY DisableDeleteNotify來查看Trim功能是否開啟,正常情況下應(yīng)返回0。
不過操作系統(tǒng)支持是一方面,要看SSD實(shí)際是否執(zhí)行了Trim指令還需要用到一個(gè)名為Trimchecker的小工具:運(yùn)行一次之后間隔30秒再度運(yùn)行,正常應(yīng)出現(xiàn)一串0,表示Trim已經(jīng)成功執(zhí)行,被刪除的數(shù)據(jù)已經(jīng)被固態(tài)硬盤從閃存當(dāng)中清空。
雖然固態(tài)硬盤們都已經(jīng)支持Trim了,不過依然會(huì)有一些特例型號(hào)會(huì)發(fā)生掉速現(xiàn)象,比如SandForce主控、JMF667H主控,他們由于垃圾回收算法比較懶惰,傾向于保守,在收到Trim指令后垃圾回收工作進(jìn)行的不徹底,長期使用后依然會(huì)出現(xiàn)速度下跌的掉速現(xiàn)象。不過好消息是這兩個(gè)主控也都已經(jīng)退出歷史舞臺(tái),除了金士頓V300依然在使用SandForce 2281主控之外,其他市售固態(tài)硬盤都已經(jīng)不再應(yīng)用SandForce或JMF667H主控,大家遇到掉速踩雷的機(jī)會(huì)小了一些……
Trim指令普及了、個(gè)別懶惰的主控也退役了,按理說大家應(yīng)該不會(huì)遇到掉速了。不過在這個(gè)時(shí)候TLC閃存走上了歷史舞臺(tái),三星840等TLC閃存固態(tài)硬盤在2014年開始連續(xù)爆出讀取掉速問題。與之前的寫入掉速相比,TLC閃存的讀取掉速更為隱蔽,因?yàn)榈羲俚氖潜P上的舊文件,通過AS SSD Benchmark等測速軟件測出的新文件速度是正常的。
為何在MLC時(shí)代很少見的讀取掉速會(huì)出現(xiàn)在TLC閃存身上呢?為了在每個(gè)單元中保存額外的一個(gè)bit數(shù)據(jù),TLC需要有8個(gè)電荷位來區(qū)分其中存儲(chǔ)的數(shù)據(jù),而原來的MLC僅需4個(gè)電荷等級(jí)劃分。
同樣空間內(nèi)劃分出更多的數(shù)據(jù)位,意味著發(fā)生偏移出錯(cuò)的概率大大提高。閃存通過保存電荷來存儲(chǔ)數(shù)據(jù),而隨著斷電時(shí)間的延長,閃存當(dāng)中的電荷位就可能發(fā)生改變,嚴(yán)重的情況下即可導(dǎo)致數(shù)據(jù)出錯(cuò)。
三星為了避免數(shù)據(jù)出錯(cuò)采取的是加強(qiáng)糾錯(cuò)的方式,一次讀不出就依靠多次讀取嘗試,這樣在讀取盤內(nèi)舊數(shù)據(jù)的時(shí)候讀取速度就可能發(fā)生嚴(yán)重下滑,TLC掉速因此而生。而較晚將TLC使用在SSD當(dāng)中的東芝等廠商汲取了三星的教訓(xùn),通過主控隨時(shí)監(jiān)測閃存單元中電荷位的變化,在必要的時(shí)候進(jìn)行數(shù)據(jù)搬運(yùn)來化解掉速危機(jī)。
國內(nèi)的PCEVA論壇曾對(duì)東芝Q300的馬甲款——東芝饑餓鯊TR150進(jìn)行過長時(shí)間的耐久度及讀取掉速測試,在1900PE磨損的情況下,通過連續(xù)24小時(shí)高溫烘烤模擬SSD長期斷電保存的情形,在重新開機(jī)后盤上數(shù)據(jù)讀取是這個(gè)樣子的:因?yàn)殚L期斷電,已經(jīng)有一些文件讀取掉速了
但只要閑置幾分鐘之后,再次測試會(huì)發(fā)現(xiàn)讀取速度得到了自動(dòng)的恢復(fù):說明這款固態(tài)硬盤具備預(yù)防掉速的特性,如果是正常使用,在有掉速預(yù)兆的情況下SSD會(huì)后臺(tái)搬運(yùn)數(shù)據(jù)保持讀取速度不掉落。
由此可見讀取掉速并非TLC固態(tài)硬盤的通病,雖然內(nèi)部搬運(yùn)數(shù)據(jù)會(huì)損耗一些閃存耐久度,但這對(duì)在耐久度測試中達(dá)到3000PE的東芝15nm TLC閃存來說應(yīng)當(dāng)不是問題。
除了上面提到的這些可能引發(fā)掉速的原因,另一個(gè)未來不可忽視的固態(tài)硬盤掉速問題將是PCIe NVMe SSD的過熱限速,很多三星SM951及950Pro用戶已經(jīng)深受此中困擾,除了加強(qiáng)散熱之外尚無有效解決方案。