基于节点或磁盘的ceph复制?

我目前正在评估xserver的存储系统。 因为数据复制在失败的情况下是重要的,我有一个关于复制在ceph的问题。

据我所知,节点中的每个磁盘本身就是一个osd(磁盘不在任何raidconfiguration中)。 ceph复制algorithm是否意识到2个osd在同一个节点上,因此不能复制这些osd上的数据?

最小示例:2个节点,每个节点2个磁盘。 由于非raid设置,每个磁盘都是osd – > 4 osd's。 节点A:OSD1,OSD2; 节点B:OSD3,OSD4。 我将复制量设置为2并将对象保存到ceph中。 对象是否将被保存并复制,以便节点发生故障时数据是完全可访问的?

谢谢您的回答

  1. 是。 2.您可以定义要通过节点,机架,数据中心等进行复制的策略。

默认情况下,CRUSH复制规则(replicated_ruleset)指出复制位于主机级别。 你可以检查这个是出口暗恋地图:

ceph osd getcrushmap -o /tmp/compiled_crushmap crushtool -d /tmp/compiled_crushmap -o /tmp/decompiled_crushmap 

地图将显示这些信息:

 rule replicated_ruleset { ruleset 0 type replicated min_size 1 max_size 10 step take default step chooseleaf firstn 0 type host 

复制types在地图的开头列出:

 # 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 

为了达到HEALTH_OK状态并根据您的规则复制对象,必须在特定情况下将复制types更改为osd 。 该地图可以通过运行重新编译:

 crushtool -c /tmp/decompiled_crushmap -o /tmp/compiled_crushmap ceph osd setcrushmap -i /tmp/compiled_crushmap 

你可以在ceph文档中find更多关于如何使用CRUSH地图的信息: http : //docs.ceph.com/docs/master/rados/operations/crush-map/

可以使用以下命令find特定对象的位置:

 ceph osd map {pool-name} {object-name} 

如果要查看所有对象的地图,可以通过查看展示位置组转储(考虑显示自己的信息)来执行此操作:

 ceph pg dump | awk '{print $1 "\t" $2 "\t" $15 "\t" $16}' 

关于OSD,可以考虑OSD任意types的物理存储单元(文件夹/分区/逻辑卷/磁盘/ LUN)