Che cos'è Ceph?

3 aprile 2024

Ceph è un open-source piattaforma software che fornisce storage basato su oggetti, blocchi e file altamente scalabile in un sistema unificato. È costruito per funzionare hardware delle merci, offrendo una soluzione di storage altamente affidabile e facilmente scalabile per operazioni di dati di grandi dimensioni. Il sistema è progettato per autoripararsi e autogestirsi, con l'obiettivo di ridurre al minimo i tempi amministrativi e altri costi.

Storia di Cef

Ceph è stato sviluppato da Sage Weil come parte della sua tesi di dottorato in informatica presso l'Università della California, Santa Cruz (UCSC). Il progetto è iniziato nel 2004 sotto la direzione del professor Scott Brandt come parte del Centro di ricerca sui sistemi di storage dell'UCSC.

L'obiettivo principale di Ceph era progettare un sistema di storage distribuito in grado di scalare fino al livello di exabyte e oltre mantenendo prestazioni e affidabilità elevate. Sage Weil e il suo team hanno cercato di affrontare i limiti delle soluzioni di storage esistenti, che spesso avevano problemi di scalabilità, erano soggette a colli di bottiglia o richiedevano costosi hardware proprietari.

Ecco alcune pietre miliari nello sviluppo e nell’evoluzione di Ceph:

  • 2006 Il prototipo iniziale di Ceph è stato rilasciato pubblicamente, mostrando il suo approccio innovativo allo storage distribuito, compreso l'uso dell'Reliable Autonomic Distributed Object Store (RADOS) per ottenere scalabilità e disponibilità elevate.
  • 2007 Ceph è stato rilasciato sotto la LGPL 2.1 (Lesser General Public License), invitando una più ampia comunità di sviluppatori a contribuire al suo sviluppo.
  • 2010 La prima versione stabile di Ceph, denominata Argonaut, ha segnato una pietra miliare significativa per il progetto, dimostrandone la maturità e la stabilità per gli ambienti di produzione.
  • 2011 Inktank Storage è stata fondata da Sage Weil per fornire supporto commerciale e servizi a Ceph, contribuendo ad accelerarne l'adozione negli ambienti aziendali.
  • 2014 Red Hat, Inc. ha acquisito Inktank Storage, investendo ulteriormente nello sviluppo di Ceph e integrandolo nella propria suite di cloud e soluzioni di archiviazione. Questa acquisizione è stata fondamentale per Ceph, poiché ha unito le risorse e l'esperienza di Red Hat con la tecnologia innovativa di Ceph.
  • 2015 e oltre. Ceph ha continuato ad evolversi, con rilasci regolari che aggiungono nuove funzionalità, migliorano le prestazioni ed espandono le sue capacità. La comunità attorno a Ceph è cresciuta in modo significativo e sviluppatori, utenti e aziende hanno contribuito al suo sviluppo e implementazione in vari settori.

Architettura Ceph

L'architettura di Ceph è progettata per garantire scalabilità, affidabilità e prestazioni, sfruttando la potenza di calcolo distribuito gestire in modo efficiente grandi quantità di dati. L'architettura è fondamentalmente modulare e consente il ridimensionamento indipendente di diversi componenti in base ai requisiti del carico di lavoro. Ecco una panoramica dei componenti chiave dell'architettura di Ceph.

1. RADOS (Archivio oggetti distribuito autonomo affidabile)

RADOS costituisce la base dell'architettura Ceph e fornisce la capacità di archiviazione distribuita sottostante. Gestisce memorizzazione dei dati, replicazione dei datie recupero. I cluster RADOS sono composti da due tipi di demoni:

  • OSD (Object Storage demoni). Questi sono responsabili dell'archiviazione dei dati, della gestione della replica dei dati, del ripristino, del backfill e del ribilanciamento nel cluster. Ogni demone OSD serve un disco di archiviazione e comunica con altri OSD per garantire che i dati vengano replicati e distribuiti in modo coerente nel cluster.
  • MON (monitor). I monitoraggi mantengono una copia principale della mappa del cluster, un record dettagliato dello stato del cluster, inclusi gli OSD, il loro stato e altri elementi critici metadati. I monitoraggi assicurano che il cluster raggiunga il consenso sullo stato del sistema utilizzando Paxos algoritmo, fornendo una visione affidabile e coerente del cluster a tutti i client e gli OSD.

2. Algoritmo CRUSH

Ceph utilizza l'algoritmo CRUSH (Controlled Replication Under Scalable Hashing) per archiviare e recuperare i dati in modo efficiente. CRUSH è un approccio innovativo che consente a Ceph di calcolare dove i dati dovrebbero essere archiviati (o da cui essere recuperati) nel cluster senza bisogno di una tabella di ricerca centrale. Questo processo consente a Ceph di scalare orizzontalmente senza colli di bottiglia o singoli punti di errore.

3. Interfacce di archiviazione Ceph

Ceph fornisce più interfacce di archiviazione per interagire con il livello RADOS sottostante, soddisfacendo diverse esigenze di archiviazione:

  • RBD (dispositivo a blocchi RADOS). Questa interfaccia fornisce storage a blocchi, consentendo di utilizzare Ceph come soluzione di storage a blocchi scalabile e distribuita per macchine virtuali e banche dati.
  • CephFS (file system Ceph). Conforme a POSIX file system che utilizza Ceph per l'archiviazione, fornendo un'interfaccia di archiviazione file al cluster Ceph. Offre funzionalità come istantanee e quote.
  • RGW (RADOS Gateway). Questo fornisce object storage funzionalità, offrendo un'interfaccia compatibile con le API S3 e Swift. È comunemente usato per la scala web object storage esigenze.

4. Daemon di Ceph Manager (ceph-mgr)

Il demone Ceph Manager è responsabile del tracciamento runtime parametri e lo stato attuale del cluster. Fornisce funzionalità essenziali di gestione e monitoraggio, garantendo agli amministratori una visione in tempo reale dello stato e delle prestazioni del cluster.

Come funziona Ceph?

Ecco una spiegazione passo passo del funzionamento di Ceph:

1. Distribuzione dei dati

In Ceph, tutti i dati vengono archiviati come oggetti all'interno di uno spazio dei nomi flat. Quando un file viene salvato nel cluster Ceph, viene diviso in blocchi di dimensione fissa, che vengono poi racchiusi in oggetti. Questi oggetti rappresentano l'unità di archiviazione di base in Ceph, contenente il blocco dati, i metadati e un identificatore univoco.

Ceph utilizza l'algoritmo CRUSH per determinare come archiviare e recuperare questi oggetti nel cluster. CRUSH utilizza l'identificatore univoco di ciascun oggetto per calcolare quali OSD devono archiviare le repliche dell'oggetto. Questo processo consente a Ceph di gestire il posizionamento dei dati nel cluster in modo dinamico ed efficiente senza fare affidamento su una directory centralizzata o su un nodo master.

2. Replica dei dati

Per garantire la durabilità dei dati e elevata disponibilità, Ceph replica ciascun oggetto più volte su diversi OSD. Il numero di repliche è configurabile (in genere tre) per bilanciare ridondanza ed efficienza di stoccaggio.

Ceph garantisce inoltre una forte consistenza. Quando i dati vengono scritti o modificati, le modifiche vengono replicate su tutte le copie prima che la scrittura venga confermata al client. Ciò garantisce che tutti i client visualizzino gli stessi dati, indipendentemente dalla replica a cui accedono.

3. Tolleranza agli errori e autoriparazione

I monitor Ceph (MON) supervisionano lo stato del cluster, inclusa l'integrità degli OSD e la loro distribuzione nel cluster. I MON utilizzano l'algoritmo di consenso Paxos per concordare lo stato attuale del cluster, garantendo visualizzazioni coerenti tra i nodi.

Quando un OSD si guasta, Ceph ridistribuisce automaticamente i propri dati ad altri OSD, mantenendo il livello di replica desiderato. Questo processo è noto come autoriparazione e aiuta a garantire che il sistema rimanga disponibile e durevole nonostante i problemi hardware fallimenti.

4. Accesso ai dati

Ceph fornisce diverse interfacce per l'accesso ai dati, ciascuna delle quali soddisfa diverse esigenze di archiviazione:

  • Dispositivo a blocchi RADOS (RBD) per lo storage a blocchi, consentendo a macchine virtuali e database di archiviare dati su Ceph come se fosse un dispositivo a blocchi locale.
  • File system Ceph (CephFS) per l'archiviazione di file, fornendo un file system conforme a POSIX per archiviare e gestire i file in una struttura gerarchica.
  • Gateway RADOS (RGW) per object storage, offrendo API compatibili con S3 e Swift per l'archiviazione e l'accesso ai dati come oggetti.

I client Ceph interagiscono con il cluster di archiviazione tramite queste interfacce. Utilizzano librados, una libreria che implementa il protocollo di comunicazione con gli OSD Ceph, per accedere ai dati archiviati nel cluster.

5. Ridimensionamento

L'architettura di Ceph gli consente di scalare fino a migliaia di nodi e da petabyte a exabyte di dati. Aggiungere più capacità o prestazioni di storage è semplice come aggiungere più nodi al cluster. L'algoritmo CRUSH consente a Ceph di gestire questa scalabilità in modo efficiente, distribuendo i dati in modo uniforme nel cluster senza colli di bottiglia centrali.


Anastasia
Spasojevic
Anastazija è una scrittrice di contenuti esperta con conoscenza e passione per cloud informatica, informatica e sicurezza online. A phoenixNAP, si concentra sulla risposta a domande scottanti su come garantire la robustezza e la sicurezza dei dati per tutti i partecipanti al panorama digitale.