Le RAID n’a jamais été conçu pour protéger les données sur des lecteurs (disques durs ou SSD) de plusieurs dizaines de téraoctets, car il a été inventé avant même que les disques durs de 1 Go ne soient disponibles. L’idée de base était de répartir les données sur des disques durs plus petits afin qu’une seule panne n’entraîne pas nécessairement une perte de données. La protection des données est devenue plus complexe avec les lecteurs haute densité actuels. Les baies de stockage sont aujourd'hui livrées avec des disques durs accueillant jusqu'à 28 To (HDD) et des cartes flash de 72 To (chez Pure Storage par exemple). De plus, le coût de cette capacité de stockage est devenu incroyablement abordable : un SSD 4 To NVMe coûte environ 200 euros HT et un disque dur 14 To SATA se négocie à environ 220 euros HT.
Un tel rapport coût/capacité offert par ces lecteurs haute densité permet de stocker d’énormes quantités de données à un prix beaucoup plus attractif qu’auparavant. Alors, quel est le problème avec la conservation d’une grande quantité de données – plusieurs pétaoctets et au-delà – sur ces lecteurs à haute densité ? Avec la trentaine de To actuels (disques durs et SSD), le RAID présente une vulnérabilité importante à la perte de données, car le processus de reconstruction est long, une journée ou plus dans certaines implémentations. Il se prolonge encore davantage si la tâche est définie avec une faible priorité afin de préserver les performances d’E/S normales.
La course au To handicape le RAID
Qui plus est, il n’est pas déraisonnable de penser que ce que ces délais de reconstruction s’étendent sur plusieurs semaines à mesure que la densité des lecteurs augmente : 64 To annoncés chez Phison pour les SSD et 50 To pour les disques durs chez Seagate, également en 2025. À mesure que le nombre de ces lecteurs augmente, la reconstruction RAID est permanente, si on se base des taux de défaillance annuels (AFR ou Annual Failure Rate) pour les disques durs de l’ordre de 1,45 % selon les chiffres remontés par Backblaze. Il est moins élevé pour les SSD (0,98% seulement) toujours selon Backblaze.
L’idée d’ajouter un deuxième niveau de protection au RAID-5 sous la forme de ce que l’on appelle communément RAID-6 est née pour protéger les données contre deux pannes simultanées de lecteurs plutôt que contre une seule panne de disque dur ou de SSD. Une réponse à des densités de lecteurs atteignant des dizaines de To. La panne d’un deuxième lecteur (dans un groupe RAID-5) ou d’un troisième (dans un groupe RAID-6) devient plus probable lorsqu’on multiplie les unités de stockage, en particulier lors de longues reconstructions. De plus, si le système rencontre une erreur de lecture irrécupérable (URE) lors durant le processus, il peut perdre des données. La perte de six lecteurs ou plus, chacun contenant plusieurs téraoctets de données, se révélerait catastrophique pour certaines entreprises.
Entrer dans l’erasure coding
En revanche, l’erasure coding (code d'effacement) répartit les données dans plusieurs paquets codés avec des bits d’informations supplémentaires, envoyés à un récepteur, puis décodées et réassemblées en réception sous la forme des données d’origine. L’essentiel est que le récepteur puisse réassemble les données même si certains paquets sont perdus durant la transmission (c’est-à-dire que le récepteur dispose d’un sous-ensemble des paquets d’origine).
L’idée d’utiliser l’erasure coding pour les supports de stockage est née avec l’avènement des CD, DVD et Blu-ray, des sources multimédia qui devraient être lisibles même avec des rayures ou des dommages à la surface d’enregistrement. Les algorithmes les plus courants pour l’erasure coding dans ces applications reposent sur le code de correction Reed-Solomon (RS), développé dans les laboratoires Lincoln du MIT dans les années 1960. L’utilisation d’algorithmes d’erasure coding apporte une protection supérieure à la perte de deux lecteurs tolérés avec le RAID-6. Certaines implémentations résultent en plusieurs niveaux de protection des données contre les pannes, et quelques-unes permettent même à l’utilisateur (ou à l’administrateur de stockage) de spécifier le niveau de protection désiré sous forme de politique. Par exemple, l’administrateur optera pour une stratégie de survie des données après 4 pannes sur 16 lecteurs, ou 6 sur 16 lecteurs ou encore 10 sur 30 lecteurs. Il peut même demander à résister à l'indisponibilité de sites entiers (« survivre à une panne d’un datacenter sur trois »). Cela élimine un problème clé du RAID traditionnel, à savoir la tolérance à plus de deux pannes.
Découper les fichiers
La durabilité du stockage peut être obtenue par une combinaison d’erasure coding et de distribution des données codées. Les données entrantes (fichiers, vidéos ou images par exemple) sont d’abord décomposées en une série de blocs. Le mécanisme d’erasure coding leur applique sa transformation et génère un ensemble plus large de blocs de parité. Il répartit ensuite ces derniers sur plusieurs lecteurs du système de stockage, de sorte que la perte d’un ou plusieurs blocs de contrôle en raison de pannes de lecteur ou de composant permet cependant toujours de récupérer et de décoder avec succès les blocs de données d’origine, et ainsi de reconstituer les données.
Plusieurs systèmes de stockage (Hadoop, Raid-6 sous Linux, Microsoft Azure, Facebook cold storage, et Backblaze Vaults) sont aujourd’hui commercialisés avec des techniques traditionnelles d’erasure coding, et certaines variantes plus récentes telles que le code Tornado, du projet Mojette Transform du laboratoire IVC de l'IRCCyN à Nantes porté dans le passé par Rozo Systems ou encore celui de Memoscale, que Per Simonsen a commencé à développer lors de ses études à NTNU (Norwegian University of Science and Technology. Chacun présente des avantages en matière de protection des données contre les pannes multiples de composants, les erreurs de lecture irrécupérables et la pourriture des bits. Et beaucoup le proposent dans des systèmes qui réparent automatiquement les données en cas de panne de composants. Certains fournissent des niveaux extrêmement élevés de durabilité de stockage, du niveau des « 10 neuf ».
Un usage intéressant dans le cloud
Un mécanisme courant dans les environnements de stockage cloud actuels consiste à conserver plusieurs copies de fichiers (notez la prévalence des offres de services de stockage de type « trois copies dans le cloud »). Le cloud offre des niveaux élevés de durabilité du stockage, mais triple toutes les ressources sous-jacentes et les coûts opérationnels (disques, alimentation, espace de refroidissement et investissements). Même si cela ne pose pas de problème avec 300 téraoctets, cela peut devenir un facteur limitant lorsque 100 pétaoctets de capacité utilisable nécessitent 300 pétaoctets de capacité brute pour assurer la durabilité. Cette surcharge est en effet plus élevée qu’un ensemble RAID-6 en miroir (200 % de surcharge de stockage pour trois copies contre 150 % de surcharge pour un RAID-6 en miroir).
Grâce aux techniques d’erasure coding, des niveaux élevés de durabilité du stockage peuvent être obtenus avec une surcharge de stockage relativement faible. Dans une implémentation, une politique visant à protéger les données contre quatre pannes sur 16 lecteurs nécessite une surcharge de 60 %. En d’autres termes, chaque pétaoctet de capacité utilisable nécessiterait 1,6 pétaoctet de capacité brute. Cela peut permettre de réaliser d’importantes économies sur les coûts opérationnels par rapport aux approches alternatives. Les systèmes de stockage qui utilisent des codes d’effacement ont donc la possibilité d’exploiter les lecteurs haute densité pour stocker les données de manière plus économique et avec une fiabilité et une durabilité de stockage optimales.