🧱 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.
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 sourceDistributedRADOSComposants
MON, OSD, MDS, RGW, Manager : rôles, quorum, metadata, gateways S3 et services de pilotage.
MONOSDMDS/RGWTypes d’accès
RBD bloc, CephFS fichier, RGW objet S3 : usages, clients, performance, limites et intégration Kubernetes/OpenStack.
RBDCephFSRGWCRUSH Map
Placement intelligent des données : buckets, rules, failure domains, device classes, weights et répartition sans table centrale massive.
CRUSHPlacementFailure domainsReplication et erasure coding
Protection des données : replicated pools, EC pools, scrub, backfill, recovery, degraded objects et overhead capacité.
ReplicationECScrubCas d’usage
Cloud privé, OpenStack, Kubernetes, backup, object storage souverain, archive, data lake, VM, plateformes DevOps.
OpenStackKubernetesS3Difficultés
Réseau, latence, sizing, recovery, observabilité, tuning, upgrades, full cluster et complexité opérationnelle réelle.
NetworkSizingRecoveryArchitecture cluster
Topologie nœuds, disques, réseaux public/cluster, quorum MON, OSD layout, RGW frontends, MDS HA et dashboard.
TopologyNetworksQuorumRBD bloc
Images RBD, snapshots, clones, layering, mirroring, QoS, Kubernetes CSI, OpenStack Cinder et VM workloads.
BlockSnapshotsCSICephFS fichier
Filesystem distribué : MDS active/standby, metadata, subvolumes, quotas, snapshots, NFS gateways et workloads RWX.
FileMDSRWXRGW objet S3
Buckets, users, access keys, multisite, lifecycle, bucket policies, Object Lock selon configuration et gateways HA.
S3BucketsMultisitePerformance & tuning
OSD latency, p99, BlueStore, RocksDB/WAL, device classes, PGs, network, client cache et benchmarks.
BlueStorep99PGObservabilité
ceph -s, health detail, Prometheus, Grafana, mgr modules, logs, capacity, slow ops, degraded/misplaced objects.
PrometheusGrafanaHealthOpérations courantes
Ajouter/remplacer OSD, gérer pools, CRUSH, reweight, rebalance, maintenance nœud, upgrades et capacity planning.
OSDRebalanceUpgradeSécurité Ceph
cephx, caps, RGW policies, TLS, encryption, network segmentation, admin keys, tenant isolation et audit.
cephxCapsTLSOpenStack & Kubernetes
Cinder, Glance, Nova, Manila, Rook, Ceph CSI, StorageClass, PVC, snapshots et operators.
CinderRookCSIRunbooks incidents
OSD down, MON quorum perdu, slow ops, full cluster, PG stuck, MDS degraded, RGW 5xx, réseau instable.
RunbookIncidentRecoveryChecklist production
Préprod Ceph : réseau, sizing, failure domains, monitoring, backups, upgrade path, restore drills et documentation.
Prod-readyAuditChecklistDé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.
Vue logique
- 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.
| Couche | Rôle |
|---|---|
| RADOS | Objet distribué interne, base de toute la plateforme. |
| RBD | Volumes bloc pour VM, DB, Kubernetes RWO. |
| CephFS | Filesystem distribué pour workloads fichier/RWX. |
| RGW | Gateway S3/Swift pour stockage objet. |
| Composant | Rôle | Criticité |
|---|---|---|
| MON | Maintient les maps cluster, quorum et état global. | Quorum indispensable. |
| OSD | Stocke les données sur disque/SSD/NVMe. | Volume et performance. |
| MGR | Modules, dashboard, Prometheus, orchestration. | Gestion et observabilité. |
| MDS | Metadata CephFS. | Critique pour fichier. |
| RGW | Gateway 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.
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.
| Accès | Type | Usage | Attention |
|---|---|---|---|
| RBD | Bloc | VM, Kubernetes RWO, OpenStack Cinder. | Snapshots et mirroring à gouverner. |
| CephFS | Fichier | RWX, partages Linux, datasets. | MDS sizing et metadata. |
| RGW | Objet S3 | Buckets, 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/OpenStack | RBD. |
| Pods Kubernetes RWO | RBD CSI. |
| Pods RWX / shared POSIX | CephFS CSI. |
| Backup/data lake/archive | RGW S3. |
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.
| Failure domain | Protection contre | Exemple |
|---|---|---|
| osd | Disque isolé. | Lab uniquement parfois. |
| host | Nœud complet. | Standard production minimum. |
| rack | Switch/alimentation rack. | Datacenter sérieux. |
| room/site | Salle/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.
Les pools replicated stockent plusieurs copies complètes. C'est simple, performant en lecture, mais coûteux en capacité.
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.
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.
| degraded | Copies/fragments manquants. |
| misplaced | Données pas à l'endroit final selon CRUSH. |
| backfilling | Reconstruction en cours. |
| undersized | Nombre de copies inférieur au size attendu. |
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.
| Cinder | Volumes RBD. |
| Glance | Images sur RBD ou RGW. |
| Nova | Disques VM RBD. |
| Manila | File 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.
- 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.
| Dimension | Question |
|---|---|
| Capacité | Capacité utile après overhead et headroom ? |
| Performance | HDD, SSD, NVMe, DB/WAL séparées ? |
| Réseau | 10/25/100G, redondance, latence ? |
| Failure domain | Host, 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.
| Réseau | Rôle |
|---|---|
| Public network | Clients vers Ceph : RBD, CephFS, RGW. |
| Cluster network | Réplication, recovery, backfill entre OSD. |
| Management | SSH, 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.
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.
| Snapshots | Points de restauration image. |
| Clones | Copies rapides via layering. |
| Mirroring | Réplication inter-cluster pour DR. |
| CSI | Provisioning 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.
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 MDS | Sert metadata. |
| standby MDS | Failover. |
| multiple active | Scale metadata selon configuration. |
| cache | Impact 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
RADOS Gateway expose une API compatible S3/Swift. C'est la brique pour object storage souverain, backup, archives et applications cloud-native.
| User | Identité RGW avec access/secret keys. |
| Bucket | Conteneur logique. |
| Object | Donnée + metadata. |
| Policy | Droits bucket/user. |
| Lifecycle | Expiration/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
apply/commit latency.
Ressenti application.
active+clean attendu.
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.
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étrique | Pourquoi |
|---|---|
| HEALTH_WARN/ERR | État global. |
| nearfull/backfillfull/full | Risque critique capacité. |
| slow ops | Latence ou blocage. |
| degraded/misplaced | Résilience réduite. |
| recovery/backfill | Charge 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.
- Valider disque et host.
- Vérifier device class.
- Ajouter via ceph orch/ceph-volume.
- Surveiller rebalance.
- Vérifier distribution CRUSH.
ceph orch device ls ceph orch daemon add osd host:/dev/sdb ceph -s
- Confirmer OSD fautif.
- out si nécessaire selon état.
- Remplacer disque.
- Recréer OSD.
- Surveiller recovery/backfill.
ceph orch host maintenance enter node01 ceph -s # maintenance ceph orch host maintenance exit node01
- Cluster healthy avant upgrade.
- Lire release notes.
- Backup configs.
- Upgrade rolling.
- Valider clients et métriques après chaque phase.
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.
| Cinder | Volumes block RBD. |
| Glance | Images VM. |
| Nova | Ephemeral/root disks sur RBD. |
| Manila | File shares selon driver. |
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.
- Lire ceph health detail.
- Identifier host/disque/OSD.
- Vérifier logs OSD et dmesg.
- Décider restart vs remplacement.
- Surveiller degraded/backfill.
ceph -s ceph health detail ceph osd tree ceph orch logs osd.12
- Identifier MON up/down.
- Vérifier réseau et temps/NTP.
- Restaurer quorum majoritaire.
- Consulter logs mon.
- Escalader si store MON corrompu.
- Stopper ingestion non critique.
- Identifier pools/buckets gros consommateurs.
- Ajouter capacité ou supprimer données validées.
- Vérifier snapshots, versions, multipart incomplets.
- Ne pas baisser les seuils au hasard.
- Identifier OSDs concernés.
- Vérifier disques, latence, réseau.
- Vérifier recovery/backfill en cours.
- Vérifier clients bruyants.
- Throttle recovery si nécessaire.
ceph pg dump_stuck ceph pg mapceph osd blocked-by ceph health detail
| Contrôle | OK ? | Note |
|---|---|---|
| 3/5 MON avec quorum fiable | ☐ | NTP et réseau validés. |
| Failure domain host/rack défini | ☐ | CRUSH réel. |
| Réseau public/cluster dimensionné | ☐ | 10/25G minimum selon charge. |
| Capacity headroom | ☐ | Recovery possible après panne. |
| Prometheus/Grafana/alerting | ☐ | Health, 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.
