デフォルトのバケットタイプがあります。
type 0 osd
type 1 host
...
type 10 root
3つのホストバケット:
host cluster01a {
id -2 # do not change unnecessarily
# weight 1.607
alg straw
hash 0 # rjenkins1
item osd.0 weight 0.268
item osd.1 weight 0.268
item osd.2 weight 0.268
item osd.3 weight 0.268
item osd.4 weight 0.268
item osd.5 weight 0.268
}
host cluster01b {
id -3 # do not change unnecessarily
# weight 1.607
alg straw
hash 0 # rjenkins1
item osd.6 weight 0.268
item osd.7 weight 0.268
item osd.8 weight 0.268
item osd.9 weight 0.268
item osd.10 weight 0.268
item osd.11 weight 0.268
}
host cluster01c {
id -4 # do not change unnecessarily
# weight 1.607
alg straw
hash 0 # rjenkins1
item osd.12 weight 0.268
item osd.13 weight 0.268
item osd.14 weight 0.268
item osd.15 weight 0.268
item osd.16 weight 0.268
item osd.17 weight 0.268
}
そしてバレルルート
root default {
id -1 # do not change unnecessarily
# weight 4.820
alg straw
hash 0 # rjenkins1
item cluster01a weight 1.607
item cluster01b weight 1.607
item cluster01c weight 1.607
}
そしてこの規則
rule replicated_ruleset {
ruleset 0
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type host
step emit
}
rule replicated_ruleset_over2hosts {
ruleset 1
type replicated
min_size 2
max_size 2
step take default
step chooseleaf firstn 2 type host
step emit
エラーが発生するのはなぜですか?
$ceph osd pool create 2hostspool 512 512 replicated replicated_ruleset_over2hosts
Error EINVAL: pool size is bigger than the crush rule max size
min_size: プールがこのレプリカの数より少なく作成される場合、CRUSH はいいえこのルールを選択してください。 max_size: プールがこの数よりも多くのレプリカを作成する場合、CRUSH はいいえこのルールを選択してください。
源泉:http://docs.ceph.com/docs/mimic/rados/Operations/crush-map-edits/
ベストアンサー1
デフォルトのプールサイズはおそらく3(またはそれ以上?)です。以下から入手できます。
host:~ # ceph daemon mon.<MON> config show | grep osd_pool_default_size
"osd_pool_default_size": "3",
ルールに従って変更してください。
host:~ # ceph daemon mon.<MON> config set osd_pool_default_size 2
{
"success": "osd_pool_default_size = '2' (not observed, change may require restart) "
}
デフォルトのプールサイズに対する永続的な変更は、/etc/ceph/ceph.confで設定する必要があります。