Hierzu eine kurze Erklärung, vielleicht war es dir klar vielleicht auch nicht.Bisher habe ich immer Layer2+3 verwendet, mal schauen ob Layer3+4 einen Unterschied macht.
Layer2+3 bedeutet, dass zum Verteilen der Daten die MAC- und IP-Adresse genutzt wird, beide Werte sind relativ statisch und lediglich einmal pro Link bzw. LACP vergeben. Die Wahrscheinlichkeit, dass du hierbei einen Link mehr oder ausschließlich benutzt, ist relativ hoch (aber auch geringer, als wenn nur Layer2 genutzt wird). Bei Layer3+4 wird die IP-Adresse und der Port genutzt. Da jede OSD (Object Storage Daemon) mit einem eigenen Port läuft, bietet layer3+4 dir eine höhere Chance, dass die Daten besser auf die bestehenden Links verteilt werden.
Es kommt hierbei natürlich darauf an wie viele Server miteinander kommunizieren. Aber bereits bei 2 Verbindungen pro Node, 3 Nodes im Cluster und jeweils 4 OSDs hast du eine deutlich bessere Verteilung des Traffics. Womöglich macht es aktuell auch noch keinen Unterschied, weil du eh nicht die 100 G ausgelastet hast, aber spätestens dann, wenn du mal ordentlich Traffic im Cluster hast, kann das einen Unterschied machen. Daher würde ich CEPH nicht mit layer2 oder layer2+3 betreiben, sondern immer direkt mit layer3+4.
Das eine hat mit dem anderen nichts zu tun, du bekommst im no-subscription Repo exakt das gleiche Produkt wie im Enterprise. Der Unterschied liegt darin, dass du bei Enterprise eher getestete Pakete bekommst, dafür aber ggf. auch etwas länger warten musst. Ansonsten unterstützt du damit Proxmox selbst bei der Entwicklung der vielen Produkte.Bisher beschränkt sich meine Erfahrung bis maximal Quincy mit Meshed Network und No-Subscription Repo. Bei diesen Setup ist das Enterprise-Repo aktiv und es ist gutmöglich das ich mir mein ganzes "Tuning" sparen kann, da es vermutlich schon weitestgehend von Proxmox optimiert wurde.
Im CEPH selbst ist von Proxmox meines Wissens auch nichts optimiert. Es gibt womöglich gewisse Einstellungen auf OS-Ebene (aber eher nicht CEPH spezifisch), die angepasst wurden. Was aber z. B. derzeit immer noch ein Problem ist, sind die Filelimits, gerade mit CEPH und größeren VM Disks kann es sein, dass du hier ein Freeze läufst, daher erhöhe ich auch immer die Limits auf Maximum [0].
Im CEPH selbst gibt es eigentlich auch gar nicht so viel, was man wirklich tunen müsste, ich passe z. B. immer noch
osd_memory_target
[1] an und erhöhe es auf 6 GB (SSDs), bei einer NVMe bietet es sich an, hier mehr zu geben. Auch eben das Deaktivieren der Energiesparoptionen im BIOS hat einen positiven Einfluss auf die Performance. Ich hatte das mal getestet und konnte mit dem Deaktivieren der Energiesparoptionen die Latenz im Cluster ungefähr halbieren. Die Latenz spielt eine maßgebliche Rolle für die Gesamtperformance deines CEPH-Storages.Die optimale Verteilung und Anzahl an PGs spielt auch noch eine größere Rolle, du solltest nicht zu wenig, aber auch nicht zu viele PGs pro OSD haben. Ich würde dir hierfür auf jeden Fall den Balancer empfehlen [2] und ggf. auch den Autoscaler [3].
Auch deine Hardware scheint grundsätzlich erst mal geeignet zu sein für CEPH. Bei deinen Disks ist immer wichtig, dass du einen HBA hast und die einzelnen Ports auch die Leistung des Datenträgers bringen können. Wenn du z. B. eine 24 Port Expander Backplane hast und die mit 24x SSDs vollmachst, kannst du davon ausgehen, dass die Backplane die Leistung der SSDs nicht ausreizen kann. Gleiches gilt aber auch für das Netzwerk Interface, wenn du nun tatsächlich eine Backplane hast, wo wirklich nur 4 SSDs pro Channel angeschlossen sind, dein Server aber nur 2x 10 GbE hat, hat er rein rechnerisch erst mal 44 GbE zu wenig an Bandbreite (16x 500 MB/s = 8.000 MB/s x 8 = 64 GbE). Dabei muss aber auch der RAM und die CPU entsprechend dimensioniert sein, du musst prüfen, dass die Netzwerkports die Leistung auch hergeben können (Stichwort PCIe Lanes).
Im Grunde gibt es daher im CEPH selbst nicht viel zu optimieren, es sind eher die Bedingungen außenrum bzw. die Einrichtung deiner Pools selbst. Du musst also für deine Anforderung das optimale Setup finden. Manche Anforderungen oder Einstellungen dabei sind womöglich etwas theoretischer und treten vielleicht im realen Betrieb niemals auf, dennoch können die später ein Bottleneck werden. Ich würde daher immer dazu raten, dass das Setup so konzipiert ist, dass keine Komponente blocken kann.
Wirklich? Bist du dir da sicher? Ich kann mich zumindest nicht daran erinnern, dass ich das tatsächlich mal bei z. B. Arista oder Juniper tun musste.MTU konnte ich bisher nicht testen, weil dazu der Stack einmal durchgebootet werden muss, das ging bisher nicht, weil produktive Systeme drauf laufen. Ich werde dann nochmal berichten.
[0] https://forum.proxmox.com/threads/vm-disks-going-readonly.140543/#post-628986
[1] https://docs.ceph.com/en/latest/rados/configuration/bluestore-config-ref/#confval-osd_memory_target
[2] https://docs.ceph.com/en/latest/rados/operations/balancer/
[3] https://docs.ceph.com/en/latest/rados/operations/placement-groups/#autoscaling-placement-groups