How is Trim enabled?

66,324

Claiming that 14.04 will enable trim by default is only 1/2 the story.

Will the default options for TRIM be automatically compatible with the LVM and encryption layers of the standard ubuntu-system encryption?

LVM is a container and is not a filesystem so this is not an issue.


Articles worth reading:

Blueprint

SSDs need to be TRIMed, i. e. they need to be told which blocks the OS considers as "unused" (i. e. from deleted files). Withouth this, the write speed on SSDs becomes unbearably slow over time.

http://wiki.ubuntuusers.de/SSD/TRIM (German) explains the details, but this kind of housekeeping really should happen by default. There are two approaches to this, immediately marking the blocks as unused when deleting a file ("discard" mount option), or calling fstrim regularly. discard slows down deletion while a cronjob occasionally puts some potentially unexpected IO load on the machine, so this discussion is primarily about deciding which approach we want to do by default.

I (Martin Pitt) think that a cron approach is better. If we go with this we need to discuss when and how to run this:

  • Whats a reasonable interval (weekly/monthly/etc.)
  • How to detect devices/partitions which need trimming (/proc/mounts, hdparm -I, not mounted with "discard", etc.)

Conclusion from that link in German:

  • cron job on weekly basis since discard will lead to too much of a performance hit.

Only Intel and Samsung SSDs will have TRIM enabled by default in Ubuntu 14.04 because some cheap SSDs can even brick themselves when running TRIM. The contents of /etc/cron.weekly/fstrim on 14.04 beta 2:

#!/bin/sh
# call fstrim-all to trim all mounted file systems which support it
set -e

# This only runs on Intel and Samsung SSDs by default, as some SSDs with faulty
# firmware may encounter data loss problems when running fstrim under high I/O
# load (e. g.  https://launchpad.net/bugs/1259829). You can append the
# --no-model-check option here to disable the vendor check and run fstrim on
# all SSD drives.
exec fstrim-all

This doesn't mean TRIM should only be used with Samsung and Intel SSDs, but to avoid running into issues, this is the default option for now. Note that if you already know your SSD can handle TRIM, you can bypass the vendor check by editing the /etc/cron.weekly/fstrim file above and adding the --no-model-check option to the last line:

exec fstrim-all --no-model-check

Alternatively, you can schedule TRIM manually a few other ways. How to do it manual.

Source: webupd8

  • BUT not all SSD's are supported. Mine is not by the way (just checked)
  • LSI.com has a list of compatible SSDs in this PDF.

The method to do trim is with this command:

sudo fstrim -v /

And this is also how Ubuntu does this: by creating a cronjob that does this on a weekly basis.

Executed from my own system:

rinzwind@schijfwereld:~$ sudo fstrim -v /
[sudo] password for rinzwind: 
/: 93283299328 bytes were trimmed
rinzwind@schijfwereld:~$ 

Takes a bit of time and it does not show any progress until done.

Share:
66,324

Related videos on Youtube

Maxim Brazhnikov
Author by

Maxim Brazhnikov

Updated on September 18, 2022

Comments

  • Maxim Brazhnikov
    Maxim Brazhnikov almost 2 years

    I have heard, that Ubuntu 14.04 will have Trim enabled by default. How will this be done? By adding a discards option to the ext4 mount options or by running a cron-job?

    Will the default options for Trim be automatically compatible with the LVM and encryption layers of the standard Ubuntu-system encryption?

    It would be great to see some details about this.

    • Admin
      Admin over 10 years
      cron job on weekly basis , and that would be > fstrim /
  • amc
    amc over 10 years
    i'll add to your answer
  • Rinzwind
    Rinzwind over 10 years
    @amc thanks. it went a bit weird since we both where editing _O-
  • amc
    amc over 10 years
    I'm done editing now so feel free to add in any extra info I may have missed.
  • Maxim Brazhnikov
    Maxim Brazhnikov over 10 years
    @Rinzwind Thanks. LVM is a layer which must pass the TRIM commands. dm-crypt also needs activated TRIM support, see for example: blog.neutrino.es/2013/… According to the blueprint you linked, it seems not to be activated by default!?
  • Rinzwind
    Rinzwind about 10 years
    canonical took the very very cautious approach @student and only activate trim on ssd's they actually proved working.
  • Sergiy Kolodyazhnyy
    Sergiy Kolodyazhnyy over 8 years
    Good stuff, Rinz. This answer will be on my list of favorites. Keep up the awesome job !
  • Rinzwind
    Rinzwind over 8 years
    @Serg what do you want from me? :-)