U盤量產網

專題:金士頓U盤

您所在的位置: U盤量產網 > U盤教程 > 固態硬盤教程 > ssd固態硬盤的Trim命令是什么
推薦內容

ssd固態硬盤的Trim命令是什么

2012-07-01 23:23 來源: 本站整理 作者:U盤量產網 瀏覽量:53332次

我相信聽到過買SSD要買支持Trim的玩家不在少數,不過我敢肯定大多數玩家到目前為止還搞不懂Trim到底是干啥的,只是一味跟風,今天在這里我就稍微詳細的解釋下Trim這個命令。


Q: 為啥我們需要Trim?

A: 我們都知道,當一個文件被刪除后,操作系統其實并沒有刪除數據 - “事實上,它只是在硬盤前的索引區里標記這塊文件占用的區域為可覆蓋的,所以下次數據將要再次寫入的時候,可以覆蓋寫入這塊被標記的區域。這也就是為啥那 些所謂的文件恢復軟件能恢復的道理。(數據依然存在)。”
    這里要注意一點: 硬盤本身是不知道當前數據的狀態的,他只是被控制著做這做那。 上面這一套在普通的機械硬盤上工作起來非常完美,因為他們可以直接覆寫舊的區域,但是當用到NAND閃存上就行不通了,當全部閃存被寫滿一遍后,沒有空余 (從未寫過)的塊可以被使用的情況下,速度就下來了。
    在固態硬盤閃存內,數據存儲一般是以page(頁)為最小單位存儲的(典型的為4KB),而128個page組成了一個block(塊),數據可以以 4KB大小的頁來讀取和寫入,但卻只能以512KB(128 page)的塊大小來刪除。當讀取數據或者寫入到一個沒有被使用過的page上時,固態硬盤的速度是很快的,但是覆寫數據的話,就比較復雜了,需要許多步 驟來完成。步驟可見下圖:

trim_full.jpg

 

當SSD的所有空閑塊都被使用后,再有寫入操作,它只能覆寫數據到之前被操作系統標記為刪除的區域。這也是速度下降的開始:

 

要覆寫一個4KB 頁的文件系統,首先要把整個512KB 塊復制進緩存里。然后,在緩存里刪除這個4KB頁,替換成新的數據。接下來,清空整個閃存內的這個512KB區域,并從緩存里把新的數據寫回去。如果你需 要同時覆寫很多的塊 - ”例如是一系列小文件隨機寫入操作或者只是簡單的寫入一個大文件到SSD“。你會讓你的SSD緩存快速過載,然后你的寫入速度就會”垂直落體“。。。告訴 你,你能體會到會有多慢,早期緩存少的SSD甚至會延遲接近1秒(JMF602之流),為了修復這個問題,SSD廠商一個個都在新主控制器上加入了越來越 大的外置緩存,這雖然一定程度上解決了隨機寫入卡的問題,但是卻不能解決SSD在覆寫時速度下降的問題。


Q: Trim命令到底做了什么?

 

A: 簡而言之,這個問題是因為操作系統和文件系統不能和SSD的主控進行刪除文件的交流造成的,如果有之前沒清除干凈的數據,所有寫入的頁的操作都要先清除塊再改寫,將嚴重影響寫入速度。有2種途徑來修復這個問題:

 

第一個就是定期運行垃圾回收程序(GC)(這個操作有點像整理,在SSD空閑時,全盤掃描有效的頁并合并整理起來變為一個包含全部有效頁的塊,而那些無效的頁和塊都將被完全的清除)。

 

第二個更好的途徑就是當數據刪除時候讓系統告訴SSD數據沒了,讓SSD立即擦掉那些數據占用的塊,這就是Trim命令做的事。

 

當一個文件在支持Trim的系統里被刪除后,操作系統會發個命令給SSD,讓他知道這個數據所在的這個page可以直接被寫入,等于把控制權從操作系統變 為了SSD主控制器固件。SSD一樣會復制整個包含刪除數據的塊到緩存,清空塊并寫入有效數據的頁回去,區別是這樣等于把這個延遲時間從覆寫數據的那個時 間提前到了刪除數據的時候(這個時候你對速度不敏感,如果你刪除了很大很大的數據,可以去觀察硬盤燈在你刪除之后幾秒內狂閃),自然就會顯得SSD的速度 回來了,因為你寫入的時候有可用的空塊。barefoot主控的SSD,有個程序叫做Wiper,這個程序會掃描全盤,清除掉全盤過去被刪除的頁(和 Trim的操作一樣,手動),讓SSD像新買來的一樣。事實上這個程序在清除全盤已刪除的數據之前,預先做了有效數據備份。由于程序獨特算法和主控對應, 別家的主控不支持,因為不算是真正的Trim命令(不是由系統發出的命令),所以可以支持XP之類的老系統。

 

所以我們可以說,Trim保證速度不下跌的真正秘密是: 把將來要做的事提前做掉了。 但是這件事遲早要做,所以基本不會影響SSD原有的寫入次數(壽命)。

 

有很多人說,Trim是為測試而生的,這話其實沒錯,因為 1.Trim不能提速,只是保證速度盡可能不下降。(實際是SSD上沒被使用的容量那里的速度不下降。Trim提前把那里的塊清空了。下次直接可以寫當然 快了。)2.Trim沒改變原本要做的事,只是提前做掉了,測試軟件測試時候就不需要做了,從而“顯得”速度上去了。

 

對于GC來說,由于是移動,整理,合并了舊頁到新塊,刪除了無效的舊塊,會犧牲點寫入次數(壽命)。但是GC支持RAID,也算有利有弊吧。


Q : 支持Trim有啥要求?RAID到底支持不支持Trim?

 

A : 首先我也是個玩家,非業內人士,所以下面的回答可能不正確,歡迎指出,而且這東西隨時后更新,現在的答案不一定用的到將來。

 

Trim的三要素: 1. 系統: Win7, 2008R2 , Linux核心2.6.28以上。

 

               2. 固件: SSD的廠商在固件里要放有Trim算法。

 

               3. 驅動: MS的驅動,Intel的AHCI驅動目前支持。 別的要看之后的更新了。

 

以上3點缺一不可。

 

RAID陣列里的盤明確不支持TRIM,不過RAID可以支持GC。

 

當前固件下的SF1200和SF1500主控SSD,請使用Intel的AHCI驅動,MSAHCI不支持TRIM。這個bug是因為此主控算法極其特殊,采用改革的壓縮算法,造成刪除數據時,Trim命令發送給了錯誤的頁和塊,造成Trim無效。


發表評論

(您的評論需要經過審核才能顯示)
  • 高興
  • 撇嘴
  • 抓狂
  • 汗
  • 驚恐
  • 疑問
不會下載請看下載幫助!

軟件評論

聲明:U盤量產網為非贏利類網站 蜀ICP備10027756號 川公網安備 51092202000194號

辽十一选五走势图一定 棋牌游戏有哪些好玩 麻将基本规则 单机麻将四人免费 体彩十一运夺金开奖结果 白姐中特一肖王中王 天天打鱼游戏下载 a股权重股有哪些 捕鱼来了弹头好卖吗 海南琼涯麻将 北京赛车pk10技巧玩法