動かざることバグの如し

近づきたいよ 君の理想に

Ubuntuで起動時のSSD trimを無効化する

環境

やりたいこと

とある件で systemd-analyze blame コマンドで起動時の各サービス実行時間見てたら fstrim.service も長かった。

❯ sudo systemd-analyze blame|head
1min 20.745s fstrim.service

SSDのトリムのサービスらしい。SSDのトリムについては以下

xtech.nikkei.com

どうもこれが定期実行だけではなく起動時にも実行されてしまっているらしい。なんで???

確認してみる。実行頻度は確かに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

これでよし

参考リンク