• Stars
    star
    551
  • Rank 80,726 (Top 2 %)
  • Language
    C
  • License
    GNU Affero Genera...
  • Created about 4 years ago
  • Updated 29 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A high performance distributed file system which can be used as the back-end storage of databases, K8s and VM etc.

FastCFS -- a high performance general distributed file system for databases, K8s and KVM etc.

English | Chinese

1. About

FastCFS is a general distributed file system with strong consistency, high performance, high availability and supporting 10 billion massive files. FastCFS can be used as the back-end storage of databases (MySQL, PostgresSQL, Oracle etc.), K8s, KVM, FTP, SMB and NFS.

Main Features

  • High performance on the premise of strong data consistency: performance is more better than ceph
  • Fully compatible with POSIX, supporting file lock and 10 billion massive files
  • High availability: no single point & automatic failover
  • Easy to use:
    • simple and efficient architecture and native implementation
    • independent of third-party components
    • built-in operation and maintenance tools
  • Strong random write performance: FCFS allocates space based on the trunk file, converts random writes from the client to sequential writes

Classical Application Scene

  • Database: supports two storage methods (conventional exclusive data and high-level shared data) and database cloudification
  • File Storage: documents, pictures, videos, etc., FastCFS is easier to integrate with general software than the object storage
  • Unified Storage: database and file storage share a storage cluster, which significantly improves the utilization of storage resources
  • High Performance Computing: FastCFS with high reliability and high performance is naturally suitable for the HPC scene
  • Video monitoring: smooth writing for multi-channel videos with HDD such as SATA because FastCFS uses sequential writing approach

2. Current Version: V4.3

3. Supported Platforms

  • Linux: Kernel version >= 3.10 (Full support, >= 4.18 is recommended)
  • MacOS or FreeBSD (Only server side)

4. Dependencies

5. Installation

5.1 DIY installation

you can use Cluster Operation Tool to deploy FastCFS

step by step please see INSTALL

recommend to execute libfuse_setup.sh for compiling and installing libfuse

5.2 easy installation

libfastcommon, libserverframe, fastDIR, faststore and FastCFS can be compiled, installed and auto configurated by fastcfs.sh

fastcfs.sh can automatically pull or update above six projects codes from GitHub, compile and install according to dependency orders, and automatically generate cluster related configuration files according to the config templates.

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

fastcfs.sh usage:

* install: pull/update codes from gitee, then make and install
* config: copy config files and configure them with local ip
* start | stop | restart: for service processes control

one click to build (deploy and run) single node demo environment (MUST run by root):

./helloWorld.sh

or execute following commands (MUST run by root):

./fastcfs.sh install
./fastcfs.sh config --force
./fastcfs.sh restart

now you can see the mounted path of FastCFS by the command:

df -h /opt/fastcfs/fuse | grep fuse

6. Benchmark

FastCFS has huge better performance than Ceph: the IOPS ratio of sequential write is 6.x, sequential read is 2.x, random write is about 2.0.

7. K8s CSI Driver

fastcfs-csi

8. Chinese Relative articles

CSDN blog

9. TODO List

  • [fstore] data recovery after single disk fault (done)
  • [fstore] after the machine recovery, the data masters should be rebalanced (done)
  • [fauth & fdir & fstore] leader election uses more than half principle to prevent brain-split (done)
  • [fauth & fdir & fstore] import public vote node under 2 copies scene to prevent brain-split (done)
  • [fdir & fstore] binlog deduplication and historical data deletion (done)
  • [fdir & fstore] data submission by majority confirmation to ensure data consistency (done)
  • [fdir & fstore] for two replicas, the data submission majority mechanism is intelligent (done)
  • [fstore] file read & write performance optimization (done)
  • [fdir & api] POSIX compatibility test and improvement (done)
  • [fstore] slice storage engine plugin to support massive data with limited memory (done)
  • [all] adapt to RDMA network to break through network bottlenecks (doing)
  • [api] provide Java native API (doing)
  • [all] cluster online expansion
  • [fstore] hierarchical storage & slice merging: supporting two-level storage, such as SSD + HDD

10. Business Support

We provide technical support service and customized development. Welcome to use WeChat or email for discuss.

11. Contact us

email: 384681(at)qq(dot)com

WeChat subscription: search "fastdfs" for the related articles (Chinese Only)

More Repositories

1

fastdfs

FastDFS is an open source high performance distributed file system (DFS). It's major functions include: file storing, file syncing and file accessing, and design for high capacity and load balance. Wechat/Weixin public account (Chinese Language): fastdfs
C
9,016
star
2

fastdfs-client-java

FastDFS java client SDK
Java
1,598
star
3

libfastcommon

c common functions library extracted from my open source project FastDFS. this library is very simple and stable. functions including: string, logger, chain, hash, socket, ini file reader, base64 encode / decode, url encode / decode, fast timer, skiplist, object pool etc. detail info please see the c header files.
C
897
star
4

libshmcache

libshmcache is a local cache in the share memory for multi processes. high performance due to read is lockless. libshmcache is 100+ times faster than a remote interface such as redis.
C
447
star
5

fastdfs-nginx-module

FastDFS nginx module
C
433
star
6

fastdht

FastDHT is a high performance distributed hash table (DHT) which based key value pairs. It can store mass key value pairs such as filename mapping, session data and user related data.
C
122
star
7

faststore

a high performance distributed file storage service.
C
30
star
8

fastkengine

knowledge base engine
C
25
star
9

fastDIR

a high performance distributed directory service.
C
24
star
10

watchd

watchd is a process watcher / monitor, so watchd is a process watch dog to keep the watched processes alive.
C
21
star
11

libserverframe

C network service framework library extract from FastDFS
C
20
star
12

fastcfs-csi

k8s CSI driver for FastCFS
Go
11
star
13

fastconfig

the config server and agent for configuration items.
C
11
star
14

cparser

an open C language parser. you can walk through the AST for special purpose.
C
9
star
15

fastdfs-apache-module

FastDFS apache module
C
8
star
16

fasttemplate

C library and PHP extension for fast variables replace of template.
C
6
star
17

FastOS.repo

Fast Open Source yum repo
Shell
4
star
18

cplus

C language data type and syntax extension for quick development. extended data type including: string, map, list and dynamic array.
3
star
19

libdiskallocator

sequential disk allocator based trunk files
C
2
star
20

test

just a test
C++
1
star