Comment activer TRIM?

189

Je sais que le noyau Linux supporte TRIM à partir de la version 2.6.33, il devrait donc y avoir un support TRIM dans Ubuntu.

Est-ce que TRIM est activé par défaut ou dois-je modifier certains paramètres ou installer un logiciel supplémentaire pour que cela fonctionne? Si c'est le cas, comment?

Uli
la source
J'ai juste suivi ces instructions sur webupd8 qui donne de très bonnes options :-) webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html J'ai essayé l'option de compensation automatique décrite ci-dessus dans "Automatic TRIM" mais a constaté que la configuration d'un cron quotidien fonctionnait beaucoup mieux avec ma configuration.
bmbaker

Réponses:

197

Ubuntu à partir de 14h10

Dans Ubuntu 14.10 et 15.04, TRIMming se déroule automatiquement chaque semaine sur tous les SSD pris en charge par fstrim.

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

Depuis 15.04 Ubuntu utilise systemd et son timer ( man systemd.timer, Arch wiki )

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

Depuis Ubuntu 14.04, la TRIM planifiée est activée par défaut pour les SSD Intel, SAMSUNG, OCZ, Patriot et Sandisk. Si vous avez une autre marque, vous pouvez désactiver la vérification du fournisseur en exécutant la commande suivante:

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

(ou simplement éditer le fichier /etc/cron.weekly/fstrimet ajouter --no-model-check)

Ubuntu 13.10 et versions antérieures

Il existe trois façons d'effectuer TRIM: manuel, programmé et automatique:

TRIM manuel

Dans Ubuntu, cela peut être réalisé avec fstrim:

sudo fstrim /

toutefois, cela n'est pas nécessaire lorsque les TRIM programmés ou automatiques sont activés, comme indiqué dans les sections ci-dessous.

Remarque: Pour Ubuntu 11.04 et les systèmes antérieurs, fstrim ne sont pas disponibles , donc vous devez utiliser wiper.shfourni hdparmen/usr/share/doc/hdparm/contrib/wiper.sh.gz

TRIM planifiée (recommandé)

C'est la méthode actuellement recommandée, et il est prévu de l'activer par défaut pour Ubuntu 14.04 . Voici comment l'activer manuellement dans les anciennes versions d'ubuntu (11.10 à 13.10):

Créez un fichier de script de travail CRON hebdomadaire:

gksudo gedit /etc/cron.weekly/fstrim

Collez le code suivant dans le fichier, puis enregistrez et fermez le fichier:

#! /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

Notez que ce qui précède suppose que seul votre système de fichiers racine /se trouve sur un disque SSD. Si plusieurs points de montage résident sur un ou plusieurs disques SSD, ajoutez-les SSD_MOUNT_POINTScomme expliqué dans le code.

Rendre le script exécutable:

sudo chmod +x /etc/cron.weekly/fstrim

Et enfin le tester:

sudo /etc/cron.weekly/fstrim

Si vous ne voyez aucune erreur, votre travail cron devrait bien fonctionner.

TRIM automatique (obsolète, lent)

Le TRIM automatique est pris en charge depuis Ubuntu 10.10 (noyau 2.6.33) avec le système de fichiers EXT4. Cependant, l'envoi de commandes TRIM au SSD en temps réel - après chaque suppression - a été reconnu comme rendant la suppression beaucoup plus lente que d'habitude sur certains lecteurs. Par conséquent, une TRIM programmée hebdomadairement via un travail cron (décrit ci-dessus) est recommandée.

Pour activer TRIM automatique sur un lecteur ou une partition, vous devez les monter avec l’ discardoption in fstab. Commencez par sauvegarder votre fstab puis ouvrez-le pour le modifier:

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

Ajoutez discardà l'entrée d'options fstab (séparée par des virgules) le lecteur SSD ou chaque partition.

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

Fermez et enregistrez fstab, puis redémarrez et TRIM automatique devrait maintenant fonctionner.

Test de TRIM automatique

Pour tester si TRIM fonctionne, exécutez les commandes suivantes ( source ):

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

A partir de la sortie copier le numéro sous begin_LBAet vérifier le nom du périphérique de votre SSD: System->Administration->Disk Utilitypar exemple sda, sdb, sdc ...

Exécutez ce qui suit mais remplacez [ADDRESS](begin_LBA) et sdX(nom du périphérique SSD) par les détails obtenus ci-dessus.

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

la sortie devrait être une longue chaîne de caractères pour ces secteurs

sudo rm tempfile
sync

Répétez la hdparmcommande ci-dessus:

sudo hdparm --read-sector [ADDRESS] /dev/sdX 

Si vous n'obtenez que des zéros, alors TRIM automatique fonctionne. Toutefois, si après la suppression du fichier, les secteurs ne sont toujours pas vides, attendez un moment et relancez la commande.

Uli
la source
5
Tester TRIM risque de ne pas fonctionner comme cela: serverfault.com/a/401506/60525
chrishiestand
1
@Uli S'il vous plaît, aidez-moi. Cela ne semble pas fonctionner pour moi. J'ai 4 partitions dans mon ssd / /boot /usret /optje l' ai utilisé pour mon autre hdd /home. Je vais à cd / #sdcet je continue avec les instructions mais je n’obtiens jamais de zéros. Merci d'avance!
BugShotGG
1
@lightrush: Excellent montage! Merci de garder la réponse à jour.
Uli
1
Vous voudrez peut-être ajouter un syncaprès la ddcommande, car au moins sur mon système, le fichier temporaire n'est pas créé immédiatement, donc hdparm ne signale rien.
Andreas J.
2
Systemd gère cela maintenant. sudo systemctl status fstrim.timer
balloons
28

Notez que si vous utilisez le cryptage, les solutions publiées ici ne vous aideront pas, car vous devez également activer la prise en charge TRIM dans la couche de cryptage. Cela peut être fait avec les versions de noyau 3.1+ et les versions de cryptsetup 1.4+, toutes deux incluses dans Ubuntu 12.04.

Trouvez mon guide sur la configuration de TRIM pour les partitions chiffrées par LUKS ici


Comment activer TRIM sur les partitions chiffrées LUKS dans Ubuntu et Debian


Cette procédure pas à pas vous permettra de tirer parti de la technologie TRIM pour vos partitions SSD chiffrées pour cryptsetup 1.4 ou supérieur et le noyau 3.1 ou supérieur. Cela conduit à une expérience SSD sans tracas car

"TRIM permet au SSD de gérer à l’avance la surcharge de la récupération de place qui, autrement, ralentirait considérablement les opérations d’écriture futures sur les blocs concernés."

Exemple de configuration

Ordinateur portable avec SSD comme lecteur unique, Linux installé dans une seule partition racine LVM ext4 avec une partition swap LVM, les deux sur une partition logique chiffrée par LUKS.

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

Comment

  1. Faites une sauvegarde de toutes vos données. Vous manipulez votre système de fichiers, une sauvegarde est donc une bonne idée.
  2. Assurez-vous de disposer des versions de noyau et de cryptsetup requises (3.1 et 1.4, par exemple dans Ubuntu 12.04, méfiez-vous cependant, au moment de l'écriture, 12.04 est toujours en version bêta).
  3. Ajoutez un paramètre de suppression aux options de système de fichiers des volumes LVM chiffrés dans votre fichier / etc / fstab. Cela indique au système de fichiers de votre partition LVM que vous souhaitez utiliser TRIM.

    /dev/mapper/volumegroup-root    /   ext4 discard,noatime,nodiratime,errors=remount-ro    0    1
    
  4. La dernière étape ne suffit pas cependant. Tant que LUKS ne saura pas que vous souhaitez utiliser TRIM, il bloquera effectivement toutes les opérations TRIM provenant du système de fichiers de la partition LVM, pour des raisons de sécurité. Ajoutez un paramètre de suppression aux options cryptdevice dans / etc / crypttab pour que LUKS accepte le comportement de suppression de la partition LVM.

    sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
    
  5. Reconstruisez vos initramfs. Les options crypttab sont stockées ici et utilisées au démarrage.

    sudo update-initramfs -c -k all
    
  6. Redémarrer.

  7. Vérifiez si TRIM est maintenant actif.

    sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
    
  8. Si la dernière commande affiche un résultat comme celui-ci (1 allow_discards à la fin), vous êtes tous définis.

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

Résultat

TRIM est activé. Profitez de votre SSD sans tracas!

nem75
la source
@Marco Ceppi aucune raison spécifique pour le montage, quelque chose que j'ai oublié?
nem75
Il suffit de ranger la démarque et de supprimer la ligne "signature" (il est supposé que vous obtiendrez des commentaires via des commentaires et des votes sur le site.
Marco Ceppi
7
Le guide devrait être inclus ici au cas où ce site / cette page ne serait pas disponible.
Cas
Hormis le fait qu'il ne s'agit en réalité que d'une réponse par lien, cela ne fonctionne pas du tout. La plupart d'entre vous utilisera LVM avec LUKS, qui n'est pas capable de propager TRIM en 12.04. Voir cette réponse pour plus d'informations.
gertvdijk
1
Après avoir suivi ces instructions, est-il toujours nécessaire de configurer un travail cron pour découper le disque le 14.04?
ajn