Can you summarize the following document?
        
  因為許多檔案系統以標記資料塊為“未使用”來處理刪除操作,儲存介質(傳統硬碟、SSD)通常不知道哪個扇區/頁是真在使用,哪些可被認作空閒空間。因此與重寫操作不同,刪除將不涉及對資料所在扇區的物理寫入。由於通用SSD不瞭解檔案系統結構(例如未使用的塊/扇區的列表),儲存介質無法獲知哪些塊已經變為可用。這使反刪除工具能從傳統的機械硬碟上恢復檔案,因為儘管作業系統報告檔案已被“刪除”,檔案所在的扇區只是在作業系統之後進行寫入時作為空閒空間的扇區,從而有效使操作變得像重寫操作。對於機械磁碟來說,這與寫入空扇區沒有區別,但因為SSD最底層的一些特性,與將資料寫入空頁面相比,重寫會有顯著的開銷,從而潛在地削弱寫入效能。  SSD在快閃記憶體單元中通常以4至16kB的分組來儲存資料,並將分組組合成128至512頁的塊。例如,512kB以4kB為一頁儲存在128頁的塊中。NAND快閃記憶體單元只能在處於空狀態時寫入。如果它們可能包含資料,則執行寫操作前必須擦除其內容。一次SSD寫入操作可以只完成單個頁,但由於硬體限制,擦除命令始終會影響整個塊;因此將資料寫入到SSD上的空頁非常快,而寫入存在資料的頁就會顯著變慢。由於頁被再次寫入前需要擦除單元,但擦除只能對整個塊,改寫將按“讀取、擦除、修改、寫入”的方式完成;整個塊的內容會先儲存在快取中,然後在SSD中擦除整個塊,再將改寫的頁寫入到快取的塊,最後再將更新的塊寫入快閃記憶體介質。這種現象也稱寫入放大。

  TRIM命令使作業系統得以通知SSD哪個頁不再包含有效的資料。對於檔案刪除操作,作業系統會將檔案刪除標記為可用於新資料,然後向SSD傳送TRIM命令。在Trim後,在新的資料寫入快閃記憶體頁面時,SSD不保留塊的任何內容,從而實現更少的寫入放大(更少的寫入)、更高的寫入吞吐量(不需要讀取、擦除、修改),從而增加驅動器壽命。  不同的SSD實現的命令有所不同,因此效能可能也有所差異。  Trim為不可逆地擦除資料,無法恢復;這不同於機械硬碟中被刪除的資料可能被資料恢復。

  

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

  ,大多數基於硬體的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的釋出版本已實現BIOS輔助的“假硬體RAID”支援,並且現在通行來自RAID陣列上的檔案系統的任何TRIM請求。 不同於dmraid,Linux的常規目的軟體RAID系統mdraid有實驗性的基於批處理(而不是在檔案刪除時實時)的TRIM,當系統配置為定期在RAID 1陣列上的檔案系統上執行mdtrim實用工具(包括ext3等沒有原生TRIM支援的檔案系統)。在Linux的稍晚版本(例如Red Hat Enterprise Linux 6.5和beyond)中 mdraid支援實時、實際傳遞TRIM命令,而不是作為一個批處理作業。  但請注意,紅帽公司建議不要在大多數RAID技術的SSD上使用軟體RAID 1、4、5和6,因為大多數RAID管理實用工具(例如Linux的mdadm)在初始化期間會在裝置上寫入所有塊以確保校驗和(或RAID 1/10情況下的驅動器到驅動器驗證)運作正常,而這導致SSD認為除備用區域以外的所有塊都在使用中,從而顯著降低效能。  另一方面,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卷的驅動器。  截至2012年8月,英特爾確認,使用快速儲存技術(RST)11.2驅動程式的7系列晶片組支援微軟Windows 7中的RAID 0的TRIM。雖然英特爾沒有確認支援6系列晶片組,RAID 0捲上的TRIM已展示為在Z68、P67和X79晶片組上可用,通過由硬體發燒友修改的RAID選項ROM。據推測,缺乏對6系列晶片組的官方支援是由於驗證成本或企圖鼓勵消費者升級,而不是出於技術原因。  在使用X79晶片組的主機板上需要修改選項ROM的例外是製造商新增了ROM開關;這需要RST和RST-E ROM存在於BIOS/UEFI內。這允許使用RST ROM而不是RST-E ROM,從而允許TRIM工作。英特爾指出,使用與ROM版本相同的驅動程式可以實現最佳效能。例如,如果BIOS/UEFI具有11.0.0.0m選項ROM,則應使用11.x版本的驅動程式。

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

  

  TRIM命令規範已被標準化為AT Attachment介面標準的一部分,由國際資訊科技標準委員會(INCITS)的技術委員會T13所領導。 TRIM根據DATA SET MANAGEMENT(資料集管理)命令(操作碼06h)實現,ACS-2規範草案。ATA標準被並行(IDE、PATA)和串列埠(SATA)ATA硬體所支援。  原版ATA TRIM命令的缺點是它被定義為不可排隊命令,因此不能輕鬆地與正常的、排隊的讀和寫操作混合。SATA 3.1引入了一個排隊的TRIM命令來糾正這一點。  ATA IDENTIFY DEVICE命令返回的SATA Words 69和169定義了不同型別的TRIM。 在SATA字105中有額外資訊,描述驅動器可以在每個資料集管理命令(DATA SET MANAGEMENT)支援最多多少個512位元組的資料塊。通常此值預設為8(或4kB),但許多驅動器將其減少到1,以滿足微軟Windows硬體要求對TRIM的部分——該命令完成時間不應超過20 ms或者8 ms × (LBA範圍項的數量),且兩者中的較大者應始終小於600 ms。  各LBA範圍被稱為一個LBA範圍條目,並由八個位元組表示。 LBA由LBA範圍條目的前6個位元組表示,範圍長度是由剩下兩個位元組表示的一個從零開始的計數器。如果兩個位元組組成的範圍長度為零,那麼LBA範圍條目應視作填充而丟棄。這意味著以512位元組為TRIM塊範圍支援的裝置,該最大值為64個32 MB,也就是2 GB。如果裝置在SATA字105處設為8,則它應該能在單個TRIM(資料集管理)命令中修整16GB。

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

  多媒體記憶卡和SD ERASE(CMD38)命令提供了與ATA TRIM命令類似的功能,但它要求擦除的塊用0或1重寫。eMMC 4.5進一步定義了一個“discard”(丟棄)子操作,從而更緊密的配合ATA TRIM,因為丟棄的塊的內容可以被認為是不確定的(即“不在乎”的)。  這些裝置已被列入Linux核心中libata-core.c的黑名單,從而強制傳送非排隊的TRIM命令到這些裝置,而不是排隊的TRIM命令: 此檔案也已將SuperSSpeed S238列入常規TRIM的黑名單,因為發出TRIM會導致錯誤的塊丟失資料。

  libata-core.c還有一個列出子系統維護者已確認正確實現DRAT和RZAT標誌(flags)的SSD,這不同於許多忽略它們的驅動器。白名單中的裝置如下:
trim命令(ATA命令集中稱為TRIM,SCSI命令集中稱為UNMAP),它使作業系統能通知固態硬碟(SSD)哪些資料塊已不再考慮使用,可以被內部擦除。