当前位置: 首页 > 软件库 > 大数据 > 数据存储 >

FastCFS

基于块存储的通用分布式文件系统
授权协议 AGPL-3.0
开发语言 C/C++
所属分类 大数据、 数据存储
软件类型 开源软件
地区 国产
投 递 者 逑沛
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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
  • FastCFS性能碾压Ceph之技术揭秘 本篇文章转载于 FastCFS 作者 余庆 大佬的 FastDFS分享与交流 公众号。 FastCFS 已发布了版本 2.2.0,IOPS 全面超越 Ceph:顺序写是Ceph 的 6.x 倍,顺序读是 Ceph 的 2.x 倍,随机写大约是 Ceph 的 2 倍。 具体的性能测试数据参见:https://gitee.com/fastdfs100/Fast

  • 云原生分布式存储系统FastCFS安装简明教程 本篇文章转载于 FastCFS 作者 余庆 大佬的 FastDFS分享与交流 公众号。 我将自己部署 FastCFS集群 以及和 k8s集群 打通的全过程分享出来,希望能够帮助到尝试使用 FastCFS 的同学。 1. 快速部署 如果你只是想简单快速上手体验 FastCFS,作为学习或者本地测试环境而非生产环境,你可以选择以下两种方式部署 FastC

  •     FastCFS今天发布了v3.5,支持多数派数据复制,在网络不稳定或者系统繁忙等情况下,仍可保证数据一致性和可靠性。FastCFS v3.5从机制上保证了数据一致性,在实际使用中我们该如何进行软硬件配置呢?     三副本既可以防leader脑裂,还可以采用多数派数据复制算法,保证数据一致性。对于访问量较大的企业,可以直接使用三副本。对于3副本或5副本等奇数副本数,FastCFS默认配置就

  • 通过 POSIX 兼容性测试的v3.7发布后,FastCFS完全可以作为NFS的后端存储,推荐使用FastCFS v3.7.1及后续版本。FastCFS的搭建参见gitee上的FastCFS项目官网,本文着重介绍FastCFS作为后端存储的NFS搭建及常见问题排查。 一、服务端 NFS服务端运行在FastCFS的fuse client节点上。 1.1 安装 CentOS和RHEL:yum inst

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

  • FastCFS 是一款强一致性、高性能、高可用、支持百亿级海量文件的通用分布式文件系统,可以作为MySQL、PostgresSQL、Oracle等数据库,k8s,KVM,FTP,SMB和NFS等系统的后端存储。 数据库作为IO密集型软件,对磁盘IO和网络IO性能要求比较高。把数据库跑在分布式文件系统上,必然会碰到网络IO这个性能瓶颈。使用RDMA是消除网络IO瓶颈的有效方法,但使用原生libver

  • FastCFS -- 可以跑数据库的高性能云原生分布式文件系统 1. 关于 FastCFS 是一款基于块存储的通用分布式文件系统,可以作为MySQL、PostgresSQL、Oracle等数据库和云平台的后端存储。 2. 当前版本 V1.1.0 3. 支持的操作系统 Linux: Kernel version >= 3.10 (完全支持) MacOS or FreeBSD (仅支持服务端,不支持F

  • FastCFS V2.3.0发布,主要改进如下:     1. auth server以主备方式支持多节点,避免单点;     2. leader/master选举/切换引入超时机制,选举时长可控;     3. 网络通信相关改进:        1)握手失败,server端主动断开连接;        2)cluster内部通信server端超时控制;        3)调整网络通信超时默认值(

  • 分布式文件系统FastCFS 本篇文章转载于 FastCFS 作者 余庆 大佬的 FastDFS分享与交流 公众号。 FastCFS 是一款基于块存储的通用分布式文件系统,可以作为 MySQL、PostgresSQL、Oracle 等数据库和云平台的后端存储。 已经有了比较受欢迎的FastDFS,为啥还要研发FastCFS呢? FastDFS是轻量级的对象存储,只能通过专有API访问,为互联网应用

  • 刚发布的FastCFS V3.2提供系统调用API(如 open、write、writev、read、readv、close 等)和 C API(如fopen、fwrite、fread、fclose等)两大类POSIX API,应用程序可以通过这两类API使用FastCFS存储。FastCFS在POSIX API名称前面加上前缀 fcfs_,比如 fcfs_open、fcfs_read等等,函数原

  • ​      昨天刚发布了FastCFS V1.3.0(注:转发FastCFS微信公众号以前的文章,FastCFS目前版本为V2.3.0),修复了4个稳定性相关bug,重构了客户端连接管理,实现了更优雅的failover机制,以及更高的读写性能,欢迎大家测试和使用。今天着重向大家介绍FastCFS的连接管理机制。     FastCFS一开始就使用libfastcommon提供的连接池来管理连接。

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

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

  • ​    3月份启动FastCFS V2.0研发工作,耗时近2个月时间推出了V2.0。为了更好地对接虚拟机和K8s,V2.0主要实现了存储池和访问权限控制,并支持配额。     V2.0支持的核心功能就是用户和权限体系。对于应用系统来说,权限管理是基本功能,实现起来根本就不是事儿。对于基础软件来说,为了保证高性能且不依赖第三方组件,挑战大了不少,其实现方案需要精心设计,实现细节需要仔细推敲。  

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

  •     近期一家金融企业使用FastCFS存储CVS格式的账单数据,文件不大,但数量较多,目前文件数超过一亿,还在持续增长中。。。因文件数较多,该用户开启了FastDIR的存储引擎插件,实现秒级重启并且显著降低内存占用。     经过5个月的潜心研发,我们在2021年底发布了FastCFS V3.0:核心组件FastDIR通过插件方式实现数据存储引擎,采用binlog + 存储引擎插件方式,按需加

  • ​  历经大约一个月的研发,FastCFS V2.2.0 发布,主要改进如下:     1. [fstore] 使用libaio实现异步读,随机读性能提升明显;     2. [fstore] 支持预读机制,顺序读性能提升显著;     3. 修复了3个bug:       1)[fstore] 修复V2.1.0引入的bug:第一次运行时,一个关键bool变量没有正确赋值;       2)[fu

 相关资料
  • 一、介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。 二、HDFS 设计原理 2.1 HDFS 架构 HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成: NameNode : 负责执行有关 文件系统命名空间 的操作,例如打开,

  • 一面 11.1 分布式存储 阿里天池比赛,问了一些模块的优化 问存储项目 问TinyKV 项目 操作系统:cpu cache,false sharing,gdb C++:移动语义,std::map,rbtree和b+tree区别。 perf 观察程序性能 算法题:二叉树的路径和 二面 11.2 leader 面 开局先选方向:DB,分布式,操作系统,体系结构,计算机网络。选了分布式,狂问raft

  • 数据存储容量的问题。 数据读写速度的问题。 数据可靠性的问题。 几种常见 RAID 的对比|名称|优点|缺点| |------|------|------| |RAID 0|使用 N 块磁盘的 RAID 0,将数据从内存写入磁盘时,将数据分成 N 块,并发写入,读取同理。所以,读写速度是单盘的 N 倍。|任何一块盘损坏,数据完整性破坏,数据不可用。| |RAID 1|数据写入磁盘时,将一份数据同时

  • 本文向大家介绍Hadoop 分布式存储系统 HDFS的实例详解,包括了Hadoop 分布式存储系统 HDFS的实例详解的使用技巧和注意事项,需要的朋友参考一下 HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系统。 一、HDFS的优缺点 1.HDFS优点:   a.高容错性     .数据保存多个副本     .数据丢的失后自动恢复

  • Gradle如何在本地文件系统上存储下载的jar文件?Maven将它们存储在下的目录中,但Gradle将它们存储在哪里?我检查了那里的文件夹,但只看到编译过的脚本。

  • 我有一个用于构建JAR并将其发布在nexus服务器上的maven存储库中的gradle文件。 我想在这种情况下应该将设置为空字符串。有什么更好的建议吗? 正在发布任务 generatePomFileFor{module1}发布-为发布“module1”生成Maven POM文件。 出版-出版本项目制作的所有出版物。 publish{module1}PublicationToMavenLocal-将

  • 本文向大家介绍PHP基于文件存储实现缓存的方法,包括了PHP基于文件存储实现缓存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP基于文件存储实现缓存的方法。分享给大家供大家参考。具体如下: 在一些数据库数据记录较大,但是服务器有限的时候,可能一条MySQL查询就会好几百毫秒,一个简单的页面一般也有十几条查询,这个时候也个页面加载下来基本要好几秒了,如果并发量高的话服务器基本就瘫

  • Hadoop分布式文件系统(HDFS)的设计主旨,在于对超大规模数据集提供可靠的存储功能,并对用户应用程序提供高带宽的输入输出数据流。在大型的集群里,上千台服务器均可直接参与到数据存储和应用程序任务执行。通过多服务器,分布式的存储和计算,计算资源的规模能够按照需要增长,并兼顾在各种规模上经济适用性。 本文主要描述了HDFS的架构,并以Yahoo!企业数据服务为例,介绍了如何使用HDFS系统管理高达