SATA TRIM mit LUKS auf root-disk aktivieren unter 42.3

EINLEITUNG

Nach dem Einbau einer SSD in meinen Laptop und Neuinstallation von openSUSE Leap 42.1 mit Vollverschlüsselung via LUKS/dm-crypt stand ich vor einem Problem: TRIM ist für LUKS/dm-crypt nicht aktiviert. Das kann man herausfinden, wenn im Terminal “dmsetup table /dev/mapper/NamedesLUKSLaufwerks” eingibt. Die Info “allow_discard” wird NICHT ausgegeben.

Ein Post hier im Forum (https://forums.opensuse.org/showthread.php/495404-Gelöst-SATA-TRIM-mit-LUKS-auf-root-disk-aktivieren-unter-13-1) hat mir entscheidende Hinweise gegeben, ist jedoch nicht mehr ganz up-to-date (z.B. wird mittlerweile dracut verwendet), daher beschreibe ich hier meine Vorgehensweise. Eine große Hilfe war mir übrigens auch der Eintrag bei Ubuntuusers: https://wiki.ubuntuusers.de/SSD/TRIM/#TRIM-mit-Festplattenverschluesselung

VORWEG EIN HINWEIS ZUR SICHERHEIT DIESER KONFIGURATION:

Das Trimmen einer verschlüsselten SSD gibt potentiell Informationen über diese preis. Angreifer können hier Informationen über den Füllungsgrad, belegte/freie Sektoren, sowie ggfs. das verwendete Dateisystem und andere Metainformationen auslesen.
Hier muss jeder User eine Abwägung zwischen Sicherheit und Komfort (bzw. hier der Lebensdauer und Performance seiner SSD) treffen.

  • Wenn jemand auf die absolute Sicherheit und Vertraulichkeit seiner Daten angewiesen ist und die Struktur der Daten auf dem Laufwerk und ähnliche Metainformationen Niemandem bekannt werden dürfen, sollte man TRIM NICHT aktivieren. Allerdings würde ich in diesem Fall sowieso zu weitergehenden Sicherheitsmaßnahmen im Sinne der plausiblen Abstreitbarkeit raten (denn das Vorhandensein eines LUKS-Laufwerks bestätigt ja auch schon, das jemand “etwas zu verbergen” hat).
  • Wenn jemand seine Daten verschlüsselt, um “Gelegenheitsangreifern” das Auslesen von privaten Daten zu verwehren und ggfs. das Laufwerk später unbedenklich zur Zweitnutzung weitergeben zu können, ist TRIM auf der SSD vertretbar, denke ich.

ANLEITUNG

Schritt 0: Sicherungskopie der aktuellen initrd anlegen (/boot/initrd)
Schritt 1: Sicherungskopie der aktuellen crypttab anlegen (/etc/crypttab)
Schritt 2: crypttab editieren, als Mountoption für das LUKS-Laufwerk “luks, discard” statt “none” eintragen
Schritt 3: Neue initrd erstellen: Terminal als root öffnen, “dracut -f”
Schritt 4: Neustarten, jetzt ist TRIM für das LUKS-Laufwerk aktiviert. Dies kann überprüft werden im Terminal als root mit “dmsetup table /dev/mapper/NamedesLUKSLaufwerks”, das Ergebnis sollte dann in etwa so aussehen, mit der discard-Info am Ende: “0 975718448 crypt aes-xts-plain64 00000000 0 8:2 4096 1 allow_discards
Schritt 5: Je nach Präferenz kann jetzt manuell getrimmt werden, ein Eintrag zum automatischen TRIM in die fstab erstellt werden (siehe Post oben) oder ein cronjob angelegt werden. Ich habe mich für letztes entschieden und habe unter cron.weekly ein Skript angelegt, das “fstrim -a -v” ausführt.

Für normale Anwendung einer SSD gibt es den Systemd Service fstrim.service und den Timer fstrim.timer…

Hallo Sauerland,

was heißt in dem Zusammenhang “normale” Anwendung?
SSD ohne Verschlüsselung?
Ein bisschen mehr Erläuterung wäre hier schön gewesen.

Fakt ist eben, das eine LUKS-verschlüsselte Partition auf der SSD nicht getrimmt werden KANN, auch nicht durch systemd, da die Partition als nicht trimmbar gemountet wird. Und das per default - vermutlich eben, um die Sicherheit des Containers nicht zu gefährden (siehe Ausführungen oben zu der Sicherheit).
Wenn man Beides haben möchte, also eine Vollverschlüsselung mit LUKS und eine getrimmte SSD, muss man nacharbeiten.

was heißt in dem Zusammenhang "normale" Anwendung?
SSD ohne Verschlüsselung?

Ja, DVD/USB-Stick einschieben und installieren.

Übrigens hab ich deinen Beitrag nicht beanstandet, ich hab nur gesagt, das es Systemd Dateien für das Trimmen einer “normalen” Installation gibt,
Da braucht es auch keine speziellen Parameter in der fstab.