科技

終於明白為何固態硬碟不能整理碎片了:越整越慢

很多人都聽說過“固態硬碟不需要做碎片整理”,但對於為什麼不需要整理,和“整理的話會有什麼後果”不甚瞭解。今天就以東芝TR200為例,通過試驗來看看固態硬碟內的“碎片整理”到底發生了什麼。

為了展現固態硬碟內資料讀取的速度變化,首先在TR200固態硬碟內寫入兩個4GB大小的檔案,通過不同的修改日期將二者從File Bench檔案讀取速度測試軟體的結果當中分離開來。最初兩個檔案的讀取速度應當是完全一致的:大約在480MB/s左右。

接下來通過一款名為PassMark Fragger的軟體,對iobw.tst進行“碎片化”處理。這裡的碎片和機械硬碟一樣,是檔案系統層面的概念,指的是檔案中原本連續的部分因為寫入位置的不同而零碎地分佈在不同的邏輯地址上。

碎片化處理的後果是,資料片段被寫入到新的快閃記憶體位置,原本可以一次性整段讀出的資料,未來需要分多次讀取。儘管快閃記憶體的隨機讀取速度比機械盤的磁頭尋道要快的多,終究不比連續讀取速度快。所以碎片化處理過後,iobw.tst檔案的讀取速度大幅掉落至361MB/s。說明一個問題:即便是固態硬碟不需要碎片整理,但大量的檔案碎片對於固態硬碟依然是不利的。

接下來我們用Defraggler碎片整理程式來執行碎片整理,看它能否解決固態硬碟的碎片問題。Defraggler預設對固態硬碟執行的是“優化”而非“整理”,但是我們可以強制它執行“整理”:

但是軟體已經明確的提醒了碎片整理會減少固態硬碟壽命。這一點並不奇怪,碎片整理的過程就是將邏輯地址不連貫的檔案碎片讀取出來,然後重新寫入到連貫的邏輯地址上。

但由於固態硬碟有FTL這樣一箇中間轉換層,邏輯地址和實體地址並不一一對應。儘管碎片整理程式將零碎的檔案片段在邏輯地址上整理成了連貫的順序,卻無力改變資料在固態硬碟快閃記憶體晶片中的具體分佈。碎片整理話費了大量時間,產生了大量的寫入,卻依舊勞而無功,無法讓檔案的讀取速度恢復到原有的水平。

更可怕的是,即便我們現在遵照軟體的建議,使用“優化”而非“整理”的方式處理固態硬碟,速度也無法恢復了。因為“優化”操作本質上是對沒有檔案儲存的“空白”地址手動傳送Trim指令,促使固態硬碟主控完成對空白位置的垃圾回收。

但已經儲存有資料的地方是無法Trim的:Trim的結果只有一個,那就是資料被清空。所以最終在浪費了大量快閃記憶體寫入耐久度之後,我們還是沒有任何辦法能讓檔案的讀取速度完整恢復。

執行磁碟碎片整理的時候會產生新的寫入,而固態硬碟主控會因快閃記憶體不能覆蓋寫入的特點,選擇新位置寫入資料,然後將老位置標記為失效。每次碎片整理都會讓檔案在快閃記憶體中的碎片化程度又提升了一點點:好心辦壞事!

還記得機械硬碟時代我們怎麼處理越用越慢的作業系統嗎?使用GHOST備份後再還原回去,電腦執行速度就恢復了不少。其實GHOST恢復的過程就是全部重新寫入一次,只不過這個方法並不適合寫入受限的固態硬碟。我們正常使用固態硬碟的過程中,只要不刻意地整理碎片就可以了。

Reference:科技日報

看更多!請加入我們的粉絲團

轉載請附文章網址

不可錯過的話題