TRIM指令是微軟聯合各大SSD廠商所開發的一項技術,屬於ATA8-ACS規範的技術指令。安全
TRIM是告訴NAND閃存固態存儲設備要擦除哪些數據的SATA接口指令。當相關頁面的數據能夠被覆蓋時,操做系統會發給SSD一個TRIM指令。SSD控制器等到主機開始刪除和再次寫入操做的時候,執行安全擦除操做。由於在寫入操做過程當中不用花時間去擦除本來的數據,寫入速度要快得多。
Trim指令也叫disable delete notify(禁用刪除通知),當咱們在操做系統中刪除一個文件時,系統並無真正刪掉這個文件的數據,它只是把這些數據佔用的地址標記爲‘空’,便可以覆蓋使用。但這只是在文件系統層面的操做,硬盤自己並不知道那些地址的數據已經‘無效’,除非系統通知它要在這些地址寫入新的數據。
在HDD上本無任何問題,由於HDD容許覆蓋寫入,但到SSD上問題就來了,咱們都已知道閃存不容許覆蓋,只能先擦除再寫入,要獲得‘空閒’的閃存空間來進行寫入,SSD就必須進行GC(垃圾回收)操做。在沒有Trim的狀況下,SSD沒法事先知道那些被‘刪除’的數據頁已是‘無效’的,必須到系統要求在相同的地方寫入數據時才知道那些數據能夠被擦除,這樣就沒法在最適當的時機作出最好的優化,既影響GC的效率(間接影響性能),又影響SSD的壽命。
而當Windows識別到SSD並確認SSD支持Trim後,在刪除數據時,會不向硬盤通知刪除指令,只使用Volume Bitmap來記住這裏的數據已經刪除。Volume Bitmap只是一個磁盤快照,其創建速度比直接讀寫硬盤去標記刪除區域要快得多。這一步就已經省下一大筆時間了。而後再是寫入數據的時候,因爲NAND閃存保存數據是純粹的數字形式,所以能夠直接根據Volume Bitmap的狀況,向快照中已刪除的區塊寫入新的數據,而不用花時間去擦除本來的數據。
Trim的做用可參考下圖:
Trim的支持須要3個要素:
1.SSD主控制器和當前搭配的固件須要支持Trim命令接收。
2.當前操做系統須要支持Trim指令發送。(Win7/2008R2及後續版本)
3.當前使用的磁盤驅動程序必須支持Trim命令傳輸。
只有同時知足以上3個條件,才能作到系統Trim命令發送,驅動傳輸Trim命令,SSD固件接收到傳輸來的Trim命令。
Trim目前不支持如下幾種狀況:
1. Trim目前不支持RAID陣列中的SSD。(操做系統下進行軟件RAID除外)
2. Trim目前不支持磁盤鏡像文件內操做。(VM等虛擬機軟件使用的虛擬磁盤文件)
3. Trim目前不支持加密的文件系統。(以防止暴露加密文件系統信息)
在window系統下查看SSD Trim功能是否開啓:
1.啓動CMD命令行窗口。
2.輸入fsutil behavior query disabledeletenotify。
3.顯示DisableDeleteNotify = 0 表示已開啓。
4.若是沒有開啓,輸入fsutil behavior set disabledeletenotify 0 進行設置。
5.能夠手動關閉Trim功能,輸入fsutil behavior set disabledeletenotify 1
注意:咱們是不須要關閉該功能的,由於只有開啓了這項功能,咱們安裝上的固態硬盤才能夠享受到更長久的使用壽命。若是你安裝的固態硬盤不支持該項功能,那麼此功能在開啓的時候會失敗。