2

我有一个 NVMe SSD,想将它用作 OSD 后端,但是当我想启用 SPDK(它可以作为块设备工作)时,我无法创建 OSD。

我做了以下事情:

  1. 启用 SPDK 构建 Ceph

    我编辑 CMakeLists.txt 以确保编译 SPDK:

CMAKE_DEPENDENT_OPTION(WITH_SPDK "Enable SPDK" ON
"CMAKE_SYSTEM_PROCESSOR MATCHES i386|i686|amd64|x86_64|AMD64|aarch64" ON) 
  1. 我通过 SPDK 脚本设置了我的 NVMe 设备,然后通过以下方式进行测试:
$ sudo src/spdk/scripts/setup.sh 
 0000:0a:00.0 (8086 0a54): nvme -> vfio-pci
 $sudo src/spdk/scripts/setup.sh status
 $sudo src/spdk/examples/nvme/identify/identify
 $sudo src/spdk/examples/nvme/hello_world/hello_world
  1. 输出和测试结果看起来不错,但是当我尝试将 OSD 创建为Ceph docs时,我遇到了错误:
 $sudo ceph-volume lvm create --bluestore --data spdk:0000.0a.00.0
 ceph-volume lvm create: error: argument --data: invalid <ceph_volume.util.arg_validators.ValidDevice object at 0x7fda562de1d0> value: 'spdk:0000.0a.00.0'

我尝试用序列号替换 PCIe-id 但输出是一样的,我做了一些其他尝试但都失败了......

我在Ceph 文档 » ceph-volume » 概述中找到了这个描述:

ceph-volume 被设计成一个模块化工具,因为我们预计人们将通过多种方式配置我们需要考虑的硬件设备。已经有两个:仍在使用且具有 GPT 分区(由 simple 处理)的遗留 ceph-disk 设备和 lvm。我们直接从用户空间管理 NVMe 设备的 SPDK 设备即将出现,LVM 将无法在那里工作,因为根本不涉及内核。

所以我想知道我应该怎么做,或者 Octopus() 不支持 SPDK?

这困扰了我好几天,任何帮助将不胜感激!

4

0 回答 0