Commande TRIM : le meilleur ami du SSD

Antoine Collin |
Un SSD Samsung dans un iMac - photo Aaron und Ruth Meder CC


Depuis l'avènement des SSD, la durée de vie et la tenue dans le temps au niveau des performances sont deux choses très importantes à prendre en compte. À un moment où Apple équipe de plus en plus ses ordinateurs avec des SSD — ou ce qu'Apple appelle stockage flash dans certains cas —, il n'est pas inutile de revenir sur la commande TRIM, le sésame qui permet de limiter l'usure et — surtout — la perte de performances dans le temps.

Les SSD et le TRIM



Un peu de technique, pour commencer, sur l'intérêt de la commande TRIM et la raison de son existence. Avec un disque dur classique, quand un fichier est supprimé, on efface simplement le premier maillon d'une chaîne, qui indique où se trouve le début du fichier ainsi que le secteur suivant, secteur suivant qui indique un autre secteur, etc.. L'intérêt est évident : l'effacement est rapide et réécrire les données sur un secteur contenant des données sur un disque dur n'est pas un problème.

Avec un SSD, c'est différent : la gestion de l'usure a besoin de secteurs vides du point de vue du SSD. En simplifiant, le contrôleur du SSD essaie d'uniformiser l'usure de la mémoire flash en déplaçant les données sur des secteurs peu usés, pour éviter qu'une cellule ne tombe en panne parce qu'elle a été trop écrite. Comme le contrôleur ne peut pas deviner qu'un secteur a été effacé au niveau du système de fichiers (seule la première partie du fichier a été effacée, rappelons-le), il est obligé dans certains cas de lire la cellule, la réécrire à un autre endroit et ensuite écrire la nouvelle donnée. C'est évidemment assez fastidieux, ça augmente l'usure (on écrit deux fois) et ça ralentit l'opération, étant donné qu'on va effectuer une lecture et deux écritures.

C'est là que la commande TRIM intervient : au lieu d'effacer le premier maillon de la chaîne, on va indiquer au contrôleur du SSD que chaque secteur qui était utilisé par le fichier est vide. Techniquement, on n'efface pas directement les données, on indique à la table LBA du SSD — qui référence chaque secteur — qu'un secteur est vide. On va donc gagner en performances : quand le contrôleur cherchera un secteur peu usé, il ira en priorité vérifier dans ceux qui sont vides. Et donc au lieu d'une lecture et de deux écritures, on aura simplement une seule écriture. Le seul inconvénient, c'est que l'effacement d'un gros fichier peut prendre quelques secondes de plus, le temps d'envoyer la commande pour chaque secteur. De même, l'effacement de la corbeille est un peu plus lent quand le TRIM est actif.

La commande TRIM n'empêche pas l'usure du SSD, mais elle permet de la limiter, et elle évite surtout les pertes de performances. Attention, elle a un impact sur quelque chose de précis, la récupération des données effacées. En effet, le SSD utilisé avec la commande TRIM va réécrire en priorité sur les données effacées, ce qui n'est pas le cas avec un disque dur classique où les réécritures sont plus aléatoires. Il est donc plus compliqué de récupérer des données sur un SSD que sur un disque dur.

Un peu d'histoire



Le TRIM et OS X, ça n'a jamais été un couple tranquille. Alors que Linux prend en charge la commande depuis 2008 et que Microsoft a intégré son support dans Windows NT 6.1 (Windows 7 et Windows Server 2008 R2) dès octobre 2009, le « système d'exploitation le plus avancé au monde » n'a pris en charge la commande qu'en juin 2011, avec la dernière mise à jour mineure de Snow Leopard, la 10.6.8. Les versions suivantes du système d'exploitation, Lion, Mountain Lion et le futur Mavericks, prennent bien évidemment en charge cette commande qui fait partie de la norme ATA.

Pour les SSD Apple uniquement



La prise en charge chez Apple est comme souvent un peu particulière : la commande n'est supportée (et activée) par défaut que sur les SSD Apple. Bien évidemment, il est possible d'activer la commande manuellement sur d'autres SSD, nous allons le voir dans la suite. Avant d'activer le TRIM, il faut prendre en compte quelques points. Premièrement, il faut un système d'exploitation qui prend en charge le TRIM, soit Snow Leopard en version 10.6.8, Lion ou Mountain Lion — voire Mavericks pour les plus hâtifs. Deuxièmement, il faut un SSD compatible avec la commande TRIM. La majorité des SSD sortis après 2009 sont compatibles, certains modèles plus anciens le sont aussi avec une mise à jour de firmware qu'il faudra donc effectuer le cas échéant. Attention, il y a d'anciens modèles de SSD, comme les premiers Intel X25-M, qui ne sont pas compatibles.

La barrette SSD du MacBook Pro Retina 13" a la commande TRIM activée par défaut - photo iFixit



Enfin, la façon de connecter le SSD au Mac a une influence : la commande ne fonctionne qu'avec une interface SATA. La majorité des Mac utilisent des SSD SATA, que ce soit des modèles 2,5 pouces ou des barrettes propriétaires comme dans certains portables. Les exceptions notables en interne sont le SSD du premier MacBook Air, interfacé en PATA, et les baies optiques de certains vieux modèles. Les MacBook blancs et certains MacBook Pro (avant les Unibody) utilisent en effet un lecteur optique PATA et les OptiBay SATA pour ces modèles intègrent généralement un adaptateur PATA vers SATA qui ne permet pas d'utiliser la commande.

En externe, la commande TRIM est rarement supportée. L'USB 2.0, l'USB 3.0 (même en UASP) et le FireWire ne prennent pas en charge la commande, alors que les boîtiers eSATA sont compatibles, tout comme la majorité des boîtiers Thunderbolt. La raison est simple : les boîtiers Thunderbolt intègrent un contrôleur SATA classique qui utilise les pilotes standards d'OS X et ils supportent donc la commande.

Pour les amateurs de RAID, la commande fonctionne en RAID1 (mirroring) et en RAID0 (stripping) quand on utilise la gestion logicielle de Mac OS X, alors que les cartes intégrant un contrôleur RAID matériel ne prennent généralement pas en compte la commande.

Activer le TRIM



Comment activer le TRIM ? Si vous avez un SSD Apple, pas de soucis, la commande est activée. Dans les autres cas, la solution classique est le logiciel TRIM Enabler. Ce logiciel va modifier le pilote d'OS X qui gère la commande TRIM. Il faut lancer le programme, activer le bouton et redémarrer. Attention, il faut penser à modifier les paramètres Gatekeeper pour accepter n'importe quel logiciel sous Mountain Lion.



Une fois que c'est fait, il faut se rendre dans le menu , A propos de ce Mac, cliquer sur Plus d'infos... puis sur Rapport Système.... Ensuite, il faut aller vérifier dans l'onglet SATA/SATA Express (ou ATA série, en fonction du système) si le TRIM est bien activé.



Si ce n'est pas le cas, il existe une solution manuelle, avec les commandes suivantes à entrer dans le Terminal :

sudo perl -pi -e 's|(x52x6Fx74x61x74x69x6Fx6Ex61x6Cx00{1,20})[^x00]{9}(x00{1,20}x4D)|$1x00x00x00x00x00x00x00x00x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage


sudo kextcache -system-prelinked-kernel


sudo kextcache -system-caches


Une fois les commandes exécutées, il faut redémarrer l'ordinateur.

Normalement, une fois le TRIM activé, il l'est pour tous les SSD présents dans la machine. Attention à un point : étant donné que l'activation consiste à modifier un fichier système, chaque mise à jour mineure (les 10.x.x) risque de supprimer la modification. Dans les faits, Apple modifie assez rarement le fichier en question et il n'est donc pas toujours nécessaire de relancer la modification, mais il est toujours plus prudent d'aller vérifier, surtout si vous avez appliqué une mise à jour combo.

Nettoyer un SSD usé



Prenons maintenant un cas assez classique : vous avez un SSD qui n'a pas toujours été utilisé sous OS X et qui est usé. Le système d'Apple dispose heureusement de quelques outils qui permettent d'appliquer la commande TRIM sur l'espace libre — nous l'avons vu auparavant, le principe du TRIM consiste à indiquer au contrôleur du SSD qu'une donnée a été effacée logiquement — et donc de rendre une seconde jeunesse à un SSD. Il s'agit en simplifiant d'une synchronisation entre le système de fichiers et le contrôleur du SSD.

Le premier cas est le plus simple : le SSD ne contient pas le système d'exploitation et il est connecté avec une interface compatible avec le TRIM (SATA en interne, eSATA, Thunderbolt). Dans ce cas précis, c'est assez simple : il suffit de lancer Utilitaire de disque (il se trouve dans /Applications/Utilitaires), de choisir la partition que vous voulez « TRIMer » et de cliquer sur le bouton Réparer le disque dans l'onglet S.O.S.. Dans la liste des actions, vous devriez remarquer « Élagage des blocs inutilisés. », une traduction malheureuse de « Trimming unused blocks. » qui indique que la commande a été envoyée au SSD.



Le second cas, c'est si votre SSD contient le système d'exploitation. Il faut d'abord redémarrer en mode Single User ( + s au démarrage) et ensuite taper la commande suivante au prompt : fsck -fy. Normalement, vous devriez voir — si le TRIM est activé — une ligne « Trimming unused blocks » à la fin, dans la liste des actions. Il suffit ensuite de redémarrer.

Le dernier cas, c'est si vous avez un SSD en USB (2.0 ou 3.0), en FireWire ou en PATA ou si votre machine utilise un système d'exploitation qui ne prend pas en charge le TRIM, par exemple OS X Leopard. Dans ces cas-là, point de salut : la perte de performances en écriture est inéluctable. Dans la pratique, la perte de performances varie fortement en fonction du modèle de SSD — les contrôleurs SandForce sont plus sensibles que les autres — et en fonction de l'usage. Si vous utilisez un SSD pour du stockage de gros fichiers, la fragmentation interne sera faible et les écritures rares et la perte de performance dans le temps peu importante. A contrario, si vous utilisez le SSD de façon intensive, les performances en écriture peuvent s'effondrer. La seule solution consiste à envoyer la commande TRIM depuis une machine compatible, quand c'est possible.

Sous Windows, il existe une solution parfois proposée par les concepteurs des contrôleurs : un logiciel qui va analyser le SSD et indiquer au contrôleur quelles sont les zones inutilisées. De même, certains SSD intègrent un Garbage Collector (un processus interne au SSD) capable de détecter les données effacées. Mais le problème, c'est que ces solutions impliquent l'utilisation d'un système de fichiers NTFS, alors qu'OS X utilise le HFS+. Avec un Mac, la première solution ne fonctionne évidemment pas alors que la seconde est moins efficace, même si elle est fonctionnelle.

Au final ?



Si vous avez un SSD, la commande TRIM est importante : elle permet d'éviter de perdre en performances et de limiter en partie l'usure de la mémoire. Le fait qu'Apple limite la commande TRIM à ses propres SSD reste évidemment un problème, même si actuellement il est possible d'activer cette commande avec n'importe quel SSD compatible et d'effectuer un nettoyage avant cette activation. Espérons simplement qu'Apple ne modifiera pas la gestion de cette dernière dans les prochaines versions d'OS X, où alors dans le bon sens, en permettant à n'importe quel SSD de recevoir la commande...

Sur le même sujet :
- Installer un SSD dans un MacBook Pro : première partie
Tags
#SSD #trim
avatar Anonyme (non vérifié) | 
Il existe aussi Chameleon SSD Optimizer : http://chameleon.alessandroboschini.it/index.php pour permettre le TRIM sur des SSD non Apple. C'est le programme que j'utilise, et je pense qu'il doit figurer ici...
avatar madaniso | 
Au début, c'était cher. J'avais acheter mon MBP d'occasion en 2010 et le mec en avait mis un de 80Go dessus. Depuis j'utilise les services en ligne pour augmenter mon espace de stockage mais aujourd'hui, les prix ont bien baisser et je pense qu'investir dans un SSD 256Go n'est plus un luxe et ça change vraiment une machine.
avatar Macmao | 
D'un autre côté OWC déconseille d'activer le TRIM pour leurs SSD ...
avatar eseldorm (non vérifié) | 
Deux pages pour arriver dire qu'il faut utiliser le TRIM alors que trois courts paragraphes suffisent. Ca fait beaucoup de verbiage tout de meme. Pas la peine de vous prendre pour Dumas et ecrire a la page :) Ou alors vous en etes au nombre de page/pub.
avatar arm07 | 
Question bête : comment savoir que mon SSD est "Apple" ? Car je n'ai rien changé sur mon MBA 2013 mais je ne savais même pas qu'Apple fabriquait ses propres SSD, d'ailleurs ça m'étonne beaucoup mais c'est ce que dit l'article.
avatar tigre2010 | 
@arm07 : Si tu l'as acheté neuf, c'est du Apple (Apple ne fabrique pas ses SSD, c'est Toshiba, Samsung et SanDisk qui fabrique pour Apple et Apple les estampille)
avatar lewax | 
Merci pour cet article instructif...j'utilise des ssd depuis 4 ans (cher le 120gb a l'époque!). J'ai activé trim dès qu'on m'en a parlé et aujourd'hui, j'ai l'explication.
avatar r e m y | 
je confirme le premier commentaire: Chameleon SSD Optimizer (gratuit) permet d'activer le TRIM et offre quelques options complémentaires qui sont dans les options payantes du nouveau TRIM Enabler
avatar The3DCie | 
@arm07 Apple ne fabrique évidemment pas de SSD, mais ceux qui sont intégrés dans leurs machines (et qui peuvent provenir de différents constructeurs, d'ailleurs...) sont reconnus comme étant le matériel d'origine de la machine et par conséquent Mac OS X applique la commande TRIM au SSD.
avatar KilEstBoLeMac | 
Très bon article, bravo. Merci pour ce partage de connaissance ;)
avatar patrick86 | 
@eseldorm : Toi tu es du genre à faire ce qu'on te demande, sans chercher à savoir pourquoi...
avatar stefhan | 
Merci pour l'excellent article ! Question subsidiaire : pourquoi Apple n'active que ses disques ? - Pour avoir moins de boulot ? (On est mieux servis que par soi-même) - Pour éviter d'avoir à assumer des disques mal conçus ? (façon windows)
avatar daxr1der | 
Ce qui est fou c'est qu'Apple à besoin de samsung mais pas l'inverse... Le piège à troll est posé il y a plus qu'a attendre. :-)
avatar calotype | 
Article intéressant mais trop long et incomplet, je ne suis pas un geek mais il me semble que des tests d'usures accélérés sur certains disques ont été fait par des sites spécialisés. Les retrouver et rajouter à votre l'article donnerait une idée bien plus concrète qu'un simple "pertes de performances" qui ne veut rien dire pour moi ... Question: le PCIe comporte-t-il aussi une interface sata, car si cela n'est pas le cas les SSD du derniers macbook air seraient donc aussi touché par le probleme de ne pas pouvoir être "trimer" ???
avatar FreddyF | 
J'avais pris un SSD crucial et d'après Crucial il dispose d'un garbage collector intégré qui rend inutile la commande TRIM. Qu'en pensez-vous ?
avatar calotype | 
@ stefhan il me semble de ce que j'ai compris jusqu'ici c'est qu'apple gagne de l'argent surtout sur le matériel plutot que le soft, ils font une bonne marge sur tout ce qui est disque et RAM . Du coup si le trim marchait pour tout disques SSD et temps que certains mac reste "upgradable" alors autant prendre l'entrée de gamme que l'on paie moins cher et dans laquelle on peut rajouter un supper gros SSD pour 30à 50 % de moins que ce que facture apple pour la même capacité, ce qui peut faire de sacrées économie. Même si cela se contourne, c'est toujours un petit frein de la part d'apple.
avatar nifex | 
@FreddyF : C'est fort possible car j'ai 2 crucial m4 512 Go depuis 2 ans (un dans mon MBP et l'autre dans un boitier externe thunderbolt) et je n'ai eu pratiquement aucun ralentissement malgré une utilisation quotidienne intensive... J'avais installé trimenabler mais ca m'avait crée plein de problème qui m'ont obligé à faire une réinstallation complète du système, depuis je vie très bien sans le trim :D
avatar pacou | 
@daxr1der Deuxième piège a troll posé : Samsung a besoin d'Apple pour deux raisons : - pour vendre son matériel - pour trouver l'inspiration
avatar hellric | 
Et dans les iPhone / iPads ? Trip est-il aussi activé ?
avatar Shralldam | 
@eseldorm Il y a des paires de baffes qui se perdent.
avatar typhlo2007 | 
Quelqu'un connaîtrait-il la durée de vie moyenne d'un SSD une fois le TRIM activé ? Avons-nous le recul nécessaire pour enfin s'y fier ?
avatar poulpe63 | 
@pacou : tout à fait, d'ailleurs c'est pour ça que Samsung et Apple sont interchangeables ! ;p
avatar vincentbls | 
Je n'ai jamais pu l'activer sur un MBP 17 2009 avec SSD Apple.
avatar i-stef | 
Merci pour ces infos
avatar Anonyme (non vérifié) | 
Et que donne un effacement complet du ssd via utilitaire de disque? est il remis à son état originel? est ce une solution pour retrouver les performances d'origine en écriture? y a t il sinon un utilitaire sur le marché faisant un "rattrapage trim" pour les utilisations qui ne peuvent l'utiliser (disque système en usb 2 ou 3)?

Pages

CONNEXION UTILISATEUR