Trim
Logo Trim

La commande TRIM, disponible sur la plupart des modèles récents de SSD, permet aux systèmes d'exploitation modernes, tels que les systèmes Linux à partir du noyau 2.6.33 ou le système d'exploitation Microsoft Windows à partir de Windows 7, ainsi que Mac OS X depuis la version 10.6.6 (mais uniquement sur les SSD livrés par Apple8), d'éviter que les performances ne se dégradent avec le temps. Elle sert à notifier le SSD lors de l'effacement d'un fichier. Le contrôleur du SSD peut alors effacer les cellules de mémoire flash anciennement utilisées, afin d'optimiser les écritures ultérieures qui pourront alors être effectuées sans avoir à réaliser l'effacement préalable imposé par la technologie de la mémoire flash.

J'ai été amené à essayer de vérifier si le trim était bien fonctionnelle sur mes install en SSD.

  Le protocole:
C'est simple:

  1. Creer un fichier.
  2. Trouver son adresse bloc.
  3. vérifier qu'il est bien écrit sur le disque.
  4. Le supprimer.
  5. Vérifier qu'il n'existe plus sur le disque.

Sur un SSD avec le trim activé le fichier doit complètement disparaitre.



Le script:


#!/bin/bash
#TRIMTEST
#Antony MARTINEAU 2012

filetemp="/tmp/trimtest.txt"
disk=$(mount | grep -w "/" | egrep "sd|hd" | awk '{print $1}' |awk -F"/dev/" '{print $2}' | cut -c1-3)
mount | grep -w "/" | egrep "sd|hd" | awk '{print $1}' |awk -F"/dev/" '{print $2}' | cut -c1-3
echo trimtest > $filetemp
sync
lba=$(hdparm --fibmap $filetemp | awk '{print $2}' | awk 'END {print}')

if [ ! -z "$lba" ];then
echo "le fichier existe et occupe le bloc $lba"
rm -f $filetemp
sync
lbaend=$(dd if=/dev/$sda skip=$lba count=1 iflag=direct 2> /dev/null)
if [ -z "$lbaend" ];then
echo "*******TRIM OK*******"
else
echo "******NO TRIM*******"
fi

else
echo "Erreur le fichier n'existe pas"
fi
bien sur ce script peut largement être amélioré.