During the installation process, we encrypted the entire SSD and then we set the LVM inside the encrypted disk. Then we set the LVM to hold the different partitions /, /home, and etc.
We now have a SSD that looks like the following image.
To trim the SSD properly we’ll need to enable it on all three layers - LUKS, LVM, and filesystem.
Install the util-linux package and enable the fstrim.timer service. This service will activate the fstrim.service when necessary.
sudo pacman -S util-linux
sudo systemctl enable fstrim.timer
# optional step, if you want to run fstrim.service
sudo systemctl start fstrim.service
The second step is to configure the LVM layer. Edit the /etc/lvm/lvm.conf by changing the issue_discards from 0 to 1.
The last step is to configure the root filesystem by adding the right kernel parameter to the bootloader configuration.
Edit the /boot/loader/entries/<your-entry>.conf file and append :allow-discards at the end of the cryptdevice option and append rd.luks.options=discard at the end of the options line.
Your conf file should look like the following:
title Arch Linux Encrypted via UUID
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=<DEV_UUID>:vgroup00:allow-discards root=UUID=<UUID> quite rw rd.luks.options=discard
Note: DEV_UUID is the UUID of the device containing the LUKS partition. LVM_VOL_UUID is the UUID of the LVM root volume. You can get those UUIDs using the command blkid.
For more information, please refer to the Arch Linux wiki