Union filesystem (FUSE) like unionfs, aufs and mhddfs. Merge multiple paths and mount them, similar to concatenating.
Get it here: https://github.com/trapexit/mergerfs or from OS package repository.
Compared to (older) alternatives mergerfs seems very stable over the past months I’ve been using it. It offers multiple options on how to spread the data over the used drives.
Optionally SnapRAID can be used to add parity disk(s) to protect against disk failures (https://www.snapraid.it).
Create/mount pool
Example using 5 devices /dev/sd[b-f]
Disks are already partitioned and have a fs
for i in {b..f}; do
mkdir /mnt/sd${i}1
mount /dev/sd${i}1 /mnt/sd${i}1 && \
mkdir /mnt/sd${i}1/mfs
done && \
mkdir /mnt/mergerfs && \
mergerfs -o defaults,allow_other,use_ino /mnt/sd*/mfs /mnt/mergerfs
And here’s the result from ‘df’:
/dev/mapper/sdb1 3.6T 100M 3.5T 1% /mnt/sdb1
/dev/mapper/sdc1 3.6T 100M 3.5T 1% /mnt/sdc1
/dev/mapper/sdd1 3.6T 100M 3.5T 1% /mnt/sdd1
/dev/mapper/sde1 3.6T 100M 3.5T 1% /mnt/sde1
/dev/mapper/sdf1 3.6T 100M 3.5T 1% /mnt/sdf1
mergerfs 18T 500M 8.5T 1% /mnt/mergerfs
Changing pool
remove old drive from mergerfs pool
xattr -w user.mergerfs.srcmounts -/mnt/data1 /mnt/pool/.mergerfs
add new drive
xattr -w user.mergerfs.srcmounts +/mnt/data4 /mnt/pool/.mergerfs
some other mount options (-o)
use_ino make mergerfs
supply inodesfsname=example-name
name in dfno_splice_write
fixes page errors in syslog
https://github.com/trapexit/mergerfs#mount-options
Pool info
xattr -l /mnt/mergerfs/.mergerfs
Tools
https://github.com/trapexit/mergerfs-tools
- mergerfs.balance
- mergerfs.consolidate
- mergerfs.ctl
- mergerfs.dedup
- mergerfs.dup
- mergerfs.fsck
- mergerfs.mktrash
mergerfs.ctl
mergerfs.ctl -m /mnt/mergerfs info
mergerfs.ctl -m /mnt/mergerfs list values
mergerfs.ctl -m /mnt/mergerfs remove path /mnt/data1
mergerfs.ctl -m /mnt/mergerfs add path /mnt/data4