25
Ubuntu 14.04 LTS trims SSD but only Intel & Samsung branded ones
Posted in Linux on April 25th, 2014 by NicolasIt is with great happyness that I learned Ubuntu 14.04 was now trimming SSD by default. Wondering how it was done, I’ve started digging to find out how it was done.
The choice of the Ubuntu devs has been to go with a weekly cron job calling /sbin/fstrim-all, a bash script.
I wanted to trim right away and not wait for the next cron deadline so in a terminal I went ahead and ran a
sudo fstrim-all
To my great surprise, the script ran almost instantly, weird when you know a trim usually lasts a few minutes.
So I digged out my favorite text editor and read ahead. An extract follows:
HDPARM="`hdparm -I $REALDEV`" 2>/dev/null || continue
if [ -z "$NO_MODEL_CHECK" ]; then
if ! contains "$HDPARM" "Intel" && \
! contains "$HDPARM" "INTEL" && \
! contains "$HDPARM" "Samsung" && \
! contains "$HDPARM" "SAMSUNG" && \
! contains "$HDPARM" "OCZ" && \
! contains "$HDPARM" "SanDisk" && \
! contains "$HDPARM" "Patriot"; then
#echo "device $DEV is not a drive that is known-safe for trimming"
continue
fi
fi
So I rewinded a bit and read this “explanation” at the top of the file.
# As long as there are bugs like https://launchpad.net/bugs/1259829 we only run
# fstrim on Intel and Samsung drives; with --no-model-check it will run on all
# drives instead.
if [ "$1" = "--no-model-check" ]; then
NO_MODEL_CHECK=1
fi
So, what is happening is simple, either you have an Intel, a Samsung, a SanDisk, a Patriot or an OCZ SSD in which case the ext3, ext4, xfs and btrfs filesystems on the drive will be trimmed or you have another brand of SSD and Ubuntu wont trim it for you “yet”.
You can force the trim of course if you edit /etc/cron.weekly/fstrim and remplace the following
exec fstrim-all
Adding the –no-model-check flag to it:
exec fstrim-all --no-model-check
As most of the issues preventing generalized trimming happen under high I/O, my recommendation however is to run the trimming at a time you decide to do it (i.e. when you leave the machine idle for a while).