ceph bluestore的db分区应该预留多大的空间
前言
关于bluestore的db应该预留多少空间,网上有很多资料
如果采用默认的
write_buffer_size=268435456
大小的话
那么几个rocksdb的数据等级是
L0: in memory
L1: 256MB
L2: 2.56 GB
L3: 25.6 GB
L4: 256 GB
设置L4那么大的ssd可以给一个osd使用有点不划算,那么空间一般计算就是L1+L2+L3将近30GB
这个可以参考下面的文章
关于block.db大小调整,只需为所有Bluestore OSD保留30 GB
那么这个大小对不对,如果你直接参考30GB这个,并且按照常规的去分区来说,就会带来问题了,我们看下具体什么问题
实际测试验证
parted -s /dev/sdb mkpart primaru 1 31G
上面的命令已经放大了1GB了,但是实际上还是不行
[root@lab102 ~]# ceph daemon osd.0 perf dump|grep bluefs -A 10
"bluefs": {
"gift_bytes": 0,
"reclaim_bytes": 0,
"db_total_bytes": 30999044096,
"db_used_bytes": 3258966016,
"wal_total_bytes": 1999630336,
"wal_used_bytes": 501215232,
"slow_total_bytes": 160000114688,
"slow_used_bytes": 7837319168,
"num_files": 194,
"log_bytes": 10485760,
上面是我测试环境记录的值,db只使用了3.2G实际上已经开始使用slow 了,所以这个大小实际上不满足的我的预设的,这个跟parted命令分区的GB转换也存在的一定的关系
看下parted的问题
[root@lab102 ~]# parted -s /dev/sdf mkpart primary 1 1GB
[root@lab102 ~]# parted -s /dev/sdf print
Model: Intel RMS25CB080 (scsi)
Disk /dev/sdf: 4000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB primary
可以看到上面创建1GB的时候实际上只创建了999MB,加上我指定的从1MB开始,实际上这个地方设置是按1000进制处理容量的,而对容量的需求的是真正的1024的去算的,这个地方就存在误差了
那么我们简单点处理,就是直接放大到35GB即可
parted -s /dev/sdf mkpart primary 1 35GB
按这个容量设置的,能够保证上面的L3没有先满的时候不会提前溢出了
红帽的官方的建议是留1T 40GB左右,而suse是建议db大小为64GB
https://documentation.suse.com/zh-tw/ses/6/single-html/ses-deployment/index.html#:~:text=如需BlueStore 的詳細,使用單獨的分割區。
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/4/html/administration_guide/osd-bluestore
如果没有调整write_buffer_size的情况下,建议是35GB,40GB或者64GB,这个都存在一些放大设置,如果磁盘空间足够的情况下,多分一点也没什么关系的,尽量避免转换不正确带来的未知的降速
WAL大小,suse建议是4GB的
测试模型构建
准备一个4TB的sata盘,准备一个db分区,准备一个wal分区(测试环境为2GB)
db分区设置为你需要的大小,上面的环境当中,我测试了db 30GB和35GB两组大小的情况
设置35GB写入600万文件的时候osd的db情况如下:
ceph daemon osd.0 perf dump|grep bluefs -A 10
"bluefs": {
"gift_bytes": 0,
"reclaim_bytes": 0,
"db_total_bytes": 34999361536,
"db_used_bytes": 10392428544,
"wal_total_bytes": 1999630336,
"wal_used_bytes": 492826624,
"slow_total_bytes": 160000114688,
"slow_used_bytes": 0,
"num_files": 177,
"log_bytes": 3944448,
创建osd的命令
ceph-deploy osd create --data /dev/sdc1 --block-db /dev/sdb1 --block-wal /dev/sdb2 lab102
创建一个rgw网关
然后用cosbench往网关打数据
200个worker,64KB的文件,写入600万文件
测试一轮的时间大概为2小时就可以复现上面的情况,测试过程还带出了另外的一个问题
rgw_dynamic_resharding = true
这个动态分片过程中会有一定的概率阻塞住请求的,通过cosbench里面的压测图形也可以看到分片后的性能比没分片是好很多的,所以如果抢时间的话
最好是关闭动态分片,设置好需要的分片数目
测试完需要改db的时候,直接删存储池,然后重新创建即可,推掉的操作也很快的
总结
网上的文章都是用来参考的,实际是一定需要去复测验证的,一般分享的文章也不会细化到一个parted的命令也记录,只会从原理上面出发去分析,并且环境调整了什么参数,都是不同的结果的,比如上面的
write_buffer_size如果调整到512MB,那么预留的空间差不多需要翻一倍的
所以参数的调整,一定要实测
ceph bluestore的db分区应该预留多大的空间的更多相关文章
- ceph扩展bluestore的db分区
前言 在ceph 14版本里面才加入了bluefs-bdev-migrate,分区迁移相关的命令,那么在12版本里面其实也是可以扩展分区的 测试的版本 [root@lab102 ceph-0]# ce ...
- [ ceph ] BlueStore 存储引擎介绍
为什么需要 BlueStore 首先,Ceph原本的FileStore需要兼容Linux下的各种文件系统,如EXT4.BtrFS.XFS.理论上每种文件系统都实现了POSIX协议,但事实上,每个文件系 ...
- 开源实践分享:Ceph bluestore部署实践
https://blog.51cto.com/99cloud/2119884 Ceph bluestore部署 首先为大家分享Ceph bluestore具体该如何部署,使用环境如下• 单节点• Ce ...
- Ceph BlueStore与FileStore:利用Micron NVMe SSD进行性能比较
https://www.micron.com/about/blog/2018/may/ceph-bluestore-vs-filestoreblock-performance-comparison-w ...
- Ceph BlueStore 解析:Object IO到磁盘的映射
作者:吴香伟 发表于 2017/02/19 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 简单回顾下Ceph OSD后端存储引擎的历史. 为解决事务原子性问题, ...
- ceph存储 ceph Bluestore的架构
ceph 目前是开源社区比较流行的分布式块存储系统,其以良好的架构,稳定性和完善的数据服务功能,获得的了广泛的部署和应用. 目前ceph 最大的问题是其性能相对较差,特别是无法发挥SSD等高速设备的硬 ...
- ceph bluestore与 filestore 数据存放的区别
一. filestore 对象所在的PG以文件方式放在xfs文件中 1 查看所有的osd硬盘,跟其他linux其他硬盘一样,被挂载一个目录中. [root@hz-storage1 ~]# df -h ...
- Ceph Bluestore首测
Bluestore 作为 Ceph Jewel 版本推出的一个重大的更新,提供了一种之前没有的存储形式,一直以来ceph的存储方式一直是以filestore的方式存储的,也就是对象是以文件方式存储在o ...
- Oracle DB 分区特性概述 Overview of Partitions
概述:在Oracle数据库中,分区(partitioning)可以使非常大的表(table)或索引(index)分解为小的易管理的块(pieces),这些块被称作分区(partitions).每个分区 ...
随机推荐
- jmeter_03_鉴权
jmeter权鉴* 1.配置节点 - 2.前置处理器 3.定时器 4.取样器 5.后置处理器(只在有结果的情况下执行) 6.断言(只在有结果的情况下执行) 7.监听器(只在有结果的情况下执行) 参数叠 ...
- [wxpusher]分享一个服务器推送消息到微信上的小工具,可以用于微信推送提醒和告警。
背景 作为一个程序员,业余搞点自己的东西很正常,一般程序员都会有一两台自己的服务器,谁叫今天xx云搞活动,明天yy云搞活动呢. 自家的服务器用来跑爬虫,跑博客,或者跑一些个人业务,但当服务有新状态,抢 ...
- spring boot:用swagger3生成接口文档,支持全局通用参数(swagger 3.0.0 / spring boot 2.3.2)
一,什么是swagger? 1, Swagger 是一个规范和完整的文档框架, 用于生成.描述.调用和可视化 RESTful 风格的 Web 服务文档 官方网站: https://swagger.i ...
- centos平台scp通过密钥远程复制文件(免密登录)
一,说明:两台机器的平台和ip 1,a服务器: centos8:ip:121.122.123.47 版本 [root@yjweb ~]# cat /etc/redhat-release CentOS ...
- 第十九章 keepalived高可用
一.keepalived高可用 1.什么是高可用 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的. 2.高可用使用的工具 1 ...
- QT/C++插件式框架、利用智能指针管理内存空间的实现、动态加载动态库文件
QT.C++插件式框架.主要原理还是 动态库的动态加载. dlopen()函数.下面为动态加载拿到Plugininstance对应指针.void**pp=(void**)dlsym(handle,&q ...
- 实现LNMP架构
LNMP简介 WEB资源类型: 静态资源:服务器端和客户端看到的是一样的 动态资源:服务器端放的是程序,客户端看到的是结果,并不是程序本身 和页面的静或者动没有关系 WEB相关语言 HTML JAVA ...
- 深入理解Java的抽象类和接口
对于面向对象来说,抽象是其重要特征之一.对于之中的抽象类和接口,两者有很多相似的地方,又有两者之间区别的地方. 用几个简单的例子让你快速的理解两者之间的概念和区别 鸣谢 一.抽象类 在了解抽象类之前, ...
- C++实现求离散数学命题公式的真值表
一.实验内容 (1)求任意一个命题公式的真值表. (2)利用真值表求任意一个命题公式的主范式. (3)利用真值表进行逻辑推理. 注:(2)和(3)可在(1)的基础上完成. 二.实验目的 真值表是命题逻 ...
- poj1654 -- Area (任意多边形面积)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20444 Accepted: 5567 Description ...