Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

đŸ—„ïž 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.

1.1

Ceph en un coup d’Ɠil

Concept, cas d’usage, comparaison avec SAN/NAS traditionnels.

Distributed Scale-out
1.2

Architecture Core

MON, MGR, OSD, MDS, RGW, CRUSH map.

MON OSD
1.3

Pools, PG & CRUSH

Placement groups, réplication, erasure coding, rÚgles CRUSH.

PG CRUSH
1.4

Déploiement & Outils

cephadm, ceph-ansible, rook (K8s), concepts de base d’installation.

cephadm Rook
2.1

RBD – Block Storage

Volumes blocs pour VM (KVM, OpenStack, Proxmox, Kubernetes).

RBD VM
2.2

CephFS – FileSystem distribuĂ©

Namespace POSIX, MDS, montages clients.

CephFS POSIX

RGW – Object / S3

Object storage compatible S3 / Swift, multi-site.

S3 Object
3.1

Ops & Monitoring

ceph status, health checks, dashboard, alerting.

Ops Health
3.2

Performance & Tuning

OSD, réseau, BlueStore, SSD/NVMe, numjobs.

BlueStore Perf

Recovery & Failures

OSD down, rebalancing, backfill, scénarios de panne.

Recovery
3.3

Use cases typiques

Cloud privé, OpenStack, K8s, archive, backup, HPC.

Cloud HPC
4.1

Cheat-sheet Ceph

Commandes admin & patterns Ă  retenir.

CLI Admin
4.2

Expériences on Ceph

Retour d’expĂ©rience – Ceph, Lockheed Martin / EMC / Airbus.

CLI Admin
3.X Retour d’expĂ©rience – Ceph, Lockheed Martin / EMC / Airbus
Contexte & 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
                
1.1 Ceph – Vue d’ensemble & principes clĂ©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
AspectCephSAN / NAS
ArchitectureDistribuée (shared-nothing)ContrÎleurs centralisés
ScaleAjout de nƓuds & disquesScale-up plus limitĂ© / coĂ»teux
CoûtHardware commodityAppliances propriétaires
FlexibilitéBlock + File + ObjectSouvent 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.
1.2 Architecture Ceph – MON, OSD, MGR, MDS, RGW, CRUSH
Démons principaux
DaemonRĂŽle
MONMonitors : map du cluster, quorum, auth.
MGRManagers : modules, dashboard, metrics.
OSDObject Storage Daemons : portent les données.
MDSMetadata servers pour CephFS.
RGWRADOS 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.

1.3 Pools, Placement Groups & rĂšgles CRUSH
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.

1.4 DĂ©ploiement Ceph – cephadm, ceph-ansible, Rook (K8s)
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.
2.1 RBD – RADOS Block Device (Volumes blocs)
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.

2.2 CephFS – FileSystem distribuĂ© POSIX
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.

2.3 RGW – RADOS Gateway (S3 / Swift compatible)
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Ă©.

3.1 Operations & Monitoring Ceph
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.
3.2 Performance, Bluestore & Tuning Ceph
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).

3.3 Pannes, Recovery & Rebalancing
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.
3.4 Use cases Ceph – Cloud, HPC, Backup, Data Lake
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).
4.1 Cheat-sheet Ceph – commandes & patterns
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).