固态硬盘为何需要 TRIM
要了解 TRIM 为何如此重要,我们首先需要知道固态硬盘与固态硬盘的区别。 传统硬盘驱动器(HDD).这两种存储类型处理数据删除和覆盖的方式完全不同,而这种不匹配正是创建 TRIM 的原因。
固态硬盘与硬盘:关键区别
硬盘使用旋转的磁盘来存储数据。删除硬盘上的文件时,操作系统只是删除该文件的 "地址"。实际数据会保留在磁盘上,直到被新数据覆盖。为此,你不需要任何特殊命令。硬盘可以直接覆盖旧数据。固态硬盘则不同。它们使用 NAND 闪存 不能直接覆盖数据。在写入新数据之前,固态硬盘必须先擦除一大块内存(称为 "块"),而块要比固态硬盘写入的小块数据(称为 "页")大得多。这意味着如果你的固态硬盘不知道哪些数据是无用的,它就必须做额外的工作来释放空间,这就会减慢它的运行速度,加速它的损耗。
没有 TRIM 的问题
如果禁用 TRIM,固态硬盘控制器就无法区分有效数据(仍在使用的文件)和无效数据(已删除的文件)。当固态硬盘需要为新数据释放空间时,它会运行一个名为 垃圾收集 (GC)-但如果没有 TRIM,GC 就必须在擦除旧块之前,将块中的所有有效数据复制到新位置。这种额外的复制称为 写入放大(WA)这是个大问题。写入放大意味着固态硬盘写入的物理数据比操作系统要求的要多。例如,如果 WA 为 3,固态硬盘写入的数据就是实际需要的三倍。随着时间的推移,这会降低写入速度,加速 NAND 闪存的磨损,缩短固态硬盘的使用寿命。TRIM 可以解决这个问题,它为固态硬盘提供所需的信息,从而跳过额外的工作。
TRIM 如何工作
TRIM 不会立即删除数据,它只是让你的固态硬盘知道哪些数据不再需要,这样固态硬盘就能在闲置时有效清理数据。以下是其工作原理的逐步分解:
- 首先,删除文件或清空回收站。操作系统会在文件系统中将文件的位置(称为逻辑块地址,或 LBA)标记为 "逻辑删除"。
- 接下来,操作系统会向固态硬盘发送 TRIM 命令,列出现在有无效数据的所有 LBA。固态硬盘控制器会更新其内部映射,将这些 LBA 标记为无用数据,但不会进行物理擦除。
- 当电脑处于闲置状态时,固态硬盘的垃圾回收程序就会启动。由于使用了 TRIM 命令,它不会先复制有效数据,而是擦除只包含无效数据的整个区块。这些被擦除的区块成为可用空间,因此固态硬盘可以直接写入新数据,无需任何额外步骤。这样既能保持固态硬盘的速度,又能减少磨损。
需要记住的关键一点是TRIM 是 异步.它不会降低电脑运行速度,因为实际的擦除操作是在你不使用硬盘时在后台进行的。你永远不会注意到它在工作,但如果它不工作,你就会注意到。
TRIM vs. 垃圾回收 vs. 写入放大
这三个术语密切相关,了解它们如何协同工作将有助于你理解 TRIM 为何如此重要。下面是一个简单的细分,让您一目了然:
| 学期 | 它的作用 | 在 SSD 健康中的作用 |
|---|---|---|
| 调整 | 操作系统向固态硬盘发出的命令,用于识别无效数据位置 | 为垃圾回收提供 "智能",以高效清理垃圾 |
| 垃圾收集 (GC) | 固态硬盘清除未使用区块的内部程序 | 使用 TRIM 数据擦除无有效数据的数据块 |
| 写入放大(WA) | 物理写入与逻辑写入的比例(操作系统的要求) | TRIM 可将 WA 值保持在较低水平(1.0-1.5 最理想),从而保持速度和使用寿命 |
如果没有 TRIM,WA 值可能会飙升到 2-5 或更高,从而导致固态硬盘速度变慢、寿命变短。有了 TRIM,WA 保持在 1.0 附近,这是固态硬盘性能和耐用性的甜蜜点。
TRIM 运行所需的设备
只有当存储系统的所有三个部分都支持 TRIM 时,TRIM 才能发挥作用。你不需要额外购买任何东西,但最好确认这些组件是否兼容:
| 组件 | 最低要求 |
|---|---|
| 固态硬盘 | 1. SATA 固态硬盘 必须支持 ATA8-ACS2 固件标准(所有现代 SATA 固态硬盘都支持)。 2. NVMe 固态硬盘 必须支持 "Deallocate "或 "Unmap"(所有现代 NVMe 硬盘均符合条件)。 |
| 操作系统 | Windows 7 或更高版本、Linux 内核 2.6.28 或更高版本、macOS 10.6.8 或更高版本(SATA)/ 10.13 或更高版本(NVMe)。 |
| 驱动程序/接口 | 1. SATA 固态硬盘 必须使用 AHCI 模式(IDE 模式禁用 TRIM)。 2. NVMe 固态硬盘 使用现代操作系统随附的本地 NVMe 驱动程序。 |
如果使用 RAID(为提高速度或冗余而组合多个硬盘的设置),则对 TRIM 的支持有限。在 Linux 上,Device Mapper RAID 支持 RAID 0、1 和 10 的 TRIM(但不支持 5 或 6 等奇偶校验 RAID)。在 Windows 上,大多数硬件 RAID 控制器都不支持 TRIM,只有 Microsoft 的 Storage Spaces Direct(用于 Windows Server 2019 或更高版本中的 NVMe 驱动器)支持 TRIM。
自动与手动调漆
TRIM 有两种工作模式,都是为了保持固态硬盘的健康。你不需要做太多,但了解它们的区别很有好处:
自动调整 是所有现代操作系统的默认设置。删除文件时,操作系统会立即向固态硬盘发送 TRIM 命令。它无需手动操作,非常适合日常使用,你不需要做任何事情就能让它发挥作用。
手动调整 在自动 TRIM 被禁用(很少见)或你发现固态硬盘性能变慢时使用。你可以在电脑闲置时手动触发或设置计划任务(如每周清理)。这是一种快速 "清理 "无效数据并恢复性能的方法。
如何检查并启用 TRIM
现代系统默认情况下会为兼容的固态硬盘启用 TRIM,但在重装系统、硬件升级或遇到运行速度变慢时,还是值得验证一下。下面介绍如何在三种最常见的操作系统上检查并启用 TRIM:
视窗 10/11
- 检查 TRIM 状态: 打开终端(以管理员身份)并键入
fsutil 行为查询 DisableDeleteNotify.如果返回 "0",则表示 TRIM 已启用(正常)。如果返回 "1",则禁用 TRIM。 - 启用 TRIM: 类型
fsutil 行为设置 DisableDeleteNotify 0在终端中(以管理员身份)重新启动计算机。 - 运行手动 TRIM: 进入 "设置" → "系统" → "存储" → "高级存储设置" → "优化驱动器"。选择固态硬盘并点击 "优化"--这将同时运行 TRIM 和垃圾回收。
利纳克斯
- 检查 TRIM 支持: 打开终端并键入
lsblk --discard.如果 "DISC-MAX "和 "DISC-GRAN "的值不为零,说明你的固态硬盘支持 TRIM。 - 要启用自动 TRIM: 大多数 Linux 发行版使用
fstrim.timer每周运行一次。输入systemctl status fstrim.timer. - 运行手动 TRIM: 类型
sudo fstrim /(如果不是主硬盘,请将"/"替换为固态硬盘的挂载点)。
MacOS
- 检查 TRIM 状态: 打开终端并键入
system_profiler SPSerialATADataType | grep "TRIM 支持"。(适用于 SATA 固态硬盘)或system_profiler SPStorageDataType | grep "TRIM"(适用于 NVMe SSD)。 - 启用 TRIM(非 Apple SSD): 类型
sudo trimforce enable在终端中(你可能需要暂时禁用系统完整性保护,或 SIP,这样才能正常工作)。苹果固态硬盘默认已启用 TRIM。
应牢记的重要限制
TRIM 功能强大,但也有一些限制,你应该注意避免意外:
- TRIM 后数据无法恢复.硬盘删除的数据有时可以通过软件恢复,而 TRIM 则不同,它会告诉固态硬盘永久删除无效数据。一旦 TRIM 运行,这些数据就会永远消失,因此删除文件时一定要小心!
- 格式问题.快速格式化会向固态硬盘发送 TRIM 命令,这是好事。完全格式化会覆盖所有数据,从而暂时禁用 TRIM 的好处(但一旦开始删除文件,它就会重新发挥作用)。
- 非常旧的固态硬盘(2010 年以前)可能不支持 TRIM.如果您使用的是较旧的 SATA 固态硬盘,请查看制造商的规格说明以确认。
- 使用 TRIM,NVMe 固态硬盘更高效 (或 Deallocate)。它们的开销更低,并行性更好,这在快速 PCIe 4.0/5.0 NVMe 硬盘上尤为明显。
TRIM 并非 "锦上添花 "的功能,而是保持固态硬盘快速耐用的基本要素。通过关闭操作系统和固态硬盘之间的通信间隙,TRIM 可以消除不必要的工作,减少磨损,并确保固态硬盘多年保持良好性能。对于大多数用户来说,好消息是你什么都不用做--TRIM 默认已启用。但是,如果你的动手能力较强,在系统更改后验证 TRIM 状态,或在需要时手动运行 TRIM,都能帮助你的固态硬盘保持最佳状态。





