Dans un serveur classique, les données sont stockées sur des disques locaux, éventuellement en RAID. Si le serveur tombe, les données sont inaccessibles (ou perdues si le RAID ne suffit pas). Si la capacité est pleine, il faut ajouter des disques ou changer de machine.
Ceph propose une approche fondamentalement différente : les données sont réparties et répliquées sur un ensemble de serveurs. Pas de disque unique, pas de serveur unique, pas de point de défaillance unique.
Ceph découpe chaque fichier en objets, les réplique sur plusieurs serveurs physiques, et les retrouve automatiquement quand on les demande — même si une partie du cluster est en panne.
D'où vient Ceph ?
Ceph est né en 2004 dans le cadre de la thèse de doctorat de Sage Weil à l'Université de Californie (Santa Cruz). Le projet est devenu open source en 2006, puis a été développé par la société Inktank, rachetée par Red Hat en 2014 (puis IBM en 2019).
Aujourd'hui, Ceph est le standard de fait du stockage distribué open source. Il est utilisé par le CERN (pour stocker les données du LHC), Deutsche Telekom, Bloomberg, DigitalOcean, OVHcloud et des milliers d'infrastructures critiques dans le monde. La communauté est active, le code est auditable, et le projet est soutenu par la fondation Ceph (sous l'égide de la Linux Foundation).
Les composants d'un cluster
Un cluster Ceph repose sur plusieurs types de démons (services) qui collaborent :
OSD — Object Storage Daemon
Chaque disque physique est géré par un OSD. C'est le composant fondamental : il stocke les données sous forme d'objets, gère la réplication vers les autres OSD, répond aux lectures, et participe à la reconstruction en cas de panne. Un cluster typique compte des dizaines à des centaines d'OSD.
MON — Monitor
Les moniteurs maintiennent la carte du cluster (cluster map) : quels OSD sont disponibles, quels pools existent, où sont les données. Ils forment un quorum par consensus (algorithme Paxos), ce qui garantit la cohérence même en cas de panne d'un moniteur. Il en faut un nombre impair (3 ou 5).
MGR — Manager
Collecte les métriques de performance et d'utilisation, expose le tableau de bord web et les API REST. Il est aussi le point d'entrée pour les modules supplémentaires : export Prometheus, alerting, orchestration. Déployé en paire active/standby.
MDS — Metadata Server
Utilisé uniquement pour CephFS (le système de fichiers distribué). Il gère l'arborescence des répertoires et les métadonnées des fichiers (noms, permissions, tailles). Les données elles-mêmes restent stockées sur les OSD.
CRUSH : l'algorithme qui change tout
La clé de Ceph, c'est CRUSH (Controlled Replication Under Scalable Hashing). Contrairement à un système de stockage classique où un serveur central décide où ranger chaque fichier, CRUSH est un algorithme déterministe : n'importe quel client peut calculer lui-même où se trouve une donnée, sans interroger un index centralisé.
Concrètement, CRUSH utilise une CRUSH map qui décrit la topologie physique du cluster : quels disques sont dans quels serveurs, quels serveurs sont dans quels racks, quels racks sont dans quel datacenter. Grâce à cette carte, CRUSH garantit que les copies d'une donnée sont placées sur des domaines de défaillance différents (par exemple : trois copies sur trois serveurs physiques différents).
Pas d'index central
Chaque client calcule la position des données. Pas de goulot d'étranglement, pas de SPOF métadonnées.
Topologie-aware
Les règles de placement respectent la hiérarchie physique (disque → serveur → rack → DC).
Rééquilibrage intelligent
Quand un nœud est ajouté ou retiré, seule une fraction des données est déplacée. Pas de redistribution totale.
Pools et Placement Groups
Les données ne sont pas stockées en vrac dans le cluster. Elles sont organisées en pools (des espaces logiques avec leurs propres règles de réplication) et Placement Groups (PG).
Un PG est un regroupement d'objets qui sont gérés ensemble. Plutôt que de gérer la réplication objet par objet (ce qui serait trop coûteux), Ceph réplique des PG entiers. Chaque PG est assigné à un ensemble d'OSD par l'algorithme CRUSH.
# Exemple : créer un pool avec 128 PG en réplica 3
ceph osd pool create mon-pool 128
ceph osd pool set mon-pool size 3
ceph osd pool set mon-pool min_size 2
Le paramètre min_size définit le nombre minimum de copies disponibles pour que le pool continue à accepter les écritures. Avec size 3 et min_size 2, le cluster continue de fonctionner même si une copie est temporairement indisponible.
La réplication : comment les données survivent
Quand vous écrivez un fichier sur Ceph, il est découpé en objets, et chaque objet est automatiquement répliqué sur plusieurs OSD situés sur des serveurs différents. En réplica 3 (le standard), chaque objet existe en trois exemplaires, sur trois machines physiques distinctes.
L'écriture est considérée comme réussie uniquement lorsque toutes les copies ont été écrites. C'est la différence avec une réplication asynchrone : ici, la cohérence est garantie dès l'acquittement de l'écriture.
Réplication vs. Erasure Coding
Ceph propose deux stratégies de protection des données :
Réplication (size=3)
Trois copies complètes de chaque objet. Simple, rapide en lecture, excellent pour les I/O aléatoires (VPS, bases de données). Coût : 3× l'espace brut.
Erasure Coding (k+m)
Les données sont découpées en k fragments de données et m fragments de parité. Tolère la perte de m fragments. Coût réduit (ex : 1.5× en 4+2), mais plus lent en écriture. Idéal pour l'archivage ou le stockage objet.
Pour les workloads de virtualisation (VPS, bases de données), la réplication reste le choix privilégié car elle offre les meilleures performances en I/O aléatoires. L'erasure coding est plus adapté au stockage de gros fichiers peu modifiés (sauvegardes, archives, médias).
L'auto-healing : le cluster se répare tout seul
C'est l'un des points les plus impressionnants de Ceph. Quand un OSD tombe (panne de disque, perte d'un serveur), le cluster réagit automatiquement :
- Détection — les OSD s'envoient des heartbeats réguliers. Si un OSD ne répond plus, il est marqué
downau bout de quelques secondes. - Attente — Ceph attend un court délai configurable (par défaut 10 minutes) avant de déclarer l'OSD
out. Cela évite de déclencher une reconstruction pour un simple redémarrage. - Reconstruction — une fois l'OSD déclaré
out, CRUSH recalcule le placement des PG concernés. Les données sont recopiées depuis les copies restantes vers d'autres OSD sains, jusqu'à retrouver le nombre de réplicas configuré. - Rééquilibrage — la reconstruction est distribuée sur tous les OSD du cluster. Contrairement à un RAID où un seul disque spare est stressé, ici la charge est répartie, ce qui accélère la reconstruction et réduit l'impact sur les performances.
Pendant tout ce processus, les données restent accessibles. Les lectures et écritures continuent via les copies restantes. L'utilisateur ne voit rien.
Les trois interfaces de Ceph
Ceph n'est pas limité à un seul type de stockage. Un même cluster peut exposer trois interfaces différentes simultanément :
RBD
RADOS Block Device
Fournit des disques virtuels (volumes bloc) aux machines virtuelles. C'est l'interface utilisée par Proxmox pour les VPS. Supporte les snapshots, le thin provisioning et la live migration.
CephFS
Ceph File System
Un système de fichiers POSIX distribué. Se monte comme un répertoire classique. Idéal pour le partage de fichiers entre serveurs, les répertoires utilisateurs, les médias.
RGW
RADOS Gateway
Une passerelle de stockage objet compatible S3 et Swift. Permet de stocker des fichiers via une API HTTP. Utilisé pour les sauvegardes, l'archivage, les assets web.
RBD et Proxmox : le duo en production
Dans une infrastructure de virtualisation, RBD est l'interface la plus utilisée. Chaque VPS dispose d'un disque RBD stocké sur le cluster Ceph. Ce disque est automatiquement répliqué, et comme il n'est pas lié à un serveur physique, il rend possible :
- Live migration — déplacer un VPS d'un serveur à un autre sans interruption de service. Le stockage étant partagé, seule la mémoire vive est transférée.
- Snapshots copy-on-write — capturer l'état du disque en quelques millisecondes. Seules les différences sont stockées, ce qui consomme peu d'espace.
- Thin provisioning — allouer de l'espace disque à la demande. Un disque de 100 Go ne consomme que l'espace réellement écrit.
- Haute disponibilité — si un nœud Proxmox tombe, le VPS redémarre automatiquement sur un autre nœud, avec accès immédiat à ses données (puisqu'elles sont sur Ceph, pas sur le serveur physique).
- Clonage rapide — créer une copie d'un VPS à partir d'un snapshot, sans recopier les données. Utile pour les environnements de test ou de staging.
Pourquoi pas un RAID classique ?
Le RAID matériel (RAID 1, RAID 5, RAID 10) protège contre la panne d'un ou deux disques dans un même serveur. Mais il ne protège pas contre la panne du serveur lui-même, du contrôleur RAID, de l'alimentation ou du rack.
| Ceph | RAID matériel | |
|---|---|---|
| Protège contre | Panne de disque, de serveur, de rack | Panne de disque uniquement |
| Scalabilité | Ajout de nœuds à chaud | Limité au châssis |
| Reconstruction | Distribuée sur tous les OSD | Un seul disque spare, lente |
| Live migration | Oui (stockage partagé) | Non (stockage local) |
| Snapshots | Copy-on-write, quasi instantanés | Non supporté nativement |
| Vendor lock-in | Open source (LGPL) | Contrôleurs propriétaires |
De plus, la reconstruction d'un RAID matériel est risquée : pendant le rebuild, tous les I/O passent par les disques survivants, qui sont déjà stressés. Un second disque qui lâche pendant cette phase critique signifie une perte de données. Avec Ceph, le rebuild est distribué sur l'ensemble du cluster, ce qui réduit considérablement ce risque.
Les limites à connaître
Ceph est puissant, mais ce n'est pas une solution miracle. Quelques points à garder en tête :
- Complexité opérationnelle — un cluster Ceph nécessite des compétences spécifiques pour être déployé, dimensionné et maintenu correctement. Ce n'est pas un « install and forget ».
- Réseau critique — la performance de Ceph dépend directement de la qualité du réseau entre les nœuds. Un réseau lent ou saturé impacte directement la latence des I/O.
- Coût en espace — la réplication 3× signifie que pour 1 To de données utiles, il faut 3 To d'espace brut. L'erasure coding réduit ce ratio, mais avec un compromis sur les performances.
- Nombre minimum de nœuds — un cluster Ceph nécessite au moins 3 nœuds pour fonctionner correctement (quorum MON + réplica 3 sur des serveurs distincts).
- Mises à jour — les upgrades de version Ceph doivent être planifiées et testées. Une mauvaise mise à jour peut impacter la disponibilité du cluster.
C'est pourquoi Ceph est généralement exploité par des équipes spécialisées ou dans le cadre d'une infogérance. Ce n'est pas un outil destiné à l'utilisateur final.
Chez Datacampus : tous nos clusters Ceph fonctionnent en réplica 3 sur des disques 100 % NVMe, avec un réseau fibre dédié 4×10 Gb/s entre chaque nœud. Nos équipes gèrent le dimensionnement, la supervision, les mises à jour et la maintenance. Les données de nos clients ne dépendent jamais d'un seul disque ni d'un seul serveur.
— Datacampus