Tre situazioni su quattro si risolvono senza comandi irreversibili.
Peering che non finisce: trovare l’OSD intermittente
Quasi sempre è lo stesso problema del flapping: un OSD che va e viene impedisce ai PG di chiudere il peering. Si identifica da ceph pg <id> query e si guarda perché risponde a intermittenza, di solito sulla rete. Fermarlo del tutto (ceph osd down) è spesso meglio che lasciarlo oscillare: il cluster smette di aspettarlo e ricostruisce.
Undersized o degraded: lasciare lavorare, ma guardare
Se il recovery procede, la cosa giusta è non fare niente e verificare che ci sia spazio dove ricostruire: un cluster vicino al pieno non ha dove mettere le copie mancanti e resta degradato per sempre. Se il recovery è lento, si alzano i limiti di banda con osd_max_backfills, un passo alla volta, guardando che l’I/O dei client regga.
OSD spenti ma recuperabili: riaccenderli
È la soluzione più semplice e la più trascurata. Un OSD che non parte per un filesystem da controllare o un servizio fermo contiene ancora le copie che servono: recuperarlo chiude i PG senza perdere niente. Vale la pena insistere su questo prima di qualsiasi altra mossa.
PG incomplete: qui si decide, non si esegue
Esistono strumenti per sbloccarli, da ceph-objectstore-tool per esportare e reimportare un PG da un OSD che non parte, fino a dichiarare perse le copie mancanti. Funzionano, e alcuni non si annullano. Quale usare dipende da cosa c’è ancora su quei dischi, e questo si stabilisce prima, non dopo. Se siete arrivati a questo punto, scriveteci prima di eseguire qualcosa: l’ordine conta più del comando.