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
.jpg)
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 异常处理。