ceph详解之mon_osd_max_split_count
问题
ceph 在扩容的过程中,免不了会遇到osd数量达到一定程度以后,需要调整存储池的pg_num和pgp_num。一般在osd数量比较小的时候,可能没啥问题。但是当osd到达一定数量的时候,扩展pg的时候,可能会出现如下报错:
Error E2BIG: specified pg_num 4096 is too large (creating 2048 new PGs on ~60 OSDs would exceed the per-OSD max of 32 given by mon_osd_max_split_count); please increase the pg_num in smaller steps
根据报错,我们很明显指向了mon_osd_max_split_count这个参数。
我们的环境就是在48个osd扩展到60个osd(集群每个osd容许的最大pg是250个)的时候,需要将pg从2048调整到4096的时候出现的报错。我们不妨先查看一下集群的这个参数的值。我们使用如下命令查询:
ceph daemon osd.0 config show | egrep 'mon_osd_max_split_count'
有输出,输出如下:
"mon_osd_max_split_count": "32"
说明osd有对应的该参数的配置,并且的确和错误描述中的一致,是32.这个值是默认值。
我们再查一下mon试试,使用如下命令查询:
ceph daemon /var/run/ceph/ceph-mon.ceph-node01.asok config get mon_osd_max_split_count
也是有输出的,并且也和错误描述中的一致,说明mon也是有该参数配置的。如下:
{"mon_osd_max_split_count": "32"
}
意义
mon_osd_max_split_count参数是干嘛的?从字面上看,就是mon 监控每个osd在分裂的时候,容许的最大分裂数量。的确是这样,ceph为了限制pg分裂的速度,设置了mon_osd_max_split_count这个参数。这个参数表示【在分裂的时候,每个osd容许的最大分裂数量】。
那么,在我们的环境下,osd从48个扩展到60个的时候,也就是pg应该从2048(单个osd最大pg数为250,48个osd的时候,假如一个pool的占整个集群100%的数据量,该pool最优的pg数量是2048)开始调整。理论上应该最高容许调整到如下:
2048+32*60=3968
我们将上面的计算过程写成脚本:
#!/bin/bash
max_inc=`ceph daemon /var/run/ceph/ceph-mon.ceph-node01.asok config get mon_osd_max_split_count 2>&1 \| tr -d '\n ' | sed 's/.*"\([[:digit:]]\+\)".*/\1/'`
pg_num=`ceph osd pool get volumes pg_num | cut -f2 -d: | tr -d ' '`
echo "当前 pg_num value: $pg_num, 每个osd每次最大分列数: $max_inc"
osd_num=`ceph osd ls |wc -l`
next_pg_num="$(($pg_num+$(($max_inc * $osd_num))))"
echo "最大扩容 pg_num: $next_pg_num"
没错!当mon_osd_max_split_count保持默认的32的配置的时候,按照报错,我们的确需要每次扩容小一些的pg_num(increase the pg_num in smaller steps)。60个osd,最适合的pg_num是4096,那我们应该先扩容到3968,再扩容到4096。
处理方法
分布扩容
按照错误描述,分布扩容。先扩容到3968,在扩容到4096.该方法是可行的,不过就是集群要两次扩容(每次扩容可是会基本引起集群不可用的),两次数据平衡。不太推荐。
调整mon_osd_max_split_count
既然是mon_osd_max_split_count参数控制的,那我们可以调整该参数。可以走先动态注入,再改配置文件的方法。我们先用如下两个命令,将mon_osd_max_split_count值动态改成64:
ceph tell mon.* injectargs '--mon_osd_max_split_count 64'
ceph tell osd.* injectargs '--mon_osd_max_split_count 64'
然后在deploy(我的集群是ceph-dploy配置的)节点,修改ceph配置文件,在配置文件的mon和osd字段,添加如下配置:
[mon]
mon osd max split count = 64
[osd]
mon osd max split count = 64
将配置文件,同步到各节点:
ceph-deploy --overwrite-conf config push ceph-node0{1..6}
最后,参考ceph 存储池pg和pgp调整调整pg_num和pgp_num的值。
ceph详解之mon_osd_max_split_count相关推荐
- ceph存储原理_赠书 | Linux 开源存储全栈详解——从Ceph到容器存储
// 留言点赞赠书我有书,你有故事么?留言说出你的存储故事留言点赞前两名,免费送此书截止日期12.27号12.30号公布名单 // 内容简介 本书致力于帮助读者形成有关Linux开源存储世界的细致的拓 ...
- ceph搭建及使用详解
第1章 ceph介绍 1.1 Ceph的主要特点 统一存储 无任何单点故障 数据多份冗余 存储容量可扩展 自动容错及故障自愈 1.2 Ceph三大角色组件及其作用 在Ceph存储集群中,包含了三大角色 ...
- ceph命令系列(一):ceph-deploy/ceph/rados/rbd 常用命令详解
ceph-deploy 常用命令详解 命令 描述 ceph-deploy new [mon-node ...] 指定node(s)为monitor,开始部署一个新的ceph集群,并且在当前目录创建ce ...
- 【ceph】Ceph之PG状态详解--研读笔记
原文:分布式存储Ceph之PG状态详解 - 简书 Ceph中一些PG相关的状态说明和基本概念说明.故障模拟_pansaky的博客-CSDN博客 1. PG介绍 继上次分享的<Ceph介绍及原理架 ...
- Ceph 中的 PG 状态详解
1. PG介绍 这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下: 在架构层次上,PG位于RADOS层的中间. a. 往上负责接收和处理来自客户端的请求. ...
- Ceph优化系列(二):Ceph主要配置参数详解
转载:Ceph配置参数详解 概述 Ceph的配置参数很多,从网上也能搜索到一大批的调优参数,但这些参数为什么这么设置?设置为这样是否合理?解释的并不多 本文从当前我们的ceph.conf文件入手,解释 ...
- Ceph分布式存储 原理+架构图详解
分布式存储Ceph ceph介绍 ceph是一个统一的.分布式的存储系统,设计初衷式提供较好的性能(io).可靠性(没有单点故障)和可扩展性(未来可以理论上无限扩展集群规模),这三点也是集群架构所追求 ...
- ceph集群和数据库到底是储存数据_Python开发之:Django基于Docker实现Mysql数据库读写分离、集群、主从同步详解 | 原力计划...
作者 | Pythonicc责编 | 王晓曼出品 | CSDN博客简介1.什么是数据库读写分离读写分离,基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从 ...
- ceph-dencoder工具使用详解
文章目录 简介 使用 decode命令用法 encode 简介 ceph-dencoder工具是一个序列化编码.解码并且打印ceph数据结构的工具.它主要用来调试和测试ceph不同版本之间的兼容性问题 ...
最新文章
- 64位大内存虚拟机Page File的存放位置
- matlab如何求传递函数的幅值_自动控制原理2.2.1 什么是传递函数,为什么要使用传递函数的概念...
- python hashlib模块
- [翻译]Axure-Basic Interactions-原型设计工具Axure学习-第1.3节
- Luogu 2827 [NOIP2016] 蚯蚓
- SDL播放音频的时候发现SDL_OpenAudioDevice打开一直失败
- Java 8中HotSpot选项的改进文档
- java map与set的区别_java 集合(list,set,map)三者之间的关系和区别
- TransR:实体和关系分开嵌入(知识图谱嵌入)2015 AAAI
- zabbix监控Linux系统服务
- 百度云存储教程---免费建立自己的静态网站
- android 维语 字体,维语字体手机版下载-维吾尔文字体apk下载 v2.0 安卓版-IT猫扑网...
- 怎样查看sql服务器日志文件,怎么通过sql日志,查看以前执行过的sql语句
- VMware Tools手动安装
- 详细vue脚手架安装教程
- 全面屏下的沉浸式状态栏的返回键、home键、菜单键的显示。
- canvas乱码的处理
- 在Excel中选取一行中的最大数值进行标题匹配
- BurpSuite实战十九之XSS检测实战
- 关于正交矩阵的二三事
热门文章
- 【ACM/webank】#491.递增子序列(使用HashSet来记录并防止重复子序列)
- 惠普笔记本计算机无法启,hp手提电脑无法启动
- C++ 输出颜色字体
- photoshop制作html,用Photoshop制作好的网页模板再来用dreamweave制作出html的简单教程...
- 大学生申请创新创业训练计划项目之我见
- HDU 4218 IMBA?
- 全能终端神器 MobaXterm 学习与使用
- 象棋棋霸2006 v5.1 五合一免费版 怎么用
- Django学习:用RGF创建一个简单的网页框架!(实用性感觉很强!!)
- 特斯拉Model 3 Key Card里的黑科技