更新時(shí)間:2025-09-04 11:24:00作者:佚名
SSD固態(tài)硬盤的Trim命令是什么
我猜不少購(gòu)買固態(tài)硬盤的朋友都聽(tīng)說(shuō)過(guò)需要選擇支持Trim功能的款式留學(xué)之路,但可以斷言,相當(dāng)一部分玩家至今仍不清楚Trim具體起什么作用,只是盲目跟風(fēng),今天我就來(lái)稍微深入講講Trim這個(gè)指令。
Q: 為啥我們需要Trim?
我們清楚,文件一旦被刪除,系統(tǒng)并未真正清除信息,它只是將硬盤上的索引部分中該文件所占用的位置標(biāo)記為可供覆蓋的狀態(tài),以便下次數(shù)據(jù)寫入時(shí)能夠覆蓋這部分被標(biāo)記的區(qū)域,這也是那些所謂的文件恢復(fù)工具能夠起作用的原因,因?yàn)閿?shù)據(jù)本身并未消失。
需要留意的是:硬盤并不知曉數(shù)據(jù)的具體情況,它僅是按照指令執(zhí)行相應(yīng)操作。在傳統(tǒng)機(jī)械存儲(chǔ)設(shè)備中,這種機(jī)制運(yùn)行得相當(dāng)順暢,因?yàn)樗鼈兡軌蛑苯痈采w既有存儲(chǔ)區(qū)域。然而,應(yīng)用于NAND閃存時(shí)則效果不佳,一旦所有存儲(chǔ)單元均已被寫入,便沒(méi)有剩余的空白單元可供利用,此時(shí)性能會(huì)明顯降低。
固態(tài)硬盤的閃存中,資料通常按頁(yè)來(lái)保存,常見(jiàn)的頁(yè)大小是4KB,而128頁(yè)會(huì)構(gòu)成一個(gè)塊,資料能以4KB的頁(yè)來(lái)讀取和記錄,不過(guò)只能以512KB的塊來(lái)移除。訪問(wèn)全新頁(yè)面或者向其錄入信息時(shí),固態(tài)存儲(chǔ)器的運(yùn)行效率極高,然而覆蓋既有內(nèi)容則過(guò)程繁復(fù),必須經(jīng)歷多個(gè)環(huán)節(jié)才能實(shí)現(xiàn)。具體操作流程請(qǐng)參照附圖說(shuō)明。
當(dāng)SSD的空閑單元全部用盡,再有新數(shù)據(jù)寫入,它就必須覆蓋掉先前系統(tǒng)標(biāo)記為作廢的那些存儲(chǔ)空間。這標(biāo)志著性能開(kāi)始變慢:
需要重寫一個(gè)四千字節(jié)頁(yè)的文件系統(tǒng),必須先復(fù)制整個(gè)五十二萬(wàn)字節(jié)塊到內(nèi)存中。接著,在內(nèi)存里移除這個(gè)四千字節(jié)頁(yè),換成新的內(nèi)容。然后,把整個(gè)存儲(chǔ)器內(nèi)的這個(gè)五十二萬(wàn)字節(jié)范圍清空,再把新的內(nèi)容從內(nèi)存中寫回去。如果你需要同時(shí)重寫很多塊——比如是一連串小文件隨機(jī)寫入動(dòng)作或者只是把一個(gè)大文件寫入固態(tài)硬盤。你的SSD緩存會(huì)迅速飽和,接著你的寫入性能就會(huì)急劇下滑,出現(xiàn)斷崖式下跌的情況。讓你知道,感受多遲緩,早期緩存少的SSD會(huì)遭遇將近一秒的滯后,為了糾正這一狀況,SSD生產(chǎn)者紛紛在新控制核心中配備規(guī)模更大的外部存儲(chǔ)器,這種做法雖然部分緩解了隨機(jī)寫入的擁堵,卻無(wú)法消除SSD在數(shù)據(jù)覆蓋時(shí)性能降低的現(xiàn)象。
Q: Trim命令到底做了什么?
簡(jiǎn)單來(lái)說(shuō),這個(gè)情況源于操作系統(tǒng)和文件系統(tǒng)無(wú)法與SSD的主控就刪除文件進(jìn)行溝通,假如存在未徹底清除的數(shù)據(jù)trim是什么意思,所有寫入頁(yè)面的動(dòng)作都必須先清除塊再進(jìn)行重寫,這會(huì)極大妨礙寫入效率,有兩種方法可以解決這個(gè)狀況。
首要任務(wù)是周期性執(zhí)行垃圾回收機(jī)制,該過(guò)程類似歸整,當(dāng)固態(tài)硬盤空閑時(shí),會(huì)全面檢查有效數(shù)據(jù)頁(yè)trim是什么意思,并將它們合并成一個(gè)包含所有有效頁(yè)的單元,同時(shí)徹底移除無(wú)效的數(shù)據(jù)頁(yè)和單元。
另有一條更優(yōu)的路徑在于,當(dāng)數(shù)據(jù)被移除時(shí),系統(tǒng)會(huì)通知固態(tài)硬盤該數(shù)據(jù)已不復(fù)存在,固態(tài)硬盤隨即清除那些被數(shù)據(jù)占用的存儲(chǔ)單元,這就是Trim指令的功能所在。
刪除文件后,若系統(tǒng)支持Trim功能,會(huì)通知SSD該文件數(shù)據(jù)所在的頁(yè)可被覆蓋寫入,相當(dāng)于將管理權(quán)限從操作系統(tǒng)轉(zhuǎn)移至SSD主控的固件層面。固態(tài)硬盤也會(huì)將含有已刪除信息的整個(gè)區(qū)塊復(fù)制到緩存中,清除該區(qū)塊并將有效數(shù)據(jù)的頁(yè)面重新寫入,不同之處在于這種操作將覆寫數(shù)據(jù)的延遲時(shí)間從刪除數(shù)據(jù)的那一刻提前了,此時(shí)對(duì)速度要求不高,如果你刪除了相當(dāng)大的數(shù)據(jù)量,可以留意硬盤指示燈在你刪除操作完成后幾秒內(nèi)快速閃爍,這就解釋了為何固態(tài)硬盤的性能看似恢復(fù)了,因?yàn)槟銓懭霐?shù)據(jù)時(shí)可以利用到預(yù)先準(zhǔn)備好的空閑區(qū)塊主控的固態(tài)硬盤,內(nèi)置一個(gè)名為Wiper的應(yīng)用,該應(yīng)用能夠遍歷整個(gè)存儲(chǔ)設(shè)備,移除所有先前被移除的頁(yè)面,其作用類似于手動(dòng)執(zhí)行Trim操作,使固態(tài)硬盤恢復(fù)到初始狀態(tài)。值得注意的是,在徹底清除全盤已刪除信息之前,這個(gè)應(yīng)用會(huì)先行進(jìn)行有效數(shù)據(jù)的備份工作。該系統(tǒng)采用特殊運(yùn)算邏輯,與核心控制器緊密關(guān)聯(lián),因此其他品牌的控制器無(wú)法兼容,因?yàn)樗鼈儼l(fā)出的并非標(biāo)準(zhǔn)調(diào)節(jié)指令(非操作系統(tǒng)直接下達(dá)的指令),這使得系統(tǒng)能夠適配包括XP在內(nèi)的老舊操作系統(tǒng)。
因此我們可以明白,Trim確保性能不會(huì)降低的關(guān)鍵所在是:將后續(xù)需要處理的任務(wù)預(yù)先完成了。由于這些任務(wù)最終仍需執(zhí)行,因此基本上不會(huì)對(duì)SSD固有的寫入總量(使用年限)造成妨礙。
許多人認(rèn)為,Trim功能主要是為了測(cè)試而設(shè)計(jì)的,這種看法有一定道理,因?yàn)?Trim并不能提升存儲(chǔ)速度,它只是確保速度盡可能不會(huì)變慢,具體來(lái)說(shuō)是在SSD上未被使用的容量部分,通過(guò)提前清理這些空閑的存儲(chǔ)塊,使得后續(xù)數(shù)據(jù)寫入時(shí)能夠更加迅速。該工具并未更改其固有的功能,僅將操作時(shí)間提前了,因此,在軟件測(cè)試階段可以省略這一步驟,從而“感覺(jué)”效率得到了提升。
GC涉及遷移,壓縮,將舊頁(yè)整合至新區(qū)域,移除無(wú)用舊區(qū)域,因此會(huì)略微影響寫入操作(持久性)。不過(guò)GC能夠兼容RAID,因此得失相當(dāng)。
Q : 使用Trim功能有什么條件?RAID模式是否能夠兼容Trim操作?
我同樣是一名游戲愛(ài)好者,并非行業(yè)內(nèi)部人士,因此接下來(lái)的看法或許存在偏差,敬請(qǐng)指正,而且相關(guān)內(nèi)容會(huì)持續(xù)調(diào)整,此刻的說(shuō)明可能不適用于未來(lái)的情況。
Trim的必要條件包括:操作系統(tǒng)方面,必須是 7版本,或者Linux系統(tǒng),并且Linux內(nèi)核版本需在2.6.28及以上。
2. 固件: SSD的廠商在固件里要放有Trim算法。
驅(qū)動(dòng)方面,微軟的驅(qū)動(dòng)程序,以及英特爾AHCI驅(qū)動(dòng)程序當(dāng)前可以正常使用,其他類型的驅(qū)動(dòng)程序需要等待后續(xù)版本的支持。
以上3點(diǎn)缺一不可。
RAID系統(tǒng)中的磁盤并不具備TRIM功能,但該架構(gòu)能夠執(zhí)行垃圾回收操作。
現(xiàn)在這個(gè)固件和主控SSD,需要安裝Intel的AHCI驅(qū)動(dòng),不能使用TRIM功能。這個(gè)故障產(chǎn)生的原因是,這個(gè)主控的算法非常獨(dú)特,運(yùn)用了改良型的壓縮方式,導(dǎo)致在刪除信息時(shí),Trim指令被錯(cuò)誤地發(fā)送到了不恰當(dāng)?shù)捻?yè)和區(qū)塊,因此Trim操作失效了。