首页 > 其他分享 >ceph 指定OSD创建pool

ceph 指定OSD创建pool

时间:2022-10-11 22:06:48浏览次数:81  
标签:crush osd ceph sata ssd OSD pool

微信公众号:运维开发故事,作者:wanger


背景

在我们的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 #使用ssd bucket
step chooseleaf firstn 0 type osd
step emit
}
rule sata-pool {
ruleset 2
type replicated
min_size 1
max_size 10
step take sata #使用sata bucket
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_运维_02

创建并验证ssd-pool

ceph osd pool create ssd-pool 8 8

查看crush_rule为0

ceph 指定OSD创建pool_运维_03

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

ceph osd pool set ssd-pool crush_rule ssd-pool

ceph 指定OSD创建pool_运维_04

可以看到ssd-pool的池已经使用crush_rule 1了

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

ceph 指定OSD创建pool_运维_05

分别往两个池里写入数据测试

rados -p <pool_name> put <object_name> <file_name>

ceph 指定OSD创建pool_运维_06

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

ceph 指定OSD创建pool_运维_07


公众号:运维开发故事

github:​https://github.com/orgs/sunsharing-note/dashboard​

博客:https://www.devopstory.cn

爱生活,爱运维

我是wanger,《运维开发故事》公众号团队中的一员,一线运维农民工,这里不仅有硬核的技术干货,还有我们对技术的思考和感悟,欢迎关注我们的公众号,期待和你一起成长!

ceph 指定OSD创建pool_运维_08



标签:crush,osd,ceph,sata,ssd,OSD,pool
From: https://blog.51cto.com/u_12970189/5743562

相关文章

  • Ceph使用---对象存储网关RadosGW
    一、RadosGW对象存储网关简介http://docs.ceph.org.cn/radosgw/对象存储特性:数据不需要放置在目录层次结构中,而是存在于平面地址空间内的同一级别应用通过唯一地址来......
  • Java线程池 ThreadPoolExecutor 深入解析 任务列队,拒绝策略,自定义线程池工厂,线程池扩
    目录​​相关文章​​​​介绍   ​​​​ThreadPoolExecutor构造方法​​​​构造函数的参数含义如下​​​​各项介绍​​​​workQueue任务队列​​​​1.直接提交......
  • Zabbix监控Ceph的两种实现方式
    Ceph作为一个开源的分布式存储平台,可以从软件层面正确提供所有的企业级存储特性,本文主要介绍使用Zabbix监控Ceph集群的两种方式。本文只是提供监控Ceph的思路或者方法,不涉及......
  • 分布式存储系统之Ceph集群RadosGW基础使用
    前文我们了解了MDS扩展相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16759585.html;今天我们来聊一聊RadosGW的基础使用相关话题;对象存储系统概述......
  • Ceph使用---CephFS
    一、CephFS介绍cephFS即cephfilesystem,可以实现文件系统共享功能(POSIX标准),客户端通过ceph协议挂载并使用ceph集群作为数据存储服务器,http://docs.ceph.org.......
  • 5.9、ceph集群ceph.conf配置文件
    9.1config文件推送(1)默认生成的ceph.conf文件如果需要改动的话需要加一些参数,如果配置文件变化也是通过ceph-deploy进行推送。请不要直接修改某个节点的"/etc/ceph/ceph.......
  • Vue系列---【at Socket.writeAfterFIN [as write] (net.js:441:14) at PoolWorker
    1.问题描述:前端是vue项目,打包和打镜像的时候,本地没问题,jenkins物理机打流水线也没问题,但是到容器云平台使用自带的流水线打包打镜像的时候,就报错了。上次成功上线的代......
  • ​sync.Pool 使用
    sync.Pool使用场景保存和复用临时对象,减少内存分配,降低GC压力例子typeStudentstruct{NamestringAgeint32Remark[1024]byte}varbuf,_=json.Marshal(Stu......
  • ceph常用命令
    在测试块存储及对象存储中常用的命令#查看ceph集群状态ceph-s#持续监控集群变化ceph-w#查看集群是否健康cephhealth或cephhealthdetail#查看集群mon节点时间同......
  • Ceph使用---CephX认证机制及用户管理
    一、CephX认证机制介绍Ceph使用cephx协议对客户端进行身份认证cephx用于对ceph保存的数据进行认证访问和授权,用于对访问ceph的请求进行认证和授权检测,与mon通信的请求都要......