Gli OSD di Ceph crashano per mancanza di memoria con oomkill
Jump to navigation
Jump to search
Con il formato Bluestore, gli OSD sono particolarmente voraci di memoria.
Se gli OSD vanno in crash per mancanza di memoria, spesso è necessario riavviare la macchina.
Script
ceph config set osd bluestore_cache_autotune false
for VAR in bluestore_cache_size bluestore_cache_size_hdd bluestore_cache_size_ssd ; do for OSD in $(seq 0 23); do echo "osd.${OSD} $VAR 4GB"; ceph config set osd.${OSD} $VAR 4GB; done; done
ceph config dump
bluestore_cache_autotune
Una soluzione possibile è disabilitare l'autotune della cache.
- Disabilitare l'autotune della cache runtime, su ogni monitor:
ceph daemon /var/run/ceph/ceph-mon.monitorhostname.asok config set bluestore_cache_autotune false
{
"success": "bluestore_cache_autotune = 'false' (not observed, change may require restart) "
}
- Questo settaggio è runtime ed effimero al reboot.
- Verificarlo:
ceph daemon /var/run/ceph/ceph-mon.metstor05.asok config get bluestore_cache_autotune
{
"bluestore_cache_autotune": "false"
}
- Riavviare il monitor:
systemctl restart ceph-mon@metstor05.service
- Verificarlo:
ceph daemon /var/run/ceph/ceph-mon.metstor05.asok config get bluestore_cache_autotune
{
"bluestore_cache_autotune": "false"
}
- Tenere la macchina in monitoraggio per qualche giorno. Se il settaggio non risolve, al reboot, la configurazione ritornerà al default.
- Se il settaggio è risolutivo, impostarlo nel config db (visibile da proxmox)
ceph config set mon bluestore_cache_autotune false
- Riavviare tutti i monitor uno alla volta e verificare che abbiano il settaggio applicato
bluestore_cache_size
Potrebbe essere necessario limitare l'uso di memoria di ogni OSDO
export OSD=11; \
ceph daemon /var/run/ceph/ceph-osd.${OSD}.asok config set bluestore_cache_size_hdd 536870912; \
ceph daemon /var/run/ceph/ceph-osd.${OSD}.asok config set bluestore_cache_size_ssd 1610612736; \
systemctl reload ceph-osd@${OSD}.service; \
ceph daemon /var/run/ceph/ceph-osd.${OSD}.asok config show | grep bluestore_cache_size
- Se è ok, fissare la config come per il punto precedente e riavviare le macchine.
for OSD in \
12 13 14 15 16 17 ;\
do \
ceph config set osd.${OSD} bluestore_cache_size 536870912;\
ceph config set osd.${OSD} bluestore_cache_size_hdd 536870912;\
ceph config set osd.${OSD} bluestore_cache_size_ssd 1610612736;\
done
- Riavviare tutto:
systemctl restart ceph.target
- Verificare:
for OSD in 12 13 14 15 16 17 ; do ceph daemon /var/run/ceph/ceph-osd.${OSD}.asok config get bluestore_cache_size; ceph daemon /var/run/ceph/ceph-osd.${OSD}.asok config get bluestore_cache_size_hdd; ceph daemon /var/run/ceph/ceph-osd.${OSD}.asok config get bluestore_cache_size_ssd; done
Reset delle modifiche
- Per riportare tutto alla configurazione di default:
ceph config set mon bluestore_cache_autotune true
for VAR in \
bluestore_cache_size \
bluestore_cache_size_hdd \
bluestore_cache_size_ssd ; do \
for OSD in $(seq 0 21); do \
ceph config rm osd.${OSD} $VAR; \
done; \
done