• Non ci sono risultati.

Modifica della mappa CRUSH

Nota: pool di cancellazione

6.4 Modifica della mappa CRUSH

In questa sezione vengono presentati i modi con cui apportare modifiche di base alla mappa CRUSH, come la modifica di una mappa CRUSH, dei parametri della mappa CRUSH e l'aggiunta, lo spostamento o la rimozione di un OSD.

6.4.1 Modifica di una mappa CRUSH

Per modificare una mappa CRUSH esistente, procedere come indicato di seguito:

1. Ottenere una mappa CRUSH. Per ottenere la mappa CRUSH per il cluster, eseguire quanto riportato di seguito:

root # ceph osd getcrushmap -o compiled-crushmap-filename

66 Modifica della mappa CRUSH SES 5

L'output Ceph (-o) sarà una mappa CRUSH compilata nel nome file specificato. Poiché la mappa CRUSH è compilata, è necessario decompilarla prima di poterla modificare.

2. Decompilare una mappa CRUSH. Per decompilare una mappa CRUSH, eseguire quanto riportato di seguito:

cephadm > crushtool -d compiled-crushmap-filename \ -o decompiled-crushmap-filename

Ceph decompilerà (-d) la mappa CRUSH compilata e la genererà (-o) nel nome file specificato.

3. Modificare almeno uno dei parametri di dispositivi, compartimenti e regole.

4. Compilare una mappa CRUSH. Per compilare una mappa CRUSH, eseguire quanto ripor-tato di seguito:

cephadm > crushtool -c decompiled-crush-map-filename \ -o compiled-crush-map-filename

Ceph memorizzerà la mappa CRUSH compilata nel nome file specificato.

5. Impostare una mappa CRUSH. Per impostare la mappa CRUSH per il cluster, eseguire quanto riportato di seguito:

root # ceph osd setcrushmap -i compiled-crushmap-filename

Ceph immetterà la mappa CRUSH compilata del nome file specificato come mappa CRUSH per il cluster.

6.4.2 Aggiunta/Spostamento di un OSD

Per aggiungere o spostare un OSD nella mappa CRUSH di un cluster in esecuzione, eseguire quanto riportato di seguito:

root # ceph osd crush set id_or_name weight root=pool-name bucket-type=bucket-name ...

id

Un numero intero. L'ID numerico dell'OSD. Questa opzione è obbligatoria.

67 Aggiunta/Spostamento di un OSD SES 5

name

Stringa. Indica il nome completo dell'OSD. Questa opzione è obbligatoria.

weight

Valore doppio. Il peso CRUSH per l'OSD. Questa opzione è obbligatoria.

pool

Una coppia di chiavi/valori. Per default, la gerarchia CRUSH contiene il default del pool come rispettiva radice. Questa opzione è obbligatoria.

bucket-type

Coppia di chiavi/valori. È possibile specificare l'ubicazione degli OSD nella gerarchia CRUSH.

Nell'esempio seguente viene aggiunto osd.0 alla gerarchia o viene spostato l'OSD da un'ubica-zione precedente.

root # ceph osd crush set osd.0 1.0 root=data datacenter=dc1 room=room1 \ row=foo rack=bar host=foo-bar-1

6.4.3 Regolazione del peso CRUSH di un OSD

Per regolare il peso CRUSH di un OSD nella mappa CRUSH di un cluster in esecuzione, eseguire quanto riportato di seguito:

root # ceph osd crush reweight name weight

name

Stringa. Indica il nome completo dell'OSD. Questa opzione è obbligatoria.

weight

Valore doppio. Il peso CRUSH per l'OSD. Questa opzione è obbligatoria.

6.4.4 Rimozione di un OSD

Per rimuovere un OSD dalla mappa CRUSH di un cluster in esecuzione, eseguire quanto riportato di seguito:

root # ceph osd crush remove name

68 Regolazione del peso CRUSH di un OSD SES 5

name

Stringa. Indica il nome completo dell'OSD. Questa opzione è obbligatoria.

6.4.5 Spostamento di un compartimento

Per spostare un compartimento in un'ubicazione o posizione diversa nella gerarchia di mappe CRUSH, eseguire quanto riportato di seguito:

root # ceph osd crush move bucket-name bucket-type=bucket-name, ...

bucket-name

Stringa. Il nome del compartimento da spostare/riposizionare. Questa opzione è obbliga-toria.

bucket-type

Coppia di chiavi/valori. È possibile specificare l'ubicazione del compartimento nella ge-rarchia CRUSH.

6.5 Pulitura

Oltre a creare più copie di oggetti, Ceph assicura l'integrità dei dati mediante la pulitura di grup-pi di posizionamento. La pulitura Ceph è analoga all'esecuzione di fsck nel strato di memoriz-zazione degli oggetti. Per ciascun gruppo di posizionamento, Ceph genera un catalogo di tutti gli oggetti e confronta ciascun oggetto e le rispettive repliche per assicurare che non vi siano oggetti mancanti o non corrispondenti. Con la pulitura durante il giorno, vengono verificati le dimensioni e gli attributi degli oggetti, mentre con una pulitura settimanale più approfondita si effettua la lettura dei dati e mediante l'uso di checksum ne garantisce l'integrità.

La pulitura è importante per mantenere l'integrità dei dati, ma può ridurre le prestazioni. È possibile regolare le impostazioni seguenti per aumentare o diminuire le operazioni di pulitura:

osd max scrubs

Numero massimo di operazioni di pulitura simultanee per Ceph OSD. Il valore di default è 1.

osd scrub begin hour, osd scrub end hour

Le ore del giorno (da 0 a 24) che definiscono la finestra temporale in cui può essere eseguita la pulitura. Per default inizia alle ore 0 e termina alle 24.

69 Spostamento di un compartimento SES 5

Importante

Se l'intervallo di pulitura del gruppo di posizionamento supera il valore dell'impo-stazione osd scrub max interval, la pulitura verrà eseguita indipendentemente dalla finestra temporale definita per la stessa.

osd scrub during recovery

Consente le operazioni di pulitura durante il recupero. Se si imposta su 'false' la pianifi-cazione di nuove operazioni di pulitura verrà disabilitata durante un recupero attivo. Le operazioni di pulitura già in esecuzione continueranno normalmente. Questa opzione è utile per ridurre il carico di cluster trafficati. L'impostazione di default è "true".

osd scrub thread timeout

Numero massimo di secondi prima del timeout della pulitura. Il valore di default è 60.

osd scrub finalize thread timeout

Numero massimo di secondi prima del timeout del thread di completamento della pulitura.

Il valore di default è 60*10.

osd scrub load threshold

Carico massimo normalizzato. Ceph non eseguirà la pulitura quando il carico del sistema (come definito dal rapporto getloadavg()/numero di online cpus) supera tale numero.

Il valore di default è 0,5.

osd scrub min interval

Intervallo minimo espresso in secondi per la pulitura di Ceph OSD quando il carico del cluster Ceph è basso. Il valore di default è 60*60*24 (una volta al giorno).

osd scrub max interval

Intervallo massimo espresso in secondi per la pulitura di Ceph OSD indipendentemente dal carico del cluster. 7*60*60*24 (una volta alla settimana).

osd scrub chunk min

Numero minimo di porzioni dell'archivio dati da ripulire durante una singola operazione.

I blocchi Ceph eseguono la scrittura in un singola porzione durante la pulitura. Il valore di default è 5.

osd scrub chunk max

Numero massimo di porzioni dell'archivio dati da ripulire durante una singola operazione.

Il valore di default è 25.

70 Pulitura SES 5

osd scrub sleep

Tempo di inattività prima della pulitura del gruppo di porzioni successivo. Se si aumenta questo valore si rallenta l'intera operazione di pulitura con un impatto minore sulle ope-razioni del client. Il valore di default è 0.

osd deep scrub interval

Intervallo per la pulitura "approfondita" (lettura completa di tutti i dati). L'opzione osd scrub load threshold non influisce su questa impostazione. Il valore di default è 60*60*24*7 (una volta alla settimana).

osd scrub interval randomize ratio

Consente di aggiungere un ritardo casuale al valore osd scrub min interval quando si pianifica il lavoro di pulitura successivo per un gruppo di posizionamento. Il ritardo è un valore casuale più piccolo rispetto al risultato di osd scrub min interval * osd scrub interval randomized ratio. Pertanto, l'impostazione di default distribuisce le puliture praticamente in modo casuale nella finestra temporale consentita di [1, 1,5] * osd scrub min interval. Il valore di default è 0,5

osd deep scrub stride

Consente di leggere le dimensioni quando si effettua una pulitura approfondita. Il valore di default è 524288 (512 kB).