//
//
//
//
//
//
//
//
//
//
软件Tags:
FastCFS分布式文件系统是一个基于块存储的高性能通用分布式文件系统,FastCFS可以作为数据库(MySQL、PostgresSQL、Oracle等)以及k8s和虚拟机(KVM等)的后端存储。
FastCFS分布式文件系统是一个可以跑数据库的高性能分布式文件系统。
支持的操作系统:
Linux: Kernel version >= 3.10 (完全支持)
MacOS or FreeBSD (仅支持服务端,不支持FUSE)
一键部署:
如果你打算快速体验一下FastCFS,可以一键搭建(包括部署和运行)单节点(需要root身份执行):
git clone https://gitee.com/fastdfs100/FastCFS.git; cd FastCFS/
./helloWorld.sh
# 注意:helloWorld.sh将更改FastCFS相关配置文件,请不要在多节点集群上执行!
上述操作完成后,执行命令:
df -h /opt/fastcfs/fuse | grep fuse
可以看到FastCFS挂载的文件目录,你可以当作本地文件系统访问该目录。
经过一个半月的紧张研发和测试,FastCFS V3.3如期发布了。V3.3是一个里程碑版本,正常重启和kill -9强杀,系统稳定性和数据一致性,均得到了充分测试和保障。V3.3主要改进为:
1、[fstore] 修复了服务器重启等情况下的数据一致性问题;
2、[fstore] 单盘数据恢复:单盘故障恢复后,可通过命令行参数恢复数据;
3、[fstore] master再平衡:机器故障或网络短暂故障恢复后,master重新均衡分布;
4、[fauth & fdir & fstore] 引入防脑裂机制:leader/master选举投票采用过半原则。
v3.6.2
更新内容历时3星期的研发,FastCFS v3.6发布了,文件读写性能提升明显,尤其顺序写相信会惊艳到大家,感兴趣的朋友可以用 dd或scp等工具体验一下飞一般的感觉。我们租用3台阿里云本地SSD ECS 和 1台普通ECS作为客户端进行压测,2个fio并发线程即可把3gb网络带宽打满(约351MB/s),而v2.2在4并发线程下只有126MB/s。
v3.6性能优化主要包括如下两方面:
1. fstore server优化
文件写引入选项write_to_cache,默认为true,表示异步写盘,以充分发挥磁盘写入能力。另外,通过内存池动态分配数据buffer,从网络上接收数据,然后把数据buffer直接传递给磁盘写入线程和数据同步线程,避免内存拷贝。
文件读引入配置项read_direct_io,表示是否采用direct io模式,默认不采用(即使用系统缓存)。对于SATA或SAS普通硬盘,建议使用系统缓存;而SSD硬盘可以根据实际需要采用 direct io模式。
2. fuse client优化
支持fuse选项writeback_cache,告诉Linux kernel是否启用合并写。开启这个选项,将迅猛提升连续写入小块数据(比如一次写入4KB)的性能。
fuse.conf增加配置项kernel_cache,表示是否使用Linux kernel的文件缓存。开启这个选项,相当于在fuse客户端启用了文件缓存,在某些情况下将大幅提升文件读取性能。对于多节点共享数据场景,最好不要启用kernel_cache。
使用这两个fuse选项,程序内部合理设置fuse相关参数,文件读写性能提升明显。
v3.6修复的bug列表:
[fstore] bugfixed: MUST call set_binlog_indexes to set start_index
[fuseclient] bugfixed: write_to_pid_file move before fcfs_api_start_ex
bugfixed: base_path support relative path
FastCFS v3.6的文件读写性能又上了一个台阶,欢迎大家测试和使用。