FastCFS 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
FastCFS 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
FastCFS 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 AGPL-3.0
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 大数据数据存储
开源组织
地区 国产
投 递 者 OSCHINA编辑部
适用人群 未知
收录时间 2020-12-27

软件简介

FastCFS 是一款基于块存储的通用分布式文件系统,可以作为MySQL、PostgresSQL、Oracle等数据库和云平台的后端存储。

支持的操作系统

  • Linux: Kernel version >= 3.10 (完全支持)
  • MacOS or FreeBSD (仅支持服务端,不支持FUSE)

依赖

安装

libfuse可以采用脚本libfuse_setup.sh一键编译和安装。

libfastcommon、libserverframe、fastDIR、faststore和FastCFS 五个安装包可采用 fastcfs.sh 脚本统一安装配置,也可以按照5.1 - 5.6部分独立安装配置。

统一安装方式

git clone https://github.com/happyfish100/FastCFS.git; cd FastCFS/

通过执行fastcfs.sh脚本,可自动从github仓库拉取或更新五个仓库代码,按照依赖顺序进行编译、安装,并能根据配置文件模版自动生成集群相关配置文件。

fastcfs.sh 命令参数说明:

  • pull -- 从github拉取或更新代码库(拉取到本地build目录)
  • makeinstall -- 顺序编译、安装代码库(make && make install)
  • init -- 初始化集群目录、配置文件(已存在不会重新生成)
  • clean -- 清除已编译程序文件(相当于make clean)

一键搭建(包括部署和运行)demo环境(需要root身份执行):

./helloWorld.sh --prefix=/usr/local/fastcfs-test

或执行如下命令(需要root身份执行):

./libfuse_setup.sh
./fastcfs.sh pull
./fastcfs.sh makeinstall
IP=$(ifconfig -a | grep -w inet | grep -v 127.0.0.1 | awk '{print $2}' | tr -d 'addr:' | head -n 1)
./fastcfs.sh init \
	--dir-path=/usr/local/fastcfs-test/fastdir \
	--dir-server-count=1 \
	--dir-host=$IP  \
	--dir-cluster-port=11011 \
	--dir-service-port=21011 \
	--dir-bind-addr=  \
	--store-path=/usr/local/fastcfs-test/faststore \
	--store-server-count=1 \
	--store-host=$IP  \
	--store-cluster-port=31011 \
	--store-service-port=41011 \
	--store-replica-port=51011 \
	--store-bind-addr= \
	--fuse-path=/usr/local/fastcfs-test/fuse \
	--fuse-mount-point=/usr/local/fastcfs-test/fuse/fuse1

注:--fuse-mount-point为mount到本地的路径,通过这个mount point对FastCFS进行文件存取访问。

FCFS_SHELL_PATH=$(pwd)/build/shell
$FCFS_SHELL_PATH/fastdir-cluster.sh restart
$FCFS_SHELL_PATH/faststore-cluster.sh restart
$FCFS_SHELL_PATH/fuse.sh restart

上述操作完成后,通过命令 df -h 可以看到FastCFS挂载的文件目录。

libfastcommon

git clone https://github.com/happyfish100/libfastcommon.git; cd libfastcommon/
git checkout master
./make.sh clean && ./make.sh && ./make.sh install

默认安装目录:

/usr/lib64
/usr/lib
/usr/include/fastcommon

libserverframe

git clone https://github.com/happyfish100/libserverframe.git; cd libserverframe/
./make.sh clean && ./make.sh && ./make.sh install

fastDIR

git clone https://github.com/happyfish100/fastDIR.git; cd fastDIR/
./make.sh clean && ./make.sh && ./make.sh install

faststore

git clone https://github.com/happyfish100/faststore.git; cd faststore/
./make.sh clean && ./make.sh && ./make.sh install
mkdir /etc/fstore/
cp conf/server.conf conf/client.conf conf/servers.conf conf/cluster.conf conf/storage.conf /etc/fstore/

libfuse

构建libfuse需要先安装meson和ninja。安装meson和ninja需要python3.5及以上版本。

python安装

包名:python3 python3-pip

Ubuntu下安装命令:

apt install python3 python3-pip -y

CentOS下安装命令:

yum install python3 python3-pip -y

meson 和 ninja 安装

pip3 install meson
pip3 install ninja

gcc安装

Ubuntu下安装命令:

apt install gcc g++ -y

CentOS下安装命令:

yum install gcc gcc-c++ -y

libfuse安装

git clone https://github.com/libfuse/libfuse.git
cd libfuse/
git checkout fuse-3.10.1
mkdir build/; cd build/
meson ..
meson configure -D prefix=/usr
meson configure -D examples=false
ninja && ninja install
sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf

FastCFS

git clone https://github.com/happyfish100/FastCFS.git; cd FastCFS/
./make.sh clean && ./make.sh && ./make.sh install
mkdir /etc/fcfs/
cp conf/fuse.conf /etc/fcfs/

配置

为了更好地控制FastCFS的性能,我们通过各种设置参数为FastCFS提供了高度可配置和可调节的行为。

FastCFS的配置由多个子文件组成,其中一个是入口文件,其他文件用于引用。目录/etc/fstore 是FastCFS配置文件的默认存放位置,但是在单个服务器上安装多个FastCFS实例时,必须为每个实例指定不同的位置。

FastCFS有以下几个配置文件:

  • server.conf - 服务器全局参数配置
  • cluster.conf - 集群参数配置
  • servers.conf - 服务器组参数配置
  • storage.conf - 存储参数配置
  • client.conf - 客户端使用的配置文件,需引用cluster.conf
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(10)
发表了资讯
11/22 10:00

FastCFS 3.7.0 发布,通过 POSIX 兼容性测试

FastCFS 3.7.0发布,主要通过了POSIX兼容性测试以及修复了7个bug,FastCFS的稳定性进一步提升。 POSIX兼容性测试使用开源项目pjdfstest,共有8千多个test case,只有极少数case未能通过,其中30个FIFO类型的文件open case失败,这类open调用不会传递到fuse层,返回值取决于Linux内核实现。 v3.7.0 修改的bug列表如下: [libfastcommon] bugfixed: common_blocked_queue_[alloc|free]_node must use lock [libfastcommon] bugfi...

1
1
发表了资讯
09/22 15:34

FastCFS V3.6.1发布,主要是 bug 修复和小改进

FastCFS V3.6.1发布,这个版本主要为bug修复和一些小改进: 1)集群管理工具 fcfs.sh 支持 Ubuntu 和 Debian; 2)使用最新的libserverframe库(v1.1.19支持FastDFS v6.09); 3)修复了cluster_deal_join_leader动态分配buffer后response指针没有更新的问题; 4)修复了磁盘可用空间统计不准确的问题; 5)动态扩大网络buffer时,解决了buffer大小可能不足的隐患; 6)任命数据分组master时采用批量入队方式,大幅提升处理效率...

1
3
发表了资讯
09/22 11:03

FastCFS V3.6.1 发布,主要为 bug 修复和小改进

FastCFS V3.6.1发布,这个版本主要为bug修复和一些小改进: 1)集群管理工具 fcfs.sh 支持 Ubuntu 和 Debian; 2)使用最新的libserverframe库(v1.1.19支持FastDFS v6.09); 3)修复了cluster_deal_join_leader动态分配buffer后response指针没有更新的问题; 4)修复了磁盘可用空间统计不准确的问题; 5)动态扩大网络buffer时,解决了buffer大小可能不足的隐患; 6)任命数据分组master时采用批量入队方式,大幅提升处理效率...

0
1
发表了资讯
09/08 09:36

FastCFS v3.6 发布,文件读写性能大幅提升

历时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,表示异步写盘,...

1
8
发表了资讯
08/16 10:19

FastCFS V3.5.1 发布,写入数据过半数自适应

FastCFS V3.5.1发布,主要支持两副本写入数据过半数自适应模式:如果两个节点都可用,则采用过半数确认机制,否则写入一个节点即可。友情提示:双副本情况下为了防止脑裂,建议使用公共选举节点。 另外,为了提升文件写入性能,fstore增加了一个配置参数 fsync_every_n_writes,默认值为0,表示不显式调用fsync。对于机械硬盘(如SATA盘),不调用fsync可以显著提升写入性能。 修复的bug列表: [fdir] bugfix: force to write ...

1
1
发表了资讯
07/26 10:16

FastCFS V3.5 发布,支持多数派数据复制

经过一个多月紧锣密鼓的研发,FastCFS v3.5发布了。v3.5主要完成了异常情况下保证数据一致性的改进工作:数据提交采用多数派确认机制保证在高负载等不稳定情况下数据一致性和可靠性;实现了数据不一致时的自动恢复机制(以前版本是持续报错),包括如下两点: 1. slave自动回滚不一致的数据,然后从master恢复数据; 2. 在重启情况下,如果slave的数据版本比master高,则自动提升为master。 其他小改进: 1. 支持跨机器幂等机制...

0
5
发表了资讯
06/15 10:00

FastCFS V3.4 发布,支持双活互备防脑裂

历经一个半月的紧张研发和测试,FastCFS V3.4发布了。V3.4主要改进: 1. 引入选举节点,双副本防脑裂(即双活互备防脑裂,保证数据一致性); 2. fdir和fstore的binlog去重及历史数据清理,减少不必要的磁盘空间占用; 3. fdir实现的文件锁严格遵循POSIX规范: 1) 允许重入(同一进程内多次重复加锁); 2) UNLOCK均返回成功; 3) 一次UNLOCK可以解开多个锁; 4) UNLOCK支持部分解锁。 4. 去掉不必要的错误日志,网络连接失败日...

1
6
发表了资讯
04/25 09:15

分布式文件系统 FastCFS 里程碑版本 V3.3 发布

经过一个半月的紧张研发和测试,FastCFS V3.3如期发布了。V3.3是一个里程碑版本,正常重启和kill -9强杀,系统的稳定性和数据一致性,均得到了充分测试和保障。V3.3主要改进为: 1. [fstore] 修复了服务器重启等情况下的数据一致性问题; 2. [fstore] 单盘数据恢复:单盘故障恢复后,可通过命令行参数恢复数据; 3. [fstore] master再平衡:机器故障或网络短暂故障恢复后,master重新均衡分布; 4. [fauth & fdir & fstore] 引入...

2
5
发表了资讯
03/10 10:12

FastCFS V3.2.0 发布,全面支持 POSIX API

经过一个半月的研发和测试,FastCFS V3.2.0和大家见面了。这个版本主要改进: 1. 提供诸如 open/fopen、write/fwrite、read/fread、close/fclose、readv、writev 等全套POSIX API,应用程序可以通过这套API使用FastCFS存储; 2. 提供了LD_PRELOAD方式,在用户态实现虚拟mount point; 3. 为了支持POSIX API,fdir进行了调整和完善,比如 list/remove denry 和 get/list/remove xattr 支持flags;libfastcommon 和 fstore 支持 ...

0
1
发表了资讯
01/14 09:29

高性能分布式文件系统 FastCFS V3.1 发布

V3.1主要对核心组件FastDIR进行改进,实现了LRU淘汰算法,以有限内存支持海量文件。 分布式目录服务FastDIR的淘汰算法具有两大特性: 1. 按目录结构淘汰:先淘汰子节点,然后淘汰父节点; 2. 按数据线程淘汰:每个数据线程作为一个独立的数据单元,数据存取和淘汰均在其数据线程中以无锁方式完成。 其他改进和bug修复如下: 1. 采用引用计数方式,不再延迟释放 dentry; 2. delay free namespace string for lockless; 3. bug...

1
5
发表了资讯
2021/12/28 09:06

高性能分布式文件系统 FastCFS V3.0 发布

经过整整5个月的潜心研发,FastCFS v3.0终于发布了。FastCFS 3.0 主要改进:核心组件FastDIR通过插件方式实现数据存储引擎,采用binlog + 存储引擎插件,按需加载inode数据,单机以有限内存(如64GB)支持100亿级的海量文件。 通过binlog实现数据持久化比较简单,程序重启时通过binlog重放将inode数据全部加载到内存中,这种方式存储海量文件存在如下两个问题: 1. 程序启动就绪时间长; 2. 对内存空间要求非常高。 V3.0引入存储...

8
13
发表了资讯
2021/07/08 08:05

高性能分布式文件系统 FastCFS V2.3.0 发布

FastCFS V2.3.0发布,主要改进如下: 1. auth server以主备方式支持多节点,避免单点; 2. leader/master选举/切换引入超时机制,选举时长可控; 3. 网络通信相关改进: 1)握手失败,server端主动断开连接; 2)cluster内部通信server端超时控制; 3)调整网络通信超时默认值(连接超时由10秒调整为2秒,收发数据超时由30秒调整为10秒)。 另配置文件中的 section name统一用减号分隔,例如:[pool-generate]...

3
7
发表了资讯
2021/06/22 10:18

FastCFS V2.2.0 发布,性能全面超越 Ceph!

历经大约一个月的研发,FastCFS V2.2.0 发布,主要改进如下: 1. [fstore] 使用libaio实现异步读,随机读性能提升明显; 2. [fstore] 支持预读机制,顺序读性能提升显著; 3. 修复了3个bug: 1)[fstore] 修复V2.1.0引入的bug:第一次运行时,一个关键bool变量没有正确赋值; 2)[fuseclient] 修复列举目录导致元数据缓存的一致性问题; 3)[fauth] 修复username和poolname格式修饰符不当导致的乱码问题。 另,sungness 开发的集...

9
14
发表了资讯
2021/05/31 08:26

高性能分布式文件系统 FastCFS V2.1.0 发布

FastCFS V2.1.0 发布,主要改进: 1. 程序启动时加载slice索引拆分为两个阶段,均改造成多线程方式,缩短服务就绪时间 2. 服务端程序和fuse客户端支持命令行参数: 1)fuse客户端配合对接K8s,支持 --user、--key、--mountpoint等5个选项; 2)server端程序和fuse客户端支持 -V(--version)和 -h(--help)选项; 3)fs_serverd和 fdir_serverd支持选项--force-leader-election/--force-master-election,用于强制leader/mast...

0
2
发表了资讯
2021/05/14 09:03

高性能分布式文件系统 FastCFS V2.0.1 发布

FastCFS V2.0.1发布,主要改进如下: 1. 确保顺序写盘,调用writev实现批量写; 2. 设置线程名称用于性能调优; 3. 将配置文件servers.conf合并到cluster.conf; 4. 修复4个bug: 1)解决磁盘空间统计不准的问题; 2)修改skiplist实例创建方式,确保线程安全; 3)修复current_size整数溢出问题; 4)修复数据分组序号计算错误(没有减去基数)。 gitee项目地址:https://gitee.com/fastdfs100/FastCFS,FastCFS支持一键部署单...

1
5
发表于数据库专区
2021/02/03 07:30

FastCFS V1.2.1 发布,基于块存储的通用分布式文件系统

FastCFS V1.2.1 现已发布。FastCFS 是一款基于块存储的通用分布式文件系统,可以作为 MySQL、PostgresSQL、Oracle 等数据库和云平台的后端存储。 官方表示,V1.2.1 版本主要改进内容如下: 修复了已使用空间不准确的问题; 增加了 leader 任期版本及校验; 解决了一组服务器有较大数目数据分组(如1024个)时,程序挂掉的问题; 数据恢复线程更改 slice 索引时必须加锁; 调整数据块的 hash code 算法,确保数据均匀分布; 增加...

1
11
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
10 评论
94 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部