Ceph Daten verteilen / Crush Map

tmatthaeus

Renowned Member
Apr 26, 2012
9
0
66
Bremen, Germany
Hallo zusammen,


folgendes Szenario:

Ich habe vier Server, die jeweils für das Ceph Proxmox Cluster 2 OSDs zur Verfügung stellen. Also insgesamt 8 OSDs.
Meine Size ist 2/2, die Daten werden jeweils auf 2 OSDs geschrieben.


Aber: Wie kann ich jetzt sicherstellen, dass die Daten auch auf verschiedene Server geschrieben werden? Es bringt mir ja nichts, wenn sie auf die OSDs des jeweiligen Servers geschrieben werden und dann down sind.

Server1: osd0 / osd1
Server2: osd2 / osd3
Server3: osd4 / osd5
Server4: osd5 / osd6

Ich möchte also die Daten einer VM auf osd0 und bspw osd3 geschrieben haben. Aber definitiv niemals Daten die auf osd0 sind auch auf osd1 haben.


Wie konfiguriere ich das am besten? Irgendwie stehe ich gerade auf dem Schlauch diesbezüglich.
 
2/2 ist keine gute idee, außer du willst beim ausfall einer OSD (temporär) all Daten die darauf waren nicht verfügbar machen.

3/2 is the way to go ;)

zu deiner eigentlichen frage:
die crush map hat per default folgende rule:
Code:
# rules
rule replicated_rule {
     id 0
     type replicated
     min_size 1
     max_size 10
     step take default
     step chooseleaf firstn 0 type host
     step emit
 }

der schritt "step chooseleaf firstn 0 type host" wählt X hosts (X = pool replication level), und dann pro host eine OSD aus - also genau das gewünschte verhalten. details finden sich unter http://docs.ceph.com/docs/jewel/rados/operations/crush-map/#crush-map-rules