Ceph Balancer (upmap 模式) 启用与配置

在 Ceph Nautilus (14.2.22) 版本中启用和配置 Balancer 的完整步骤

1. 前提检查

检查集群的初始状态和版本。

集群状态 (ceph -s)

  cluster:id:     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxhealth: HEALTH_OKservices:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 (age 4w)mgr: ceph-node1(active, since 4w)mds: cephfs_ec:1 {0=ceph-node1=up:active} 1 up:standbyosd: N osds: N up (since 3w), N in (since 3w)data:pools:   X pools, Y pgsobjects: A objects, B TiBusage:   C TiB used, D PiB / D PiB availpgs:     Y active+clean

Ceph 版本 (ceph -v)

ceph version 14.2.22 (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) nautilus (stable)

2. 启用 Balancer 模块

启用 balancer 模块。系统提示该模块已默认启用。

[root@ceph-node1 ~]# ceph mgr module enable balancer
module 'balancer' is already enabled (always-on)

查看 Balancer 初始状态,此时模式为 none,且未激活。

[root@ceph-node1 ~]# ceph balancer status
{"last_optimize_duration": "", "plans": [], "mode": "none", "active": false, "optimize_result": "", "last_optimize_started": ""
}

3. 配置 Balancer 模式为 upmap

我们选择 upmap 模式,因为它效率高且对集群性能影响小。

步骤 3.1: 解决兼容性问题

尝试设置 upmap 模式时,系统报错,提示需要最低的客户端兼容版本为 luminous

[root@ceph-node1 ~]# ceph balancer mode upmap
Error EPERM: min_compat_client "jewel" < "luminous", which is required for pg-upmap. Try "ceph osd set-require-min-compat-client luminous" before enabling this mode

根据错误提示,执行以下命令更新客户端兼容性要求:

[root@ceph-node1 ~]# ceph osd set-require-min-compat-client luminous
set require_min_compat_client to luminous

步骤 3.2: 成功设置 upmap 模式

解决兼容性问题后,再次尝试设置模式,命令成功执行。

[root@ceph-node1 ~]# ceph balancer mode upmap

4. 开启 Balancer 并验证

现在,正式开启 Balancer。

[root@ceph-node1 ~]# ceph balancer on

开启后,立即查看状态,可以看到 active 已变为 truemodeupmap,并且系统已成功创建优化计划。

[root@ceph-node1 ~]# ceph balancer status
{"last_optimize_duration": "0:00:00.xxxxxx", "plans": [], "mode": "upmap", "active": true, "optimize_result": "Optimization plan created successfully", "last_optimize_started": "YYYY-MM-DD HH:MM:SS"
}

5. 观察集群状态变化

Balancer 开始工作后,会进行 PG 的重映射(remap)和数据迁移。此时通过 ceph -s 查看集群状态,会发现健康状态变为 HEALTH_WARN

[root@ceph-node1 ~]# ceph -scluster:id:     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxhealth: HEALTH_WARNDegraded data redundancy: X/Y objects degraded (Z%), A pgs degradedservices:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 (age 4w)mgr: ceph-node1(active, since 4w)mds: cephfs_ec:1 {0=ceph-node1=up:active} 1 up:standbyosd: N osds: N up (since 3w), N in (since 3w); M remapped pgsdata:pools:   X pools, Y pgsobjects: A objects, B TiBusage:   C TiB used, D PiB / D PiB availpgs:     X/Y objects degraded (Z%)A/B objects misplaced (C%)D active+cleanE active+recovery_wait+undersized+degraded+remappedF active+recovering+undersized+remappedio:recovery: X MiB/s, Y objects/s

注意: HEALTH_WARN 状态是预期现象,因为数据正在根据优化计划进行迁移。degradedmisplacedremapped 等状态表明 PG 正在被移动到更合适的 OSD 上。等待数据恢复(recovery)和回填(backfilling)完成后,集群状态将恢复到 HEALTH_OK

6. 开启balancer后 限制recovery恢复速度

recovery: 8.9 GiB/s, 2.28k objects/s
# ceph tell osd.1 config get osd_max_backfills
1
# ceph tell osd.1 config get osd_recovery_max_active
3
# ceph tell osd.1 config get osd_recovery_max_single_start
1
# 客户端 I/O 默认优先级为 63,此参数默认值为 3,值越小优先级越低。
# ceph tell osd.1 config get osd_recovery_op_priority
1
# ceph tell osd.1 config get osd_recovery_sleep
0.000000
# 当以上并发数限制仍无法有效降低 I/O 时
# 最有效的方法是引入休眠时间。这会在两次 recovery/backfill 操作之间插入一个短暂的延迟(单位:秒),
# 从而直接降低整体带宽。可以从 0.1 开始尝试,根据实际情况调整。
ceph tell 'osd.*' config set osd_recovery_sleep 0.1
# ceph tell osd.1 config get osd_recovery_sleep
0.100000
   recovery: 3.4 GiB/s, 865 objects/s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91839.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91839.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91839.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Linux上对固态硬盘进行分区、格式化和挂载的步骤

在Linux上对固态硬盘进行分区、格式化和挂载的步骤如下&#xff1a; 插入固态硬盘&#xff1a;将固态硬盘插入计算机的SATA或M.2接口。 确认固态硬盘被识别&#xff1a;打开终端&#xff0c;输入以下命令查看硬盘是否被系统识别 fdisk -l 查找硬盘列表中的固态硬盘&#xf…

用Unity结合VCC更改人物模型出现的BUG

1、上传模型时出现错误经过排查是因为服装发型预制体放到人物模型上之后&#xff0c;物体上自动多了一个空脚本&#xff0c;怀疑是VRC工具箱自动添加的。解决方法&#xff1a;在上传前将带有空脚本的物体上的组件删除即可2、添加头发时出现模型碰撞错误按照【【VRCHAT】从零开始…

k8s之DevicePlugin

解密 Kubernetes Device Plugin&#xff1a;让容器轻松驾驭特殊硬件 在容器化技术飞速发展的今天&#xff0c;容器凭借轻量、隔离、可移植的特性成为应用部署的主流选择。但在实际应用中&#xff0c;当容器需要访问 GPU、FPGA 等特殊硬件资源时&#xff0c;事情就变得不那么简单…

动态规划Day7学习心得

今天给动态规划扫个尾&#xff0c;还有两题。 第一道&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 暴力解法 两层for循环&#xff0c;遍历区间起始位置和终止位置&#xff0c;然后还需要一层遍历判断这个区间是不是回文。所以时间复杂度&#xff1a;O…

SpringCloud实战:机器人对战系统架构

基于Spring Cloud的机器人对战 以下是基于Spring Cloud的机器人对战实例相关案例和技术实现方向的整理,涵盖微服务架构设计、通信机制及典型应用场景: 分布式对战系统架构 采用Spring Cloud Alibaba+Nacos实现服务注册与发现,每个机器人实例作为独立微服务部署。通过Open…

LLM 核心能力解构与项目实践指南

大语言模型&#xff08;LLM&#xff09;的爆发式发展&#xff0c;本质上是其核心能力在产业场景中的规模化验证。作为技术博主&#xff0c;本文将系统拆解 LLM 的六大核心能力&#xff0c;结合工业级项目案例&#xff0c;提供从能力映射到工程实现的完整技术路径&#xff0c;并…

retro-go 1.45 编译及显示中文

最近做了个使用 retro-go 的开源掌机 基于ESP32-S3的C19掌机&#xff08;适配GBC外壳&#xff09; - 立创开源硬件平台 &#xff0c;做完后用提供的固件发现屏幕反显了&#xff0c;估计是屏幕型号不太对&#xff0c;随即自己拉 retro-go 官方库来编译&#xff0c;拉取的最新的 …

中州养老项目:Mybatis自动填充拦截器

功能:在新增护理项目的时候,创建人,创建时间和修改时间字段会自动拦截填充,这些公共字段可以省去我们一个一个处理的麻烦依靠:AutoFillInterceptor拦截器,MybatisConfig配置类第一步:我们需要借助一个MybatisConfig,configuration标志着这是一个配置类,我们需要将autoFillInter…

[创业之路-527]:什么是产品技术成熟度曲线?

产品技术成熟度曲线&#xff08;Gartner Hype Cycle&#xff09;是由全球知名咨询机构Gartner提出的工具&#xff0c;用于可视化展示新兴技术从诞生到成熟的发展轨迹&#xff0c;以及市场对其预期和实际采用趋势的变化。该曲线通过五个阶段刻画技术生命周期&#xff0c;帮助企业…

VScode对Ubuntu用root账号进行SSH远程连接开发

由于linux服务器大部分都是基于命令行的操作&#xff0c;缺乏比较方便好用的编辑工具&#xff0c;对于经常在linux服务器上做开发的同学来说直接在服务器上进行开发或配置文件的修改还不是特别的方便。虽然linux上有vi或vim比起图形化的编辑工具体验感还是不是很好。作为程序员…

【物联网】基于树莓派的物联网开发【20】——树莓派控制DHT11温湿度传感器实战

传感器概述 DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度5%RH&#xff0c; 温度2℃&#xff0c;量程湿度20-90%RH&#xff0c; 温度0~50℃。分为3个接口&#xff0c;分别为&#xff1a;VCC, DATA, GND。 产品图片主要用途 检测环境温湿度 GPIO控制DHT11温湿度传…

AI原生数据库:告别SQL的新时代来了?

在2025年的今天&#xff0c;生成式AI的浪潮正以前所未有的力量重塑着各行各业。从代码生成到艺术创作&#xff0c;大型语言模型&#xff08;LLM&#xff09;的能力边界不断被拓宽。现在&#xff0c;这股浪潮正涌向信息技术领域最古老、最核心的基石之一&#xff1a;数据库。一个…

题单【模拟与高精度】

P1042 [NOIP 2003 普及组] 乒乓球 P1042 [NOIP 2003 普及组] 乒乓球 - 洛谷 #include<bits/stdc.h> using namespace std;char C; string S; int n,A,B;void Work(int Lim) {for(char i:S){if(iW) A;if(iL) B;if(max(A,B)>Lim && abs(A-B)>2){cout<<…

数据结构学习基础和从包装类缓存到泛型擦除的避坑指南

目录 1.数据结构的概念和算法 1.1 数据结构的概念 1.2 数据结构的集合框架 1.3 算法 1.3.1 时间复杂度 1.3.2 空间复杂度 2.包装类 2.1 为什么需要包装类&#xff1f; 2.2 装箱和拆箱 3. 初识泛型 3.1 认识泛型 3.2 泛型类的使用 3.3 泛型的编译 3.4 通配符 3.4.1 …

网络安全基础知识【6】

什么是防火墙1.防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、 专用网与公共网之间的界面上构造的保护屏障 2.防火墙实际上是一种隔离技术 3.防火墙重要的特征是增加了区域的概念防火墙的定义 隔离可信与不可信网络的设备/软件&#xff0c;基于策略控制流量…

Apache Doris数据库——大数据技术

Apache Doris一、简介1.1、Apache Doris简介1.2、Apache Doris 与传统大数据架构相比1.3、doris是java团队掌控大数据能力最优选择1.4、 OLTP&#xff08;在线事务处理&#xff09; 与 OLAP&#xff08;在线分析处理&#xff09;1.5、发展历程1.6、应用现状1.7、整体架构1.7.1、…

Conda和pip的使用记录

Conda和pip的使用记录一、创建新的 Conda 环境二、激活环境三、安装其他包&#xff08;可选&#xff09;四、查看已有环境五、删除环境&#xff08;可选&#xff09;⚙️ Conda 下载缓慢的解决方案&#xff08;推荐使用国内镜像&#xff09;&#x1f527; 方法一&#xff1a;**…

详解Python标准库之互联网数据处理

详解Python标准库之互联网数据处理 在互联网时代&#xff0c;数据的产生、传输和处理无处不在。从电子邮件的收发到 API 接口的数据交换&#xff0c;从二进制数据的编码到 MIME 类型的识别&#xff0c;Python 标准库提供了一整套强大的工具集&#xff0c;帮助开发者轻松应对各种…

适 配 器 模 式

前阵子&#xff0c;笔者在网上淘来一个二手显示屏来搭配我装好的主机&#xff0c;但是送到手上后我却找不到电源适配器的踪迹。于是我就在家找了根电源线接上了显示屏&#xff0c;倒是能亮&#xff0c;就是屏幕闪得和机关枪似的。这是因为我的显示屏需要12V的供电&#xff0c;我…

智慧零售商品识别准确率↑32%:陌讯多模态融合算法实战解析

原创声明本文为原创技术解析&#xff0c;核心技术参数与架构设计引用自《陌讯技术白皮书》&#xff0c;禁止任何形式的未经授权转载。一、行业痛点&#xff1a;智慧零售的 "看得见的障碍"在智慧零售场景中&#xff0c;从自助结算终端到智能货架管理&#xff0c;计算机…