我有一个包含66个OSD的Ceph集群,带有一个data_pool
和一个metadata_pool
。
我想把metadata_pool
放在3个有固态硬盘的特定固态硬盘上,因为所有其他63个固态硬盘都有较旧的磁盘。
如何强制Ceph将metadata_pool
放在特定的OSD上?
谢谢您的提前付款。
发布于 2019-09-23 21:21:33
对于您的池,您需要一个特殊的压缩规则来定义要使用的存储类型。有一个nice answer in the proxmox forum。
归根结底就是:
Ceph知道哪个驱动器是HDD还是SDD。此信息反过来可用于创建压缩规则,该规则将仅在该类型的设备上放置PG。
ceph附带的默认规则是replicated_rule:
# rules
rule replicated_rule {
id 0
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type host
step emit
}
因此,如果您的ceph集群包含这两种类型的存储设备,您可以使用以下命令创建新的压缩规则:
$ ceph osd crush rule create-replicated replicated_hdd default host hdd
$ ceph osd crush rule create-replicated replicated_ssd default host ssd
新创建的规则看起来几乎相同。这是hdd规则:
rule replicated_hdd {
id 1
type replicated
min_size 1
max_size 10
step take default class hdd
step chooseleaf firstn 0 type host
step emit
}
如果您的群集不包含hdd或ssd设备,则规则创建将失败。
在此之后,您将能够将新规则设置到现有池:
$ ceph osd pool set YOUR_POOL crush_rule replicated_ssd
群集将进入HEALTH_WARN并将对象移动到SSD上的正确位置,直到群集再次正常运行。
https://stackoverflow.com/questions/58060333
复制相似问题