疑难病ceph恢复¶
概述¶
os版本:CentOS Linux release 7.9.2009
ceph版本:ceph version 14.2.19
问题:因ceph空间不足导致ceph故障;[空间问题,主要原因: 数据备份较多,较大~]
具体修复操作¶
- 删除ceph上备份
- 停止物理机、虚拟机上备份脚本
- 停止所有物理机上img在ceph上的虚拟机
- osd修复
- pg修复
- mds修复
osd修复¶
osd服务修复¶
部分osd因空间不足启动不了,新增磁盘,扩展lv
迁移优化¶
以下这些命令用于调整 Ceph OSD 的恢复行为和操作优先级,主要目的是平衡集群恢复速度与客户端正常读写的性能,尤其适用于集群处于恢复状态(如 OSD 故障后重建、扩容后数据均衡)时优化资源分配。
ceph config set osd osd_max_backfills 4- 含义:控制单个 OSD 同时处理的 “回填(backfill)” 操作数量(默认值通常为 1-2)。
- 作用:回填是指 OSD 被动接收其他 OSD 复制过来的数据(用于恢复冗余度)。设置为 4 表示每个 OSD 最多同时处理 4 个回填任务,避免过多回填占用网络 / IO 资源,影响客户端操作。
ceph config set osd osd_recovery_max_active 8- 含义:控制单个 OSD 主动发起的 “恢复(recovery)” 操作数量(默认值通常为 3-5)。
- 作用:恢复是指 OSD 主动向其他 OSD 复制数据以修复 PG 不一致。设置为 8 表示每个 OSD 最多主动发起 8 个恢复任务,数值越高恢复速度越快,但会占用更多资源。
ceph config set osd osd_recovery_op_priority 4- 含义:设置恢复操作的优先级(范围 1-63,默认通常为 3)。
- 作用:优先级数值越低,恢复操作在 OSD 处理队列中越靠后。设置为 4 表示恢复操作优先级较低,避免抢占客户端读写的资源,保证业务正常运行。
ceph config set osd osd_client_op_priority 63- 含义:设置客户端操作(如读写请求)的优先级(范围 1-63,63 为最高)。
- 作用:将客户端操作优先级设为最高(63),确保在恢复操作与客户端请求冲突时,优先处理用户业务,减少读写延迟。
pg修复¶
ceph pg deep-scrub 和 ceph pg repair 是 Ceph 中用于维护 PG(Placement Group,放置组)数据一致性的核心命令,前者用于深度检查数据完整性,后者用于修复已发现的不一致问题。以下是详细说明:
ceph pg deep-scrub <pg-id>:深度检查 PG 数据一致性
ceph pg repair <pg-id>:修复 PG 数据不一致
mds修复¶
高危操作¶
本次已操作,但数据还在,之后不建议执行此操作~
ceph fs reset <fs-name> --yes-i-really-mean-it 是一个高风险操作,用于彻底重置指定的 Ceph 文件系统(此处为 gdsrmfs),会删除该文件系统的所有元数据、数据及相关配置。以下是详细说明:
命令作用
- 完全删除指定文件系统(
gdsrmfs)的元数据池(cephfs_metadata相关)和数据池(cephfs_data相关)。 - 清除该文件系统关联的所有 MDS 配置(包括 rank、日志、缓存等)。
- 不可逆操作:所有文件系统数据(文件、目录结构、权限等)将永久丢失,无法恢复。
执行前提
- 确保文件系统存在:
- 卸载所有客户端挂载:
- 停止相关 MDS 服务:
修复¶
- 重启所有mds
- 检查修复mds
重置¶
命令 ceph-journal-tool --rank=cephfs:0 journal reset 用于重置 CephFS 中指定 MDS 实例(rank=cephfs:0)的元数据日志(journal)。这通常在 MDS journal 严重损坏、无法通过 repair 修复,或 journal 与元数据存储严重不一致时使用。
命令解析:
--rank=cephfs:0:指定目标 MDS 实例。cephfs是文件系统名称,0是 MDS 的 rank 编号(通常对应第一个 active MDS)。journal reset:清空并重置 MDS 的 journal(会删除现有 journal 中的所有数据)。
使用前提与风险
- 必须停止目标 MDS:操作前需确保对应 MDS 已停止,否则会导致数据损坏:
- 数据风险:
重置 journal 会丢失其中未同步到元数据存储(RADOS 池)的操作记录,可能导致元数据不完整或不一致。操作前务必备份 MDS 数据目录(默认路径:/var/lib/ceph/mds/ceph-cephfs-0/)。
-
适用场景:
-
journal 损坏导致 MDS 无法启动(日志中提示 journal 格式错误、校验和失败等)。
-
ceph-journal-tool --rank=cephfs:0 journal repair修复失败。 -
具体操作:
存储比例告警¶
-
ceph osd set-full-ratio(对应配置项mon_osd_full_ratio) -
默认值:
0.95(即 95%)。 -
作用:当 OSD(对象存储磁盘)的已用空间达到总容量的 95% 时,Ceph 会禁止客户端读写操作(集群进入 “只读” 或 “锁死” 状态),以此防止因磁盘空间耗尽导致数据丢失。此时集群无法正常提供服务,需紧急扩容或清理数据。
-
ceph osd set-backfillfull-ratio(对应配置项mon_osd_backfillfull_ratio) -
默认值:
0.90(即 90%)。 -
作用:当 OSD 已用空间超过 90% 时,Ceph 会暂停数据回填操作(如集群 Rebalance、故障恢复时的数据迁移)。这是 “存储满” 前的预警阶段 —— 若继续回填可能导致磁盘被写满,进而触发
full-ratio锁死。需在此时扩容或清理数据,避免集群进入只读状态。 -
ceph osd set-nearfull-ratio(对应配置项mon_osd_nearfull_ratio) -
默认值:
0.85(即 85%)。 - 作用:当 OSD 已用空间达到 85% 时,Ceph 会发出 *“nearfull” 警告 *(集群状态
HEALTH WARN),提示 “存储池接近满阈值”。这是最早期的预警,需提前规划扩容或清理,防止后续触发backfillfull-ratio(90%)和full-ratio(95%)的更严重限制。
三个参数的递进关系
三者按 “预警→限制回填→锁死读写” 的顺序生效:
nearfull-ratio (85%) → backfillfull-ratio (90%) → full-ratio (95%)
- 达到 85%:警告 “快满了”;
- 达到 90%:停止数据迁移(回填);
- 达到 95%:彻底禁止客户端读写;
cephfs 最大文件¶
cephfs 支持的最大文件默认为1TB,虚拟机镜像1.5T,启动报错,权限不足;

CephFS可以配置最大文件大小,默认情况下为1TB,可以修改为更高,通过ceph fs set <fs name> max_file_size <size in bytes>
总结¶
- 使用空闲目录扩展ceph-osd-lv
- OSD 的恢复行为和操作优先级操作
- pg 检查修复
- ceph fs reset
--yes-i-really-mean-it` 是一个高风险操作,勿操作 - mds修复和重建
- 存储比例告警
- cephfs 最大文件