Go to Top

Augmenter la durée de vie de son SSD grâce au wear leveling

Le wear leveling, qu’est-ce que c’est ?

Le terme wear leveling (uniformisation d’usure), est une technique utilisée par certains contrôleurs SSD pour augmenter la durée de vie de la mémoire. Le principe est simple : répartir uniformément les écritures pour que tous les blocs du SSD s’usent uniformément.

Toutes les cellules reçoivent le même nombre d’écriture, pour éviter d’écrire trop souvent sur les mêmes blocs et ainsi de les user.

Les SSD sont faits de mémoire flash et chaque unité d’une cellule flash permet un nombre fixe de lecture et d’écriture, allant de 10 000 à 100 000. Alors imaginons que vous possédez 400 Go d’espace dans votre SSD et vous écrivez et supprimez 100 Go de données tous les jours ; le wear leveling fera en sorte que ces 100 Go de données ne soient pas écrit à un endroit fixe dans les blocs flash physiques qui se composent de nombreuses cellules, mais distribués dans toutes les cellules physiques du SSD soit sur les 400 Go. Expliqué simplement, cela permet de diviser les 400 Go de mémoire physique en 4 blocs de 100 Go chacun et de les appeler blocs 1, 2, 3 et 4. Ainsi, lorsque vous écrivez 100 Go de données le jour 1, ils sont écrits dans le bloc 1 et quand vous supprimez et réécrivez des données le jour 2, alors ils seront stockés dans le bloc 2 et ainsi de suite. Cela garantit que toutes les cellules physiques sont utilisées de manière uniforme pour améliorer la longévité de votre SSD.

Application du wear leveling

Le wear leveling peut être déployé via un microcontrôleur ou un micro logiciel contrôlant les cycles d’écriture par cellule ou via certains systèmes de fichiers conçus pour les mémoires flash.

Les algorithmes de wear leveling

Il existe de nombreux algorithmes pour le wear leveling. Limitons-nous ici à deux grands principes de base :

  • le wear leveling dynamique
  • le wear leveling statique

Le wear leveling dynamique

Avec le wear leveling dynamique, seuls les blocs qui sont réécrits sont déplacés dans des blocs neufs. Au moment de réécrire une donnée, l’algorithme sélectionne un bloc vide pour écrire la donnée à mettre à jour.

Pour y parvenir, le contrôleur du SSD garde en mémoire le nombre d’écritures de chaque bloc grâce à une mémoire non-volatile. Lorsque le SSD vient d’être fabriqué, le compteur est à 0. Il est ensuite incrémenté de 1 à chaque nouvelle écriture.

Le wear leveling dynamique n’est cependant pas optimal. En effet, un bloc est assigné aux données qui sont en lecture seule ou qui ne sont pas souvent mises à jour, et celles-ci n’en bougent pas. Il vaut donc mieux placer ce type de données sur des blocs usés et placer les données qui sont souvent modifiées dans des blocs faiblement usés.

Le wear leveling statique

Ici, le contrôleur choisit le bloc dans lequel réécrire la donnée parmi tous les blocs du disque dur : il va prendre un bloc qui possède relativement peu d’écritures, ce qui correspond à des blocs qui contiennent des données statiques, ou des blocs vides peu utilisés.

Conclusion :

Du fait de ses spécificités, le SSD est un disque dur qu’il est important d’optimiser. Le wear leveling est une technique reconnue pour y parvenir. Il existe par ailleurs d’autres types d’optimisation dont la plupart visent à réduire l’usure des SSD en limitant le volume d’écriture pour améliorer sa durabilité.

Laisser un commentaire