TRIM 指令(the TRIM command)
/ trim /
想像一座自助倉儲,你租用編了號的儲物櫃。當你搬離某個櫃子時,如果你從不告訴櫃檯,他們就會一直把它當成有人在用——更糟的是,當他們重新整理建築時,還會細心保存你的舊雜物,白費力氣。如果你只要告訴他們「12 號櫃現在空了」,他們就能忽略它的內容並自由地重複使用它。TRIM 指令就是檔案系統對 SSD 說的這句話:「這些邏輯區塊已不再使用,你可以把它們忘掉。」
具體來說,TRIM 解決的問題是這樣。當你刪除一個檔案時,檔案系統只是移除它的目錄項目,並在自己的帳冊裡把它的區塊標記為空閒——它並不抹掉資料,而且關鍵在於它不告訴硬碟。SSD 的快閃轉換層對檔案一無所知,仍然相信那些區塊存著寶貴的資料,所以在垃圾回收時,它會盡責地把這些如今無用的資料搬來搬去以保存它,白白浪費寫入與抹除循環。TRIM(有時稱為 discard,在 SCSI 世界裡稱為 UNMAP)解決了這點:當區塊被釋放時,作業系統送給硬碟一個 TRIM,告訴它哪些邏輯區塊現在是垃圾。FTL 便能把它們丟棄、在垃圾回收時略過不複製,並擁有更多真正空閒的空間可用。
為什麼重要:少了 TRIM,SSD 會慢慢被檔案系統早已放棄的資料塞滿,垃圾回收變得更昂貴,寫入放大上升,而寫入效能隨時間衰退——這就是經典的「SSD 用過一陣子之後就變慢」現象。有了 TRIM,硬碟保持知情、保持快速。請注意,TRIM 純粹是幫助硬碟的提示,而不是對你資料的保證:它不是安全抹除(資料在實體上可能還會殘留一陣子),而且它仰賴作業系統、檔案系統與硬碟全都正確地支援並使用它。
你刪除一段 2 GB 的影片。檔案系統把那些區塊標記為空閒,並對它們發出 TRIM。現在 SSD 知道那些頁是垃圾,所以它下一輪垃圾回收只要把它們抹除,而不必費力地複製 2 GB 的死影片來把它保「安全」。
TRIM 把檔案系統早就知道的事告訴硬碟:這是垃圾。
TRIM 是效能與壽命的提示,不是安全工具。發出 TRIM 並不會安全地抹除資料,而在一顆普通硬碟上它根本毫無作用——它只對快閃記憶體式的硬碟才有意義。