ceph存储节点系统盘损坏集群恢复

简介: ceph存储节点系统盘损坏集群恢复

本文主要介绍ceph16版本集群节点系统磁盘故障后的集群恢复,虽然系统盘很多都是做了raid1,但从实际做的项目看,总是有很多未知意外发生,节点挂掉后,上面的mon和osd,mgr都会down掉,如果所在节点的mgr服务是激活状态,则其他节点所在的备用节点将会升级为激活状态。


移除问题主机


节点挂掉后,在确定不能继续开机进入系统的情况下,需要在其他正常的节点将故障节点进行移除,此次宕机的节点为node4,以下命令可能会导致数据丢失,因为 osd 将通过调用每个 osd 来强制从集群中清除。


ceph orch host rm node4 --offline --force


节点初始化操作


将node4节点即故障节点更换新的系统盘并重新安装系统,重装后node4主机名我修改成了node1,并更换了新的ip,在三台ceph节点上重新添加hosts解析


192.168.1.1 node1
192.168.1.2 node2
192.168.1.3 node3


将公钥添加至新主机


ssh-copy-id -f -i /etc/ceph/ceph.pub node1


安装docker环境


curl -sSL https://get.daocloud.io/docker | sh
systemctl daemon-reload
systemctl restart docker
systemctl enable docker


安装cephadm以及ceph-common


# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm
# chmod +x cephadm
# ./cephadm add-repo --release pacific
# ./cephadm install
# ./cephadm install  ceph-common


向集群中添加新节点


在ceph集群添加新主机


[root@node2 ~]# ceph orch host add node1
Added host 'node1'


添加后的主机列表可通过以下命令查看


ceph orch host ls


之后会自动安装mon以及crash等服务,还有node-exporter监控agent,但是新添加的节点上还不能进行ceph集群操作,因为新添加的节点上缺少ceph集群管理的密钥环,在上面的命令中其实可以看到新加的node1是缺少一个_admin标签的,这里提一下ceph是有几个特殊的主机标签的,以_开头的属于ceph主机的特殊标签,将_admin标签添加到这台新节点,就会导致cephadm 将配置文件ceph.conf和密钥环文件

ceph.client.admin.keyring分发到新节点上,这里我们把_admin标签添加至新节点,这样可以在新节点上执行ceph集群的操作。


ceph orch host label add node1 _admin
或者在添加节点时就可以把标签添加上
ceph orch host add node1 --labels=_admin


添加osd


之前想着原有的故障节点的osd直接恢复到现有集群上,后来发现虽然是恢复回去了,但是osd的daemon没有被cephadm所管理,osd的容器也没有被创建,因此还是把原来故障节点的osd给格式化了,重新添加的osd,不过这里还是把我恢复的操作写一下吧。先创建一个空的osd。


# vceph osd create
2


然后激活bluestore-osd的tmpfs目录 由于bluestore中osd的目录是以一个tmpfs的形式存在的,所以被umount掉了以后需要重新激活。


ceph-volume lvm activate (osdid) (fsid)


PS:这里的osdid就是我刚创建的,osdid为2,后面的fsid不是集群的fsid,而是这个osd自己的fsid,获取方式可以直接执行ll /dev/ceph*查看,osd-block-后面的即为osd的fsid


然后添加auth和crush map,重启osd


ceph auth add osd.2 osd 'allow *' mon  'allow rwx' -i /var/lib/ceph/osd/ceph-2/keyring


640.png


之后三个osd都会up,但是存在osd的daemon不被cephadm管理的问题,因此我还是删掉这个osd,重新格式化后添加的,删除osd的操作如下:


ceph orch ps --daemon_type osd
#查看osd对应的容器id,先停止容器,我这里没有osd容器启动,所以这步可以忽略
ceph osd out 2
ceph osd crush remove osd.2
ceph auth del osd.2
ceph osd rm 2


上步只是在ceph删除,还需要在磁盘上进行格式化


# 显示当前设备的状态
# dmsetup status
# 删除所有映射关系
# dmsetup remove_all
# 格式化刚才删除的osd所在磁盘
mkfs -t ext4 /dev/vdb


重新添加osd


ceph orch daemon add osd node1:/dev/vdb


此时集群就恢复正常了


640.png


相关文章
|
JSON JavaScript 数据格式
jwt-auth插件实现了基于JWT(JSON Web Tokens)进行认证鉴权的功能。
jwt-auth插件实现了基于JWT(JSON Web Tokens)进行认证鉴权的功能。
365 1
|
关系型数据库 虚拟化 iOS开发
VMware ESXi 8.0U3g macOS Unlocker & OEM BIOS 2.7 ConnectX-3 网卡特殊定制版
VMware ESXi 8.0U3g macOS Unlocker & OEM BIOS 2.7 ConnectX-3 网卡特殊定制版
264 0
|
存储 关系型数据库 文件存储
Ubuntu22.04LTS基于cephadm快速部署Ceph Reef(18.2.X)集群
这篇文章是关于如何在Ubuntu 22.04LTS上使用cephadm工具快速部署Ceph Reef(18.2.X)存储集群的详细教程,包括ceph的基本概念、集群的搭建步骤、集群管理以及测试集群可用性等内容。
3918 8
Ubuntu22.04LTS基于cephadm快速部署Ceph Reef(18.2.X)集群
|
Prometheus 监控 Cloud Native
prometheus监控ceph集群环境
文章介绍了如何使用Prometheus监控Ceph集群环境,包括启用Prometheus模块、验证模块启用成功、访问Ceph的exporter、修改Prometheus配置文件、热加载配置,以及Grafana采集数据的方法。同时,还涵盖了监控Ceph集群宿主机的步骤,如在所有节点安装node-exporter、修改Prometheus配置文件、热加载配置,以及Grafana采集数据。
701 6
|
存储 块存储
Ceph Reef(18.2.X)集群的OSD管理基础及OSD节点扩缩容
这篇文章是关于Ceph Reef(18.2.X)集群的OSD管理基础及OSD节点扩缩容的详细教程,涵盖了OSD的基础操作、节点缩容的步骤和实战案例以及OSD节点扩容的基本流程和实战案例。
736 6
|
存储 机器学习/深度学习 人工智能
文档智能与RAG技术在LLM中的应用评测
本文介绍了阿里云在大型语言模型(LLM)中应用文档智能与检索增强生成(RAG)技术的解决方案,通过文档预处理、知识库构建、高效检索和生成模块,显著提升了LLM的知识获取和推理能力,尤其在法律、医疗等专业领域表现突出。
1313 1
|
存储 监控 算法
《Ceph源码分析》——导读
本节书摘来自华章出版社《Ceph源码分析》一书中的导读,作者常涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看 目  录序言第1章 Ceph整体架构 **1.1 Ceph的发展历程1.2 Ceph的设计目标1.
7398 1
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
402 4
|
人工智能 监控 Python
[AI Embedchain] 集成 Langsmith
[AI Embedchain] 集成 Langsmith
[AI Embedchain] 集成 Langsmith
|
Java API Apache
从零到英雄的蜕变:如何用Apache Wicket打造你的第一个Web应用——不仅是教程,更是编程之旅的启航
【9月更文挑战第4天】学习Apache Wicket这一开源Java Web应用框架是一段激动人心的旅程。本文将指导你通过Maven搭建环境,并创建首个“Hello, World!”应用。从配置`pom.xml`到实现`HelloWorldApplication`类,再到`web.xml`的设置,一步步教你构建与部署简单网页。适合初学者快速上手,体验其简洁API与强大组件化设计的魅力。
429 1

热门文章

最新文章