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

Ceph Octopus版本添加SPDK后端OSD的方法及故障求助

解决Ceph Octopus版本中SPDK NVMe设备创建OSD的问题

我来帮你梳理下这个困扰你多日的问题,你遇到的核心矛盾其实和ceph-volume lvm的设计限制直接相关,结合你使用的Octopus版本,咱们一步步拆解解决方案:

问题根源

你在Ceph文档里看到的结论完全正确:

ceph-volume是模块化工具,当前支持legacy ceph-disk设备和lvm,而SPDK设备因直接在用户态管理NVMe,不依赖内核,LVM无法适配,这类设备已在规划中

ceph-volume lvm模块的定位就是管理内核块设备和LVM逻辑卷,而SPDK是彻底绕开内核块层的用户态存储方案,LVM根本无法识别spdk:前缀的设备,所以用ceph-volume lvm create指定SPDK设备必然会触发参数验证错误。

Octopus版本的SPDK支持现状

Ceph Octopus(15.x)版本没有正式支持通过ceph-volume创建SPDK后端的OSD,SPDK作为BlueStore后端的支持在这个版本处于早期阶段,只能通过手动调用ceph-osd命令来初始化,而非依赖ceph-volume的自动化流程。

正确的手动创建步骤

既然ceph-volume lvm走不通,咱们换用手动初始化的方式,步骤如下:

  1. 确认前置条件:你已经完成的SPDK设备绑定(setup.sh)和功能测试(identify、hello_world)都是正确的,这部分无需重复操作。

  2. 获取OSD ID:先在Ceph集群中创建一个新的OSD ID:

    sudo ceph osd create
    

    执行后会输出一个数字,比如10,这就是咱们要用到的{osd-id}。

  3. 创建OSD数据目录:

    sudo mkdir -p /var/lib/ceph/osd/ceph-{osd-id}
    sudo chown ceph:ceph /var/lib/ceph/osd/ceph-{osd-id}
    
  4. 初始化SPDK后端的BlueStore OSD:
    直接用ceph-osd命令完成格式化和密钥生成,这里假设你的SPDK设备同时作为block、db、wal存储(如果拆分设备,分别指定不同的spdk:地址即可):

    sudo ceph-osd -i {osd-id} --mkfs --mkkey \
      --bluestore-block-path spdk:0000:0a:00.0 \
      --bluestore-block-db-path spdk:0000:0a:00.0 \
      --bluestore-block-wal-path spdk:0000:0a:00.0
    
  5. 注册OSD到集群:

    • 首先导入OSD密钥到集群:
      sudo ceph auth add osd.{osd-id} osd 'allow *' mon 'allow profile osd' \
        -i /var/lib/ceph/osd/ceph-{osd-id}/keyring
      
    • 然后将OSD添加到CRUSH映射({weight}是OSD的权重,比如对应磁盘容量的相对值,{host-name}是当前节点的主机名):
      sudo ceph osd crush add osd.{osd-id} {weight} host={host-name}
      
  6. 启动OSD服务:

    sudo systemctl start ceph-osd@{osd-id}
    

    可以用systemctl enable ceph-osd@{osd-id}设置开机自启。

后续版本的简化方案

如果你后续升级到Ceph Pacific(16.x)及以上版本,ceph-volume新增了raw模块,专门用于管理非LVM的原始设备(包括SPDK用户态设备),此时可以用更简洁的命令创建:

sudo ceph-volume raw create --bluestore --data spdk:0000:0a:00.0

这个模块会自动完成OSD初始化、集群注册和服务配置,无需手动执行多步操作。

注意事项

  • 确保编译Ceph时SPDK的路径配置正确,环境变量SPDK_DIR指向你的SPDK源码目录(如果编译时没指定的话)
  • Octopus版本的SPDK支持存在一些已知的稳定性问题,如果生产环境使用,建议优先考虑升级到Pacific+版本
  • 手动创建的OSD,ceph-volume的自动维护功能(比如故障检测、替换)无法覆盖,需要自行负责OSD的监控和运维

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:54:09