多数 SSD 都支持通过Trim指令以保持长期性能和损耗水平

判断是否支持Trim

通过运行命令lsblk -D, 检查输出项 DISC-GRANDISC-MAX 的值, 非零表示磁盘支持Trim, 示例如下

~ # vi bin/trim.sh
-----------------------
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0      512B       2G         0
├─sda1        0      512B       2G         0
├─sda2        0      512B       2G         0
└─sda3        0      512B       2G         0
sr0           0        0B       0B         0

改用cron定时trim

发现discard挂载的参数触发trim太频繁,SATA 3.1 之前, TRIM是同步操作容易导致系统卡顿。 遂改为用脚本调用 fstrim 配合 cron 定时触发

~ # vi bin/trim.sh
-----------------------
#! /bin/bash
#用fstrim对挂载点进行trim操作,并记录日期和结果

LOGFILE=/var/log/trim.log
TIME=$(date +%F)
OP=$(fstrim -v /)
echo ${TIME} : ${OP} >> $LOGFILE
-----------------------

除了从/etc/fstab删除discard选项,并把上面的脚本放入/etc/cron.daily
或建立符号链接,fedora的anacron会自动比对timestamp并执行,不用担心关机无法执行

See also

ArchWiki:Solid State Drives#TRIM