web-dev-qa-db-fra.com

Comment activer TRIM?

Je sais que le noyau Linux prend en charge TRIM à partir de la version 2.6.33, il devrait donc être compatible 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?

189
Uli

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

À partir d’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 la désactiver. le vendeur vérifier en exécutant la commande suivante:

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

(ou modifiez simplement le fichier /etc/cron.weekly/fstrim et ajoutez --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, ceci peut être effectué 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 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é)

Ceci est la méthode actuellement recommandée, et est prévu pour être activé 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 vous avez plusieurs points de montage résidant sur un ou plusieurs disques SSD, ajoutez-les à SSD_MOUNT_POINTS comme 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'option discard dans 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) pour 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

À partir de la sortie, copiez le numéro sous begin_LBA et vérifiez le nom de périphérique de votre SSD: System->Administration->Disk Utility p. Ex. 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 commande hdparm ci-dessus:

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

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

197
Uli

Notez que si vous utilisez le cryptage, les solutions publiées jusqu'à présent 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

HowTo

  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, 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 sait 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émarrez.

  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!

27
nem75