欢迎访问机房运维工作室

爱数知识库

AnyShare-AnyShare 集群 ceph 存储 osd 无法启动问题处理_2

频道:爱数知识库 日期: 浏览:75

AnyShare-AnyShare 集群 ceph 存储 osd 无法启动问题处理

关键字

ceph、osd


适用产品

  • AnyShare 6.0
  • AnyShare 7.0


问题描述

osd 服务异常,且无法正常启动。


问题影响

无法启动 osd 服务,集群数据均衡,磁盘读写占用大量系统资源,影响用户上传下载文件。


问题原因

RGW 的 index 数据以 omap 形式存储在 osd 所在节点的 leveldb 或 rocksDB 中,当单个 bucket 存储的 Object 数量高达百万数量级的时候,deep-scrub 和bucket list 一类的操作将极大的消耗磁盘资源,导致对应 osd 出现异常,osd 对应的服务卡在 compaction 阶段无法启动。


解决方案

为了解决该问题,需要手动对异常 OSD 服务数据库进行压缩,请按照以下步骤执行:

异常服务以 osd3 为例:

1.执行以下命令停止对应的 OSD 服务:

systemctl stop ceph-osd@3.service

2.执行以下命令检查当前版本的 osd 使用的存储引擎类型:

cat /var/lib/ceph/osd/osd3/superblock

image.png

3.根据步骤2查询结果执行以下操作:

a.如果查询结果返回 rocksdb,执行以下命令压缩数据:

ceph-kvstore-tool rocksdb /var/lib/ceph/osd/osd3/current/omap compact

b.如果查询结果返回的是 leveldb,执行以下命令压缩数据:

ceph tell osd.3 compact

ceph daemon osd.3 compact

4.压缩完成之后,执行以下命令启动 osd 服务:

systemctl start ceph-osd@3.service


更多信息

关于本次问题的详细分析,参考以下链接:OSD 异常处理