2
Ceph - Was ist das?
verteilter Object Store (RADOS)
Daten werden in Objekten verteilt auf mehreren Servern
gespeichert
Block Storage (RADOS Block Device)
POSIX Filesystem (CephFS)
Block Storage und Filesystem legen Daten auch als Objekte ab
Zugriff auf Block Storage via Kernel Treiber (rbd) oder
Library (librbd)
Ceph/oeffentlich Sebastian Nickel 1.0
Ceph - Architecture
4
Ceph - Features
kein ’single point of failure’
ausgelegt auf commodity Hardware
Daten werden in Pools abgelegt
Cache Tiering (SSDs als Cache Pool)
replicated Pools und erasure coded Pools
Snapshots
schnelles Klonen
copy-on-write images von Snapshots
wichtig f¨ur ’cloud’ Images
Scrubbing
Ceph/oeffentlich Sebastian Nickel 1.0
5
Ceph - Komponenten
Ceph/oeffentlich Sebastian Nickel 1.0
6
Ceph - Komponenten
Monitore (MONs)
stellen
”
Master“ Maps des Clusterzustandes zur Verf¨ugung
werden als erstes von einem neuen Client kontaktiert
¨ubernehmen Authentifizierung
ungerade Anzahl im Cluster
¨uberpr¨ufen in regelm¨assigen Abst¨anden die OSDs
Ceph/oeffentlich Sebastian Nickel 1.0
7
Ceph - Komponenten
OSDs
zust¨andig f¨ur Objektspeicherung
ist mit Journal- und Datenspeicher verkn¨upft
haben noch double write penalty
verschwindet mit ’BlueStore’
normalerweise 1 Daemon pro Festplatte
’pingen’ andere OSDs und melden an Mons
f¨uhren scrubbing aus
Ceph/oeffentlich Sebastian Nickel 1.0
8
Ceph - Komponenten
MDS
Meta-Daten Daemon f¨ur CephFS
Eigenschaften:
def explainMDS:
raise NoKnowledgeException ("not in use")
Ceph/oeffentlich Sebastian Nickel 1.0
9
Ceph - Komponenten
RGW (Ceph Object Gateway)
bietet S3/SWIFT kompatible REST API f¨ur Ceph
umgesetzt mittels apache und mod proxy (ab apache 2.4)
besitzt eigene Userverwaltung
Daten werden in ’buckets’ organisiert
Update von Hammer oder Infernalis auf Jewel → ¨uber Umwege
Ceph/oeffentlich Sebastian Nickel 1.0
10
Ceph - Crush Design
Crush Map
wird von Mons verteilt
beschreibt hierarchischen Aufbau des Clusters
beinhaltet Regeln wo Daten f¨ur Pools abgelegt werden sollen
besitzt ’tuneables’, welche Verteilung beeinflussen
Ceph/oeffentlich Sebastian Nickel 1.0
11
Ceph - Placement Groups
Placement Groups
Abstraktionsschicht zwischen OSD und Objekten
Ceph/oeffentlich Sebastian Nickel 1.0
12
Ceph bei der Nine
damals 2 Ceph Cluster im Einsatz
1 x Rados Block Device Cluster
f¨ur virtuelle Maschinen
Standard Aufbau (HDD + SSD Journals)
1 x RGW Cluster
genutzt als Backup Cluster
Ceph/oeffentlich Sebastian Nickel 1.0
13
Neuer Ceph Cluster bei der Nine
Ausgangspunkt?
Wir wollten einen neuen Ceph Cluster (in anderem DC)
unser prim¨arer Ceph Cluster zeigte Performance Probleme
(HDD/SSD)
deep scrubs beeinflussen performance
Festplattenausfall bedeutet kurzes Performance Problem
’recovery op priority’, ’max backfills’, etc bereits gesetzt
hatten Bedenken ¨uber Performance Probleme w¨ahrend
Erweiterung
Ceph/oeffentlich Sebastian Nickel 1.0
14
Neuer Ceph Cluster bei der Nine
erster L¨osungsansatz: Cache Tiering
Vorteil: transparente Aktivierung/Deaktivierung
Tests im Staging Bereich durchgef¨uhrt
2 Hosts mit SSDs als Cache Pool konfiguriert
Crush Rules f¨ur SSD Pool erstellt
10 virtuellen Maschinen als Clients vorbereitet
Ceph/oeffentlich Sebastian Nickel 1.0
15
Neuer Ceph Cluster bei der Nine
Ablauf:
Maschinen generieren 4K IO mit fio
Aktivieren des SSD Cache Pools inmitten des Tests
Messen der Ergebnisse
Ceph/oeffentlich Sebastian Nickel 1.0
16
Neuer Ceph Cluster bei der Nine
Ergebnis nach erstem Test:
Client Berechtigungen des neuen Pools vergessen
bedeutet aber auch das alle Maschinen migriert werden
m¨ussten
Ceph/oeffentlich Sebastian Nickel 1.0
17
Neuer Ceph Cluster bei der Nine
Ergebnis nach zweitem Test:
Ceph/oeffentlich Sebastian Nickel 1.0
18
Neuer Ceph Cluster bei der Nine
Generelles Ergebnis:
Cache Tiering nur f¨ur bestimmte Einsatzzwecke
Probleme beim ’hot-pull’ einer SSD
Red Hat Ceph Storage 2.0: ’Cache tiering is now deprecated’
Wir wollen einen SSD Ceph Cluster!
Ceph/oeffentlich Sebastian Nickel 1.0
19
Neuer Ceph Cluster bei der Nine - SSD
mehrere Varianten standen zur Auswahl (SATA SSD +
NVME; nur NVME; nur SATA SSD)
gewonnen hat: only NVME Cluster
Hardware:
2 x 10 Core Intel CPU
64GB RAM
2 x Intel SSD DC 3510 f¨ur OS
4x Intel SSD DC P3600 NVME Disks
4 x 10G NIC
Ceph/oeffentlich Sebastian Nickel 1.0
20
Neuer Ceph Cluster bei der Nine - Benchmark
jede Komponente des Clusters mit fio benchmarken
immer gleiche Testbedingungen
mehrere Testl¨aufe durchf¨uhren und Ergebnis mitteln
Ceph/oeffentlich Sebastian Nickel 1.0
21
Neuer Ceph Cluster bei der Nine - Benchmark
fio auf purem NVME device (psync, iodepth=1):
Test/Blocksize 4K 8K 16K 2048K 4096K
Serial Write 81692 / 319.11 66387 / 518.65 47982 / 749.72 820 / 1641.7 418 / 1672.2
Serial Read 84176 / 328 77399 / 604.68 59642 / 931.91 968 / 1936.1 540 / 2163.3
Rand. Write 82331 / 321 66796 / 521.84 49617 / 775.26 820 / 1640.7 416 / 1667.7
Rand. Read 10746 / 41 8753 / 68.38 6758 / 105.6 966 / 1933.6 544 / 2179.7
Einheit: IOPS / MB per s
fio auf purem NVME device (libaio, iodepth=64):
Test/Blocksize 4K 8K 16K 2048K 4096K
Serial Write 406189 / 1586.7 218887 / 1710.7 111092 / 1735.9 892 / 1789.2 446 / 1791.2
Serial Read 317558 / 1240.5 249434 / 1948.8 157287 / 2457.7 1283 / 2571.6 657 / 2638.3
Rand. Write 314276 / 1227.7 192417 / 1503.3 104569 / 1633.1 892 / 1787.3 445 / 1788.1
Rand. Read 351525 / 1373.2 246589 / 1926.6 138682 / 2166.1 1248 / 2501.5 648 / 2605.5
Einheit: IOPS / MB per s
Ceph/oeffentlich Sebastian Nickel 1.0
22
Neuer Ceph Cluster bei der Nine - Benchmark
weitere Tests welche man ausf¨uhren kann
ceph tell osd.<number> bench
rados bench -p <pool> <dauer> write
iperf
fio mit rbd engine
Ceph/oeffentlich Sebastian Nickel 1.0
23
Neuer Ceph Cluster bei der Nine - iperf
iperf Tests auf gebondetem Interface mit VLAN tags
maximal 2.8 Gbps zwischen Compute Node und Ceph Node
MTU variiert → 4.8 Gbps
nur bonding ohne VLAN oder kein bonding mit VLAN → 9.x
Gbps
bonding + VLAN ohne Switch → 9.x Gbps
Ergebnis: kein VLAN
Ceph/oeffentlich Sebastian Nickel 1.0
24
Neuer Ceph Cluster bei der Nine - tunings
CPUs immer auf 100% der max. Taktfrequenz laufen lassen
OSDs auf CPUs pinnen
rq affinity der NVME devices setzen
2 OSDs pro NVME device
Ceph/oeffentlich Sebastian Nickel 1.0
25
Neuer Ceph Cluster bei der Nine - fio mit rbd
fio mit rbd engine auf Image
Test/Blocksize 4K 8K 16K 2048K 4096K
Serial Write 26791 IOPS 24232 IOPS 28086 IOPS 283 IOPS / 566.39 MB/s 142 IOPS / 571.36 MB/s
Serial Read 2147 IOPS 2108 IOPS 1960 IOPS 281 IOPS / 563.46 MB/s 176 IOPS / 705.55 MBs
Rand. Write 12408 IOPS 12369 IOPS 13370 IOPS 523 IOPS / 1047.2 MB/s 255 IOPS / 1020.1 MB/s
Rand. Read 1512 IOPS 1442 IOPS 1451 IOPS 272 IOPS / 544.88 MB/s 175 IOPS / 703.5 MB/s
fio innerhalb einer VM (psync, iodepth=1)
Test/Blocksize 4K 8K 16K 2048K 4096K
Serial Write 14686 IOPS 14038 IOPS 12407 IOPS 318 IOPS / 636.95 MB/s 128 IOPS / 515.33 MB/s
Serial Read 1719 IOPS 1645 IOPS 1546 IOPS 220 IOPS / 440.58 MB/s 104 IOPS / 416.01 MB/s
Rand. Write 9377 IOPS 9111 IOPS 8900 IOPS 323 IOPS / 646.10 MB/s 122 IOPS / 488.29 MB/s
Rand. Read 1401 IOPS 1375 IOPS 1323 IOPS 222 IOPS / 444.64 MB/s 106 IOPS / 427.72 MB/s
Ceph/oeffentlich Sebastian Nickel 1.0
26
Neuer Ceph Cluster bei der Nine - RedHat Cluster Check
RedHat Cluster Check durchf¨uhren lassen
interessante Ergebnisse:
es gibt noch keine Recommendations f¨ur NVME Cluster
alle NVMEs sind via PCIe Bus auf CPU1 verbunden, alle NICs
auf CPU0
Crush tunables nicht optimal
RBD client cache size hatte unit extensions (MB)
Ceph/oeffentlich Sebastian Nickel 1.0
27
Neuer Ceph Cluster bei der Nine - Fazit
eine VM kann den Speed der NVME devices nicht voll nutzen
Parallelisierung bei NVME ist wichtig
es gibt noch keine grossen Erfahrungen damit
Cluster Check durch externe Firma sinnvoll
Ceph/oeffentlich Sebastian Nickel 1.0
28
Fragen?
Ceph/oeffentlich Sebastian Nickel 1.0
29
Danke?
Ceph/oeffentlich Sebastian Nickel 1.0

TechTalkThursday 27.10.2016: Ceph im NVME Cluster

  • 2.
    2 Ceph - Wasist das? verteilter Object Store (RADOS) Daten werden in Objekten verteilt auf mehreren Servern gespeichert Block Storage (RADOS Block Device) POSIX Filesystem (CephFS) Block Storage und Filesystem legen Daten auch als Objekte ab Zugriff auf Block Storage via Kernel Treiber (rbd) oder Library (librbd) Ceph/oeffentlich Sebastian Nickel 1.0
  • 3.
  • 4.
    4 Ceph - Features kein’single point of failure’ ausgelegt auf commodity Hardware Daten werden in Pools abgelegt Cache Tiering (SSDs als Cache Pool) replicated Pools und erasure coded Pools Snapshots schnelles Klonen copy-on-write images von Snapshots wichtig f¨ur ’cloud’ Images Scrubbing Ceph/oeffentlich Sebastian Nickel 1.0
  • 5.
  • 6.
    6 Ceph - Komponenten Monitore(MONs) stellen ” Master“ Maps des Clusterzustandes zur Verf¨ugung werden als erstes von einem neuen Client kontaktiert ¨ubernehmen Authentifizierung ungerade Anzahl im Cluster ¨uberpr¨ufen in regelm¨assigen Abst¨anden die OSDs Ceph/oeffentlich Sebastian Nickel 1.0
  • 7.
    7 Ceph - Komponenten OSDs zust¨andigf¨ur Objektspeicherung ist mit Journal- und Datenspeicher verkn¨upft haben noch double write penalty verschwindet mit ’BlueStore’ normalerweise 1 Daemon pro Festplatte ’pingen’ andere OSDs und melden an Mons f¨uhren scrubbing aus Ceph/oeffentlich Sebastian Nickel 1.0
  • 8.
    8 Ceph - Komponenten MDS Meta-DatenDaemon f¨ur CephFS Eigenschaften: def explainMDS: raise NoKnowledgeException ("not in use") Ceph/oeffentlich Sebastian Nickel 1.0
  • 9.
    9 Ceph - Komponenten RGW(Ceph Object Gateway) bietet S3/SWIFT kompatible REST API f¨ur Ceph umgesetzt mittels apache und mod proxy (ab apache 2.4) besitzt eigene Userverwaltung Daten werden in ’buckets’ organisiert Update von Hammer oder Infernalis auf Jewel → ¨uber Umwege Ceph/oeffentlich Sebastian Nickel 1.0
  • 10.
    10 Ceph - CrushDesign Crush Map wird von Mons verteilt beschreibt hierarchischen Aufbau des Clusters beinhaltet Regeln wo Daten f¨ur Pools abgelegt werden sollen besitzt ’tuneables’, welche Verteilung beeinflussen Ceph/oeffentlich Sebastian Nickel 1.0
  • 11.
    11 Ceph - PlacementGroups Placement Groups Abstraktionsschicht zwischen OSD und Objekten Ceph/oeffentlich Sebastian Nickel 1.0
  • 12.
    12 Ceph bei derNine damals 2 Ceph Cluster im Einsatz 1 x Rados Block Device Cluster f¨ur virtuelle Maschinen Standard Aufbau (HDD + SSD Journals) 1 x RGW Cluster genutzt als Backup Cluster Ceph/oeffentlich Sebastian Nickel 1.0
  • 13.
    13 Neuer Ceph Clusterbei der Nine Ausgangspunkt? Wir wollten einen neuen Ceph Cluster (in anderem DC) unser prim¨arer Ceph Cluster zeigte Performance Probleme (HDD/SSD) deep scrubs beeinflussen performance Festplattenausfall bedeutet kurzes Performance Problem ’recovery op priority’, ’max backfills’, etc bereits gesetzt hatten Bedenken ¨uber Performance Probleme w¨ahrend Erweiterung Ceph/oeffentlich Sebastian Nickel 1.0
  • 14.
    14 Neuer Ceph Clusterbei der Nine erster L¨osungsansatz: Cache Tiering Vorteil: transparente Aktivierung/Deaktivierung Tests im Staging Bereich durchgef¨uhrt 2 Hosts mit SSDs als Cache Pool konfiguriert Crush Rules f¨ur SSD Pool erstellt 10 virtuellen Maschinen als Clients vorbereitet Ceph/oeffentlich Sebastian Nickel 1.0
  • 15.
    15 Neuer Ceph Clusterbei der Nine Ablauf: Maschinen generieren 4K IO mit fio Aktivieren des SSD Cache Pools inmitten des Tests Messen der Ergebnisse Ceph/oeffentlich Sebastian Nickel 1.0
  • 16.
    16 Neuer Ceph Clusterbei der Nine Ergebnis nach erstem Test: Client Berechtigungen des neuen Pools vergessen bedeutet aber auch das alle Maschinen migriert werden m¨ussten Ceph/oeffentlich Sebastian Nickel 1.0
  • 17.
    17 Neuer Ceph Clusterbei der Nine Ergebnis nach zweitem Test: Ceph/oeffentlich Sebastian Nickel 1.0
  • 18.
    18 Neuer Ceph Clusterbei der Nine Generelles Ergebnis: Cache Tiering nur f¨ur bestimmte Einsatzzwecke Probleme beim ’hot-pull’ einer SSD Red Hat Ceph Storage 2.0: ’Cache tiering is now deprecated’ Wir wollen einen SSD Ceph Cluster! Ceph/oeffentlich Sebastian Nickel 1.0
  • 19.
    19 Neuer Ceph Clusterbei der Nine - SSD mehrere Varianten standen zur Auswahl (SATA SSD + NVME; nur NVME; nur SATA SSD) gewonnen hat: only NVME Cluster Hardware: 2 x 10 Core Intel CPU 64GB RAM 2 x Intel SSD DC 3510 f¨ur OS 4x Intel SSD DC P3600 NVME Disks 4 x 10G NIC Ceph/oeffentlich Sebastian Nickel 1.0
  • 20.
    20 Neuer Ceph Clusterbei der Nine - Benchmark jede Komponente des Clusters mit fio benchmarken immer gleiche Testbedingungen mehrere Testl¨aufe durchf¨uhren und Ergebnis mitteln Ceph/oeffentlich Sebastian Nickel 1.0
  • 21.
    21 Neuer Ceph Clusterbei der Nine - Benchmark fio auf purem NVME device (psync, iodepth=1): Test/Blocksize 4K 8K 16K 2048K 4096K Serial Write 81692 / 319.11 66387 / 518.65 47982 / 749.72 820 / 1641.7 418 / 1672.2 Serial Read 84176 / 328 77399 / 604.68 59642 / 931.91 968 / 1936.1 540 / 2163.3 Rand. Write 82331 / 321 66796 / 521.84 49617 / 775.26 820 / 1640.7 416 / 1667.7 Rand. Read 10746 / 41 8753 / 68.38 6758 / 105.6 966 / 1933.6 544 / 2179.7 Einheit: IOPS / MB per s fio auf purem NVME device (libaio, iodepth=64): Test/Blocksize 4K 8K 16K 2048K 4096K Serial Write 406189 / 1586.7 218887 / 1710.7 111092 / 1735.9 892 / 1789.2 446 / 1791.2 Serial Read 317558 / 1240.5 249434 / 1948.8 157287 / 2457.7 1283 / 2571.6 657 / 2638.3 Rand. Write 314276 / 1227.7 192417 / 1503.3 104569 / 1633.1 892 / 1787.3 445 / 1788.1 Rand. Read 351525 / 1373.2 246589 / 1926.6 138682 / 2166.1 1248 / 2501.5 648 / 2605.5 Einheit: IOPS / MB per s Ceph/oeffentlich Sebastian Nickel 1.0
  • 22.
    22 Neuer Ceph Clusterbei der Nine - Benchmark weitere Tests welche man ausf¨uhren kann ceph tell osd.<number> bench rados bench -p <pool> <dauer> write iperf fio mit rbd engine Ceph/oeffentlich Sebastian Nickel 1.0
  • 23.
    23 Neuer Ceph Clusterbei der Nine - iperf iperf Tests auf gebondetem Interface mit VLAN tags maximal 2.8 Gbps zwischen Compute Node und Ceph Node MTU variiert → 4.8 Gbps nur bonding ohne VLAN oder kein bonding mit VLAN → 9.x Gbps bonding + VLAN ohne Switch → 9.x Gbps Ergebnis: kein VLAN Ceph/oeffentlich Sebastian Nickel 1.0
  • 24.
    24 Neuer Ceph Clusterbei der Nine - tunings CPUs immer auf 100% der max. Taktfrequenz laufen lassen OSDs auf CPUs pinnen rq affinity der NVME devices setzen 2 OSDs pro NVME device Ceph/oeffentlich Sebastian Nickel 1.0
  • 25.
    25 Neuer Ceph Clusterbei der Nine - fio mit rbd fio mit rbd engine auf Image Test/Blocksize 4K 8K 16K 2048K 4096K Serial Write 26791 IOPS 24232 IOPS 28086 IOPS 283 IOPS / 566.39 MB/s 142 IOPS / 571.36 MB/s Serial Read 2147 IOPS 2108 IOPS 1960 IOPS 281 IOPS / 563.46 MB/s 176 IOPS / 705.55 MBs Rand. Write 12408 IOPS 12369 IOPS 13370 IOPS 523 IOPS / 1047.2 MB/s 255 IOPS / 1020.1 MB/s Rand. Read 1512 IOPS 1442 IOPS 1451 IOPS 272 IOPS / 544.88 MB/s 175 IOPS / 703.5 MB/s fio innerhalb einer VM (psync, iodepth=1) Test/Blocksize 4K 8K 16K 2048K 4096K Serial Write 14686 IOPS 14038 IOPS 12407 IOPS 318 IOPS / 636.95 MB/s 128 IOPS / 515.33 MB/s Serial Read 1719 IOPS 1645 IOPS 1546 IOPS 220 IOPS / 440.58 MB/s 104 IOPS / 416.01 MB/s Rand. Write 9377 IOPS 9111 IOPS 8900 IOPS 323 IOPS / 646.10 MB/s 122 IOPS / 488.29 MB/s Rand. Read 1401 IOPS 1375 IOPS 1323 IOPS 222 IOPS / 444.64 MB/s 106 IOPS / 427.72 MB/s Ceph/oeffentlich Sebastian Nickel 1.0
  • 26.
    26 Neuer Ceph Clusterbei der Nine - RedHat Cluster Check RedHat Cluster Check durchf¨uhren lassen interessante Ergebnisse: es gibt noch keine Recommendations f¨ur NVME Cluster alle NVMEs sind via PCIe Bus auf CPU1 verbunden, alle NICs auf CPU0 Crush tunables nicht optimal RBD client cache size hatte unit extensions (MB) Ceph/oeffentlich Sebastian Nickel 1.0
  • 27.
    27 Neuer Ceph Clusterbei der Nine - Fazit eine VM kann den Speed der NVME devices nicht voll nutzen Parallelisierung bei NVME ist wichtig es gibt noch keine grossen Erfahrungen damit Cluster Check durch externe Firma sinnvoll Ceph/oeffentlich Sebastian Nickel 1.0
  • 28.
  • 29.