it-swarm.com.de

Wie aktiviere ich TRIM?

Ich weiß, dass der Linux-Kernel TRIM ab Version 2.6.33 unterstützt, daher sollte es TRIM-Unterstützung in Ubuntu geben.

Ist TRIM standardmäßig aktiviert oder muss ich einige Einstellungen ändern oder zusätzliche Software installieren, damit es funktioniert? Wenn das so ist, wie?

189
Uli

Ubuntu ab 14.10

In Ubuntu 14.10 und 15.04 wird TRIMming auf allen von fstrim unterstützten SSDs jede Woche automatisch ausgeführt.

_$ tail -n1 /etc/cron.weekly/fstrim 
/sbin/fstrim --all || true
_

Seit 15.04 verwendet Ubuntu systemd und seinen Timer (_man systemd.timer_, Arch wiki )

_systemctl list-timers
systemctl status fstrim.timer
_

Ubuntu 14.04

Ab Ubuntu 14.04 ist geplantes TRIM standardmäßig für Intel-, SAMSUNG-, OCZ-, Patriot- und Sandisk-SSDs aktiviert. Wenn Sie eine andere Marke haben, können Sie dies deaktivieren Führen Sie den folgenden Befehl aus, um den Hersteller zu überprüfen:

_sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim
_

(oder bearbeite einfach die Datei _/etc/cron.weekly/fstrim_ und füge _--no-model-check_ hinzu)

Ubuntu 13.10 und früher

Es gibt drei Möglichkeiten, TRIM manuell, geplant und automatisch auszuführen:

Manueller TRIM

In Ubuntu kann dies mit fstrim durchgeführt werden:

_Sudo fstrim /
_

dies ist jedoch nicht erforderlich, wenn geplantes oder automatisches TRIM aktiviert ist, wie in den folgenden Abschnitten beschrieben.

Hinweis: Für Ubuntu 11.04 und frühere Systeme ist fstrim nicht verfügbar, daher müssen Sie _wiper.sh_ wird mit hdparm in _/usr/share/doc/hdparm/contrib/wiper.sh.gz_ geliefert

Geplantes TRIM (empfohlen)

Dies ist die derzeit empfohlene Methode und lautet soll standardmäßig für Ubuntu 14.04 aktiviert werden . So aktivieren Sie es manuell in älteren Ubuntu-Versionen (11.10 bis 13.10):

Erstellen Sie eine wöchentliche CRON-Job-Skriptdatei:

_gksudo gedit /etc/cron.weekly/fstrim
_

Fügen Sie den folgenden Code in die Datei ein, speichern und schließen Sie die Datei:

_#! /bin/sh  

# By default we assume only / is on an SSD. 
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done
_

Beachten Sie, dass oben nur davon ausgegangen wird, dass sich Ihr Root-Dateisystem _/_ auf einer SSD befindet. Wenn sich auf einer oder mehreren SSDs mehrere Einhängepunkte befinden, fügen Sie diese zu _SSD_MOUNT_POINTS_ hinzu, wie im Code erläutert.

Machen Sie das Skript ausführbar:

_Sudo chmod +x /etc/cron.weekly/fstrim
_

Und zum Schluss testen Sie es:

_Sudo /etc/cron.weekly/fstrim
_

Wenn Sie keine Fehler sehen, sollte Ihr Cron-Job einwandfrei funktionieren.

Automatic TRIM (veraltet, langsam)

Automatic TRIM wird seit Ubuntu 10.10 (Kernel 2.6.33) mit dem EXT4-Dateisystem unterstützt. Es wurde jedoch festgestellt, dass das Senden von TRIM-Befehlen in Echtzeit - nach jedem Löschen - das Löschen auf einigen Laufwerken wesentlich langsamer als gewöhnlich macht. Daher wird ein wöchentlich geplantes TRIM über einen Cron-Job (wie oben beschrieben) empfohlen.

Um automatisches TRIM auf einem Laufwerk oder einer Partition zu aktivieren, müssen sie mit der Option discard in fstab angehängt werden. Sichere zuerst deine fstab und öffne sie dann zum Bearbeiten:

_Sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab
_

Fügen Sie dem Eintrag fstab options (durch Kommas getrennt) für das SSD-Laufwerk oder jede Partition discard hinzu.

_UUID=00000000-0000-0000-0000-000000000000  /  ext4  discard,errors=remount-ro  0  1
_

Schließe und speichere fstab, starte dann neu und das automatische TRIM sollte nun funktionieren.

Automatisches TRIM testen

Um zu testen, ob TRIM funktioniert, geben Sie die folgenden Befehle ein ( source ):

_cd  / # Replace with SSD file system
Sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
Sudo hdparm --fibmap tempfile
_

Kopieren Sie aus der Ausgabe die Nummer unter _begin_LBA_ und überprüfen Sie den Gerätenamen Ihrer SSD: _System->Administration->Disk Utility_ z. sda, sdb, sdc ...

Führen Sie Folgendes aus, ersetzen Sie jedoch _[ADDRESS]_ (begin_LBA) und sdX (SSD-Gerätename) durch die oben angegebenen Details.

_Sudo hdparm --read-sector [ADDRESS] /dev/sdX 
_

die Ausgabe sollte eine lange Zeichenfolge für diese Sektoren sein

_Sudo rm tempfile
sync
_

Wiederholen Sie den Befehl hdparm von oben:

_Sudo hdparm --read-sector [ADDRESS] /dev/sdX 
_

Wenn Sie nur Nullen erhalten, funktioniert das automatische TRIM. Wenn die Sektoren nach dem Entfernen der Datei immer noch nicht leer sind, warten Sie eine Weile und führen Sie den Befehl erneut aus.

197
Uli

Beachten Sie, dass bei Verwendung der Verschlüsselung die hier veröffentlichten Lösungen nicht hilfreich sind, da Sie die TRIM-Unterstützung auch in der Verschlüsselungsschicht aktivieren müssen. Dies ist mit den Kernel-Versionen 3.1+ und Cryptsetup-Versionen 1.4+ möglich, die beide in Ubuntu 12.04 enthalten sind.

Hier finden Sie meine Anleitung zum Einrichten von TRIM für LUKS-verschlüsselte Partitionen hier


So aktivieren Sie TRIM auf LUKS-verschlüsselten Partitionen in Ubuntu & Debian


In dieser schrittweisen Anleitung können Sie die TRIM-Technologie für Ihre verschlüsselten SSD-Partitionen für Cryptsetup 1.4 oder höher und Kernel 3.1 oder höher nutzen. Dies führt zu einem problemlosen SSD-Erlebnis, weil

"TRIM ermöglicht es der SSD, den Speicherbereinigungsaufwand zu bewältigen, der ansonsten zukünftige Schreibvorgänge auf die betroffenen Blöcke im Voraus erheblich verlangsamen würde."

Beispielsetup

Notebook mit SSD als einzelnes Laufwerk, Linux installiert in einer einzelnen ext4-LVM-Root-Partition mit LVM-Swap-Partition, beide über eine LUKS-verschlüsselte logische Partition.

SSD:/dev/sda

Sudo fdisk -l /dev/sda
/dev/sda1               # boot partition (83) (unencrypted, ext4)
/dev/sda2               # extended partition
/dev/sda5               # logical partition (83) with LUKS encryption

ls /dev/mapper
/dev/mapper/sda5_crypt         # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root   # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap   # swap partition sda5_crypt

HowTo

  1. Erstellen Sie eine Sicherungskopie aller Ihrer Daten. Sie haben Probleme mit Ihrem Dateisystem, daher ist es einfach eine gute Idee, ein Backup zu erstellen.
  2. Stellen Sie sicher, dass Sie über die erforderlichen Kernel- und Cryptsetup-Versionen verfügen (3.1 und 1.4, z. B. in Ubuntu 12.04, beachten Sie jedoch, dass 12.04 zum Zeitpunkt des Schreibens noch Beta-Version ist).
  3. Fügen Sie den Dateisystemoptionen der verschlüsselten LVM-Volumes in Ihrer Datei/etc/fstab den Parameter discard hinzu. Dies macht das Dateisystem Ihrer LVM-Partition darauf aufmerksam, dass Sie TRIM verwenden möchten.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. Der letzte Schritt ist jedoch nicht genug. Solange LUKS nicht bewusst ist, dass Sie TRIM verwenden möchten, werden aus Sicherheitsgründen alle TRIM-Vorgänge, die vom Dateisystem der LVM-Partition stammen, effektiv blockiert. Fügen Sie den cryptdevice-Optionen in/etc/crypttab den Parameter discard hinzu, damit LUKS das Discard-Verhalten der LVM-Partition akzeptiert.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Erstellen Sie Ihre initramfs neu. Die crypttab-Optionen werden dort gespeichert und beim Booten verwendet.

    Sudo update-initramfs -c -k all
    
  6. Starten Sie neu.

  7. Überprüfen Sie, ob TRIM jetzt aktiv ist.

    Sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Wenn der letzte Befehl ein Ergebnis wie dieses anzeigt (1 allow_discards am Ende), sind Sie fertig.

    0  77656056  crypt  aes-cbc-essiv:sha256  abc[...]c7a0c  0  8:5  2056  1  allow_discards
    

Ergebnis

TRIM ist aktiviert. Viel Spaß mit Ihrer problemlosen SSD!

28
nem75