In computing, a distributed file system (DFS) or network file system is any file system that allows access from multiple hosts to files shared via a computer network. This makes it possible for multiple users on multiple machines to share files and storage resources.
Distributed file systems differ in their performance, mutability of content, handling of concurrent writes, handling of permanent or temporary loss of nodes or storage, and their policy of storing content.
Client | Written in | License | Access API | High availability | Shards | Efficient Redundancy | Redundancy Granularity | Initial release year | Memory requirements (GB) | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Alluxio (Virtual Distributed File System) | Java | HDFS, FUSE, HTTP/REST, S3 | [1] | [2] | 2013 | ||||||
Ceph | C++ | librados (C, C++, Python, Ruby), S3, Swift, FUSE | [3] | [4] | 2010 | 1 per TB of storage | |||||
Coda | C | C | [5] | 1987 | |||||||
GlusterFS | C | libglusterfs, FUSE, NFS, SMB, Swift, libgfapi | [6] | [7] | 2005 | ||||||
HDFS | Java | Java and C client, HTTP, FUSE[8] | [9] | [10] | 2005 | ||||||
IPFS | Go | HTTP gateway, FUSE, Go client, Javascript client, command line tool | [11] | [12] | 2015[13] | ||||||
JuiceFS | Go | POSIX, FUSE, HDFS, S3 | 2021 | ||||||||
Kertish-DFS | Go | HTTP(REST), CLI, C# Client, Go Client | 2020 | ||||||||
LizardFS | C++ | POSIX, FUSE, NFS-Ganesha, Ceph FSAL (via libcephfs) | [14] | [15] | 2013 | ||||||
Lustre | C | POSIX, NFS-Ganesha, NFS, SMB | [16] [17] | [18] [19] | 2003 | ||||||
MinIO | Go | AWS S3 API, FTP, SFTP | [20] | [21] | 2014 | ||||||
MooseFS | C | POSIX, FUSE | [22] | [23] | 2008 | ||||||
OpenAFS | C | Virtual file system, Installable File System | [24] | 2000[25] | |||||||
OpenIO[26] | C | Native (Python, C, Java), HTTP/REST, S3, Swift, FUSE (POSIX, NFS, SMB, FTP) | [27] | [28] | 2015 | 0.5 | |||||
Ori[29] | C, C++ | libori, FUSE | [30] | 2012 | |||||||
Quantcast File System | C | C++ client, FUSE (C++ server: MetaServer and ChunkServer are both in C++) | [31] | [32] | 2012 | ||||||
RozoFS | C, Python | FUSE, SMB, NFS, key/value | [33] | [34] | 2011[35] | ||||||
SeaweedFS | Go, Java | HTTP (REST), POSIX, FUSE, S3, HDFS | [36] | [37] | 2015 | ||||||
Storj | Go | HTTP (REST), S3, Native (Go, C, Python, Java) | 2018 | ||||||||
Tahoe-LAFS | Python | HTTP (browser or CLI), SFTP, FTP, FUSE via SSHFS, pyfilesystem | [38] | [39] | 2007 | ||||||
XtreemFS | Java, C++ | libxtreemfs (Java, C++), FUSE | [40] | [41] | 2009 |
Client | Written in | License | Access API | ||
---|---|---|---|---|---|
BeeGFS | C / C++ | FRAUNHOFER FS (FhGFS) EULA,[42] GPLv2 client | POSIX | ||
ObjectiveFS[43] | C | POSIX, FUSE | |||
C, C++ | POSIX, NFS, SMB, Swift, S3, HDFS | ||||
MapR-FS | C, C++ | POSIX, NFS, FUSE, S3, HDFS, CLI | |||
PanFS | C, C++ | DirectFlow, POSIX, NFS, SMB/CIFS, HTTP, CLI | |||
Infinit[44] | C++ | (to be open sourced)[45] | FUSE, Installable File System, NFS/SMB, POSIX, CLI, SDK (libinfinit) | ||
Isilon OneFS | C/C++ | POSIX, NFS, SMB/CIFS, HDFS, HTTP, FTP, SWIFT Object, CLI, Rest API | |||
Qumulo | C/C++ | POSIX, NFS, SMB/CIFS, CLI, S3, Rest API | |||
Scality | C | FUSE, NFS, REST, AWS S3 | |||
Quobyte | Java, C++ | POSIX, FUSE, NFS, SMB/CIFS, HDFS, AWS S3, TensorFlow Plugin, CLI, Rest API |
Name | Run by | Access API | ||
---|---|---|---|---|
Amazon S3 | Amazon.com | HTTP (REST/SOAP) | ||
Google Cloud Storage | HTTP (REST) | |||
SWIFT (part of OpenStack) | Rackspace, Hewlett-Packard, others | HTTP (REST) | ||
Microsoft Azure | Microsoft | HTTP (REST) | ||
IBM Cloud Object Storage | IBM (formerly Cleversafe)[46] | HTTP (REST) |
Some researchers have made a functional and experimental analysis of several distributed file systems including HDFS, Ceph, Gluster, Lustre and old (1.6.x) version of MooseFS, although this document is from 2013 and a lot of information are outdated (e.g. MooseFS had no HA for Metadata Server at that time).[47]
The cloud based remote distributed storage from major vendors have different APIs and different consistency models.[48]