SSD, un HDD plus rapide ?
Les disques durs SSD ont émergé relativement récemment. Le gain de performance par rapport aux disques durs HDD est indéniable mais est-ce réellement aussi simple que ça ? Et d’ailleurs, qu’est ce que c’est exactement un SSD ?
La principale différence est que le SSD est muni d’une mémoire flash alors qu’un HDD utilise une mémoire mécanique.
Une mémoire flash n’a pas d’élément mécanique et n’a pas de problème de temps d’accès en opposition avec une mémoire mécanique qui se soucie du positionnement de son aiguille sur le disque pour lire ou écrire dessus.
En contrepartie, une mémoire flash a un nombre d’écritures limité alors que la mémoire mécanique n’en a pas.
Les problématiques n’ont donc rien à voir ! Pour un HDD, on cherche à réduire le temps passé à placer l’aiguille au bon endroit tandis que pour un SSD, on veut limiter le nombre d’écritures. Cela a pour conséquence que les algorithmes d’optimisation sont complètement différents, les optimisations de l’espace pour un HDD ne sont qu’un ralentissement et un raccourcissement de la longévité dans un SSD.
Il vient donc que le gain de performance du SSD par rapport au HDD n’est pas gratuit. Cela nécessite beaucoup de changements pour les systèmes de fichiers qui jusque là étaient optimisés pour une mémoire de type mécanique.
Prenons l’exemple de ext4, qui marche encore très bien pour les SSD après les changements suivants :
– Swap déprécié
– Journalisation non recommandée
– On peut vouloir se passer de certaines métadonnées pour limiter l’écriture
– Utilisation de discard + TRIM : la mémoire non utilisée est gérée
– Le dossier /tmp n’est pas utilisé (déplacé sur le HDD si possible)
Comment gérer ce nombre d’écritures limité si embêtant et qui menace nos SSD ?
Les disques SSD sont munis d’un contrôleur SSD qui s’assure du “wear-leveling” (uniformisation d’usure), la non-réécriture au même endroit de sorte qu’il n’y ait jamais de “zone morte”.
Pour bien comprendre les algorithmes de wear-leveling, il faut d’abord différencier les données qu’ils trient. On distingue 2 types de données dans un disque: statiques et dynamiques.
Les données statiques sont des données qui nécessitent très peu de réécriture comme le noyau de l’OS ou les fichiers MP3. On peut les voir comme des fichiers qui sont presque en lecture exclusive, ce qui est parfait pour un SSD qui veut limiter l’écriture mais qui est bien plus rapide qu’un HDD pour lire.
Les données dynamiques sont des données qui sont souvent modifiées, et donc qui nécessitent beaucoup de réécritures comme les fichiers tmp.
Il vient immédiatement qu’il est plus raisonnable d’avoir 2 disques durs avec une vision assez simpliste: répartir les données de sorte à ce que les données statiques soient dans le SSD et les données dynamiques soient dans le HDD le plus possible.
En bref, dans une utilisation raisonnable, on peut s’attendre à environ 70% de données statiques et 30% de données dynamiques dans un SSD.
Algorithmes de wear-leveling
Sans :
Le disque se comporte comme pour un HDD: il réécrit aux mêmes endroits sans se soucier de l’usure. On va assister à la mort relativement rapide et sûre du disque.
Wear-leveling dynamique :
Le disque va compter le nombre de réécriture dans chaque bloc et, lors d’une nouvelle écriture, va sélectionner le bloc libre qui a le moins d’écritures.
problème: seuls 30% du disques sont effectivement utilisées en écriture, la mémoire utilisée statiquement n’est jamais sollicitée
Wear-leveling statique :
Le disque compte encore le nombre de réécriture dans chaque bloc. Il déplace les données de sorte à ce que ce nombre soit distribué uniformément dans tous les blocs : les données statiques sont placées en priorité dans les blocs dont le degré d’usure est élevé.
Dans le cas du 70/30, la longévité est environ 3x plus élevée que pour l’algorithme dynamique.
Cela vient avec un coût de performance en temps d’exécution et en énergie consommée par rapport au wear-leveling dynamique.
Conclusion
Les disques durs SSD nous apportent un gain de performance indéniable. Cependant, les utiliser à mauvais escient va causer une mort prématurée. Quand même les différents algorithmes d’optimisation aident à leur longévité et les systèmes de fichiers se sont adaptés, il reste raisonnable de les utiliser en parallèle avec un disque dur HDD.
De nos jours, on peut écrire/réécrire plus de 800 To de données dans nos SSD et ils peuvent vivre des dizaines d’années !
Vianel Ebourefe, Johann Hospice, Jude Ingani, Paul Zheng