All Projects → moosefs → Moosefs

moosefs / Moosefs

Licence: gpl-2.0
MooseFS – Open Source, Petabyte, Fault-Tolerant, Highly Performing, Scalable Network Distributed File System (Software-Defined Storage)

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Moosefs

Infinit
The Infinit policy-based software-defined storage platform.
Stars: ✭ 363 (-64.59%)
Mutual labels:  storage, fuse, filesystem, scalability
Glusterfs
Gluster Filesystem : Build your distributed storage in minutes
Stars: ✭ 3,437 (+235.32%)
Mutual labels:  storage, filesystem, high-availability, snapshot
lustre-release
Mirror of official Lustre development repository http://git.whamcloud.com/
Stars: ✭ 35 (-96.59%)
Mutual labels:  filesystem, posix, file-system, distributed-storage
Hazelcast
Open-source distributed computation and storage platform
Stars: ✭ 4,662 (+354.83%)
Mutual labels:  big-data, clustering, scalability, distributed-computing
Clustering4Ever
C4E, a JVM friendly library written in Scala for both local and distributed (Spark) Clustering.
Stars: ✭ 126 (-87.71%)
Mutual labels:  big-data, clustering, scalability
Spark With Python
Fundamentals of Spark with Python (using PySpark), code examples
Stars: ✭ 150 (-85.37%)
Mutual labels:  big-data, hadoop, distributed-computing
hazelcast-csharp-client
Hazelcast .NET Client
Stars: ✭ 98 (-90.44%)
Mutual labels:  big-data, clustering, scalability
fusell-seed
FUSE (the low-level interface) file system boilerplate 📂 🔌 💾
Stars: ✭ 13 (-98.73%)
Mutual labels:  fuse, filesystem, posix
Hazelcast Cpp Client
Hazelcast IMDG C++ Client
Stars: ✭ 67 (-93.46%)
Mutual labels:  big-data, clustering, scalability
cubefs
CubeFS is a cloud native distributed storage platform.
Stars: ✭ 3,062 (+198.73%)
Mutual labels:  filesystem, posix, distributed-storage
Lizardfs
LizardFS is an Open Source Distributed File System licensed under GPLv3.
Stars: ✭ 793 (-22.63%)
Mutual labels:  posix, high-availability, distributed-computing
Hazelcast Go Client
Hazelcast IMDG Go Client
Stars: ✭ 140 (-86.34%)
Mutual labels:  big-data, clustering, scalability
Hazelcast Nodejs Client
Hazelcast IMDG Node.js Client
Stars: ✭ 124 (-87.9%)
Mutual labels:  big-data, clustering, scalability
Fusell Seed
FUSE (the low-level interface) file system boilerplate 📂 🔌 💾
Stars: ✭ 9 (-99.12%)
Mutual labels:  fuse, filesystem, posix
Hazelcast Python Client
Hazelcast IMDG Python Client
Stars: ✭ 92 (-91.02%)
Mutual labels:  big-data, clustering, scalability
Ozone
Scalable, redundant, and distributed object store for Apache Hadoop
Stars: ✭ 330 (-67.8%)
Mutual labels:  big-data, hadoop, storage
Goofys
a high-performance, POSIX-ish Amazon S3 file system written in Go
Stars: ✭ 3,932 (+283.61%)
Mutual labels:  fuse, filesystem, posix
Seaweedfs
SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding.
Stars: ✭ 13,380 (+1205.37%)
Mutual labels:  fuse, distributed-storage, posix
Go Fastdfs
go-fastdfs 是一个简单的分布式文件系统(私有云存储),具有无中心、高性能,高可靠,免维护等优点,支持断点续传,分块上传,小文件合并,自动同步,自动修复。Go-fastdfs is a simple distributed file system (private cloud storage), with no center, high performance, high reliability, maintenance free and other advantages, support breakpoint continuation, block upload, small file merge, automatic synchronization, automatic r…
Stars: ✭ 2,923 (+185.17%)
Mutual labels:  storage, filesystem, file-system
Juicefs
JuiceFS is a distributed POSIX file system built on top of Redis and S3.
Stars: ✭ 4,262 (+315.8%)
Mutual labels:  storage, filesystem, posix
MooseFS logo

MooseFS – A Petabyte Distributed File System

MooseFS is a Petabyte Open Source Network Distributed File System. It is easy to deploy and maintain, highly reliable, fault tolerant, highly performing, easily scalable and POSIX compliant.

MooseFS spreads data over a number of commodity servers, which are visible to the user as one resource. For standard file operations MooseFS acts like ordinary Unix-like file system:

  • A hierarchical structure – directory tree
  • Stores POSIX file attributes – permissions, last access and modification times, etc.
  • Supports ACLs
  • Supports POSIX and BSD file locks – including support for distributed file locking
  • Supports special files – block and character devices, pipes and sockets
  • Supports symbolic links – file names pointing to target files, not necessarily on MooseFS
  • Supports hard links – different names of files which refer to the same data on MooseFS

Distinctive MooseFS features:

  • High reliability – files are stored in several copies on separate servers. The number of copies is a configurable parameter, even per each file
  • No Single Point of Failure – all hardware and software components may be redundant
  • Parallel data operations – many clients can access many files concurrently
  • Capacity can be dynamically expanded by simply adding new servers/disks on the fly
  • Retired hardware may be removed on the fly
  • Deleted files are retained for a configurable period of time (a file system level "trash bin")
  • Coherent, "atomic" snapshots of files, even while the files are being written/accessed
  • Access to the file system can be limited based on IP address and/or password (similarly as in NFS)
  • Data tiering – supports different storage policies for different files/directories in Storage Classes mechanism
  • Per-directory, "project" quotas – configurable per RAW space, usable space, number of inodes with hard and soft quotas support
  • Apart from file system storage, MooseFS also provides block storage (mfsbdev)
  • Efficient, pure C implementation
  • Ethernet support

Supported platforms

MooseFS can be installed on any POSIX compliant operating system including various Linux distributions, FreeBSD and macOS:

  • Ubuntu
  • Debian
  • RHEL / CentOS
  • OpenSUSE
  • FreeBSD
  • macOS
  • Raspbian – Raspberry Pi 3

MooseFS Linux Client uses FUSE. MooseFS macOS Client uses FUSE for macOS.

There is a separate MooseFS Client for Microsoft Windows available, built on top of Dokany.

Getting started

You can install MooseFS using your favourite package manager on one of the following platforms using officially supported repositories:

  • Ubuntu 16 / 18 / 20
  • Debian 8 / 9 / 10
  • RHEL / CentOS 7 / 8
  • FreeBSD 11 / 12
  • macOS 10.11+
  • Raspbian 8 / 9 – Raspberry Pi 3

Packages for Ubuntu 14 and CentOS 6 are also available, but no longer supported.

Minimal set of packages, which are needed to run MooseFS:

  • moosefs-master MooseFS Master Server for metadata servers,
  • moosefs-chunkserver MooseFS Chunkserver for data storage servers,
  • moosefs-client MooseFS Client – client side package to mount the filesystem.

Source code

Feel free to download the source code from our GitHub code repository!

Install the following dependencies before building MooseFS from sources:

  • Debian/Ubuntu: sudo apt install build-essential libpcap-dev zlib1g-dev libfuse3-dev pkg-config (if you don't have FUSE v. 3 in your system, use sudo apt install build-essential libpcap-dev zlib1g-dev libfuse-dev pkg-config)
  • CentOS/RHEL: sudo yum install gcc make libpcap-devel zlib-devel fuse3-devel pkgconfig (if you don't have FUSE v. 3 in your system, use sudo yum install gcc make libpcap-devel zlib-devel fuse-devel pkgconfig)

Recommended packages:

  • Debian/Ubuntu: sudo apt install fuse3 (if you don't have FUSE v. 3 in your system, use sudo apt install fuse)
  • CentOS/RHEL: sudo yum install fuse3 (if you don't have FUSE v. 3 in your system, use sudo yum install fuse)

Building MooseFS on Linux can be easily done by running ./linux_build.sh. Similarly, use ./freebsd_build.sh in order to build MooseFS on FreeBSD and respectively ./macosx_build.sh on macOS. Remember that these scripts do not install binaries (i.e. do not run make install) at the end. Run this command manually.

Minimal setup

Just three steps to have MooseFS up and running:

1. Install at least one Master Server

  1. Install moosefs-master package
  2. Prepare default config (as root):
cd /etc/mfs
cp mfsmaster.cfg.sample mfsmaster.cfg
cp mfsexports.cfg.sample mfsexports.cfg
  1. Prepare the metadata file (as root):
cd /var/lib/mfs
cp metadata.mfs.empty metadata.mfs
chown mfs:mfs metadata.mfs
rm metadata.mfs.empty
  1. Run Master Server (as root): mfsmaster start
  2. Make this machine visible under mfsmaster name, e.g. by adding a DNS entry (recommended) or by adding it in /etc/hosts on all servers that run any of MooseFS components.

2. Install at least two Chunkservers

  1. Install moosefs-chunkserver package
  2. Prepare default config (as root):
cd /etc/mfs
cp mfschunkserver.cfg.sample mfschunkserver.cfg
cp mfshdd.cfg.sample mfshdd.cfg
  1. At the end of mfshdd.cfg file make one or more entries containing paths to HDDs / partitions designated for storing chunks, e.g.:
/mnt/chunks1
/mnt/chunks2
/mnt/chunks3

It is recommended to use XFS as an underlying filesystem for disks designated to store chunks. More than two Chunkservers are strongly recommended.

  1. Change the ownership and permissions to mfs:mfs to above mentioned locations:
chown mfs:mfs /mnt/chunks1 /mnt/chunks2 /mnt/chunks3
chmod 770 /mnt/chunks1 /mnt/chunks2 /mnt/chunks3
  1. Start the Chunkserver: mfschunkserver start

Repeat steps above for second (third, ...) Chunkserver.

3. Client side: mount MooseFS filesystem

  1. Install moosefs-client package
  2. Mount MooseFS (as root):
mkdir /mnt/mfs
mount -t moosefs mfsmaster: /mnt/mfs

or: mfsmount -H mfsmaster /mnt/mfs if the above method is not supported by your system

  1. You can also add an /etc/fstab entry to mount MooseFS during the system boot:
mfsmaster:    /mnt/mfs    moosefs    defaults,mfsdelayedinit    0 0

There are more configuration parameters available but most of them may stay with defaults. We do our best to keep MooseFS easy to deploy and maintain.

MooseFS, for testing purposes, can even be installed on a single machine!

Additional tools

Setting up moosefs-cli or moosefs-cgi with moosefs-cgiserv is also recommended – it gives you a possibility to monitor the cluster online:

  1. Install moosefs-cli moosefs-cgi moosefs-cgiserv packages (they are typically set up on the Master Server)
  2. Run MooseFS CGI Server (as root): mfscgiserv start
  3. Open http://mfsmaster:9425 in your web browser

It is also strongly recommended to set up at least one Metalogger on a different machine than Master Server (e.g. on one of Chunkservers). Metalogger constantly synchronizes and backups the metadata:

  1. Install moosefs-metalogger package
  2. Prepare default config (as root):
cd /etc/mfs
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
  1. Run Metalogger (as root): mfsmetalogger start

Refer to installation guides for more details.

Some facts

Contact us

Copyright

Copyright (c) 2008-2021 Jakub Kruszona-Zawadzki, Core Technology Sp. z o.o.

This file is part of MooseFS.

MooseFS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 (only).

MooseFS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with MooseFS; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA or visit http://www.gnu.org/licenses/gpl-2.0.html.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].