Accélérer la resynchronisation après le remplacement d’un noeud Ceph OSD

J’ai eu ce problème plusieurs fois, après avoir remplacé un noeud OSD, que les données ne se resynchronisent pas suffisamment vite sur mon petit cluster de 3 noeuds sur des VMs. 50 Go de données mettaient plusieurs jours à se synchroniser sur le nouveau noeud !

Après plusieurs recherches sur internet, tous les sites conseillent toujours de modifier les mêmes paramètres. Mais je suis tombé sur cet article :

https://blog.nuvotex.de/ceph-osd-restore-performance/

Les 3 premiers paramètres sont ceux référencés partout. Les 3 derniers par contre, je ne les avais pas vus avant. J’ai donc appliqué les valeurs données :

ceph tell 'osd.*' injectargs '--osd-max-backfills 64'
ceph tell 'osd.*' injectargs '--osd-recovery-max-active 16'
ceph tell 'osd.*' injectargs '--osd-recovery-op-priority 3'

ceph tell 'osd.*' config set osd_recovery_sleep_hdd 0
ceph tell 'osd.*' config set osd_recovery_sleep_ssd 0
ceph tell 'osd.*' config set osd_recovery_sleep_hybrid 0 

Et paf! la resynchro a pris moins de 2 h. Much better !

A noter que je ne me suis pas inquiété de l’impact sur les services utilisant le partage, la priorité étant de resynchroniser le plus vite possible. Donc les paramètres sont à adapter selon les besoins.

Après ça, on remet les valeurs par défaut :

ceph config rm osd osd_max_backfills
ceph config rm osd osd_recovery_max_active
ceph config rm osd osd_recovery_op_priority

ceph config rm osd osd_recovery_sleep_hdd
ceph config rm osd osd_recovery_sleep_ssd
ceph config rm osd osd_recovery_sleep_hybrid 

And that’s all !

Laisser un commentaire