An SSD (Solid State Drive) will really speed up your computer. It will significantly reduce the boot time and increase the response of most software applications.
Every write action to a SSD will result in the undesirable phenomenon known as write amplification. This may shorten the life of the SSD.
Ubuntu 16.04 seems to be ready for SSD drives. Here are some steps you should take to extend the life of your SSD drive. The keypoint is to reduce write actions.
- add noatime to fstab
- run
fstrim
periodically (default on Ubuntu) - reduce the use of swap (optionally in systems with enough RAM)
- avoid hibernation (“disabled” on Ubuntu)
1. Add noatime to fstab
Every time you access a file, Linux makes a write action with access date and time. This is known as “access time stamp”. With noatime option you disable the “access time stamp”.
You must add the option noatime in fstab. fstab (File System Table) describes the disk partitions and their parameters. This file is read at boot time, so Linux mounts partitions automatically.
In my workstation I have an INTEL SSD 240GB. The full model name is “SSD INTEL 540S SERIES SSDSC2KW240H6X1 240GB 2.5” SATA3 TLC SINGLE PACK (S.M.A.R.T. enabled)“. Here are the partitions I have created:
First things first. Create a backup of your fstab
sudo cp /etc/fstab /etc/fstab.bak
Then, edit fstab using your favorite text editor (nano in my case)
sudo nano /etc/fstab
Add noatime to partitions definition. I added noatime option to root (/) and data partition:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=6e302c82-a375-4b8d-ad18-c25abf8950ad / ext4 noatime,errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
#UUID=d8c5f04a-1da8-4120-8db8-be63f55fdcf3 /boot ext4 defaults 0 2
# /data was on /dev/sda4 during installation
UUID=d3ea7a13-4bba-4256-9561-bc06cae90113 /data ext4 defaults,noatime 0 2
# swap was on /dev/sda3 during installation
UUID=acf361da-b633-48b7-8ef5-8b482f7b3983 none swap sw 0 0
UUID=d8c5f04a-1da8-4120-8db8-be63f55fdcf3 /boot ext4 defaults 0 2
Reboot your system. Use the top desktop menu or command line:
sudo systemctl reboot
2. Run fstrim periodically
According to Linux man pages:
fstrim is used on a mounted filesystem to discard (or “trim”) blocks which are not in use by the filesystem. This is useful for solid-state drives (SSDs) and thinly-provisioned storage. By default, fstrim will discard all unused blocks in the filesystem. Options may be used to modify this behavior based on range or size, as explained below.
Before use trim
, ensure your SSD supports it.
Run:
lsblk -D
here is the result in my case
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda 0 512B 2G 0
ââsda1 0 512B 2G 0
ââsda2 0 512B 2G 0
ââsda3 0 512B 2G 0
ââsda4 0 512B 2G 0
sr0 0 0B 0B 0
Non-zero values for DISC-GRAN and DISC-MAX indicate TRIM support.
Ubuntu has already created a weekly cron job /etc/cron.weekly/fstrim. If not, create it by yourself:
sudo nano /etc/cron.weekly/fstrim
add
#!/bin/sh
# trim all mounted file systems which support it
/sbin/fstrim --all || true
3. Reduce the use of swap
Modern systems have enough RAM (4GB or more), so they use swap memory very rarely. In this case, you have nothing to do. Otherwise:
Using your favorite text editor (nano in my case)
sudo nano /etc/sysctl.d/ssd.conf
add
# Reduce swap using
vm.swappiness=1
Reboot your system. Use the top desktop menu or command line:
sudo systemctl reboot
4. Avoid hibernation
In Ubuntu, hibernation does not exist in shutdown options. However, avoid hibernation as it causes a large number of write actions on the disc. So, in the long term, it may affect your SSD speed.
Entrepreneur | Full-stack developer | Founder of MediSign Ltd. I have over 15 years of professional experience designing and developing web applications. I am also very experienced in managing (web) projects.