在构建 YashanDB 共享集群的过程中,我们决定不依赖通用方案,而是选择自研一套专属的文件系统 —— 崖山集群文件系统(YFS)。这是基于对高可用、高性能需求的深刻理解后,做出的战略选择。
为什么要自研 YFS?
共享集群环境下,存储系统需要满足极高的并发读写效率和一致性要求。市面上的 Ext3/4 是单机文件系统,天生不支持多节点共享。而 GFS、NFS 虽然提供了共享能力,但在性能、场景匹配度上都无法满足核心交易系统的严苛要求。
尝试过多种市面方案后,我们明确了方向:只有自研,才能精准匹配 YashanDB 集群对存储的极致要求。
自研 YFS 带来了几大核心优势:
性能可控:可以根据数据库业务特性定向优化 IO;
元数据同步:原生支持集群内一致性管理;
高可用下沉:在存储层直接实现部分数据库高可用逻辑,减少上层复杂度;
接口统一:兼容常见 open、read、write 等标准操作,降低适配成本。
YFS 的部署选择:为什么放在用户态?
在设计之初,我们就在内核态与用户态之间做了慎重权衡。最终,YFS 选择以用户态进程的方式运行,主要基于以下几点考虑:
灾难恢复快:即使 YFS 出现异常,也不会引发系统级崩溃,容错性更好;
跨平台适配强:不依赖特定内核版本,兼容各种 Linux 环境;
开发运维更友好:调试灵活,支持丰富的第三方库,降低开发和维护成本;
权限与复杂度平衡:针对特定业务场景,用户态已足够支撑需求,无需冒内核级开发的高风险。
YFS 架构概览
YFS 主要由存储在磁盘上的元数据和运行在节点上的YFS 服务进程组成,采用多副本机制保证数据可靠性。
整体设计强调:
高效管理磁盘空间;
保障文件系统元数据的一致性;
快速故障恢复与副本切换能力;
支持动态扩展与资源隔离。
关键技术亮点
物理存储层次设计
YFS 将磁盘管理划分为三层结构:
Block:最小管理单元(一般为4K);
AU(Allocation Unit):由连续 Block 组成,可自定义大小;
Extent:多个 AU 连续组成大区域,支持变长配置,兼容 PB 级磁盘。
这种分层方式兼顾了空间利用率和大规模文件管理的效率。
逻辑存储与冗余策略
YFS 引入了磁盘组(Disk Group)与故障组(Failure Group)概念,实现多层次的数据高可用:
磁盘组间资源隔离,故障域清晰;
故障组感知磁盘关联性,智能布局副本;
内置 Redo 日志机制,保障元数据原子性与一致性。
即使发生节点故障或磁盘损坏,YFS 也能通过副本切换和快速恢复区机制,保证服务不中断、数据不丢失。
逻辑对象设计:兼顾大小文件管理
YFS 采用二级索引加阶梯式变长 Extent 技术,实现:
小文件高效管理;
大文件灵活扩展,支持单文件最大 500PB;
全系统“一切皆文件”,统一元数据与用户数据管理框架。
核心特性总结
高可用性:集群内实时数据修复、Redo日志保护、自动副本切换;
弹性扩展:支持节点、磁盘组在线扩容与缩容;
极致性能:裸设备直管、AU级条带化并发IO、节点间无多余通信开销;
丰富接口:兼容标准文件操作,提供专用管理工具,简化日常运维。
YFS:为共享集群量身定制的存储引擎
YFS 的诞生,不仅解决了传统文件系统在共享集群中的局限,还通过一系列自研技术,提升了整体性能上限和系统稳定性。未来,YFS 将持续进化,向更智能、更弹性、更可靠的集群存储平台迈进,成为 YashanDB 高可用、高性能体系的重要支撑。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。