Seiten: [1]
|
 |
|
|
Autor
|
Thema: Discard-Feature mit Luks, Lvm und Ext4: Optimerung für SSDs (Gelesen 260 mal)
|
|
Sebastian
YaBB God
    
Offline
Einträge: 663

|
 |
Discard-Feature mit Luks, Lvm und Ext4: Optimerung für SSDs
« am: 24. Dezember 2024, 12:44:19 »
|
|
Hallo Suletuxe,
Was ist die Discard-Funktion?
Die Discard-Funktion, auch bekannt als TRIM (TRIM-Befehl), ist eine Funktion, die es ermöglicht, Speicherblöcke auf einem Flash Speichermedium wie einer Solid-State-Drive (SSD) zu löschen, wenn diese nicht mehr benötigt werden. Eine SSD kann nur in leere Speicherblöcke Daten abspeichern. Die Discard-Funktion stellt damit sicher, dass Speicherblöcke nicht erst bei Bedarf geleert werden müssen, und trägt somit zu einer optimierten Arbeitsweise der SSD da.
Wie funktioniert die Discard-Funktion?
Wenn ein Dateisystem eine Datei löscht, markiert es die Speicherblöcke, die die Datei enthalten, als frei und verfügbar für die Neuverwendung. Allerdings kann das Speichermedium, insbesondere eine SSD, die gelöschten Daten noch enthalten, was zu verringerter Leistung führen kann. Die Discard-Funktion sendet einen TRIM-Befehl an das Speichermedium, um die nicht mehr benötigten Speicherblöcke zu löschen.
Arten der Discard-Funktion
Es gibt zwei Arten der Discard-Funktion:
- Online-Discard: Diese Methode sendet TRIM-Befehle in Echtzeit, wenn Dateien gelöscht werden.
- Batch-Discard: Diese Methode führt periodisch einen TRIM-Befehl aus, um nicht mehr benötigte Speicherblöcke zu löschen.
Die Batch-Discard Variante ist mein persönlicher Favorit. Da hier die Löschvorgänge reduziert werden, indem größere Bereiche auf einmal geleert werden können.
Vorteile der Discard-Funktion
Die Discard-Funktion bietet mehrere Vorteile:
- Verbesserte Leistung: Durch das Löschen nicht mehr benötigter Daten kann die Leistung des Speichermediums verbessert werden.
- Erhöhung der Lebensdauer: Durch das Reduzieren der Anzahl von Löschvorgängen (Batch-Discard) kann die Lebensdauer des Speichermediums verlängert werden.
Aktivierung der Discard-Funktion
Jetzt wo wir wissen wofür Discard (TRIM) gut ist, beschreibe ich hier kurz welche Schritte unternommen bzw. es zu beachten gibt, wenn LVM und LUKS eingesetzt wird.
Um das Discard-Feature bei einem Ext4-Dateisystem, das auf einem LVM-Logical Volume (LV) auf einem LUKS-verschlüsselten Partition läuft, zu aktivieren, so muss auf jeder Abstraktionsschicht discard weitergeleitet werden. Dafür müssen folgende Schritte durchgeführt werden:
Schritt 1: Änderung der LUKS-Konfiguration
Achtung: Wenn das Discard-Feature aktiviert ist, kann es möglicherweise Informationen über die Datenstruktur des LUKS-Volumens preisgeben. Ein Angreifer kann diese Informationen nutzen, um die Verschlüsselung zu kompromittieren oder um andere Angriffe durchzuführen. Weitere Informationen hier
Discard kann auf der Verschlüsselungs-Ebene entweder mithilfe eines Kernel Parameters oder der /etc/crypttab aktiviert werden (link). Wird Luks2 eingesetzt, so kann auch ein Vermerk im Luks2 Header eingetragen werden, der die Funktion aktiviert (link).
Hier ist mein Favorit dies über die /etc/crypttab zu machen, da mir sonst meine Kernel Parameter Line zu lang wird . Natürlich müsst ihr dran denken eure crypttab auch in euer initramfs mit euren bevorzugten Generator mit hineinzubringen. Schaut dafür bitte in die Dokumentation eures Generators. Belibt unter Arch sind da mkinitcpio und dracut
Schritt 2: Änderung der LVM-Konfiguration (Optional)
Achtung: Durch die Aktivierung von issue_discards wird die Wiederherstellung von Metadaten der Volume-Gruppe mit vgcfgrestore verhindert. Im Falle eines irrtümlich ausgegebenen LVM-Befehls gibt es keine Wiederherstellungs möglichkeiten.
Damit LVM die Discard Befehle beim Löschen eines LVs weitergibt, ist eine Anpassung in der /etc/lvm/lvm.conf nötig, siehe hier. Dies betrifft nicht normale Dateilöschvorgänge des Dateisystems!
Schritt 3: Hinzufügen der discard-Option in /etc/fstab (Optional)
Wenn das Online-Discard gewünscht ist so kann die discard mount Option bei dem Ext4 Dateisystem hinzugefügt werden (link). Alternativ oder als Ärgenzung kann auch das Batch-Discard verwendet werden, mithilfe von fstrim und dem fstrim.timer systemd Timer, siehe hier
Schritt 4: Neugenerieren des initramfs
Nach den Änderungen muss das initramfs mit der neuen Konfiguration neu generiert werden, dies entnimmt bitte der Dokumentation eures initramfs Generators.
Nachwort:
Ich habe mich bei diesem Guide bemüht, das Rad nicht neu zu erfinden, da die nötigen Schritte schon woanders gut dokumentiert sind. Vielmehr soll dieser Guide eine Richtschnur darstellen, um nichts zu vergessen um Discard systematisch zu aktivieren.
Ich würde mich über euer Feedback sehr freuen.
LG Sebastian
|
« Letzte Änderung: 24. Dezember 2024, 12:54:47 von Sebastian » |
Gespeichert
|
Richtig um Hilfe bitten
|
|
|
Seiten: [1]
|
|
|
|
|
|
|