面向服务器虚拟化的企业级集群文件系统:VCFS架构解析与性能对比

近期,SmartX 发布榫卯服务器虚拟化 6.4,通过自主研发的集群文件系统 VCFS,支持通过 FC、iSCSI 对接符合兼容性要求的存储阵列,帮助企业在虚拟化平台演进时沿用已有存储资产。作为面向虚拟化共享存储的核心组件,VCFS 不只承担了存储接入的责任:虚拟机需要稳定运行,能够迁移、备份和恢复,容量要可管理,故障要可诊断。这些都是 Smartx 在共享文件系统设计时重点考虑的方面。

以下,我们将围绕 VCFS 的设计架构,介绍 VCFS 如何提供数据服务并保障虚拟机稳定运行。我们也将 VCFS 的设计架构与功能特性进行拆分解析,并和 VMFS6、原生开源 OCFS2 进行架构与性能对比。

为什么共享存储还需要集群文件系统

FC(光纤通道)和 iSCSI 可以让多台主机访问同一个逻辑单元(LUN),但不会替主机管理文件目录、空间分配和缓存。若各主机分别按普通本地文件系统的方式操作同一块存储,就可能重复分配空间、覆盖元数据,或使用过期的数据映射。

集群文件系统则为这些主机建立了共同的数据组织和访问规则。它既要协调创建、删除、扩容等元数据操作,也要在正常迁移或故障恢复中管理访问归属。对普通非共享虚拟磁盘,需要避免非预期的并发写入;对刻意共享给多台虚拟机的磁盘,则需要虚拟化平台授权与集群软件共同完成相应的协调。

以一个典型场景为例。一台虚拟机原本在主机 A 上运行,迁移至主机 B 继续运行。主机 B 需要访问同一份虚拟磁盘和配置,主机 A 则必须按流程释放原有访问权限。若主机 A 发生异常失联,系统还需要判断何时可以接管、恢复哪些未完成操作。这类访问锁管理、故障接管、I/O 一致性保障的能力是单纯共享 LUN 无法实现的,需要集群文件系统与虚拟化平台共同完成。

VCFS 及架构设计

VCFS(Virtualization Cluster File System)是榫卯服务器虚拟化(下文简称“虚拟化平台”)面向集中式共享存储设计的集群文件系统。它在 FC/iSCSI 阵列提供的共享 LUN 之上,为多台虚拟化主机组织和管理虚拟机配置、虚拟磁盘及相关元数据,并协调并发访问与故障后的访问交接。

VCFS 以数据存储(Datastore)组织共享资源。核心文件系统逻辑以用户态服务运行,并与虚拟化平台的管理和数据保护流程协同。对用户而言,VCFS 将已有 SAN(存储区域网络)中的共享块空间,转化为可以围绕虚拟机使用和管理的数据存储。

在 VCFS 架构中,一个 Datastore 对应一个 LUN。虚拟机配置、虚拟磁盘及持久化文件系统元数据保存在共享 LUN 上,主机本地保留自动挂载等运行配置和访问期间的缓存。其他主机在完成权限交接后,可依据共享存储上的元数据建立访问,无需依赖原主机持有的内存缓存。

VCFS 资源映射关系

架构图1.png

图 1:VCFS 资源关系

存储 LUN 提供共享块空间,Datastore 在其上组织虚拟磁盘、配置和快照。一个 Datastore 可承载多台 VM,一台 VM 也可使用多个 Datastore 的虚拟磁盘。VM 内的系统盘和数据盘是虚拟块设备,其数据位于共享阵列。

VCFS 逻辑架构

架构图2.png

图 2:VCFS 的逻辑架构

图中仅展示虚拟机的存储访问路径。用户态的 VCFS 主服务负责 I/O 与元数据管理,Monitor 负责监控与接管;Linux 内核中的块层、多路径与协议驱动负责底层设备访问。各主机经自身的 FC/iSCSI 链路访问共享 LUN。

面向本机虚拟机的数据服务

VCFS 的核心文件系统逻辑运行在用户态,主服务负责处理协议接入、I/O 和元数据管理。虚拟机 I/O 经本机 VCFS 服务,通过 Linux 块层、设备映射多路径(DM Multipath)以及 SCSI/iSCSI 或 FC 驱动访问阵列,无需先转发到另一台计算主机。用户态与内核态各有分工:核心文件系统逻辑可独立演进,底层访问仍需通过内核、驱动和存储链路。

除主服务外,VCFS 还设置了 Monitor 监控与接管服务,负责在主服务异常或重启时接续 I/O 处理。进程接管与整台主机故障后的高可用(HA)恢复具有不同的处理范围:前者在本机处理服务切换,后者还涉及其他主机取得存储访问权限和恢复虚拟机。

共享状态与元数据事务

共享 LUN 上除了虚拟机数据,还保存超级块(Superblock)、主机心跳、锁、文件及空间元数据和各主机的事务日志。VCFS 使用 SCSI COMPARE AND WRITE(CAW,比较并写入)指令原子更新锁及心跳记录:只有记录仍符合预期状态,更新才会成功。底层阵列支持 CAW 是接入的必要条件,还需满足相应的存储兼容性要求。

锁负责协调访问,事务日志负责元数据变更的可恢复性。文件创建、空间分配、映射调整及回收涉及多个状态时,通过事务日志组织更新。异常后,接管者依据日志恢复元数据,使空间分配状态与数据映射保持一致。元数据恢复与虚拟机内的应用恢复分别由不同层次的机制处理。

文件系统的跨主机锁与心跳协调通过共享存储链路完成,无需额外的主机间锁协调网络。iSCSI 存储访问、平台管理、HA 编排和热迁移仍有各自的网络需求。阵列负责底层数据持久化和介质冗余,VCFS 不额外建立分布式副本或纠删码冗余层。

VCFS 如何保障虚拟机稳定运行

共享文件系统需要覆盖虚拟机存储接入、日常运行、数据保护和日常维护的完整过程,与虚拟化平台协同提供如下能力,以保障业务虚拟机的稳定运行:

  1. 接入与迁移:复用既有 SAN,让虚拟机在兼容主机或集群之间迁移,并完成存储访问与管理权限的交接。

  2. 数据正确性与恢复:协调多主机并发访问,在主机或链路异常后恢复一致的元数据状态,并安全接管资源。

  3. 稳定的数据访问:控制常规 I/O 的协调开销,并协调快照、克隆和回收等后台操作,避免它们长期挤占前台资源。

  4. 数据保护与生命周期:将快照、克隆、备份和恢复纳入虚拟机管理流程,明确各层对数据一致性与可恢复性的责任。

  5. 容量效率与回收:按需分配容量,回收不再使用的空间,并区分虚拟磁盘配置容量、文件系统分配量与阵列实际占用。

  6. 可观测性与运维:能够定位路径、容量和访问冲突等问题,并明确服务更新、宿主机升级与格式变更各自的兼容性和业务影响。

VCFS 如何实现这些能力

以 Datastore 组织共享资源。VCFS 通过 FC/iSCSI 接入阵列,将 Datastore 成员关系与虚拟化管理集群分离,为不同集群挂载和资源交接提供基础。虚拟机配置与持久化元数据保存在共享存储上,减少对原主机本地状态的依赖。

以锁、心跳和事务日志协调访问与恢复。磁盘锁管理访问权限,磁盘心跳用于判断主机状态,元数据事务日志(Journal)支持异常后的恢复。安全接管还需处理旧访问权限与在途 I/O;CAW 的原子更新不等同于阵列自动拒绝旧主机的普通写请求。VCFS 的恢复设计结合超时、请求复位、代际检查与接管等待。

以虚拟卷权限和后台任务协调控制 I/O 开销。普通非共享虚拟卷由相应主机持有写入权限,已分配区域上的常规写入无需逐个申请跨主机的 Extent(分配单元)访问锁。空间分配、快照后的写时复制(COW)和映射变更仍需本地并发控制与读取协调。

以文件与虚拟卷模型衔接数据保护。VCFS 管理快照和数据继承关系,通过读取协调与事务保护完成快照合并,并与平台的回滚、复制和备份流程衔接。

以精简制备和 UNMAP 管理容量。VCFS 按需分配空间,确认有效数据映射不再引用待回收区域后,将其交还分配池,并在满足条件时通过 SCSI UNMAP 通知阵列回收。快照引用、guest OS 的空间释放行为以及阵列能力共同影响物理空间何时归还。

以用户态服务和分层维护支持运维。Datastore、设备路径、容量和访问冲突是故障定位的主要观察对象。用户态核心逻辑与 Monitor 接管机制为服务级维护提供基础,可在接口、驱动和磁盘格式兼容时减少与内核升级的绑定。

架构与能力对比:VCFS / VMFS / OCFS2

相较于 VMware VMFS 和主流开源方案 OCFS2,VCFS 在架构设计和虚拟机运行体验上都有一定程度的提升。以下,我们将 VCFS 和 VMFS6(vSphere 9 内置的版本),以及原生开源 OCFS2 中的典型 O2CB 集群栈进行对比。

注: O2CB 包含节点通信、心跳与分布式锁管理(DLM)等组件;这里不包含厂商对 OCFS2 的私有扩展。

OCFS2 是通用共享磁盘文件系统,VMFS 与 VCFS 面向虚拟化数据存储,完整的虚拟机管理均需要上层平台协同。

比较维度

VMFS6(ATS 模式)

VCFS(6.4)

原生开源 OCFS2

(典型 O2CB 模式)

定位与组织

面向虚拟化的 Datastore,配合 VMDK 与 vSphere

面向虚拟机的 Datastore、文件与虚拟卷模型,配合虚拟化平台

通用共享磁盘文件系统,可存放虚拟机镜像

核心逻辑运行位置

VMkernel 内核中的文件系统组件

用户态主服务与 Monitor,底层 I/O 使用 Linux 内核存储栈

Linux 内核文件系统模块,用户态守护进程(o2cb、o2dlm)+ 内核 dlm 模块组合 

升级耦合与用户影响

核心逻辑通常随 ESXi 对应补丁维护,是否重启取决于更新类型

兼容前提下可减少与内核升级的绑定,接管设计为服务维护提供基础

核心实现与内核模块及版本配套,维护需评估挂载、模块替换和重启条件

协调架构

磁盘锁、ATS 原子更新与磁盘心跳

磁盘锁和磁盘心跳,通过 CAW 原子更新

O2DLM分布式锁(网络DLM为主),配套磁盘心跳、集群网络成员管理 

数据路径与性能

ESXi 存储栈直接访问共享 LUN

本机数据服务直接访问共享 LUN

各节点经 Linux 文件系统栈可直接访问共享块设备

快照与克隆

由 VMDK 及 vSphere 等组件协同提供

文件与虚拟卷层管理快照,完整克隆与平台流程协同

原生支持文件级reflink COW克隆;无虚拟机快照语义,完整VM快照、快照链能力完全依赖虚拟化上层实现 

备份与增量

CBT 和备份接口属于 VMware 平台组合能力

卷差异查询与备份流程衔接*

不原生提供完整 VM CBT 和备份编排,需要上层补齐

空间管理

精简磁盘配合 VMFS6 异步 UNMAP,依赖阵列

精简、后台回收和 UNMAP 限速等设计

提供稀疏文件等基础,端到端回收需镜像、系统与阵列配合

恢复与管理边界

文件系统恢复与 ESXi/HA 配合

磁盘心跳、日志恢复与平台 HA 流程配合

依赖Corosync/Pacemaker集群栈完成fencing节点隔离、日志恢复;虚拟机HA、故障编排完全交给上层 

可以看到,VMFS6、VCFS、OCFS2 虽然都属于共享磁盘集群文件系统,但在架构路线、虚拟化语义、运维边界上有着本质区别。

VMFS6 依托 vSphere 体系,采用 ATS 存储仲裁,能力深度绑定 ESXi 内核;OCFS2 以网络 DLM 为核心锁机制,是通用共享文件系统,缺少原生虚拟机语义,快照、增量备份等虚拟化能力都依赖上层补齐。

而 VCFS 选择和 VMFS 相近的存储仲裁路线(磁盘锁 + CAW 原子更新),同时采用用户态服务架构,降低内核耦合,在文件系统层原生提供虚拟卷快照、CBT 变更块跟踪、后台空间回收等虚拟化配套能力,兼顾了集群共享存储的一致性可靠性,以及虚拟化平台对接、运维升级的灵活性,是面向虚拟化场景设计的企业级集群文件系统。 

性能对比:VCFS vs. VMFS

除架构与能力模型差异外,我们也在相同硬件环境下开展基准性能对照,验证 VCFS 在虚拟化典型负载下的 I/O 表现: 

性能对比图.png

图 3:VCFS & VMFS 性能对比

从测试结果可见:在 4K、8K 虚拟机业务高频随机读写,以及 256K 大块顺序读写场景中,VCFS 均取得了不错的性能表现,随机读写 IOPS、顺序带宽指标优于对照组 VMFS6。 得益于用户态存储栈、CAW 原子更新、锁调度与 I/O 路径的优化,VCFS 在维持集群文件系统强一致性、共享访问能力的同时,没有在虚拟化核心 I/O 路径上引入额外开销,能够承载虚拟机业务对低延迟、高 I/O 能力的要求。 

总结:VCFS的核心优势

作为 SmartX 自主开发的集群文件系统,VCFS 为榫卯服务器虚拟化的核心可控性和可演进能力提供了基础,帮助企业用户实现:

  •  延续已有的共享存储使用方式。通过将既有阵列组织为 Datastore,用户可以围绕虚拟机管理数据,并在兼容性满足的前提下继续使用 FC/iSCSI 基础设施。

  • 协调多主机共享访问的可靠机制。 VCFS 通过共享磁盘上的锁与心跳管理访问权限,集群锁、心跳仲裁逻辑不走独立的以太集群网络,锁元数据直接落盘在共享磁盘上(盘上锁),规避以太网络分区、脑裂这类风险。

  • 面向虚拟机的高效 I/O 路径。 虚拟机可通过 vHost 接入本地 VCFS 主服务,通过专有文件系统访问共享 LUN,减少使用通用开源文件系统带来的冗余路径,提升 I/O 处理效率与稳定性。

  • 用户态架构,低侵入、高可靠:VCFS 核心逻辑运行于用户态,不依赖宿主机内核模块;规避内核版本绑定、内核 panic 风险,组件可独立升级、故障隔离,业务不感知,迭代灵活。

  • 原生支持虚拟化环境所需特性。 VCFS 提供快照、克隆和空间回收等能力,并与虚拟化平台的热迁移、HA 流程配合,无需基于通用开源文件系统进行二次开发,提升运行效率,便于功能演进和故障定位。

点击链接即可获取《榫卯服务器虚拟化产品》彩页,了解更多功能特性与功能规格。

 参考资料:

1. VMFS 磁盘心跳与 ATS:Broadcom 官方说明

https://knowledge.broadcom.com/external/article/330024

2. VMFS6 空间回收:Broadcom 官方说明

https://knowledge.broadcom.com/external/article/323112

3. OCFS2 定位与 reflink:Oracle 官方说明

https://docs.oracle.com/en/operating-systems/oracle-linux/9/ocfs2/about-ocfs2_concept.html

4. OCFS2 集群管理、心跳与 fencing:Oracle 官方指南

https://docs.oracle.com/en/operating-systems/oracle-linux/7/fsadmin/fsadmin-ManagingOracleClusterFileSystemVersion2.html

5. OCFS2 卷、稀疏文件与 Journal 配置:Oracle 官方指南

https://docs.oracle.com/en-us/iaas/oracle-linux/ocfs2/ol-ocfs2-working-with-ocfs2-volumes.htm

6. Open-iSCSI 用户态与内核态分工:项目官方说明

https://github.com/open-iscsi/open-iscsi/blob/master/README

7. VMFS 运行位置:VMware 官方 ESXi 架构图

https://blogs.vmware.com/wp-content/uploads/sites/72/2012/11/ESXi-5.1-Poster.pdf

8. VMFS ATS 心跳配置:Broadcom 官方说明

https://knowledge.broadcom.com/external/article/326437

推荐阅读:

SmartX发布榫卯服务器虚拟化6.4,全面开放第三方存储支持,提供内存超分等升级能力

SmartX虚拟化网络优化成果获Linux社区采纳,将随7.4内核发布

虚拟化集群扩缩容:告别复杂操作与命令行,业务稳定有保障

虚拟化运维常见挑战与“避坑”指南|附电子书

志凌海纳SmartX连续三年入选Gartner全球服务器虚拟化推荐厂商名单