跳到主要内容

存储概览

openRuyi 提供了一套从本地块设备到分布式存储的存储软件栈: io_uring、NVMe 等内核接口,文件系统与软件 RAID,网络存储协议,用户态 I/O 框架,存储加速库,以及 Ceph。这些软件包均在 riscv64 上原生构建。

本文列出各组件及已知限制,并介绍这套软件栈的测试情况。使用示例请参阅存储快速入门。

组件​

软件包版本以仓库为准,可运行 dnf info <软件包> 查看当前可用的版本。

层次软件包说明
异步 I/Oliburingio_uring 用户态库
性能测试fio灵活的 I/O 测试工具,也可用于数据校验
NVMenvme-cli、libnvmeNVMe 管理,NVMe over Fabrics (TCP/RDMA/loop) 主机端工具
文件系统xfsprogs、btrfs-progs、e2fsprogs创建、检查与修复工具
软件 RAID 与卷管理mdadm、lvm2、multipath-toolsMD RAID、逻辑卷、多路径
RDMArdma-core、libibverbs-utils、librdmacm-utils、infiniband-diagsVerbs/RDMA CM 库与工具,包括 Soft-RoCE (rxe)
网络块存储open-iscsi、libnbd、qemu-toolsiSCSI initiator;NBD 客户端库及 nbdcopy/nbdinfo;qemu-nbd
网络文件系统nfs-client、nfs-kernel-serverNFS 客户端与服务端
用户态 I/O 框架dpdk、spdk轮询模式报文处理;用户态 NVMe、NVMe-oF、iSCSI 与 vhost target
加速库isa-l、isa-l_crypto纠删码、RAID、CRC、压缩;多缓冲哈希与 AES
分布式存储cephRADOS、RBD、CephFS、RGW

子包遵循通常的约定: 主包提供运行时库和守护进程,-devel 提供头文件和 pkg-config 文件,-tools 提供辅助命令行工具。

软件包主包-tools 子包
dpdkdpdk-testpmd、dpdk-proc-info、PMD 库dpdk-test、dpdk-dumpcap、dpdk-pdump、dpdk-graph、dpdk-test-*、dpdk-*.py 脚本 (如 dpdk-devbind.py)
spdkspdk_tgt、nvmf_tgt、iscsi_tgt、vhost、spdk_* 工具、spdk-setupspdk-rpc、spdk-cli、spdk-sma、spdk-mcp
isa-llibisaligzip

Ceph 拆分为 ceph-common (客户端工具)、ceph-base、ceph-mon、ceph-mgr、ceph-osd、ceph-mds、ceph-radosgw、rbd-mirror、ceph-fuse 等子包。纠删码插件 (包括 ISA-L 插件 libec_isa.so) 位于 ceph-base 中。

SPDK 构建时启用了 DPDK、RDMA、iSCSI initiator、io_uring 和 Ceph RBD 支持,并使用系统的 ISA-L 和 ISA-L crypto 库。

已知限制​

  • 无法在 riscv64 上用 cephadm 部署集群。 虽然提供了 cephadm 软件包,但 cephadm 通过容器镜像部署守护进程,而上游没有 riscv64 的 Ceph 容器镜像。请直接使用 RPM 软件包部署守护进程,参见存储快速入门。
  • 未提供 Ceph mgr dashboard。 构建时去掉了 dashboard 模块及其 Web 前端。prometheus 等其他 mgr 模块可以正常使用。
  • Ceph 构建中未启用 Crimson OSD 和基于 SPDK 的 BlueStore。
  • DPDK 和 SPDK 需要大页内存,绑定真实设备还需要平台提供 IOMMU/VFIO 或 UIO 支持。没有真实硬件时,使用虚拟设备 (net_null、malloc bdev、回环 NVMe-oF) 即可完成功能测试。

测试​

存储软件栈由 openRuyi 基于 tmt/fmf 和 beakerlib 的自动化测试套件覆盖,用例分组如下:

  • 功能测试: liburing、fio、nvme-cli、mdadm、xfsprogs、btrfs-progs、rdma-core、open-iscsi、libnbd,以及 storage 打包完整性检查,用于验证这些软件包中所有 systemd unit 的 Exec= 与 udev 规则的 RUN/PROGRAM 目标都存在。
  • 特性测试: dpdk、spdk、isa-l、isa-l_crypto 和 ceph。其中包括一个端到端的单节点 Ceph 集群测试,覆盖 RADOS、RBD、基于 ISA-L 插件的纠删码池和 prometheus mgr 模块。

当硬件、内核模块或大页内存等前提条件缺失时,用例报告为 SKIP 而非 FAIL。

报告问题​

如果某个存储软件包在 openRuyi 上工作异常,请在 openRuyi 仓库中提交 issue,并附上软件包名称、rpm -q <软件包> 与 uname -r 的输出,以及复现步骤。