我有一个 SSD 存储系统,其中包含两个节点和 6 个 SSD 驱动器。不理想,所以有一点我会介绍另一个节点。现在我想要3路复制。
在默认规则下,这不会发生,因为我们只有两个节点。所以我想我会尝试修改crushmap并为SSD存储节点设置规则集以将数据放置在两个节点上,第三组可以在同一节点上的另一个OSD上。
作为一个新手并且不完全理解choose firstn
andchooseleaf firstn
语句是如何工作的,我不确定它是否会按照我的意图进行。
这是我到目前为止所拥有的:
rule ssd-all {
ruleset 1
type replicated
min_size 1
max_size 5
step take ssd
step choose firstn 0 type host
step chooseleaf firstn 2 type osd
step emit
}
其中 ssd 是包含一些主机和包含多个 (6) OSD 的主机的根类型。
那行得通吗?不知怎的,我认为这是不对的。我想更好地了解何时使用choose
以及在何处使用chooseleaf
. 并且对之后的数字有了更好的了解firstn
。该文档缺乏明确的示例。阅读CRUSH 白皮书有些道理,但伪代码对我来说不是那么清楚。有人可以帮忙吗?
事实证明没关系。
跑步后
使用 --num-rep 的不同数量的副本,似乎正确满足了条件。两台主机上至少有 3 个副本,在 2 个不同 osd 上的单个主机上最多有 2 个副本。