FastCFS 是一款强一致性、高性能、高可用、支持百亿级海量文件的通用分布式文件系统,可以作为MySQL、PostgresSQL、Oracle等数据库,k8s,KVM,FTP,SMB和NFS等系统的后端存储。
FastCFS 主要特点
保证数据强一致前提下实现了高性能:性能完胜Ceph;
完全兼容POSIX文件接口,支持文件锁,支持百亿级海量文件;
高可用:不存在单点,自动failover;
简洁高效的架构和原生实现,不依赖第三方组件,内置运维工具,易用性较好;
随机写性能强悍:FCFS基于trunk顺序分配空间,将客户端的随机写转换为顺序写。
FastCFS 典型应用场景
数据库:支持常规的独享数据和高阶的共享数据两种存储方式,支持数据库云化;
文件存储:如文档、图片、视频等等,FastCFS比对象存储更容易与通用软件集成;
超融合存储:数据库和文件存储共用一个存储集群,显著提升存储资源利用率;
高性能计算:高可靠和高性能的FastCFS,天然适合高性能计算场景;
视频监控:FastCFS采用顺序写盘方式,使用SATA硬盘也可保证多路视频流畅写入。
已经有了比较受欢迎的FastDFS,为啥还要研发FastCFS呢?FastDFS是轻量级的对象存储,只能通过专有API访问,为互联网应用量身定制,适合存放图片、视频、文档等等;而FastCFS是通用的分布式文件系统,可以mount到本机通过标准文件接口访问,为云平台量身定制,完全支持数据库。一句话总结:FastCFS是云原生分布式文件系统,保证数据强一致,比FastDFS更加通用和可靠。
为什么业界没有使用分布式文件系统跑数据库的惯例呢?我认为主要原因是现有分布式文件系统要么不支持数据库,要么支持得不好。因为数据库是IO密集型软件,对IO性能要求很高,并且对数据一致性要求非常严苛。FastCFS在保证数据强一致的前提下,同时做到了高性能,完全满足数据库对IO性能和数据一致性的严格要求。软件本身不应该成为系统的性能瓶颈,这是我奉行的原则并一直为之实践。若有朋友发现FastCFS在高端服务器上性能发挥不出来,欢迎来找我(tiguan)。分布式系统保证数据一致性的同时要做到高性能,挑战非常大,FastCFS是如何做到的呢?总结为两个关键词是简单高效和原生实现,后续会有文章介绍。
FastCFS完全自主研发(原生实现),除了依赖libfuse实现文件挂载外,不依赖任何第三方软件。FastCFS依赖的基础库libfastcommon和libseverframe来自FastDFS,目前非常成熟和稳定。
FastCFS 2020年11月份推出第一个版本,从v2.0开始支持k8s CSI驱动,当前版本为v3.5。欢迎大家测试和使用。源码地址:github项目官网 gitee项目官网
有任何问题请随时反馈,我们将快速修复和完善。