Ceph erkennt standardmäßig Platten nach Ihrem Typ und stuft sie in Klassen ein.

Ceph kennt hdd,ssd,nvme. Die Erkennung passt aber nicht immer.

Werden NVMEs z.B. nicht als NVMEs erkannt, müssen wir dies manuell festlegen.

in Ceph gibt es dazu classes.

Nur eine OSD kann eine Klasse haben. Die rohe Platte/Disk noch nicht.

Erster Step also im proxmox z.B. neue OSD erzeugen.

OSD „suchen“ (höchste ID) mit:

ceph osd tree

ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
1 ssd 1.81940 osd.1 up 1.00000 1.00000
5 ssd 1.81940 osd.5 up 1.00000 1.00000
6 ssd 1.81940 osd.6 up 1.00000 1.00000
13 ssd 1.86299 osd.13 up 1.00000 1.00000

Hier sehen wir, dass die neueste OSD, die ID 13, fälschlich die class ssd hat, obwohls ’ne NVME ist.

Wie ändern?

In zwei steps, alte Klasse entfernen, neue Klasse setzen:

ceph osd crush rm-device-class osd.13
ceph osd crush set-device-class nvme osd.13

Jetzt noch eine neue Regel anlegen die besagt, alles mit der Klasse NVME, wird ‚untereinander‘ (unter den verfügbaren Ceph-Knoten) repliziert. Alle anderen Klassen, werden darin nicht berücksichtigt.

ceph osd crush rule create-replicated replicated_rule_nvme default host nvme

Jetzt noch über die GUI in Proxmox einen neuen Pool anlegen namens NVME und als Replikations-Regel die ‚replicated_rule_nvme‘ auswählen.

Fertsch.

Categories: Blog