CEPH : la nouvelle technologie open source de stockage de données

Depuis quelques temps, Empreinte Digitale a décidé de migrer ses systèmes hébergés dans des architectures de haute disponibilité, grâce à une solution open source de stockage de données : CEPH. Ses avantages ? Fiabilité, performance et évolutivité.

D’un côté est apparue la gamme de serveurs frontaux redondés. Elle est organisée autour de liens locaux fibres rapides de 10Gb/s et de disques DRBD. Et de l’autre côté, nous avons initié le remplacement des NAS (Network Attached Devices) contenant les fonds d’images de nos clients par un système “CEPH” adossé à ces mêmes liens fibre.


Qu’est-ce que Ceph ?  

 Ceph est un système créé par Sage Weil [1], pouvant être vu comme un système de stockage de fichiers redondants se gérant lui même.

De plus, il offre une liste de services par dessus son mécanisme de base permettant des utilisations assez diverses (Amazon S3, libvirt, proxmox, volumes rbd, et même un file system spécialisé).

[Voir la documentation Ceph]

Le mécanisme de stockage de données de Ceph est fait de telle manière que l’identité d’une donnée n’est pas fonction de son adresse dans le système, mais est attachée à la donnée elle-même. Ceci permet de changer la topologie du système Ceph sans perdre de données. Si on change quelque chose au système, les données vont être redistribuées dans les ressources sans qu’il y ait besoin d’effectuer une action spéciale.

A titre de comparaison, si vous ajoutez un disque à un groupe RAID (Redundant Array of Independent Disks), les données sont perdues. Sauf qu’il y a des outils pour compenser ce problème bien sûr … En effet, la signification d’une donnée dans un RAID dépend de sa localisation dans le système, qui elle même dépend de la façon dont sont organisés les disques du RAID.

Un autre avantage est que Ceph permet de fédérer de multiples ressources matérielles sans contrainte particulière. Contrairement à RAID qui exige des partitions de même taille.


Les pools Ceph

Ceph offre la possibilité de partitionner l’espace de stockage. Ces partitions, appelées « pools », servent à stocker les données sous forme d’objets et être formées avec des ressources dédiées.

De cette manière, chaque bloc de donnée utilisateur (= chaque volume virtuel stocké sur Ceph) peut être alloué sur un pool en particulier. Le but est de spécialiser certains disques physiques.

Chez Empreinte Digitale, nous utilisons 3 pools :

  • un pour les fonds d’images dans lesquels on écrit rarement,
  • un autre pour les stockages dans lesquels on écrit tout le temps,
  • un troisième composé uniquement de disques SSD (Solid State Device)  pour y stocker des images de disques virtuels utilisés par des machines virtuelles.

Ici on peut voir que le volume total des disques alloué à Ceph fait 115To, avec une redondance de 2 cela fait 66To d’espace utilisable. Cet espace peut être augmenté à tout moment en ajoutant des disques au système. Cet ajout se ferait sans interruption du service.


La résilience, ou comment être tolérant aux pannes

Toute opération sur le système Ceph peut se faire sans interruption du service. Le changement d’un disque défaillant par exemple se fait sans interruption. De même que le redémarrage d’un node Ceph, l’ajout d’une ressource, le changement de la topologie des ressources (cluster map), etc.

Si un service Ceph s’arrête anormalement, le Ceph continue de fonctionner pendant le redémarrage du service défaillant.

Au pire, l’utilisateur perçoit quelques lenteurs sur certaines requêtes.


Systèmes de fichiers partagés

Ceph supporte des systèmes de fichiers partagés, comme GlusterFS ou OCFS2. Mais la nature très sensible des données que nous hébergeons nous a incité à utiliser un système de fichiers traditionnel (à savoir XFS). Celui-ci étant partageable si nécessaire via NFS.

Cette solution donne pleine satisfaction pour peu que le client Ceph (rbd) et le serveur NFS soient assez récents. Les volumes d’origine étant partagés par NFS également, la mise en place en production de la solution Ceph n’a nécessité au final que la substitution d’un partage NFS par un autre.

Libvirt      

Libvirt/KVM est la librairie de virtualisation utilisée pour la gestion de nos machines virtuelles dans les serveurs frontaux. Totalement compatible avec Ceph, il permet de placer une image de disque virtuel à destination de ces machines virtuelles sur une ressource CEPH.

Une série de disques SSD a été constitué spécifiquement dans un pool à part pour cet usage. Néanmoins, nous nous attendons à ce que toutes les entrées-sorties disques passant par le réseau aient un impact sur les performances de ces machines virtuelles. Cela limite alors leur intérêt par rapport aux disques DRBD de nos frontaux actuels.

En attendant, le fait que le disque d’une machine virtuelle soit déporté sur CEPH permet de faire tourner la machine virtuelle sur n’importe quel serveur front. Mais aussi de passer magiquement de l’un à autre avec une seule commande. Épatant !


[1] Sage Weil: Ceph: reliable, scalable, and high performance distributed storage, University of california, Santa cruz. Décembre 2007. https://ceph.com/wp-content/uploads/2016/08/weil-thesis.pdf


Cet article vous a plu ? Inscrivez-vous à notre newsletter pour ne rien manquer !

Note : les champs suivis d’un astérisque (*) sont obligatoires.