Use a more recent kernel. Full support for TRIM was not added to the Linux kernel until version 3.7. But… since TRIM is officially supported on CentOS 6, you could assume that RH have backported all the necessary fixes for it to work properly.
Realtime discards can slow down performance, use scheduled fstrim instead.
If you don't want to configure a scheduled fstrim job, add 'discard' to mount options in /etc/fstab.
/dev/mapper/vg-lv_root / ext4 defaults,noatime,discard,commit=60 1 1
For example, configure a weekly fstrim job. Create /etc/cron.weekly/fstrim. This script will run fstrim on ext filesystems which are non removable and not rotational.
#!/bin/sh #this script will run weekly, will overwrite log. trimlog=/var/log/fstrim.log echo > $trimlog for mount in `lsblk -ro "rota,rm,fstype,mountpoint" | egrep "0 0 ext[2|3|4]" | cut -d " " -f4`; do printf "`date` - `fstrim -v $mount`\n" >>$trimlog done
Edit /etc/crypttab and add the discard option.
# <target name> <source device> <key file> <options> sda2_crypt /dev/sda2 none luks,discard
Edit /etc/lvm/lvm.conf and enable issue_discards. The “discard” options with on-disk-cryptography (like dm-crypt) have drawbacks with security/cryptography. See crypttab(5).
issue_discards = 1
Test with lsblk, DISC-GRAN and DISC-MAX should not be '0B' for SSD backed partitons and filesystems.
$ lsblk -D NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO sda 0 512B 2G 0 ├─sda1 0 512B 2G 0 └─sda2 0 512B 2G 0 ├─vg-lv_swap (dm-0) 0 512B 2G 0 ├─vg-lv_root (dm-1) 0 512B 2G 0 ├─vg-lv_var (dm-2) 0 512B 2G 0 └─vg-lv_home (dm-3) 0 512B 2G 0 sdc 0 0B 0B 0 └─sdc1 0 0B 0B 0