Ceph怎么更换损坏报废的物理硬盘并触发数据重新平衡平移

梦磊小哥_9702

梦磊小哥_9702

2026-11-04

348人浏览

原创

必须先让Ceph主动释放故障OSD数据职责再换盘,否则新盘上线会反复读取坏扇区引发持续backfill、recovery和I/O hang;需通过dmesg、smartctl、ceph-volume list和ceph health detail交叉验证是否真为物理损坏,再严格按ceph osd out→stop→crush rm→auth del→rm/purge顺序操作,最后用ceph-volume lvm zap和prepare重建并手动reweight。

ceph怎么更换损坏报废的物理硬盘并触发数据重新平衡平移

直接换盘不等于数据安全迁移,必须先让 Ceph 主动释放故障 OSD 的数据职责,再物理更换,否则新盘上线后集群会反复尝试读取坏扇区,触发持续 backfill、recovery 和 I/O hang。

怎么确认是物理硬盘损坏而不是临时掉线

不能只看 ceph osd tree 显示 down 就动手。先登录对应节点,用这些命令交叉验证:

  • dmesg -T | grep -i "sdk1\|error\|fail" —— 查看内核是否报 I/O 错误、sector read failure 或 end_request 超时
  • smartctl -a /dev/sdk1 | grep -E "(Reallocated_Sector_Ct|Current_Pending_Sector|UDMA_CRC_Error_Count)" —— 任一值 > 0 就说明物理层已不可靠
  • ceph-volume lvm list | grep sdk1 —— 确认该盘是否还被 Ceph 认作有效 data 设备;若无输出或显示 broken,基本可判报废
  • ceph health detail | grep -A5 "OSD_DOWN\|PG_DAMAGED" —— 若出现 inconsistent PG,说明已有对象校验失败,不能再等

移除故障 OSD 的关键顺序不能错

顺序颠倒会导致 ceph osd rm 失败、pvremove 卡死,甚至引发元数据损坏。以下命令必须逐条执行、每步确认成功后再继续:

  • ceph osd out osd.197 —— 先标记为 out,让 CRUSH 开始迁出主 PG,避免新写入
  • systemctl stop ceph-osd@197 —— 必须停进程,否则 crush rm 后它可能还在跑并上报 up 状态
  • ceph osd crush rm osd.197 —— 从 CRUSH map 移除,这是触发数据重平衡的起点
  • ceph auth del osd.197 —— 清理认证密钥,避免残留 keyring 干扰后续 prepare
  • ceph osd rm 197 —— 最后才删 OSD 记录;Jewel 及之后版本推荐用 ceph osd purge 197 --yes-i-really-mean-it 更彻底

执行完立刻跑 ceph -s,确认状态变为 HEALTH_WARN 且 recovery 进度在上涨,才算真正启动重平衡。

ModelScope
ModelScope

一个面向AI开发者的开源模型与数据社区,提供模型、数据集和相关工具资源,方便用户探索、使用和开发人工智能应用。

下载

擦除新盘并重建 OSD 的实操要点

新盘不是插上就能用。LVM metadata、旧 UUID、残留 superblock 都会导致 ceph-volume lvm prepare 报 device is in use 或静默失败:

  • 先用 lsblk 确认新盘设备名(如 /dev/sdk1),再执行:ceph-volume lvm zap /dev/sdk1 --destroy —— 强制清空 LVM label 和 filesystem signature
  • 如果原 OSD 是 BlueStore,新盘必须用 --bluestore;FileStore 已淘汰,别再用 --filestore
  • prepare 命令里不要指定 --osd-id —— 让 Ceph 自动分配新 ID,避免 ID 冲突或 CRUSH map 错位;正确写法:ceph-volume lvm prepare --bluestore --data /dev/sdk1
  • prepare 成功后,手动运行 systemctl start ceph-osd@,再检查 ceph osd tree 是否显示 up 且权重正常

重平衡期间必须盯住的三个指标

数据平移不是“开始就完事”,卡在 99%、反复 retry、IO 打满导致业务延迟,都是常见但容易被忽略的问题:

  • ceph -s 中的 recovery io 和 backfill io 数值 —— 若长期为 0,说明 CRUSH weight 为 0 或新 OSD 未激活;若持续 > 100MB/s 且宿主机 iowait > 50%,需临时限速:ceph tell osd.* injectargs '--osd-max-backfills 2 --osd-recovery-max-active 1'
  • ceph pg dump_stuck inactive —— 出现 stuck inactive PG,大概率是新 OSD 的 bluefs 分区空间不足或 journal device 不可用
  • ceph osd df 中新 OSD 的 VAR 列(used/size 比值)增长是否线性 —— 若某段时间停滞,立即查该 OSD 日志:journalctl -u ceph-osd@ -n 100 --no-pager,重点搜 ERROR 和 ENOSPC

最易被跳过的环节是:换盘后没等 ceph -s 回到 HEALTH_OK 就认为完成。实际中,即使 recovery 完成,CRUSH weight 默认仍是 0,需手动 ceph osd reweight osd. 1.0 才算真正回归服务流量。这个值不调,新盘永远只存冷数据,热数据仍压在其他 OSD 上。

相关专题

更多
Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

2026.11.03

0

18

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

2026.11.03

0

11

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

2026.11.03

0

11

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

2026.11.03

0

17

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

2026.11.03

0

12

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

2026.11.03

0

10

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

2026.11.02

20

14

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

2026.11.02

40

17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习