1 产品概述
FAFS是大道云行自主研发的全新一代分布式并行文件系统,采用开放的分布式架构,利用自身高效的软件堆栈和高速RDMA网络,将各存储节点的本地闪存资源整合成全局命名空间,提供高性能、低延时、高可靠、高可扩展的文件级存储服务。
FAFS通过新型元数据结构、全用户态程序、以及轻量化体系运行,实现快速部署、弹性扩展、海量存储。FAFS设计了高效智能化的元数据缓存和数据缓存模块,结合RDMA、NVMe闪存特性,提供端到端的高速文件访问。
FAFS提供的高性能文件存储服务可以满足新兴业务场景的弹性扩展需要与并发文件访问需求,可广泛应用于AI/大模型、EDA、HPC/HPDA、云计算、科研仿真、融媒体、高清非编大数据等场景,满足金融服务、泛互联网、科研高校等各类需求。
2 优势特性
“ 极致性能
文件访问可达亚毫秒时延、百万IOPS、百GBps带宽,支撑千亿文件;
元数据与数据完全散列化分布,彻底化解目录热点、单点瓶颈、性能抖动。
“高效元数据处理
自研分布式元数据引擎及智能缓存技术,实现高并发及访问一致性;
分布式事务引擎驱动多元数据服务器并发处理,聚合元数据性能。
“海量扩展
全对称分布式架构,元数据空间和数据空间均可扩展,支持横向扩展至EB;性能与容量同步提升,支持数据均衡分布。
“高可靠
所有节点组成无状态集群,故障秒级切换;
元数据提供三副本冗余,数据提供EC方式、多副本方式冗余。
“多协议
同时提供FAFS私有协议、和基于NFS、CIFS/SMB协议的共享,不同协议的客户端之间可以共享访问文件,FAFS-Client可为Linux主机提供最佳性能。
3 系统架构
大道云行FAFS采用分布式架构,基于元数据与数据分离的逻辑设计,其核心组件在每个存储节点上以全用户态运行,包括进程调度、内存管理、队列控制,通过旁路内核,避免上下文切换开销,缩短IO 路径和延迟。
每个节点通过前端网络、后端网络、管理网络进行组网,FAFS的核心服务组件包括元数据服务MDS、数据存储服务DSS、FAFS-Client等。
FAFS的功能架构从逻辑上设计为三层,为文件接入层、文件服务层、存储引擎层,各层次分别对应不同功能模块,FAFS功能架构如下图:
文件接入层,作为协议访问的抽象层,向上提供不同文件系统协议的接入,向下对接FAFS的MDS以及DSS。
文件服务层,分别实现不同种类的文件级服务,提供FAFS各种高级特性的支持,如配额管理、WORM、ACL管理、缓存加速等。
存储引擎层,实现数据对存储介质设备的读写,提供冗余、均衡,以及控制集群高可用。
元数据服务MDS按照事务处理一致性原则,负责处理文件的元数据按分区存储,采用RAFT复制组,以三副本的方式存储到不同节点上。
数据存储服务为DSS(data storage server),负责对文件的数据部分进行存储,通过数据冗余管理模块,按照纠删码EC或副本策略,实现对SSD、存储节点的多级故障域保护,保证数据高可用。
系统管理部分主要负责对软件提供配置操作、监控维护、告警、升级,以及对节点管理。
4 元数据管理
FAFS的元数据管理采用分布式架构,每个节点上都可以部署和运行元数据服务组件,提供无状态化的元数据服务(stateless service),元数据具备了充分的横向扩展能力,以及故障转移能力,易维护性。
为了元数据在节点之间尽可能的均衡负载和分布,FAFS元数据设计为按分区管理,分区以Region为单位分别存储目录和文件的元数据,按inode-id sharding算法,元数据均衡分布到各个Region之中,元数据散列化放置,消除了单节点、单目录的访问热点问题。
元数据分区同时具有分裂机制,当一个分区存储元数据量超过设定的阈值,原分区可分裂成两个或多个新的分区,元数据分区的自动分裂特性,使FAFS具备了可存储千亿文件的元数据能力。
FAFS自研了分布式事务引擎FAFS-TX,实现了分布式事务的机制,大大降低了事务的延迟以及对元数据分区访问的开销。另外,FAFS-TX在悲观锁的基础上还实现了inode属性的增量处理,保证并发的元数据请求不会产生冲突,支持文件并行化访问。
5 产品数据条带化
FAFS对文件数据按条带化方式存储,条带粒度可以按业务需求动态调整,以默认条带化粒度4MB为例,当FS-Client上的一个文件写入时,按4MB分条,再按4MB计算EC纠删码或生成副本,以顺序方式快速写入到各节点,读取时亦以条带化读出;对于不足4MB小文件,同样按顺序放置到条带内,元数据记录在条带上的地址偏移,其后面可以继续放置数据,不会造成空间浪费。FAFS的数据存储服务DSS组件,支持副本和EC N+2/N+3/N+4多种级别保护。
FAFS按照高效的数据布局算法,数据存储服务组件DSS对底层块设备达到4KB细粒度控制。对前端请求的数据响应,可同时跨多个存储节点并行读取和写入,从而提高访问文件的性能。
FAFS的节点间支持动态数据均衡,保证文件数据均衡的向各节点条带化写入。在扩展节点后,默认会按权重优先向新加入节点分配数据,逐渐实现所有节点均衡。
当节点发生故障后,数据重建时,只有受影响的数据参与重建,未受影响的数据不参与重建,避免了传统基于RAID技术全盘重建时对业务的影响。
6 系统高可用
稳定且高可用是企业级存储系统对业务的首要保证,FAFS从设备部件、网络、节点、数据冗余等各方面保证用户数据的安全及系统的高可用。
FAFS集群内对节点上的各服务模块采用基于心跳机制的实时监控,一旦发现节点响应异常,实现秒级切换,确保集群的高可用。
7 性能优化
在具有海量小文件的IO密集型场景,文件系统面临的挑战主要是客户端侧对目录和文件进行极其频繁访问操作,文件系统内部表现为客户端向MDS大量发送目录查询、权限检查、目录遍历、创建、删除、rename等请求并等待返回结果。
客户端与MDS之间通过RPC协议在网络上传输,大量RPC调用会加重MDS负载和响应延迟。FAFS针对海量小文件与大文件混合负载的特点,具有针对性优化。
01 实现了客户端缓存,客户端将近期访问的元数据进行自动缓存,支持对目录项dentry、inode和文件布局信息进行缓存,减少客户端与MDS的元数据交互,提供接近本地化的低延时响应。
02 利用租约机制(Lease)保证缓存一致性,当客户端A上缓存的目录与文件inode,其授权在超期或召回之前,不需向MDS申请更新该inode的最新属性信息,客户端A直接在本地缓存模式下访问目录和文件。在租约超期或者另一客户端B申请修改其中文件,客户端A将缓存数据完成下刷后,将对应的缓存失效即Cache invalidation,如此来使两个客户端能访问到最近更新的数据,确保客户端之间数据一致性。
03 元数据服务采用两阶段提交事务方案处理请求,在准备阶段完成事务日志的持久化,并立即响应用户,后台采用异步的提交机制,充分发挥元数据的分布式特点,大幅提升并发能力和响应速度。
04 优化RPC传输,采用批量发送处理机制,提升rpc处理效率,有效降低元数据的延时。
8 访问协议
01 私有客户端
FAFS-Client是基于FAFS私有协议的客户端软件,支持当前主流Linux平台。应用服务器上部署FAFS-Client后,与所有存储节点建立数据通信,直接并发地访问所有存储节点上的目标数据,各存储节点共同负载且充分均衡,单个客户端上即能获得高带宽、高IOPS、低延时。
FAFS-Client具有IO聚合、异步处理、无锁化、高速缓存、预读等多种技术,使客户端上的文件IO处理贴近本地化,在加速客户端文件读写的同时还有效降低了存储节点上的处理器开销。
FAFS-Client可以保证在多客户端同时并发访问下的数据一致性,以较低的资源占用,得到远远胜于传统NAS的性能。
02 NAS协议
FAFS提供基于NFS和CIFS/SMB协议的NAS服务,能够满足多种平台、多种场景下的共享存储需求,应用服务器上无需安装额外软件,就可以方便快捷的通过标准NFS或CIFS/SMB共享访问文件。
NFS服务组件基于用户态开发和深度优化,同FAFS核心服务一起在用户态运行,避免了用户态到内核态的拷贝数据,为NFS客户端提供高于内核态NFS服务的性能。
集群内节点都可提供NAS服务,具有多种负载均衡策略,支持按连接数、轮询、硬件资源、IO负载对客户端请求进行处理,将所有客户端均衡的对应连接在NAS节点上,避免单个NAS节点过载而成为瓶颈。
所有NAS节点可配置为高可用,当集群中任一个节点出现异常时,服务会快速切换到正常节点,NAS客户端上访问不中断。
大道云行以用户需求为导向,在科技研发方面深耕细作,强化科技成果转化和产业化能力。针对高性能场景,即将推出新一代FAFS分布式全闪文件存储系统,助推多行业转型升级,提质增效。