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