Skip to content

Ceph Command Cheatsheet

Cette fiche rassemble les principales commandes utiles pour administrer, surveiller et dépanner un cluster Ceph.

Elle est destinée principalement aux administrateurs système et stockage intervenant sur les clusters Ceph en production. Elle privilégie les commandes utiles au quotidien : état du cluster, OSD, disques, pools, PG, CRUSH, équilibrage, maintenance, cephadm, RBD et CephFS.

Cette cheatsheet est volontairement orientée opérations et troubleshooting plutôt que description exhaustive de toutes les commandes Ceph.

Références

Avant d'utiliser cette fiche, deux références sont particulièrement utiles :

1. Ceph Cheatsheet — TheJJ / GitHub

Une cheatsheet très complète consacrée à l'exploitation d'un cluster Ceph. Elle contient notamment des commandes et recommandations concernant les OSD, PG, pools, CRUSH, CephFS, RBD, les performances et le troubleshooting.

Ceph Cheatsheet — TheJJ / GitHub

Cette documentation est une bonne référence pratique, mais certaines commandes ou recommandations peuvent être liées à des versions plus anciennes de Ceph. Il convient donc de vérifier la syntaxe avec la documentation correspondant à la version du cluster.

2. Ceph Commands / Control Commands — documentation officielle

La documentation officielle Ceph constitue la référence de référence pour la syntaxe et le comportement des commandes.

Ceph Control Commands — documentation officielle

Pour une commande ayant un impact sur le cluster, notamment les opérations sur les OSD, les PG, les pools, les flags ou la configuration, il est recommandé de vérifier sa documentation officielle avant exécution.

Convention

Les commandes sont regroupées par opération :

  • État et diagnostic du cluster
  • OSD et disques
  • Pools et utilisation
  • CRUSH et équilibrage
  • PG et scrub
  • Configuration
  • Flags de maintenance
  • cephadm / orchestrator
  • Remplacement et suppression d'OSD
  • Performances RADOS / RBD
  • CephFS
  • Troubleshooting

⚠️ Attention aux commandes de modification

Certaines commandes ne se contentent pas d'afficher des informations : elles modifient directement l'état du cluster.

Avant toute opération de maintenance ou potentiellement destructive, vérifier au minimum :

ceph -s
ceph health detail
ceph osd tree
ceph osd df tree

En particulier, prendre garde aux commandes concernant :

# OSD out / purge / destroy
# reweight
# flags noout / norecover / nobackfill
# noscrub / nodeep-scrub
# ceph orch osd rm
# ceph-volume ... zap
# configuration Ceph

Sur un cluster cephadm, privilégier autant que possible les commandes de l'orchestrateur (ceph orch ...) plutôt que les manipulations manuelles de systemd ou ceph-volume.

Cette fiche est une aide-mémoire. Elle ne remplace pas la documentation officielle Ceph ni les procédures de maintenance validées pour le cluster concerné.

1. État général du cluster

Statut

ceph -s
ceph status
ceph health
ceph health detail

Surveiller les événements

ceph -w

Messages du Manager :

ceph -W cephadm

Informations générales

ceph fsid
ceph version
ceph versions
ceph features

Rapport complet pour diagnostic

ceph report

2. OSD

Lister les OSD

ceph osd tree
ceph osd tree -f json-pretty
ceph osd ls
ceph osd status

Lister les OSD down :

ceph osd tree | grep down

Lister les OSD qui ne sont pas up :

ceph osd tree | grep -E 'down|destroyed'

Rechercher un OSD

ceph osd find <id>

Exemple :

ceph osd find 34

Voir les métadonnées :

ceph osd metadata <id>

3. Disques / devices

Inventaire des devices

ceph device ls

Par hôte :

ceph device ls-by-host <host>

Informations sur un device :

ceph device info <devid>

Faire clignoter la LED du disque

ceph device light on <devid>
ceph device light off <devid>

ou explicitement :

ceph device light on <devid> ident
ceph device light on <devid> fault

Fonction dépendante du matériel, du firmware, du kernel et de l'HBA/backplane.

Santé / durée de vie

ceph device check-health
ceph device get-health-metrics <devid> <sample>

4. Utilisation disque

Vue globale

ceph df
ceph df detail

Utilisation des OSD

ceph osd df
ceph osd df tree

Par classe :

ceph osd df tree hdd
ceph osd df tree ssd
ceph osd df tree nvme

Utile pour identifier un OSD anormalement rempli :

ceph osd df tree

5. Pools

Liste des pools

ceph osd pool ls
ceph osd pool ls detail

Paramètres d'un pool :

ceph osd pool get <pool> all

Quelques paramètres intéressants individuellement :

ceph osd pool get <pool> size
ceph osd pool get <pool> min_size
ceph osd pool get <pool> pg_num
ceph osd pool get <pool> pgp_num
ceph osd pool get <pool> pg_autoscale_mode
ceph osd pool get <pool> crush_rule

Statistiques :

ceph osd pool stats

6. CRUSH

Règles CRUSH

ceph osd crush rule ls
ceph osd crush rule dump

Vue de l'arbre :

ceph osd crush tree

Poids CRUSH :

ceph osd crush reweight <name> <weight>

À distinguer de ceph osd reweight : le premier modifie le poids CRUSH réel ; le second applique un override au niveau de l'OSD.


7. Reweight / équilibrage

Voir la distribution

ceph osd df tree
ceph osd utilization

Tester un reweight automatique

ceph osd test-reweight-by-utilization

Avec paramètres :

ceph osd test-reweight-by-utilization <threshold> <max_change> <max_osds>

Appliquer

ceph osd reweight-by-utilization

Exemple prudent :

ceph osd reweight-by-utilization 120 0.05 4

Empêcher l'augmentation des poids :

ceph osd reweight-by-utilization 120 0.05 4 --no-increasing

Reweight manuel d'un OSD

ceph osd reweight <id> <weight>

Exemple :

ceph osd reweight 34 0.85

Pour remettre à la valeur normale :

ceph osd reweight 34 1.0

OSD dont le reweight est différent de 1

ceph osd tree -f json-pretty |
  jq '.nodes[]
      | select(.type=="osd")
      | select(.reweight != 1)
      | {id,name,reweight}'

Préférer le balancer pg-upmap à des reweights manuels permanents.


8. Balancer

ceph balancer status
ceph balancer mode
ceph balancer eval
ceph balancer eval-verbose

Voir les modules :

ceph mgr module ls

Activer le balancer si nécessaire :

ceph mgr module enable balancer

Activer le mode upmap :

ceph balancer mode upmap

Activer le mode automatique :

ceph balancer on

Vérifier :

ceph balancer status

Le balancer est normalement préférable à une succession de ceph osd reweight.


9. Versions

Version locale :

ceph version

Versions de tous les daemons :

ceph versions

Versions des OSD :

ceph osd versions

Historique cephadm :

ceph cephadm get-cluster-version-history

10. Crash Ceph

Lister les crashs récents :

ceph crash ls-new

Lister tous les crashs :

ceph crash ls

Statistiques :

ceph crash stat

Détails :

ceph crash info <crash-id>

Archiver un crash après analyse :

ceph crash archive <crash-id>

Archiver tous les nouveaux :

ceph crash archive-all

Supprimer :

ceph crash rm <crash-id>

Ne pas faire archive-all avant d'avoir regardé pourquoi les daemons ont crashé.


11. Flags OSD

Maintenance d'un hôte

ceph osd set noout

Puis, après maintenance :

ceph osd unset noout

Préférer un ciblage précis

Pour un OSD :

ceph osd add-noout osd.<id>
ceph osd rm-noout osd.<id>

Pour un host / bucket CRUSH :

ceph osd set-group noout <host>
ceph osd unset-group noout <host>

Flags de récupération

Bloquer le backfill

ceph osd set nobackfill
ceph osd unset nobackfill

Bloquer le recovery

ceph osd set norecover
ceph osd unset norecover

Bloquer le rebalancing

ceph osd set norebalance
ceph osd unset norebalance

Bloquer les scrubs

ceph osd set noscrub
ceph osd unset noscrub

Bloquer les deep-scrubs

ceph osd set nodeep-scrub
ceph osd unset nodeep-scrub

Voir les flags actifs

ceph osd dump | grep flags

Attention : nobackfill, norecover, noscrub et nodeep-scrub doivent rester temporaires. Ils peuvent augmenter fortement le risque opérationnel s'ils sont oubliés.


12. Full / Nearfull

Voir les ratios :

ceph osd dump | grep ratio

Modifier :

ceph osd set-nearfull-ratio 0.85
ceph osd set-backfillfull-ratio 0.90
ceph osd set-full-ratio 0.95

Ne modifier ces valeurs que si l'on comprend les conséquences. Un OSD qui atteint full peut provoquer des erreurs d'écriture.


13. Placement Groups (PG)

Vue générale

ceph pg stat

Liste des PG

ceph pg dump pgs_brief

Pools :

ceph pg dump pools

OSD :

ceph pg dump osds

PG d'un pool :

ceph pg ls-by-pool <pool>

PG d'un OSD :

ceph pg ls-by-osd <osd-id>

Mapping d'un PG

ceph pg map <pg-id>

Exemple :

ceph pg map 1.6c

Informations détaillées

ceph pg <pg-id> query

14. Scrub / Deep-scrub

Forcer un scrub :

ceph tell <pg-id> scrub

Forcer un deep-scrub :

ceph tell <pg-id> deep-scrub

Exemple :

ceph tell 12.3a deep-scrub

Le deep-scrub est beaucoup plus coûteux qu'un scrub normal.


15. PG inconsistent / réparation

Identifier :

ceph health detail
ceph pg dump pgs_brief

Examiner :

ceph pg <pg-id> query

Lancer une réparation :

ceph pg repair <pg-id>

Puis surveiller :

ceph -w
ceph health detail

Ne pas lancer repair aveuglément. Examiner d'abord le PG et les objets concernés.


16. Autoscaler PG

État de l'autoscaler :

ceph osd pool autoscale-status

Voir le mode d'un pool :

ceph osd pool get <pool> pg_autoscale_mode

Modes :

on
warn
off

Modifier :

ceph osd pool set <pool> pg_autoscale_mode on

Indiquer la taille cible d'un pool

Par exemple 100 TB :

ceph osd pool set <pool> target_size_bytes 100T

Ou par ratio :

ceph osd pool set <pool> target_size_ratio 1.0

Puis :

ceph osd pool autoscale-status

Sur les clusters modernes, laisser l'autoscaler travailler est généralement préférable à calculer manuellement pg_num.


17. Configuration Ceph

Voir la configuration :

ceph config dump

Lister les options disponibles :

ceph config ls

Voir la valeur effective :

ceph config get <daemon> <option>

Exemple :

ceph config get osd osd_memory_target

Modifier :

ceph config set osd <option> <value>

Exemple :

ceph config set osd osd_scrub_auto_repair true

Exemple :

ceph config set osd osd_scrub_during_recovery true

Voir les valeurs par défaut / effectives :

ceph config show osd.0

Voir les différences de configuration :

ceph config diff

18. OSD Memory Autotuning

Vérifier :

ceph config get osd osd_memory_target_autotune
ceph config get mgr mgr/cephadm/autotune_memory_target_ratio

Activer :

ceph config set osd osd_memory_target_autotune true

Par défaut avec cephadm :

mgr/cephadm/autotune_memory_target_ratio = 0.7

Pour une infrastructure hyperconvergée, une valeur plus faible peut être nécessaire, par exemple :

ceph config set mgr mgr/cephadm/autotune_memory_target_ratio 0.2

À adapter à la RAM réellement disponible et aux autres services présents sur les nœuds.


19. cephadm / Orchestrator

État de l'orchestrateur

ceph orch status

Services

ceph orch ls
ceph orch ls --format yaml

Daemons

ceph orch ps
ceph orch ps --daemon_type osd
ceph orch ps --daemon_type mds

Hosts

ceph orch host ls

Ajouter un label :

ceph orch host label add <host> <label>

Exemple :

ceph orch host label add ceph01 _admin

20. Gestion des daemons avec cephadm

Redémarrer :

ceph orch daemon restart <daemon>

Arrêter :

ceph orch daemon stop <daemon>

Démarrer :

ceph orch daemon start <daemon>

Reconfigurer :

ceph orch daemon reconfig <daemon>

Redeployer :

ceph orch daemon redeploy <daemon>

Exemple :

ceph orch daemon restart mds.fs01.node01

Avec cephadm, préférer ceph orch daemon ... aux manipulations directes de systemd lorsque le daemon est géré par l'orchestrateur.


21. Upgrade cephadm

Vérifier :

ceph orch upgrade status

Lancer une mise à jour par image :

ceph orch upgrade start \
  --image quay.io/ceph/ceph:v20.2.4

Ou par version :

ceph orch upgrade start \
  --ceph-version 20.2.4

Surveiller :

ceph orch upgrade status
ceph -s
ceph versions

Messages cephadm :

ceph -W cephadm

Pause :

ceph orch upgrade pause

Reprise :

ceph orch upgrade resume

22. Remplacement d'un OSD — cephadm

Méthode recommandée

Identifier le device :

ceph orch device ls

Puis utiliser :

ceph orch device replace <host> <device>

Exemple :

ceph orch device replace ceph01 /dev/sdb

Si le device est partagé par plusieurs OSDs, cephadm demande explicitement une confirmation.

Pour supprimer un remplacement préparé :

ceph orch device replace <host> <device> --clear

Suivre l'opération

ceph osd tree
ceph orch ps
ceph -s

23. Suppression d'un OSD — cephadm

Déclencher la suppression :

ceph orch osd rm <osd-id>

Avec nettoyage du disque :

ceph orch osd rm <osd-id> --zap

Suivre l'opération :

ceph orch osd rm status

Arrêter une suppression en cours :

ceph orch osd rm stop <osd-id>

Remplacement en conservant l'ID

ceph orch osd rm <osd-id> --replace

Forcer :

ceph orch osd rm <osd-id> --force

--force doit être exceptionnel : il permet de supprimer un OSD sans attendre l'évacuation normale des PG.


24. Suppression manuelle d'un OSD

À réserver aux situations où l'orchestrateur ne peut pas être utilisé.

Vérifier :

ceph osd safe-to-destroy <id>

Sortir l'OSD :

ceph osd out <id>

Attendre :

while ! ceph osd safe-to-destroy <id>; do
    sleep 10
done

Puis seulement après validation :

ceph osd destroy <id> --yes-i-really-mean-it

Avec cephadm, préférer ceph orch osd rm.


25. Outils ceph-volume

Inventaire :

ceph-volume inventory

Lister les OSD LVM :

ceph-volume lvm list

Voir un device :

ceph-volume inventory /dev/sdb

Zapper un disque

ceph-volume lvm zap /dev/sdb

Avec destruction des structures LVM :

ceph-volume lvm zap /dev/sdb --destroy

DANGER : vérifier impérativement le device avant zap.


26. RADOS benchmark

Écriture

rados bench -p <pool> 10 write \
  --no-cleanup \
  -n client.<pool>

Lecture séquentielle :

rados bench -p <pool> 10 seq \
  -n client.<pool>

Lecture aléatoire :

rados bench -p <pool> 10 rand \
  -n client.<pool>

Nettoyage :

rados cleanup -p <pool> \
  -n client.<pool>

--no-cleanup laisse volontairement les objets de test dans le pool. Toujours exécuter rados cleanup ensuite.


27. RBD performance

Depuis le cluster

I/O par image :

rbd perf image iostat -p <pool>

Vue type iotop :

rbd perf image iotop -p <pool>

Exemple :

rbd perf image iostat --pool volume
rbd perf image iotop --pool volume

28. Benchmark depuis un client RBD

Écriture

fio \
  --filename=/mnt/rbd/fio.test \
  --size=20G \
  --bs=4M \
  --numjobs=1 \
  --rw=write \
  --name=fio \
  --direct=1 \
  --runtime=30 \
  --iodepth=32 \
  --ioengine=libaio

Lecture

fio \
  --filename=/mnt/rbd/fio.test \
  --size=20G \
  --bs=4M \
  --numjobs=1 \
  --rw=read \
  --name=fio \
  --direct=1 \
  --runtime=30 \
  --iodepth=32 \
  --ioengine=libaio

Pour un benchmark représentatif, préciser également le type d'accès (randread, randwrite, readwrite), la taille de bloc et le niveau de parallélisme correspondant à la charge réelle.


29. CephFS

État

ceph fs status
ceph fs dump
ceph fs ls

Daemons MDS

ceph orch ps --daemon_type mds

Statistiques du daemon

ceph daemonperf mds.<fs>.<id>

Exemple :

ceph daemonperf mds.moncfs.ceph2

Opérations en cours

Depuis le nœud MDS :

ceph daemon mds.<name> dump_ops_in_flight

Exemple :

ceph daemon mds.moncfs.ceph2 dump_ops_in_flight

Sessions

ceph daemon mds.<name> session ls

En cas de MDS_SLOW_REQUEST, commencer par ceph health detail, puis examiner dump_ops_in_flight.


30. Entrer dans un conteneur cephadm

Lister les daemons :

ceph orch ps

Entrer dans un conteneur :

cephadm shell

Ou pour cibler un daemon :

cephadm shell --name <daemon>

La syntaxe exacte dépend de ce que l'on cherche à exécuter ; pour les opérations Ceph normales, privilégier la CLI ceph/ceph orch.


31. Tuned

Lister les profils disponibles :

tuned-adm list

Profil actif :

tuned-adm active

Exemples :

tuned-adm profile network-latency
tuned-adm profile network-throughput

Vérifier que le profil est réellement disponible et adapté à la distribution/kernel utilisés.


32. Diagnostic rapide

Cluster en erreur

ceph -s
ceph health detail
ceph versions
ceph crash ls-new

OSD problématique

ceph osd tree
ceph osd df tree
ceph osd metadata <id>
ceph osd perf
ceph osd find <id>

PG problématique

ceph pg stat
ceph pg <pg-id> query
ceph pg map <pg-id>
ceph health detail

Problème de recovery

ceph -s
ceph health detail
ceph osd df tree
ceph pg dump pgs_brief
ceph osd dump | grep flags

Problème de CephFS

ceph fs status
ceph health detail
ceph orch ps --daemon_type mds
ceph daemon mds.<name> dump_ops_in_flight

OSD très rempli

ceph df detail
ceph osd df tree
ceph osd utilization
ceph balancer status

33. Avant une maintenance d'un nœud

1. Vérifier la santé

ceph -s
ceph health detail

2. Identifier les OSD du nœud

ceph osd tree <host>

3. Vérifier les opérations en cours

ceph -s
ceph pg stat

4. Poser éventuellement noout ciblé

ceph osd set-group noout <host>

5. Effectuer la maintenance

6. Vérifier le retour des OSD

ceph osd tree <host>
ceph -s

7. Retirer le flag

ceph osd unset-group noout <host>

8. Vérifier le retour à la normale

ceph health detail
ceph -s

34. Commandes à manier avec précaution

Les commandes suivantes peuvent avoir un impact important :

ceph osd out
ceph osd purge
ceph osd destroy
ceph osd reweight
ceph osd set noout
ceph osd set norecover
ceph osd set nobackfill
ceph osd set noscrub
ceph osd set nodeep-scrub

ceph orch osd rm --force
ceph-volume lvm zap --destroy

Avant toute opération destructive :

ceph -s
ceph health detail
ceph osd tree
ceph osd df tree

Et toujours vérifier explicitement :

- le bon cluster
- le bon host
- le bon OSD
- le bon device
- l'état des PG
- l'espace disponible
- les flags actifs

35. Références

Documentation Ceph :

https://docs.ceph.com/en/latest/

Commandes de contrôle :

https://docs.ceph.com/en/latest/rados/operations/control/

Placement Groups :

https://docs.ceph.com/en/latest/rados/operations/placement-groups/

Troubleshooting OSD :

https://docs.ceph.com/en/latest/rados/troubleshooting/troubleshooting-osd/

Cephadm :

https://docs.ceph.com/en/latest/cephadm/

CephFS troubleshooting :

https://docs.ceph.com/en/tentacle/cephfs/troubleshooting/

Device management :

https://docs.ceph.com/en/latest/rados/operations/devices/

RBD :

https://docs.ceph.com/en/latest/man/8/rbd/