Ceph est une solution libre de stockage distribué (software-defined storage) qui propose trois protocoles en un avec : Bloc, Fichiers & Objet (S3). Les objectifs principaux de Ceph sont d'être complètement distribués sans point unique de défaillance, extensible jusqu'à l'exaoctet et librement disponible. Les données sont répliquées, permettant au système d'être tolérant aux pannes.

Ceph fonctionne sur du matériel standard (serveurs x86) dit commoditaire et de l'Ethernet IP.

Le système est conçu pour s'autoréparer et automatiser au maximum ses tâches administratives afin de réduire les coûts d'exploitation, et d'être agnostique sur le choix du matériel associé (disques, serveurs commoditaires).

Ceph est souvent utilisé par les centres de données qui ont adopté l'Open source comme leur nouvelle norme pour le stockage blocs à forte croissance, le stockage objet et le Big data (datalakes).

Stockage objet S3 Ceph met en œuvre le stockage d'objets distribué au moyen de RADOS (Reliable Autonomic Distributed Object Store), un moteur de stockage objet fiable, autonome et distribué.

Côté client, sa bibliothèque logicielle native librados permet aux applications C, C++, Java, Python, Ruby et PHP un accès direct en mode objet. L'API S3 permet aux applications de déborder nativement dans le cloud.

Ce sont souvent des disques de grandes capacités qui sont associés au stockage objet S3 de Ceph pour des cas d'usages : Big Data (datalake), Data science, Container registry, Backup & Archives (GED, mails, WORM...), IOT, média & vidéosurveillance...

Différentes bibliothèques additionnelles permettent d'obtenir les abstractions nécessaires pour : L'accès en mode bloc grâce à RADOS Block Device (RBD) ou iSCSI L'accès en mode fichier grâce à CephFS L'accès en mode HTTP REST via les interfaces Amazon S3 ou OpenStack Swift grâce à la passerelle RADOS (RADOS Gateway ou RADOSGW)

Stockage en mode bloc Le système de stockage en mode bloc de Ceph autorise les utilisateurs à monter Ceph comme un périphérique de type bloc. Quand une application écrit des données sur Ceph en utilisant un périphérique de bloc, Ceph parallélise et réplique les écritures de données à travers le cluster automatiquement. Ceph-RBD s'intègre aussi avec les machines virtuelles basées sur le noyau Linux.

Ceph-RBD s'interface avec le même système d'objet de stockage que l'API librados et le système de fichiers CephFS, et il stocke les images de périphérique de bloc comme des objets. Depuis que RBD est construit au-dessus de librados, RBD a hérité des capacités de librados, incluant les instantanés (snapshots) en lecture seule et le retour aux snapshots. En parallelisant les écritures des images sur le cluster, Ceph améliore les performances d'accès en lecture sur les grosses images de périphérique de bloc.

Ceph-iSCSI est une passerelle qui permet d'accéder à un stockage en bloc distribué hautement disponible à partir de n'importe quel serveur ou client Microsoft Windows ou VMware VSphere capable d'utiliser le protocole iSCSI. En utilisant Ceph-iSCSI sur un ou plusieurs hôtes de passerelle iSCSI, les images Ceph-RBD deviennent disponibles en tant qu'unités logiques (LU) associées à des cibles iSCSI, auxquelles il est possible d'accéder de manière hautement disponible et à charge équilibrée.

Ce sont souvent des disques rapides (NVMe, SSD) qui sont associés au stockage bloc de Ceph pour des cas d'usages : bases de données, machine virtuelle (VM), conteneur, Data analytics, AI/ML...

Intégration L'accès en mode bloc est notamment intégré à certaines plateformes de virtualisation, comme : OpenStack ; OpenShift ; Kubernetes (k8s) et Rook ; Apache CloudStack ; OpenNebula ; Ganeti ; Proxmox Virtual Environment. Cette intégration permet à une machine virtuelle d'utiliser directement un périphérique RBD en guise de disque dur virtuel.

Stockage en mode fichier Le système de fichiers de Ceph (CephFS) fonctionne au-dessus du système de stockage d'objet qui fournit le stockage d'objets et les interfaces de périphérique de bloc. Les métadonnées du cluster de serveurs de ceph fournissent un service qui mappe les répertoires et les noms des fichiers du système de fichiers des objets stockés dans les grappes de serveurs RADOS (cluster). Les métadonnées peuvent se développer ou se contracter, ils peuvent rééquilibrer le système de fichiers de manière dynamique pour distribuer les données uniformément parmi les hôtes du cluster. Cela assure de hautes performances et prévient contre de lourdes charges sur un hôte spécifique du cluster.

Les clients montent le système de fichiers compatible POSIX en utilisant le noyau Linux d'un client. Le , Linus Torvalds a fusionné le client Ceph dans le noyau Linux 2.6.34 qui est sorti le . Un vieux client basé sur FUSE est disponible. Les serveurs fonctionnent comme des démons Unix ordinaires.

Le stockage fichier de Ceph est souvent associé aux cas d'usages : captures de journaux, messages, conteneurs CI/CD, filestore (sharing)…

Systèmes de fichiers sous-jacent Un système de fichiers sous-jacent sur les OSD est utilisé pour stocker la donnée sous la forme de fichiers dans une arborescence. (Un OSD est généralement un disque rotatif) En test Btrfs ZFS (sous Linux) Production Bluestore (qui n'est pas un système de fichiers à proprement parler, mais une utilisation du disque en raw device) Ext4 (à petite échelle) XFS (déploiement en entreprise)

Historique Ceph a été initialement créé par (développeur du concept de Webring et cofondateur de DreamHost) pour sa thèse de doctorat supervisée par le professeur Scott A. Brandt qui travaillait à la Jaskin Baskin School of Engineering de l'université de Californie à Santa Cruz, fondée par le DOE/NNSA (Department of Energy/National Nuclear Security Administration) en collaboration avec le laboratoire national de Lawrence Livermore, le laboratoire national de Los Alamos et le laboratoire national de Sandia.

Après sa remise de diplôme (Ph.D) à l'été 2007, Weil a continué à travailler sur Ceph à temps plein. L'équipe du développement du noyau s'est agrandie en incluant Yehuda Sadeh Weinraub et Gregory Farnum. En 2012, Weil créa Inktank Storage pour fournir des services et du support professionnel à Ceph.

En , Red Hat a acheté Inktank prenant la plupart des développements de Ceph en interne pour en faire une version de production pour les entreprises avec du support (hotline) et de la maintenance (nouvelles versions). S. Weil poursuit le développement de Ceph comme architecte principal chez Red Hat.

Ceph continue d'occuper une place importante sur le marché en tant que logiciel de stockage open source, en développant de nouvelles fonctionnalités pour s'adapter à de nouveaux usages tels que le stockage persistant pour les containers, l'Open Data Sciences, AI/ML, Kafka, Data analytics.

Argonaut (v0.48) Le , l'équipe de développement a proposé la version Argonaut, la première version « stable » de Ceph. Cette version recevra seulement des patchs de stabilité et de performances et les nouvelles fonctionnalités seront prévues pour les prochaines versions.

Bobtail (v0.56) Le , l'équipe de Ceph propose Bobtail, la majeure de Ceph. Cette version se concentre principalement sur la stabilité. les performances et l'évolutivité de la version stable précédente.

Cuttlefish (v0.61) Le , l'équipe de Ceph propose CuttleFish, la majeure de Ceph. Cette version inclut un nombre important d'améliorations de performance et est la première version stable à proposer la fonctionnalité d'outil de déploiement « ceph-deploy » à la place de la méthode précédente « mkcephfs ».

Dumpling (v0.67) Le , l'équipe de développement sort Dumpling, la quatrième version majeure de Ceph. Cette version inclut un premier passage à l'espace de nom global et aux supports des régions, une API REST est aussi disponible pour des fonctions de management et de monitoring et un support amélioré pour les plateformes basé sur RHEL.

Emperor (v0.72) Le , L'équipe de développement sort Emperor, la cinquième version majeure de Ceph. Cette version apporte un lot de nouvelles fonctionnalités, incluant la réplication multi-datacenter pour le radosgw, améliore la facilité d'utilisation et un grand nombre de performances incrémentielles et du travail interne de refactorisation pour les fonctionnalités à venir dans Firefly.

Firefly (v0.80) Le , L'équipe de développement de Ceph sort Firefly, la majeure de Ceph. Cette version apporte des nouvelles fonctionnalités incluant un code correcteur, la cascade de cache, l'affinité primaire, clé/valeur OSD backend (Expérimental), radosgw autonome (Expérimental).

Giant (v0.87) Le , l'équipe de développement de Ceph a sorti Giant, la majeure de Ceph.

Hammer (v0.94) Le , l'équipe de développement de Ceph a sorti Hammer, la majeure de Ceph.

Infernalis (v9.2.0) Le , l'équipe de développement de Ceph a sorti Infernalis, la majeure de Ceph. Cette dernière version supporte notamment Systemd pour la gestion des démons qui sont lancés avec l'utilisateur ceph au lieu de root..

Jewel (v10.2.0) Le , l'équipe de développement de Ceph a sorti Jewel, la majeure de Ceph, et version de Ceph dans laquelle CephFS est considéré comme stable« v10.2.0 Jewel released »..

Kraken (v11.2.0) Le , l'équipe de développement de Ceph a sorti Kraken, la majeure de Ceph. Cette nouvelle version apporte des améliorations au système de fichiers CephFS, à RADOS, le moteur de Ceph, à RGW et RBD« v11.2.0 Kraken released »..

Luminous (v12.2.0) Le , l'équipe de développement de Ceph a sorti Luminous, la majeure de Ceph. Parmi les nombreux apports, le format de stockage BlueStore (utilisant un disque dur au lieu d'un système de fichier) est maintenant considéré comme stable et recommandé à utiliser.

Mimic (v13.0.0) Mimic est la majeure de Ceph..

Nautilus (v14.2.0) Nautilus est la majeure de Ceph. Parmi les nombreux apports, le format de stockage BlueStore (utilisant un disque dur au lieu d'un système de fichier) est maintenant considéré comme stable et recommandé à utiliser..

Octopus (v15.2.0) Octopus est la majeure de Ceph..

Pacific (v16.2.0) Pacific est la majeure de Ceph.. Au menu, des améliorations sur l'utilitaire d'administration cephadm ainsi que sur le dashboard, le stockage RBD, le stockage objet RGW et CephFS.

Quincy Quincy est la majeure . . Dans cette version, FileStore disparaît complètement au profit de BlueStore. Intégration de snmp dans cephadm.

Reef Reef est la majeure de Ceph sortie le ..

Squid Squid est la majeur de Ceph sortie le ..

Conception Ceph utilise quatre démons distincts : Supervision du cluster (ceph-mon), virtualisable, qui effectue un suivi des nœuds des clusters actif et en échec. Serveurs de métadonnées (ceph-mds), virtualisable, qui stocke les métadonnées des inodes et des répertoires. Périphérique de stockage d’objets (ceph-osd) qui stocke le contenu des fichiers. Idéalement, les OSDs stockent leurs données sur un système de fichiers local en Btrfs pour tirer parti des capacités de copies sur écritures intégrées, bien que d'autres systèmes de fichiers locaux puissent être utilisés à la place. Transfert d'état représentationnel (RESTful) passerelle (ceph-rgw), virtualisable, qui expose les couches de stockage d'objets comme une interface compatible avec Amazon S3 et les API d'OpenStack Swift. Tous ces démons fonctionnent de manière complètement distribuée et peuvent s'exécuter sur le même ensemble de serveurs. Les clients interagissent directement avec tous.

Ceph fait de l'entrelacement de fichiers individuels sur des fichiers à travers de multiples nœuds pour fournir un débit plus élevé, de façon similaire au RAID 0 qui entrelace les partitions sur de multiples disques durs. L'équilibrage de charge adaptatif est supporté. Ainsi, les objets fréquemment consultés sont répliqués sur plus de nœuds.

Étymologie