Skip to content

Architecture Ceph

Introduction

Ceph est un système de stockage distribué open source offrant stockage objet, bloc et fichier. Pour OpenStack, on utilise principalement RBD (RADOS Block Device) pour les volumes et images.

Points à apprendre

Composants Ceph

graph TB
    subgraph Ceph["CEPH CLUSTER"]
        subgraph MON["MONITORS (MON)<br/>Maintiennent la carte du cluster (CRUSH map)<br/>Quorum basé sur Paxos (minimum 3 pour HA)"]
            mon1["MON 1"]
            mon2["MON 2"]
            mon3["MON 3"]
            mon1 <--> mon2
            mon2 <--> mon3
        end

        subgraph MGR["MANAGERS (MGR)<br/>Dashboard, métriques, orchestration"]
            mgr_active["MGR Active"]
            mgr_standby["MGR Standby"]
        end

        subgraph OSD["OSDs<br/>Object Storage Daemons - stockent les données"]
            osd0["OSD.0<br/>200 GB"]
            osd1["OSD.1<br/>200 GB"]
            osd2["OSD.2<br/>200 GB"]
            osdn["OSD.N<br/>..."]
        end
    end

Concepts clés

Concept Description
RADOS Reliable Autonomic Distributed Object Store - couche de base
Pool Partition logique pour les données (ex: volumes, images)
PG Placement Group - unité de réplication
CRUSH Algorithme de placement des données
RBD RADOS Block Device - volumes bloc

Flux de données

graph TB
    client["Client (Cinder)"]
    librados["librados"]
    mon["MON (get CRUSH map)"]
    crush["CRUSH algorithm"]
    osd0["OSD.0<br/>(primary)"]
    osd1["OSD.1<br/>(replica)"]
    osd2["OSD.2<br/>(replica)"]

    client --> librados --> mon
    mon --> crush
    crush --> osd0
    crush --> osd1
    crush --> osd2

Réplication

# Exemple pool avec réplication 3x
pool: volumes
  size: 3           # 3 copies
  min_size: 2       # Minimum pour I/O
  pg_num: 128       # Placement groups

# Donnée de 4MB → 3 copies sur 3 OSDs différents

Checkpoint

  • Je comprends le rôle de MON, MGR, OSD
  • Je comprends les concepts de pool et PG
  • Je sais comment CRUSH distribue les données