Hallo zusammen,
ich habe eine Frage zu Ceph, konkret zu den Crush Rules und deren Funktionsweise. Eine Crush Rule ist ja dafür da zu steuern, wo die Daten gespeichert werden, richtig?
Hierzu kann man mit
eine Regel anlegen, die dann auf der Failure Domain (z.B. ein Host, Rack oder Brandschutzabschnitt) die Daten verteilt. Je nach Pool-Size werden dann die Daten auf OSDs innerhalb verschiedener Failure Domain gespeichert oder?
Beispiel - OSD Tree:
Lege ich eine Regel an mit Failure Domain Rechenzentrum, würden die Daten bei einem 3/2er Pool ja in mindestens 2 Rechenzentren landen, richtig? Wo wird die dritte Kopie gespeichert? RZ 1 oder RZ 2 oder ist das variabel, weil ja bereits die Anforderung der Failure Domain (Daten auf zwei verschiedenen RZ) erfüllt ist? Landet die dritte Kopie zwingend auf einem anderen Host oder könnte diese auch "nur" auf einer anderen OSD des gleichen Hosts landen, z.B. Host 1 OSD 1, Host 1 OSD 2, Host 7 OSD 1?
Kann man mehrere Failure Domains / Ebenen in einer Regel definieren? Also z.B. auf erster Ebene RZ und auf zweiter Ebene Brandschutz? Denn wenn ich direkt Brandschutz definiere könnte es bei einem 3/2er Pool ja auch sein, dass die Daten überhaupt nicht im RZ 2 landen sondern nur in verschiedenen Brandschutzabschnitten des RZ 1 oder liege ich da falsch?
Gibt es vielleicht auch irgendwo ordentliche Lektüre, um das Ganze zu verstehen? Im Netz hab ich dazu nichts brauchbares gefunden.
Danke schonmal für eure Antworten!
Viele Grüße
Ketanest
ich habe eine Frage zu Ceph, konkret zu den Crush Rules und deren Funktionsweise. Eine Crush Rule ist ja dafür da zu steuern, wo die Daten gespeichert werden, richtig?
Hierzu kann man mit
ceph osd crush rule create-replicated {name} {root} {failure-domain-type} [{class}]
eine Regel anlegen, die dann auf der Failure Domain (z.B. ein Host, Rack oder Brandschutzabschnitt) die Daten verteilt. Je nach Pool-Size werden dann die Daten auf OSDs innerhalb verschiedener Failure Domain gespeichert oder?
Beispiel - OSD Tree:
root
- Rechenzentrum 1
-- Brandschutzabschnitt 1
--- Host 1
--- Host 2
-- Brandschutzabschnitt 2
--- Host 3
--- Host 4
-- Brandschutzabschnitt 3
--- Host 5
--- Host 6
- Rechenzentrum 2
-- Brandschutzabschnitt 4
--- Host 7
--- Host 8
Lege ich eine Regel an mit Failure Domain Rechenzentrum, würden die Daten bei einem 3/2er Pool ja in mindestens 2 Rechenzentren landen, richtig? Wo wird die dritte Kopie gespeichert? RZ 1 oder RZ 2 oder ist das variabel, weil ja bereits die Anforderung der Failure Domain (Daten auf zwei verschiedenen RZ) erfüllt ist? Landet die dritte Kopie zwingend auf einem anderen Host oder könnte diese auch "nur" auf einer anderen OSD des gleichen Hosts landen, z.B. Host 1 OSD 1, Host 1 OSD 2, Host 7 OSD 1?
Kann man mehrere Failure Domains / Ebenen in einer Regel definieren? Also z.B. auf erster Ebene RZ und auf zweiter Ebene Brandschutz? Denn wenn ich direkt Brandschutz definiere könnte es bei einem 3/2er Pool ja auch sein, dass die Daten überhaupt nicht im RZ 2 landen sondern nur in verschiedenen Brandschutzabschnitten des RZ 1 oder liege ich da falsch?
Gibt es vielleicht auch irgendwo ordentliche Lektüre, um das Ganze zu verstehen? Im Netz hab ich dazu nichts brauchbares gefunden.
Danke schonmal für eure Antworten!
Viele Grüße
Ketanest