Technology Know-How: Ceph
I sistemi di storage aziendali si sono evoluti enormemente nel tempo; inizialmente si faceva affidamento ad una singola macchina contenente un elevato numero di dischi, in modo da fornire la memoria e le caratteristiche richieste, ma con l'aumenare delle risorse e degli utenti risulta essere una soluzione poco performante.
Per risolvere tale problema si è passati all'utilizzo di macchine con hardware molto più potente in termini di prestazioni, ma anche decisamente più costose. Con questa soluzione si è però vincolati ad un solo vendor per tutti i layer dell'architettura di storage, a partire da quello hardware, passando a quello software ed infine per supporto e manutenzione.
Per evitare questi svantaggi in termini di costi ed il vendor lock-in, si è pensato ad una soluzione alternativa che invece di utilizzare una sola macchina potente, utilizzasse un cluster di macchine distribuite, ognuna con i propri dischi.
In questo modo si possono utilizzare macchine base, comuni, e diminuire drasticamente i costi per la componente hardware; da questa idea nasce Ceph che va a sostituire lo strato software permettendo di astrarre dall'hardware sottostante. In quest'ottica viene tralasciato il layer di supporto e manutenzione che nella soluzione precedente veniva offerto dal vendor, per sostituire questo strato ci si può sottoscrivere ad una qualsiasi azienda che offre questi servizi per Ceph, come ad esempio RedHat.
Ceph è una tecnologia open-source che consente la realizzazione di sistemi basati su software-defined storage (SDS). SDS è un approccio alla gestione dei dati nel quale le risorse di storage sono astratte dall'hardware sul quale risiedono; questo rende il sistema più flessibile e programmabile consentendogli di adattarsi automaticamente e rapidamente alle necessità.
Ceph è un sistema di storage unificato, completamente distribuito, performante in termini di velocità di trasferimento e latenza, altamente scalabile e senza un "single point of failure"; unificato in quanto consente agli utenti di interfacciarsi coi dati trattandoli come file, blocchi o oggetti astraendo dalla rappresentazione utilizzata dal sistema.
La sua architettura è stata pensata basandosi su alcune assunzioni e caratteristiche che si vollero ottenere:
- Ogni componente deve essere scalabile
- Non deve esistere un "single point of failure"
- Open-source, in modo da facilitare la sua espansione
- Concentrato sulla communità, ognuno può decidere quale nuove caratteristiche deve avere, chiunque può risolvere un errore o aggiornare la documentazione
- La soluzione deve basarsi su SDS
- Deve poter essere eseguito su hardware di base
- Qualsiasi cosa deve essere autogestita e autorigenerante quando possibile
Ceph è stato sviluppato all'Università della California da Sage Weil nel 2003 come parte del suo dottorato di ricerca, per poi essere reso open-source nel 2006.
Durante l'arco di tempo tra il 2007 e il 2011 Ceph si è raffinato, ottenendo stabilità e affidabilità dei componenti, implementato nuove feature, e stabilendo una roadmap per il futuro.
Nel 2012 Weil fondò Inktank per poter permettere la diffusione di Ceph, consentendo alle aziende di implementare e gestire in modo efficace sistemi di storage distribuiti; nel 2014 Inktank è stata acquisita da Red Hat, il più grande fornitore al mondo di soluzioni open-source e fino ad oggi risulta essere uno dei suoi principali curatori.
Un sistema di storage come Ceph è diventato uno dei principali componenti dell'infrastruttura cloud. In particolare risulta essere la tecnologia open-source principale per piattaforme cloud come OpenStack e CloudStack, che sfruttano le sue potenzialità per fornire infrastrutture robuste e scalabili a livello di exabyte.
Ceph basa le sue fondamenta sul concetto di oggetto, ogni dato, indipendentemente dal suo formato, viene immagazzinato sotto forma di oggetto all'interno di uno spazio piatto di uno storage cluster, replicandolo per aumentarne l'affidabilità.
Un sistema di storage basato su oggetti ha enormi vantaggi rispetto ai tradizionali sistemi basati su file system; gli oggetti non sono legati ad un percorso fisico e grazie a questa indipendenza dall'hardware sottostante risultano più flessibili e location-independent.
Al momento di stesura di questo articolo, sono supportate ancora due versioni di Ceph: Nautilus e Octopus che attualmente sono rispettivamente ai release 14.2.13 e 15.2.5. In seguito faremo sempre e solo riferimento alla versione Octopus release 15.2.5.