197 votes

Comment activer TRIM ?

Je sais que le noyau Linux prend en charge TRIM à partir de la version 2.6.33, donc il devrait être pris en charge dans Ubuntu.

Est-ce que TRIM est activé par défaut ou dois-je changer certains paramètres ou installer un logiciel supplémentaire pour que cela fonctionne ? Si oui, comment faire ?

203voto

Philip Points 2060

Ubuntu 14.10 et ultérieur

À partir d'Ubuntu 14.10 et 15.05, le TRIM est effectué automatiquement chaque semaine sur tous les SSD pris en charge par fstrim.

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

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

systemctl list-timers
systemctl status fstrim.timer

Ubuntu 14.04

À partir d'Ubuntu 14.04, le TRIM planifié est activé 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 modifier le fichier /etc/cron.weekly/fstrim et ajouter --no-model-check)

Ubuntu 13.10 et antérieur

Il existe trois façons d'effectuer le TRIM, manuelle, planifiée et automatique:

TRIM manuelle

Sous Ubuntu, cela peut être effectué avec fstrim:

sudo fstrim /

cependant, cela n'est pas nécessaire lorsque le TRIM planifié ou automatique est activé, comme détaillé dans les sections ci-dessous.

Remarque: Pour Ubuntu 11.04 et les systèmes antérieurs, fstrim n'est pas disponible, vous devez donc utiliser wiper.sh fourni avec hdparm dans /usr/share/doc/hdparm/contrib/wiper.sh.gz

TRIM planifiée (Recommandé)

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

Créez un fichier de script CRON hebdomadaire:

gksudo gedit /etc/cron.weekly/fstrim

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

#! /bin/sh  

# Par défaut, nous supposons que seul / est sur un SSD. 
# Vous pouvez ajouter plus de points de montage SSD, séparés par des espaces.
# Assurez-vous que tous les points de montage sont dans les guillemets. Par exemple:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'  

SSD_MOUNT_POINTS='/'  

for mount_point in $SSD_MOUNT_POINTS
do  
    fstrim $mount_point  
done

Remarquez que ce qui précède suppose que seul votre système de fichiers racine / est situé sur un SSD. Si vous avez plus de points de montage situés sur un ou plusieurs SSD, ajoutez-les à SSD_MOUNT_POINTS comme expliqué dans le code.

Rendez le script exécutable:

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

Et enfin testez-le:

sudo /etc/cron.weekly/fstrim

Si vous ne voyez pas d'erreurs, votre tâche cron devrait fonctionner correctement.

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, envoyer des commandes TRIM au SSD en temps réel - après chaque suppression - a été reconnu pour rendre la suppression beaucoup plus lente que d'habitude sur certains lecteurs. Par conséquent, un TRIM planifié hebdomadaire via une tâche cron (décrit ci-dessus) est recommandé.

Pour activer le TRIM automatique sur un lecteur ou une partition, ils doivent être montés avec l'option discard dans fstab. Tout d'abord, sauvegardez votre fstab puis ouvrez-le pour l'éditer:

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

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

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

Enregistrez et fermez fstab, puis redémarrez et le TRIM automatique devrait maintenant fonctionner.

Test du TRIM automatique

Pour tester si le TRIM fonctionne, émettez les commandes suivantes (source):

cd  / # Remplacez par le système de fichiers SSD
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile

Dans la sortie, copiez le numéro sous begin_LBA et vérifiez le nom du dispositif de votre SSD: Système->Administration->Utilitaire de disque par exemple sda, sdb, sdc ...

Exécutez la commande suivante mais remplacez [ADDRESS] (begin_LBA) et sdX (nom du dispositif 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 commande hdparm ci-dessus:

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

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

29voto

chr0naut Points 86

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

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


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


Cette démarche étape par étape vous permettra de profiter de la technologie TRIM pour vos partitions SSD chiffrées pour cryptsetup 1.4 ou supérieur et kernel 3.1 ou supérieur. Cela conduit à une expérience SSD sans tracas parce que

"TRIM permet au SSD de gérer le nettoyage des déchets, ce qui ralentirait considérablement les futures opérations d'écriture sur les blocs concernés, à l'avance."

Exemple de configuration

Ordinateur portable avec SSD en tant que disque unique, Linux installé dans une seule partition racine LVM ext4 avec une partition d'échange LVM, toutes deux sur une partition logique chiffrée LUKS.

SSD : /dev/sda

sudo fdisk -l /dev/sda
/dev/sda1               # partition de démarrage (83) (non chiffrée, ext4)
/dev/sda2               # partition étendue
/dev/sda5               # partition logique (83) avec chiffrement LUKS

ls /dev/mapper
/dev/mapper/sda5_crypt         # périphérique LUKS chiffré dans la partition physique /dev/sda5
/dev/mapper/volumegroup-root   # partition racine sda5_crypt
/dev/mapper/volumegroup-swap   # partition d'échange sda5_crypt

Comment faire

  1. Faites une sauvegarde de toutes vos données. Vous modifiez votre système de fichiers donc avoir une sauvegarde est simplement une bonne idée.

  2. Vérifiez que vous avez les versions du noyau et de cryptsetup requises (3.1 & 1.4, par exemple dans Ubuntu 12.04, attention cependant, au moment de l'écriture 12.04 est encore en version bêta).

  3. Ajoutez le paramètre discard aux options du système de fichiers du volume 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. Cependant, la dernière étape ne suffit pas. Tant que LUKS n'a pas connaissance que vous souhaitez utiliser TRIM, il bloquera effectivement toutes les opérations de TRIM provenant du système de fichiers de la partition LVM, pour des raisons de sécurité. Ajoutez le paramètre discard aux options du cryptdevice dans /etc/crypttab pour que LUKS accepte le comportement de discard de la partition LVM.

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

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

  7. Vérifiez si TRIM est maintenant activé.

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

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

Résultat

TRIM est activé. Profitez d'une expérience SSD sans tracas !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X