Ceph memorizza i dati nei pool. I pool sono gruppi logici per la memorizzazione di oggetti. Quando inizialmente si installa un cluster senza creare un pool, Ceph utilizza i pool di default per la memorizzazione dei dati. Un pool fornisce:
Resilienza: è possibile impostare il numero di OSD cui sono consentiti errori senza perdere dati. Per i pool replicati, è il numero desiderato di copie/repliche di un oggetto. I nuovi pool vengono creati con un numero di repliche di default impostato a 3. Poiché in una configurazione tipica vengono memorizzati un oggetto e una copia aggiuntiva, è necessario impostare il numero di repliche a 2. Per i pool con codice di cancellazione, è il numero di porzioni di codifica (vale a dire m=2 nel profilo del codice di cancellazione).
Gruppi di posizionamento: sono strutture di dati interne per la memorizzazione dei dati in un pool negli OSD. Il modo in cui i dati vengono memorizzati nei gruppi di posizionamento in Ceph viene definito in una mappa CRUSH. È possibile impostare il numero di gruppi di posizionamento per il pool. In una configurazione tipica si utilizzano circa 100 gruppi di posizionamento per OSD per fornire il bilanciamento ottimale senza utilizzare troppe risorse di calcolo. Quando si configurano più pool, assicurarsi di impostare un numero ragionevole di gruppi di posizionamento per entrambi il pool e il cluster insieme.
Regole CRUSH: quando si memorizzano i dati in un pool, un set di regole a CRUSH mappato al pool consente a CRUSH di identificare una regola per il posizionamento dell'oggetto e delle rispettive repliche (o porzioni per i pool con codice di cancellazione) nel cluster. È possibile creare una regola CRUSH personalizzata per il pool.
Snapshot: quando si creano snapshot con ceph osd pool mksnap
, si crea effettivamente uno snapshot di un determinato pool.
Impostazione della proprietà: è possibile impostare un ID utente come proprietario di un pool.
Per organizzare i dati nei pool, è possibile elencare, creare e rimuovere pool. È inoltre possibile visualizzare le statistiche di utilizzo per ciascun pool.
Prima di utilizzare i pool, è necessario associare loro un'applicazione. I pool che verranno utilizzati con CephFS o quelli creati automaticamente da Object Gateway vengono associati automaticamente. I pool da utilizzare con RBD devono essere inizializzati mediante lo strumento rbd
(vedere Sezione 8.1, «Comandi dei dispositivi di blocco» per ulteriori informazioni).
Negli altri casi, è possibile associare manualmente un nome applicazione in formato libero a un pool:
root #
ceph osd pool application enable pool_name application_name
CephFS utilizza il nome applicazione cephfs
, per il RADOS Block Device (dispositivo di blocco RADOS) viene utilizzato rbd
e per Object Gateway viene utilizzato rgw
.
È possibile associare un pool a più applicazioni, ciascuna delle quali può disporre di metadati propri. È possibile visualizzare i metadati dell'applicazione per un determinato pool mediante l'uso del seguente comando:
root #
ceph osd pool application get pool_name
In questa sezione vengono fornite informazioni pratiche per eseguire task di base con i pool. È possibile scoprire come elencare, creare ed eliminare pool, nonché visualizzare le statistiche dei pool o gestire gli snapshot di un pool.
Per elencare il pool del cluster, eseguire:
root #
ceph osd lspools
0 rbd, 1 photo_collection, 2 foo_pool,
Per creare un pool replicato, eseguire:
root #
ceph osd pool create pool_name pg_num pgp_num replicated crush_ruleset_name \
expected_num_objects
Per creare un pool con codice di cancellazione, eseguire:
root #
ceph osd pool create pool_name pg_num pgp_num erasure erasure_code_profile \
crush_ruleset_name expected_num_objects
Se si supera il limite di gruppi di posizionamento per OSD, è possibile che ceph osd pool create
si concluda con un errore. Il limite viene impostato con l'opzione mon_max_pg_per_osd
.
Indica il nome del pool. Deve essere univoco. Questa opzione è obbligatoria.
Indica il numero totale dei gruppi di posizionamento per il pool. Questa opzione è obbligatoria. Il valore di default è 8.
Indica il numero totale dei gruppi di posizionamento ai fini del posizionamento stesso. Deve essere uguale al numero totale di gruppi di posizionamento, tranne nei casi in cui questi vengono suddivisi. Questa opzione è obbligatoria. Il valore di default è 8.
Indica il tipo di pool che può essere sia replicato, per recuperare dagli OSD persi mantenendo più copie degli oggetti, o di cancellazione per ottenere un tipo di capacità RAID5 generalizzata. Per i pool replicati è richiesto uno spazio di memorizzazione non elaborato maggiore, ma consentono di implementare tutte le operazioni Ceph. Per i pool con codice di cancellazione è richiesto uno spazio di memorizzazione non elaborato minore, ma consentono di implementare solo un sottoinsieme di operazioni disponibili. L'impostazione di default è "replicated".
Indica il nome del set di regole CRUSH per il pool. Se il set di regole specificato non esiste, la creazione del pool replicato si concluderà con un errore con -ENOENT. Il pool replicato creerà tuttavia un nuovo set di regole di cancellazione specificandone il nome. Il valore di default è "erasure-code" per il pool con codice di cancellazione. Per il pool replicato, viene selezionata la variabile di configurazione Ceph osd_pool_default_crush_replicated_ruleset
.
Solo per i pool con codice di cancellazione. Utilizzare il profilo del codice di cancellazione. Deve essere un profilo esistente, come definito da osd erasure-code-profile set
.
Quando si crea un pool, impostare il numero dei gruppi di posizionamento a un valore ragionevole (ad esempio 100). Considerare anche il numero totale di gruppi di posizionamento per OSD. I gruppi di posizionamento sono costosi a livello di computer, pertanto le prestazioni saranno compromesse quando sono presenti molti pool con molti gruppi di posizionamento (ad esempio 50 pool con 100 gruppi di posizionamento ciascuno). Il punto di diminuzione delle restituzioni dipende dalla potenza dell'host OSD.
Per informazioni più dettagliate sul calcolo del numero appropriato di gruppi di posizionamento per il pool, vedere Placement Groups (in lingua inglese).
Indica il numero di oggetti previsto per il pool. Impostando questo valore, la suddivisione della cartella dei gruppi di posizionamento ha luogo al momento della creazione del pool. In tal modo si evita l'impatto di latenza con una suddivisione della cartella di runtime.
È possibile impostare le quote del pool per il numero massimo di byte e/o il numero massimo di oggetti per pool.
root #
ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes
Ad esempio:
root #
ceph osd pool set-quota data max_objects 10000
Per rimuovere una quota, impostarne il valore a 0.
I pool possono contenere dati importanti. L'eliminazione di un pool comporta la cancellazione di tutti i dati in esso contenuti e non è possibile recuperarli in alcun modo.
Poiché l'eliminazione involontaria di un pool è un pericolo effettivo, Ceph implementa due meccanismi che impediscono che ciò accada. Prima di poter eliminare un pool è necessario disabilitare entrambi i meccanismi.
Il primo di questi è il flag NODELETE
. Ciascun pool è dotato di questo flag, il cui valore di default è "false". Per scoprire il valore di questo flag su un pool, eseguire il seguente comando:
root #
ceph osd pool get pool_name nodelete
Se l'output è nodelete: true
, non è possibile eliminare il pool fino a quando non si modifica il flag con il seguente comando:
ceph osd pool set pool_name nodelete false
Il secondo meccanismo è il parametro di configurazione esteso a tutto il cluster mon allow pool delete
, il cui valore di default è "false". Vale a dire che per default non è possibile eliminare un pool. Il messaggio di errore visualizzato è:
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
Per eliminare il pool malgrado questa impostazione di sicurezza, è possibile impostare temporaneamente mon allow pool delete
su "true", eliminare il pool e riportare il parametro su "false":
root #
ceph tell mon.* injectargs --mon-allow-pool-delete=trueroot #
ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-itroot #
ceph tell mon.* injectargs --mon-allow-pool-delete=false
Con il comando injectargs
viene visualizzato il seguente messaggio:
injectargs:mon_allow_pool_delete = 'true' (not observed, change may require restart)
Ciò conferma semplicemente che il comando è stato eseguito correttamente. Non si tratta di un errore.
Se sono stati creati set di regole propri e regole per un pool creato precedentemente, considerare di rimuovere tali regole quando il pool non è più necessario. Se sono stati creati utenti con autorizzazioni esclusivamente per un pool non più esistente, considerare di eliminare anche tali utenti.
Per rinominare un pool, eseguire:
root #
ceph osd pool rename current-pool-name new-pool-name
Se si rinomina un pool e si dispone di funzionalità specifiche per il pool per un utente autenticato, è necessario aggiornare le funzionalità dell'utente con il nuovo nome pool.
Per visualizzare le statistiche di utilizzo di un pool, eseguire:
root #
rados df
pool name category KB objects lones degraded unfound rd rd KB wr wr KB
cold-storage - 228 1 0 0 0 0 0 1 228
data - 1 4 0 0 0 0 0 4 4
hot-storage - 1 2 0 0 0 15 10 5 231
metadata - 0 0 0 0 0 0 0 0 0
pool1 - 0 0 0 0 0 0 0 0 0
rbd - 0 0 0 0 0 0 0 0 0
total used 266268 7
total avail 27966296
total space 28232564
Per impostare un valore a un pool, eseguire:
root #
ceph osd pool set pool-name key value
È possibile impostare i valori per le seguenti chiavi:
Imposta il numero di repliche per gli oggetti nel pool. Per ulteriori informazioni, vedere Sezione 7.2.9, «Impostazione del numero di repliche di oggetti». Solo pool replicati.
Imposta il numero minimo di repliche richiesto per I/O. Per ulteriori informazioni, vedere Sezione 7.2.9, «Impostazione del numero di repliche di oggetti». Solo pool replicati.
Indica il numero di secondi da consentire ai client per riprodurre richieste riconosciute, ma non sottoposte a commit.
Indica il numero di gruppi di posizionamento per il pool. Nel caso in cui si aggiungano OSD al cluster, si deve aumentare il valore dei gruppi di posizionamento. Per informazioni dettagliate, fare riferimento a Sezione 7.2.11, «Aumento del numero di gruppi di posizionamento».
Indica il numero effettivo dei gruppi di posizionamento da utilizzare quando si calcola il posizionamento dei dati.
Indica il set di regole da utilizzare per la mappatura del posizionamento oggetti nel cluster.
Impostare (1) o annullare l'impostazione (0) del flag HASHPSPOOL su un determinato pool. Se si abilita questo flag, l'algoritmo viene modificato per distribuire meglio i gruppi di posizionamento agli OSD. Dopo aver abilitato questo flag su un pool il cui flag HASHPSPOOL è stato impostato a 0, nel cluster viene avviato il recupero informazioni in modo che il posizionamento di tutti i gruppi di posizionamento sia di nuovo corretto. Si tenga presente che ciò può creare un carico I/O piuttosto elevato in un cluster, pertanto è opportuno che venga effettuata una buona pianificazione nei cluster di produzione con carico elevato.
Impedisce la rimozione del pool.
Impedisce di modificare i valori pg_num
e pgp_num
del pool.
Impedisce di modificare le dimensioni del pool.
Consente di impostare/annullare l'impostazione del flag WRITE_FADVISE_DONTNEED
su un determinato pool.
Disabilita la pulitura (approfondita) dei dati per un pool specifico per risolvere carichi I/O temporaneamente elevati.
Consente di controllare i set di accessi per i pool di cache. Per ulteriori informazioni, vedere Bloom Filter (in lingua inglese). Questa opzione può contenere i seguenti valori: bloom
, explicit_hash
, explicit_object
. Il valore di default è bloom
, gli altri valori sono solo ai fini dei test.
Indica il numero di set di accessi per i pool di cache. Più elevato è il numero, maggiore è il consumo di RAM da parte del daemon ceph-osd
. Il valore di default è 0
.
Indica la durata, espressa in secondi, di un periodo di set di accessi per i pool di cache. Più elevato è il numero, maggiore è il consumo di RAM da parte del daemon ceph-osd
.
Probabilità falsa positiva per il tipo di set di accessi bloom. Per ulteriori informazioni, vedere Bloom Filter (in lingua inglese). L'intervallo valido è da 0,0 a 1,0; il valore di default è 0,05
Forza gli OSD a utilizzare le registrazioni dell'orario GMT (ora di Greenwich) quando si crea un set di accessi per la suddivisione in livelli di cache. In tal modo ci si assicura che i nodi in fusi orari diversi restituiscano lo stesso risultato. Il valore di default è 1
. Tale valore non deve essere modificato.
Indica la percentuale del pool di cache contenente oggetti modificati prima che l'agente di suddivisione in livelli di cache li svuoti nel pool di memorizzazione di supporto. Il valore di default è 0,4
.
Indica la percentuale del pool di cache contenente oggetti modificati prima che l'agente di suddivisione in livelli di cache li svuoti nel pool di memorizzazione di supporto con una velocità più elevata. Il valore di default è 0,6
.
Indica la percentuale del pool di cache contenente oggetti non modificati prima che l'agente di suddivisione in livelli di cache li rimuova dal pool di cache. Il valore di default è 0,8
.
Ceph inizierà lo svuotamento o la rimozione degli oggetti quando viene attivata la soglia max_bytes
.
Ceph inizierà lo svuotamento o la rimozione degli oggetti quando viene attivata la soglia max_objects
.
Grado di decadimento della temperatura tra due hit_set
consecutivi. Il valore di default è 20
.
Numero massimo N
di visualizzazioni negli hit_set
per il calcolo della temperatura. Il valore di default è 1
.
Tempo (in secondi) prima che l'agente di suddivisione in livelli di cache svuoti un oggetto dal pool di cache nel pool di memorizzazione.
Tempo (in secondi) prima che l'agente di suddivisione in livelli di cache rimuova un oggetto dal pool di cache.
Se questo flag è abilitato nei pool con codice di cancellazione, la richiesta di lettura emette sottoletture a tutte le partizioni e attende di ricevere un numero sufficiente di partizioni da decodificare per servire il client. Nel caso dei plug-in di cancellazione jerasure e isa, quando vengono restituite le prime risposte K
, la richiesta del client viene eseguita immediatamente utilizzando i dati decodificati da tali risposte. In tal modo si ottengono alcune risorse per migliorare le prestazioni. Attualmente il flag è supportato solo per i pool con codice di cancellazione. Il valore di default è 0
.
Intervallo minimo espresso in secondi per la pulitura dei pool quando il carico del cluster è basso. Il valore di default 0
significa che viene utilizzato il valore osd_scrub_min_interval
ricavato dal file di configurazione Ceph.
Intevallo massimo espresso in secondi per la pulitura dei pool, indipendentemente dal carico del cluster. Il valore di default 0
significa che viene utilizzato il valore osd_scrub_max_interval
ricavato dal file di configurazione Ceph.
Intervallo espresso in secondi per la pulitura approfondita del pool. Il valore di default 0
significa che viene utilizzato il valore osd_deep_scrub
ricavato dal file di configurazione Ceph.
Per ottenere un valore da un pool, eseguire:
root #
ceph osd pool get pool-name key
È possibile ottenere valori per le chiavi elencate nella Sezione 7.2.7, «Impostazione dei valori del pool » oltre che per le chiavi seguenti:
Indica il numero di gruppi di posizionamento per il pool.
Indica il numero effettivo dei gruppi di posizionamento da utilizzare quando si calcola il posizionamento dei dati. L'intervallo valido è uguale o minore di pg_num
.
Per impostare il numero di repliche di oggetti in un pool replicato, eseguire quanto riportato di seguito:
root #
ceph osd pool set poolname size num-replicas
In num-replicas è incluso l'oggetto stesso. Se ad esempio si desiderano l'oggetto e due copie dello stesso per un totale di tre istanze dell'oggetto, specificare 3.
Se si imposta num-replicas a 2, si otterrà solo una copia dei dati. Se si perde un'istanza oggetto, è necessario confidare nel fatto che l'altra copia non sia corrotta, ad esempio dall'ultima pulitura effettuata durante il recupero.
L'impostazione di un pool a una replica significa che nel pool è presente una istanza esatta dell'oggetto Dati. In caso di errore dell'OSD, i dati vengono persi. Un utilizzo possibile di un pool con una replica consiste nella memorizzazione temporanea dei dati per un breve periodo.
L'impostazione di più di tre repliche per un pool ne aumenta solo leggermente l'affidabilità, ma in casi rari può essere adatta. Si tenga presente che più è elevato il numero di repliche, maggiore è lo spazio su disco necessario per memorizzare le copie degli oggetti. Per la massima sicurezza dei dati, si consiglia di utilizzare i pool con codice di cancellazione. Per ulteriori informazioni, consultare Capitolo 9, Pool con codice di cancellazione.
Si consiglia vivamente di utilizzare solo due repliche. In caso di errore di un OSD, è molto probabile che anche il secondo OSD venga a meno a causa dell'elevato workload durante il recupero.
Ad esempio:
root #
ceph osd pool set data size 3
È possibile eseguire questo comando per ciascun pool.
Un oggetto potrebbe accettare I/O danneggiati con meno di pool size
repliche. Per impostare un numero minimo di repliche obbligatorie per I/O, si deve utilizzare l'impostazione min_size
. Ad esempio:
root #
ceph osd pool set data min_size 2
In tal modo ci si assicura che nessun oggetto nel pool di dati riceva I/O con meno di min_size
repliche.
Per ottenere il numero di repliche di oggetti, eseguire quanto riportato di seguito:
root #
ceph osd dump | grep 'replicated size'
Ceph elencherà i pool, con l'attributo replicated size
evidenziato. Per default, Ceph crea due repliche di un oggetto (per un totale di tre copie o una dimensione pari a 3).
Quando si crea un nuovo pool, è necessario specificare il numero dei gruppi di posizionamento per il pool (vedere Sezione 7.2.2, «Creazione di un pool»). Dopo aver aggiunto più OSD nel cluster, di norma è necessario aumentare anche il numero dei gruppi di posizionamento per migliorare le prestazioni e garantire la durata dei dati. Per ciascun gruppo di posizionamento, i nodi OSD e di monitoraggio necessitano sempre di memoria, rete e CPU, soprattutto durante il recupero. Per cui, riducendo al minimo il numero dei gruppi di posizionamento è possibile salvare un numero significativo di risorse.
pg_num
troppo elevato
Quando si modifica il valore pg_num
di un pool, è possibile che il nuovo numero di gruppi di posizionamento superi il limite consentito. Ad esempio
root #
ceph osd pool set rbd pg_num 4096
Error E2BIG: specified pg_num 3500 is too large (creating 4096 new PGs \
on ~64 OSDs exceeds per-OSD max of 32)
Il limite impedisce la suddivisione estrema dei gruppi di posizionamento e deriva dal valore mon_osd_max_split_count
.
Determinare il nuovo numero corretto di gruppi di posizionamento per un cluster ridimensionato è un task complesso. Un approccio consiste nell'aumentare continuamente il numero dei gruppi di posizionamento fino a quando le prestazioni del cluster non sono ottimali. Per determinare il nuovo numero incrementato di gruppi di posizionamento, è necessario ottenere il valore del parametro mon_osd_max_split_count
e aggiungerlo all'attuale numero di gruppi di posizionamento. Per farsi un'idea generale, osservare il seguente script:
cephadm >
max_inc=`ceph daemon mon.a config get mon_osd_max_split_count 2>&1 \ | tr -d '\n ' | sed 's/.*"\([[:digit:]]\+\)".*/\1/'`cephadm >
pg_num=`ceph osd pool get rbd pg_num | cut -f2 -d: | tr -d ' '`cephadm >
echo "current pg_num value: $pg_num, max increment: $max_inc"cephadm >
next_pg_num="$(($pg_num+$max_inc))"cephadm >
echo "allowed increment of pg_num: $next_pg_num"
Una volta individuato il numero di gruppi di posizionamento successivo, aumentarlo con
root #
ceph osd pool set pool_name pg_num next_pg_num
Dopo aver prima installato un cluster, Ceph utilizza i pool di default per memorizzare i dati. Successivamente è possibile creare un nuovo pool con
root #
ceph osd pool create
Per ulteriori informazioni sulla creazione del pool del cluster, vedere Sezione 7.2.2, «Creazione di un pool».
Quando si crea un pool (vedere Sezione 7.2.2, «Creazione di un pool») è necessario specificarne i parametri iniziali, come il tipo di pool o il numero dei gruppi di posizionamento. Se successivamente si decide di modificare uno di questi parametri, dopo aver posizionato i dati nel pool, è necessario eseguire la migrazione dei dati del pool in un altro, i cui parametri sono adatti per la distribuzione.
Esistono vari metodi di migrazione dei pool. Si consiglia di utilizzare il livello di cache perché questo metodo è trasparente, riduce il tempo di inattività del cluster e consente di evitare la duplicazione di tutti i dati del pool.
Il principio è semplice: includere il pool di cui eseguire la migrazione in un livello di cache in ordine inverso. Ulteriori dettagli sui livelli di cache sono disponibili nel Capitolo 10, Suddivisione in livelli di cache. Ad esempio, per eseguire la migrazione di un pool replicato denominato "testpool" in un pool con codice di cancellazione, seguire la procedura indicata di seguito:
Creare un novo pool con codice di cancellazione denominato "newpool":
root@minion >
ceph osd pool create newpool 4096 4096 erasure default
Adesso si hanno due pool: quello originale replicato "testpool" compilato con i dati e il nuovo pool con codice di cancellazione vuoto "newpool":
Impostare il livello di cache e configurare il pool replicato "testpool" come pool di cache:
root@minion >
ceph osd tier add newpool testpool --force-nonemptyroot@minion >
ceph osd cache-mode testpool forward
A partire da adesso, tutti gli oggetti nuovi vengono creati nel nuovo pool:
Forzare il pool di cache in modo che tutti gli oggetti vengano spostati nel nuovo pool:
root@minion >
rados -p testpool cache-flush-evict-all
Commutare tutti i client al nuovo pool. Fino a quando lo svuotamento di tutti i dati nel pool con codice di cancellazione non è completato, è necessario specificare un overlay in modo che la ricerca degli oggetti venga eseguita nel pool precedente:
root@minion >
ceph osd tier set-overlay newpool testpool
Con l'overlay, tutte le operazioni vengono inoltrate al "testpool" replicato precedente:
Adesso è possibile commutare tutti i client agli oggetti di accesso nel nuovo pool.
Dopo la migrazione di tutti i dati nel "newpool" con codice di cancellazione, rimuovere l'overlay e il pool di cache "testpool" precedente:
root@minion >
ceph osd tier remove-overlay newpoolroot@minion >
ceph osd tier remove newpool testpool
Gli snapshot del pool riprendono lo stato dell'interno pool Ceph. Con gli snapshot del pool è possibile mantenere la cronologia dello stato del pool. A seconda delle dimensioni del pool, è possibile che per la creazione degli snapshot del pool sia richiesto molto spazio di memorizzazione. Verificare sempre che lo spazio su disco nello spazio di memorizzazione correlato sia sufficiente prima di creare lo snapshot di un pool.
Per effettuare lo snapshot di un pool, eseguire:
root #
ceph osd pool mksnap pool-name snap-name
Ad esempio:
root #
ceph osd pool mksnap pool1 snapshot1
created pool pool1 snap snapshot1
Per rimuovere lo snapshot di un pool, eseguire:
root #
ceph osd pool rmsnap pool-name snap-name
A partire da SUSE Enterprise Storage 5, con BlueStore viene fornita la compressione dei dati rapida per salvare spazio su disco.
È possibile abilitare la compressione dei dati per un pool con:
root #
ceph
osd pool set POOL_NAME ompression_algorithm snappyroot #
ceph
osd pool set POOL_NAME compression_mode aggressive
Sostituire POOL_NAME con il pool per il quale si desidera abilitare la compressione.
Elenco completo delle opzioni di compressione:
Valori: none
, zstd
, snappy
. Default: snappy
.
L'algoritmo di compressione da utilizzare dipenda dal caso di utilizzo specifico. Di seguito sono riportate diverse raccomandazioni:
Non utilizzare zlib
: gli algoritmi rimanenti sono migliori.
Se è necessario un buon rapporto di compressione, utilizzare zstd
. zstd
non è consigliato per BlueStore a causa dell'elevato overhead della CPU durante la compressione di piccole quantità di dati.
Se è necessario un consumo minore CPU, utilizzare lz4
o snappy
.
Eseguire un benchmark di questi algoritmi su un campione dei dati effettivi continuando a osservare la CPU e il consumo di memoria del cluster.
Valore: {none
, aggressive
, passive
, force
}. Default: none
.
none
: la compressione non viene eseguita mai
passive
: la compressione viene eseguita se suggerita come COMPRESSIBLE
aggressive
: la compressione viene eseguita a meno che non sia suggerita come INCOMPRESSIBLE
force
: la compressione viene eseguita sempre
Per informazioni su come impostare il flag COMPRESSIBLE
o INCOMPRESSIBLE
, vedere http://docs.ceph.com/docs/doc-12.2.0-major-changes/rados/api/librados/#rados_set_alloc_hint (in lingua inglese).
Valore: doppio, rapporto = SIZE_COMPRESSED / SIZE_ORIGINAL. Default: 0,875
Gli oggetti al di sopra di tale rapporto non verranno memorizzati compressi a causa del basso guadagno netto.
Valore: intero non firmato, dimensioni in byte. Default: 0
Dimensioni minime degli oggetti che vengono compressi.
Valore: intero non firmato, dimensioni in byte. Default: 0
Dimensioni massime degli oggetti che vengono compressi.
È possibile impostare le seguenti opzioni di configurazione nella configurazione di Ceph e applicarle a tutti gli OSD, non solo a un singolo pool. La configurazione specifica per il pool indicata nella Sezione 7.5.2, «Opzioni di compressione del pool» ha la precedenza.
Valori: none
, zstd
, snappy
, zlib
. Default: snappy
.
L'algoritmo di compressione da utilizzare dipenda dal caso di utilizzo specifico. Di seguito sono riportate diverse raccomandazioni:
Non utilizzare zlib
, gli algoritmi rimanenti sono migliori.
Se è necessario un buon rapporto di compressione, utilizzare zstd
. zstd
non è consigliato per BlueStore a causa dell'elevato overhead della CPU durante la compressione di piccole quantità di dati.
Se è necessario un consumo minore CPU, utilizzare lz4
o snappy
.
Eseguire un benchmark di questi algoritmi su un campione dei dati effettivi continuando a osservare la CPU e il consumo di memoria del cluster.
Valore: {none
, aggressive
, passive
, force
}. Default: none
.
none
: la compressione non viene eseguita mai
passive
: la compressione viene eseguita se suggerita come COMPRESSIBLE
.
aggressive
: la compressione viene eseguita a meno che non sia suggerita come INCOMPRESSIBLE
force
: la compressione viene eseguita sempre
Per informazioni su come impostare il flag COMPRESSIBLE
o INCOMPRESSIBLE
, vedere http://docs.ceph.com/docs/doc-12.2.0-major-changes/rados/api/librados/#rados_set_alloc_hint (in lingua inglese).
Valore: doppio, rapporto = SIZE_COMPRESSED / SIZE_ORIGINAL. Default: 0,875
Gli oggetti al di sopra di tale rapporto non verranno memorizzati compressi a causa del basso guadagno netto.
Valore: intero non firmato, dimensioni in byte. Default: 0
Dimensioni massime degli oggetti che vengono compressi.
Valore: intero non firmato, dimensioni in byte. Default: 0
Dimensioni massime degli oggetti che vengono compressi.
Valore: intero non firmato, dimensioni in byte. Default: 8 K
Dimensioni minime degli oggetti che vengono compressi e memorizzati su un'unità SSD.
Valore: intero non firmato, dimensioni in byte. Default: 64 K
Dimensioni massime degli oggetti che vengono compressi e memorizzati su un'unità SSD.
Valore: intero non firmato, dimensioni in byte. Default: 128 K
Dimensioni minime degli oggetti che vengono compressi e memorizzati su dischi rigidi.
Valore: intero non firmato, dimensioni in byte. Default: 512 K
Dimensioni massime degli oggetti che vengono compressi e memorizzati su dischi rigidi.