阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ceph集群中指定OSD 创建 pool

68次阅读
没有评论

共计 1675 个字符,预计需要花费 5 分钟才能阅读完成。

导读 如何利用 crush 来对不同数据指定不同设备的 osd 存储,这边我是用虚拟机演示,所以都是 hdd,这边假设 osd0,2,4 为 ssd 设备,osd 1,3,5 为 sata 设备。
背景

在我们的 ceph 集群中,可能不只有 sata 盘或者 ssd 盘,有些时候服务器上同时插了 ssd 和 sata 盘用作 osd,那如果我们按照默认的 crush 分布规则,那会使所有 pg 均分在 ssd 和 sata 盘上,造成 sata 盘的存储空间浪费和整个 ceph 集群的性能浪费,其实我们可以改变 ceph 的默认存储规则,来使那些 io 要求较高的数据存储在由 ssd 的 osd 组成的存储池上,将备份数据或者时效性要求不高的数据存储在由 sata 的 osd 组成的存储池上,既提高了性能,又可以减少较大数据量存储的成本。

下面我们就来演示如何利用 crush 来对不同数据指定不同设备的 osd 存储,这边我是用虚拟机演示,所以都是 hdd,这边假设 osd0,2,4 为 ssd 设备,osd 1,3,5 为 sata 设备。

获取当前 crushmap 并反编译他
ceph osd getcrushmap -o crushmapdump
crushtool -d crushmapdump -o crushmapdump-decompiled

Ceph 集群中指定 OSD 创建 pool

编辑 crushmapdump 文件,并在 root default 配置之后添加以下部分,分别创建 ssd 和 sata 两个 bucket,将 osd [0,2,4] 作为 ssd bucket,osd[1,3,5] 作为 sata bucket。

root ssd {
        id -5
        alg straw
        hash 0
        item osd.0 weight 0.010
        item osd.2 weight 0.010
        item osd.4 weight 0.010
}

root sata {
        id -6
        alg straw
        hash 0
        item osd.1 weight 0.010
        item osd.3 weight 0.010
        item osd.5 weight 0.010
}
创建 crush rule

crush map 包含 crush rule 的概念。每个池都有自己的 crush ruleset 和 rule。

rule ssd-pool {
        ruleset 1
        type replicated
        min_size 1
        max_size 10
        step take ssd  
        step chooseleaf firstn 0 type osd
        step emit
}
rule sata-pool {
        ruleset 2
        type replicated
        min_size 1
        max_size 10
        step take sata  
        step chooseleaf firstn 0 type osd
        step emit
}
在 ceph 急群众编译并注入新的 crush map。
crushtool -c crushmapdump-decompiled -o crushmapdump-compiled 
ceph osd setcrushmap -i crushmapdump-compiled

添加下列参数到 ceph.conf 配置文件中,防止下次重启时 crush 恢复回默认配置。

osd_crush_update_on_start=false

将 crushmap 映射到 ceph 集群后,查看 osd tree 分布,这里由于我是虚拟机,所以所有的磁盘都是别 hdd, 这点请忽略。

Ceph 集群中指定 OSD 创建 pool

创建并验证 ssd-pool。

ceph osd pool create ssd-pool 8 8

查看 crush_rule 为 0。

Ceph 集群中指定 OSD 创建 pool

修改规则集为 1,把 ssd-pool 放到 ssd 磁盘下。

ceph osd pool set ssd-pool crush_rule ssd-pool

Ceph 集群中指定 OSD 创建 pool

可以看到 ssd-pool 的池已经使用 crush_rule 1 了 我们再创建 sata-pool 池,并做上面操作测试,可以看到 sata-pool 的池已经使用 crush_rule 2 了。

Ceph 集群中指定 OSD 创建 pool

分别往两个池里写入数据测试
rados -p  put  

Ceph 集群中指定 OSD 创建 pool

现在验证对象是否存储在正确的 osd 上,ssd 的 osd 集合为 [0 2 4],sata 的 osd 集合为 [1,3,5],下图与我们定义的配置完全相同。

Ceph 集群中指定 OSD 创建 pool

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1675字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中