知识地图: 分布式存储--Bluestore引擎
问:What SPDK can do to improve Ceph?
回答:
ceph遇到什么问题,如何解决
特性 | DPDK | SPDK |
---|---|---|
核心领域 | 网络数据包处理 | 存储I/O加速 |
主要技术 | 用户态网卡驱动、零拷贝 | 用户态NVMe驱动、异步I/O |
优化目标 | 高吞吐、低延迟的网络转发 | 低延迟、高并发的存储访问 |
典型硬件 | 高速网卡(如Intel NICs、SmartNIC) | NVMe SSD、持久内存(PMem) |
协同使用 | 可用于SPDK的网络传输层(如NVMe-oF over TCP) | 依赖DPDK实现网络加速时(如远程存储访问) |
RDMA(Remote Direct Memory Access)是一种网络传输技术,用于在远程主机之间直接访问内存。
SPDK是一个框架而不是分布式系统,它的基石是用户态(user space)、轮询(polled-mode)、异步(asynchronous)和无锁的NVMe驱动
SPDK (Storage performance development kit) 是由Intel发起、 用于加速使用NVMe SSD作为后端存储的应用软件加速库。
The Storage Performance Development Kit (SPDK) provides a set of tools and libraries for writing high performance, scalable, user-mode storage applications. It achieves high performance through the use of a number of key techniques:
一定看官方文档:
https://spdk.io/doc/concurrency.html
网络设备(路由器、交换机、媒体网关、SBC、PS网关等)需要在瞬间进行大量的报文收发,
因此在传统的网络设备上,往往能够看到专门的NP(Network Process)处理器,有的用[FPGA],这些专用器件通过内置的硬件电路高效转发报文,
只有需要对报文进行深度处理的时候才需要CPU干涉。
但在公有云、NFV等应用场景下,基础设施以CPU为运算核心,往往不具备专用的NP处理器,操作系统也以通用Linux为主,
由于包处理任务存在内核态与用户态的切换,以及多次的内存拷贝,系统消耗变大,以CPU为核心的系统存在很大的处理瓶颈。为了提升在通用服务器(COTS)的数据包处理效能,Intel推出了服务于IA(Intel Architecture)系统的DPDK技术。
Linux 内核为支持用户空间驱动程序的开发提供了一个框架,名为 UIO(userspace I/O)。 这是一个通用的内核驱动程序,可以帮助开发人员编写能够访问设备寄存器和处理中断的用 户空间驱动程序。DPDK 也是 UIO 的使用者。
RDMA 的软件架构按层次可分成两部分,即 rdma-core 和内核 RDMA 子系统,分别运行 在 Linux 系统中的用户态和内核态。整个软件架构适用于所有类型的 RDMA 网卡,不管网卡 执行了哪种 RDMA 协议(InfiniBand/RoCE/ iWARP)。
XSKY(星辰天合)。作为英特尔在中国的首批SPDK合作伙伴之一, XSKY率先将SPDK与Ceph用户态文件系统BlueFS整合,
Ceph作为开源软件定义存储的首选系统 在闪存环境下仍难觅突破性进展。 顺应业界趋势,将SPDK的支持在Ceph中实现势在必行。【不是从0开始的呀,解决比别人没有问题】
BlueStore优化:将SPDK集成至Ceph的存储引擎BlueStore,直接管理NVMe设备
SPDK对Ceph的BlueStore做了哪些具体优化?
SPDK RBD bdev结合Ceph RBD,可以将image定义为SPDK的块设备类型。通过SPDK框架对块设备的管理,我们实现了用户态驱动,并利用轮询机制,替换了中断模型,降低了延迟,提升了对块设备操作的性能
bdev_rbd
模块,将 Ceph RBD 镜像映射为 SPDK 块设备,供 iSCSI/NVMe-oF 等协议调用我在寻找一位积极上进的小伙伴, 一起参与神奇早起 30 天改变人生计划,发展个人事情,不妨 试试 1️⃣ 加入我的技术交流群Offer 来碗里 (回复“面经”获取),一起抱团取暖