我有一个 NVMe SSD,想将它用作 OSD 后端,但是当我想启用 SPDK(它可以作为块设备工作)时,我无法创建 OSD。
我做了以下事情:
启用 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)
- 我通过 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
- 输出和测试结果看起来不错,但是当我尝试将 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?
这困扰了我好几天,任何帮助将不胜感激!