Au cours des deux dernières décennies, la volumétrie des disques n’a cessé de croître ce qui n’a pas été (dans les mêmes proportions) le cas de leurs vitesses. Qui dit grosses volumétries suppose long délai de recouvrement (puisque la vitesse n’est pas proportionnelle). Ces délais induisent des risques évidents de pertes de données, puisque plus la durée de reconstruction est importante, plus le risque d’un nouvel incident augmente. Malgré l’introduction de solution de type RAID 6, où un disque supplémentaire de parité permet de supporter une seconde défaillance. La réponse RAID 6 reste toutefois insatisfaisante sur des volumes qui dépassent le Po où statistiquement le risque d’une double voir d’une tripe défaillance est réel .
Un changement d’approche est donc à considérer sérieusement. C’est ici qu’intervient l’Erasure-Coding (noté également EC).
Le mécanisme d’Erasure-Coding garantie la protection des données en divisant chaque objet (groupe de données) en différents petits morceaux (nommés « Data chunks »). Ces data chunks sont alors associés avec une combinaison de chunks spécifiques (nommés Coding chunks) et finalement répartis sur différentes zones de l’architecture de stockage. Diffèrent algorithmes peuvent être implémentés pour réaliser ce processus, celui que l’on rencontre le plus couramment est l’algorithme Reed-Solomon.
L’Erasure-Coding est basé sur l’équation suivante :
n = k + m
où
- k est le nombre de chunks qui divise l’objet source
- mest le nombre de chunks de codage qui sont ajoutés aux data chunks (n-k)
- nest le nombre total de chunks créés après l’opération de codage
Sur la base de l’équation précédente on comprend que chaque objet source sera codé en k+m chunks et chaque chunks reparti.
Entrons quelque peu dans le vocable de l’Erasure-Coding :
Niveau de protection : c’est le niveau de tolérance à la panne qui correspond à la perte d’un maximum de n-k chunks (m)
- Taux d’encodage (r) : le taux d’encodage qui est calculer avec r = k / n où r <1
- Ratio Stockage utile: calculer avec 1 / r
En pratique :
Si l’on considère n = 20 avec k = 16 et n-k = 4, cela signifie que tous les objets sources sont divisés en 16 chunks avec 4 chunks de codage. En cas de perte de données pour reconstruire l’original il faudra retrouver à minima 4 des 6 chunks.
Encoding rate (r) = 16 / 20 = 0,8
Ratio Stockage utile = 1 / r = 1 / 0.6 = 1.25 soit 1.25x le volume source de l’original.
Tableau Comparatif
On voit ici clairement l’avantage de l’EC sur les autres systèmes. Ce gain a toutefois une répercussion sur la puissance de calcul nécessaire à la reconstruction des données. Classiquement un usage pour de très grosses volumétries où les opérations de lecture/écriture sont peu fréquentes tirera tous les avantages de l’Erasure-Coding. Le choix d’une mise en œuvre de l’Erasure-Coding dépendra donc de l’objectif assigné à l’architecture de stockage où il faudra trouver la balance entre performance et coût.
Sur le marché différentes solutions stockage distribuée ont trouvé avantage a utiliser cette algorithme de protection. On pourra citer : Ceph, Gluster, OpenStack Swift , GPFS , Scality ,Cleversafe, Isilon, Amplidata ..
A noter que toutes ces solutions n’implémentent pas l’EC de la même manière ni avec la même efficacité. C’est notamment ce qui les distingues et les caractérises.
En conclusion
Si l’Erasure-Coding est promis à bel avenir, il semble que les solutions RAID telle que nous les connaissons aujourd’hui se verront réduites aux petites volumétries et pourraient vivre leurs dernières tours de disques…
Dav. C.