SSD Trim介紹

1. 機械硬盤

機械硬盤(HDD)主要是通過機械裝置來控制磁頭在硬盤上對磁性物質進行磁化來進行寫讀操作的裝置,因此機械硬盤可以直接覆蓋寫,所以不需要特別的擦除操作。
操作系統(包括磁盤驅動及文件系統)對機械硬盤的此特性進行了專門優化。當用戶刪除硬盤上的文件時,操作系統並沒有告訴硬盤刪除操作,操作系統只是將文件系統的數據映射表進行相應的標記(如FAT表中標記FAT表項爲空),並不是真正是刪除文件數據。這樣做,可以提高操作效率。下次有新文件寫入時,操作系統會通過文件系統表項中空白項對應數據區的位置,直接進行覆蓋寫操作即可。

2. 固態硬盤

固態硬盤(SSD)主要是通過NandFlash來存取數據。操作系統按照操作機械硬盤的方式來操作固態硬盤時,會面臨一些問題。
當用戶刪除文件時,操作系統只是在文件系統中標記對應數據區爲空閒,並不真正擦除對應數據區。下一次寫操作時,是直接覆蓋寫。FLASH對應的SLC塊容量爲1MB,操作系統刪除100MB文件之後,假設寫128K數據大小文件,此時直接是覆蓋寫,覆蓋因爲需要搬移,並且實際搬移的數據可能是需要擦除的無效數據,這就非常影響寫速度。
在這裏插入圖片描述

3. Trim

針對固態硬盤的這種問題,操作系統層面還有各種協議協會,共同提出了專門針對固態硬盤的優化方案——Trim。Trim命令在ATA命令集中,被稱爲TRIM,在SCSI命令集中被稱爲UNMAP。
Trim,就是操作系統在刪除文件時,直接告訴固態硬盤刪除操作,而不只是在文件系統中標記一下。例如,操作系統刪除200MB文件,通過Trim告訴固件,那麼固件就直接將對應200MB的NandFlash擦除。這樣寫的時候,就不用進行過多搬移,尤其是針對無效數據的搬移。
所以Trim主要有兩個作用:
將擦除操作從覆蓋寫移到刪除操作時。
將對無效數據的搬移操作直接消除掉。
Trim的效果必須是操作系統與固態硬盤匹配,才能發揮效果。windows7默認狀態下trim指令是開啓的,如果想查詢目前的trim指令狀態,我們可以在管理員權限下,進入命令提示符界面,

  • 輸入“fsutil behavior query disabledeletenotify”,之後會得到相關查詢狀態的反饋。
  • 提示爲“disabledeletenotify=0”即trim指令已啓用;
  • 提示爲“disabledeletenotify=1”即爲trim指令未啓用。
  • 輸入“fsutil behavior set disabledeletenotify 0”,啓用TRIM功能。
  • 輸入“fsutil behavior set disabledeletenotify 1”,關閉TRIM功能。

4. 補充

傳統機械硬盤沒有TRIM,也不需要TRIM。但是最新的機械硬盤,爲了追求更高的容量,採用了SMR(疊瓦式磁記錄方式),這就導致寫的時候需要寫更寬的磁道,也就是說寫的時候,如果當前磁道相領磁道有數據,
也是需要有一個相應的搬移操作,這同樣影響寫速度。爲了避免這種情況,主要是刪除文件時,需要提前完成一個搬移操作,以此來避免影響寫時的速度。所以此種方式的機械硬盤也是可以響應操作系統的Trim指令,並且有良好的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章