< Une solution de stockage enfin viable ?! >

Comment stocke-t-on de la donnée ?

Aujourd’hui, il existe beaucoup de façon de stocker de la donnée :

  • par le réseau (NAS, SAN, cloud, ...)
  • localement (disque interne/externe)

Il est possible de protéger cette donnée de différentes manières et surtout, à différents niveaux. Une entreprise qui a des documents sensibles ne va pas les stocker sur un Google Drive, à l’inverse un particulier qui stocke ses photos de vacances ne va pas mettre en place un cluster de stockage.

C’est pour cette raison que la réflexion sur le moyen de stockage à employer est primordiale pour éviter une surallocation ou une sous allocation.

Le stockage hier

Il y a plusieurs millénaires, on stockait les informations physiquement, de manière manuscrite. On peut remonter loin...


Avec le recul, ce moyen n'a pas tant évolué.

Le stockage aujourd'hui

En effet, de l'Égypte antique à aujourd’hui, le format manuscrit n’a que peu évolué : la forme à changer (passage de la pierre et la gravure au papier et à l’encre). Bien que la tendance qu’apporte Internet tend à faire disparaitre les moyens de stockage physique au profit de la dématérialisation, les livres sont encore aujourd’hui un moyen très répandu (et apprécié) de stocker et partager de l’information.

Cependant, les bibliothèques ressemblent de plus en plus à des baies de stockage qu’à un entrepôt de livres.

Les problématiques du stockage en réseau

Dans une infrastructure, il y a un grand nombre d’équipements différents. Ces équipements sont plus ou moins vitaux pour assurer l’accessibilité de l’infrastructure. Un équipement qui provoque la chute du système s’il vient à défaillir est un “SPOF” (Single Point Of Failure).


Ici, le routeur est un SPOF.

Les baies de stockage, comme tout autre service nécessitant une haute disponibilité, sont sensibles à ces équipements.
Dans une baie on peut retrouver plus ou moins de disques selon sa capacité. Même en ayant mis autant de disques que possible, si la baie tombe, il n’y a plus aucun moyen d’accéder aux données sauvegardées dans les disques. Une baie de stockage seule est donc aussi un SPOF.

Comment remédier à ses problématiques de fiabilité et de performances ?

Il y a beaucoup de possibilités pour réduire le nombre de SPOF d’une infrastructure et donc augmenter la qualité de service.

Côté baie de stockage, la solution la plus efficace contre les SPOF est la redondance. Elle permet d’assurer la disponibilité d’un ou plusieurs services même si un équipement désigné "à risque" tombe : Si l’équipement principal est dans l’incapacité de fournir le service demandé, l’équipement secondaire prendra le relais pour assurer une continuité de service.

Nota Bene : Pour des raisons économiques, les serveurs secondaires sont souvent moins performants que les équipements principaux. On parle alors de tolérance de pannes pour indiquer la perte qu’on est prêt à accepter en cas de défaillance.

Côté disque, la solution est logicielle : le RAID (Redundant Array of Independent Disks). Il existe plusieurs types de RAID, les deux plus connus sont le RAID 1 et le RAID 5.

Le RAID 1 est un des plus simple : les données d’un disque sont répliquées sur les autres. Cette méthode nécessite donc au moins 2 disques de taille identique.


Avantages :

  • simple à mettre en place
  • performant en écriture
  • robuste
  • pour n disques, la perte de n-1 disques est tolérée

Inconvénients :

  • pour n disques, capacité de n/2 disques
  • nécessite que tous les disques soient strictement de la même taille, sinon le RAID considèrera la plus petite capacité

Le RAID 5, contrairement au RAID 1, va répartir les données sur tous les disques dont il peut profiter. En plus des données, les informations de parité sont également stockées (une fois), afin que les données puissent être récupérées si l'un des lecteurs tombe en panne. C’est le striping avec parité. En cas de défaillance d’un lecteur, les autres lecteurs peuvent calculer à partir de la parité distribuée de façon à ce qu’aucune donnée ne soit perdue.La parité est calculée avec une fonction conceptuellement similaire à une équation (5 = 2 + x) : XOR.
Ici, l’inconnu serait la partie de la donnée perdue et le reste de l’équation serait les autres parties de la donnée (donnée ou parité). Le RAID doit effectuer ces résolutions pour chaque donnée perdue. C’est ce système qui lui vaut sa lenteur, mais aussi sa robustesse.


Avantages :

  • le striping
  • performant en lecture et en écriture
  • permet la perte d’un disque sans perdre de données
  • les données peuvent être consultées même pendant la reconstruction d'un disque en panne
  • pour n disques, capacité de n-1 disques

Inconvénients :

  • nécessite au moins 3 disques de taille identique
  • la récupération après une panne est lente en raison des calculs de parité (jusqu’à 2 jours si le disque perdu est supérieur à 2 To)

Qu’est-ce que le stockage distribué ?

Le stockage distribué a été créé, non seulement pour répondre à la problématique de la tolérance de panne, mais aussi pour pallier aux limites physiques d’une solution de stockage sur un point unique (SAN, NAS, RAID). Il ne s’agit pas d’un système de fichier ou d’un équipement mais de couches logicielles et réseaux au sein d’un cluster.

Sur ce type de stockage, les données sont réparties sur des nœuds qui peuvent être déportés sur différents points géographiques. Il est possible de paramétrer la solution suivant certaines règles : par exemple, certains fichiers ne pourront être stockés que sur un seul nœud.

Ceph, c’est quoi ?

Ceph est une solution libre de stockage distribué. Il peut fonctionner sur tout matériel standard x86 et sur les réseaux Ethernet/IP. Grâce à Ceph, on peut donc s’affranchir des solutions propriétaires qui coûtent généralement très cher (matériel propriétaire, logiciel propriétaire). Si on le souhaite, il est tout de même possible d’avoir du support via RedHat, l’actuel propriétaire.

Ceph est de plus en plus normalisé et son client est implémenté dans le kernel Linux ce qui simplifie encore un peu plus l’accès au monde du logiciel libre. A terme, le souhait de RedHat est de pouvoir intégrer nativement ce client au sein de toutes les technologies comme VMware afin de faire complètement disparaitre les SPOF de nos infrastructures. Sa bibliothèque logicielle native librados permet aux applications C, C++, Java, Python, Ruby et PHP un accès direct et fiable en mode objet.

Historique

Le nom Ceph vient de céphalopode, qui est l’inspiration du mode de fonctionnement de la technologie (l’intelligence n’est pas centralisée). Ceph a été imaginé par Sage WEIL en 2007 lequel écrit une thèse sur son idée. lien vers la thèse

C’est en 2012 que Sage W. va lancer officiellement sa technologie en créant son entreprise InkTank, une société de services qui lui permettra de mettre Ceph en avant. Les entreprises qui l’adoptent sont conquises et seulement 2 ans plus tard, RedHat décide de recruter Sage W. et de racheter son entreprise pour 175 millions de dollars.


Aujourd’hui Ceph en est à sa version 15 appelée Octopus.

Le concept

Ceph repose sur deux grands principes :

  • reliable, résiliant et fiable : aucun SPOF, aucun downtime en cas de panne, d’ajout, ou de suppression de disque
  • scalable, Ceph est facilement extensible : pour avoir plus de stockage il faut plus de disques. Ceph peut gérer un stockage allant jusqu’à l’exaoctet(1018 octets)

Nota Bene : Le CERN (Conseil Européen pour la Recherche Nucléaire) possède un des plus gros clusters Ceph existants et est nommé BigBang3. C’est un cluster de 225 serveurs de 48 disques de 6To soit une capacité totale de 65Po (petaoctet). Le cluster est réparti dans environ 30 pays différents qui sont interconnectés par des fibres dédiées du LHC grid de 10Gb. (Chiffres 2018)


Comment fonctionne Ceph ?

Lorsqu’on souhaite envoyer de la donnée sur un cluster Ceph, elle est soumise à un algorithme, RADOS (Reliable Autonomic Distributed Object Store), qui va convertir et segmenter les données, peu importe leur contenu ou leur type, en objet.

Ces objets sont ensuite stockés au sein d’un pool. Ce pool est lui-même segmenté en placement group (pg) et contient tous les objets reçus de RADOS. C’est le pool qui,grâce à l’algorithme CRUSH, va “décider” du placement de chaque placement group en attribuant un numéro à chacun d’eux. Enfin, un pgId leur est attribué de cette façon :

pgId = hash(nom_objet) % pg_num)


CRUSH (Controlled Replication Under Scalable Hashing) génère une crush map. Elle est commune à toutes les machines monitor grâce au démon MON (MONitor) et permet aux OSD (Object Storage Device) de connaître l’état de chacun des OSD où se trouve leurs objets.

CRUSH répartit équitablement les PG au sein du cluster sur différents OSD. Les OSD sont des machines qui combinent CPU et RAM, interface réseau, un cache local dédié et un disque sous-jacent. Sur ces machines, un démon tourne pour chaque disque présent (OSD : Object Storage Deamon).

/!\ OSD désigne donc à la fois un démon est un couple compute/stockage.


Cette intelligence présente sur les OSD, permet à Ceph de distribuer la complexité autour de l’accès aux données, la réplication et la fiabilité, la détection des défaillances et la récupération. On obtient alors des performances considérables.

Le premier OSD qui recevra un objet de l’algorithme CRUSH est celui qui se chargera de faire les réplications. C’est l’OSD primaire. Il va, selon les règles préalablement configurées dans CRUSH, répliquer l’objet reçu sur n OSD réplica. Les OSD feront ensuite en sorte que chaque objet soit TOUJOURS présent sur au moins n OSD réplica. (Sage WEIL recommande un réplica à 3)

Exemple en cas de panne d'un OSD

Nous avons ici 3 OSD, le premier contient A, le second contient A et B et le dernier contient B.

OSD 1 tombe en panne

OSD 2 contenant A, va répliquer A sur OSD 3, ainsi la donnée existe toujours en 2 exemplaires. Cette opération se réalise très rapidement.


La situation restera ainsi jusqu’à régularisation (action de suppression de l’OSD, remplacement du disque défectueux, ...).

Le mot de la fin

Selon moi, c'est ce type de solution qui devrait être adopté dans toute structure stockant beaucoup de données et surtout de la donnée sensible à la perte. Et c'est le cas pour de plus en plus de SI. Par exemple Google a développé GFS (Google File System) pour leurs propres applications. Ceph n'est pas la seule solution existante évidemment, il y en a bien plus !

Cela répond bien à la problématique récurrente que représentent les SPOF. Mais la redondance est aussi synonyme d'abondance, surtout en informatique. Devoir, au minimum, doubler les équipements et ressources est onéreux et n'est donc pas à la portée de toute entreprise. D'où l'importance, de toujours définir le périmètre d'un système d'information :
Jusqu'où doit on aller pour protéger nos systèmes ?