Egal in welchem Pool ich Daten ablege, die verfügbare Kapazität sinkt bei beiden Pools.
Genau das ist doch aktuell auch bereits vorhanden. Nur mit dem Unterschied, dass die Anzeige genau auf den Pool passt und damit deutlich Aussagekräftiger ist.
In jedem Fall ist es dann egal wie viele Pools und Konstellationen ich auf dem Speicher verwende, es stimmt immer und es ist nachvollziehbar berechenbar.
Und damit ist doch die Anzeige pro Pool (also Teileinheit des Storage) faktisch falsch. Der 5/3 Pool aus deinem Beispiel kann maximal 20 TB belegen, wenn bereits 5 TB drin sind, dürfte es noch maximal 15 TB sein. Ändert man es nun wie von dir gewünscht, würden aus den 15 TB plötzlich 95 TB werden. Also denkt der Kunde, cool kann ich ja noch locker 20 TB rein knallen, dann tut er das und mit jedem TB mehr an Daten reduziert sich der verfügbare Speicherplatz um das 5-fache.
Wie willst du dem Kunden nun erklären, dass seine 20 TB an Daten den kompletten CEPH gerade zum Stillstand gebracht haben, obwohl doch 95 TB frei angezeigt waren? Wie erkläst du dem Kunden nun, dass bei dem Pool A der gesehen Speicherplatz durch 3 geteilt werden muss, während es bei Pool B aber 5 ist und bei Pool C nur noch 2? Wäre es hier nicht cooler, die Berechnung funktioniert genau so wie sie es gerade tut und der Kunde sieht ganz genau, dass in seinen Replica 5 Pool definitiv keine 20 TB mehr rein passen und er versucht es erst gar. Du bekommst damit nicht in der Nacht um 3 Uhr einen Anruf, dass die gesamte Produktion steht und plötzlich die Sonntagszeitung nicht mehr gedruckt werden kann.
Was man hier nicht verhindern kann, ist der Umstand, dass sich die Pools eben gegenseitig den Speicherplatz klauen. Nur weil eben im 5/3 Pool jetzt noch 15 TB passen, müssen diese nicht in 12 Stunden immer noch rein gehen.
Der Schlüssel ist, nicht die theoretische Speicherkapazität je nach replica zu verwenden, sondern stets mit dem RAW wert zu arbeiten und dann für den jeweiligen Anwendungsfall poolbezogen den verfügbaren Speicher selbst zu ermitteln.
Genau das passiert doch schon pro Pool. Deshalb sinkt doch auch die ober Grenze, wenn der CEPH voller wird.
Ist auch im Monitoring erheblich einfacher zu überwachen.
Ich kann leider immer noch nicht nachvollziehen, warum man hier so viel Wert auf die exakte Berechnung der Poolgröße legt. Es spielt doch gar keine Rolle ob Pool A noch 20 TB frei hätte, wenn der CEPH am Limit ist, dann steht in der Regel alles weil typischerweise kein CEPH so groß ist, dass es nicht nicht betroffene OSD bzw. PGs gibt.
Im CEPH betrachtet man die Metrik des freien Gesamtspeicherplatzes (Datacenter -> CEPH), die des einzelnen Pools spielt dabei keine Rolle, weil eben zu variable. Wenn der CEPH bei 85 % ist, dann ist der Cluster Nearfull, ist er bei 95 % ist er bei full und geht in den read-only - das sollte das Ziel sein es zu verhindern. Da kannst du so viel theoretischen freien Speicherplatz in deinen Pools haben wie du willst, wenn auch nur eine OSD bei 95 % ist, ist feierabend im Cluster (mag im Einzelfall nicht stimmen, aber bei 99 % der Cluster dürfte das zutrffen).
Dein Monitoring sollte daher die Verteilung der PGs auf den OSD, den Füllstand der einzelnen OSDs und die Gesamtspeicherauslastung erfassen. Eine ungleichmäßige Verteilung der PGs kann dafür sorgen, dass du in deinen Cluster keine Daten mehr schreiben kannst, obwohl von deinen 100 TB gerade mal 9 TB belegt sind. Für den Gesamtfüllstand des CEPH ist nämlich die derzeit am höchsten ausgelastete OSD verantwortlich. Hat eine OSD in deinem Cluster einen Fullstand von 80 %, dann hat auch dein CEPH einen Füllstand von 80 %. Daher das Monitoring der PGs und des Füllstand.
Wenn die Faktoren Füllstand und PGs damit abgedeckt sind und am besten auch so gelöst sind, dass es optimal verteilt wird, dann ist die Gesamtspeicherauslastung dein entscheidender Faktor, weil dir reicht ja eine Meldung alle 5 Minuten und du brauchst ja nicht 200 Meldungen alle 5 Minuten weil eine OSD das Limit erreicht hat. Zusätzlich kann man auch proaktiv den Schwellwert für den Gesamtfüllstand herabsetzen, so dass man frühzeit reagieren kann.
Natürlich kannst und sollst du die Metriken der Pools weiterhin erfassen, das ist nämlich nötig um bei einem Problem herauszufinden, welcher Pool der Verursacher ist oder frühzeitig zu bemerken, wenn ein Pool aus seinem üblichen Wachstumsmuster aussbricht.
Ich monitore z.B. jeden CEPH Cluster in checkmk mit den Standardplugins, dort nehme ich in der Regel auch alles mit was an geht. Zusätzlich habe ich eigene Checks für den Füllstand der OSDs (Beispiel: "osd #0 Used: 894GiB: Available: 741GiB: Used Percentage: 17.15"), dann überwache ich die SMART Werte und Temperatur jeder OSD / SSD (Beispiel: "Powered on: 4 years 323 days, Power cycles: 37, Uncorrectable errors: 0, Reallocated sectors: 0, Pending sectors: 0, End-to-End errors: 0, CRC errors: 0"), das Wear Level jeder OSD / SSD (Beispiel: "OK - Wear Level 99%") und zu guter letzt ziehe ich sämtliche Metriken mit collectd ab und pumpe es in ein Graphite/Grafana Setup.
Ich arbeite in der Regel immer mit dem Grafana Dashboard und rufe das täglich auf, nur so kann ich sehen wie die Entwicklung des Clusters in den letzten Stunden gewesen ist und bekomme so mit, wenn sich etwas aufgeschaukelt hat.
Insofern noch mal ganz deutlich mein Appell an euch: Vergesst die Auslastung pro Pool, das ist keine sinnvolle Metrik und spielt für CEPH Cluster absolut gar keine Rolle!
Eure Kunden können mit den Berechnungen pro Pool abschätzen und sehen wie viele Daten sie JETZT (nicht in 3 Tagen) da rein schaufeln können. Wenn die einen Alarmschwellwert haben wollen, dann ist der Wert unter "Datacenter -> CEPH" relevant und nicht der des Pools. Alles andere wird einfach zu Erklärungsbedürftig dem Kunden gegenüber, der in der Regel auch von dem komplexen Thema "CEPH" keine Ahnung hat oder haben will oder Ihr ihm auch keine 3 Tages Schulung anbieten wollt