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 指数为
超过 的项目

评论 (9)

加载中
不知道有没有battle应用,毕竟数据库太重要了。
06/22 12:09
回复
举报
我这有一个技术架构可否谈论一下可行性
03/23 23:24
回复
举报
打分: 较差
搞不懂,为什么这么底层的系统还脱离不了python?python适合做这么高性能的底层开发吗?
01/28 16:59
回复
举报
同问,和fastdfs什么关系?
01/17 23:42
回复
举报
happy_fish100软件作者
FastDFS是典型的对象存储,FastCFS是基于块的分布式文件系统,更加通用,支持跑数据库。
01/29 21:01
回复
举报
支持k8s吗
01/11 17:32
回复
举报
和fastdfs什么关系?
2020/12/30 21:19
回复
举报
什么时候能加入Debian Gnu/Linux 大家庭,成为蓝光DVD光盘的默认组件包
2020/12/30 12:37
回复
举报
可以跑数据库的分布式存储系统,一个时代的开始
2020/12/30 10:55
回复
举报
更多评论
发表了资讯
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
8
发表了资讯
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
发表了资讯
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
发表了资讯
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
6
发表于数据库专区
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
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
01/05 11:28

FastCFS架构之连接篇

上一篇文章讲到了FastCFS核心组件faststore的架构及特点,大家可能有些蒙圈,这次补上FastCFS各个模块之间的关系说明。老规矩,上图为敬: FastCFS的两大核心组件 faststore 和 fastDIR相互独立,通过clien端封装的file api library将二者连接起来。 这种做法有两点好处:1. faststore 和 fastDIR不直接依赖,降低服务端复杂性;2. 如果不需要使用fastDIR提供的元数据服务,可以直接使用 faststore api访问faststore cluster。比...

0
0
发表于运维专区
2020/12/28 11:25

FastCFS核心组件及访问方式

FastCFS 是一款可以跑数据库的轻量级分布式存储系统,她为数据库和云平台提供后端存储,保证数据强一致性,解决大容量数据存储问题,做到了高可靠、高可用、高性能以及高扩展性。 FastCFS服务端两个核心组件是 FastStore 和 FastDIR。FastStore是基于块存储的分布式数据存储服务,其文件block大小为4MB,文件 inode + 文件偏移量 (offset)作为block的key,对应的文件内容为 value,FastStore本质是一个分布式Key-Value系统。Fas...

0
0
发表于运维专区
01/25 16:07

FastCFS数据一致性模型之基础结构

最近忙着FastCFS v1.2.0的研发工作,主要对数据恢复和master任命机制做了改进,修复了5个稳定性bug,FastCFS的可靠性和稳定性上了一个新台阶。v1.2.0的改进工作和数据一致性密切相关,本文将介绍FastCFS采用的数据一致性模型及基础结构。 说到数据一致性,大家会想到分布式系统必须符合CAP理论:一个分布式系统,不可能完全满足CAP,只能做到其中的两个,即 CA、AP或CP。 FastCFS的目标是支持跑数据库,保证数据一致性是基本要求...

0
0
发表于运维专区
02/02 14:47

FastCFS同步复制机制简介

上一篇文章介绍了FastCFS采用数据分组的做法,一个数据分组的几个节点(如三个节点即三副本)之间是Master/Slave关系;FastCFS采用数据强一致模型,通过Master/Slave结构的同步复制机制来保证数据一致性,本文将概要介绍这一机制的原理和关键点。 和单机系统相比,分布式系统因网络通信方面存在较大不确定性,要做到数据强一致的挑战非常大。业界分布式系统主流做法是采用BASE理论,有意避开数据强一致性这个难题。BASE理论是B...

0
0
发表于运维专区
2020/12/30 12:39

FastCFS核心组件FastStore架构及特点

上一篇文章介绍了FastCFS服务端两大核心组件:FastDIR和FastStore。其中FastDIR管理文件元数据,FastStore以分块方式存储文件内容。FastDIR和FastStore均采用Master/Slave结构,Master不需要手工配置,由程序自动选举产生,并且做到了failover。FastDIR架构是FastStore架构子集(特例),因此我们着重介绍FastStore的架构及其特点。 无图无真相,先上FastStore的架构图。 FastStore对服务器和数据均采用分组方式,服务器分组简称...

0
0
发表于数据库专区
2020/12/25 11:52

可以跑数据库的分布式文件系统FastCFS

FastCFS 是一款基于块存储的通用分布式文件系统,可以作为MySQL、PostgresSQL、Oracle等数据库和云平台的后端存储。 已经有了比较受欢迎的FastDFS,为啥还要研发FastCFS呢?FastDFS是轻量级的对象存储,只能通过专有API访问,为互联网应用量身定制,适合存放图片、视频、文档等等;而FastCFS是通用的分布式文件系统,可以mount到本机通过标准文件接口访问,为云平台量身定制,完全支持数据库。一句话总结:FastCFS是云原生分布式...

2
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
9 评论
76 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部