cephx
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. Gli elementi di rilievo più importanti riportati di seguito sono relativi ai pool Ceph:
Resilienza: è possibile impostare il numero di OSD, compartimenti o uscite 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. 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 un pool al momento della sua creazione. 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 dati in un pool, gli oggetti e le relative repliche (o porzioni, nel caso dei pool con codice di cancellazione) vengono posizionati in base al set di regole CRUSH mappate al pool. È 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.
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.
Negli altri casi, è possibile associare manualmente un nome applicazione in formato libero a un pool:
cephadm@adm >
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:
cephadm@adm >
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.
È possibile creare un pool "replicated" (replicato), per il recupero degli OSD persi mantenendo più copie degli oggetti, o "erasure" (di cancellazione), per ottenere un tipo di capacità RAID5/6 generalizzata. Per i pool replicati è necessario maggior spazio di storage nominale rispetto a quello necessario per i pool con codice di cancellazione. L'impostazione di default è "replicated".
Per creare un pool replicato, eseguire:
cephadm@adm >
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:
cephadm@adm >
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 nome del set di regole CRUSH per il pool. Se il set di regole specificato non esiste, la creazione dei pool replicati si concluderà con un errore con -ENOENT. Per i pool replicati, si tratta del set di regole specificato dalla variabile di configurazione
osd pool default crush replicated ruleset. Questo set di regole deve esistere. Nel caso dei pool con codice di cancellazione, si tratta del set di regole "erasure-code", se è utilizzato il profilo con codice di cancellazione di default, oppure di POOL_NAME. Questo set di regole verrà creato in modo implicito se non esiste già.
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
.
Durante la creazione di un pool, impostare il numero di gruppi di posizionamento su un valore ragionevole. 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).
Per informazioni più dettagliate sul calcolo del numero appropriato di gruppi di posizionamento per il pool, vedere Sezione 9.4, «Gruppi di posizionamento» (in lingua inglese).
Indica il numero di oggetti previsto per il pool. Quando questo valore viene impostato (insieme a una soglia di unione del filestore
), al momento della creazione del pool si verifica la suddivisione della cartella del gruppo di posizionamento. 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.
cephadm@adm >
ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes
Ad esempio:
cephadm@adm >
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:
cephadm@adm >
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:
cephadm@adm >
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":
cephadm@adm >
ceph tell mon.* injectargs --mon-allow-pool-delete=truecephadm@adm >
ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-itcephadm@adm >
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.
Per rinominare un pool, eseguire:
cephadm@adm >
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:
cephadm@adm >
rados df
POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR USED COMPR UNDER COMPR
.rgw.root 768 KiB 4 0 12 0 0 0 44 44 KiB 4 4 KiB 0 B 0 B
cephfs_data 960 KiB 5 0 15 0 0 0 5502 2.1 MiB 14 11 KiB 0 B 0 B
cephfs_metadata 1.5 MiB 22 0 66 0 0 0 26 78 KiB 176 147 KiB 0 B 0 B
default.rgw.buckets.index 0 B 1 0 3 0 0 0 4 4 KiB 1 0 B 0 B 0 B
default.rgw.control 0 B 8 0 24 0 0 0 0 0 B 0 0 B 0 B 0 B
default.rgw.log 0 B 207 0 621 0 0 0 5372132 5.1 GiB 3579618 0 B 0 B 0 B
default.rgw.meta 961 KiB 6 0 18 0 0 0 155 140 KiB 14 7 KiB 0 B 0 B
example_rbd_pool 2.1 MiB 18 0 54 0 0 0 3350841 2.7 GiB 118 98 KiB 0 B 0 B
iscsi-images 769 KiB 8 0 24 0 0 0 1559261 1.3 GiB 61 42 KiB 0 B 0 B
mirrored-pool 1.1 MiB 10 0 30 0 0 0 475724 395 MiB 54 48 KiB 0 B 0 B
pool2 0 B 0 0 0 0 0 0 0 0 B 0 0 B 0 B 0 B
pool3 333 MiB 37 0 111 0 0 0 3169308 2.5 GiB 14847 118 MiB 0 B 0 B
pool4 1.1 MiB 13 0 39 0 0 0 1379568 1.1 GiB 16840 16 MiB 0 B 0 B
Di seguito è riportata una descrizione delle singole colonne:
Numero di byte utilizzati dal pool.
Numero di oggetti memorizzati nel pool.
Numero di cloni memorizzati nel pool. Quando viene creata una snapshot e si scrive su un oggetto, invece di modificare l'oggetto originale, ne viene creato un clone per evitare che il contenuto dell'oggetto originale acquisito tramite snapshot venga modificato.
Numero di repliche dell'oggetto. Ad esempio, se un pool replicato con fattore di replica di 3 contiene "x" oggetti, in genere disporrà di 3 * x copie.
Numero di oggetti in stato danneggiato (non esistono tutte le copie) mentre la copia è mancante sull'OSD primario.
Numero di oggetti non trovati.
Numero di oggetti danneggiati.
Numero totale di operazioni di lettura richieste per il pool.
Numero totale di byte letti dal pool.
Numero totale di operazioni di scrittura richieste per il pool.
Numero totale di byte scritti sul pool. Tenere presente che questo valore non corrisponde all'utilizzo del pool, poiché è possibile scrivere sullo stesso oggetto per più volte. Come risultato, il valore di utilizzo del pool rimarrà invariato, ma il numero di byte scritti nel pool aumenterà.
Numero di byte allocati per i dati compressi.
Numero di byte occupati dai dati compressi quando non lo sono.
Per ottenere un valore da un pool, eseguire:
cephadm@adm >
ceph osd pool get pool-name key
È possibile ottenere valori per le chiavi elencate nella Sezione 11.2.8, «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 visualizzare un elenco di tutti i valori correlati a un pool specifico, eseguire:
cephadm@adm >
ceph osd pool get POOL_NAME all
Per impostare un valore a un pool, eseguire:
cephadm@adm >
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 11.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 11.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. Se si aggiungono nuovi OSD al cluster, verificare il valore dei gruppi di posizionamento su tutti i pool utilizzati come destinazione per i nuovi OSD.
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 in un pool il cui flag HASHPSPOOL è stato impostato sul valore 0 di default, nel cluster viene avviato il processo di backfill per fare in modo che il posizionamento di tutti i gruppi di posizionamento sia nuovamente corretto. Si tenga presente che questa procedura potrebbe generare un notevole carico I/O su un cluster, pertanto non abilitare il flag da 0 a 1 sui 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. Questo approccio causa un maggiore carico sulla CPU e un minore carico sul disco/sulla rete. 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.
Intervallo 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 impostare il numero di repliche di oggetti in un pool replicato, eseguire quanto riportato di seguito:
cephadm@adm >
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 (fare riferimento alla Sezione 9.6, «Pulitura»).
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.
Se vengono impostate 4 repliche per un pool, è possibile aumentare l'affidabilità del 25%.
Nel caso di due data center, è necessario impostare almeno 4 repliche per un pool affinché siano presenti due copie in ciascun data center per fare in modo che, se un data center viene perso, ne esistano comunque due copie e i dati vengano conservati anche in caso di perdita di un disco.
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:
cephadm@adm >
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:
cephadm@adm >
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 pool (vedere Sezione 11.2.2, «Creazione di un pool») è necessario specificarne i parametri iniziali, come il tipo di pool o il numero dei gruppi di posizionamento. Se in un secondo momento si decide di modificare uno di questi parametri, ad esempio durante la conversione di un pool replicato in uno con codice di cancellazione o se si riduce il numero di gruppi di posizionamento, è necessario eseguire la migrazione dei dati del pool su un altro i cui parametri sono adatti alla distribuzione attualmente attiva.
Esistono vari metodi di migrazione dei pool. Si consiglia di utilizzare il livello di cache perché questo metodo è invisibile all'utente, riduce il tempo di fermo del cluster e consente di evitare la duplicazione dei dati di tutto il pool.
È possibile utilizzare il metodo del livello di cache per eseguire la migrazione da un pool replicato a un pool con codice di cancellazione o a un altro pool replicato. La migrazione da un pool con codice di cancellazione non è supportata.
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 14, Suddivisione in livelli di cache. Nell'esempio seguente viene eseguita la migrazione di un pool replicato denominato "testpool" a un pool con codice di cancellazione:
Creare un novo pool con codice di cancellazione denominato "newpool". Fare riferimento alla Sezione 11.2.2, «Creazione di un pool» per una spiegazione dettagliata dei parametri di creazione del pool.
cephadm@adm >
ceph osd pool create newpool PG_NUM PGP_NUM erasure default
Verificare che il portachiavi del client utilizzato fornisca per "newpool" almeno le stesse capacità di "testpool".
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. L'opzione -force-nonempty
consente di aggiungere un livello di cache anche se il pool contiene già dei dati:
cephadm@adm >
ceph tell mon.* injectargs \ '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=1'cephadm@adm >
ceph osd tier add newpool testpool --force-nonemptycephadm@adm >
ceph osd tier cache-mode testpool proxy
Forzare il pool di cache in modo che tutti gli oggetti vengano spostati nel nuovo pool:
cephadm@adm >
rados -p testpool cache-flush-evict-all
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:
cephadm@adm >
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:
cephadm@adm >
ceph osd tier remove-overlay newpoolcephadm@adm >
ceph osd tier remove newpool testpool
Esecuzione
cephadm@adm >
ceph tell mon.* injectargs \
'--mon_debug_unsafe_allow_tier_with_nonempty_snaps=0'
Non è possibile eseguire la migrazione delle immagini RBD e delle esportazioni CephFS da un pool replicato a un pool EC. I pool EC possono memorizzare i dati, ma non i metadati. Lo svuotamento dell'oggetto intestazione dell'RBD non riuscirà correttamente. Lo stesso vale per CephFS.
Di seguito è indicata la modalità consigliata per eseguire la migrazione delle immagini RBD da un pool replicato a un altro.
Interrompere l'accesso dei client (ad esempio le macchine virtuali) all'immagine RBD.
Creare una nuova immagine nel pool di destinazione, con l'elemento superiore impostato sull'immagine di origine:
cephadm@adm >
rbd migration prepare SRC_POOL/IMAGE TARGET_POOL/IMAGE
Se è necessario eseguire la migrazione soltanto dei dati dell'immagine a un nuovo pool EC e lasciare i metadati nel pool replicato originale, eseguire invece il comando seguente:
cephadm@adm >
rbd migration prepare SRC_POOL/IMAGE \
--data-pool TARGET_POOL/IMAGE
Il metodo rbd migration
consente di eseguire la migrazione delle immagini con un tempo di fermo del client minimo. È necessario soltanto interrompere il client prima della fase "prepare" e avviarlo in seguito. Tenere presente che solo un client librbd
che supporta questa funzione (Ceph Nautilus o più recenti) sarà in grado di aprire l'immagine subito dopo la fase "prepare", mentre i client librbd
meno recenti o i client krbd
non saranno in grado di aprire l'immagine finché non viene eseguita la fase "commit".
Concedere ai client l'accesso all'immagine nel pool di destinazione.
Eseguire la migrazione dei dati al pool di destinazione:
cephadm@adm >
rbd migration execute SRC_POOL/IMAGE
Rimuovere l'immagine meno recente:
cephadm@adm >
rbd migration commit SRC_POOL/IMAGE
Gli snapshot del pool riprendono lo stato dell'interno pool Ceph. Con gli snapshot del pool è possibile mantenere la cronologia dello stato del pool. La creazione di snapshot del pool consuma spazio di storage in modo proporzionale alle dimensioni del pool. Verificare sempre che lo spazio su disco nello spazio di memorizzazione correlato sia sufficiente prima di creare lo snapshot di un pool.
Per creare una snapshot di un pool, eseguire:
cephadm@adm >
ceph osd pool mksnap POOL-NAME SNAP-NAME
Ad esempio:
cephadm@adm >
ceph osd pool mksnap pool1 snap1
created pool pool1 snap snap1
Per visualizzare un elenco delle snapshot esistenti di un pool, eseguire:
cephadm@adm >
rados lssnap -p POOL_NAME
Ad esempio:
cephadm@adm >
rados lssnap -p pool1
1 snap1 2018.12.13 09:36:20
2 snap2 2018.12.13 09:46:03
2 snaps
Per rimuovere una snapshot di un pool, eseguire:
cephadm@adm >
ceph osd pool rmsnap POOL-NAME SNAP-NAME
Per risparmiare spazio su disco, in BlueStore (ulteriori dettagli nel riferimento Sezione 1.4, «BlueStore») è disponibile la compressione rapida dei dati. Il rapporto di compressione dipende dai dati memorizzati nel sistema. Tenere presente che per le attività di compressione/decompressione è richiesta una potenza della CPU aggiuntiva.
È possibile configurare la compressione dei dati a livello globale (vedere la Sezione 11.5.3, «Opzioni di compressione globali») e quindi sostituire le impostazioni di compressione specifiche per ciascun pool individuale.
È possibile abilitare o disabilitare la compressione dei dati del pool o modificare l'algoritmo e la modalità di compressione in qualsiasi momento, a prescindere dal fatto che il pool contenga o meno dati.
Dopo aver abilitato la compressione del pool, non verrà applicata alcuna compressione ai dati esistenti.
Dopo aver disabilitato la compressione di un pool, tutti i relativi dati verranno decompressi.
Per abilitare la compressione dei dati per un pool denominato POOL_NAME, eseguire il comando seguente:
cephadm@adm >
ceph
osd pool set POOL_NAME compression_algorithm COMPRESSION_ALGORITHMcephadm@adm >
ceph
osd pool set POOL_NAME compression_mode COMPRESSION_MODE
Per disabilitare la compressione dei dati per un pool, utilizzare "none" come algoritmo di compressione:
cephadm@adm >
ceph
osd pool set POOL_NAME compression_algorithm none
Elenco completo delle opzioni di compressione:
I valori possibili sono none
, zstd
, snappy
. L'impostazione di default è snappy
.
L'algoritmo di compressione da utilizzare dipenda dal caso di utilizzo specifico. Di seguito sono riportati alcuni suggerimenti:
Utilizzare il valore di default snappy
a meno che non sia necessario modificarlo per qualche motivo.
zstd
offre un buon rapporto di compressione, ma causa un elevato overhead della CPU durante la compressione di piccole quantità di dati.
Eseguire un benchmark di questi algoritmi su un campione dei dati effettivi continuando a osservare la CPU e il consumo di memoria del cluster.
I valori possibili sono none
, aggressive
, passive
, force
. L'impostazione di 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
Valore: doppio, rapporto = SIZE_COMPRESSED / SIZE_ORIGINAL. Il valore di default è 0,875
, che indica che l'oggetto non verrà compresso se la compressione non riduce lo spazio occupato di almeno il 12,5%.
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.
È 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 11.5.2, «Opzioni di compressione del pool» ha la precedenza.
Vedere compression_algorithm
Vedere compression_mode
Vedere compression_required_ratio
Valore: intero non firmato, dimensioni in byte. Default: 0
Dimensioni massime degli oggetti che vengono compressi. L'impostazione viene ignorata per default a favore di bluestore_compression_min_blob_size_hdd
e bluestore_compression_min_blob_size_ssd
. Ha la precedenza quando viene impostata su un valore diverso da zero.
Valore: intero non firmato, dimensioni in byte. Default: 0
Dimensioni massime degli oggetti compressi prima che vengano suddivisi in porzioni più piccole. L'impostazione viene ignorata per default a favore di bluestore_compression_max_blob_size_hdd
e bluestore_compression_max_blob_size_ssd
. Ha la precedenza quando viene impostata su un valore diverso da zero.
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 compressi e memorizzati nell'unità a stato solito prima che vengano suddivisi in porzioni più piccole.
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 compressi e memorizzati nei dischi rigidi prima che vengano suddivisi in porzioni più piccole.