Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:ceph-storage-cluster [2021/11/27 10:55] – [Administrative Tätigkeiten] st | software:ceph-storage-cluster [2024/03/11 23:25] (aktuell) – [Benchmarks] st | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== ceph storage cluster ====== | ====== ceph storage cluster ====== | ||
- | Ceph ist eine in "die Breite" | + | Ceph ist eine in "die Breite" |
- | Alle folgenden Zugriffsmethoden werden intern auf Objekte abgebildet. | + | |
* **librados**: | * **librados**: | ||
Zeile 11: | Zeile 10: | ||
:!: Diese Doku basiert auf Ceph 16.x (pacific) (siehe [[https:// | :!: Diese Doku basiert auf Ceph 16.x (pacific) (siehe [[https:// | ||
- | Produkte wie [[Proxmox]] bieten eine Integration von Ceph (Server und Client). | + | Produkte wie **[[software: |
Zeile 69: | Zeile 68: | ||
**Was man allgemein wissen muss**: | **Was man allgemein wissen muss**: | ||
* Lesezugriffe werden auf dem primär (per CRUSH MAP) zuständigen OSD durchgeführt, | * Lesezugriffe werden auf dem primär (per CRUSH MAP) zuständigen OSD durchgeführt, | ||
- | * nur wenn kein bluestore benutzt wird: journaling führt zur Halbierung der I/O wenn dafür kein extra Gerät gewählt wurde (zuerst wird sogar mit O_DIRECT and O_DSYNC geschrieben), | + | * nur wenn kein bluestore benutzt wird: journaling führt zur Halbierung der I/O wenn dafür kein extra Gerät gewählt wurde (zuerst wird sogar mit O_DIRECT and O_DSYNC geschrieben), |
* scrubbing führt zu Leistungseinbrüchen, | * scrubbing führt zu Leistungseinbrüchen, | ||
# 1 day: 86400 | # 1 day: 86400 | ||
Zeile 88: | Zeile 87: | ||
* [[http:// | * [[http:// | ||
* über CRUSH-Rules kann die geforderte örtliche Verteilung (Datenzentren, | * über CRUSH-Rules kann die geforderte örtliche Verteilung (Datenzentren, | ||
+ | |||
+ | **Latenz**: Da die Daten über Netzwerk, CPU, RAM des lokalen und entfernter Rechner geschleust werden müssen, ist die Leistung nicht mit lokalen Datenträgern vergleichbar. Insbesondere die Latenz steigt deutlich an was für bestimmte Zeitkritische Applikationen (z.B. Datenbanken) problematisch sein kann. Insbesondere die Ausreißer nach oben können problematisch sein. | ||
+ | Möglicherweise sind | ||
+ | |||
+ | '' | ||
+ | |||
+ | nativ lokal möglich: | ||
+ | * NVMe + SSD (lokal): ~0,25ms | ||
+ | * disk 7200rpm (lokal): 4,17ms | ||
+ | * disk 5400rpm (lokal): 5,56ms | ||
+ | |||
+ | siehe auch: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
**Anforderungen allgemein**: | **Anforderungen allgemein**: | ||
Zeile 118: | Zeile 132: | ||
* [[https:// | * [[https:// | ||
+ | ==== Hyperconverged setup ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Vorteile: | ||
+ | - einfacheres setup | ||
+ | - weniger hardware nötig | ||
+ | |||
+ | Nachteile: | ||
+ | - rebalance frisst RAM und CPU | ||
+ | - keine Trennung zwischen Storage und Virtualisierung | ||
==== Benchmarks ==== | ==== Benchmarks ==== | ||
+ | |||
+ | [[https:// | ||
rados bench: Installation aus Paketquelle: | rados bench: Installation aus Paketquelle: | ||
Zeile 132: | Zeile 159: | ||
===== Administrative Tätigkeiten ===== | ===== Administrative Tätigkeiten ===== | ||
+ | |||
+ | ==== wichtige OSD Befehle ==== | ||
+ | |||
+ | Bei geplante Wartungen (reboots, upgrades, ...) hat Ceph vielfältige Optionen. | ||
^ ceph osd set/unset ... ^ Bedeutung ^ | ^ ceph osd set/unset ... ^ Bedeutung ^ | ||
Zeile 138: | Zeile 169: | ||
| nodown | OSD-Fehler werden ignoriert (keine Markierung als down) | | | nodown | OSD-Fehler werden ignoriert (keine Markierung als down) | | ||
| noin | OSDs die vorher " | | noin | OSDs die vorher " | ||
- | | noout | nodes werden nicht aus dem Cluster entfernt (z.B. für reboots) | | + | | **noout** | nodes werden nicht aus dem Cluster entfernt (z.B. für reboots) | |
- | | norebalance | rebalance der Daten findet nicht statt (z.B. für Wartung) | | + | | **norebalance** | rebalance der Daten findet nicht statt (z.B. für Wartung) | |
| norecover | | | | norecover | | | ||
| noscrub | scrubbing temporär deaktivieren | | | noscrub | scrubbing temporär deaktivieren | | ||
| notieragent | cache tiering wird ausgesetzt | | | notieragent | cache tiering wird ausgesetzt | | ||
| noup | OSD können nicht mehr gestartet werden (werden nicht in den pool aufgenommen) | | | noup | OSD können nicht mehr gestartet werden (werden nicht in den pool aufgenommen) | | ||
- | | pause | I/O-Zugriff wird pausiert, kein Lese- und Schreibzugriff! | | + | | pause | I/O-Zugriff wird pausiert, kein Lese- und Schreibzugriff, client bleiben im blocked-Status hängen |
- | ==== Wartungsmodus ==== | + | |
- | + | ||
- | Bei geplante Wartungen (reboots, ...) kann der Cluster in einen " | + | |
- | + | ||
- | **Anschalten**: | + | |
- | <code bash> | + | |
- | ceph osd set norebalance | + | |
- | </ | + | |
- | **Ausschalten**: | + | |
- | <code bash> | + | |
- | ceph osd unset norebalance</ | + | |
==== Dienste verwalten ==== | ==== Dienste verwalten ==== | ||
Zeile 169: | Zeile 189: | ||
sudo systemctl restart ceph-mds.target | sudo systemctl restart ceph-mds.target | ||
</ | </ | ||
- | |||
- | ==== scrubbing temporär deaktivieren ==== | ||
- | |||
- | An: | ||
- | <code bash> | ||
- | ceph osd set noscrub | ||
- | ceph osd set nodeep-scrub | ||
- | </ | ||
- | |||
- | Aus: | ||
- | <code bash> | ||
- | ceph osd unset noscrub | ||
- | ceph osd unset nodeep-scrub | ||
- | </ | ||
- | |||
- | |||
- | |||
==== iSCSI Zugriff ==== | ==== iSCSI Zugriff ==== | ||
Zeile 205: | Zeile 208: | ||
<code bash> | <code bash> | ||
+ | Für Rados: | ||
+ | <code bash> | ||
+ | rados lspools | ||
+ | rados list-inconsistent-pg {POOL} | ||
+ | rados list-inconsistent-obj {placement-group-ID} --format=json-pretty | ||
+ | </ | ||
===== Monitoring ===== | ===== Monitoring ===== | ||
Zeile 219: | Zeile 227: | ||
==== Zabbix-Integration | ==== Zabbix-Integration | ||
+ | |||
+ | [[https:// | ||
Konfiguration (gilt global und wird vom MGR ausgeführt): | Konfiguration (gilt global und wird vom MGR ausgeführt): | ||
Zeile 520: | Zeile 530: | ||
Beispiel OSD.0 entfernen: | Beispiel OSD.0 entfernen: | ||
<code bash> | <code bash> | ||
+ | ceph osd down 10 | ||
+ | systemctl stop ceph-osd@10 | ||
ceph osd purge 0 --yes-i-really-mean-it | ceph osd purge 0 --yes-i-really-mean-it | ||
- | ceph osd crush remove osd.0 | + | # nicht mehr nötig: |
- | ceph auth del osd.0 | + | # ceph osd crush remove osd.0 |
+ | # ceph auth del osd.0 | ||
# " | # " | ||
# oder: | # oder: | ||
Zeile 528: | Zeile 541: | ||
</ | </ | ||
+ | wenn das Gerät dann immer noch busy ist: | ||
+ | <code bash> | ||
+ | ls / | ||
+ | partprobe $DISK | ||
+ | sgdisk --zap-all $DISK | ||
+ | </ | ||
+ | [[https:// | ||
==== Cluster Einstellungen ==== | ==== Cluster Einstellungen ==== | ||
Zeile 988: | Zeile 1008: | ||
<code bash> | <code bash> | ||
- | List pools: <code bash> | + | Für ceph-fs: |
+ | <code bash> | ||
+ | ceph osd pool create cephfs_data | ||
+ | ceph osd pool create cephfs_metadata | ||
+ | ceph fs new $pool1 cephfs_metadata cephfs_data | ||
+ | </ | ||
+ | |||
+ | **List pools**: <code bash> | ||
< | < | ||
device_health_metrics | device_health_metrics | ||
Zeile 1262: | Zeile 1289: | ||
<code bash> | <code bash> | ||
+ | |||
+ | |||
+ | ==== RGW (S3) ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||