Ceph ist ein ver­teil­tes Spei­cher­sys­tem, das sich nahtlos in Proxmox in­te­grie­ren lässt und eine hoch­ver­füg­ba­re und aus­fall­si­che­re Storage-Lösung bietet. In dieser Anleitung erfahren Sie Schritt für Schritt, wie Sie auf Ihrem Proxmox-Server ein Ceph-Cluster in­stal­lie­ren.

Schritt 1: Vor­aus­set­zun­gen prüfen

Bevor Sie mit der Proxmox-In­stal­la­ti­on von Ceph beginnen, sollten Sie si­cher­stel­len, dass Ihre Umgebung die grund­le­gen­den An­for­de­run­gen erfüllt. Ceph ist ein Spei­cher­sys­tem, das Daten über mehrere Server hinweg re­pli­ziert. Damit diese Redundanz zu­ver­läs­sig funk­tio­niert, benötigen Sie min­des­tens drei Proxmox-Knoten. So kann das System auch dann wei­ter­ar­bei­ten, wenn ein Knoten ausfällt.

Achten Sie außerdem darauf, dass die Bare-Metal-In­stal­la­ti­on von Proxmox auf allen Servern ab­ge­schlos­sen und Proxmox auf dem neuesten Stand ist. Jeder Knoten sollte über eine eigene, un­ge­nutz­te Fest­plat­te verfügen, die aus­schließ­lich für Ceph-OSDs vor­ge­se­hen ist. Diese Laufwerke bilden später den ei­gent­li­chen Speicher Ihres Clusters. Ebenso wichtig ist eine schnelle und stabile Netz­werk­ver­bin­dung zwischen den Knoten, um Latenzen gering zu halten. Außerdem benötigen Sie auf allen Hosts Root-Zugriff, da die In­stal­la­ti­on Sys­tem­än­de­run­gen erfordert.

Über­prü­fen Sie mit folgendem Befehl, welche Version von Proxmox aktuell auf Ihrem System in­stal­liert ist:

pveversion
bash

Ver­glei­chen Sie die Ver­si­ons­num­mern auf allen Knoten. Wenn Un­ter­schie­de bestehen oder Ihre In­stal­la­ti­on nicht mehr aktuell ist, führen Sie ein Update durch, um alle Systeme auf denselben Stand zu bringen:

apt update && apt full-upgrade -y
reboot
bash

Sobald alle Knoten ak­tua­li­siert und er­reich­bar sind, ist Ihre Umgebung bereit für die In­stal­la­ti­on von Ceph.

Hinweis

Obwohl es sich hierbei um keine zwingend not­wen­di­ge Vor­aus­set­zung handelt, sollten Sie für den pro­duk­ti­ven Einsatz von Proxmox und Ceph SSDs verwenden. Ceph pro­fi­tiert stark von schnellen Schreib- und Le­se­zu­grif­fen, da jeder Datensatz mehrfach re­pli­ziert und über mehrere Knoten verteilt wird.

Proxmox Bare Metal Server
Mehr Kontrolle und Effizienz für Ihre IT-In­fra­struk­tur
  • Voll­in­te­grier­te Plattform für Vir­tua­li­sie­rung und Container
  • Ska­lier­bar & flexibel: VMs und Container nach Bedarf be­reit­stel­len
  • Open Source mit op­tio­na­lem En­ter­pri­se-Support
  • Da­ten­ho­heit durch den Betrieb in sou­ve­rä­nen Re­chen­zen­tren

Schritt 2: Ceph-Re­po­si­to­ry ak­ti­vie­ren

Damit Sie Ceph bequem über die Pa­ket­ver­wal­tung in­stal­lie­ren können, müssen Sie zunächst das passende Re­po­si­to­ry auf jedem Ihrer Proxmox-Knoten ak­ti­vie­ren. Dieses Re­po­si­to­ry enthält alle not­wen­di­gen Ceph-Pakete, die von Proxmox speziell angepasst und getestet wurden. Melden Sie sich dazu als Root-User auf jedem Host an und führen Sie den folgenden Befehl aus:

pveceph install
bash

Dieser Befehl richtet au­to­ma­tisch das of­fi­zi­el­le Ceph-Re­po­si­to­ry von Proxmox ein und in­stal­liert die grund­le­gen­den Ceph-Kom­po­nen­ten. Damit die neuen Pa­ket­quel­len auch aktiv werden, ak­tua­li­sie­ren Sie Ihre Pa­ket­lis­te mit:

apt update
bash

Schritt 3: Ceph auf dem ersten Knoten in­itia­li­sie­ren

Im dritten Schritt wird das ei­gent­li­che Ceph-Cluster auf Ihrem ersten Proxmox-Knoten vor­be­rei­tet. Sie legen das Netzwerk fest, über das die Cluster-Kom­mu­ni­ka­ti­on läuft, und richten den ersten so­ge­nann­ten Monitor ein. Dieser Monitor ist ein zentraler Be­stand­teil von Ceph: Er überwacht den Zustand des Clusters, verwaltet die Cluster-Mit­glie­der und stellt sicher, dass alle Kom­po­nen­ten stets denselben In­for­ma­ti­ons­stand haben.

Starten Sie die In­itia­li­sie­rung auf dem ersten Proxmox-Host mit folgendem Befehl:

pveceph init --network 10.0.0.0/24
bash

Das Subnetz 10.0.0.0/24 ist nur ein Beispiel. Verwenden Sie das interne Netzwerk, über das Ihre Proxmox-Knoten direkt mit­ein­an­der verbunden sind. Mit pveceph init wird die grund­le­gen­de Ceph-Kon­fi­gu­ra­ti­on auf Ihrem ersten Knoten angelegt. Dabei erstellt Proxmox unter anderem die zentrale Cluster-Kon­fi­gu­ra­ti­ons­da­tei, den Ceph-Keyring, der für die Au­then­ti­fi­zie­rung innerhalb des Clusters benötigt wird, sowie die not­wen­di­gen Sys­tem­ver­zeich­nis­se für Ceph-Dienste.

Sobald die In­itia­li­sie­rung ab­ge­schlos­sen ist, können Sie den ersten Monitor-Dienst ein­rich­ten:

pveceph createmon
bash

Dieser Befehl startet den Monitor-Prozess und re­gis­triert ihn im Cluster. Ab diesem Moment existiert ein funk­ti­ons­fä­hi­ger, aber noch al­lein­ste­hen­der Ceph-Knoten. Der Monitor beginnt, Sta­tus­in­for­ma­tio­nen zu sammeln und legt damit die Grundlage für die spätere Kom­mu­ni­ka­ti­on mit weiteren Knoten.

Hinweis

In einem Ceph-Cluster werden in der Regel min­des­tens drei Monitore verwendet. Das hat den Vorteil, dass der Cluster auch dann wei­ter­ar­bei­ten kann, wenn ein Monitor ausfällt. Erst wenn mehrere Monitore vorhanden sind, kann Ceph einen so­ge­nann­ten Quorum-Zustand erreichen. Hierbei handelt es sich um eine Mehrheit, die Ent­schei­dun­gen über den Cluster-Zustand treffen kann.

Schritt 4: Weitere Knoten zum Cluster hin­zu­fü­gen

Damit Ceph die ge­wünsch­te Aus­fall­si­cher­heit bietet, müssen Sie nun die weiteren Proxmox-Knoten in das Ceph-Cluster aufnehmen. Jeder zu­sätz­li­che Knoten bringt Redundanz und Spei­cher­ka­pa­zi­tät. Melden Sie sich hierzu auf den anderen Knoten an und führen Sie dort nach­ein­an­der die folgenden Befehle aus:

pveceph install
pveceph createmon
bash

Auf diese Weise richten Sie auch auf den anderen Hosts Monitore ein. Sobald alle Monitore aktiv sind, können Sie den Status Ihres Clusters auf einem be­lie­bi­gen Knoten über­prü­fen, indem Sie folgenden Befehl nutzen:

ceph -s
bash

Die Ausgabe zeigt Ihnen, welche Monitore und Dienste aktuell laufen. Wenn dort mehrere Monitore auf­ge­lis­tet sind, haben Sie er­folg­reich alle Knoten ein­ge­bun­den.

Schritt 5: OSDs erstellen

Die OSDs (Object Storage Daemons) sind das Herzstück Ihres Ceph-Clusters. Jede Fest­plat­te, die Sie für Ceph verwenden, wird zu einer eigenen OSD-Einheit. Diese Daemons sind dafür ver­ant­wort­lich, Ihre Daten auf die Laufwerke zu schreiben, zu re­pli­zie­ren und wieder be­reit­zu­stel­len, wenn sie von einem anderen Knoten oder einer vir­tu­el­len Maschine an­ge­for­dert werden. Je mehr OSDs Ihr Cluster besitzt, desto höher sind sowohl Spei­cher­ka­pa­zi­tät als auch Leistung. Bevor Sie mit der Ein­rich­tung beginnen, sollten Sie prüfen, welche Laufwerke auf Ihrem Knoten verfügbar sind. Das geht mit dem folgenden Befehl:

lsblk
bash

Die Ausgabe zeigt Ihnen alle im System erkannten Fest­plat­ten und Par­ti­tio­nen. Achten Sie darauf, nur un­ge­nutz­te Laufwerke für Ceph zu verwenden. Greifen Sie nur auf die Laufwerke zurück, die nicht das Be­triebs­sys­tem enthalten und nicht gemountet sind. Sobald Sie ein ge­eig­ne­tes Laufwerk, in unserem Falle /dev/sdb gefunden haben, können Sie es als OSD in­itia­li­sie­ren:

pveceph createosd /dev/sdb
bash

Dabei wird das Laufwerk au­to­ma­tisch for­ma­tiert und Ceph richtet die benötigte Struktur ein. An­schlie­ßend wird der OSD-Daemon gestartet und in das Cluster in­te­griert. Alle vor­han­de­nen Daten auf dem aus­ge­wähl­ten Laufwerk werden gelöscht. Ver­ge­wis­sern Sie sich daher unbedingt, dass die Fest­plat­te wirklich nur für Ceph vor­ge­se­hen ist.

Wie­der­ho­len Sie diesen Vorgang auf allen Knoten und für alle Laufwerke, die Sie in Ihren Proxmox-Ceph-Speicher einbinden möchten. Je nach Clus­ter­grö­ße und Hardware kann es einige Minuten dauern, bis alle OSDs voll­stän­dig ein­ge­bun­den sind.

Über­prü­fen Sie an­schlie­ßend, ob Ihre soeben ein­ge­rich­te­ten OSDs korrekt erkannt wurden und aktiv sind. Verwenden Sie dazu den folgenden Befehl:

ceph osd tree
bash

Dank der über­sicht­li­chen Baum­struk­tur können Sie leicht erkennen, wie Ihre Spei­cher­ge­rä­te im Cluster verteilt sind und ob sie feh­ler­frei laufen.

Schritt 6: Ceph-Manager und Dashboard ak­ti­vie­ren

Damit Sie Ihr Proxmox-Ceph-Cluster bequem über­wa­chen und verwalten können, in­stal­lie­ren Sie nun den Ceph-Manager (kurz MGR). Dieser Dienst sammelt Leis­tungs­da­ten, überwacht alle aktiven Kom­po­nen­ten und stellt über ver­schie­de­ne Module zu­sätz­li­che Funk­tio­nen bereit. Eine dieser Funk­tio­nen ist auch das in­te­grier­te Web-Dashboard. In­stal­lie­ren Sie den Manager-Dienst auf Ihrem Proxmox-Knoten mit un­ten­ste­hen­dem Ter­mi­nal­be­fehl:

pveceph createmgr
bash

Sobald der Manager aktiv ist, können Sie das Dashboard-Modul ein­schal­ten. Es wird au­to­ma­tisch vom MGR-Dienst be­reit­ge­stellt und muss lediglich aktiviert werden:

ceph mgr module enable dashboard
bash

Das Dashboard bietet Ihnen eine be­nut­zer­freund­li­che Ober­flä­che, über die Sie den Status Ihres Clusters einsehen, die Aus­las­tung der OSDs und Monitore verfolgen sowie Warn­mel­dun­gen direkt erkennen können. Rufen Sie es über Ihren Browser und den Stan­dard­port 8443 auf:

https://<PROXMOX_IP>:8443

Ersetzen Sie hierbei PROXMOX_IP durch die IP-Adresse des Proxmox-Knotens, auf dem der Ceph-Manager in­stal­liert wurde.

Schritt 7: Ceph-Pools anlegen und testen

Nachdem Ihr Ceph-Cluster er­folg­reich ein­ge­rich­tet und alle OSDs aktiv sind, können Sie nun den ei­gent­li­chen Spei­cher­be­reich anlegen, in dem Ihre Daten später abgelegt werden können. Ceph or­ga­ni­siert seine Daten in Pools. Ein Pool ist eine logische Einheit, in der Ceph Ihre Dateien, Fest­plat­ten-Images oder Container-Volumes ablegt. Jeder Pool besteht aus vielen so­ge­nann­ten Placement Groups, die die Daten auf die einzelnen OSDs verteilen und für eine gleich­mä­ßi­ge Last­ver­tei­lung sorgen. Mit den Pools bestimmen Sie also, wie und wo Ceph Ihre Daten speichert. So können Sie ganz nach Ihrem in­di­vi­du­el­len Bedarf bei­spiels­wei­se einen Pool für virtuelle Maschinen und einen anderen für Backups oder Container-Images anlegen.

Um einen neuen Pool zu erstellen, führen Sie auf einem Ihrer Proxmox-Knoten den folgenden Befehl aus:

pveceph pool create cephpool --size 3 --min_size 2 --pg_num 128
bash

In unserem Beispiel wird ein Pool mit dem Namen cephpool angelegt. Die Parameter geben an, wie Ceph mit Ihren Daten umgehen soll:

  • --size 3 bedeutet, dass jede Datei dreifach re­pli­ziert wird. Das sorgt für Aus­fall­si­cher­heit: Fällt ein OSD aus, sind immer noch zwei Kopien vorhanden.
  • --min_size 2 legt fest, dass min­des­tens zwei Kopien aktiv sein müssen, damit der Pool als funk­ti­ons­fä­hig gilt. Dadurch wird ver­hin­dert, dass Ceph mit un­voll­stän­di­gen Daten arbeitet.
  • --pg_num 128 definiert die Anzahl der Placement Groups, also der logischen Da­ten­con­tai­ner, in die Ceph Ihre Daten intern aufteilt. Je mehr OSDs Sie haben, desto höher kann dieser Wert sein, um die Daten gleich­mä­ßig zu verteilen.
Hinweis

Die Anzahl der Placement Groups, die Sie beim Erstellen eines Ceph-Pools festlegen, lässt sich nach­träg­lich nicht mehr re­du­zie­ren. Sie können sie erhöhen, wenn Ihr Cluster wächst, aber eine Ver­rin­ge­rung ist technisch nicht vor­ge­se­hen, da diese zu einem Verlust von Daten führen kann. Planen Sie daher von Anfang an aus­rei­chend PGs. Als Faust­re­gel gilt hierbei: 100 PGs pro OSD im Pool sind ein guter Aus­gangs­wert für kleine bis mittlere Um­ge­bun­gen.

Nachdem Sie den Pool erstellt haben, können Sie über­prü­fen, ob alles korrekt funk­tio­niert.

ceph -s
bash

In der Ausgabe sehen Sie den aktuellen Status Ihres Ceph-Clusters. Wenn dort der Hinweis HEALTH_OK erscheint, bedeutet das, dass Ihr Pool korrekt ein­ge­rich­tet wurde und Ihr Proxmox-Ceph-Cluster stabil läuft.

Tipp

Ein Ceph-Cluster sorgt zwar für Redundanz, ersetzt aber keine re­gel­mä­ßi­gen Backups. Für echte Da­ten­si­che­rung in Proxmox-Um­ge­bun­gen empfiehlt sich ein Proxmox Backup Server. Er er­mög­licht de­du­pli­zier­te, ver­schlüs­sel­te Backups Ihrer VMs und Container – auch, wenn diese auf Ceph-Speicher liegen.

Intel® Server
High-Per­for­mance für Ihre Workloads
  • Intel Xeon E Raptor Lake
  • 100 % En­ter­pri­se-Hardware
  • Kon­fi­gu­rier­ba­re Hardware-Aus­stat­tung
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren

Schritt 8: Ceph-Speicher in Proxmox einbinden

Nachdem Ihr Ceph-Cluster ein­ge­rich­tet und der erste Pool erstellt wurde, müssen Sie diese in einem letzten Schritt in Proxmox einbinden, damit Ihre vir­tu­el­len Maschinen und Container den Speicher nutzen können. Proxmox verwendet hierfür das RBD-Protokoll. Am ein­fachs­ten gelingt die Ein­bin­dung über die grafische Ober­flä­che von Proxmox. Öffnen Sie dazu das Web­in­ter­face und na­vi­gie­ren Sie im Menü zum Punkt „Re­chen­zen­trum > Speicher > Hin­zu­fü­gen > RBD (Ceph)“.

Im folgenden Dialog tragen Sie die not­wen­di­gen Ver­bin­dungs­da­ten zu Ihrem Ceph-Cluster ein.

  • Geben Sie unter ID einen ein­deu­ti­gen Namen für das neue Spei­cher­ziel ein.
  • Im Bereich Monitore tragen Sie die IP-Adressen Ihrer Ceph-MONs ein. Hierbei handelt es sich um die Adressen der Knoten, auf denen die Monitor-Dienste laufen. Mehrere Adressen trennen Sie dabei durch Kommata, etwa 10.0.0.11,10.0.0.12,10.0.0.13.
  • Im Feld Pool geben Sie den Namen des zuvor er­stell­ten Ceph-Pools an, z. B. cephpool.
  • Als User können Sie in der Regel admin verwenden.
  • Der Keyring wird au­to­ma­tisch befüllt, indem Proxmox den be­nö­tig­ten Au­then­ti­fi­zie­rungs­schlüs­sel aus Ihrer Ceph-Kon­fi­gu­ra­ti­on ausliest.
Hinweis

Wenn Sie lieber über die Kom­man­do­zei­le arbeiten, können Sie den gleichen Vorgang auch mit einem einzigen Befehl durch­füh­ren:

pvesm add rbd ceph-storage --monhost <mon1,mon2,mon3> --pool cephpool --content images
bash

Ersetzen Sie <mon1,mon2,mon3> dabei durch die IP-Adressen Ihrer Monitor-Knoten.

Sobald der Speicher hin­zu­ge­fügt ist, erscheint er in der Proxmox-Ober­flä­che. Sie können ihn nun direkt als Ziel für virtuelle Maschinen auswählen. Ab diesem Moment nutzt Proxmox Ceph als Speicher. Das bedeutet, dass alle VMs, die Sie auf diesem Storage anlegen, au­to­ma­tisch von der Redundanz und Aus­fall­si­cher­heit des Ceph-Clusters pro­fi­tie­ren.

Tipp

Wenn Sie später ein Ku­ber­netes Cluster auf Proxmox betreiben möchten, zahlt sich die In­te­gra­ti­on von Ceph besonders aus. Ceph kann nämlich nahtlos als per­sis­ten­ter Speicher für Ku­ber­netes genutzt werden. So pro­fi­tie­ren Ihre Container von derselben Redundanz und Hoch­ver­füg­bar­keit wie Ihre vir­tu­el­len Maschinen.

Zum Hauptmenü