Ok, in dem Fall wo es nur einen Pool pro Device Class gibt, ist es sehr einfach. Den ".mgr" kann man dafür ignorieren, der hat seine eine PG und ist damit eigentlich immer glücklich.
Der Autoscaler versucht die richtige PG Num für die Pools herauszufinden. Solange man aber keine target_size oder target_ratio setzt, nimmt er dafür aber nur die aktuelle Größe des Pools. Die kann sich natürlich ändern und wenn dann der Pool ausreichend gewachsen ist, wird der Autoscaler feststellen, dass eine größere PG Num besser wäre und ein Rebalance kann passieren.
Idealerweise gibt man dem Autoscaler eine Abschätzung mit, wohin die Reise gehen wird, mit der target_size
oder target_ratio
. Beides kann in der GUI für einen Pool gesetzt werden. "Advanced" neben dem OK Button sollte aktiviert sein.
Die target_ratio
ist eine Gewichtung. Wenn man nun aber nur einen Pool pro Device Class hat, hat jeglicher Wert hier 100%. Also am besten mal für die 3 Pools (.mgr ignorieren wir) die target_ratio auf, zum Beispiel, 1 setzen.
Dann sollte der Autoscale sehr schnell eine Optimal PG Num ausspucken. Wenn der aktuelle Wert vom optimalen um einen Faktor 3 oder mehr abweicht, wird der Autoscaler von selbst aktiv und wird die PGs für den Pool langsam rauf schrauben.
Wenn der Wert nur um einen Faktor 2 abweicht, muss man ihn manuell setzen.
Am Ende sollten die einzelnen OSDs um die ~100 PGs haben. Dadurch beherbergen die einzelnen PGs auch weniger Objekte. Somit lassen sich die Daten deutlich besser im Cluster verteilen. Die "%USE" Spalte im ceph osd df tree
Output sollte in einer Device Class nur noch wenig Varianz zeigen.
Wenn du dir das pro Device Class anzeigen lassen willst, kannst du auch ceph osd df tree class {device class}
ausführen.
Mitunter wird in der Storageübersicht auch wieder mehr verfügbarer Platz angezeigt, wenn die vollsten OSDs wieder ein bisschen weniger voll sind.