Info16.fr

Le blog de B@rtounet

#Gnu/Linux, Planet Libre

Script: Vérifier si le TRIM est fonctionnel.

10 septembre 2012 Rédigé par bartounet

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é.

Information sur bartounet auteur de l'article

13 commentaires

#1 

Merci pour cette belle serie. Commentaire de hotel luxe paris

Répondre

#2 

Super... simple et efficace.

Merci Commentaire de Votre Nom

Répondre

#3 

si je comprend ton script il ne teste que /tmp ?
J'ai bon ?
ma blague à moi c'est que depuis SSD mes temp dir sont en tmpfs...
je préfère utiliser de la ram moins cher et sans usure que du SSD. Commentaire de Votre Nom

Répondre

#4 

Il créee le fichier de test dans /tmp
Libre à vous de le modifier :) Commentaire de Bartounet

Répondre

#5 

Ce script manque terriblement de commentaires.

Pourquoi la ligne avec le mount est répété deux fois plutôt que de faire un "echo $disk" ?

Il y a un $sda qui n'a pas l'air de correspondre à quoi que ce soit.

Visiblement ça ne fonctionne que si le répertoire /tmp est dans le filesystem racine. La commande df permet de façon indirect de retrouver le device d'un répertoire.

Dans ce genre de script, il est TRÈS VIVEMENT recommandé d'ajouter un "set -eu" au début, afin de s'arrêter en cas d'erreur. Commentaire de skc

Répondre

#6 

Je pense que $sda devrait être $disk...

Qui plus est, attention car ce script ne fonctionnera pas en cas d'utilisation de cryptsetup, LVM, etc.

Chez moi, mount | grep -w "/" retourne :
/dev/mapper/vg_lebrac-lv_root on / type ext4 (options...) Commentaire de Votre Nom

Répondre

#7 

Il créee le fichier de test dans /tmp
Libre à vous de le modifier :)
+1 Commentaire de doudoune canada goose

Répondre

#8 

Très interessant, merci pour cette info pertinente et à bientôt :D Commentaire de smileys facebook

Répondre

#9 

Coucou, je trouve que votre opinion de ce thème est réellement intéressante, et je souhaite vous dire merci pour post enrichissant. Quoiqu'il arrive, je reviendrai dès que je le pourrai. Bien sur, si vous envisagez de visiter ma page web, n'hésitez pas. Continuez ! Commentaire de Sophie

Répondre

#10 

Pourquoi la ligne avec le mount est répété deux fois plutôt que de faire un "echo $disk" ? Commentaire de Coupe du monde

Répondre

#11 

Visiblement ça ne fonctionne que si le répertoire /tmp est dans le filesystem racine. La commande df permet de façon indirect de retrouver le device d'un répertoire. Commentaire de trafic organique

Répondre

#12 

merci du partage Commentaire de coque iphone 5 silicone

Répondre

#13 

Sympa le code Commentaire de Cath

Répondre

Fil RSS des commentaires de cet article

Les commentaires sont fermés.