FastCFS实战半年成长记

    今年5月份A公司打算用FastCFS替换MooseFS,主要出于两点考虑:1. 国产化替代;2. FastCFS不存在单点问题,并且有作者提供支持,用起来更加省事和放心。A公司主要使用MooseFS作为后端存储跑qemu虚拟机,采用qcow2格式镜像文件。

    A公司对FastCFS进行了严格细致的测试,促进了FastCFS在可靠性、稳定性和性能方面的显著提升。在可靠性和稳定性提升方面,FastCFS发布了如下版本:

    6月15日 FastCFS V3.4 发布,引入选举节点,支持双活互备防脑裂,完全支持POSIX文件锁;

    7月26日 FastCFS V3.5 发布,支持多数派数据复制,在极端情况下也严格保证数据一致性;

    8月16日 FastCFS V3.5.1发布,写入数据过半数自适应,使用两副本也可以最大程度地保证数据一致性。

    FastCFS在性能方面和同类存储软件相比优势明显,我们一直引以为傲:2021年6月份发布的FastCFS V2.2,性能明显超越Ceph(使用SSD盘测试):顺序写是Ceph的6.x倍,顺序读是Ceph的2.x倍,随机写大约是Ceph的2倍。

    然而A公司在使用两块SATA盘的情况下,8月份做了FastCFS和MooseFS性能对比测试,颠覆了我们的认知。FastCFS的性能跑不上去,使得MooseFS的性能全面碾压FastCFS,我们引以为傲的顺序写性能也不行。这个测试结果激发了我们的斗志,历时3周,9月8日发布了FastCFS V3.6,文件读写性能大幅提升,写入性能明显反超MooseFS,读性能与MooseFS基本持平。改进前的V3.5及改进后的V3.6与MooseFS性能对比测试结果如下图(根据A公司提供的测试数据整理): 
105865aa2a8cd01707481d987f7bbb7c.png

    在使用SATA盘的情况下,V3.6性能为何能做到如此巨幅的提升呢?下面就为你揭秘V3.6性能优化所做的主要工作:

  1. fstore server优化

    1)文件写支持异步落盘,以充分发挥磁盘写入能力;为了提升文件写入性能,fstore增加了一个配置参数 fsync_every_n_writes,默认值为0,表示不显式调用fsync。对于机械硬盘(如SATA盘),不调用fsync可以显著提升写入性能。

    2)文件读默认采用系统缓存,对于SATA盘或SAS盘可以显著提升读取性能。

  2. fuse client优化

    1)支持fuse选项writeback_cache,告诉Linux kernel是否启用合并写。开启这个选项,将迅猛提升连续写入小块数据(比如一次写入4KB)的性能。

    2)fuse.conf增加配置项kernel_cache,表示是否使用Linux kernel的文件缓存。开启这个选项,相当于在fuse客户端启用了文件缓存,在某些情况下将大幅提升文件读取性能。

   通过以上优化,V3.6的性能相比Ceph进一步拉开了距离,欢迎感兴趣的朋友进行对比测试。

    FastCFS当前版本为V3.6.2,支持百亿级文件的fdir存储引擎插件可用于生产环境,欢迎大家测试和使用。

猜你喜欢

转载自blog.csdn.net/weixin_38130500/article/details/127274772
今日推荐