Skip to main content

💾 TRIM externe SSD und udev-Regel

TRIM externe SSD mit und ohne LUKS

Im Gegensatz zu meiner NVMe-SSD, die ich extern per Thunderbolt 3/4 mit einem ORICO NVMe-Gehäuse am PC nutze, unterstützen viele externe USB-Gehäuse leider nicht ohne Weiteres TRIM.

ext4 überschreibt Daten direkt, unabhängig davon, ob TRIM verfügbar ist – das hilft, die Leistung der SSD zu erhalten, selbst wenn TRIM fehlt. Ohne TRIM kann die Performance langfristig leicht sinken, da die interne Garbage Collection der SSD weniger effektiv arbeitet.

Btrfs hingegen nutzt Copy-On-Write, wodurch alte Datenblöcke ohne TRIM weiterhin belegt bleiben. Das führt langfristig zu Fragmentierung und Leistungseinbußen – daher ist in diesem Fall ext4 die bessere Wahl.


🧩 Fehlermeldung beim TRIM-Versuch

sudo fstrim -v /run/media/jo/SSD-T5-500GB
# Fehlermeldung:
# Verwerfungsvorgang wird nicht unterstützt
# oder "the discard operation is not supported"

💡 Gerät identifizieren

lsblk

Beispiel: Das Blockgerät /dev/sda entspricht deinem Mountpoint.


🧮 TRIM-Unterstützung prüfen

lsblk --discard /dev/sda

Wichtig:
DISC-GRAN (Granularität) und DISC-MAX (maximale Größe) müssen ungleich Null sein.
Wenn beide Werte 0 sind, wird TRIM nicht unterstützt.
In diesem Fall kann TRIM durch eine udev-Regel aktiviert werden.


🧰 TRIM für externe SSDs aktivieren (udev-Regel für TRIM-Passthrough)

Falls eine externe SSD wie z.B. Samsung T5, T7 oder T9 laut lsblk --discard kein TRIM unterstützt, kann das am Controller des Gehäuses liegen. Wenn der Controller UASP (USB Attached SCSI Protocol) unterstützt, lässt sich TRIM mit einer Regel aktivieren.


🔍 Gerät identifizieren

lsusb

Beispielausgabe:

Bus 002 Device 006: ID 04e8:61f5 Samsung Electronics Co., Ltd Portable SSD T5

➡️ idVendor: 04e8 | idProduct: 61f5


🧾 udev-Regel erstellen

sudo nano /etc/udev/rules.d/50-usb-ssd-trim.rules

Einfügen (pro SSD eine Zeile mit den passenden IDs) – Beispiel:

# Samsung T5 SSD 500GB (TRIM aktivieren)
ACTION=="add|change", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="61f5", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

# Samsung T9 SSD 2TB (TRIM aktivieren)
ACTION=="add|change", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="61fd", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

⚠️ Hinweis:
Die idVendor und idProduct müssen exakt mit der Ausgabe von lsusb übereinstimmen.
Falls TRIM weiterhin nicht funktioniert, unterstützt der Controller des Gehäuses möglicherweise kein TRIM.

Speichern:
Mit STRG+X, dann J und Enter bestätigen – oder mit F2 beenden und speichern.


🔁 Regeln neu laden

sudo udevadm control --reload-rules && sudo udevadm trigger

🧪 Testen

lsblk --discard
sudo fstrim -v /run/media/jo/SSD-T5-500GB

Beispielausgabe:

/run/media/jo/SSD-T5-500GB: 457,4 GiB (491104407552 Bytes) getrimmt

🔄 Nun können alle Dateisysteme getrimmt werden

sudo fstrim -av


🧠 Diagnose: TRIM- und UASP-Unterstützung prüfen

🔧 TRIM-Support der SSD prüfen

sudo pacman -S --needed hdparm
sudo hdparm -I /dev/sda | grep -i trim

Wenn keine Ausgabe erscheint, unterstützt die SSD kein TRIM.


⚡ UASP-Support prüfen

lsusb -t

Beispiel:

|__ Port 004: Dev 006, If 0, Class=Mass Storage, Driver=uas, 10000M

Driver=uasUASP aktiv
Driver=usb-storagekein UASP

TRIM erfordert UASP.
Ohne UASP werden TRIM-Befehle von vielen externen SSDs blockiert.



🔒 TRIM und LUKS-Verschlüsselung

Eine verschlüsselte Platte sollte nicht getrimmt werden, da TRIM potenziell Rückschlüsse auf gelöschte Daten zulässt.
Daher ist TRIM bei LUKS standardmäßig deaktiviert.

Prüfe mit:

lsblk --discard

Wenn du TRIM bewusst erlauben möchtest:

sudo cryptsetup --allow-discards --persistent refresh <LUKS-PARTITION>

Du wirst nach der Passphrase der verschlüsselten Partition gefragt.
Nach erfolgreicher Eingabe ist TRIM-Passthrough dauerhaft aktiv.

Danach prüfe nochmals mit:

lsblk --discard

TRIM-Passthrough überprüfen:

sudo cryptsetup luksDump /dev/sda1 | grep -i discard

Wenn

Flags:          allow-discards

erscheint, ist TRIM erfolgreich aktiviert.

Getestet mit einer T9 und LUKS-Verschlüsselung:

sudo fstrim -v /run/media/jo/Samsung-T9-2TB
/run/media/jo/Samsung-T9-2TB: 1,2 TiB (1305653325824 Bytes) getrimmt

oder alle:

sudo fstrim -av

➡️ TRIM wirkt nur auf die entschlüsselten Bereiche, nicht auf die Rohdaten.
Für den Privatgebrauch meist unbedenklich – bei hohen Sicherheitsanforderungen besser deaktiviert lassen.


🔗 Quellen