Ceph Primary Affinity

2014年8月20日 laurentbarbe

这个选项允许你解决异构集群中一个持续存在的担忧。 事实上,并非所有HDD都具有相同的性能或相同的性能/大小比。 使用此选项,可以在不减少其包含的数据量的情况下减少特定磁盘上的负载。 此外,该选项易于修改,因为它不会导致数据迁移。 仅主/副之间的偏好将被修改并传播给客户端。

在调整集群选项和调整crushmap之前,请记住验证你的客户端是否与这些选项兼容。

你必须在mons上启用‘mon osd allow primary affinity = true’,然后才能调整primary-affinity。 请注意,较旧的客户端将无法与集群通信。

( 对于客户端内核模块,你可以查看 http://cephnotes.ksperis.com/blog/2014/01/21/feature-set-mismatch-error-on-ceph-kernel-client. )

查看监视器是否具有primary affinity选项:# ceph –admin-daemon /var/run/ceph/ceph-mon.*.asok config show | grep ‘primary_affinity’ “mon_osd_allow_primary_affinity”: “false”,

编辑ceph.conf并在[mon]部分中添加:mon osd allow primary affinity = true

重新加载mon并测试。 我们查看osd.0上有多少pg是primary,有多少是secondary

# ceph pg dump | grep active+clean | egrep "\[0," | wc -l
100
# ceph pg dump | grep active+clean | egrep ",0\]" | wc -l
80

尝试更改primary affinity

# ceph osd primary-affinity osd.0 0.5
set osd.0 primary-affinity to 0.5 (8327682)

# ceph pg dump | grep active+clean | egrep "\[0," | wc -l
48
# ceph pg dump | grep active+clean | egrep ",0\]" | wc -l
132

# ceph osd primary-affinity osd.0 0
set osd.0 primary-affinity to 0 (802)

# ceph pg dump | grep active+clean | egrep "\[0," | wc -l
0
# ceph pg dump | grep active+clean | egrep ",0\]" | wc -l
180

现在将不再对此OSD进行读取。