a featureful union filesystem
Go to file
trapexit 5e584f246a
Some checks failed
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
mkdocs / deploy (push) Has been cancelled
Merge pull request #1390 from trapexit/tiered
Add tiered cache details to docs
2025-01-08 00:56:48 -05:00
.github Update funding and cirrus builds 2025-01-06 23:07:33 -06:00
buildtools Create ld_preload to reopen files on underlying filesystem (#1294) 2024-01-22 12:42:55 -06:00
debian fix rpm spec and chmod in deb 2020-06-30 11:07:39 -04:00
libfuse Add support for 'direct-io-allow-mmap' if supported by kernel 2024-03-21 20:48:42 -05:00
man Add support for 'direct-io-allow-mmap' if supported by kernel 2024-03-21 20:48:42 -05:00
mkdocs Add tiered cache details to docs 2025-01-07 23:55:13 -06:00
src Add support for 'direct-io-allow-mmap' if supported by kernel 2024-03-21 20:48:42 -05:00
tests Align msg buffer memory to allow O_DIRECT to work 2023-07-09 15:32:11 -05:00
tools Add missing --relative flag to rsync in percent-full mover script 2024-07-18 12:14:02 -07:00
.cirrus.yml Update funding and cirrus builds 2025-01-06 23:07:33 -06:00
.gitignore add mkdocs 2024-12-21 09:36:07 -06:00
DEPENDENCIES Remove use of pthread_getname_np to work with older musl versions 2023-10-14 01:15:29 -05:00
LICENSE Create ld_preload to reopen files on underlying filesystem (#1294) 2024-01-22 12:42:55 -06:00
Makefile Create ld_preload to reopen files on underlying filesystem (#1294) 2024-01-22 12:42:55 -06:00
mergerfs.spec Create ld_preload to reopen files on underlying filesystem (#1294) 2024-01-22 12:42:55 -06:00
README.md Update README to point to docs, update project comparisons 2025-01-05 23:39:48 -06:00

mergerfs - a featureful union filesystem

mergerfs is a
FUSE based
union filesystem geared
towards simplifying storage and management of files across numerous
commodity storage devices. It is similar to mhddfs, unionfs,
and aufs.

Features

  • Logically combine numerous filesystems/paths into a single
    mount point
  • Combine paths of the same or different filesystems
  • Ability to add or remove filesystems/paths without impacting the
    rest of the data
  • Unaffected by individual filesystem failure
  • Configurable file selection and creation placement
  • Works with filesystems of any size
  • Works with filesystems of almost any type
  • Ignore read-only filesystems when creating files
  • Hard link copy-on-write / CoW
  • Runtime configurable
  • Support for extended attributes (xattrs)
  • Support for file attributes (chattr)
  • Support for POSIX ACLs

Non-features

  • Read/write overlay on top of read-only filesystem like OverlayFS
  • File whiteout
  • RAID like parity calculation
  • Redundancy
  • Splitting of files across branches

How it works

mergerfs logically merges multiple filesystem paths together. It acts
as a proxy to the underlying filesystem paths. Combining the behaviors
of some functions and being a selector for others.

When the contents of a directory are requested mergerfs combines the
list of files from each directory, deduplicating entries, and returns
that list.

When a file or directory is created a policy is first run to determine
which branch will be selected for the creation.

For functions which change attributes or remove the file the behavior
may be applied to all instances found.

Read more about policies
here
.

Visualization

A         +      B        =       C
/disk1           /disk2           /merged
|                |                |
+-- /dir1        +-- /dir1        +-- /dir1
|   |            |   |            |   |
|   +-- file1    |   +-- file2    |   +-- file1
|                |   +-- file3    |   +-- file2
+-- /dir2        |                |   +-- file3
|   |            +-- /dir3        |
|   +-- file4        |            +-- /dir2
|                     +-- file5   |   |
+-- file6                         |   +-- file4
                                  |
                                  +-- /dir3
                                  |   |
                                  |   +-- file5
                                  |
                                  +-- file6

QuickStart

https://trapexit.github.io/mergerfs/quickstart/

Documentation

https://trapexit.github.io/mergerfs

Support

https://trapexit.github.io/mergerfs/support/

Sponsorship and Donations

https://github.com/trapexit/support

Development and support of a project like mergerfs requires a
significant amount of time and effort. The software is released under
the very liberal ISC
license and is therefore free to use for personal or commercial uses.

If you are a non-commercial user and find mergerfs and its support valuable
and would like to support the project financially it would be very
much appreciated.

If you are using mergerfs commercially please consider sponsoring the
project to ensure it continues to be maintained and receive
updates. If custom features are needed feel free to contact me
directly
.