Saltar al contenutoSaltar alla navigazione delle pagine: pagina precedente [chiave d’accesso p]/pagina successiva [chiave d’accesso n]
Si applica a SUSE Enterprise Storage 5

7 Gestione di pool di memorizzazione

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.

7.1 Associazione di pool a un'applicazione

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
Suggerimento
Suggerimento: nomi applicazioni di default

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

7.2 Pool operativi

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.

7.2.1 Elenco di pool

Per elencare il pool del cluster, eseguire:

root # ceph osd lspools
0 rbd, 1 photo_collection, 2 foo_pool,

7.2.2 Creazione di un 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.

pool_name

Indica il nome del pool. Deve essere univoco. Questa opzione è obbligatoria.

pg_num

Indica il numero totale dei gruppi di posizionamento per il pool. Questa opzione è obbligatoria. Il valore di default è 8.

pgp_num

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.

pgp_type

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".

crush_ruleset_name

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.

erasure_code_profile=profile

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).

expected_num_objects

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.

7.2.3 Impostazione delle quote del pool

È 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.

7.2.4 Eliminazione di un pool

Avviso
Avviso: l'eliminazione del pool è irreversibile

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=true
root # ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-it
root # 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.

7.2.5 Ridenominazione di un pool

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.

7.2.6 Visualizzazione delle statistiche del 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

7.2.7 Impostazione dei valori del pool

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:

size

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.

min_size

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.

crash_replay_interval

Indica il numero di secondi da consentire ai client per riprodurre richieste riconosciute, ma non sottoposte a commit.

pg_num

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».

pgp_num

Indica il numero effettivo dei gruppi di posizionamento da utilizzare quando si calcola il posizionamento dei dati.

crush_ruleset

Indica il set di regole da utilizzare per la mappatura del posizionamento oggetti nel cluster.

hashpspool

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.

nodelete

Impedisce la rimozione del pool.

nopgchange

Impedisce di modificare i valori pg_num e pgp_num del pool.

nosizechange

Impedisce di modificare le dimensioni del pool.

write_fadvise_dontneed

Consente di impostare/annullare l'impostazione del flag WRITE_FADVISE_DONTNEED su un determinato pool.

noscrub,nodeep-scrub

Disabilita la pulitura (approfondita) dei dati per un pool specifico per risolvere carichi I/O temporaneamente elevati.

hit_set_type

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.

hit_set_count

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.

hit_set_period

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.

hit_set_fpp

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

use_gmt_hitset

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.

cache_target_dirty_ratio

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.

cache_target_dirty_high_ratio

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.

cache_target_full_ratio

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.

target_max_bytes

Ceph inizierà lo svuotamento o la rimozione degli oggetti quando viene attivata la soglia max_bytes.

target_max_objects

Ceph inizierà lo svuotamento o la rimozione degli oggetti quando viene attivata la soglia max_objects.

hit_set_grade_decay_rate

Grado di decadimento della temperatura tra due hit_set consecutivi. Il valore di default è 20.

hit_set_search_last_n

Numero massimo N di visualizzazioni negli hit_set per il calcolo della temperatura. Il valore di default è 1.

cache_min_flush_age

Tempo (in secondi) prima che l'agente di suddivisione in livelli di cache svuoti un oggetto dal pool di cache nel pool di memorizzazione.

cache_min_evict_age

Tempo (in secondi) prima che l'agente di suddivisione in livelli di cache rimuova un oggetto dal pool di cache.

fast_read

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.

scrub_min_interval

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.

scrub_max_interval

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.

deep_scrub_interval

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.

7.2.8 Ottenimento dei valori del pool

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:

pg_num

Indica il numero di gruppi di posizionamento per il pool.

pgp_num

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.

7.2.9 Impostazione del numero di repliche di oggetti

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.

Avviso
Avviso: si consiglia di utilizzare più di due repliche

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.

Nota
Nota

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.

7.2.10 Ottenimento del numero di repliche di oggetti

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).

7.2.11 Aumento del numero di gruppi di posizionamento

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.

Avviso
Avviso: valore di 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

7.2.12 Aggiunta di un pool

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».

7.3 Migrazione del 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.

7.3.1 Migrazione con il livello di cache

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:

Procedura 7.1: Migrazione del pool replicato nel pool con codice di cancellazione
  1. 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":

    Pool prima della migrazione
    Figura 7.1: Pool prima della migrazione
  2. Impostare il livello di cache e configurare il pool replicato "testpool" come pool di cache:

    root@minion > ceph osd tier add newpool testpool --force-nonempty
    root@minion > ceph osd cache-mode testpool forward

    A partire da adesso, tutti gli oggetti nuovi vengono creati nel nuovo pool:

    Impostazione del livello di cache
    Figura 7.2: Impostazione del livello di cache
  3. 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
    Svuotamento dei dati
    Figura 7.3: Svuotamento dei dati
  4. 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:

    Impostazione dell'overlay
    Figura 7.4: Impostazione dell'overlay

    Adesso è possibile commutare tutti i client agli oggetti di accesso nel nuovo pool.

  5. 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 newpool
    root@minion > ceph osd tier remove newpool testpool
    Completamento della migrazione
    Figura 7.5: Completamento della migrazione

7.4 Snapshot del pool

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.

7.4.1 Creazione dello 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

7.4.2 Rimozione dello snapshot di un pool

Per rimuovere lo snapshot di un pool, eseguire:

root # ceph osd pool rmsnap pool-name snap-name

7.5 Compressione dei dati

A partire da SUSE Enterprise Storage 5, con BlueStore viene fornita la compressione dei dati rapida per salvare spazio su disco.

7.5.1 Abilitazione della compressione

È possibile abilitare la compressione dei dati per un pool con:

root # ceph osd pool set POOL_NAME ompression_algorithm snappy
root # ceph osd pool set POOL_NAME compression_mode aggressive

Sostituire POOL_NAME con il pool per il quale si desidera abilitare la compressione.

7.5.2 Opzioni di compressione del pool

Elenco completo delle opzioni di compressione:

compression_algorithm

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.

compression_mode

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).

compression_required_ratio

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.

compression_max_blob_size

Valore: intero non firmato, dimensioni in byte. Default: 0

Dimensioni minime degli oggetti che vengono compressi.

compression_min_blob_size

Valore: intero non firmato, dimensioni in byte. Default: 0

Dimensioni massime degli oggetti che vengono compressi.

7.5.3 Opzioni di compressione globali

È 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.

bluestore_compression_algorithm

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.

bluestore_compression_mode

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).

bluestore_compression_required_ratio

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.

bluestore_compression_min_blob_size

Valore: intero non firmato, dimensioni in byte. Default: 0

Dimensioni massime degli oggetti che vengono compressi.

bluestore_compression_max_blob_size

Valore: intero non firmato, dimensioni in byte. Default: 0

Dimensioni massime degli oggetti che vengono compressi.

bluestore_compression_min_blob_size_ssd

Valore: intero non firmato, dimensioni in byte. Default: 8 K

Dimensioni minime degli oggetti che vengono compressi e memorizzati su un'unità SSD.

bluestore_compression_max_blob_size_ssd

Valore: intero non firmato, dimensioni in byte. Default: 64 K

Dimensioni massime degli oggetti che vengono compressi e memorizzati su un'unità SSD.

bluestore_compression_min_blob_size_hdd

Valore: intero non firmato, dimensioni in byte. Default: 128 K

Dimensioni minime degli oggetti che vengono compressi e memorizzati su dischi rigidi.

bluestore_compression_max_blob_size_hdd

Valore: intero non firmato, dimensioni in byte. Default: 512 K

Dimensioni massime degli oggetti che vengono compressi e memorizzati su dischi rigidi.

Stampa pagina