服务公告

服务公告 > 技术教程 > 用 fstrim 维护 SSD:TRIM 的意义

用 fstrim 维护 SSD:TRIM 的意义

发布时间:2025-12-27 14:16
## 概念 固态盘的写入单位是页,擦除单位是块,一个块必须先擦除才能写入新数据。文件系统删除文件时只是把块标记为可复用,并不会通知固态盘;盘内的主控不知道哪些块已经无效,垃圾回收只能靠猜测搬移,写入放大随之上升,新数据要写入时常常还得先做一次擦除。TRIM 指令就是文件系统与固态盘之间的这条通知通道:把无效块的信息告知主控,让它在后台提前擦除回收,写入路径保持顺畅。 ## 原理:为什么长期不 trim 会变慢 不做 TRIM 的固态盘,用得越久,主控眼里的有效数据越多,可用的空块越少。垃圾回收被迫在满盘状态下搬移数据,每次写入都可能触发一次额外的读擦写循环,表现为持续写入一段时间后速度断崖式下降,大规模拷贝时尤其明显。定期执行 fstrim,等于周期性地把真实空闲空间同步给主控,垃圾回收有明确的作业面,写入性能长期保持在正常区间。虚拟化与云环境里这层关系还多一道转发,实体盘的 TRIM 能力要经虚拟化层透传才有效。 ## 最小实操 手动对所有挂载点执行一次。 ``` fstrim -av ``` 常规做法是交给系统定时任务,每周自动跑一次,主流发行版的 util-linux 包自带 fstrim.timer,确认它处于启用状态即可。 ``` systemctl status fstrim.timer ``` ## 常见错误 一是把 fstrim 当成日常高频操作,一天跑几次毫无收益,TRIM 本身也有寿命开销,按周足够;二是在阵列或加密卷上直接执行,未确认设备栈是否透传 TRIM,命令成功但底层没生效;三是把写入变慢一律归因于缺 TRIM,盘快满、缓存策略变化同样会拖慢写入,先用持续写入测试复现,再对症处理。顺云云服务器的系统盘与数据盘按周自动 trim 即可,控制台的磁盘性能监控有异常波动时,再回来核对这一项。