環境
- Ubuntu 24.04
やりたいこと
とある件で systemd-analyze blame コマンドで起動時の各サービス実行時間見てたら fstrim.service も長かった。
❯ sudo systemd-analyze blame|head 1min 20.745s fstrim.service
SSDのトリムのサービスらしい。SSDのトリムについては以下
どうもこれが定期実行だけではなく起動時にも実行されてしまっているらしい。なんで???
確認してみる。実行頻度は確かに1週間に1回で問題なさそうだが、
❯ systemctl cat fstrim.timer # /usr/lib/systemd/system/fstrim.timer [Unit] Description=Discard unused filesystem blocks once a week Documentation=man:fstrim ConditionVirtualization=!container ConditionPathExists=!/etc/initrd-release [Timer] OnCalendar=weekly AccuracySec=1h Persistent=true RandomizedDelaySec=100min [Install] WantedBy=timers.target
Persistent=true
となっている。systemd で単に weekly と書くと、通常は 月曜日の午前0時0分 を指す。 もし月曜日の夜中にパソコンの電源を切っていて、実行タイミングを逃してしまったとしても、「次回起動した時にすぐに実行する」 となってしまう。いやそこまで必須じゃない。。。
ということで起動時必須を無効化したい。
設定方法
sudo systemctl edit fstrim.timer
今回はタイマーの設定なので daemon-reload は不要。
確認
❯ systemctl show fstrim.timer -p Persistent Persistent=no
❯ systemctl cat fstrim.timer # /usr/lib/systemd/system/fstrim.timer [Unit] Description=Discard unused filesystem blocks once a week Documentation=man:fstrim ConditionVirtualization=!container ConditionPathExists=!/etc/initrd-release [Timer] OnCalendar=weekly AccuracySec=1h Persistent=true RandomizedDelaySec=100min [Install] WantedBy=timers.target # /etc/systemd/system/fstrim.timer.d/override.conf [Timer] Persistent=false
これでよし