# [OFF] SSD, TRIM et linux - la vérité vraie

## El_Goretto

Bonjour,

J'ai craqué récemment (mais pas trop fort, c'était une promo, je vous jure!) pour un joli petit SSD 60 Go à base de SandForce, et je me suis de ce fait coltiné pas mal de lecture.

Je m'en vais donc de ce pas vous faire part de mes découvertes...

En particuliers, en commençant par les problématiques d'alignement de début de partition, même sujet que pour les volumes RAID. La seul subtilité étant de ne pas se planter en alignant seulement sur 4K (taille "de bloc" en lecture) mais sur la taille des "erase block" qui font par exemple 512K (cf les tenants et aboutissants de la techno MLC). Oui, ça surprend un peu quand on croit avoir tout fini et que paf, faut tout péter. Cf le modèle spécifique de SSD pour savoir la bonne valeur.

Ensuite, le sujet du support de TRIM par notre cher OS. 

Alors oui, ext4 par exemple, ok, si on n'oublie pas l'option de montage "discard", ah, très bien, ça  "TRIMe" à la volée.

Sauf que... si vous avez un couche supplémentaire entre le FS et le SSD, disons toutes les joyeusetés à base de device-mapper, vous pouvez vous assoir dessus. Si si, vous savez, dm-crypt et... LVM. HAHAHAHAHA   :Twisted Evil:   Ouned!!! [edit: ce n'est plus totalement vrai, LVM supporte TRIM partir du noyau 2.6.36]

Bref, si vous faites parti du club (comme moi) des gens qui ne conçoivent pas qu'on puisse avoir un setup Linux durable sans LVM, ça fait mal.

Donc le support de TRIM sous Linux, on nous aurait menti?

Alors oui et non, c'est toujours une affaire à suivre côté kernel pour le point précédent, mais il existe des solutions en attendant, remercions l'auteur de hdparm pour son script magique "wiper.sh" qui fait tout en userland. Celui-ci est fourni avec ou à côté de hdparm suivant les versions, et permet de "TRIMer" à la demande un système de fichier.

Tellement c'est beau que la dernière version intègre la gestion du NTFS et du HFS+. C'est les fanboys de la pomme qui vont être content (MacOS X ne gère pas du tout TRIM), au moins autant que ceux qui restent sous XP (idem).

Bon, par contre, pour que wiper.sh gère lui aussi device-mapper & co, il faut pour le moment le patcher car ce n'est pas de base.

Pour ceux que ça intéresse, l'auteur fréquente le forum d'une marque de SSD (le lien), ce qui permet d'avoir des infos assez intéressantes.

N'hésitez pas à partager vos propres expériences et lectures sur le sujet.

----------

## GentooUser@Clubic

Heu d'après ce lien le TRIM marche avec LVM https://linuxfr.org//2010/10/21/27463.html#bref10

Par contre effectivement pas avec dm-crypt, et là, je dirais à la limite "normal" si dm-crypt se comporte comme TrueCrypt et remplis la totalité de son espace avec des données aléatoires, donc pas vraiment d'espace libre du point de vue du périphérique de stockage (du coup ay ay ay pour les SSD anéfé)

Sinon t'a partitionné comment ? Je suis très intéressé par un SSD, mais hors de question de mettre /usr/portage ni de compiler les paquets dessus j'imagine, du coup sous Gentoo ça limite un peu l'intérêt vu que ce sont les parties du système pour lesquelles un boost est le plus appréciable !Last edited by GentooUser@Clubic on Thu Nov 18, 2010 5:24 pm; edited 1 time in total

----------

## gregool

Merci pour le retour, tu as porté ton choix sur quel matériel? moi je suis en pleine lecture également, j'ai une mobo qui gère le SATA3 mais je m'orienterais vers un OCZ Vertex 2 pour l'instant.

----------

## El_Goretto

Oh, quelle bonne nouvelle, merci GentooUser@Clubic  :Smile: 

Donc ok, support du TRIM "online" par LVM à partir du noyau 2.6.36, ça date d'il y a 1 mois  :Smile:  Je corrige mon post.

Sinon, oui gregool, c'est un Vertex 2 aussi que j'ai, mais en petit pour me faire la main, parce que OCZ a une réputation assez "bleeding edge", voire un peu "experimental"  :Smile:  Donc je le teste un peu dans tous les sens (secure erase & co, y compris l'upgrade de firmware sous windows pas piqué des vers, faut parfois faire un reset CMOS... ça a été mon cas.). Ceci dit, pour le moment, ça a marché sur mon ICH9 tout vieux (en mode IDE, argh) ou ma carte areca 1220 (le temps que je comprenne que c'était une mauvaise idée car pas de TRIM du tout).

Je continue de tester wiper.sh avant d'y mettre définitivement 1 OS.

Pour mettre un linux sur un SSD, je pensais tout mettre sauf /usr/src (les kernels), et /usr/portage, voire /var et /tmp pour les extrémistes (ou bien seulement /var/tmp pour l'espace de compilation portage et ccache).

Votre avis?

----------

## El_Goretto

En complément de wiper.sh pour lancer un "TRIM" à la demande, pour réinitialiser complètement un SSD il y a la manip' via l'instruction ATA secure erase: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

Paf pastèque, façon sortie d'usine.

Chez moi je suis toujours en "frozen" après un boot, je dois jouer du cable SATA et alim sur le SSD avant de passer "not frozen" et jouer la suite des commandes.

--

edit:

Un post de blog à propos de l'alignement des partitions sous linux, en particuliers, l'alignement sur la taille des erase blocks, et la commande qui va bien pour formater en ext4 (note: pour un Vertex2, les erase blocks sont de 512K semble-t-il).

----------

## El_Goretto

J'ai re-cherché le test qui permet de vérifier que TRIM/discard est bien fonctionnel sur un système de fichier donné: https://sites.google.com/site/lightrush/random-1/checkiftrimonext4isenabledandworking

Juste un petit complément d'info pour faciliter ce test, à l'étape 3&4, un exemple:

```
# hdparm --fibmap tempfile

tempfile:

 filesystem blocksize 4096, begins at LBA 2048; assuming 512 byte sectors.

 byte_offset  begin_LBA    end_LBA    sectors

           0    2110464    2114559       4096

     2097152    2209792    2213887       4096

     4194304    2271232    2279423       8192

     8388608    3196928    3282943      86016

```

La commande suivante est alors:

```
# hdparm --read-sector 2110464 /dev/sdX
```

----------

## freezby

Salut,

Si ça peut en intéresser quelques un, j'ai repéré que btrfs a une option de montage "ssd". Je ne sais pas ce que cela apporte par contre.

[edit] Apparemment après m'être documenter, ca n'a pas l'air d'être la panacée....

Sinon, excusez mon ignorance mais pourquoi ne pas monter /usr/portage & co sur le ssd ? quels désagrément cela engendre ?

----------

## El_Goretto

L'idée est de rentabiliser l'utilisation en lecture du SSD tout en minimisant les accès en écriture (usure).

/usr/portage n'étant lu que lors d'un emerge, et mis à jour intensément à chaque synchro de l'arbre... CQFD  :Smile: 

----------

