Ceph Distributed File System¶
Il Dicembre 12, 2021 da adminCeph è un file system di rete distribuito progettato per fornire buone prestazioni, affidabilità e scalabilità.
Le caratteristiche di base includono:
- Semantica POSIX
- Seamless scaling da 1 a molte migliaia di nodi
- Alta disponibilità e affidabilità. Nessun singolo punto di fallimento.
- Replicazione N-way dei dati attraverso i nodi di archiviazione
- Recupero veloce dai guasti dei nodi
- Requilibrio automatico dei dati all’aggiunta/rimozione dei nodi
- Schieramento facile: la maggior parte dei componenti FS sono demoni userspace
Anche,
- Schede flessibili (su qualsiasi directory)
- Contabilità ricorsiva (file annidati, directory, byte)
In contrasto con i filesystem cluster come GFS, OCFS2, e GPFS che si basano sull’accesso simmetrico di tutti i client ai dispositivi a blocchi condivisi, Ceph separa i dati e la gestione dei metadati in servercluster indipendenti, simili a Lustre. A differenza di Lustre, tuttavia, i nodi di metadati e archiviazione vengono eseguiti interamente come demoni dello spazio utente. I dati dei file sono stripedattraverso i nodi di archiviazione in grandi pezzi per distribuire il carico di lavoro e facilitare l’alta velocità. Quando i nodi di archiviazione falliscono, i dati vengono replicati in modo distribuito dagli stessi nodi di archiviazione (con un minimo coordinamento da parte di un monitor di cluster), rendendo il sistema estremamente efficiente e scalabile.
I server di metadati formano effettivamente una grande, coerente, cache distribuita in memoria sopra lo spazio dei nomi dei file che è estremamente scalabile, ridistribuisce dinamicamente i metadati in risposta ai cambiamenti del carico di lavoro e può tollerare fallimenti arbitrari (beh, non bizantini) dei nodi. Il server dei metadati adotta un approccio in qualche modo non convenzionale al metadatastorage per migliorare significativamente le prestazioni per i carichi di lavoro comuni. Inparticolare, gli inode con un solo link sono incorporati in directory, permettendo a intere directory di dentries e inode di essere caricate nella sua cache con una singola operazione di I/O. Il contenuto di directory estremamente grandi può essere frammentato e gestito da server di metadati indipendenti, permettendo un accesso concorrente scalabile.
Il sistema offre un riequilibrio/migrazione automatica dei dati quando si scala da un piccolo cluster di pochi nodi a molte centinaia, senza richiedere all’amministratore di scolpire il set di dati in volumi statici o di passare attraverso il noioso processo di migrazione dei dati tra server.Quando il file system si avvicina al pieno, nuovi nodi possono essere facilmente aggiunti e le cose “funzioneranno e basta”.
Ceph include un meccanismo flessibile di snapshot che permette all’utente di creare uno snapshot su qualsiasi sottodirectory (e il suo contenuto annidato) nel sistema. La creazione e la cancellazione di snapshot sono semplici come ‘mkdir.snap/foo’ e ‘rmdir .snap/foo’.
Ceph fornisce anche alcuni conti ricorsivi sulle directory per file e byte annidati. Cioè, un ‘getfattr -d foo’ su qualsiasi directory nel sistema rivelerà il numero totale di file e sottodirectory regolari annidati, e una somma di tutte le dimensioni dei file annidati. Questo rende l’identificazione di grandi consumatori di spazio su disco relativamente veloce, dato che non è richiesto alcun “du” o simile scansione ricorsiva del file system.
Infine, Ceph permette anche di impostare quote su qualsiasi directory nel sistema.La quota può limitare il numero di byte o il numero di file memorizzati sotto quel punto nella gerarchia della directory. Le quote possono essere impostate utilizzando gli attributi estesi ‘ceph.quota.max_files’ e ‘ceph.quota.max_bytes’, ad esempio:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
Un limite dell’attuale implementazione delle quote è che si basa sulla cooperazione del client che monta il file system per fermare gli scrittori quando viene raggiunto un limite. Non si può impedire a un client modificato o avverso di scrivere tutti i dati di cui ha bisogno.
Opzioni di montaggio¶
ip=A.B.C.D Specificare l’IP e/o la porta a cui il client deve legarsi localmente.Normalmente non c’è molta ragione per farlo. Se l’IP non è specificato, l’indirizzo IP del client è determinato guardando l’indirizzo da cui ha origine la sua connessione al monitor. wsize=X Specifica la dimensione massima di scrittura in byte. Predefinito: 64 MB. rsize=X Specifica la dimensione massima di lettura in byte. Predefinito: 64 MB. rasize=X Specifica la dimensione massima di readahead in byte. Predefinito: 8 MB. mount_timeout=X Specifica il valore di timeout per il montaggio (in secondi), nel caso di un file system Ceph non reattivo. Il default è 60secondi. caps_max=X Specifica il numero massimo di tappi da tenere. I tappi inutilizzati sono rilasciati quando il numero di tappi supera il limite. Il valore predefinito è 0 (nessun limite) rbytes Quando stat() è chiamato su una directory, imposta st_size a ‘rbytes’, la somma delle dimensioni dei file su tutti i file annidati sotto quella directory. Questo è il default. norbytes Quando stat() è chiamato su una directory, imposta st_size al numero di voci in quella directory. nocrc Disabilita il calcolo CRC32C per la scrittura dei dati. Se impostato, il nodo di memorizzazione deve affidarsi alla correzione degli errori del TCP per rilevare la corruzione dei dati nel payload dei dati. dcache Usa il contenuto della dcache per eseguire lookup negativi e readdir quando il client ha l’intero contenuto della directory nella sua cache. (Questo non cambia la correttezza; il client usa i metadati della cache solo quando un lease o una capacità assicurano che siano validi). nodcache Non usare la dcache come sopra. Questo evita una quantità significativa di codice complesso, sacrificando le prestazioni senza influenzare la correttezza, ed è utile per rintracciare i bug. noasyncreaddir Non usare la dcache come sopra per readdir. noquotadf Riporta l’uso complessivo del filesystem in statfs invece di usare la quota della rootdirectory. nocopyfrom Non usare l’operazione RADOS ‘copy-from’ per eseguire copie remote di oggetti. Attualmente è usata solo in copy_file_range, che tornerà all’implementazione VFS di default se questa opzione è usata. recover_session=<no|clean>Imposta la modalità di riconnessione automatica nel caso in cui il client sia bloccato. Le modalità disponibili sono “no” e “clean”. L’impostazione predefinita è “no”.
- no: non tentare mai di riconnettersi quando il client rileva che è stato bloccato. Le operazioni generalmente falliscono dopo essere state bloccate.
- clean: il client si riconnette al cluster ceph automaticamente quando rileva che è stato bloccato. Durante la riconnessione, il client elimina i dati/metadati sporchi, invalida le cache delle pagine e i file handle scrivibili. Dopo la riconnessione, i blocchi dei file diventano stantii perché l’MDS ne perde la traccia. Se un inode contiene blocchi di file stantii, la lettura/scrittura sull’inode non è consentita finché le applicazioni non rilasciano tutti i blocchi di file stantii.
Lascia un commento