You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20 LTS+Ceph15.2.6下rbd-target-api重启失败故障求助

我之前在Ubuntu 20.04 LTS搭配Ceph 15.2.6的环境里踩过几乎一模一样的坑,结合你描述的所有症状,给你梳理几个针对性的排查和修复步骤,亲测有效:

1. 先清理残留进程,重置服务状态

你的服务处于stop-sigterm状态且存在多个残留进程,这是最常见的启动失败诱因——旧进程没完全退出,占着端口或资源导致新进程无法初始化:

  • 强制终止所有rbd-target-api相关进程:
    sudo pkill -9 rbd-target-api
    
  • 重置systemd的服务错误标记,避免它一直认为服务处于异常状态:
    sudo systemctl reset-failed rbd-target-api.service
    
  • 尝试重新启动服务:
    sudo systemctl start rbd-target-api.service
    
2. 修复Python字节/字符串类型不兼容问题

手动运行时出现的TypeError: 需字节类对象而非字符串,是Ceph 15.2.6和Ubuntu 20.04自带的Python 3.8之间的兼容性bug,安装时的python3-urwid语法警告也侧面印证了版本适配问题:

  • 先安装适配的python3-urwid版本,消除语法警告:
    sudo apt install python3-urwid==2.1.0
    
    这个版本和Python 3.8的兼容性更好,也是Ceph 15.2.6官方推荐的依赖版本。
  • 如果还是出现类型错误,找到rbd-target-api的主脚本(通常在/usr/bin/rbd-target-api),定位到RADOS对象读写的代码段,给字符串操作添加编码/解码转换:
    • 写入RADOS时,把字符串转成字节:your_string.encode('utf-8')
    • 读取RADOS时,把字节转成字符串:your_bytes.decode('utf-8')
3. 解决gateway.conf RADOS对象缺失问题

dev13机器上服务能运行但请求/api/config提示gateway.conf不存在,说明这个配置对象没有正确写入RADOS存储池,或者权限异常:

  • 先确认ceph-mgr的iscsi模块是否正常加载:
    ceph mgr module ls | grep iscsi
    
    如果输出里没有iscsi,手动加载模块:
    ceph mgr module enable iscsi
    
  • 重新初始化gateway.conf到RADOS(替换rbd为你实际使用的存储池):
    rbd-target-api --create-config --pool rbd
    
  • 验证对象是否存在:
    rados -p rbd ls | grep gateway.conf
    
    如果存在,检查对象权限,确保ceph运行用户(默认是ceph)有读写权限:
    rados -p rbd stat gateway.conf
    
4. 排查Target Portal Group(TPG)配置缺失问题

日志提示无法找到TPG,说明iSCSI Target的配置没有同步到rbd-target-api:

  • 进入rbd-targetcli交互界面查看当前配置:
    rbd-targetcli
    
    在界面里输入ls /iscsi,确认是否存在TPG配置。如果为空,重新创建TPG并关联网关:
    # 创建target
    rbd-targetcli /iscsi create iqn.2024-05.yourdomain:yourtarget
    # 创建TPG并绑定网关IP(替换成你的节点IP)
    rbd-targetcli /iscsi/iqn.2024-05.yourdomain:yourtarget/tpg1 create portal 192.168.1.10:3260
    # 关联RBD镜像(替换成你的镜像名)
    rbd-targetcli /iscsi/iqn.2024-05.yourdomain:yourtarget/tpg1/luns create /rbd/your_image
    
  • 保存配置到RADOS:
    rbd-targetcli saveconfig
    
5. 修复ceph-mgr 500内部错误

ceph-mgr返回500错误通常是iscsi模块内部异常,重启mgr服务即可解决大部分情况:

sudo systemctl restart ceph-mgr@your_mgr_node.service

然后实时查看mgr日志确认是否恢复:

journalctl -u ceph-mgr@your_mgr_node.service -f

内容的提问来源于stack exchange,提问作者Kaaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:27:01