- TRIM
-
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.
Sommaire
Principe
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.
Les unités SSD ne savent en effet 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 :
- Les SSD peuvent écrire des blocs de 4 KiB, mais pour des raisons matérielles ils doivent effacer des blocs plus larges (par exemple 128 KiB ou 512 KiB). Comme l’unité ne sait pas quels sont les blocs de 4 KiB 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 »).
- 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 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 la 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
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
- 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 : la fonction TRIM (méthode dite on-the-fly trim, online discard ou encore realtime discard) a été intégrée pour le système de fichiers ext4 dans la version 2.6.33 du noyau (à noter que 1° la fonction doit être activée manuellement en ajoutant l'option « discard » dans le fichier fstab 2° certaines distributions ont rétroporté la fonction dans un noyau plus ancien : ainsi 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].
- Mac OS X : TRIM a été implémenté au sein de la version Lion en février 2011, mais le système est volontairement bridé afin de n'accepter que les SSD installés par Apple[2].
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
Voir aussi
- Mémoire flash
- Solid State Drive, ces unités de stockage basées sur de la mémoire flash
- Wear levelling
- hdparm
Wikimedia Foundation. 2010.