跳至內容

Trim命令

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

Trim命令ATA命令集中稱為TRIMSCSI命令集英語SCSI command中稱為UNMAP),它使作業系統能通知固態硬碟(SSD)哪些資料塊已不再考慮使用,可以被內部擦除。[1]

Trim命令幾乎是與SSD同時推出的。這是因為SSD的底層操作方式與傳統機械硬碟有著顯著不同,若作業系統沿用傳統方法處理諸如刪除和格式化等操作,會導致SSD的寫入效能發生下降。[2]Trim(意為修整、修剪、裁剪)使SSD能更有效地完成垃圾收集的工作,而不用犧牲對儲存塊的寫入速度。[3]

儘管在引入Trim命令前,有些工具(比如「Reset」命令)已經可以將驅動器「重設」為空狀態,但這些操作會刪除驅動器上的所有資料,因而無法用於持續性最佳化。[4]許多SSD擁有廠商自己的後台垃圾收集機制,這些工具和Trim命令互相獨立,使不支援Trim命令的作業系統能完成與之類似的工作,卻依然存在寫入放大的現象,往往也會導致儲存塊壽命過早地衰減。[5]

快閃記憶體磁碟機特有的問題

因為許多檔案系統以標記資料塊為「未使用」來處理刪除操作,[6][7]而非真正「清空」資料,因此儲存媒介(傳統硬碟、SSD)通常不知道哪個磁區/頁是正在使用,哪些可被認作空閒空間,這與重寫(rewrite)操作不同,刪除操作不涉及對資料所在磁區/頁的物理寫入。SSD等儲存媒介通常不負責管理檔案系統(例如未使用的資料塊/磁區表),也無法獲知哪些資料塊/磁區已經可用。這使反刪除英語Undelete工具能通過更底層的方法,從傳統的機械硬碟上恢復檔案,[8]因為儘管作業系統報告使用者檔案已被「刪除」,並騰出了儲存空間。但在儲存媒介上,檔案所在的磁區只有在下一次寫入時,舊資料才會被覆蓋,從儲存媒介的角度看,「刪除」操作更接近於「重寫」。對於機械磁碟來說,這與寫入空磁區沒有區別,但因為SSD最底層的一些特性,與將資料寫入空頁相比,重寫會有顯著的開銷,從而潛在地削弱寫入效能。[9]

SSD在快閃記憶體單元中通常以4-16kB為一組來儲存資料(稱之為頁),每128-512kB的頁組合成更大的一組(稱之為塊或資料塊)。舉例來說,某一品牌的SSD將4kB的資料組合成一頁,其資料塊大小是512kB,每一資料塊包含128個頁。NAND快閃記憶體單元只能在處於空狀態時寫入。如果它們包含資料,則執行寫操作前必須擦除其內容。SSD一次寫入最少一頁,但由於硬體限制,擦除資料時將會抹除整個資料塊;[10]因此將資料寫入到SSD上的空頁時非常快,而寫入已有資料的頁就會明顯變慢。這是因為頁被再次寫入前需要擦除資料,但SSD只能擦除一整個資料塊,隨後把資料塊中的其他資料以覆寫的方式(按「讀取、擦除、修改、寫入」的方式)完成;[11]整個塊的內容會先儲存在快取中,然後在SSD中擦除整個塊,再將覆寫的頁寫入到快取的塊,最後再將更新的塊寫入快閃記憶體媒介。這種現象也稱寫入放大[12][13]

操作

TRIM命令使SSD可以從作業系統處得知哪一部分資料將永遠不會被訪問。對於刪除操作,作業系統會將整個資料塊標記為可用於新資料,然後向SSD傳送TRIM命令。SSD完成這一操作後,在新的資料寫入這一頁時,SSD將重新整理整個塊的資料,而不保留塊中其他頁原本的內容,從而緩解寫入放大現象(寫入次數更少),並提供更高的寫入吞吐量(不需要執行讀取、擦除、修改),還能顯著延長驅動器壽命。

不同的SSD實現的方式有所不同,因此效能可能也有所差異。

TRIM命令通知SSD從LBA(Logical Block Addressing)區域上標記為無效,從邏輯層上對該區域進行讀取將不會返回有效資料。從實體層面看,資料仍可能短時間駐留在快閃記憶體內部,SSD徹底完成垃圾回收的工作之後,恢復資料幾乎是不可能的;[14]這不同於機械硬碟中被刪除的資料可能被資料恢復

實現

作業系統支援

Trim僅在支援它的作業系統上有效。下表列出了各個重要的作業系統支援該命令的首個版本。此外,在TRIM命令添加到ATA標準之前設計的舊款固態驅動器需要更新韌體(如果有)才能支援Trim,否則將忽略這個新命令。

作業系統 支援始自 備註
DragonFly BSD 2011-052011年5月[15]
FreeBSD 2010-078.1 - 2010年7月[16] 在8.1中的塊裝置層中添加了支援。檔案系統支援在FreeBSD 8.3和FreeBSD 9中添加,隨Unix檔案系統(UFS)而來。[17]ZFSTrim支援在FreeBSD 9.2中添加。[18][19]FreeBSD 10支援在軟體RAID上組態Trim。[20]
NetBSD 2012-102012年10月[21]
Linux 2008-12-252.6.28–2008年12月25日[22] 最初在2.6.28中添加了對FTL NAND快閃記憶體裝置的discard(丟棄)運算子的支援。對ATA TRIM命令的支援在2.6.33中添加。[23]

並非所有檔案系統都能使用trim。可以自動發出修剪請求的檔案系統有Ext4[24]Btrfs[25]FATGFS2英語GFS2JFS[26]XFS[27]但是由於效能問題,在受支援SSD上進行定期修剪預設情況下已被禁用[28][29]Ext3NILFS2英語NILFS2OCFS2英語OCFS2提供Ioctl來執行離線修剪。TRIM規範稱支援修剪特定範圍列表,但截至核心3.0,修剪僅能較慢地逐個呼叫單個範圍。[30]

MacOS 2011-06-2310.6.8–2011年6月23日[31] 儘管AHCI塊裝置驅動程式在10.6.6 (10J3210)中得到了顯示裝置是否支援TRIM操作的功能[32],該功能本身仍不可用,直至10.6.8暴露通過IOStorageFamily執行TRIM操作,以及檔案系統(HFS+)的支援。[來源請求]直到10.10.4,Mac OS X只為蘋果品牌的SSD原生啟用TRIM;第三方實用程式可使其適用於其他品牌。舊的第三方TRIM驅動程式在Yosemite更新時已停止工作。[33] 現已有更新的適用於OS X Yosemite的驅動程式。[34][35] 在Mac OS X更新10.10.4頁面存檔備份,存於網際網路檔案館)中,蘋果公司添加了一個命令列使用工具trimforce,它可以用於為第三方SSD啟用TRIM。[36]
Microsoft Windows 2009-10Windows 7和Windows Server 2008 R2 - 2009年10月[37][38] Windows 7最初支援的TRIM僅適用於包括ATASATA的AT Attachment系列中的驅動器,並不對任何其他包括Storport PCI-Express SSD裝置支援此命令,即使即使裝置本身將接受該命令。[39]已確認Windows 7上AHCI和舊有IDE/ATA模式下的原生微軟碟機動支援TRIM命令。[40]Windows 8及之後版本的Windows作業系統支援基於NVMe的PCI Express SSD的trim,以及來自SATA的TRIM命令完全類比的unmap命令,用於使用SCSI驅動程式堆疊的裝置。微軟已為Windows 7發布一個KB2990941頁面存檔備份,存於網際網路檔案館)更新,這在使用DISM整合到Windows 7安裝程式時增加NVM Express的支援,包括對PCIe SSD裝置的TRIM。
OpenSolaris 2010-072010年7月[41]
Android 2013-74.3[42] - 24 July 2013[43] 每24小時自動執行fstrim,僅在裝置已空閒至少1小時並且電量80%(如果已連接充電器則30%)時執行。[42]

RAID問題

截至2017年1月 (2017-01),大多數基於硬體的RAID技術未實現TRIM命令的支援。但是,軟體實現的RAID通常提供了TRIM支援。

Windows:

Windows 10為SSD RAID卷在組態一個RAID卷時通過「最佳化驅動器」選項提供了TRIM支援。

Mac OS:

macOS RAID驅動程式不支援TRIM。自Mac OS X 10.7至macOS 10.12.x的所有版本均是如此。

對於使用第三方SoftRAID®應用程式的RAID(0,1,4,5和10)卷支援TRIM,包括使用非蘋果品牌SSD裝置的TRIM支援。 (註:非蘋果品牌的SSD裝置必須使用終端命令「sudo trimforce enable」來啟動TRIM)

Linux:

2011年1月以後的Linux核心中dmraid英語Device mapper的發布版本已實現BIOS輔助的「假硬體RAID」支援,並且現在通行來自RAID陣列上的檔案系統的任何TRIM請求。[44]


不同於dmraid,Linux的常規目的軟體RAID系統mdraid英語Mdadm有實驗性的基於批次處理(而不是在檔案刪除時即時)的TRIM,當系統組態為定期在RAID 1陣列上的檔案系統上執行mdtrim實用工具(包括ext3等沒有原生TRIM支援的檔案系統)。[45]在Linux的稍晚版本(例如Red Hat Enterprise Linux 6.5和beyond)中 mdraid支援即時、實際傳遞TRIM命令,而不是作為一個批次處理作業。[46]

但請注意,紅帽公司建議不要在大多數RAID技術的SSD上使用軟體RAID 1、4、5和6,因為大多數RAID管理實用工具(例如Linux的mdadm)在初始化期間會在裝置上寫入所有塊以確保校驗和(或RAID 1/10情況下的驅動器到驅動器驗證)運作正常,而這導致SSD認為除備用區域以外的所有塊都在使用中,從而顯著降低效能。[47]

另一方面,Red Hat推薦在SSD上為LVM RAID使用RAID 1或RAID 10,因為這些級別支援TRIM(在Linux術語中稱為"discard"),並且LVM實用工具在建立時不會寫入所有塊到RAID 1或RAID 10卷。

在2010年3月的一小段時間內,使用者被誤導相信英特爾快速儲存技術(RST)9.6驅動程式支援RAID卷上的TRIM,但後來英特爾澄清說,TRIM支援AHCI模式和RAID模式的BIOS設定,但不支援RAID卷的驅動器。[48]

截至2012年8月,英特爾確認,使用快速儲存技術(RST)11.2驅動程式的7系列晶片組支援微軟Windows 7中的RAID 0的TRIM。[49]雖然英特爾沒有確認支援6系列晶片組,RAID 0卷上的TRIM已展示為在Z68、P67和X79晶片組上可用,通過由硬體發燒友修改的RAID選項ROM英語Option ROM[50]據推測,缺乏對6系列晶片組的官方支援是由於驗證成本[51]或企圖鼓勵消費者升級[52],而不是出於技術原因。

在使用X79晶片組的主機板上需要修改選項ROM的例外是製造商添加了ROM開關;這需要RST和RST-E ROM存在於BIOS/UEFI內。這允許使用RST ROM而不是RST-E ROM,從而允許TRIM工作。[53]英特爾指出,使用與ROM版本相同的驅動程式可以實現最佳效能。例如,如果BIOS/UEFI具有11.0.0.0m選項ROM,則應使用11.x版本的驅動程式。[54]

為不支援的作業系統使用

在使用不支援自動TRIM的檔案系統時,某些實用工具可以手動傳送Trim命令。通常它們將確定哪些塊為空閒,然後將該列表以一系列的Trim命令傳遞給驅動器。這些實用程式可從各製造商(例如Intel、[55]G.Skill[56])或作為一般實用程式(例如Linux的hdparm英語hdparm自v9.17起,[57][58]或者如上所述的mdtrim)。

硬體支援

ATA

TRIM命令規範[59]已被標準化為AT Attachment介面標準的一部分,由國際資訊科技標準委員會英語International Committee for Information Technology Standards(INCITS)的技術委員會T13所領導。[60] TRIM根據DATA SET MANAGEMENT(資料集管理)命令(操作碼06h)實現,ACS-2規範草案。[61]ATA標準被並列(IDE、PATA)和序列埠(SATA)ATA硬體所支援。

原版ATA TRIM命令的缺點是它被定義為不可排隊命令,因此不能輕鬆地與正常的、排隊的讀和寫操作混合。SATA 3.1引入了一個排隊的TRIM命令來糾正這一點。[62]

ATA IDENTIFY DEVICE命令返回的SATA Words 69和169定義了不同類型的TRIM。

  • 非確定性TRIM:TRIM後每個對邏輯區塊位址(LBA)的讀取命令可能返回不同的資料。
  • 確定性TRIM(DRAT):TRIM後對LBA的所有讀取命令都返回相同的資料,或者變為確定的。
  • TRIM(RZAT)後確定性讀零:TRIM後對LBA的所有讀取命令都將返回零。

在SATA字105中有額外資訊,描述驅動器可以在每個資料集管理命令(DATA SET MANAGEMENT)支援最多多少個512位元組的資料塊。通常此值預設為8(或4kB),但許多驅動器將其減少到1,以滿足微軟Windows硬體要求對TRIM的部分——該命令完成時間不應超過20 ms或者8 ms × (LBA範圍項的數量),且兩者中的較大者應始終小於600 ms。[63]

各LBA範圍被稱為一個LBA範圍條目,並由八個位元組表示。 LBA由LBA範圍條目的前6個位元組表示,範圍長度是由剩下兩個位元組表示的一個從零開始的計數器。如果兩個位元組組成的範圍長度為零,那麼LBA範圍條目應視作填充而丟棄。[64]這意味著以512位元組為TRIM塊範圍支援的裝置,該最大值為64個32 MB,也就是2 GB。如果裝置在SATA字105處設為8,則它應該能在單個TRIM(資料集管理)命令中修整16GB。

SCSI

SCSI提供了UNMAP命令(TRIM的完全類比),以及帶有UNMAP標誌集的WRITE SAME命令(10和16個變數)。[65]

SD/MMC

多媒體記憶卡SD ERASE(CMD38)命令提供了與ATA TRIM命令類似的功能,但它要求擦除的塊用0或1重寫。eMMC 4.5進一步定義了一個「discard」(丟棄)子操作,從而更緊密的配合ATA TRIM,因為丟棄的塊的內容可以被認為是不確定的(即「不在乎」的)。

缺點

  • 在使用加密時,TRIM命令的相關資訊將揭露哪些塊正在使用,哪些沒有。[66]
  • TRIM命令的原始版本已被T13小組委員會英語T13 subcommittee定義為非排隊命令,因此執行不當可能造成大量的錯誤執行。例如,如果它在作業系統的每個刪除命令後發出,該命令的非排隊性質將要求驅動程式先等待所有未完成的命令完成,然後發出TRIM命令,最後再繼續正常命令。TRIM可能需要很長時間才能完成,這取決於SSD中的韌體,並還可能觸發垃圾收集周期。[來源請求]這種缺陷可以用定期執行批次TRIM的解決方案來最小化,而不是在每次檔案刪除時執行修剪,批次處理任務可以在系統利用率最小時排程。這項TRIM缺點已在Serial ATA修訂3.1中解決,其中引入了排隊的TRIM命令。[67][68]
  • 排隊的TRIM命令已在多款裝置中涉及嚴重的資料損壞,最顯著的是Micron的M500、[69]Crucial的M500、以及Samsung 8**系列。[70]在2015年7月1日,Linux作業系統在這些裝置上的資料損壞已得到確認。[71]

這些裝置已被列入Linux核心中libata-core.c的黑名單,從而強制傳送非排隊的TRIM命令到這些裝置,而不是排隊的TRIM命令:[72]

  • Micron M500,所有韌體版本(僅MU07之前有此問題,但Linux尚未跟進)
  • Crucial M500,所有韌體版本,包括工廠重新認證的SSD(僅MU07之前有此問題,但Linux尚未跟進)
  • Micron M510,韌體版本MU01
  • Micron M550,韌體版本MU01
  • Crucial M550,韌體版本MU01
  • Crucial MX100,韌體版本MU01
  • 三星SSD 8**系列,所有韌體版本

此檔案也已將SuperSSpeed S238列入常規TRIM的黑名單,因為發出TRIM會導致錯誤的塊遺失資料。[72][73]

libata-core.c還有一個列出子系統維護者已確認正確實現DRAT和RZAT標誌(flags)的SSD,這不同於許多忽略它們的驅動器。白名單中的裝置如下:

  • Crucial多款SSD
  • Intel多款SSD(不包括Intel SSD 510)
  • Micron多款SSD
  • 三星多款SSD
  • 希捷多款SSD[74]

參見

參考資料

  1. ^ Intel High Performance Solid State Drive - Advantages of TRIM. Intel.com. Intel. 2010-09-14 [2012-02-21]. (原始內容存檔於2016-03-06). 
  2. ^ Shimpi, Anand Lal. The SSD Anthology. AnandTech.com: 4. 2009-03-18 [2010-06-19]. (原始內容存檔於2012-06-30). 
  3. ^ Shimpi, Anand Lal. (2009-03-18). p. 10.
  4. ^ Shimpi, Anand Lal. (2009-03-18). p. 11.
  5. ^ Kingston SSDNow V Plus 100 Review. AnandTech.com. Anand Lal Shimpi. 2010-11-11 [2010-12-10]. (原始內容存檔於2010-12-13). 
  6. ^ Savill, John. I heard solid-state disks (SSDs) suffer from a decline in write performance as they're used. Why?. WindowsITPro. 2009-04-21 [2010-06-19]. (原始內容存檔於2012-06-30). 
  7. ^ Shimpi, Anand Lal. (2009-03-18). p. 7.
  8. ^ Savill, John. What is the TRIM function for solid-state disks (SSDs) and why is it important?. WindowsITPro. 2009-04-22 [2010-06-19]. (原始內容存檔於2013-02-09). 
  9. ^ Malventano, Allyn. Long-term performance analysis of Intel Mainstream SSDs. PC Perspective. 13 February 2009 [10 February 2012]. (原始內容存檔於2012-02-28). 
  10. ^ Shimpi, Anand Lal. (2009-03-18). p. 5.
  11. ^ Shimpi, Anand Lal. (2009-03-18). p. 8.
  12. ^ Write Amplification: Intel's Secret Sauce. ExtremeTech.com. [2010-11-06]. (原始內容存檔於2010-11-15). 
  13. ^ Inside the X25-M Controller: Wear Leveling, Write Amplification Control. TomsHardware.com. 2008-09-08 [2010-11-06]. 
  14. ^ Too TRIM? When SSD Data Recovery is Impossible. TechGage. TechGage. 2010-03-05 [2010-04-16]. (原始內容存檔於2012-06-30). 
  15. ^ Preliminary TRIM support. [2017-03-16]. (原始內容存檔於2020-07-06). 
  16. ^ FreeBSD 8.1-RELEASE Release Notes: Disks and Storage. [2010-09-01]. (原始內容存檔於2010-07-27). 
  17. ^ Add kernel side support for BIO_DELETE/TRIM on UFS. [2011-02-01]. 
  18. ^ Added ZFS TRIM support which is enabled by default.. [2013-06-05]. (原始內容存檔於2018-02-17). 
  19. ^ FreeBSD 9.2-RELEASE Announcement. [2013-10-04]. (原始內容存檔於2013-10-03). 
  20. ^ Base revision 242323 – Add basic BIO_DELETE support to GEOM RAID class for all RAID levels. [2012-10-30]. (原始內容存檔於2013-05-20). 
  21. ^ TRIM support in NetBSD. 2012-10-19 [2017-03-16]. (原始內容存檔於2016-03-05). 
  22. ^ Block device changes in Linux 2.6.28. [2017-03-16]. (原始內容存檔於2018-06-12). 
  23. ^ Storage changes in Linux 2.6.33. Kernel Newbies. [2010-09-01]. (原始內容存檔於2012-06-30). 
  24. ^ HOWTO: Configure Ext4 to Enable TRIM Support for SSDs on Ubuntu and Other Distributions - Forked by Nicolay. [2017-03-16]. (原始內容存檔於2016-12-25). 
  25. ^ Btrfs improvements in Linux 2.6.32. [2017-03-16]. (原始內容存檔於2012-09-16). 
  26. ^ JFS Filesystem can now handle trim. [2012-03-28]. (原始內容存檔於2012-10-04). 
  27. ^ Filesystem changes in Linux 3.0. [2017-03-16]. (原始內容存檔於2016-03-30). 
  28. ^ Freemyer, Greg. OpenSUSE forum - SSD detection when creating first time fstab. 2010 [2017-03-16]. (原始內容存檔於2013-01-27). 
  29. ^ How to enable TRIM?. Ask Ubuntu. [11 November 2015]. (原始內容存檔於2017-03-22). 
  30. ^ SDB:SSD discard (trim) support. [2017-03-16]. (原始內容存檔於2012-11-14). 
  31. ^ Mac OS X 10.6.8 Brings TRIM Support for Apple SSDs, Graphics Improvements. 2012-02-24 [2017-03-16]. (原始內容存檔於2017-03-18). 
  32. ^ Macbook Pros ship with active SSD TRIM support. 2011-03-04 [2017-03-16]. (原始內容存檔於2012-06-30). 
  33. ^ Yosemite kills third-party SSD support. [2017-03-16]. (原始內容存檔於2014-12-02). 
  34. ^ Chameleon SSD Optimizer. [2020-09-27]. (原始內容存檔於2014-12-02). 
  35. ^ Cindori Software. [2017-03-16]. (原始內容存檔於2016-03-06). 
  36. ^ Lee Hutchinson. Latest OS X update allows you to enable TRIM for third-party SSDs. Ars Technica. Condé Nast. Jun 30, 2015 [2015-07-01]. (原始內容存檔於2015-07-01). 
  37. ^ Support and Q&A for Solid-State Drives. 微軟開發者網路. 2009-05-09 [2010-08-12]. (原始內容存檔於2012-06-30). 
  38. ^ Windows 7 Enhancements for Solid-State Drives (PDF). Microsoft downloads. Microsoft Corporation. 2008-11-12 [2009-07-08]. (原始內容存檔 (PDF)於2012-06-30). 
  39. ^ Geoff Gasior (2012)頁面存檔備份,存於網際網路檔案館) OCZ's RevoDrive 3 X2 240GB solid-state drive
  40. ^ Coles, Olin. SSD Benchmark Tests: SATA IDE vs AHCI Mode - AHCI vs IDE Final Thoughts. BenchmarkReviews. 15 April 2010 [20 August 2013]. (原始內容存檔於2013-12-03). 
  41. ^ SATA TRIM support in OpenSolaris. 2010-07-29 [2017-03-16]. (原始內容存檔於2012-06-30). 
  42. ^ 42.0 42.1 Android 4.3 Update Brings TRIM to All Nexus Devices. 2013-07-29 [2013-07-30]. (原始內容存檔於2013-08-01). 
  43. ^ "Android 4.3 announced, rolling out to Nexus devices today"頁面存檔備份,存於網際網路檔案館).The Verge. 24 July 2013. Retrieved 24 July 2013.
  44. ^ Possible to get SSD TRIM (discard) working on ext4 + LVM + software RAID in Linux? - Server Fault. [2011-11-29]. (原始內容存檔於2011-12-20). 
  45. ^ Cyberax/mdtrim - GitHub. [2011-11-29]. (原始內容存檔於2018-06-10). 
  46. ^ Red Hat Enterprise Linux 6 Storage Administration Guide, Chapter 21. Solid-State Disk Deployment Guidelines. [2016-03-09]. (原始內容存檔於2015-12-26). 
  47. ^ Red Hat Enterprise Linux 7 Storage Administration Guide. 2015-11-11 [2016-02-29]. 
  48. ^ Is there TRIM support for RAID configurations?. Intel. 2010-03-26 [2010-11-06]. (原始內容存檔於2010-09-15). 
  49. ^ Intel Confirms RAID0 TRIM Support on 7-Series Chipsets. 2012-08-19 [2013-01-14]. (原始內容存檔於2012-10-22). 
  50. ^ RAID0 trim and SRT seems possible on 6-series and 5-Series. 2012-11-18 [2013-01-14]. (原始內容存檔於2013-01-18). 
  51. ^ TRIM & RAID-0 SSD Arrays Work With Intel 6-Series Motherboards Too. 2012-11-28 [2013-01-14]. (原始內容存檔於2013-01-09). 
  52. ^ Intel Brings TRIM to RAID-0 SSD Arrays on 7-Series Motherboards, We Test It. 2012-08-16 [2013-01-14]. (原始內容存檔於2013-01-13). 
  53. ^ Anand Lal Shimpi. Intel Brings TRIM to RAID-0 SSD Arrays on 7-Series Motherboards, We Test It. [2017-03-16]. (原始內容存檔於2017-05-06). 
  54. ^ Doug Crowthers. TRIM Command Confirmed With RAID 0 on Intel 7 Series. Tom's Hardware. 
  55. ^ Intel SSD Optimizer White Paper (PDF). Intel Corporation. [2010-01-23]. (原始內容 (PDF)存檔於2010-06-02). 
  56. ^ wiper.exe for Falcon Series. XtremeSystems. [2010-01-23]. (原始內容存檔於2012-06-30). 
  57. ^ hdparm-9.17 released, with experimental trim/wiper scripts for SSDs. [2010-08-14]. (原始內容存檔於2010-06-09). 
  58. ^ hdparm project page. sourceforge.net. [2010-08-14]. (原始內容存檔於2010-08-21). 
  59. ^ Data Set Management Commands Proposal for ATA8-ACS2 (revision 6). INCITS T13. INCITS英語INCITS. 2007-12-12 [2009-07-08]. (原始內容存檔於2010-06-13). 
  60. ^ T13 documents referring to TRIM. INCITS T13. INCITS英語INCITS. [2009-07-08]. (原始內容存檔於2010-05-26). 
  61. ^ T13 ATA8 Draft Spec 1697-D (PDF). INCITS英語INCITS. 2010-06-23 [2010-08-14]. (原始內容存檔 (PDF)於2011-03-22). 
  62. ^ SATA 6Gb/s. Serial ATA International Organization. [2012-09-26]. (原始內容存檔於2013-02-02). 
  63. ^ Device.Storage Requirements (Windows). [2016-02-29]. (原始內容存檔於2016-03-14). 
  64. ^ T13/2161-D: Information technology - ATA/ATAPI Command Set - 3 (ACS-3) (PDF). [2016-02-29]. (原始內容存檔 (PDF)於2016-04-05). 
  65. ^ Note for SCSI UNMAP support in FreeBSD mailing list. [2017-03-16]. (原始內容存檔於2012-06-30). 
  66. ^ Milan Broz's blog: TRIM & dm-crypt ... problems?. Milan Broz. [2014-10-01]. (原始內容存檔於2011-12-30). 
  67. ^ 存档副本. [2017-03-16]. (原始內容存檔於2013-02-02). 
  68. ^ SATA 3.1 spec brings swap standard, improved TRIM. The Tech Report. [2017-03-16]. (原始內容存檔於2016-05-20). 
  69. ^ Bug 71371 – [PATCH]Crucial M500, broken "queued TRIM" support. [2017-03-16]. (原始內容存檔於2017-10-11). 
  70. ^ Bug #1449005 "trim does not work with Samsung 840 EVO after firm..." : Bugs : fstrim package : Ubuntu. [2017-03-16]. (原始內容存檔於2017-01-18). 
  71. ^ torvalds. linux/libata-core.c at e64f638483a21105c7ce330d543fa1f1c35b5bc7 · torvalds/linux · GitHub. GitHub. [2017-03-16]. (原始內容存檔於2016-07-07). 
  72. ^ 72.0 72.1 torvalds. linux/libata-core.c at master · torvalds/linux · GitHub. GitHub. [2017-03-16]. (原始內容存檔於2017-02-27). 
  73. ^ torvalds. libata: force disable trim for SuperSSpeed S238 · torvalds/linux@cda57b1. GitHub. [2017-03-16]. (原始內容存檔於2018-12-26). 
  74. ^ [1/3] libata: Whitelist SSDs that are known to properly return zeroes after TRIM. [2017-03-16]. (原始內容存檔於2016-03-04). 

外部連結