TRIM

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Trim.

En informatique, TRIM est une commande qui permet à un système d’exploitation d'indiquer à un contrôleur de disque de type mémoire flash (SSD) quels blocs de données ne sont plus utilisés et peuvent donc être effacés. Cette commande améliore les performances d'accès aux disques SSD.

Principe[modifier | modifier le code]

Le but de cette instruction est de maintenir la vitesse du SSD tout au long de sa vie, évitant le ralentissement que les premiers modèles rencontraient une fois que toutes les cellules étaient écrites au moins une fois.

Bien que des outils fussent disponibles pour remettre à l’état initial certaines unités, ils effaçaient toutes les données sur l’unité ce qui rendait cette optimisation impraticable.

En effet, les unités SSD ne savent pas quels blocs sont réellement utilisés et quels blocs sont libres, car elles ne sont pas informées des structures du système de fichier utilisé. Les clusters inutilisés sont donc inconnus du disque. Deux choses en découlent :

  1. Les SSD peuvent écrire des blocs de kio, mais pour des raisons matérielles ils doivent effacer des blocs plus larges (par exemple 128 ou 512 kio). Comme l’unité ne sait pas quels sont les blocs de 4 kio toujours en cours d’utilisation s’ils ont été écrits précédemment, chaque écriture demandera un cycle lecture-effacement-modification-écriture portant sur une zone plus vaste, en supposant qu’il n’y ait pas d’autres blocs libres sur le SSD (c'est-à-dire après que tous les blocs ont été partiellement remplis). Ce phénomène est appelé amplification d’écriture (« write amplification »).
  2. La mise à niveau de l’usure (« wear levelling ») permet à une unité de réarranger ses données pour que les écritures ne soient pas confinées à un seul endroit de la carte flash. Les cellules flash tolèrent quelques dizaines de milliers d’écritures avant de devenir inopérantes. Certains contrôleurs SSD déplacent donc les données sur toute l’unité pour exercer l'usure de façon égale sur tous les blocs. Si l’unité ne sait pas quels blocs sont réellement utilisés par le système de fichiers, chaque bloc de données écrit sur l’unité demande une écriture additionnelle due au déplacement du bloc.

La commande TRIM purge complètement les données affectées. La récupération de données devient donc impossible (ce qui sera un avantage ou un inconvénient suivant le contexte).

La spécification de la commande TRIM est standardisée en tant que partie du standard d’interface AT Attachment (ATA), mené par le Comité Technique T13 de l’International Commitee for Information Technology Standards.

Prise en charge par le matériel[modifier | modifier le code]

Le SSD doit supporter le TRIM. Les anciens modèles devront recevoir une mise à jour de leur firmware, faute de quoi cette commande sera ignorée.

Il faut aussi un contrôleur ATA gérant le 48-bit LBA addressing et dont le pilote supporte le TRIM. En général c'est le cas des contrôleurs Serial ATA supportant la norme AHCI.

Prise en charge par le système d’exploitation[modifier | modifier le code]

  • Microsoft Windows : TRIM a été implémenté dans Windows 7 et Windows Server 2008 R2, et livré avec la version finale de ces systèmes d’exploitation en octobre 2009.
  • Linux :
    • S'agissant du système de fichiers ext4 : la fonction TRIM (méthode dite on-the-fly trim, online discard ou encore realtime discard) a été intégrée dans la version 2.6.33 du noyau (à noter, d'une part, que la fonction doit être activée manuellement en ajoutant l'option « discard » dans le fichier fstab, et, d'autre part, que certaines distributions ont rétroporté la fonction dans un noyau plus ancien  :
    • la version 6 « Squeeze » de Debian dispose d'une version du noyau 2.6.32 gérant le TRIM dans les dépôts officiels Backports) ;
    • La version 2.6.37 du noyau ajoute la fonction FITRIM (méthode dite batch discard) pour ext4 qui permet de différer l'exécution de commandes TRIM en vue de les traiter d'un coup (cette fonction est réalisée par le programme fstrim qui dépend de la suite util-linux version 2.19 ou supérieure)[1].

NB: S'agissant du système de fichiers Btrfs : le online discard est géré depuis la version 2.6.32 du noyau, et le batch discard est géré depuis la version 2.6.39.

  • Mac OS X : la commande TRIM a été implémentée à partir de la version 10.6.6 (Snow Leopard) en février 2011, mais le système est par défaut limité aux seuls SSD installés par Apple[2]. Il est possible d'activer le TRIM sur d'autres marques de SSD à l'aide d'utilitaires forçant la commande sur tout type de SSD.

Là où TRIM n’est pas automatiquement supporté par le système d’exploitation, il existe des utilitaires envoyant des commandes TRIM manuellement. Typiquement, ils listent tous les blocs libres spécifiés comme tel par le système d’exploitation et passent ensuite cette liste sous la forme d’une série de commandes TRIM à l’unité. Ces utilitaires sont disponibles chez différents fabricants (Intel, XtremeSystems) mais il existe également des outils génériques comme hdparm (depuis sa version v9.17).

Références[modifier | modifier le code]

  1. The best way to throw blocks away, sur le site lwn.net, consulté le 11 novembre 2013
  2. Mac OS X et le TRIM : "The" bidouille, sur le site presence-pc.com du 25 mars 2011

Articles connexes[modifier | modifier le code]