Utilizzo dello spazio grezzo di CEPH


8

Non riesco a capire l'uso dello spazio grezzo di Ceph.

Ho 14 HDD (14 OSD) su 7 server, 3 TB ciascuno HDD ~ 42 TB di spazio grezzo in totale.

ceph -s 
     osdmap e4055: 14 osds: 14 up, 14 in
      pgmap v8073416: 1920 pgs, 6 pools, 16777 GB data, 4196 kobjects
            33702 GB used, 5371 GB / 39074 GB avail

Ho creato 4 dispositivi a blocchi, 5 TB ciascuno:

df -h
 /dev/rbd1       5.0T  2.7T  2.4T  54% /mnt/part1
/dev/rbd2       5.0T  2.7T  2.4T  53% /mnt/part2
/dev/rbd3       5.0T  2.6T  2.5T  52% /mnt/part3
/dev/rbd4       5.0T  2.9T  2.2T  57% /mnt/part4

df mostra che 10,9 TB sono usati in totale, ceph mostra che 33702 GB sono usati. Se ho 2 copie, deve essere ~ 22 TB, ma ora ho 33,7 TB usati - 11 TB persi.

ceph osd pool get archyvas size
size: 2


ceph df
GLOBAL:
    SIZE       AVAIL     RAW USED     %RAW USED
    39074G     5326G       33747G         86.37
POOLS:
    NAME          ID     USED      %USED     MAX AVAIL     OBJECTS
    data          0          0         0         1840G           0
    metadata      1          0         0         1840G           0
    archyvas      3      4158G     10.64         1840G     1065104
    archyvas2     4      4205G     10.76         1840G     1077119
    archyvas3     5      3931G     10.06         1840G     1006920
    archyvas4     6      4483G     11.47         1840G     1148291

Blocca dispositivi e OSD FS - XFS

Risposte:


6

Una possibile fonte di confusione è GB vs. GiB / TB vs. TiB (base 10 / base 2), ma ciò non può spiegare tutta la differenza qui.

Ceph / RBD tenterà di "pigramente" allocare spazio per i tuoi volumi. Questo è il motivo per cui, sebbene tu abbia creato quattro volumi da 5 TB, riporta 16 TB usati, non 20. Ma 16 TB è più della somma dei contenuti "attivi" del tuo filesystem supportato da RBD, che è solo di circa 11 TB, come dici. Diverse cose da notare:

Quando si eliminano i file nel file system supportato da RBD, i file system contrassegnano internamente i blocchi come liberi, ma di solito non provano a "restituirli" al dispositivo a blocchi sottostante (RBD). Se la tua versione RBD del kernel è abbastanza recente (3.18 o più recente), dovresti essere in grado di usare fstrimper restituire i blocchi liberati a RBD. Ho il sospetto che tu abbia creato ed eliminato altri file su questi file system, giusto?

Esiste anche un sovraccarico di file system oltre all'utilizzo dei dati di rete che viene mostrato da df. Oltre ai "superblocchi" e ad altre strutture di dati interni al filesystem, ci si può aspettare un sovraccarico dalla granularità con cui RBD alloca i dati. Penso che RBD assegnerà sempre blocchi da 4 MB, anche quando viene utilizzata solo una parte di esso.


E sono d'accordo con Simon. Indovina entrambe le nostre risposte insieme per renderne una completa. btw. maledetto. 20 ore di domanda e mi hai battuto a rispondere per 35 secondi? : D
Fox,

Grazie a entrambi per le risposte. Ora capisco dov'è il mio problema e come risolverlo.
virgismo,

Opzioni possibili: 1. aggiorna al kernel Linux> 3.18 e installa con l'opzione di eliminazione; (Ho provato con il kernel 3.19.0-1.el6.elrepo.x86_64, ma ho avuto deadlock ogni giorno); 2. Ricreare i dispositivi a blocchi con dimensioni <5 TB (impossibile ridurre XFS) 3. Aggiungere l'HDD e creare altri OSD.
virgismo,

1
Posso confermare che funziona bene. Ho aggiornato il kernel della mia macchina client Ceph a 3.19 lo scorso fine settimana in Ubuntu LTS 14.04.3 ( sudo apt-get install --install-recommends linux-generic-lts-vivid), riavviato, ri-mappato e montato i miei volumi rbd, eseguito uno fstrimsu ciascuno di essi e recuperato collettivamente 450 GB su un piccolo cluster da 25 TB. Dopo l'aggiornamento, assicurati di iniziare a montare i tuoi volumi rbd con l' discardopzione.
Brian Cline,

5

Non sono un esperto di ceph, ma lasciami indovinare un po '.

I dispositivi a blocchi non sono montati senza discardopzione. Quindi tutti i dati che scrivi ed elimini non vengono visualizzati sul filesystem ( /mnt/part1), ma poiché una volta sono stati scritti e non tagliati, rimangono sul filesystem sottostante.

Se cerchi i USEDtuoi pool e li aggiungi insieme, ottieni 16777 GB, il che equivale a ciò che ceph -smostra. E se lo moltiplichi per due (due copie), ottieni 33554 GB, che è praticamente lo spazio utilizzato.


1
Sono d'accordo con la risposta di Fox (che è stata scritta contemporaneamente alla mia di seguito :-). discarde "trim" sono sostanzialmente parole diverse per lo stesso meccanismo che può essere utilizzato per restituire blocchi inutilizzati a un dispositivo a blocchi. Il montaggio con l' discardopzione dovrebbe avere l'effetto desiderato. Alcune persone preferiscono correre periodicamente fstrimper evitare il sovraccarico di continui scarti da parte del filesystem. Per far funzionare tutto questo, il tuo driver RBD deve supportare TRIM / scarta. Come ho già detto, il driver del kernel RBD lo fa da Linux 3.18 — vedi tracker.ceph.com/issues/190 .
sleinen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.