The real reason Ubuntu doesn’t TRIM SSDs by default is because the Linux kernel’s implementation of TRIM is slow and results in poor performance in normal use. Windows sends a TRIM command each time it deletes a file, telling the drive to immediately delete the bits of the file. Linux supports this when file systems are mounted with the “discard” option. However, Debian, Ubuntu — and other distributions — don’t do this by default for performance reasons. Continuous TRIM is not the most preferred way to issue TRIM commands in Linux. Continuous TRIM is enabled by the discard option for a mount in /etc/fstab: enables continuous TRIM in device operations:
/dev/sda1 / ext4 defaults,discard 0 1
Copy the available templates to the systemctl directory and enable and start them.
# cp /usr/lib/systemd/system/fstrim.{service,timer} /etc/systemd/system
# systemctl enable fstrim.timer
# systemctl start fstrim.timer
In case these templates are not available, see the contents below:
# cat fstrim.service [Unit] Description=Discard unused blocks on filesystems from /etc/fstab Documentation=man:fstrim(8) [Service] Type=oneshot ExecStart=/sbin/fstrim -Av
# cat fstrim.timer [Unit] Description=Discard unused blocks once a week Documentation=man:fstrim [Timer] OnCalendar=weekly AccuracySec=1h Persistent=true [Install] WantedBy=timers.target
Check the status of the .timer with:
# systemctl list-timers
The output is quite useful:
EXT LEFT LAST PASSED UNIT ACTIVATES Sun 2017-12-10 00:11:06 CET 6h left Sat 2017-12-09 14:48:34 CET 2h 56min ago apt-daily.timer apt-daily.service Sun 2017-12-10 06:11:27 CET 12h left Sat 2017-12-09 06:47:46 CET 10h ago apt-daily-upgrade.timer apt-daily-upgrade.servi Sun 2017-12-10 16:28:34 CET 22h left Sat 2017-12-09 16:28:34 CET 1h 16min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean. Mon 2017-12-11 00:00:00 CET 1 day 6h left n/a n/a fstrim.timer fstrim.service