Hello, I’m having a (strange) issue with OSD bucket persistence / affinity on my test cluster.. The cluster is PoC / test, by no means production. Consists of a single OSD / MON host + another MON running on a KVM VM. Out of 12 OSDs I’m trying to get osd.10 and osd.11 to be part of the ssd bucket in my CRUSH map. This works fine when either editing the CRUSH map by hand (exporting, decompile, edit, compile, import), or via the ceph osd crush set command: "ceph osd crush set osd.11 0.140 root=ssd” I’m able to verify that the OSD / MON host and another MON I have running see the same CRUSH map. After rebooting OSD / MON host, both osd.10 and osd.11 become part of the default bucket. How can I ensure that ODSs persist in their configured buckets? Here’s my desired CRUSH map. This is a PoC and by no means production ready.. —— # begin crush map tunable choose_local_tries 0 tunable choose_local_fallback_tries 0 tunable choose_total_tries 50 tunable chooseleaf_descend_once 1 tunable straw_calc_version 1 # devices device 0 osd.0 device 1 osd.1 device 2 osd.2 device 3 osd.3 device 4 osd.4 device 5 osd.5 device 6 osd.6 device 7 osd.7 device 8 osd.8 device 9 osd.9 device 10 osd.10 device 11 osd.11 # types type 0 osd type 1 host type 2 chassis type 3 rack type 4 row type 5 pdu type 6 pod type 7 room type 8 datacenter type 9 region type 10 root # buckets host osdhost { id -2 # do not change unnecessarily # weight 36.200 alg straw hash 0 # rjenkins1 item osd.0 weight 3.620 item osd.1 weight 3.620 item osd.2 weight 3.620 item osd.3 weight 3.620 item osd.4 weight 3.620 item osd.5 weight 3.620 item osd.6 weight 3.620 item osd.7 weight 3.620 item osd.8 weight 3.620 item osd.9 weight 3.620 } root default { id -1 # do not change unnecessarily # weight 36.200 alg straw hash 0 # rjenkins1 item osdhost weight 36.200 } host osdhost-ssd { id -3 # do not change unnecessarily # weight 0.280 alg straw hash 0 # rjenkins1 item osd.10 weight 0.140 item osd.11 weight 0.140 } root ssd { id -4 # do not change unnecessarily # weight 0.280 alg straw hash 0 # rjenkins1 item osdhost-ssd weight 0.280 } # rules rule replicated_ruleset { ruleset 0 type replicated min_size 1 max_size 10 step take default step chooseleaf firstn 0 type osd step emit } rule ecpool { ruleset 1 type erasure min_size 3 max_size 7 step set_chooseleaf_tries 5 step set_choose_tries 100 step take default step choose indep 0 type osd step emit } rule cachetier { ruleset 2 type replicated min_size 1 max_size 10 step set_chooseleaf_tries 5 step set_choose_tries 100 step take ssd step chooseleaf firstn 0 type osd step emit } # end crush map —— ceph osd tree (before reboot) ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -4 0.28000 root ssd -3 0 host osdhost-ssd 10 0.14000 osd.10 up 1.00000 1.00000 11 0.14000 osd.11 up 1.00000 1.00000 -1 36.19995 root default -2 36.19995 host osdhost 0 3.62000 osd.0 up 1.00000 1.00000 1 3.62000 osd.1 up 1.00000 1.00000 2 3.62000 osd.2 up 1.00000 1.00000 3 3.62000 osd.3 up 1.00000 1.00000 4 3.62000 osd.4 up 1.00000 1.00000 5 3.62000 osd.5 up 1.00000 1.00000 6 3.62000 osd.6 up 1.00000 1.00000 7 3.62000 osd.7 up 1.00000 1.00000 8 3.62000 osd.8 up 1.00000 1.00000 9 3.62000 osd.9 up 1.00000 1.00000 ceph osd tree (after reboot) [root@osdhost tmp]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -4 0 root ssd -3 0 host osdhost-ssd -1 36.47995 root default -2 36.47995 host osdhost 0 3.62000 osd.0 up 1.00000 1.00000 1 3.62000 osd.1 up 1.00000 1.00000 2 3.62000 osd.2 up 1.00000 1.00000 3 3.62000 osd.3 up 1.00000 1.00000 4 3.62000 osd.4 up 1.00000 1.00000 5 3.62000 osd.5 up 1.00000 1.00000 6 3.62000 osd.6 up 1.00000 1.00000 7 3.62000 osd.7 up 1.00000 1.00000 8 3.62000 osd.8 up 1.00000 1.00000 9 3.62000 osd.9 up 1.00000 1.00000 10 0.14000 osd.10 up 1.00000 1.00000 11 0.14000 osd.11 up 1.00000 1.00000 Here’s the CRUSH map after reboot. —— # begin crush map tunable choose_local_tries 0 tunable choose_local_fallback_tries 0 tunable choose_total_tries 50 tunable chooseleaf_descend_once 1 tunable straw_calc_version 1 # devices device 0 osd.0 device 1 osd.1 device 2 osd.2 device 3 osd.3 device 4 osd.4 device 5 osd.5 device 6 osd.6 device 7 osd.7 device 8 osd.8 device 9 osd.9 device 10 osd.10 device 11 osd.11 # types type 0 osd type 1 host type 2 chassis type 3 rack type 4 row type 5 pdu type 6 pod type 7 room type 8 datacenter type 9 region type 10 root # buckets host osdhost { id -2 # do not change unnecessarily # weight 36.480 alg straw hash 0 # rjenkins1 item osd.0 weight 3.620 item osd.1 weight 3.620 item osd.2 weight 3.620 item osd.3 weight 3.620 item osd.4 weight 3.620 item osd.5 weight 3.620 item osd.6 weight 3.620 item osd.7 weight 3.620 item osd.8 weight 3.620 item osd.9 weight 3.620 item osd.10 weight 0.140 item osd.11 weight 0.140 } root default { id -1 # do not change unnecessarily # weight 36.480 alg straw hash 0 # rjenkins1 item osdhost weight 36.480 } host osdhost-ssd { id -3 # do not change unnecessarily # weight 0.000 alg straw hash 0 # rjenkins1 } root ssd { id -4 # do not change unnecessarily # weight 0.000 alg straw hash 0 # rjenkins1 item osdhost-ssd weight 0.000 } # rules rule replicated_ruleset { ruleset 0 type replicated min_size 1 max_size 10 step take default step chooseleaf firstn 0 type osd step emit } rule ecpool { ruleset 1 type erasure min_size 3 max_size 7 step set_chooseleaf_tries 5 step set_choose_tries 100 step take default step choose indep 0 type osd step emit } rule cachetier { ruleset 2 type replicated min_size 1 max_size 10 step set_chooseleaf_tries 5 step set_choose_tries 100 step take ssd step chooseleaf firstn 0 type osd step emit } # end crush map —— Thanks. _______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com