đïž Ceph â Distributed Storage Cluster (RBD, CephFS, RGW)
Guide IDEO-Lab pour comprendre, installer et exploiter un cluster Ceph : objets, blocs, filesystem distribué, S3-compatible, opérations et tuning.
Ceph en un coup dâĆil
Concept, cas dâusage, comparaison avec SAN/NAS traditionnels.
Distributed Scale-outArchitecture Core
MON, MGR, OSD, MDS, RGW, CRUSH map.
MON OSDPools, PG & CRUSH
Placement groups, réplication, erasure coding, rÚgles CRUSH.
PG CRUSHDéploiement & Outils
cephadm, ceph-ansible, rook (K8s), concepts de base dâinstallation.
cephadm RookRBD â Block Storage
Volumes blocs pour VM (KVM, OpenStack, Proxmox, Kubernetes).
RBD VMCephFS â FileSystem distribuĂ©
Namespace POSIX, MDS, montages clients.
CephFS POSIXRGW â Object / S3
Object storage compatible S3 / Swift, multi-site.
S3 ObjectOps & Monitoring
ceph status, health checks, dashboard, alerting.
Ops HealthPerformance & Tuning
OSD, réseau, BlueStore, SSD/NVMe, numjobs.
BlueStore PerfRecovery & Failures
OSD down, rebalancing, backfill, scénarios de panne.
RecoveryUse cases typiques
Cloud privé, OpenStack, K8s, archive, backup, HPC.
Cloud HPCCheat-sheet Ceph
Commandes admin & patterns Ă retenir.
CLI AdminExpériences on Ceph
Retour dâexpĂ©rience â Ceph, Lockheed Martin / EMC / Airbus.
CLI AdminContexte & objectifs
Mission âenterprise storageâ autour de Ceph dans un environnement mĂȘlant Lockheed Martin (aĂ©ronautique & dĂ©fense), intĂ©gration EMC Computer (conseil stockage) et exploitation chez Airbus pour des workloads de simulation & jumeaux numĂ©riques.
- Remplacer/compléter un SAN EMC traditionnel par un cluster Ceph scale-out.
- Fournir du block RBD pour les VM de calcul & services applicatifs.
- Exposer du stockage objet S3 (RGW) pour archives & data lake.
- Garantir résilience multi-racks + intégration dans la chaßne de backup existante (EMC / Commvault).
Enjeux principaux
- Tenir des SLA forts (défense/aéronautique) avec 0 perte de données.
- Concevoir un design compatible avec la politique sécurité (zones, air-gaps, chiffrement).
- Limiter lâimpact sur les Ă©quipes dâexploitation habituĂ©es aux appliances EMC.
Architecture mise en place
- 18 nĆuds Ceph âstorageâ (3 racks x 6 nĆuds)
- ~1.5 Po brut (HDD 12/16 To + journaux SSD NVMe)
- Réseau :
âą public : 2 x 25 Gb/s
⹠cluster : 2 x 25 Gb/s dédié
- Services :
âą RBD (VM KVM / OpenStack)
âą CephFS (workspace HPC)
⹠RGW (S3 privé pour archives & data lake)
- Pools :
⹠rbd (réplication size=3)
⹠cephfs_data (réplication size=3)
âą archive (erasure coding k=6,m=3)
RĂŽle personnel
- Co-design de lâarchitecture avec les Ă©quipes Lockheed Martin & experts EMC.
- Définition CRUSH map (racks / hosts) & politiques de réplication.
- Automatisation déploiement via ceph-ansible puis migration progressive vers cephadm.
- Mise en place des dashboards, métriques Prometheus/Grafana, alerting (health, near full, OSD down, latency).
Intégration avec Airbus & workloads
- Back-end RBD pour clusters de virtualisation (KVM / OpenStack) hébergeant :
- simulateurs de vol & outils dâingĂ©nierie Airbus,
- chaßne CI/CD interne pour software embarqué.
- CephFS comme workspace partagé pour jobs HPC (analyse de télémétrie, CFD, post-traitement).
- RGW utilisĂ© comme âS3 interneâ pour :
- archives de logs techniques,
- datasets dâapprentissage pour IA/ML (vision, maintenance prĂ©dictive).
Résultats & enseignements
- Remplacement progressif de baies EMC pour certains usages non critiques, tout en conservant les systĂšmes EMC pour le cĆur rĂ©glementaire (approche hybride).
- Augmentation de la capacité disponible & baisse du coût / To grùce au hardware commodity.
- Temps de reprise acceptable en cas de panne host : recovery automatisé + tuning des débits de backfill.
- Mise en place de ârunbooks Cephâ : procĂ©dures standardisĂ©es pour :
- ajout dâun nĆud / OSD,
- remplacement disque,
- gestion alerte health WARN/ERR,
- tests DR rĂ©guliers (simulation perte dâun rack).
- ĂvangĂ©lisation interne : formation des Ă©quipes Airbus/Lockheed/EMC Ă la culture storage distribuĂ© (CRUSH, PG, self-healing) vs logique SAN classique.
Stack & outils autour de Ceph
- Ceph (Reef) â cephadm + ceph-ansible
- OpenStack (Cinder / Nova / Glance) avec backend RBD
- Proxmox / KVM pour certaines plateformes dâintĂ©gration
- Kubernetes (Rook + CSI RBD/CephFS) pour workloads modernes
- Monitoring : Prometheus, Grafana, Alertmanager, ceph-mgr-dashboard
- Intégration sauvegarde : Commvault / EMC Networker sur pools Ceph dédiés
Ceph, câest quoi ?
Ceph est une plateforme de stockage distribuĂ© scale-out, libre, qui fournit trois types de services sur un mĂȘme cluster :
- Block (RBD) â volumes pour VM / serveurs.
- File (CephFS) â filesystem distribuĂ©.
- Object (RGW) â stockage dâobjets type S3.
Le principe : agrĂ©ger des disques âcommodityâ (HDD/SSD/NVMe) sur plusieurs nĆuds, pour fournir un stockage rĂ©silient, auto-rĂ©parant et extensible.
Propriétés importantes
- Scale-out : on ajoute des nĆuds pour augmenter capacitĂ© & IOPS.
- Pas de single point of failure (design bien fait).
- CRUSH : algorithme de placement des données sans table centrale.
- Self-healing : en cas de panne disque/nĆud, Ceph rebalance.
Comparé à SAN/NAS classiques
| Aspect | Ceph | SAN / NAS |
|---|---|---|
| Architecture | Distribuée (shared-nothing) | ContrÎleurs centralisés |
| Scale | Ajout de nĆuds & disques | Scale-up plus limitĂ© / coĂ»teux |
| Coût | Hardware commodity | Appliances propriétaires |
| Flexibilité | Block + File + Object | Souvent orienté block ou NAS |
Inconvénients
- Plus de complexitĂ© dâexploitation (cluster distribuĂ©).
- Demande un réseau stable & performant.
- Nécessite une bonne discipline de monitoring / capacity planning.
RBD â RADOS Block Device
- Volume bloc exporté à un host (KVM, Proxmox, etc.).
- Snapshots, clones, resize dynamique.
- Intégration forte avec OpenStack (Cinder, Nova, Glance).
CephFS & RGW
- CephFS : FS distribué POSIX, accessible via clients kernel / fuse.
- RGW : S3-compatible, multi-tenant, multi-site.
- PossibilitĂ© dâutiliser 1 cluster Ceph pour tout : VM, data lake, backupsâŠ
Cas dâusage typiques
- Cloud privé (OpenStack, K8s) : volumes VM + objets.
- Backups & archives (S3 compatible) sur hardware interne.
- Clusters de calcul / HPC (cephfs pour scratch / data).
Contexte IDEO-Lab
- Cluster de tests Ceph pour démonstrations DevOps/HPC.
- Intégration avec Kubernetes via Rook pour les workloads IDEO-Lab.
Démons principaux
| Daemon | RĂŽle |
|---|---|
| MON | Monitors : map du cluster, quorum, auth. |
| MGR | Managers : modules, dashboard, metrics. |
| OSD | Object Storage Daemons : portent les données. |
| MDS | Metadata servers pour CephFS. |
| RGW | RADOS Gateway : API S3/Swift. |
Réseau
- Souvent 2 réseaux :
- public (clients & admin)
- cluster (réplication / backfill OSD)
- Conseillé : 10/25/40GbE pour production sérieuse.
- Latence stable plus importante que débit brut.
CRUSH map
CRUSH = algorithme de placement pseudo-aléatoire déterministe :
- Utilise la topologie : datacenter â rack â host â OSD.
- Pas de table de mapping centrale : chaque client calcule oĂč Ă©crire.
- Permet de définir des rÚgles de réplication / erasure coding par pool.
Placement Groups (PG)
- Un PG = âbucketâ logique de donnĂ©es dans un pool.
- Chaque PG est mappé sur un (ou plusieurs) OSD selon CRUSH.
- Nombre de PG impacte directement le balancing & perf.
Vue logique simplifiée
Clients (RBD / CephFS / RGW)
â
âŒ
RADOS layer
â
âââ Pools (rbd, cephfs_data, cephfs_meta, default.rgw.buckets...)
â
âââ PGs -> OSDs (disques, nodes)
Abstraction
Les clients ne voient que :
- un volume bloc (RBD),
- un path POSIX (CephFS),
- ou un bucket S3 (RGW).
Toute la complexitĂ© (rĂ©plication, self-heal, crush, PGâŠ) est gĂ©rĂ©e dans RADOS/OSD.
Créer un pool (réplication)
# pool "rbd" répliqué 3x avec 128 PG
ceph osd pool create rbd 128
ceph osd pool set rbd size 3
- size = nombre de copies.
- min_size = nombre mini pour IO (avant de passer en read-only).
Erasure coding
ceph osd erasure-code-profile set ec42 \
k=4 m=2 plugin=jerasure technique=reed_sol_van
ceph osd pool create archive 128 128 erasure ec42
Utilisé pour optimiser capacité (moins de overhead que réplication), plutÎt pour workloads froids / objets.
Bootstrap rapide (lab)
# Sur le premier nĆud
curl --silent --remote-name \
https://download.ceph.com/rpm-18.2.0/el9/noarch/cephadm
chmod +x cephadm
sudo ./cephadm add-repo --release reef
sudo ./cephadm install ceph-common
sudo cephadm bootstrap --mon-ip <IP_MON>
cephadm utilise des containers pour dĂ©ployer les daemons Ceph (MON/MGR/OSD/MDS/RGWâŠ) sur les nĆuds.
Ajouter un nĆud / OSD
# Sur le node Ă ajouter
sudo cephadm add-repo --release reef
sudo cephadm install ceph-common
# Depuis le mon
ceph orch host add ceph-node2 <ip>
# Découverte des disques & création OSD
ceph orch device ls
ceph orch daemon add osd ceph-node2:/dev/sdX
Rook + Ceph sur Kubernetes
Rook gĂšre Ceph en tant quâoperator K8s :
- CRD
CephCluster,CephBlockPool,CephFilesystem, etc. - Provisioners pour StorageClass RBD / CephFS.
- Ceph lui-mĂȘme tourne dans des pods.
Exemple StorageClass RBD
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rook-ceph-block
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
pool: rbd
clusterID: rook-ceph
imageFormat: "2"
csi.storage.k8s.io/fstype: ext4
allowVolumeExpansion: true
Bonnes pratiques initiales
- Min 3 MON, 3 MGR (1 actif, 1 standby).
- RĂ©partir les OSD sur plusieurs nĆuds / racks.
- Disques dédiés pour le journal / DB BlueStore (SSD/NVMe).
- Réseau séparé public / cluster si possible.
Lab vs prod
- En lab : 3 nĆuds, quelques disques, rĂ©seau 1 Gb possible.
- En prod : design sĂ©rieux (topologie, perf, capacitĂ© 3â5 ans).
- Documenter clairement CRUSH map & pools.
CrĂ©ation dâune image RBD
# pool rbd déjà créé
rbd create --size 50G --pool rbd vm01-root
# Lister les images
rbd ls rbd
Mapping sur un host Linux
modprobe rbd
rbd map vm01-root --pool rbd --name client.admin
mkfs.ext4 /dev/rbd0
mount /dev/rbd0 /mnt/vm01
Snapshots & clones
rbd snap create rbd/vm01-root@before-upgrade
rbd snap ls rbd/vm01-root
# clonage (template â VM)
rbd snap create rbd/template-ubuntu@base
rbd snap protect rbd/template-ubuntu@base
rbd clone rbd/template-ubuntu@base rbd/vm02-root
TrÚs utilisé dans les environnements de virtualisation et clouds privés.
Création CephFS
ceph fs volume create cephfs
# Pools data & metadata seront créés automatiquement ou manuellement
ceph fs ls
Montage client
# Kernel client
mkdir /mnt/cephfs
mount -t ceph mon1,mon2,mon3:/ /mnt/cephfs \
-o name=client.admin,secret=<key>
# Ou via ceph-fuse
ceph-fuse -n client.admin /mnt/cephfs
MDS gĂšre la mĂ©tadonnĂ©e ; plusieurs MDS peuvent ĂȘtre actifs pour scale-out.
Buckets & users
# créer un user S3
radosgw-admin user create --uid="demo" --display-name="Demo User"
# info (contient access/secret keys)
radosgw-admin user info --uid="demo"
Utilisation avec s3cmd / awscli
s3cmd mb s3://ideolab-bucket
s3cmd put file.txt s3://ideolab-bucket/
s3cmd ls s3://ideolab-bucket/
RGW permet de fournir un âS3 privĂ©â on-premise ou dans ton cloud privĂ©.
Commandes de base
ceph status
ceph health detail
ceph df
ceph osd tree
ceph osd df tree
Dashboard & metrics
- Module dashboard du MGR (UI web).
- Export Prometheus & Grafana pour métriques détaillées.
- Alerting sur health WARN / ERR, full ratio, OSD down, etc.
Points clés perf
- Quantité & qualité des OSD (SSD vs HDD).
- Latence réseau (public + cluster).
- Nombre de PG par pool (ni trop peu, ni trop).
- Utilisation de Bluestore (back-end moderne).
Bench rapide (rados bench)
# test d'écriture (10s)
rados bench -p rbd 10 write --no-cleanup
# test de lecture
rados bench -p rbd 10 seq
Utiliser également les benchs spécifiques (FIO, rbd bench, tests applicatifs).
OSD down / out
ceph osd tree
ceph osd down <id>
ceph osd out <id>
- Ceph recalcule les placements & re-réplique les PG affectés.
- Backfill & recovery consomment de lâIO â Ă tune via osd_recovery_max_*.
Scénarios typiques
- Perte dâun disque : OSD cassĂ©, recovering automatique.
- Perte dâun host : plusieurs OSD dâun coup â dâoĂč lâimportance de CRUSH & size.
- Near full / full : cluster saturĂ©, IO bloquĂ©s â capacity planning vital.
Cloud & virtualisation
- Back-end de stockage OpenStack (Cinder, Glance, Nova).
- Back-end RBD pour Proxmox, oVirt, etc.
- Intégration Kubernetes via Rook (PersistentVolume).
HPC & Data
- CephFS pour scratch / workspace partagé.
- RGW pour data lakes objets (S3-compatible).
- Backups & archives sur cluster Ceph dédié (erasure coding).
CLI & admin
ceph status # vue globale
ceph health detail # détails des problÚmes
ceph df # utilisation des pools
ceph osd tree # topologie OSD
ceph osd df tree # capacity & utilisation
ceph fs ls # CephFS
rbd ls rbd # images RBD
Ă retenir en design
- Commencer petit, mais design scalable dÚs le début.
- Bien sĂ©parer les pools par usage (VM, objets, archiveâŠ).
- Surveiller en continu : health, near full, PG inconsistent.
- Documenter CRUSH & policies de réplication par niveau (host, rack, DC).
