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在高性能分布式块存储领域具有显著优势,特别适用于对存储性能和延迟有高要求的应用场景,如数据库、高性能计算和实时数据处理等。

相关推荐
mosquito_lover126 分钟前
矿山边坡监测预警系统设计
人工智能·python·深度学习·神经网络·视觉检测
契合qht53_shine27 分钟前
OpenCV 从入门到精通(day_03)
人工智能·opencv·计算机视觉
Naomi5211 小时前
Trustworthy Machine Learning
人工智能·机器学习
刘 怼怼1 小时前
使用 Vue 重构 RAGFlow 实现聊天功能
前端·vue.js·人工智能·重构
程序员安仔1 小时前
每天学新 AI 工具好累?我终于发现了“一键全能且免费不限量”的国产终极解决方案
人工智能
闭月之泪舞1 小时前
OpenCv(五)——边缘检测
人工智能·计算机视觉
星霜旅人1 小时前
K-均值聚类
人工智能·机器学习
lilye662 小时前
程序化广告行业(39/89):广告投放的数据分析与优化秘籍
大数据·人工智能·数据分析
欧雷殿2 小时前
再谈愚蠢的「八股文」面试
前端·人工智能·面试
修复bug2 小时前
trae.ai 编辑器:前端开发者的智能效率革命
人工智能·编辑器·aigc