>> - SSD et implémentation des systèmes de fichiers - Exposé de type Wiki sur les disques SSD et l'implémentation d'un système de fichiers
SSD et implémentation des systèmes de fichiers
Introduction au SSD
Le solid state drive (littéralement lecteur à l'état solide) est une unité électronique de stockage de données. Le terme "solid state" a été adopté pour distinguer cette technologie des unités de stockage de mémoire de masse magnétique.
Le type moderne de SSD a été développé pour la première fois en 1978 par Storage Tek. C'est en 1995 que M-Systems (racheté par SanDisk en novembre 2006) à, introduit les SSD basés sur la technologie Flash. Depuis cette période, les SSD ont remplacés avec succès les disques dur des industries aéronautique et militaire.
Le SSD est susceptible de remplacer d'ici quelques années les disques durs dont le principe consiste en un bras incorporant une tête de lecture balayant un ou plusieurs plateaux rotatifs.
Il existe 2 sortes de SSD, en fonction du type de mémoire qu'ils utilisent :
- Les SSD basés sur la DRAM (Dynamic Random Acces Memory) : La DRAM est une mémoire dite "volatile". C'est à dire qu'elle ne conserve aucune données une fois mise hors tension. Ce qui caractérise les SSD basés sur ce type de mémoire, c'est un accès ultra rapide aux données (généralement moins de 0,01 milliseconde). Les SSD utilisant cette technologie nécessite l'utilisation d'une batterie ou d'une alimentation externe pour prendre en charge la copie des données vers un disque de sauvegarde lors d'une perte tension. Les données ainsi sauvegardés sont alors chargés lors de la prochaine mise sous tension.
- Les SSD basés sur la NAND (operateur logique NON-ET) Flash memory : La plupart des fabricants utilisent cette technologie qui est plus compact et ne requiert pas l'utilisation de batterie. Les SSD basés sur la mémoire flash sont cependant plus lent que les SSD basés sur la DRAM. Les SSD utilisent soit les mémoires flash de type SLC( single level cell) soit les mémoires flash de type MLC (multi level cell). Tandis que le premier permet de stocker un bit par cellule, le second permet d'en stocker plusieurs mais engendre des pertes de qualité.
Comparatif système de fichier SSD
JFFS
- Mode d’écriture circulaire :
o Simple
o Toutes les données sont réécrites (même si non nécessaire)
o Diminue la longévité du disque
JFFS2
- Avantages
o Compatible avec la mémoire flash NAND
o Possibilité de compresser les données (avantage car capacité de stockage inférieur)
o Traite les données par blocs -> évite de toucher aux données statiques sur le disque
o Utilisation d’un ramasse miette (garbage collector)
- Inconvénient
o Ancienneté de sa conception
o Temps de montage : A besoin d’examiner tous les blocs mémoire au moment du montage du système de fichier afin de construire l’index qui est conservé en RAM (peu pénalisante).
=>Bien adapté au SSD de faible capacité
YAFFS
- Conçu pour la mémoire flash NAND
- Conçu de façon modulaire afin d’être utilisé avec d’autres systèmes d’exploitation (ex : Windows CE)
- Pas intégré dans la branche principale du noyau Linux => Risque de non compatibilité
YAFFS2
- Respecte la nécessité de n’écrire que le moins de fois possible sur les blocs mémoire
- Permet l’accès à la mémoire NOR
LogFS
- Spécialisé pour la mémoire flash NAND
- Ecriture séquentielle des données -> Pas de scan complet du volume au montage
- Structure du système de fichiers écrite directement dans le disque -> Accélère le montage
UBI
- Couche d’abstraction présente dans le noyau Linux depuis la version 2.6.22 -> Permet de gérer les périphériques à base de mémoire flash NAND -> Equivalent fonctionnel de LVM
- Mappage entre les blocs logiques de la mémoire flash et les blocs physiques -> Permet la répartition des écritures sur toute la mémoire
- Tient compte des blocs mémoire défectueux
- Gère la création de Volume UBI
- Déjà présente dans le noyau Linux
- Gère le disfonctionnement des blocs mémoires
UBIFS
- Développer par Nokia
- Utilisation de l’infrastructure UBI pour le développement de ce système de fichier
- Conservation sur le disque flash de l’index de la structure du système de fichier
- Scan de l’intégralité du disque nécessaire au montage
- Utilisation d’un cache pour les données -> Permet d’éviter d’écrire les données de façon strictement synchrone -> Grand gain de performances
Extreme FFS
- Optimisation de l’endurance du disque
- Utilisation des différents canaux du bus interne de la mémoire flash NAND de manière indépendante (écrire, effacer et lire) -> Maximiser les performances multitâches du SSD
Ext4
- Gestion de l'espace disque basé sur la notion d'extent
- Augmentation du nombre de blocs (48 bits)
- Ajoute d’un somme de contrôle (checksum)
- Permet un nombre de sous dossier illimité
- Compatibilité descendante avec ext3
- Problème de perte de données
BTRFS
- Gestion de l'espace disque basé sur la notion d'extent
- Gestion dynamique de la taille du système
- Gestion native des snapshots avec snapshot en lecture écriture et snapshot de snapshot
- Gestion des sous-volumes
Le système de fichier idéal
Les atouts nécessaires à un système de fichier idéal
Le système de fichier idéal pour un disque SSD doit se démarquer des autres sur un certain nombre de points. En effet, les constructeurs de disques SSD vont tout faire pour rendre leur système le plus performant afin d'imposer une norme dans un domaine qui semble avoir beaucoup d'avenir.
Ainsi, un bon système de fichier conçu pour un disque SSD devra être rapide en ce qui concerne le temps de montage du disque, avoir les meilleures performances en écriture et en lecture et sera portable sur le plus grand nombre de plateformes.
Implémentation d'un système de fichier pour disque SSD
Les problématiques quand à la conception de système de fichier pour disques SSD sont les suivantes :
- Le système doit gérer les pertes de performances lorsqu’on écrit des petits blocs de données.
- Il doit prendre en compte que le disque SSD n'a connaissance de l'effacement d'une donnée que lorsqu'une nouvelle donnée est écrite à sa place. En effet, l'écriture et la lecture sur le disque se fait par page alors que l'effacement se fait par blocs. Ainsi, pour une écriture de 4 ko, on peut avoir jusqu'à 512 ko de lecture, une phase d'effacement, puis jusqu'à 512 ko d'écriture. cela provoque évidement une perte de performances, ce particulièrement lors d'écriture de fichiers non volumineux.
- Il doit utiliser le TRIM. Il s'agit d'une fonction proposée par le comité chargé de définir les spécifications de la norme ATA (Advanced Technology Attachment). Son but est de permettre au système d’indiquer au support de stockage qu’un LBA (adresses logiques utilisées par le système de fichiers) contient des données qui sont désormais invalides. Cela permet de remettre à zéro les blocs dont les pages ne font plus partie de la table d’allocation. Ainsi, le write combining (principe du contrôleur Flash qui se charge d’allouer au mieux les pages) intervient et combine plusieurs écritures aléatoires en une seule écriture séquentielle, ce qui permet un gain en performances et évite l'usure du disque SSD.
- Afin d'utiliser cette fonction,il faut que le disque SSD supporte cette fonctionnalité et que le système en tire partie. (Linux et Windows Seven en sont capables)
Schema descriptif de la fonction trim sur un disque SSD:
Conclusion
Aujourd'hui les systèmes de fichiers les plus utilisé pour les disques SSD sont les suivants :
- EXT3, mais les performances ne sont pas optimisés
- EXT4, malgré un mauvais départ pour cause de pertes de données, mais le problème est maintenant réglé