CEPH logo

Plusieurs éléments ont orienté les équipes de LINKBYNET vers l’étude de la solution Ceph et, plus généralement, vers des solutions de SDS.

Ceph, cette technologie de Software Defined Storage (SDS), serait l’une des meilleures alternatives aux solutions de stockage SAN du moment avec des bénéfices en terme de scalabilité, d’évolutivité, de coût et bien plus. C’est pourquoi chez LINKBYNET nous avons décidé de nous pencher sérieusement sur cette technologie. D’autant plus que les études menées sur les solutions de Cloud Privés tels que Openstack, mais également sur d’autres solutions techniques telles que Docker, offrent toutes la possibilité d’utiliser un cluster Ceph pour le stockage des données. Enfin, au vu des possibilités en terme de volumétrie et d’évolutivité, nous voulions également étudier si d’autres cas d’usages plus spécifiques aux architectures LINKBYNET pouvaient être envisagés (archivage, repository VEEAM, partage de fichiers, Labos, etc.).

Voici les retours de Benoit Cattié, architecte systèmes et application chez LINKBYNET.

Qu’est-ce que Ceph?

Ceph se définit de la manière suivante : “Ceph is a distributed object store and file system designed to provide excellent performance, reliability and scalability.” Concrètement, il s’agit d’une solution logicielle permettant de construire une plateforme de stockage évolutive, distribuée et redondante, basée sur du matériel dit de commodité (serveur x86_64). On parle de solution de Software Defined Storage (SDS dans le reste de l’article). Ceph est basé sur la librairie RADOS (Reliable Autonomic Distributed Object Store) qui assure le stockage d’objets distribués au sein du cluster.

Cette répartition est pilotée par l’algorithme CRUSH (Controlled Replication Under Scalable Hashing) qui permet de définir les règles d’affinités, de redondance et de placement des données.

Il est par exemple possible de spécifier que le (ou les) réplica d’un objet donné ne doivent pas se trouver dans le même serveur/baie/rangée/salle/DC/etc. que l’objet primaire.

À quoi sert Ceph?

Les cas d’usage de Ceph sont assez variés. Cependant une des utilisations les plus populaires reste sans doute pour OpenStack afin d’être en back-end de Cinder (disques des VMs), de Swift (S3 like) ou Glance (image pour les VMs).

Également dans le monde Docker, Ceph peut être utilisé pour la gestion du stockage persistant (drivers rdb pour kubernetes/swarm).

Ceph, architecture technique

Quels sont les principaux composants d’un cluster Ceph, ainsi que les interfaces disponibles pour utiliser le cluster ?


Source : https://ceph.com/planet/zero-to-hero-guide-for-ceph-cluster-planning/

Composants cluster

  • OSD (Object Storage Daemon) : il s’agit d’un daemon logiciel contrôlant un périphérique de stockage, en général un disque dur simple. La notion d’OSD réfère souvent plus au matériel (HDD) qu’au logiciel (daemon pilotant le HDD). Ce daemon est en charge de stocker les données, gérer la réplication des données, le recovery, rebalancing, etc.
  • MON (Monitor) : il s’agit d’un daemon logiciel qui maintiennent une carte du cluster en contrôlant l’état des OSD et des nœuds du cluster.
  • MDS (Ceph Metadata Server – OPTIONEL) : ce composant sert uniquement pour “l’interface” Filesystem de Ceph. Pour info cette interface est expérimentale.

Interfaces

Ceph permet l’utilisation du cluster de stockage à travers 3 interfaces :

  •  Block storage : on parle au cluster Ceph en mode bloc au travers du module kernel librbd (RadosBlockDevice).

Ceph répartit ensuite ces blocs au sein du cluster.

Source : http://docs.ceph.com/docs/master/rbd/rbd/

  • Object Storage :on parle au cluster Ceph en mode “objet” à travers une “radosgw”. Le composant radosgw implémente l’API S3/SWIFT.

Source : http://docs.ceph.com/docs/master/radosgw/

  • Filesystem : Attention, cette interface est toujours expérimentale! Elle implémente un filesystem POSIX reposant sur le cluster Ceph. Cette interface nécessite la présence d’un MetaData Server (MDS).

Source : http://docs.ceph.com/docs/master/cephfs/

Focus sur la CRUSH MAP

La CRUSH MAP dans Ceph est ce qui permet de définir le placement souhaité des données au sein du cluster et la cible de haute disponibilitée à atteindre. Très puissante, mais néanmoins complexe à appréhender, elle permet par exemple d’assurer qu’un objet donné et son (ou ses) réplica ne sont pas placés dans la même baie (ou rangée, ou salle, ou ce qu’on veut).

On représente donc l’infrastructure physique dans cette MAP et le “domaine de redondance” souhaité.

Avis d’experts: ce qui nous a vraiment plu!

Certaines fonctionnalités de Ceph ont tout particulièrement retenu notre attention :


Cache Tiering

Ceph permet de configurer un pool de cache basé sur des disques SSD afin de servir de cache à un pool de stockage moins rapide (ou plus capacitif). Cette fonctionnalité de cache tiering est aussi utilisé dans le cas des pool de type erasure coding (voir plus bas) afin de disposer de certaines fonctionnalités (ie partial writes) non présente dans les pools de type erasure, mais présente dans les pools répliqué. On met ainsi un pool répliqué en cache d’un pool erasure.

Gestion Snapshot (Block Device)

Ceph implémente nativement plusieurs fonctionnalités intéressantes liées à la gestion des snapshot : snapshot, snapshot incrémentaux, clone de snapshot, rollback de snapshot, export de snapshot et export incrémentaux de snapshot.

Erasure coding

À la différence des pool de type “replicated” où les objets sont répliqués X fois, les pools de type erasure coding se basent sur des fonctionnalités de parités. Chaque objet à stocker est découpé en morceaux auxquels sont ajoutés des morceaux de parité. L’avantage de ce type de pool est le gain sur le ratio volumétrie raw/utile.

Federation de radosgw (Ceph Object Store – S3 like)

Une autre fonctionnalité intéressante, cette fois dans l’interface “Object”, est la possibilité de fédérer plusieurs cluster Ceph à la manière des régions / zones AWS et de permettre de copier les données entre ces régions à des fins de failover et/ou de DRP.

Au vu de ces premiers retours concluants, la technologie Ceph pourrait être prochainement implémentée en production chez LINKBYNET.