Per eseguire lo strumento ceph in modalità interattiva, digitare ceph nella riga di co-mando senza argomenti. La modalità interattiva è più pratica se si devono immettere più comandi ceph in una riga. Ad esempio:
cephadm > ceph ceph> health ceph> status
ceph> quorum_status ceph> mon_status
4.1 Verifica dello stato di integrità del cluster
Dopo l'avvio del cluster e prima della lettura e/o scrittura dei dati, verificare lo stato di integrità del cluster:
root # ceph health
HEALTH_WARN 10 pgs degraded; 100 pgs stuck unclean; 1 mons down, quorum 0,2 \ node-1,node-2,node-3
Il cluster Ceph restituisce uno dei seguenti codici di stato di integrità:
OSD_DOWN
Uno o più OSD sono contrassegnati. È possibile che il deamon OSD sia stato interrotto o gli OSD peer potrebbero non essere in grado di raggiungere l'OSD nella rete. Tra le cause comuni sono inclusi un'interruzione o crash del daemon, un host inattivo o un'interruzione della rete.
Verificare che l'host sia integro, il daemon avviato e la rete funzionante. Se ha avuto luo-go un crash del daemon, è possibile che il file di log del daemon ( /var/log/ceph/ce-ph-osd.*) contenga informazioni di debug.
24 Verifica dello stato di integrità del cluster SES 5
OSD_crush type_DOWN, ad esempio OSD_HOST_DOWN
Tutti gli OSD in un determinato sottoalbero CRUSH vengono contrassegnati, ad esempio tutti gli OSD in un host.
OSD_ORPHAN
Un OSD è un riferimento nella gerarchia della mappa CRUSH, ma non esiste. È possibile rimuovere l'OSD dalla gerarchia CRUSH con:
root # ceph osd crush rm osd.ID
OSD_OUT_OF_ORDER_FULL
Le soglie di utilizzo per backfillfull, nearfull, full e/o failsafe_full non sono in ordine crescente.
In particolare, ci si aspetta backfillfull < nearfull, nearfull < full e full < failsafe_full. È possibile regolare le soglie con:
root # ceph osd set-backfillfull-ratio ratio root # ceph osd set-nearfull-ratio ratio root # ceph osd set-full-ratio ratio
OSD_FULL
Uno o più OSD hanno superato la soglia full e impediscono al cluster di fornire servizi di scrittura. È possibile verificare l'utilizzo da parte del pool con:
root # ceph df
È possibile visualizzare il rapporto full attualmente definito con:
root # ceph osd dump | grep full_ratio
Una soluzione immediata per ripristinare la disponibilità di scrittura consiste nell'aumen-tare leggermente la soglia completa (full):
root # ceph osd set-full-ratio ratio
Aggiungere un nuovo spazio di memorizzazione al cluster installando più OSD, o eliminare i dati esistenti per liberare spazio.
OSD_BACKFILLFULL
Uno o più OSD hanno superato la soglia backfillfull, impedendo il ribilanciamento dei dati nel dispositivo. Questo è un avviso preliminare che informa l'utente sull'impossibilità di completare il ribilanciamento e che il cluster è quasi pieno. È possibile verificare l'utilizzo da parte del pool con:
root # ceph df
25 Verifica dello stato di integrità del cluster SES 5
OSD_NEARFULL
Uno o più OSD hanno superato la soglia nearfull. Questo è un avviso preliminare che infor-ma l'utente che il cluster è quasi pieno. È possibile verificare l'utilizzo da parte del pool con:
root # ceph df
OSDMAP_FLAGS
Sono stati impostati uno o più ag del cluster interessato. Ad eccezione di full, è possibile impostare o eliminare i ag con:
root # ceph osd set flag root # ceph osd unset flag
Tali ag includono:
full
Il cluster è contrassegnato come full (pieno) e non può fornire servizi di scrittura.
pauserd, pausewr
Letture o scritture in pausa noup
Viene impedito l'avvio degli OSD.
nodown
I rapporti sugli errori degli OSD vengono ignorati, ad esempio quando i monitoraggi non contrassegnano gli OSD come down (inattivi).
noin
Gli OSD contrassegnati precedentemente come out non verranno contrassegnati di nuovo come in all'avvio.
noout
Gli ODS down (inattivi) non verranno contrassegnati automaticamente come out dopo l'intervallo configurato.
nobackfill, norecover, norebalance
Il recupero o il ribilanciamento dei dati è sospeso.
noscrub, nodeep_scrub
La pulitura (vedere Sezione 6.5, «Pulitura») è disabilitata.
notieragent
L'attività di suddivisione in livelli di cache è sospesa.
26 Verifica dello stato di integrità del cluster SES 5
OSD_FLAGS
Uno o più ODS presentano un ag per OSD del set di interesse. Tali ag includono:
noup
All'OSD non è consentito l'avvio.
nodown
I rapporti di errore per l'OSD specificato verranno ignorati.
noin
Se precedentemente questo OSD è stato contrassegnato automaticamente come out in seguito a un errore, non verrà contrassegnato come in al suo avvio.
noout
Se l'OSD è inattivo, non verrà contrassegnato automaticamente come out dopo l'in-tervallo configurato.
È possibile impostare ed eliminare i ag per OSD con:
root # ceph osd add-flag osd-ID root # ceph osd rm-flag osd-ID
OLD_CRUSH_TUNABLES
Nella mappa CRUSH vengono utilizzate impostazioni molto obsolete e deve essere aggior-nata. Gli elementi ottimizzabili più obsoleti (vale a dire la versione client più vecchia in grado di connettersi al cluster) che è possibile utilizzare senza attivare questo avviso di stato di integrità vengono determinati dall'opzione di configurazione mon_crush_min_re-quired_version.
OLD_CRUSH_STRAW_CALC_VERSION
Nella mappa CRUSH viene utilizzato un metodo precedente, non ottimale per calcolare i valori del peso intermedio per i compartimenti straw. La mappa CRUSH deve essere aggiornata per utilizzare il metodo più recente (straw_calc_version=1).
CACHE_POOL_NO_HIT_SET
Uno o più pool di cache non sono configurati con un set di accessi per controllare l'utilizzo, impedendo all'agente di suddivisione in livelli di identificare gli oggetti a caldo di essere svuotati o rimossi dalla cache. È possibile configurare i set di accessi nel pool di cache con:
root # ceph osd pool set poolname hit_set_type type
root # ceph osd pool set poolname hit_set_period period-in-seconds root # ceph osd pool set poolname hit_set_count number-of-hitsets
27 Verifica dello stato di integrità del cluster SES 5
root # ceph osd pool set poolname hit_set_fpp target-false-positive-rate
OSD_NO_SORTBITWISE
Nessun OSD di versione precedente a Luminous v12 in esecuzione, ma il ag sortbitwise non è stato impostato. È necessario impostare il ag sortbitwise prima di poter avviare gli OSD Luminous v12 o versione più recente:
root # ceph osd set sortbitwise
POOL_FULL
Uno o più pool hanno raggiunto la rispettiva quota e non consentono più le scritture. È possibile impostare le quote dei pool e l'utilizzo con:
root # ceph df detail
È possibile aumentare la quota del pool con
root # ceph osd pool set-quota poolname max_objects num-objects root # ceph osd pool set-quota poolname max_bytes num-bytes
o eliminare alcuni dati esistenti per ridurre l'utilizzo.
PG_AVAILABILITY
La disponibilità dei dati è ridotta, vale a dire che il cluster non è in grado di fornire servizi di richieste di potenziali letture o scritture per alcuni dati nel cluster. Nello specifico, è impossibile fornire servizi a uno o più gruppi di posizionamento il cui stato non consente richieste IO. Gli stati dei gruppi di posizionamento problematici includono peering, stale (inattivo), incomplete (incompleto) e la mancanza di active (attivo) (se tali condizioni non vengono annullate rapidamente). Informazioni dettagliate sui gruppi di posizionamento interessati sono recuperabili da:
root # ceph health detail
Nella maggior parte dei casi, la causa radice risiede nell'attuale stato di inattività di uno o più OSD. È possibile interrogare lo stato di specifici gruppi di posizionamento problematici con:
root # ceph tell pgid query
PG_DEGRADED
La ridondanza dei dati è ridotta per alcuni dati, vale a dire che il cluster non dispone del numero desiderato di repliche per tutti i dati (per pool replicati) o di frammenti di codice di cancellazione (per pool con codice di cancellazione). Nello specifico, per uno
28 Verifica dello stato di integrità del cluster SES 5
o più gruppi di posizionamento è impostato il ag degraded o undersized (le istanze di tale gruppo di posizionamento nel cluster non sono sufficienti) oppure non è impostato il
ag clean per un periodo di tempo. Informazioni dettagliate sui gruppi di posizionamento interessati sono recuperabili da:
root # ceph health detail
Nella maggior parte dei casi, la causa radice risiede nell'attuale stato di inattività di uno o più OSD. È possibile interrogare lo stato di specifici gruppi di posizionamento problematici con:
root # ceph tell pgid query
PG_DEGRADED_FULL
È possibile che la ridondanza dei dati può sia ridotta o a rischio per alcuni dati a causa della mancanza di spazio libero nel cluster. Nello specifico, per uno o più gruppi di posi-zionamento è impostato il ag backfill_toofull o recovery_toofull, vale a dire che il cluster non è in grado di eseguire la migrazione o recuperare i dati perché uno o più OSD superano la soglia backfillfull.
PG_DAMAGED
In seguito alla pulitura dei dati (vedere Sezione 6.5, «Pulitura»), nel cluster sono stati rilevati alcuni problemi di incoerenza dei dati. Nello specifico, in uno o più gruppi di posiziona-mento è impostato il ag inconsistent o snaptrim_error, a indicare che a seguito di un'ope-razione di pulitura precedente è stato individuato un problema, oppure è impostato il ag repair, a indicare che attualmente è in corso una riparazione per tale incoerenza.
OSD_SCRUB_ERRORS
Dalle puliture dell'OSD sono state rilevate incoerenze.
CACHE_POOL_NEAR_FULL
Un pool di livelli di cache è quasi pieno. "Pieno" in questo contesto è determinato dalla proprietà target_max_bytes e target_max_objects nel pool di cache. Quando il pool raggiunge la soglia di destinazione, è possibile che le richieste di scrittura nel pool si blocchino quando i dati vengono svuotati e rimossi dalla cache, uno stato che di norma comporta latenze molto elevate e prestazioni scarse. È possibile regolare le dimensioni di destinazione del pool di cache con:
root # ceph osd pool set cache-pool-name target_max_bytes bytes root # ceph osd pool set cache-pool-name target_max_objects objects
29 Verifica dello stato di integrità del cluster SES 5
È inoltre possibile che le attività di svuotamento e rimozione siano bloccate a causa della disponibilità ridotta, delle prestazioni del livello base o a causa del carico complessivo del cluster.
TOO_FEW_PGS
Il numero di gruppi di posizionamento in uso è sotto la soglia configurabile dei gruppi di posizionamento per OSD mon_pg_warn_min_per_osd. Ciò può comportare una distribu-zione e bilanciamento dei dati non ottimali negli OSD del cluster, riducendo le prestazioni complessive.
TOO_MANY_PGS
Il numero di gruppi di posizionamento in uso supera la soglia configurabile di gruppi di posizionamento per OSD mon_pg_warn_max_per_osd. Ciò comporta un utilizzo della memoria maggiore per i daemon OSD, un peering più lento dopo le modifiche allo stato del cluster (ad esempio, riavvii, aggiunte o rimozioni di OSD) e un carico più elevato nei Ceph Manager e Ceph Monitor.
Mentre è impossibile ridurre il valore pg_num per i pool esistenti, il valore pgp_num può essere ridotto. Ciò colloca effettivamente alcuni gruppi di posizionamento sugli stessi set di OSD, mitigando alcuni impatti negativi descritti sopra. È possibile regolare il valore
pgp_num con:
root # ceph osd pool set pool pgp_num value
SMALLER_PGP_NUM
Il valore pgp_num di uno o più pool è inferiore a pg_num. Di norma ciò indica che il nume-ro di gruppi di posizionamento è stato incrementato senza incrementare anche comporta-mento del posizionacomporta-mento. Di norma questo problema viene risolto impostando pgp_num in modo che corrisponda a pg_num, attivando la migrazione dei dati, con:
ceph osd pool set pool pgp_num pg_num_value
MANY_OBJECTS_PER_PG
Uno o più pool presentano un numero di oggetti per gruppo di posizionamento che è signi-ficativamente più elevato della media complessiva del cluster. La soglia specifica è control-lata dal valore di configurazione mon_pg_warn_max_object_skew. Di norma ciò indica che i pool che contengono la maggior parte dei dati nel cluster hanno un numero di gruppi di posizionamento insufficiente e/o che altri pool che non contengono una tale quantità di dati hanno troppi gruppi di posizionamento. È possibile aumentare la soglia per annullare l'avviso di stato di integrità regolando l'opzione di configurazione mon_pg_warn_max_ob-ject_skew nei monitoraggi.
30 Verifica dello stato di integrità del cluster SES 5
POOL_APP_NOT_ENABLED
Un pool contiene uno o più oggetti, ma non è stato contrassegnato per l'utilizzo da parte di un'applicazione particolare. Risolvere questo avviso etichettando il pool per l'utilizzo da parte di un'applicazione. Ad esempio, se il pool viene utilizzato da RBD:
root # rbd pool init pool_name
Se il pool viene utilizzato da un'applicazione personalizzata "foo", è inoltre possibile eti-chettarla con il comando di livello basso:
root # ceph osd pool application enable foo
POOL_FULL
Uno o più pool hanno raggiunto (o sono prossimi a raggiungere) la rispettiva quota. La soglia per attivare questa condizione di errore è controllata dall'opzione di configurazione mon_pool_quota_crit_threshold. È possibile regolare verso l'alto o verso il basso (o rimuovere) le quote dei pool con:
root # ceph osd pool set-quota pool max_bytes bytes root # ceph osd pool set-quota pool max_objects objects
Impostando il valore di quota a 0, questa verrà disabilitata.
POOL_NEAR_FULL
Uno o più pool stanno per raggiungere la rispettiva quota. La soglia per attivare questa con-dizione di avviso è controllata dall'opzione di configurazione mon_pool_quota_warn_th-reshold. È possibile regolare verso l'alto o verso il basso (o rimuovere) le quote dei pool con:
root # ceph osd osd pool set-quota pool max_bytes bytes root # ceph osd osd pool set-quota pool max_objects objects
Impostando il valore di quota a 0, questa verrà disabilitata.
OBJECT_MISPLACED
Uno o più oggetti nel cluster non è memorizzato nel nodo indicato dal cluster. Ciò indica che la migrazione dei dati non è stata ancora completata a causa di una modifica recente del cluster. La posizione errata dei dati non rappresenta una condizione pericolosa. La coerenza dei dati non è mai a rischio e le copie precedenti degli oggetti non vengono mai rimosse finché è presente il numero di copie nuove desiderato (nelle ubicazioni desiderate).
31 Verifica dello stato di integrità del cluster SES 5
OBJECT_UNFOUND
Impossibile individuare uno o più oggetti nel cluster. Nello specifico, gli OSD sanno che deve esistere una copia nuova o aggiornata di un oggetto, ma negli OSD attualmente online non è stata trovata una copia di tale versione dell'oggetto. Le richieste di lettura o scrittura negli oggetti "non trovati" verranno bloccate. Idealmente, è possibile riportare online un OSD inattivo con la copia più recente dell'oggetto non trovato. È possibile identificare gli OSD candidati in stato di peering per i gruppi di posizionamento responsabili dell'oggetto non trovato:
root # ceph tell pgid query
REQUEST_SLOW
Una o più richieste OSD impiegano molto tempo per l'elaborazione. Ciò può essere un'in-dicazione di carico estremo, dispositivo di memorizzazione lento o bug del software. È possibile interrogare la coda delle richieste sugli OSD in questione mediante l'esecuzione del seguente comando dall'host OSD:
root # ceph daemon osd.id ops
È possibile visualizzare un riepilogo delle richieste recenti più lente:
root # ceph daemon osd.id dump_historic_ops
È possibile individuare l'ubicazione di un OSD con:
root # ceph osd find osd.id
REQUEST_STUCK
Una o più richieste OSD sono state bloccate per un periodo estremamente lungo. Ciò indica che lo stato del cluster non è integro da un periodo di tempo prolungato (ad esempio il numero di OSD in esecuzione non è sufficiente) o sono presenti alcuni problemi interni con l'OSD.
PG_NOT_SCRUBBED
Di recente non è stata eseguita la pulitura di uno o più gruppi di posizionamento (vede-re Sezione 6.5, «Pulitura»). Di norma la pulitura dei gruppi di posizionamento viene ese-guita ogni mon_scrub_interval secondi e questo avviso si attiva quando sono trascorsi mon_warn_not_scrubbed secondi senza che abbia avuto luogo una pulitura. La pulitura dei gruppi di posizionamento non verrà eseguita se questi non sono contrassegnati come
32 Verifica dello stato di integrità del cluster SES 5
puliti, il che può verificarsi se sono posizionati male o sono danneggiati (vedere PG_AVAI-LABILITY e PG_DEGRADED di cui sopra). È possibile avviare manualmente la pulitura di un gruppo di posizionamento pulito con:
root # ceph pg scrub pgid
PG_NOT_DEEP_SCRUBBED
Di recente non è stata eseguita la pulitura approfondita di uno o più gruppi di posizio-namento (vedere Sezione 6.5, «Pulitura»). Di norma la pulitura dei gruppi di posizionamen-to viene eseguita ogni osd_deep_mon_scrub_interval secondi e questo avviso si attiva quando sono trascorsi mon_warn_not_deep_scrubbed secondi senza che abbia avuto luo-go una pulitura. La pulitura (approfondita) dei gruppi di posizionamento non verrà ese-guita se questi non sono contrassegnati come puliti, il che può verificarsi se sono posizio-nati male o sono danneggiati (vedere PG_AVAILABILITY e PG_DEGRADED di cui sopra). È possibile avviare manualmente la pulitura di un gruppo di posizionamento pulito con:
root # ceph pg deep-scrub pgid
Suggerimento
Se sono state specificate ubicazioni non di default per la configurazione o il portachiavi, è possibile specificarne le ubicazioni:
root # ceph -c /path/to/conf -k /path/to/keyring health
4.2 Osservazione di un cluster
È possibile individuare lo stato immediato del cluster mediante ceph -s. Ad esempio, un clu-ster Ceph di piccole dimensioni costituito da un monitoraggio e due OSD può stampare quanto riportato di seguito quando è in esecuzione un workload:
cluster:
id: 6586341d-4565-3755-a4fd-b50f51bee248 health: HEALTH_OK
services:
mon: 3 daemons, quorum blueshark1,blueshark2,blueshark3 mgr: blueshark3(active), standbys: blueshark2, blueshark1
33 Osservazione di un cluster SES 5
osd: 15 osds: 15 up, 15 in data:
pools: 8 pools, 340 pgs objects: 537 objects, 1985 MB
usage: 23881 MB used, 5571 GB / 5595 GB avail pgs: 340 active+clean
io:
client: 100 MB/s rd, 26256 op/s rd, 0 op/s wr
L'output fornisce le seguenti informazioni:
ID cluster
Stato di integrità del cluster
Epoca della mappa di monitoraggio e stato del quorum del monitoraggio Epoca della mappa OSD e stato degli OSD
Versione della mappa del gruppo di posizionamento Numero di gruppi di posizionamento e pool
Quantità di dati nozionale memorizzati e numero di oggetti memorizzati Quantità totale di dati memorizzati.