侧边栏壁纸
博主头像
青菜-halo2 博主等级

行动起来,活在当下

  • 累计撰写 74 篇文章
  • 累计创建 6 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Ceph集群节点完全丢失恢复实战指南

Administrator
2025-09-13 / 0 评论 / 2 点赞 / 25 阅读 / 0 字

概述

本文记录了在一个三节点Ceph集群中,其中一个节点(ceph02)意外完全丢失(包括磁盘数据)后的完整恢复过程。集群使用Cephadm管理工具,运行Ceph Octopus (v15.2.17)版本。本文将作为技术文档和实战指南,供后续参考和使用。

环境信息

  • 集群状态: 3节点Ceph集群 (ceph01, ceph02, ceph03)

  • Ceph版本: 15.2.17 (Octopus)

  • 管理工具: Cephadm

  • 网络配置: 192.168.66.0/24网段

  • 存储服务: OSD, Monitor, Manager, MDS, RGW

故障现象

ceph02节点完全不可用,包括:

  • 节点物理故障或操作系统崩溃

  • 所有磁盘数据丢失

  • 节点无法通过网络访问

第一阶段:故障评估与集群保护

1.1 检查集群状态

首先确认集群当前状态和健康度:

ceph -s
ceph osd tree
ceph orch ps --hostname ceph02

发现的问题:

  • ceph02节点上所有守护进程状态为"host is offline"

  • 集群健康状态为HEALTH_WARN

  • 数据冗余度降低,部分对象降级

1.2 设置保护性标记

防止集群在恢复期间进行不必要的数据迁移:

ceph osd set noout
ceph osd set norebalance
ceph osd set norecover

第二阶段:清理故障节点

2.1 从编排器中移除节点

ceph orch host rm ceph02

2.2 清理残留的Monitor服务

ceph mon dump
ceph mon rm ceph02

2.3 清理CRUSH Map中的残留条目

ceph osd crush tree
ceph osd crush rm ceph02

2.4 验证清理结果

ceph -s
ceph osd tree
ceph orch ps --hostname ceph02

第三阶段:新节点准备

3.1 系统基础配置

在新节点ceph02上执行:

# 设置主机名
hostnamectl set-hostname ceph02
​
# 配置网络
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1
systemctl restart network
​
# 配置主机解析
vim /etc/hosts
​
# 关闭防火墙和SELinux
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
vim /etc/selinux/config

3.2 安装必要软件

# 配置Yum源
cd /etc/yum.repos.d/
mv C7.repo back/
yum clean all
​
# 安装基础工具
yum update -y
yum install -y wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl
​
# 安装Docker
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl enable --now docker
​
# 配置Docker镜像加速
vim /etc/docker/daemon.json
systemctl restart docker

3.3 时间同步配置

yum install -y chrony
vim /etc/chrony.conf
systemctl enable --now chronyd
chronyc sources -v

3.4 内核升级(可选但推荐)

# 安装新内核
yum install -y kernel-ml
grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo)
reboot

第四阶段:重新加入集群

4.1 配置SSH互信

在ceph01节点上执行:

ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph02

4.2 添加节点到编排器

ceph orch host add ceph02 192.168.66.102
ceph orch host ls

4.3 部署核心服务

# 部署Monitor
ceph orch apply mon ceph01,ceph02,ceph03

# 部署Manager
ceph orch apply mgr ceph01,ceph02,ceph03

# 部署OSD(自动检测可用设备)
ceph orch apply osd --all-available-devices

# 部署MDS服务
ceph orch apply mds myfs --placement="3 ceph01 ceph02 ceph03"

# 部署RGW服务
ceph orch apply rgw myorg us-east-1 --placement="3 ceph01 ceph02 ceph03"

4.4 容器镜像准备

如果新节点无法访问外部镜像仓库,需要手动导入镜像:

# 在已有节点上导出镜像
docker save -o ceph-images.tar quay.io/ceph/ceph:v15 quay.io/ceph/ceph-grafana:6.7.4 quay.io/prometheus/prometheus:v2.18.1 quay.io/prometheus/alertmanager:v0.20.0 quay.io/prometheus/node-exporter:v0.18.1

# 传输到新节点
scp ceph-images.tar ceph02:/root/

# 在新节点上加载镜像
docker load -i ceph-images.tar

第五阶段:验证与监控

5.1 检查服务状态

ceph -s
ceph orch ps --hostname ceph02
ceph osd tree
ceph orch device ls

5.2 监控数据恢复

# 实时监控恢复状态
ceph -w

# 查看详细恢复进度
ceph progress

# 查看OSD使用情况
ceph osd df tree

5.3 取消保护性标记

当确认恢复正常后,取消之前设置的保护标记:

ceph osd unset noout
ceph osd unset norebalance
ceph osd unset norecover

恢复结果验证

恢复完成后,检查集群状态:

ceph -s
ceph osd tree
ceph pg stat

预期结果:

  • 所有服务状态正常 (HEALTH_OK)

  • 所有PG状态为active+clean

  • 数据冗余度恢复正常

  • 所有OSD正常运行

经验总结与最佳实践

成功关键因素

  1. 事前准备: 完善的监控和报警系统能及时发现故障

  2. 操作谨慎: 设置保护性标记防止恢复期间的数据混乱

  3. 版本一致: 确保新节点软件版本与集群一致

  4. 网络配置: 主机名、IP地址与故障前保持一致

遇到的问题及解决方案

  1. Stray daemon警告: 通过清理残留服务和等待自动清理解决

  2. Monitor磁盘空间不足: 定期清理monitor日志和数据

  3. SSH连接问题: 确保SSH密钥正确配置和known_hosts清理

预防措施建议

  1. 定期备份: 备份Ceph关键配置和认证密钥

  2. 监控告警: 设置磁盘空间、节点离线等关键指标的告警

  3. 文档完善: 维护集群架构图和恢复流程文档

  4. 演练测试: 定期进行灾难恢复演练

附录:常用诊断命令

# 集群状态检查
ceph -s
ceph health detail
​
# OSD相关
ceph osd tree
ceph osd df tree
ceph osd dump
​
# 服务状态
ceph orch ps
ceph orch host ls
ceph orch device ls
​
# 数据分布
ceph pg stat
ceph pg dump
​
# 监控信息
ceph mon stat
ceph mon dump
​
# 性能监控
ceph -w
ceph progress

通过本文记录的过程,我们成功恢复了完全丢失的Ceph节点,确保了集群的完整性和数据的安全性。这份文档不仅可以作为本次恢复工作的记录,也可以作为未来类似故障处理的参考指南。


2

评论区