Wie aktiviere ich TRIM?


189

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?


Ich habe gerade diese Anweisungen auf webupd8 befolgt, die einige wirklich gute Optionen bieten :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Ich habe die Option zum automatischen Trimmen ausprobiert, wie oben in beschrieben "Automatic TRIM" hat aber festgestellt, dass das Einrichten eines täglichen Cron bei meinem Setup viel besser funktioniert.
bmbaker

Antworten:


197

Ubuntu ab 14.10

In Ubuntu 14.10 und 15.04 findet TRIMming auf allen von unterstützten SSDs jede Woche automatisch statt fstrim.

$ 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 die Herstellerprüfung deaktivieren, indem Sie den folgenden Befehl ausführen:

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

(oder einfach die Datei bearbeiten /etc/cron.weekly/fstrimund hinzufügen --no-model-check)

Ubuntu 13.10 und früher

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

Manueller TRIM

In Ubuntu kann dies durchgeführt werden mit fstrim:

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 das wiper.shmitgelieferte hdparmin verwenden/usr/share/doc/hdparm/contrib/wiper.sh.gz

Geplantes TRIM (empfohlen)

Dies ist die derzeit empfohlene Methode und 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 SSD_MOUNT_POINTSwie im Code beschrieben hinzu.

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 erheblich langsamer als gewöhnlich macht. Daher wird ein wöchentlich geplantes TRIM über einen Cron-Job (wie oben beschrieben) empfohlen.

Um das automatische TRIM auf einem Laufwerk oder einer Partition zu aktivieren, müssen diese mit der discardOption in gemountet werden fstab. Sichere zuerst deine fstab und öffne sie dann zum Bearbeiten:

sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

Fügen Sie discarddem Eintrag fstab options (durch Kommas getrennt) für das SSD-Laufwerk oder jede Partition 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 ( Quelle ):

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_LBAund überprüfen Sie den Gerätenamen Ihrer SSD: System->Administration->Disk UtilityzB sda, sdb, sdc ...

Führen Sie die folgenden [ADDRESS]Schritte aus , ersetzen Sie jedoch (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 hdparmBefehl 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.


5
Das Testen von TRIM funktioniert möglicherweise nicht wie folgt
chrishiestand 22.06.12

1
@Uli Bitte hilf mir jemand. Es scheint nicht für mich zu funktionieren. Ich habe 4 Partitionen in meinem ssd / /boot /usrund /optund ich eine andere Festplatte für meine verwendet haben /home. Ich gehe zu cd / #sdcund fahre mit den Anweisungen fort, bekomme aber nie Nullen. Danke im Voraus!
BugShotGG

1
@lightrush: Großartige Bearbeitung! Vielen Dank, dass Sie die Antwort auf dem neuesten Stand halten.
Uli

1
Möglicherweise möchten Sie syncnach dem ddBefehl ein hinzufügen , da zumindest auf meinem System das tempfile nicht sofort erstellt wird und hdparm daher nichts meldet.
Andreas J.

2
systemd kümmert sich jetzt darum. sudo systemctl status fstrim.timer
balloons

28

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.

Finden Sie mein Führer zur Einstellung TRIM oben 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."

Beispiel Setup

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

Wie man

  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 eine 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!


@Marco Ceppi irgendeinen bestimmten Grund für die Bearbeitung, was ich übersehen habe?
nem75

Nur die Markierung aufräumen und die "Signatur" -Linie entfernen (es wird davon ausgegangen, dass Sie Feedback über Kommentare und Abstimmungen auf der Website erhalten.
Marco Ceppi

7
Das Handbuch sollte hier aufgenommen werden, falls die Site / Seite nicht verfügbar ist.
Cas

Abgesehen davon ist dies eine reine Link-Antwort, sie funktioniert überhaupt nicht. Die meisten von Ihnen werden LVM mit LUKS verwenden, das TRIM in 12.04 nicht weitergeben kann. Weitere Informationen finden Sie in dieser Antwort .
gertvdijk

1
Muss nach dem Befolgen dieser Anweisungen immer noch ein Cron-Job eingerichtet werden, um den Datenträger auf 14.04 zu kürzen?
AJN
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.