Trim Support in LinuxModern Linux distributions support the TRIM and DEALLOCATE commands for SATA SSDs and NVMe SSDs respectively, for simplicity we will refer to these two commands as Trim in this article.These commands are filesystem dependent and supported on the following file systems: File System Trim Support Btrfs Yes Ext4 Yes XFS Yes JFX Yes EXT3 No NTFS-3G Yes (Periodic Only) VFAT Yes When a file is no longer needed by the file system, the TRIM command can be sent to the SSD to help the built-in garbage collection utility determine which memory locations need to be maintained and which can be ignored. Maintaining unnecessary memory locations takes time and can slow down read and write access to the drive.Most current Linux distributions use fstrim.service and fstrim.timer to coordinate periodic SSD maintenance with TRIM. However USB connected SSDs do not automatically have TRIM enabled, instead requiring some manual configuration. The TRIM command can be issued manually using the fstrim command, for example the following code will run Trim on compatible file system mounted to /media/user/USBSTORAGE. Please note, all code examples in this document require root permissions unless otherwise noted.fstrim -v /media/user/USBSTORAGEUbuntu 20.04 LTS automatically mounts USB storage to /media/{username}/{storage volume name} while Fedora 34 automatically mounts USB storage to /run/media/{username}/{storage volume name}. The fstrim command can be run using these automatic mount points after enabling Trim for the USB storage drive.Verify Trim Compatibility on the External SSDsOur first step is to check for Trim support on the SSD, this requires installing the sg3 utilities package:Ubuntu 20.04 LTSsudo apt install sg-utilsFedora 32sudo dnf install sg_utilsNext we can run the sg_vpd command to check for unmap support, in the following command /dev/sdX is the path to the block device for the USB connected SSD (this can be found by checking the `dmesg` output after connecting the drive or with the `lsblk` command)sudo sg_vpd -a /dev/sdX | grep "Unmap"If the command returns the following line then we can enable Trim on this device.Unmap command supported (LBPU): 1Enable Trim on the External SSD: TemporarilyWe can enable Trim on the SSD until the drive is either disconnected, or the computer is restarted with this command, with sdX again being the block device for the USB connected SSD:echo unmap | sudo tee /sys/block/sdX/device/scsi_disk/*/provisioning_modeTo enable Trim on Plugable's SSD docks, adapters, and enclosures on every connectionFor our USBC-SATA-V: USB-C Vertical Hard Drive DockOur USBC-SATA-V USB-C Vertical Hard Drive Dock supports both TRIM and SMART for docked SATA SSDs.Run the following command to enable TRIM when the enclosure is connected to the computer:echo 'ACTION=="add|change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="1153", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"' | sudo tee --append /etc/udev/rules.d/10-uas-discard.rulesUSBC-SATA24: 2.5-inch SATA SSD TRIMOur USBC-SATA24 USB-C 2.5-inch SSD and HDD Adapter supports both TRIM and SMART for connected SATA SSDs.Run the following command to enable TRIM when the enclosure is connected to the computer:echo 'ACTION=="add|change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="55aa", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"' | sudo tee --append /etc/udev/rules.d/10-uas-discard.rulesUSBC-NVME: USBC-NVME EnclsoureOur USBC-NVME Tool Free M.2 NVMe SSD Enclosure supports both TRIM and SMART for installed NVMe SSDs.Run the following command to enable TRIM when the enclosure is connected to the computer:echo 'ACTION=="add|change", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="9210", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"' | sudo tee --append /etc/udev/rules.d/10-uas-discard.rules