FastBlock是一个专为全闪存场景设计的高性能分布式块存储系统

FastBlock是一个专为全闪存场景设计的高性能分布式块存储系统,旨在满足对低延迟和高吞吐量有严格要求的应用需求。

设计背景

随着全闪存技术的普及,传统的分布式块存储系统在性能、延迟和成本方面暴露出诸多问题。例如,Ceph等传统系统在全闪存环境下可能无法充分发挥硬件性能,且存在高CPU消耗、可用性差、单卷性能不足等问题。为了解决这些挑战,FastBlock应运而生,旨在提供一个高性能、低延迟、易于维护的分布式块存储解决方案。

核心特点

  • 高可用性与一致性:通过Raft协议确保系统的数据一致性和高可用性,即使在部分节点故障的情况下,仍能保证数据的完整性和服务的连续性。

  • 低延迟IO:采用SPDK(Storage Performance Development Kit)用户态NVMe驱动和无锁队列等技术,减少IO路径中的延迟,提高数据读写效率。

  • 高性能网络通信:利用RDMA(Remote Direct Memory Access)网卡,实现零拷贝、内核旁路、无需CPU干预的网络通信,进一步降低网络通信延迟,提升系统整体性能。

系统架构

FastBlock的架构与Ceph类似,包含Monitor、OSD(Object Storage Daemon)、PG(Placement Group)等组件:

  1. Monitor:负责节点管理、卷管理、存储卷元数据、集群拓扑结构维护、PG分布管理等工作。Monitor使用etcd进行多副本存储,是系统一致性的关键。

  2. RPC子系统:支持两种通信方式:基于Socket的Control RPC,用于传输元数据;基于RDMA的Data RPC和Raft RPC,分别用于数据传输和Raft协议通信,确保高效的数据交互。

  3. OSD Raft子系统:实现了multi-raft,负责数据复制和一致性维护,包括Raft组的管理、选举、日志处理、数据状态机处理等。

  4. OSD KV子系统:用于存储Raft协议元数据和存储系统本身的数据,采用内存中的哈希映射存储所有数据,并定期将数据刷新到磁盘。

  5. OSD本地存储子系统:基于SPDK的Blobstore访问NVMe磁盘,包含三个存储模块:disk_log(存储Raft日志)、object_store(存储对象数据)、kv_store(存储KV数据)。

  6. 客户端:支持多种模式,包括使用SPDK vhost提供给虚拟机、使用NBD提供给裸金属、使用SPDK nvmf-tgt通过操作系统内核导出磁盘。客户端通过调用libfastblock库,在Image访问和Object访问之间进行切换,实现高效的数据读写。

技术特点

  • CPU绑定与跨核优化:每个OSD可以绑定多个CPU核,创建PG时考虑CPU核的分配,相同的PG会落在其所有OSD的同一个shard_id上,避免OSD之间在通信时切换CPU核,减少跨核开销。

  • SPDK编程框架:通过用户态NVMe驱动替代内核NVMe驱动,减少用户态与内核态之间的频繁切换;使用轮询替代中断,提高响应速度;采用无锁队列技术,显著降低IO路径开销。

  • 心跳合并:在multi-raft设计中,对相同Leader和相同Follower的Raft组进行心跳包的合并,减少心跳包数量,优化带宽和CPU资源的使用。

应用场景

  • 虚拟机磁盘:使用FastBlock的vhost应用启动SPDK vhost进程,在FastBlock的image上创建BDEV设备和vhost控制器,生成socket文件。通过QEMU启动虚拟机时,将该BDEV设备作为虚拟机的磁盘。

  • 裸金属服务器:使用FastBlock的fastblock-nvmf-tgt应用启动SPDK nvmf-tgt进程,在FastBlock的image上创建BDEV设备,并通过操作系统内核将该BDEV设备导出为磁盘。

开源与社区

FastBlock项目已在openEuler社区开源,采用木兰V2宽松License协议,使用C++/Golang语言和SPDK框架进行开发,使用成熟的Raft协议作为核心一致性算法,旨在与社区伙伴共同打造全闪时代的云计算数据基石。

项目地址:fastblock: A distributed block storage system that uses mature Raft protocol and is designed for all-flash scenarios

通过以上介绍,可以看出FastBlock在高性能分布式块存储领域具有显著优势,特别适用于对存储性能和延迟有高要求的应用场景,如数据库、高性能计算和实时数据处理等。

相关推荐
chenchihwen15 小时前
AI代码开发宝库系列:Function Call
人工智能·python·1024程序员节·dashscope
FreeBuf_15 小时前
微软Copilot被用于窃取OAuth令牌,AI Agent成为攻击者帮凶
人工智能·microsoft·copilot
学slam的小范15 小时前
ROS跑ORB-SLAM3遇见的问题总结
人工智能·机器人·自动驾驶
coding消烦员15 小时前
新版 vscode 去除快捷键 Ctrl+I 显示 Copilot 的 AI 对话框
人工智能·vscode·copilot
周杰伦_Jay15 小时前
【自动驾驶开源仿真平台】Carla、AirSim、Udacity self-driving-car-sim、Apollo、Autoware。
人工智能·机器学习·自动驾驶
牛奶还是纯的好16 小时前
双目测距实战5-立体矫正
人工智能·3d
无风听海16 小时前
神经网络之窗口大小对词语义向量的影响
人工智能·深度学习·神经网络
sali-tec16 小时前
C# 基于halcon的视觉工作流-章52-生成标定板
开发语言·图像处理·人工智能·算法·计算机视觉
IT古董16 小时前
【第五章:计算机视觉-项目实战之推荐/广告系统】2.粗排算法-(4)粗排算法模型多目标算法(Multi Task Learning)及目标融合
人工智能·算法·1024程序员节
newxtc17 小时前
【江苏政务服务网-注册_登录安全分析报告】
人工智能·安全·yolo·政务·1024程序员节·安全爆破