fstrim 是什么
SSD 与支持回收的云盘在删除文件后,闪存空间不会立即归还给设备;fstrim 负责通知设备回收这些已删除的块,从而维持写入性能与使用寿命。多数发行版提供 fstrim.timer 周期执行。对支持 discard 的云盘与 NVMe 设备来说,它是标准的维护动作。
基本信息
| 用途 | 让 SSD 与云盘回收已删除的数据块 |
|---|---|
| 语法 | fstrim -av 或 fstrim -v 挂载点 |
| 自动化 | systemd 的 fstrim.timer 通常按周执行 |
| 相关机制 | 挂载选项 discard 表示实时回收 |
典型使用场景
- 云主机 SSD 长期高负载写入后性能下降,做一次回收
- 批量删除文件后确认空间是否归还
- 核对 fstrim.timer 是否正常运行
- 评估实时 discard 与周期回收之间的取舍
- 排查虚拟化平台不支持回收导致的环境限制
- 把容量释放与性能维护纳入常规巡检
常用示例
常用示例
sudo fstrim -av # 对所有支持的文件系统执行回收
sudo fstrim -v / # 只处理根文件系统
systemctl status fstrim.timer --no-pager | head -n 5 # 检查定时器
systemctl list-timers fstrim.timer --no-pager # 查看下次执行时间
findmnt -o TARGET,SOURCE,FSTYPE | head # 确认挂载与文件系统
lsblk -d -o NAME,ROTA,DISC-GRAN | head # 判断设备类型参数与现象
| 项 | 含义 | 说明 |
|---|---|---|
| -a | 对所有合适文件系统执行 | 最常用 |
| -v | 输出详细结果 | 显示回收的字节数 |
| 挂载点 | 只处理指定文件系统 | 可按分区分别执行 |
| discard 挂载选项 | 实时回收 | 有写入抖动,需要权衡 |
| 不支持提示 | 平台未透传回收能力 | 属环境限制,不是故障 |
挂载时启用 discard 属于实时回收,空间归还及时但会带来写入抖动;由 fstrim.timer 周期执行是更常见的折中方案。
大容量盘执行回收时可能出现数秒的卡顿:避开业务高峰执行,必要时按挂载点分批处理。
虚拟化平台不透传回收指令时,fstrim 会报不支持,这属于环境限制而非设备故障,排查方向应转向平台侧配置。
判断设备是否具备回收能力,可以看 lsblk 报告的单次回收粒度;粒度为 0 表示该设备不参与回收,配置再多也不会有效果。