Trim(非正式翻譯爲修剪)

Trim(非正式翻譯爲修剪):

Trim,其實是一個ATA指令,並無正式中文名稱,操作系統發送此指令給SSD主控,以通知它哪些數據佔用的地址是'無效'的。
在講解Trim的重要性前,先說一點文件系統的相關知識。當我們在操作系統中刪除一個文件時,系統並沒有真正刪掉這個文件的數據,它只是把這些數據佔用的地址標記爲'空',即可以覆蓋使用。但這只是在文件系統層面的操作,硬盤本身並不知道那些地址的數據已經'無效',除非系統通知它要在這些地址寫入新的數據。在HDD上本無任何問題,因爲HDD允許覆蓋寫入,但到SSD上問題就來了,我們都已知道閃存不允許覆蓋,只能先擦除再寫入,要得到'空閒'的閃存空間來進行寫入,SSD就必須進行GC操作。在沒有Trim的情況下,SSD無法事先知道那些被'刪除'的數據頁已經是'無效'的,必須到系統要求在相同的地方寫入數據時才知道那些數據可以被擦除,這樣就無法在最適當的時機做出最好的優化,既影響GC的效率(間接影響性能),又影響SSD的壽命。
大家要牢記,Trim只是一個指令,它讓操作系統通知SSD主控某個頁的數據已經'無效'後,任務就已完成,並沒有更多的操作。Trim指令發送後,實際工作的是GC機制。Trim可減少WA的原因在於主控無需複製已被操作系統定義爲'無效'的數據(Trim不存在的話,主控就不知道這些數據是無效的)到'空閒'塊內,這代表要複製的'有效'數據減少了,GC的效率自然也就提高了,SSD性能下降的問題也就減弱了。其實Trim的意義在於它能大量減少"有效"頁數據的數量,大大提升GC的效率。特別是消費級的SSD由於一般OP空間較少,因此相對於有大量OP空間的企業級SSD來說,Trim顯得尤其重要。 Trim的作用可參考下圖。
Trim指令只有在操作系統進行刪除、格式化等操作時候纔會發送。Trim指令目前還不支持發送給RAID陣列中的SSD。(操作系統下進行的軟件RAID可以支持,少部分最新Intel平臺也已支持)。
Trim的支持需要3個要素: 1.SSD主控制器和當前搭配的固件需要支持Trim命令接收。2.當前操作系統需要支持Trim指令發送。(Win7/2008R2及後續版本)3.當前使用的磁盤驅動程序必須支持Trim命令傳輸。
只有同時滿足以上3個條件,才能做到系統Trim命令發送,驅動傳輸Trim命令,SSD固件接收到傳輸來的Trim命令。
Trim目前不支持以下幾種情況:(可能還有更多) 1. Trim目前不支持RAID陣列中的SSD。(操作系統下進行軟件RAID及少部分最新Intel平臺除外)2. Trim目前不支持磁盤鏡像文件內操作。(VM等虛擬機軟件使用的虛擬磁盤文件)3. Trim目前不支持加密的文件系統。(以防止暴露加密文件系統信息)
發佈了35 篇原創文章 · 獲贊 30 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章