I don't have much experience with crush rules but wanted one that does the
following:
On a 3-node cluster, I wanted a rule where I could have an erasure-coded pool
of k=3,m=2
and where the first 3 chunks (the read chunks) are all on different hosts but
the last 2 chunks
step to different osds but can reuse the hosts (since we don't have enough
hosts in this cluster
to have the 5 chunks all on different hosts).
Here was my attempt at a rule,
rule combo-rule-ecrule-3-2 {
ruleset 9
type erasure
min_size 5
max_size 5
step set_chooseleaf_tries 5
step set_choose_tries 100
step take default
step chooseleaf indep 3 type host
step emit
step take default
step chooseleaf indep -3 type osd
step emit
}
which was fine for the first 3 osds, but had a problem in that the last 2 osds
often were chosen to be the same as the first 2 osds for example
(hosts have 5 osds each so 0-4, 5-9, 10-14 are the osd numbers per host).
18.7c 0 0 0 0 0 0 0 0 active+clean 2015-11-09
09:28:40.744509 0'0 227:9 [11,1,6,11,12] 11
18.7d 0 0 0 0 0 0 0 0 active+clean 2015-11-09
09:28:42.734292 0'0 227:9 [4,11,5,4,0] 4
18.7e 0 0 0 0 0 0 0 0 active+clean 2015-11-09
09:28:42.569645 0'0 227:9 [5,0,12,5,0] 5
18.7f 0 0 0 0 0 0 0 0 active+clean 2015-11-09
09:28:41.897589 0'0 227:9 [2,12,6,2,12] 2
How should such a rule be written?
-- Tom
_______________________________________________
ceph-users mailing list
[email protected]
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com