In dieser Anleitung erkläre ich die Einrichtung von Ceph „Luminous“ unter Proxmox VE 5.2. Hintergrund ist ein Test zur Nutzung von Proxmox mit zentralem Storage in einer Testumgebung.
Zuvor habe ich einen 3 Node Proxmox VE Cluster zu Testzwecken erstellt. Ceph Luminous ist die aktuelle Stable Version 12.1.2. Zuvor gab es Kraken 11.x und Jewel 10.x.. Seit VE 5.x ist die Einrichtung und Konfiguration einfacher geworden und einige Schritten lassen sich nun in der WebGUI erledigen.
Grundsätzlich ist Ceph ein verteiltes Dateisystem über mehrere Nodes. Dies entspricht der Begrifflichkeit eines Cluster.
Empfehlungen Ceph Storage
- damit der Ceph Storage schnell genug funktioniert, bietet es sich an ein eigenes Netzwerk für den Storage zu erstellen
- das Netzwerk sollte min 10GBit schnell sein (MTU9000)
- schnelle SSDs sind ebenfalls zu empfehlen, ebenso wie eine extra SSD für das Journal
Begrifflichkeiten
Rados Block Device (RBD) und OSD
Oder auch Object-Storage genannt, ermöglicht unter Proxmox Images im RAW-Format zu speichern. Hierbei stellt Rados den eigentlichen Object Store unter Ceph dar. In ihm werden die Objekte abgelegt. Hier spielen weitere Komponente wie das Object Storage Node (OSN) und das Object Storage Device (OSD) sowie das OSD Journal eine wichtige Rolle. Alle zusammen bilden dann den eigentlichen Object Storage unter Ceph und ermögilchen die intelligente und automatische verwaltete Speicherung und Verteilung von Daten.
Ceph Monitor
Dieser ist ein Daemon / Dienst der die Aufgabe hat die Cluster Map aufzubauen und zu verwalten. In der Regel besteht ein Cluster aus einer ungeraden Anzahl an Nodes und Monitoren. Von diesen muss min. die Hälfte laufen, ansonten ist der Cluster nicht funktional und der Zugriff der Clients nicht möglich.
Ceph Bluestore
Bluestore ist das neue Backend in Ceph Luminous. Es wurde hinsichtlich der Performance deutlich gegenüber seinem Vorgänger verbessert. Er soll bis zu 2x schnellere Schreibvoränge ermöglichen, führt full data checksumming aus und hat eine Built-In-compression. Mehr Infos unter: https://ceph.com/community/new-luminous-bluestore/
Ceph Pools
Pools sind in Ceph logische Partitionen zum Speichern von Objekten. Sie bestehen aus einer definierten Anzahl an PGS.
Crush Map
Ist eine Abkürzung und steht für Controlled Replication under scalable Hashing. Es ist ein Algorithmus der die Verteilung der Daten auf die OSDs steuert. Bei der Berechnung und Platzierung der Objekte setzt es auf eine pseudo-zufällige, deterministische Berechnung. Vorteil ist die genaue Berechnung des Ortes von Objekten im Cluster durch jeden Node und Client. Weiterhin ist der Aufwand für Metadaten nidriger als z.B. bei Lookup-basierten Storageberechnungen. Crush kann mittles Regeln konfiguriert werden, was auch ungewöhnlich ist.
Vorbereitung
- Proxmox VE wurde als Cluster installiert
- extra zuvor gelöschte Festplatten (Enterprise SSD / NVme)
- extra Storage Netzwerk für Ceph wurde eingerichtet
# /etc/network/interfaces
auto enp2s0
iface enp2s0 inet static
address 172.16.0.10 # 1-Node .20 2-Node .30 3-Node
netmask 255.255.255.0
Proxmox VE 5.2 Ceph Installation
- als erstes melde ich mic an einem Node per WebGUI an
- nun wähle ich den ersten Node aus der Serverliste aus und rufe die Shell auf
- dort installiere ich die aktuell unterstützte Version von Ceph (ca. 190MB)
node1# pveceph install --version luminous
- genauso verfahre ich auf allen weiteren Nodes im Cluste:
node2# pveceph install --version luminous
node3# pveceph install --version luminous
- damit wurden auch die Paketquellen für Ceph, die sources.list.d/ceph.list, erstellt
- als nächstes wird die Konfiguration für Ceph in der Konsole erstellt:
node1# pveceph init --network 172.16.0.0/24
- nun kann der erste Ceph Monitor inzugefügt werden:
#node1 pveceph createmon
- weiter geht es nun in der Proxmox WebGUI unter dem Menü Ceph
Proxmox VE 5 Ceph Menü - nun werden auf den anderen 2 Nodes ebenfalls der Ceph Monitors und der Manager hinzugefügt
- per WebGUI über den Node -> Menü Ceph -> Monitor -> Button Erstellen
- oder per Shell
#node2 pveceph createmon
#node3 pveceph createmon
- sollte ein Node ohne Monitor eingesetzt werden und lediglich für OSD, dann kann der mittels
#nod4 pveceph install
hinzugefügt werden - nun wird der Ceph Manager erstellt, hierfür ist mindestens ein Node notwendig, besser wäre der Manager auf allen Nodes:
#node1 pveceph createmgr
#node2 pveceph createmgr
#node3 pveceph createmgr
- weiter gehte es mit den OSD Disk,
Achtung alle Daten auf den ausgewählten Festplatten werden gelöscht
- die OSD Disk kann mittels WebGUI oder per Bash angelegt werden
- OSD per WebGUI auf jedem Node
- OSD per Bash auf jedem Node
# pveceph createosd /dev/sdX -bluestore 0
- OSD per Bash mit extra Disk für das Journal auf entsprechenden Node
# pveceph createosd /dev/sdX -journal_dev /dev/sdY -bluestore 0
Aus Performancegründen wird eine Extra SSD für das Journal empfohlen. Die Partition muss GPT formatiert sein und ist aktuell durch Proxmox auf 5GB limitiert.
- als nächstes wird ein Ceph Pool erstellt
- der Defaultwert ist für 2-6 Disks ausgelegt, wobei Ceph ein Health_Warning anzeigt wenn zu wenig oder zu viele Placement Groups (PG) im Cluster sind
- einen Kalkulator für die PGs gibt es unter: http://ceph.com/pgcalc/
- per WebGUI
- unter Menü von Ceph auf Pools klicken und dort auf auf den Button „Erstellen„
- hier nun einen Namen, die Größe (3 OSD), die minimale Größe (2), die Crash Rule (replicated_rule), die pg_num und die Option zum hinzufügen als Storage für Container und Disk-Images am besten auch gleich aktivieren
- per Bash
# pveceph createpool <name>
Achtung später können die Placement Groups im Pool nur vergrößert aber nicht mehr verkleinert werden. Daher ist die Kalkulation und Konfiguration im Vorfelde wichtig.
Das ist es im gröbsten. Das Thema ist umfassen, daher die Empfehlung die entsprechenden Doks zu lesen.
Ceph Benchmark
Ein tolle Benchmark ist unter https://www.proxmox.com/en/downloads/item/proxmox-ve-ceph-benchmark zu finden(
). Hier wird auch deutlich, dass Ceph als Storage mit nur 1GB Netzwerkanbindung kaum Sinn macht.# rados -p <ceph-pool-name> bench 10 write --no-cleanup
Total time run: 10.746617
Total writes made: 253
Write size: 4194304
Object size: 4194304
Bandwidth (MB/sec): 94.1692
Stddev Bandwidth: 9.27601
Max bandwidth (MB/sec): 108
Min bandwidth (MB/sec): 72
Average IOPS: 23
Stddev IOPS: 2
Max IOPS: 27
Min IOPS: 18
Average Latency(s): 0.677425
Stddev Latency(s): 0.572964
Max latency(s): 2.05175
Min latency(s): 0.130149
# rados -p <ceph-pool-name> bench 10 seq
Total time run: 4.597503
Total reads made: 253
Read size: 4194304
Object size: 4194304
Bandwidth (MB/sec): 220.119
Average IOPS: 55
Stddev IOPS: 21
Max IOPS: 90
Min IOPS: 47
Average Latency(s): 0.28152
Max latency(s): 1.21331
Min latency(s): 0.0191976
Fehler – Ceph Install remove Proxmox-VE
Sollte bei der Installation von Ceph, Proxmox deinstalliert werden, dann:
- hast du keine Enterprise Subscription
- oder der Eintrag für die No-Subscription Repository ist inkorrekt
# rm /etc/apt/sources.list.d/pve-enterprise.list
deb http://ftp.debian.org/debian stretch main contrib # PVE pve-no-subscription repository provided by proxmox.com, # NOT recommended for production use deb http://download.proxmox.com/debian/pve stretch pve-no-subscription # security updates deb http://security.debian.org stretch/updates main contrib
# apt-get update && apt-get upgrade
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_package_repositories
Fehler – Ceph OSD Festplatte wird nicht erkannt
Ceph nutzt für den OSD die gesamte Festplatte, also keine Partition. Weiterhin sollte die Festplatte vorher gelöscht und von allen Partition befreit werden: # dd if=/dev/zero of=/dev/sd[X] bs=1M count=200
.
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.