searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Ceph集群rados对象unfound处理流程

2023-05-26 02:38:14
71
0

1.1 环境检查

       通过ceph -s等方式检查集群状态是否已稳定,不存在

osd服务反复up/down;

上报心跳超时;

有slow ops

有大量数据迁移中

等情况。

1.2 查询unfound对象相应的信息

  1. 查看unfound对象所在的pg

#ceph health detail 

 

  1. 查询丢失对象

#ceph pg {pgid} list_unfound

 

  1. 对对应pg进行状态查询,记录对应的active/up set及恢复状态中是否有osd处于down状态

#ceph pg {pgid} query

 

  1. 若后端存储类型为filestore,先备份osd上的对象(若为bluestore则跳过)

查寻丢失对象,将对象哈希转化为16进制,如下图转换后为4E220181

对象所在的目录层级为哈希字符由后至前,直至没有子目录,如图中对象所在目录为

/var/lib/ceph/osd/ceph-{osdid}/{pgid}_head/DIR_1/DIR_8/DIR_1/DIR0/DIR2

 

将对应对象拷贝,并校验文件完整性

#cp -a {object} {target dir}

#md5sum {object}

 

1.3 拉起down状态osd服务

尝试将down的osd恢复,一般恢复后就可以找到object

登录osd所在机器

#systemctl restart ceph-osd@{osdid}

检查osd启动状态

检查启动后对象是否仍旧为unfound状态

1.4 回退unfound对象(osd服务无法拉起/拉起后对象仍未unfound状态)

执行前建议让研发同学评估此操作是否存在数据丢失风险

集群仅为副本模式时可执行回退,EC模式无法回退

若osd无法拉起,先将osd删除

#ceph osd out osd.{osdid}

#.ceph osd rm osd.{osdid}

#ceph osd crush remove osd.{osdid}

#ceph auth del osd.{osdid}

 

将丢失回退至存活osd中存放的旧版本

#ceph pg {pgid} mark_unfound_lost revert

观察对象是否恢复

1.5 删除unfound对象(若无法回退)

执行前建议让研发同学评估此操作是否存在数据丢失风险

若osd无法拉起,先将osd删除

#ceph osd out osd.{osdid}

#.ceph osd rm osd.{osdid}

#ceph osd crush remove osd.{osdid}

#ceph auth del osd.{osdid}

 

将丢失对象删除

#ceph pg {pgid} mark_unfound_lost delete

观察集群状态是否恢复

0条评论
作者已关闭评论
刘****滨
2文章数
1粉丝数
刘****滨
2 文章 | 1 粉丝
刘****滨
2文章数
1粉丝数
刘****滨
2 文章 | 1 粉丝
原创

Ceph集群rados对象unfound处理流程

2023-05-26 02:38:14
71
0

1.1 环境检查

       通过ceph -s等方式检查集群状态是否已稳定,不存在

osd服务反复up/down;

上报心跳超时;

有slow ops

有大量数据迁移中

等情况。

1.2 查询unfound对象相应的信息

  1. 查看unfound对象所在的pg

#ceph health detail 

 

  1. 查询丢失对象

#ceph pg {pgid} list_unfound

 

  1. 对对应pg进行状态查询,记录对应的active/up set及恢复状态中是否有osd处于down状态

#ceph pg {pgid} query

 

  1. 若后端存储类型为filestore,先备份osd上的对象(若为bluestore则跳过)

查寻丢失对象,将对象哈希转化为16进制,如下图转换后为4E220181

对象所在的目录层级为哈希字符由后至前,直至没有子目录,如图中对象所在目录为

/var/lib/ceph/osd/ceph-{osdid}/{pgid}_head/DIR_1/DIR_8/DIR_1/DIR0/DIR2

 

将对应对象拷贝,并校验文件完整性

#cp -a {object} {target dir}

#md5sum {object}

 

1.3 拉起down状态osd服务

尝试将down的osd恢复,一般恢复后就可以找到object

登录osd所在机器

#systemctl restart ceph-osd@{osdid}

检查osd启动状态

检查启动后对象是否仍旧为unfound状态

1.4 回退unfound对象(osd服务无法拉起/拉起后对象仍未unfound状态)

执行前建议让研发同学评估此操作是否存在数据丢失风险

集群仅为副本模式时可执行回退,EC模式无法回退

若osd无法拉起,先将osd删除

#ceph osd out osd.{osdid}

#.ceph osd rm osd.{osdid}

#ceph osd crush remove osd.{osdid}

#ceph auth del osd.{osdid}

 

将丢失回退至存活osd中存放的旧版本

#ceph pg {pgid} mark_unfound_lost revert

观察对象是否恢复

1.5 删除unfound对象(若无法回退)

执行前建议让研发同学评估此操作是否存在数据丢失风险

若osd无法拉起,先将osd删除

#ceph osd out osd.{osdid}

#.ceph osd rm osd.{osdid}

#ceph osd crush remove osd.{osdid}

#ceph auth del osd.{osdid}

 

将丢失对象删除

#ceph pg {pgid} mark_unfound_lost delete

观察集群状态是否恢复

文章来自个人专栏
Ceph相关
2 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0