[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Installation sur un SSD



Francois Lafont a écrit :
> 
> Mais alors, si jamais on monte un disque SSD sans l'option discard _et_ sans
> prendre le soin de faire un fstrim régulièrement, alors que se passe-t-il ?
> Le disque va se remplir inexorablement au fil du temps

Oui, en quelque sorte.

> et à un moment donné je ne pourrai tout simplement plus écrire dessus

Non, quand même pas. Mais les écritures seront beaucoup plus coûteuses.

> Personnellement, j'aurais plutôt pensé que le SSD fait le trim lui-même tout
> seul comme un grand, quand ça l'arrange.

C'est impossible puisque le TRIM sert justement à l'informer des blocs
qui ne sont plus occupés. Certains SSD ont essayé de faire ça
d'eux-mêmes mais ne savaient lire que NTFS. Inutile de dire qu'avec les
autres systèmes de fichiers, ça a été la catastrophe.

> En fait, je pensais même que le discard ou le fstrim auraient même tendance à
> diminuer la durée de vie du SSD vu que ça l'oblige à effacer des cellules à un
> moment où, peut-être, ce n'est pas nécessaire.

Rien n'oblige le SSD a effacer immédiatement suite à une commande TRIM.

Un peu d'explication.

Bien que la finalité soit la même, un SSD fonctionne très différemment
d'un disque dur.

Un disque dur est divisé en secteurs indépendants les uns des autres (à
l'exception des disques au format avancé 512e où plusieurs secteurs
logiques sont regroupés dans un secteur physique, mais on va faire
l'impasse). Chaque secteur a un contenu (que ce soit des zéros ou autre
chose n'a pas d'importance) et la modification de ce contenu se fait
simplement en écrivant par dessus, comme une bande magnétique. Il y a
une correspondance entre l'adresse logique d'un secteur et sa position
physique sur le disque (à l'exception des secteurs défectueux qui ont
été réalloués).

Un SSD est très différent. Les secteurs ne sont pas indépendants : ils
sont regroupés en pages (typiquement 4 ou 8 Kio), et les pages sont
regroupées en blocs d'effacement (typiquement 1 Mio). L'écriture ne peut
se faire que sur une page entière, mais il y a pire : on ne peut écrire
que dans une page préalablement effacée. On ne peut pas réécrire
directement par dessus une page qui a déjà été écrite, il faut d'abord
effacer tout le bloc qui la contient. Or l'effacement d'un bloc est une
opération coûteuse, en temps et en usure des cellules.

C'est un peu comme écrire au crayon sur une feuille de papier : pour
réécrire au même endroit, il faut d'abord effacer à la gomme, ce qui use
le papier. A la longue, à force de gommer un emplacement, le papier
devient trop usé et inutilisable.

Au début, toutes les pages sont vides, tout va bien. On écrit donc sans
avoir besoin d'effacer. Quand les données d'une page doivent être
modifiées, on écrit les nouvelles données dans une autre page vide et on
marque l'anciene page comme obsolète. C'est rapide. Au passage on devine
qu'il n'y a plus de correspondance entre l'adresse d'un secteur et sa
position physique. Si on ne fait rien, à force d'écrire et de modifier
les données, toutes les pages vont finir par être écrites, qu'elles
contiennent des données obsolètes ou actuelles. Pour continuer à écrire,
il va falloir effacer des blocs de pages contenant des données
obsolètes. Si toutes les pages d'un bloc contiennent des données
obsolètes, il suffit d'effacer le bloc. Mais si certaines pages du bloc
contiennent des données actuelles, il faut les copier dans une mémoire
tampon, effacer le bloc et réécrire les données.

On ne peut pas faire ça à chaque nouvelle écriture, ce serait trop
coûteux en temps et en usure. Pour éviter cette situation, le SSA
procède régulièrement à un "ramasse-miettes" (garbage collection). Cela
consiste à transférer les données des pages actuelles dans de nouveaux
blocs et d'effacer les anciens blocs. Le but est de toujours disposer de
suffisamment de pages vides d'avance pour que l'écriture reste rapide.
Il ne faut pas le faire trop souvent non plus car, comme tout
effacement, cela augmente l'usure.

C'est notamment ici que le TRIM intervient : en marquant des secteurs
comme obsolètes lors de l'effacement d'un fichier, il facilite le
ramasse-miettes. Pour que cela soit efficace il vaut mieux que le
système d'exploitation utilise comme unité de stockage des blocs de
secteurs coïncident avec une ou plusieurs pages du SSD (d'où les
contraintes nouvelles d'alignement des partitions), ainsi tous les
secteurs d'une page seront marqués en même temps et la page pourra être
écartée.

Le TRIM en lui-même ne fait que marquer les données obsolètes, il
n'efface rien. Un firmware de SSD bien conçu ne devrait pas déclencher
le ramasse-miette en fonction de la fréquence du TRIM mais seulement en
fonction du nombre de blocs libres et du taux d'écriture.


Reply to: