image.png
在构建 YashanDB 共享集群的过程中,我们决定不依赖通用方案,而是选择自研一套专属的文件系统 —— 崖山集群文件系统(YFS)。这是基于对高可用、高性能需求的深刻理解后,做出的战略选择。

image.png
为什么要自研 YFS?

共享集群环境下,存储系统需要满足极高的并发读写效率和一致性要求。市面上的 Ext3/4 是单机文件系统,天生不支持多节点共享。而 GFS、NFS 虽然提供了共享能力,但在性能、场景匹配度上都无法满足核心交易系统的严苛要求。

尝试过多种市面方案后,我们明确了方向:只有自研,才能精准匹配 YashanDB 集群对存储的极致要求。

自研 YFS 带来了几大核心优势:

性能可控:可以根据数据库业务特性定向优化 IO;

元数据同步:原生支持集群内一致性管理;

高可用下沉:在存储层直接实现部分数据库高可用逻辑,减少上层复杂度;

接口统一:兼容常见 open、read、write 等标准操作,降低适配成本。

image.png
YFS 的部署选择:为什么放在用户态?

在设计之初,我们就在内核态与用户态之间做了慎重权衡。最终,YFS 选择以用户态进程的方式运行,主要基于以下几点考虑:

灾难恢复快:即使 YFS 出现异常,也不会引发系统级崩溃,容错性更好;

跨平台适配强:不依赖特定内核版本,兼容各种 Linux 环境;

开发运维更友好:调试灵活,支持丰富的第三方库,降低开发和维护成本;

权限与复杂度平衡:针对特定业务场景,用户态已足够支撑需求,无需冒内核级开发的高风险。

image.png
YFS 架构概览

YFS 主要由存储在磁盘上的元数据和运行在节点上的YFS 服务进程组成,采用多副本机制保证数据可靠性。

整体设计强调:

高效管理磁盘空间;

保障文件系统元数据的一致性;

快速故障恢复与副本切换能力;

支持动态扩展与资源隔离。

关键技术亮点

物理存储层次设计

YFS 将磁盘管理划分为三层结构:

Block:最小管理单元(一般为4K);

AU(Allocation Unit):由连续 Block 组成,可自定义大小;

Extent:多个 AU 连续组成大区域,支持变长配置,兼容 PB 级磁盘。

这种分层方式兼顾了空间利用率和大规模文件管理的效率。

image.png
逻辑存储与冗余策略

YFS 引入了磁盘组(Disk Group)与故障组(Failure Group)概念,实现多层次的数据高可用:

磁盘组间资源隔离,故障域清晰;

故障组感知磁盘关联性,智能布局副本;

内置 Redo 日志机制,保障元数据原子性与一致性。

即使发生节点故障或磁盘损坏,YFS 也能通过副本切换和快速恢复区机制,保证服务不中断、数据不丢失。

image.png
逻辑对象设计:兼顾大小文件管理

YFS 采用二级索引加阶梯式变长 Extent 技术,实现:

小文件高效管理;

大文件灵活扩展,支持单文件最大 500PB;

全系统“一切皆文件”,统一元数据与用户数据管理框架。

image.png
核心特性总结

高可用性:集群内实时数据修复、Redo日志保护、自动副本切换;

弹性扩展:支持节点、磁盘组在线扩容与缩容;

极致性能:裸设备直管、AU级条带化并发IO、节点间无多余通信开销;

丰富接口:兼容标准文件操作,提供专用管理工具,简化日常运维。

image.png
YFS:为共享集群量身定制的存储引擎

YFS 的诞生,不仅解决了传统文件系统在共享集群中的局限,还通过一系列自研技术,提升了整体性能上限和系统稳定性。未来,YFS 将持续进化,向更智能、更弹性、更可靠的集群存储平台迈进,成为 YashanDB 高可用、高性能体系的重要支撑。


数据库砖家
1 声望0 粉丝