I know that weekly TRIM is enabled by default from 14.10 onwards. Source: How to enable TRIM? But running sudo nano /etc/cron.weekly/fstrim returns an empty file. Also tail -n1 /etc/cron.weekly/fstrim says that this file does not exist.

Running lsblk -D returns non zero values for DISC-GRAN and DISC-MAX so TRIM is supported on my SSD. Is weekly TRIM actually enabled for my SSD or not?

I am using a Kingston SSD

up vote 24 down vote accepted

TRIM is enabled by default in 18.04.

It is managed via systemctl (not CRON) and is set to run weekly by default.

View fstrim.timer status:

$ systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
   Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
   Active: active (waiting) since Thu 2018-07-05 05:45:11 BST; 4h 42min ago
  Trigger: Mon 2018-07-09 00:00:00 BST; 3 days left
     Docs: man:fstrim

Start/Stop/Restart fstrim.timer:
(immediate activate/deactivate/reactivate, does not change startup status)

$ sudo systemctl [start/stop/restart] fstrim.timer

Enable/Disable fstrim.timer:
(add to/remove from startup, does not change immediate active status)

$ sudo systemctl [enable/disable] fstrim.timer

View fstrim.timer configuration:

$ systemctl cat fstrim.timer
# /lib/systemd/system/fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

View fstrim.service configuration:

$ systemctl cat fstrim.service
# /lib/systemd/system/fstrim.service
[Unit]
Description=Discard unused blocks

[Service]
Type=oneshot
ExecStart=/sbin/fstrim -av

View related systemd journal entries:

$ journalctl -u fstrim.timer
Jul 04 14:18:41 user-laptop systemd[1]: Started Discard unused blocks once a week.
Jul 04 21:59:26 user-laptop systemd[1]: Stopped Discard unused blocks once a week.
etc...

$ journalctl -u fstrim.service
Jun 25 10:59:44 user-laptop systemd[1]: Starting Discard unused blocks...
Jun 25 10:59:48 user-laptop fstrim[955]: /: 92.5 GiB (99335237632 bytes) trimmed
Jun 25 10:59:48 user-laptop systemd[1]: Started Discard unused blocks.
-- Reboot --
Jul 02 04:27:41 user-laptop systemd[1]: Starting Discard unused blocks...
Jul 02 04:27:46 user-laptop fstrim[1032]: /: 92.3 GiB (99150807040 bytes) trimmed
Jul 02 04:27:46 user-laptop systemd[1]: Started Discard unused blocks.
etc...
  • 2
    For reference, the when is controlled by /lib/systemd/system/fstrim.timer (OnCalendar=weekly) and the what by /lib/systemd/system/fstrim.service (ExecStart=/sbin/fstrim -av). – Moilleadóir Jul 5 at 8:46
  • 1
    Fine post! I suggest you change the "cat" commands by the dedicated systemctl commands: cat /lib/systemd/system/fstrim.timer -> systemctl cat fstrim.timer. In general, that command shows the version of the service that is in effect. That might be the one under /lib/systemd, but it might also be a modified version under /etc/systemd. – vanadium Jul 14 at 6:15

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.