Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

🧱 Storage Systems — Chapitre 12 : Ceph

Ceph est une des plateformes open source les plus importantes du stockage distribué : RADOS comme cœur, RBD pour le bloc, CephFS pour le fichier, RGW pour l'objet S3, CRUSH pour le placement, MON pour le quorum, OSD pour les données, MDS pour les métadonnées, Manager pour l'observabilité. Cette page est hyper-densifiée pour comprendre l'architecture, les cas d'usage, les risques et l'exploitation réelle en production.

Ceph / RADOSMON / OSD / MDS / RGW / MGRRBD / CephFS / S3CRUSH MapReplication / Erasure CodingKubernetes / OpenStack
12.1

Vue générale

Ceph est un stockage distribué open source : bloc, fichier et objet au-dessus de RADOS, avec placement CRUSH et auto-healing.

Open sourceDistributedRADOS
12.2

Composants

MON, OSD, MDS, RGW, Manager : rôles, quorum, metadata, gateways S3 et services de pilotage.

MONOSDMDS/RGW
12.3

Types d’accès

RBD bloc, CephFS fichier, RGW objet S3 : usages, clients, performance, limites et intégration Kubernetes/OpenStack.

RBDCephFSRGW
12.4

CRUSH Map

Placement intelligent des données : buckets, rules, failure domains, device classes, weights et répartition sans table centrale massive.

CRUSHPlacementFailure domains
12.5

Replication et erasure coding

Protection des données : replicated pools, EC pools, scrub, backfill, recovery, degraded objects et overhead capacité.

ReplicationECScrub
12.6

Cas d’usage

Cloud privé, OpenStack, Kubernetes, backup, object storage souverain, archive, data lake, VM, plateformes DevOps.

OpenStackKubernetesS3
12.7

Difficultés

Réseau, latence, sizing, recovery, observabilité, tuning, upgrades, full cluster et complexité opérationnelle réelle.

NetworkSizingRecovery
12.8

Architecture cluster

Topologie nœuds, disques, réseaux public/cluster, quorum MON, OSD layout, RGW frontends, MDS HA et dashboard.

TopologyNetworksQuorum
12.9

RBD bloc

Images RBD, snapshots, clones, layering, mirroring, QoS, Kubernetes CSI, OpenStack Cinder et VM workloads.

BlockSnapshotsCSI
12.10

CephFS fichier

Filesystem distribué : MDS active/standby, metadata, subvolumes, quotas, snapshots, NFS gateways et workloads RWX.

FileMDSRWX
12.11

RGW objet S3

Buckets, users, access keys, multisite, lifecycle, bucket policies, Object Lock selon configuration et gateways HA.

S3BucketsMultisite
12.12

Performance & tuning

OSD latency, p99, BlueStore, RocksDB/WAL, device classes, PGs, network, client cache et benchmarks.

BlueStorep99PG
12.13

Observabilité

ceph -s, health detail, Prometheus, Grafana, mgr modules, logs, capacity, slow ops, degraded/misplaced objects.

PrometheusGrafanaHealth
12.14

Opérations courantes

Ajouter/remplacer OSD, gérer pools, CRUSH, reweight, rebalance, maintenance nœud, upgrades et capacity planning.

OSDRebalanceUpgrade
12.15

Sécurité Ceph

cephx, caps, RGW policies, TLS, encryption, network segmentation, admin keys, tenant isolation et audit.

cephxCapsTLS
12.16

OpenStack & Kubernetes

Cinder, Glance, Nova, Manila, Rook, Ceph CSI, StorageClass, PVC, snapshots et operators.

CinderRookCSI
12.17

Runbooks incidents

OSD down, MON quorum perdu, slow ops, full cluster, PG stuck, MDS degraded, RGW 5xx, réseau instable.

RunbookIncidentRecovery
12.18

Checklist production

Préprod Ceph : réseau, sizing, failure domains, monitoring, backups, upgrade path, restore drills et documentation.

Prod-readyAuditChecklist
12.1 Vue générale : Ceph, stockage distribué open source
Définition opérationnelle

Ceph est une plateforme de stockage distribuée open source capable d’exposer du bloc, du fichier et de l’objet. Son cœur, RADOS, répartit les données sur des OSD, s’appuie sur CRUSH pour le placement, et fournit réplication, erasure coding, self-healing et scrubbing.

Idée centrale : Ceph remplace une baie centralisée par un cluster de nœuds standards, mais exige une vraie discipline réseau, monitoring et exploitation.
Vue logique
Apps / VMs / PodsRBD / CephFS / RGWRADOSCRUSHOSDs
  • Unifier block, file et object storage.
  • Construire un stockage souverain sur matériel standard.
  • Servir OpenStack, Kubernetes, KVM, backup, S3 privé.
  • Scale-out par ajout de nœuds et disques.
  • Éviter la dépendance à une baie propriétaire unique.
CoucheRôle
RADOSObjet distribué interne, base de toute la plateforme.
RBDVolumes bloc pour VM, DB, Kubernetes RWO.
CephFSFilesystem distribué pour workloads fichier/RWX.
RGWGateway S3/Swift pour stockage objet.
Éviter Ceph si l'équipe n'a pas les compétences Linux/réseau/observabilité, si le cluster est trop petit pour les objectifs, ou si l'on cherche une appliance simple sans exploitation avancée.
12.2 Composants : MON, OSD, MDS, RGW, Manager
ComposantRôleCriticité
MONMaintient les maps cluster, quorum et état global.Quorum indispensable.
OSDStocke les données sur disque/SSD/NVMe.Volume et performance.
MGRModules, dashboard, Prometheus, orchestration.Gestion et observabilité.
MDSMetadata CephFS.Critique pour fichier.
RGWGateway S3/Swift.Critique pour objet.

Les MON forment un quorum. Une configuration typique utilise 3 ou 5 MON. Perdre le quorum ne détruit pas les données, mais bloque des décisions de cluster et peut rendre la plateforme indisponible.

3 MON → tolère 1 perte
5 MON → tolère 2 pertes

Un OSD est généralement associé à un disque ou volume. Avec BlueStore, il gère directement le périphérique bloc, avec RocksDB/WAL pour metadata internes. Les OSD sont la source principale de capacité et d'I/O.

ceph osd tree
ceph osd df
ceph osd metadata 12
ceph orch ps --daemon_type osd
MDS

Le MDS sert les metadata CephFS : directories, inodes, permissions. Il peut être actif/standby ou multi-actif selon charge.

RGW

RGW expose une API S3/Swift. On le place derrière load balancer, avec TLS, policies, users, buckets et éventuellement multisite.

12.3 Types d'accès : RBD bloc, CephFS fichier, RGW objet S3
AccèsTypeUsageAttention
RBDBlocVM, Kubernetes RWO, OpenStack Cinder.Snapshots et mirroring à gouverner.
CephFSFichierRWX, partages Linux, datasets.MDS sizing et metadata.
RGWObjet S3Buckets, backup, data lake, archive.Gateway, policies, lifecycle.

RBD fournit des images bloc fines, snapshottables, clonables, mappables côté Linux/KVM/OpenStack/Kubernetes. C'est souvent le service Ceph le plus utilisé en cloud privé.

rbd ls -p volumes
rbd info volumes/vm-001
rbd snap create volumes/vm-001@before-upgrade
rbd map volumes/vm-001

CephFS fournit un filesystem distribué POSIX-like. Il convient aux usages fichier partagés, mais les workloads metadata intensifs exigent un dimensionnement MDS sérieux.

ceph fs status
ceph fs volume ls
mount -t ceph mon1,mon2,mon3:/ /mnt/cephfs -o name=client.user,secretfile=/etc/ceph/secret

RGW expose S3-compatible object storage. Il sert les buckets, users, access keys, policies, lifecycle, replication/multisite selon configuration.

radosgw-admin user create --uid app1 --display-name "Application 1"
radosgw-admin bucket list
radosgw-admin bucket stats --bucket data
VM/OpenStackRBD.
Pods Kubernetes RWORBD CSI.
Pods RWX / shared POSIXCephFS CSI.
Backup/data lake/archiveRGW S3.
12.4 CRUSH Map : placement intelligent des données

CRUSH calcule le placement des données à partir de la topologie du cluster : OSD, hosts, racks, rows, rooms, datacenters. Il évite une table centrale massive en utilisant un algorithme déterministe et des règles de placement.

ObjectPGCRUSH ruleHost/Rack choicesOSDs
Failure domainProtection contreExemple
osdDisque isolé.Lab uniquement parfois.
hostNœud complet.Standard production minimum.
rackSwitch/alimentation rack.Datacenter sérieux.
room/siteSalle/site.Metro/DR design.

Ceph distingue les classes de périphériques : hdd, ssd, nvme. Les rules peuvent cibler une classe pour créer des pools différenciés : capacity HDD, fast SSD, ultra NVMe.

ceph osd crush class ls
ceph osd crush tree --show-shadow
ceph osd crush rule ls

Les weights représentent la capacité relative des OSD. Une mauvaise pondération crée des déséquilibres. Les reweight temporaires aident en incident mais ne remplacent pas un design propre.

ceph osd df tree
ceph osd reweight-by-utilization
ceph osd crush reweight osd.12 7.28
  • Replication factor 3 mais copies sur même host.
  • Racks non modélisés dans CRUSH.
  • Mélanger HDD et NVMe dans un même pool sans règle.
  • Modifier CRUSH sans comprendre rebalance induit.
12.5 Replication et erasure coding : protection des données

Les pools replicated stockent plusieurs copies complètes. C'est simple, performant en lecture, mais coûteux en capacité.

size=3 → 3 copies → overhead 3× → environ 33% de capacité utile
ceph osd pool set volumes size 3
ceph osd pool set volumes min_size 2

L'erasure coding découpe les données en fragments data + coding. Il améliore le rendement capacité, utile pour objet/archive, mais augmente CPU, latence et complexité, surtout pour petites écritures.

EC k=8 m=4 → 12 fragments, tolère 4 pertes, overhead 1.5×
ceph osd erasure-code-profile set ec84 k=8 m=4 crush-failure-domain=host
ceph osd pool create data-ec erasure ec84

Le scrub vérifie la cohérence. Le deep scrub lit plus profondément les données. Il détecte corruption latente mais consomme I/O.

ceph health detail
ceph pg dump_stuck
ceph tell osd.* version
  • Backfill reconstruit les copies/fragments manquants.
  • Recovery consomme réseau, disque et CPU.
  • Throttle possible pour protéger production.
  • Capacité libre indispensable après panne.
degradedCopies/fragments manquants.
misplacedDonnées pas à l'endroit final selon CRUSH.
backfillingReconstruction en cours.
undersizedNombre de copies inférieur au size attendu.
12.6 Cas d’usage Ceph : cloud privé, OpenStack, Kubernetes, backup, objet souverain

Ceph est un backend classique pour cloud privé : volumes bloc, images, snapshots, stockage objet et parfois filesystem. Il brille quand l'infrastructure doit évoluer horizontalement.

CinderVolumes RBD.
GlanceImages sur RBD ou RGW.
NovaDisques VM RBD.
ManilaFile shares selon intégration.
  • RBD CSI pour volumes RWO.
  • CephFS CSI pour volumes RWX.
  • Rook pour gérer Ceph dans Kubernetes.
  • ODF dans OpenShift.
  • S3 privé on-prem.
  • Backup immuable selon design RGW/Object Lock.
  • Data lake interne.
  • Archive réglementaire avec contrôle localisation.
12.7 Difficultés : réseau, latence, sizing, recovery, observabilité
Ceph peut être excellent, mais il est impitoyable avec les mauvais designs : réseau faible, capacité trop juste, failure domains absents, monitoring insuffisant, mélange de disques et upgrades hasardeux.
  • Réseau east-west massif.
  • Recovery qui impacte production.
  • Full cluster dangereux.
  • Métadonnées CephFS difficiles si workload petits fichiers.
  • RGW à dimensionner comme vrai front-end applicatif.
DimensionQuestion
CapacitéCapacité utile après overhead et headroom ?
PerformanceHDD, SSD, NVMe, DB/WAL séparées ?
Réseau10/25/100G, redondance, latence ?
Failure domainHost, rack, site ?

Sans Prometheus/Grafana et alertes robustes, Ceph devient opaque. Il faut surveiller health, latence OSD, slow ops, PG states, capacité, recovery, réseau, disques et clients.

Une commande mal comprise peut déclencher un rebalance massif ou dégrader le cluster. Les changements CRUSH, pool size, flags et osd out doivent être contrôlés.
12.8 Architecture cluster Ceph
ClientsPublic networkMON/MGR/RGW/MDSOSD nodesCluster network
RéseauRôle
Public networkClients vers Ceph : RBD, CephFS, RGW.
Cluster networkRéplication, recovery, backfill entre OSD.
ManagementSSH, orchestration, monitoring.
  • MON sur 3 ou 5 nœuds fiables.
  • OSD nodes dimensionnés disques + réseau + CPU.
  • RGW derrière load balancer.
  • MDS active/standby pour CephFS.
  • MGR pour dashboard et metrics.
Production minimum raisonnable : 3+ nœuds, failure_domain=host, monitoring, backup configs, réseau redondant, capacité libre suffisante pour recovery.
12.9 RBD bloc : images, snapshots, clones, mirroring, CSI

RBD expose des images bloc distribuées. Chaque image est découpée en objets RADOS. C'est adapté aux VM, volumes OpenStack Cinder, Kubernetes RWO et certains workloads applicatifs.

SnapshotsPoints de restauration image.
ClonesCopies rapides via layering.
MirroringRéplication inter-cluster pour DR.
CSIProvisioning Kubernetes dynamique.
rbd create volumes/db01 --size 500G
rbd info volumes/db01
rbd snap create volumes/db01@before-maintenance
rbd clone images/base@golden volumes/vm01
rbd mirror pool status volumes
  • Utiliser pools SSD/NVMe pour workloads sensibles.
  • Surveiller latency client et OSD.
  • Limiter snapshots longs non gouvernés.
  • Tester restore et clone.
12.10 CephFS fichier : MDS, metadata, RWX

CephFS fournit un filesystem distribué POSIX-like au-dessus de RADOS. Il utilise des MDS pour la metadata et des OSD pour les données.

active MDSSert metadata.
standby MDSFailover.
multiple activeScale metadata selon configuration.
cacheImpact majeur sur performance.
  • Kubernetes RWX.
  • Partage Linux.
  • Datasets de calcul.
  • Home dirs techniques.
  • Mais attention aux millions de petits fichiers.
ceph fs status
ceph mds stat
ceph fs volume ls
ceph fs subvolume ls cephfs csi
ceph tell mds.* perf dump
12.11 RGW objet S3 : buckets, users, multisite, lifecycle

RADOS Gateway expose une API compatible S3/Swift. C'est la brique pour object storage souverain, backup, archives et applications cloud-native.

UserIdentité RGW avec access/secret keys.
BucketConteneur logique.
ObjectDonnée + metadata.
PolicyDroits bucket/user.
LifecycleExpiration/transition selon règles.
  • Plusieurs RGW derrière load balancer.
  • TLS terminé proprement.
  • Metrics par gateway.
  • Multisite pour réplication géographique si nécessaire.
radosgw-admin user create --uid app --display-name "App"
radosgw-admin user info --uid app
radosgw-admin bucket stats --bucket data
radosgw-admin sync status
12.12 Performance & tuning Ceph
OSDlat

apply/commit latency.

Clientp99

Ressenti application.

PGstate

active+clean attendu.

Netdrops

Réseau critique.

BlueStore stocke directement sur block device. RocksDB/WAL peuvent bénéficier de SSD/NVMe dédiés pour OSD HDD. Une mauvaise DB/WAL sizing peut limiter fortement les performances.

rados bench -p test 60 write --no-cleanup
rados bench -p test 60 seq
rados bench -p test 60 rand
fio --name=rbdtest --ioengine=rbd --clientname=admin --pool=volumes --rbdname=image01 --rw=randrw --bs=4k --iodepth=32 --runtime=120 --time_based
  • Séparer HDD/SSD/NVMe par device class.
  • Adapter replication vs EC au workload.
  • Surveiller recovery throttling.
  • Éviter surcharger MON/MDS/RGW.
  • Optimiser réseau avant micro-tuning.
12.13 Observabilité Ceph : health, Prometheus, Grafana
ceph -s
ceph health detail
ceph df
ceph osd df tree
ceph osd tree
ceph pg stat
ceph pg dump_stuck
ceph orch ps
ceph mgr module ls
MétriquePourquoi
HEALTH_WARN/ERRÉtat global.
nearfull/backfillfull/fullRisque critique capacité.
slow opsLatence ou blocage.
degraded/misplacedRésilience réduite.
recovery/backfillCharge de réparation.
  • Dashboard cluster overview.
  • OSD latency.
  • Pool I/O.
  • RGW requests/errors.
  • MDS cache and ops.
  • Capacity forecast.
  • HEALTH_ERR immédiat.
  • OSD down.
  • MON quorum risk.
  • PG inactive/stuck.
  • Capacity > 80/85/90%.
  • RGW 5xx spike.
12.14 Opérations courantes Ceph
  1. Valider disque et host.
  2. Vérifier device class.
  3. Ajouter via ceph orch/ceph-volume.
  4. Surveiller rebalance.
  5. Vérifier distribution CRUSH.
ceph orch device ls
ceph orch daemon add osd host:/dev/sdb
ceph -s
  1. Confirmer OSD fautif.
  2. out si nécessaire selon état.
  3. Remplacer disque.
  4. Recréer OSD.
  5. Surveiller recovery/backfill.
ceph orch host maintenance enter node01
ceph -s
# maintenance
ceph orch host maintenance exit node01
Toujours vérifier impact sur replication/min_size avant mise en maintenance.
  • Cluster healthy avant upgrade.
  • Lire release notes.
  • Backup configs.
  • Upgrade rolling.
  • Valider clients et métriques après chaque phase.
12.15 Sécurité Ceph : cephx, caps, RGW policies, TLS

cephx authentifie les clients Ceph. Les caps limitent l'accès aux MON, OSD, MDS selon pools, namespaces ou paths.

ceph auth get client.admin
ceph auth get-or-create client.app mon 'profile rbd' osd 'profile rbd pool=volumes' mgr 'profile rbd pool=volumes'
  • Access keys par application.
  • Bucket policies.
  • TLS obligatoire.
  • Pas de bucket public par défaut.
  • Rotation secrets.
  • Réseau public Ceph limité aux clients autorisés.
  • Réseau cluster non exposé.
  • Management via bastion/VPN.
  • Firewall par rôle.
  • Actions admin Ceph.
  • Création/suppression pools.
  • RGW access logs.
  • Changements caps.
  • Suppression snapshots/buckets.
12.16 Ceph avec OpenStack & Kubernetes
CinderVolumes block RBD.
GlanceImages VM.
NovaEphemeral/root disks sur RBD.
ManilaFile shares selon driver.
PVCStorageClassCeph CSIRBD/CephFS
kubectl get storageclass
kubectl get pvc -A
kubectl get volumesnapshot -A

Rook pilote Ceph comme operator Kubernetes : déploiement, OSDs, pools, filesystems, object stores. C'est puissant mais ajoute une couche Kubernetes à diagnostiquer.

  • Ne pas mettre MON/MGR sur nœuds instables.
  • Prévoir anti-affinity.
  • Séparer capacité app et capacité control plane.
  • Tester restore PVC et snapshot.
12.17 Runbooks incidents Ceph
  1. Lire ceph health detail.
  2. Identifier host/disque/OSD.
  3. Vérifier logs OSD et dmesg.
  4. Décider restart vs remplacement.
  5. Surveiller degraded/backfill.
ceph -s
ceph health detail
ceph osd tree
ceph orch logs osd.12
Incident critique. Ne pas supprimer/recréer des MON au hasard.
  1. Identifier MON up/down.
  2. Vérifier réseau et temps/NTP.
  3. Restaurer quorum majoritaire.
  4. Consulter logs mon.
  5. Escalader si store MON corrompu.
Un cluster full peut bloquer écritures et recovery.
  1. Stopper ingestion non critique.
  2. Identifier pools/buckets gros consommateurs.
  3. Ajouter capacité ou supprimer données validées.
  4. Vérifier snapshots, versions, multipart incomplets.
  5. Ne pas baisser les seuils au hasard.
  1. Identifier OSDs concernés.
  2. Vérifier disques, latence, réseau.
  3. Vérifier recovery/backfill en cours.
  4. Vérifier clients bruyants.
  5. Throttle recovery si nécessaire.
ceph pg dump_stuck
ceph pg map 
ceph osd blocked-by
ceph health detail
Traiter la cause : OSD down, peering bloqué, réseau, full, CRUSH inconsistant.
12.18 Checklist production Ceph
ContrôleOK ?Note
3/5 MON avec quorum fiableNTP et réseau validés.
Failure domain host/rack définiCRUSH réel.
Réseau public/cluster dimensionné10/25G minimum selon charge.
Capacity headroomRecovery possible après panne.
Prometheus/Grafana/alertingHealth, capacity, latency.
  • Replication/EC choisis par workload.
  • min_size validé.
  • Scrub/deep scrub planifiés.
  • Backups externes pour données critiques.
  • Restore drill réalisé.
  • Runbook OSD down.
  • Runbook full cluster.
  • Runbook MON quorum.
  • Procédure upgrade.
  • Inventaire disques/nœuds.
  • Escalade support.
  • cephx caps minimales.
  • Admin keys protégées.
  • TLS RGW/dashboard.
  • Réseaux segmentés.
  • Audit actions sensibles.
NO-GO si : pas de monitoring, réseau non testé, cluster trop petit, pas de capacité libre, pas de backup externe, équipe non formée, aucun runbook incident.