Solid State drives provide a pretty substantial performance boost over traditional hard drive technology, but they have some limitations that require some additional planning. There are basically two big things to do, enable discard/trim support in the filesystem, and limit write operations to the SSD. You want to enable discard to deal with underlying drive specific performance degradation that will happen over time. You want to limit writes to the disk to forestall the impending cell death that awaits any SSD device. Without further ado, lets get to the tuning tips.
1. Enable discard: in /etc/fstab, append ‘discard’ as a mount option.
(NOTE: Make sure your disk supports trim. The following command should return a result telling you trim is supported: hdparm -I /dev/yourdisk | grep -i trim)
sample fstab entry: /dev/sda2 / ext4 defaults,discard 1 1
2. Move /tmp to ram. This depends on how much ram you have and how much /tmp space you use, but it really helps to limit writes to the SSD
sample fstab entry: none /tmp tmpfs defaults 0 0
3. Change the mount options for your ext4 filesystem. Again, we’re looking to limit writes here. These options are very helpful, but assume that you’re using some form of battery backup (UPS, laptop usage, etc). Specifically we’re looking at noatime, data, and commit options.
- change data from the default of ordered to writeback. This reduces the journal data to meta-data only, thus limiting writes.
- change the commit value from the default of 5 seconds to 10, or 15. This gets you a 2 to 3x write savings, though you risk losing a bit more data if you lose power.
- If you don’t need access time records (mtime and ctime should be enough for most folks) disabling atime will also limit write operations.
sample fstab entry: /dev/sda2 / ext4 defaults,discard,data=writeback,noatime,commit=15 1 1
4. Lastly, you might want to consider changing the scheduler to noop, since SSD performance will change the system dynamic. You’ll likely want to benchmark this to see if it makes a difference for you. To do this, simply add ‘elevator=noop’ as a kernel option in /etc/grub.conf
This setup will provide a decent base for a laptop or workstation using SSD storage drives. Enjoy!