Rimozione e reinserimento di un OSD Ceph in seguito al fallimento della RAM di un nodo Proxmox 8

da | Ott 23, 2024

Di recente si è cimita la RAM di uno dei nodi Proxmox 8 con Ceph del mio cluster casalingo.
Me ne sono accorto perché i servizi ceph-osd@ e ceph-mon@ fallivano e non era possibile riavviarli.
Nei logs erano presenti diverse Segmentation Faults e perciò ho deciso di effettuare dei test sulle memorie tramite MemTester che hanno confermato che un chip di una RAM era mal funzionante.
Ho sostituito la RAM difettosa e ho reinstallato in monitor e l’OSD sul nodo, infine il cluster ha ripreso a funzionare regolarmente.

IDENTIFICARE IL PROBLEMA

Tramite i seguenti comandi è possibile verificare i logs nel journal di systemd dei servizi Ceph falliti:

Verificare se sono presenti degli errori che potrebbero indicare la corruzione di rocksdb.

Tramite il seguente comando è possibile visualizzare i logs del kernel:

Verificare se sono presenti degli errori simili ai seguenti:

Se non sono presenti errori di tipo Segmentation Fault è possibile verificare se sono presenti errori relativi all’IO del disco con l’OSD di Ceph fallito.
Se si dovessero riscontrare degli errori di IO, è possibile seguire questa guida per rimuovere l’OSD ed in seguito provare a verificare tramite delle scritture sul disco se si riscontrano ulteriori errori.
Anche l’utility smartctl può essere di aiuto per diagnosisticare dei problemi di disco.

EFFETTUARE DEI TEST ALLA MEMORIA

Se sono stati riscontrati degli errori di tipo Segmentation Fault nei logs, effettuare dei test della memoria per identificare quale RAM è difettosa, in seguito rimoverla o sostituirla.

Prima di riavviare il nodo, si consiglia aggiornale l’immagine initramfs, poiché è possibile essa che sia inconsistente:

Per effettuare i test riavviare il nodo e selezionare Memory Test nel grub prima che venga avviato Proxmox:

Se dovesse avviarsi con degli errori relativi alla firma invalida disabilitare momentaneamente il Secure Boot dal BIOS.

Se dovessero essere mostrati degli errori durante il test non è necessario farlo proseguire, rimuovere le RAM ed eseguire nuovemente il test, finché non si identifica quella difettosa.
Dopo aver sostituito la RAM difettosa, riavviare Proxmox e verificare se i servizi sono ancora falliti, se lo sono procedere alla rimozione dell’OSD e del monitor.

RIMUOVERE OSD

Identificare l’OSD con stato down con il comando:

Dovremmo visualizare il seguente output:

Oppure dalla web UI di Proxmox:

In questo caso l’OSD ha ID 1.

Procedere alla rimozione dell’OSD con i seguenti comandi: (sostituire 1 con l’ID dell’OSD da rimuovere)

Se si vuole rimuovere il nodo dalla Crush map, per esempio per reinstallarlo con un hostname diverso, è possibile eseguire il seguente comando (sostituire pve03 con il nome del nodo):

RIMOZIONE DEL VOLUME CEPH

Tramite lsblk è possibile verificare il nome del volume Ceph:

Procedere alla rimozione del volume (sostituire il path del volume Ceph con quello identificato tramite “lsblk”):

Infine, è possiible rimuovere eventuali signatures del filesystem rimaste (sostituire il path con quello del disco che conteneva il volume Ceph appena rimosso):

RIMOZIONE DEL MONITOR CEPH

È possibile rimuovere il monitor di Ceph dalla Web UI di Proxmox.

Navigare nella sezione Monitor di Ceph, selezionare il monitor da rimuovere e cliccare su Destroy:

Infine confermare cliccando Yes:

RIDURRE IL NUMERO DI REPLICHE

Se non si hanno nodi a sufficienza per mantenere il numero di repliche richiesto, è possibile ridurlo temporaneamente.

Navigare nella sezione Pools di Ceph, selezionare il Pool che si vuole modificare, cliccare su Edit e ridurre il numero di repliche:

Ripetere l’operazione per tutti i Pools.

Dopo poco dovrebbe essere possibile visualizzare il cluster nello stato HEALTH_OK:

AGGIUNGERE IL MONITOR CEPH

Navigare nella sezione Monitor di Ceph e cliccare Create:

Selezionare l’host su cui creare il monitor e cliccare su Create:

Verificare che il monitor appena creato sia attivo:

AGGIUNGERE OSD CEPH

Selezionare il nodo su cui è presente il disco dell’OSD da creare, navigare nella sezione OSD di Ceph e cliccare su Create: OSD:

Selezionare il disco, il tipo di disco e cliccare su Create:

Se dovessero venir mostrati errori che affermano il monitor Ceph già esiste, rimuovere il suo IP dalla direttiva “mon_host” nella sezione [global] del file /etc/ceph/ceph.conf:

Verificare che l’OSD appena creato sia attivo:

AUMENTARE IL NUMERO DI REPLICHE

Dopo aver ripristinato lo stato di salute del cluster Ceph è possibile aumentare il numero di repliche.
Per farlo tornare nella sezione Pools di Ceph, selezionare il Pool che si vuole modificare, cliccare su Edit e aumetare il numero di repliche:

Ripetere l’operazione per tutti i Pools.

Dopo poco dovrebbe essere possibile visualizzare dalla Web UI di Proxmox lo stato di avanzamento del ribilanciamento di Ceph:

CORREGGERE PG INCONSISTENTI

Nel caso in cui si verificassero errori relativi a PG (placement groups) incosistenti è possibili identificarli dalla Web UI di Proxmox:

Identificare l’ID del PG danneggiato tramite il seguente comando:

In questo caso l’ID è “1.c”.

Eseguire il seguente comando per riparare il placement group (sostituire “1.c” con l’ID del PG incosistente):

Dopo non molto il cluster dovrebbe tornare nello stato HEALTH_OK.

Scritto da Marco Valle

Mi chiamo Marco Valle e da sempre sono appassionato di Cybersicurezza e Linux.
Per lavoro implemento soluzioni open source.

Tag:Ceph | OSD | Proxmox
Categorie:Ceph | Proxmox

Related Post

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione