Neuigkeiten:

Privates MODX und LINUX BLOG, User Registrierung ist deaktiviert! Fragen oder Tipps? Bitte per Matrix: @jolichter:tchncs.de

Hauptmenü

TRIM externe SSD und udev-Regel

Begonnen von Jo, 2023-02-17 | 23:36:50

« vorheriges - nächstes »

Jo

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. Dieses Verhalten hilft, die Leistung der SSD zu erhalten, insbesondere wenn TRIM nicht verfügbar ist. Btrfs hingegen nutzt Copy-On-Write, was ohne TRIM dazu führt, dass alte Datenblöcke weiterhin belegt bleiben. Dies fragmentiert die SSD und verschlechtert langfristig die Leistung – daher ist in diesem Fall ext4 die bessere Wahl.

Wenn beim TRIM-Versuch auf einer externen SSD folgende Meldung erscheint:
sudo fstrim -v /run/media/jo/extSSD-T7/Fehlermeldung: Verwerfungsvorgang wird nicht unterstützt oder the discard operation is not supported

Das trimmt alle Dateisysteme, die TRIM unterstützen:
sudo fstrim -av
Geräte anzeigen lassen und suche nach dem Gerät, das deinem Mountpoint entspricht:
lsblkIn meinem Fall wäre das Blockgerät "/dev/sda".

Dann die TRIM-Unterstützung prüfen:
lsblk --discard /dev/sda
Wichtig: DISC-GRAN (Granularität der Discard-Operation) und DISC-MAX (maximale Größe der Discard-Operation) müssen ungleich Null sein. Wenn beide Werte 0 sind, wird TRIM nicht unterstützt. Falls die Werte Null sind, kann TRIM durch eine udev-Regel wie folgt aktiviert werden.

TRIM für externe SSDs aktivieren (udev-Regel für TRIM-Passthrough)
Falls eine externe SSD wie die Samsung T7 laut "lsblk --discard" kein TRIM unterstützt, kann dies oft am Controller des externen Gehäuses liegen. Wenn der Controller UASP (USB Attached SCSI Protocol) unterstützt und TRIM grundsätzlich möglich ist, lässt sich dies mit einer udev-Regel aktivieren. Vorgehensweise:

Gerät identifizieren:
lsusbBeispiel:
ZitatBus 001 Device 003: ID 04f7:5011 Samsung Electronics Co., Ltd PSSD T7
VendorID: 04f7 | ProductID: 5011

udev-Regel erstellen:
sudo nano /etc/udev/rules.d/50-usb-ssd-trim.rules
Regel einfügen (mit passender Vendor- und ProductID), je SSD in einer Zeile:
# Samsung T7 SSD (TRIM aktivieren)
ACTION=="add|change", ATTRS{idVendor}=="04f7", ATTRS{idProduct}=="5011", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

Speichern und schließen (STRG + X, dann Y und Enter), oder beende mit F2, dann wird gefragt, ob die Datei gespeichert werden soll.

PC neu starten oder udev-Regeln neu laden und anwenden:
sudo udevadm control --reload-rules && sudo udevadm trigger
Testen:
lsblk --discard
sudo fstrim -v /run/media/jo/extSSD-T7/

Hinweis: Die VendorID und ProductID müssen exakt mit den Werten aus lsusb übereinstimmen. Falls TRIM weiterhin nicht funktioniert, könnte der Controller des Gehäuses TRIM nicht unterstützen – unabhängig von der Regel.



Nachtrag zur möglichen Problemlösung – TRIM und UASP prüfen

TRIM-Unterstützung der SSD per hdparm prüfen:
sudo pacman -S --needed hdparm
sudo hdparm -I /dev/sda | grep -i trim
Wenn keine Ausgabe zu TRIM erscheint, unterstützt die SSD kein TRIM.

UASP-Support der SSD am USB-Anschluss prüfen:
lsusb -tDieser Befehl listet die USB-Geräte und die zugehörigen Treiber auf.

Beispiel:
Zitat...
|__ Port 003: Dev 013, If 0, Class=Mass Storage, Driver=uas, 480M
...
Driver=uas zeigt, dass UASP (USB Attached SCSI Protocol) aktiv ist. Falls stattdessen usb-storage angezeigt wird, wird UASP nicht verwendet.

TRIM erfordert UASP. Ohne UASP werden TRIM-Befehle von vielen externen SSDs und Gehäusen blockiert. Falls TRIM nicht funktioniert, könnte der Controller der SSD oder des USB-Gehäuses die Ursache sein.



Eine verschlüsselte Platte sollte niemals getrimmt werden, da damit eine Kompromittierung der Sicherheit der Verschlüsselung verbunden sein kann. Daher wird standardmäßig TRIM bei LUKS deaktiviert, um diese Schwachstelle zu vermeiden.

Ausser man weiss was man tut und erlaubt es nach dem Entschlüsseln explizit:
sudo cryptsetup --allow-discards --persistent refresh <LUKS-PARTITION>Dabei wird TRIM durch die aktive Entschlüsselung der Partition geleitet. Das bedeutet: TRIM-Befehle wirken nur auf die entschlüsselten Bereiche und nicht auf die verschlüsselten Rohdaten. Für den Privatgebrauch dürfte das Risiko gering sein. Die Vorteile von TRIM (Lebensdauer der SSD und Performance) sind für viele Nutzer wichtiger als das geringe Sicherheitsrisiko. Wenn deine Sicherheitsanforderungen jedoch hoch sind, könnte das ein Sicherheitsrisiko darstellen!



PS: Speicher, der vom Root-System auf einer externen Festplatte mit ext4-Dateisystem reserviert ist, freigeben. Bei reinen Datenlaufwerken (z.B. Backup-SSDs) ist dies nicht erforderlich. Folge diesen Schritten (wie immer ohne Gewähr – kein Backup, kein Mitleid). Festplatte identifizieren:

lsblkReservierten Speicherplatz je Partition auf 0 % setzen (ohne Formatierung, z.B. wenn /dev/sda1):
sudo tune2fs -m 0 /dev/sda1Reservierung prüfen:
sudo tune2fs -l /dev/sda1 | grep "Reserved block count"Wenn die Ausgabe Reserved block count: 0 anzeigt, ist kein Speicher reserviert, und der gesamte Speicher kann genutzt werden.


Quellen:


Jo

#1
TRIM-Probleme mit externer SSD (JMS583 Controller) – Unterschiede zwischen Linux (Kernel 6.6) und Windows 10/11

Stand: 2025-Januar

Hallo, hier meine Erfahrungen mit TRIM und einer externen SSD in einem ElecGear USB Mini Gehäuse (JMS583 Controller). Vielleicht hilft das jemandem, der vor ähnlichen Herausforderungen steht.

Setup:
  • SSD: Samsung 256GB M.2 2242 (NVMe)
  • Gehäuse: ElecGear USB Mini für 2230/2242 NVMe und SATA M.2 SSDs
  • Controller: JMS583 (USB 3.1 Gen2 zu PCIe Gen3 x2)
  • Einsatz: Multiboot-Umgebung (Windows 10/11, Manjaro Linux)
  • Dateisystem (anfangs): NTFS

Problem:
Obwohl der JMS583-Controller, nach dem Erstellen einer udev-Regel, laut 'lsblk' TRIM unterstützt, funktioniert 'fstrim' unter Linux nicht für die NTFS-formatierte SSD.

Befehle und Ausgaben:
lsblk --discard /dev/sda
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0        4K       4G         0
└─sda1        0        4K       4G         0

TRIM wird zwar unterstützt, aber beim Versuch, 'fstrim' auszuführen, erscheint:
sudo fstrim -v /run/media/jo/SSD256/
fstrim: /run/media/jo/SSD256/: Verwerfungsvorgang wird nicht unterstützt.

Ein Check mit 'hdparm' zeigt keine TRIM-Unterstützung:
sudo hdparm -I /dev/sda | grep -i trim
# Leere Ausgabe



Zusätzliche Tests:
'lsusb -t' zeigt: UASP ist aktiv.
...
|__ Port 003: Dev 007, If 0, Class=Mass Storage, Driver=uas, 5000M
...
Unter Windows 11 funktioniert TRIM (Laufwerk optimieren).
Auch in einer VM mit Windows 10 auf Manjaro kann ich TRIM ausführen.



Vermutung:
  • Windows unterstützt TRIM für NTFS nativ, während dies unter Linux möglicherweise eingeschränkt ist.
  • Samsung T3 (auch mit NTFS) lässt sich unter Linux trimmen, daher könnte es am JMS583-Controller oder der SSD-Firmware liegen.
  • Oder es liegt an einer Inkompatibilität der Flags (msftdata) oder der Partitionstabelle (GPT/MBR).

Lösung:
Ich habe die SSD unter Windows 10 mit exFAT formatiert – damit funktioniert TRIM unter Linux und Windows.

Prüfung der Partitionierung mit Linux nach exFAT-Formatierung unter Windows 10:
sudo parted /dev/sda print
Modell: NV-2242A  (scsi)
Festplatte  /dev/sda:  256GB
Sektorgröße (logisch/physisch): 512B/4096B
Partitionstabelle: gpt
Disk-Flags:

Nummer  Anfang  Ende   Größe  Dateisystem  Name  Flags
 1      17,4kB  256GB  256GB                     msftdata
Wichtige Informationen wie Partitionstyp (GPT/MBR), Dateisystem und gesetzte Flags (z. B. msftdata) werden angezeigt.

TRIM:
sudo fstrim -v /run/media/jo/SSD256/
/run/media/jo/SSD256/: 184,4 GiB (198023577600 Bytes) getrimmt


Interessantes Verhalten:
  • Wenn ich die SSD unter Linux mit exFAT formatiere, wird sie von Windows 10 nicht erkannt und Windows verlangt eine Neuformatierung.
  • Formatierung unter Windows 10 behebt das Problem und macht die SSD plattformübergreifend nutzbar.

Fazit:
  • TRIM für NTFS auf externen SSDs unter Linux ist unzuverlässig, je nach SSD-Controller und Firmware.
  • exFAT ist eine gute Alternative, aber die Formatierung sollte unter Windows erfolgen, um maximale Kompatibilität zu gewährleisten.
  • Möglicherweise gibt es Unterschiede in der exFAT-Implementierung zwischen Linux und Windows.

Falls jemand ähnliche Erfahrungen gemacht hat oder eine bessere Lösung kennt, freue ich mich über Feedback:cheesy: