Die Anforderungen des Cloud Compting an Storage sind schnelles Deployment auf neue Server sowie die effiziente Nutzung von Ressourcen wie CPU, Speicher, Storage und Netzwerk. Ceph verfolgt dabei wie das Cluster-Dateisystem Lustre einen parallel-verteilten Ansatz.

Ceph, das "Kopffüßler-Dateisystem" entstand im Rahmen einer Doktorarbeit an der Universität Kalifornien und wurde 2006 erstmals der Öffentlichkeit präsentiert. Es ist seit Version 2.6.34 Teil des offiziellen Linux-Kernels.

Es verwendet keine normalen Blockgeräte sondern setzt auf so genannte Object based Storage Devices (OSDs), auf intelligente Geräte, die das Storage-Management selbst erledigen. Storage-Objekte sind dabei beispielsweise Dateien und Partitionen, die OSD-Abstraktion ist in Software als Teil von Ceph implementiert. Was tatsächlich als natives Dateisystem auf der Festplatte landet, ist Btrfs.

Was die Redundanz angeht, darf bei Ceph ein beliebiges OSD ausfallen, und neue OSDs lassen sich dynamisch hinzufügen. Nach einer Änderung in der OSD-Landschaft verteilt Ceph die Daten neu. Ceph trennt außerdem die Metadaten strikt von den Daten. Die zuständigen OSDs und Metadaten-Server (MDS) bilden jeweils ein Cluster. Dadurch profitiert auch die Metadaten-Verwaltung vom Clustering. Dazu gesellen sich als dritte Komponente Cluster-Monitore.

Die Monitore überwachen den Status des Clusters. Bei Änderungen aktualisieren sie die Cluster Map und verteilen die neuen Informationen an die OSDs. Die Cluster Map enthält Computer und Container, die wiederum Computer oder Container enthalten können. Sie bildet auch die Topologie des Rechenzentrums mit Racks und Feuerschutzzellen ab, um möglichst hohe Ausfallsicherheit zu erreichen.

Der Client ist recht einfach und klein, weshalb er es auch rasch in den Linux-Kernel schaffte. Er kennt praktisch nur den Dateinamen, den Rest machen die Userspace-Prozesse MDS und ODS im Ceph-Verbund.

Dateien erhalten eine Objekt-ID, und Ceph ordnet diese einer Placement Group (PG) zu. Der Algorithmus CRUSH übernimmt deren Platzierung in OSDs nach zahlreichen Regeln und statistischen Verfahren.

Erste Schritte mit Ceph lassen sich mit einigen wenigen Linuxrechnern schnell machen, betont Seidel, eine einfache Beispielkonfiguration liegt Ceph bei. Dabei kann jeder Rechner als MDS, OSD oder Monitor fungieren. Neugierige können nun Platten entfernen oder hinzufügen um zu beobachten, wie Ceph die Daten neu verteilt.

Eignet sich Ceph also für die Cloud? Udo Seidel meint, es sei ein idealer Kandidat, und zählt trifftige Gründe auf: Es kann gut Daten verteilen, nutzt Ressourcen effizient, kennt keinen Single Point of Failure und passt sich vor allem dynamisch an Änderungen in der Serverlandschaft an. Derzeit gilt Ceph aber noch als experimentell und ist noch nicht für den Produktiveinsatz gedacht. Daher existieren auch noch keine Erfahrungen beim Einsatz in richtig großen Umgebungen von tausenden Servern.

Weitere Informationen zu Ceph sowie den Quelltext gibt es unter http://ceph.newdream.net