mirror of
https://github.com/trapexit/mergerfs.git
synced 2026-10-26 02:48:59 -04:00
3516 lines
No EOL
79 KiB
HTML
3516 lines
No EOL
79 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="description" content="mergerfs - a featureful union filesystem">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://trapexit.github.io/mergerfs/latest/project_comparisons/">
|
|
|
|
|
|
<link rel="prev" href="../known_issues_bugs/">
|
|
|
|
|
|
<link rel="next" href="../benchmarking/">
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="icon" href="../logo.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
|
|
|
|
|
|
|
|
<title>Project Comparisons - mergerfs</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#project-comparisons" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href=".." title="mergerfs" class="md-header__button md-logo" aria-label="mergerfs" data-md-component="logo">
|
|
|
|
<img src="../logo.png" alt="logo">
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
mergerfs
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Project Comparisons
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<form class="md-header__option" data-md-component="palette">
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
|
</label>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
|
|
</a>
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
<div class="md-search__suggest" data-md-component="search-suggest"></div>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-header__source">
|
|
<a href="https://github.com/trapexit/mergerfs" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
mergerfs
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href=".." title="mergerfs" class="md-nav__button md-logo" aria-label="mergerfs" data-md-component="logo">
|
|
|
|
<img src="../logo.png" alt="logo">
|
|
|
|
</a>
|
|
mergerfs
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
<a href="https://github.com/trapexit/mergerfs" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
mergerfs
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href=".." class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Home
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../quickstart/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
QuickStart
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Installation
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Installation
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../setup/installation/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Installation
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../setup/upgrade/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Upgrade
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../setup/build/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Build
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../terminology/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Terminology
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../intro_to_filesystems/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Intro to Filesystems
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Config
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Config
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/options/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Options
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/deprecated_options/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Deprecated Options
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/branches/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
branches
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/branches-mount-timeout/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
branches-mount-timeout
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/functions_categories_policies/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
functions, categories and policies
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/minfreespace/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
minfreespace
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/func_readdir/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
func.readdir
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/rename_and_link/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
rename and link
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/moveonenospc/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
moveonenospc
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/cache/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
caching
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/passthrough/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
passthrough.io
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/readahead/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
readahead
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/inodecalc/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
inodecalc
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/threads/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
threads
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/pin-threads/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
pin-threads
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/proxy-ioprio/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
proxy-ioprio
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/link-cow/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
link-cow
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/fuse-msg-size/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
fuse-msg-size
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/follow-symlinks/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
follow-symlinks
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/link-exdev/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
link-exdev
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/rename-exdev/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
rename-exdev
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/symlinkify/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
symlinkify
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/nullrw/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
nullrw
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/xattr/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
xattr
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/nfsopenhack/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
nfsopenhack
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/statfs/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
statfs / statvfs
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/flush-on-close/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
flush-on-close
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/export-support/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
export-support
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/kernel-permissions-check/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
kernel-permissions-check
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/lazy-umount-mountpoint/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
lazy-umount-mountpoint
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../error_handling_and_logging/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Error Handling and Logging
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../resource_usage/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Resource Usage
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../runtime_interface/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Runtime Interface
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../remote_filesystems/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Remote Filesystems
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../tips_notes/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Tips and Notes
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../known_issues_bugs/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Known Issues and Bugs
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Project Comparisons
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Project Comparisons
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mhddfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
mhddfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#aufs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
aufs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#unionfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
unionfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#unionfs-fuse" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
unionfs-fuse
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#overlayfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
overlayfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fuse-overlayfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
fuse-overlayfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#raid0-jbod-span-drive-concatenation-striping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RAID0, JBOD, SPAN, drive concatenation, striping
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#raid5-raid6" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RAID5, RAID6
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#lvm" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
LVM
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mdadm" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
mdadm
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#device-mapper" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
device mapper
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#unraid" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Unraid
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#nonraid" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
NonRAID
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#zfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
ZFS
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#zfs-anyraid" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
ZFS AnyRAID
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#bcachefs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
bcachefs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#btrfs-multi-device-filesystems" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Btrfs multi-device filesystems
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#stablebits-drivepool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
StableBit's DrivePool
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#windows-storage-spaces" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Windows Storage Spaces
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#plan-9-binds" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Plan 9 binds
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#9p" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
9P
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#snapraid-pooling" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
SnapRAID pooling
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rclone-union" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
rclone union
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#distributed-filesystems" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
distributed filesystems
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#nofs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
nofs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#policyfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
PolicyFS
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#greyhole" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Greyhole
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../benchmarking/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Benchmarking
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../performance/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Performance
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../tooling/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Tooling
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../extended_usage_patterns/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Extended Usage Patterns
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_18" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_18" id="__nav_18_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
FAQ
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_18_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_18">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
FAQ
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/why_isnt_it_working/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
"Why isn't it working?"
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/configuration_and_policies/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Configuration and Policies
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/usage_and_functionality/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Usage and Functionality
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/reliability_and_scalability/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Reliability and Scalability
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/compatibility_and_integration/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Compatibility and Integration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/technical_behavior_and_limitations/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Technical Behavior and Limitations
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/have_you_considered/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
"Have You Considered?"
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/downsides/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Downsides
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/limit_drive_spinup/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Limiting drive spinup
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../related_projects/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Related Projects
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../media_and_publicity/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Media and Publicity
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../support/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Support
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../sponsorship_and_donations/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Sponsorship and Donations
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mhddfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
mhddfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#aufs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
aufs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#unionfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
unionfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#unionfs-fuse" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
unionfs-fuse
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#overlayfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
overlayfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fuse-overlayfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
fuse-overlayfs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#raid0-jbod-span-drive-concatenation-striping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RAID0, JBOD, SPAN, drive concatenation, striping
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#raid5-raid6" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RAID5, RAID6
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#lvm" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
LVM
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mdadm" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
mdadm
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#device-mapper" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
device mapper
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#unraid" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Unraid
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#nonraid" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
NonRAID
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#zfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
ZFS
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#zfs-anyraid" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
ZFS AnyRAID
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#bcachefs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
bcachefs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#btrfs-multi-device-filesystems" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Btrfs multi-device filesystems
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#stablebits-drivepool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
StableBit's DrivePool
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#windows-storage-spaces" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Windows Storage Spaces
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#plan-9-binds" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Plan 9 binds
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#9p" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
9P
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#snapraid-pooling" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
SnapRAID pooling
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rclone-union" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
rclone union
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#distributed-filesystems" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
distributed filesystems
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#nofs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
nofs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#policyfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
PolicyFS
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#greyhole" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Greyhole
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://github.com/trapexit/mergerfs/edit/master/mkdocs/docs/project_comparisons.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://github.com/trapexit/mergerfs/raw/master/mkdocs/docs/project_comparisons.md" title="View source of this page" class="md-content__button md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg>
|
|
</a>
|
|
|
|
|
|
|
|
<h1 id="project-comparisons">Project Comparisons</h1>
|
|
<p>There are no solutions, only trade-offs.</p>
|
|
<p>This page includes both direct pooling alternatives and adjacent storage
|
|
technologies that solve different problems. Compare their operating layer,
|
|
failure domain, redundancy model, and platform requirements rather than only
|
|
their apparent pool capacity.</p>
|
|
<h2 id="mhddfs">mhddfs</h2>
|
|
<ul>
|
|
<li><a href="https://romanrm.net/mhddfs">https://romanrm.net/mhddfs</a></li>
|
|
</ul>
|
|
<p>mhddfs is, like mergerfs, a FUSE-based filesystem which can pool
|
|
multiple filesystems together.</p>
|
|
<p>mhddfs had not been updated in over a decade and has known stability
|
|
and security issues. mergerfs provides a superset of mhddfs' features
|
|
and offers better performance. As of 2020, the author of mhddfs has
|
|
<a href="https://romanrm.net/mhddfs#update">moved to using mergerfs.</a></p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> Nothing?</li>
|
|
<li><strong>Worse than mergerfs for:</strong> most modern deployments due to maintenance
|
|
status, feature coverage, and reliability.</li>
|
|
</ul>
|
|
<p>Below is an example of mhddfs and mergerfs set up to behave similarly.
|
|
mhddfs falls back to the drive with the most free space when every drive
|
|
has less than <code>mlimit</code> free; mergerfs with
|
|
<a href="../config/minfreespace/">minfreespace</a> filters those branches instead and
|
|
may fail the create if none qualify.</p>
|
|
<div class="language-sh highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>mhddfs<span class="w"> </span>-o<span class="w"> </span><span class="nv">mlimit</span><span class="o">=</span>4G,allow_other<span class="w"> </span>/mnt/hdd/disk0,/mnt/hdd/disk1<span class="w"> </span>/mnt/pool
|
|
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>
|
|
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>mergerfs<span class="w"> </span>-o<span class="w"> </span><span class="nv">minfreespace</span><span class="o">=</span>4G,category.create<span class="o">=</span>ff<span class="w"> </span>/mnt/hdd/disk0:/mnt/hdd/disk1<span class="w"> </span>/mnt/pool
|
|
</span></code></pre></div>
|
|
<h2 id="aufs">aufs</h2>
|
|
<ul>
|
|
<li><a href="https://aufs.sourceforge.net">https://aufs.sourceforge.net</a></li>
|
|
<li><a href="https://en.wikipedia.org/wiki/Aufs">https://en.wikipedia.org/wiki/Aufs</a></li>
|
|
</ul>
|
|
<p>aufs, another union filesystem, is a kernel-based overlay filesystem
|
|
with basic file creation placement policies.</p>
|
|
<p>Compared with mergerfs, aufs focuses on kernel-level overlay and
|
|
copy-on-write behavior, while mergerfs focuses on userspace pooling of
|
|
existing filesystems with richer branch placement policies.</p>
|
|
<p>aufs failed to be included in the mainline kernel and is no longer
|
|
available in most Linux distros, making it harder to get installed for
|
|
the average user. Development has been largely dormant for years.</p>
|
|
<p>While aufs can often offer better peak performance due to being
|
|
primarily kernel-based (at least when
|
|
<a href="../config/passthrough/">passthrough.io</a> is disabled in mergerfs),
|
|
mergerfs provides more configurability and is generally easier to use.
|
|
mergerfs, however, does not offer the overlay / copy-on-write (CoW)
|
|
features which aufs has.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> kernel-level overlay/CoW workloads where
|
|
that behavior is required.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> users needing a widely packaged,
|
|
actively-maintained, easy-to-deploy pooling solution.</li>
|
|
</ul>
|
|
<h2 id="unionfs">unionfs</h2>
|
|
<ul>
|
|
<li><a href="https://unionfs.filesystems.org">https://unionfs.filesystems.org</a></li>
|
|
</ul>
|
|
<p>unionfs for Linux is a "stackable unification file system" which
|
|
functions like many other union filesystems. It was last released for
|
|
Linux v3.14 back in 2014.</p>
|
|
<p>Compared with mergerfs, unionfs is an older kernel union filesystem
|
|
implementation while mergerfs is a modern, actively-maintained
|
|
FUSE-based pooling filesystem with broader policy controls.</p>
|
|
<p>Documentation is sparse so a comparison of features is not possible
|
|
but given the lack of maintenance and support for modern kernels there
|
|
is little reason to consider it as a solution.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> historical or legacy environments that
|
|
already depend on this specific kernel unionfs behavior.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> practical modern deployments due to
|
|
limited maintenance, aging kernel support, and sparse documentation.</li>
|
|
</ul>
|
|
<h2 id="unionfs-fuse">unionfs-fuse</h2>
|
|
<ul>
|
|
<li><a href="https://github.com/rpodgorny/unionfs-fuse">https://github.com/rpodgorny/unionfs-fuse</a></li>
|
|
</ul>
|
|
<p>unionfs-fuse is a FUSE-based union filesystem focused on overlay
|
|
behavior, including copy-on-write (CoW) style layering of writable
|
|
content over read-only content.</p>
|
|
<p>Compared with mergerfs, unionfs-fuse's primary feature is
|
|
overlay/CoW-style layering, while mergerfs' primary feature is
|
|
policy-based pooling and placement across multiple regular writable
|
|
filesystems.</p>
|
|
<p>As a FUSE filesystem, unionfs-fuse can often be mounted by an
|
|
unprivileged user when the system's FUSE configuration permits it. Kernel
|
|
solutions such as unionfs, aufs, and overlayfs normally require additional
|
|
privileges.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> overlay-style unions with copy-on-write
|
|
semantics in userspace.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> flexible create-policy-based pooling of
|
|
many writable filesystems.</li>
|
|
</ul>
|
|
<h2 id="overlayfs">overlayfs</h2>
|
|
<ul>
|
|
<li><a href="https://docs.kernel.org/filesystems/overlayfs.html">https://docs.kernel.org/filesystems/overlayfs.html</a></li>
|
|
</ul>
|
|
<p>overlayfs is effectively the successor to unionfs, unionfs-fuse, and
|
|
aufs and is widely used by Linux container platforms such as Docker and
|
|
Podman. Both overlayfs and FUSE were originally created by Miklos
|
|
Szeredi.</p>
|
|
<p>If your use case is layering a writable filesystem on top of read-only
|
|
filesystems then you should look first to overlayfs. Its feature set
|
|
however is very different from mergerfs and solves different problems.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> container and image-layering workflows
|
|
where copy-on-write semantics are central.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> heterogeneous pooling use cases that need
|
|
flexible branch selection policies across many existing filesystems.</li>
|
|
</ul>
|
|
<h2 id="fuse-overlayfs">fuse-overlayfs</h2>
|
|
<ul>
|
|
<li><a href="https://github.com/containers/fuse-overlayfs">https://github.com/containers/fuse-overlayfs</a></li>
|
|
</ul>
|
|
<p>fuse-overlayfs implements overlayfs-style lower, upper, and work directories
|
|
in userspace. Its primary use case is rootless containers, where a kernel
|
|
overlayfs mount may not be available.</p>
|
|
<p>Like unionfs-fuse and kernel overlayfs, it provides layering and copy-up
|
|
semantics rather than mergerfs-style placement across a pool of writable
|
|
filesystems.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> rootless container and other unprivileged
|
|
overlay workloads.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> general storage pooling across independent
|
|
writable filesystems.</li>
|
|
</ul>
|
|
<h2 id="raid0-jbod-span-drive-concatenation-striping">RAID0, JBOD, SPAN, drive concatenation, striping</h2>
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0">RAID0</a></li>
|
|
<li><a href="https://en.wikipedia.org/wiki/Non-RAID_drive_architectures#JBOD">JBOD</a></li>
|
|
<li><a href="https://en.wikipedia.org/wiki/Non-RAID_drive_architectures#Concatenation_(SPAN,_BIG)">SPAN</a></li>
|
|
<li><a href="https://en.wikipedia.org/wiki/Data_striping">striping</a></li>
|
|
</ul>
|
|
<p>"JBOD" is ambiguous: it can also mean disks exposed independently with
|
|
no aggregation. In this section it refers only to concatenated or spanned
|
|
layouts.</p>
|
|
<p>These are block device technologies which, in some form, aggregate
|
|
devices into what appears to be a single device on which a traditional
|
|
filesystem can be used. The filesystem has no understanding of the
|
|
underlying block layout and, should one of those underlying devices
|
|
fail or be removed, the filesystem will be missing that chunk, which
|
|
could contain critical information, and the whole filesystem may
|
|
become unrecoverable. Even if the data from the filesystem is
|
|
recoverable, doing so may require specialized tooling.</p>
|
|
<p>In contrast, with mergerfs you can format devices as you normally
|
|
would, or take existing filesystems and combine them in a pool to
|
|
aggregate their storage. The failure of any one device will have no
|
|
impact on the other devices. The downside to mergerfs' approach is
|
|
that you do not actually have contiguous space as large as you would
|
|
with those other technologies. That means you cannot create a file
|
|
larger than 1TB on a pool of two 1TB filesystems.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> creating one contiguous block device and
|
|
maximizing single-file size/performance characteristics.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> failure isolation and straightforward
|
|
per-disk recovery when a device dies.</li>
|
|
</ul>
|
|
<h2 id="raid5-raid6">RAID5, RAID6</h2>
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5">RAID5</a></li>
|
|
<li><a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_6">RAID6</a></li>
|
|
</ul>
|
|
<p>RAID5, RAID6, and similar technologies aggregate multiple devices at
|
|
the block level and provide one or more live parity schemes that can
|
|
allow the pool to continue to run should one device fail and rebuild
|
|
the data once the device is replaced.</p>
|
|
<p>mergerfs offers no parity or redundancy features so in that regard the
|
|
technologies are not comparable. <a href="https://www.snapraid.it">SnapRAID</a> or
|
|
NonRAID (see <a href="#nonraid">below</a>) can be used in combination with mergerfs
|
|
to provide redundancy. Unlike traditional RAID5 or RAID6, SnapRAID works
|
|
with drives of different sizes and can have more than 2 parity drives.
|
|
Parity calculations with SnapRAID are not done in real-time but
|
|
NonRAID's are.</p>
|
|
<p>For more details and comparison of SnapRAID to related technologies
|
|
see <a href="https://www.snapraid.it/compare">https://www.snapraid.it/compare</a>.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> live parity protection and continued array
|
|
operation through configured disk failures.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> incremental mixed-size pooling with simple
|
|
per-filesystem independence.</li>
|
|
</ul>
|
|
<h2 id="lvm">LVM</h2>
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)">https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)</a></li>
|
|
<li><a href="https://sourceware.org/lvm2">https://sourceware.org/lvm2</a></li>
|
|
</ul>
|
|
<p>LVM is a block-level volume management system for Linux. It combines
|
|
physical devices into volume groups and creates logical volumes on top,
|
|
with features like snapshots, resizing, and thin provisioning.</p>
|
|
<p>Compared with mergerfs, LVM operates below the filesystem while mergerfs
|
|
operates above filesystems. With LVM, filesystems are created on logical
|
|
volumes and do not know about the underlying disks. If a linear or
|
|
striped logical volume spans multiple disks and one disk fails, the
|
|
filesystem can become unreadable. With mergerfs, each disk typically has
|
|
its own independent filesystem, so a single disk failure affects only the
|
|
data on that disk.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> block-level features like thin
|
|
provisioning, snapshots, and online resizing.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> incremental mixed-disk pooling where
|
|
per-disk failure isolation and per-disk native access are priorities.</li>
|
|
</ul>
|
|
<h2 id="mdadm">mdadm</h2>
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/Mdadm">https://en.wikipedia.org/wiki/Mdadm</a></li>
|
|
<li><a href="https://docs.kernel.org/admin-guide/md.html">https://docs.kernel.org/admin-guide/md.html</a></li>
|
|
</ul>
|
|
<p><code>mdadm</code> is Linux userspace tooling for configuring and managing software
|
|
RAID arrays provided by the kernel <code>md</code> driver. It can build RAID0/1/4/5/6/10
|
|
and related layouts, monitor arrays, and handle rebuild workflows.</p>
|
|
<p>Like RAID technologies discussed above, <code>mdadm</code> arrays aggregate devices
|
|
at the block layer and present one virtual device to a filesystem. That
|
|
can provide performance and/or redundancy depending on RAID level, but it
|
|
also means the filesystem depends on the array layout. mergerfs does not
|
|
provide block-level RAID; it pools already-formatted filesystems and can
|
|
be combined with tools like SnapRAID or NonRAID when redundancy is needed.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> kernel software RAID with real-time
|
|
redundancy and array-level performance tuning.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> flexible mixed-size drive pooling where
|
|
per-filesystem independence and simple incremental expansion matter.</li>
|
|
</ul>
|
|
<h2 id="device-mapper">device mapper</h2>
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/Device_mapper">https://en.wikipedia.org/wiki/Device_mapper</a></li>
|
|
<li><a href="https://docs.kernel.org/admin-guide/device-mapper/index.html">https://docs.kernel.org/admin-guide/device-mapper/index.html</a></li>
|
|
</ul>
|
|
<p>Device mapper is a kernel framework for creating virtual block devices
|
|
from one or more underlying devices. Technologies such as LVM,
|
|
<code>dm-crypt</code>, <code>dm-cache</code>, <code>dm-thin</code>, and multipath are built on top of it.</p>
|
|
<p>Because device mapper works at the block layer, it is not directly
|
|
comparable to mergerfs. It is complementary: you can use device mapper
|
|
for block-level functionality (encryption, caching, thin provisioning,
|
|
etc.) and then place filesystems on those devices, which mergerfs can
|
|
later pool if desired.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> block-layer transformations such as
|
|
transparent encryption, caching, and provisioning features.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> presenting one unified pathname-level view
|
|
across many independent, already-formatted filesystems.</li>
|
|
</ul>
|
|
<h2 id="unraid">Unraid</h2>
|
|
<ul>
|
|
<li><a href="https://unraid.net">https://unraid.net</a></li>
|
|
</ul>
|
|
<p>Unraid is a full OS platform that offers pooled storage with integrated
|
|
real-time parity. Compared with mergerfs, its main advantage is that it
|
|
bundles pooling and parity in one product, while mergerfs is a
|
|
standalone Linux pooling filesystem without built-in redundancy. For
|
|
some users mergerfs' Linux distro-agnostic and fully open-source
|
|
approach is also preferable.</p>
|
|
<p>For semi-static data, mergerfs + <a href="https://www.snapraid.it">SnapRAID</a>
|
|
provides a similar, but not real-time, solution.
|
|
<a href="https://github.com/qvr/nonraid">NonRAID</a> (see <a href="#nonraid">below</a>) is a
|
|
fork of Unraid's parity calculation solution and can also be used with
|
|
mergerfs.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> turnkey pooling plus integrated real-time
|
|
parity in one product.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> users who prefer a Linux distro-agnostic,
|
|
fully open-source component approach.</li>
|
|
</ul>
|
|
<h2 id="nonraid">NonRAID</h2>
|
|
<ul>
|
|
<li><a href="https://github.com/qvr/nonraid">https://github.com/qvr/nonraid</a></li>
|
|
</ul>
|
|
<p><a href="https://github.com/qvr/nonraid#how-it-works">NonRAID</a> is a fork of
|
|
Unraid's storage array kernel driver. Effectively it is like RAID5 at
|
|
the block device layer without treating the collection of devices as a
|
|
single device. Each device gets a virtual block device associated with
|
|
it which can be formatted with the filesystem of the user's choice and
|
|
will be individually accessible. Similar to SnapRAID but real-time.</p>
|
|
<p>Compared with mergerfs, NonRAID adds kernel-level real-time parity while
|
|
still allowing per-disk filesystems, whereas mergerfs focuses on pooling
|
|
views and placement policies without parity.</p>
|
|
<p>Given each device has its own filesystem like a traditional setup it can
|
|
be used with mergerfs for those looking for a unified view.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> real-time parity protection without
|
|
traditional RAID striping behavior.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> users who want the simplest setup and do
|
|
not need parity, since it adds operational complexity.</li>
|
|
</ul>
|
|
<h2 id="zfs">ZFS</h2>
|
|
<ul>
|
|
<li><a href="https://openzfs.github.io/openzfs-docs">https://openzfs.github.io/openzfs-docs</a></li>
|
|
</ul>
|
|
<p>ZFS is an advanced filesystem that combines storage pooling,
|
|
snapshots, data integrity checking, and built-in RAID-like redundancy
|
|
all in one package. It offers features like transparent compression,
|
|
encryption, and automatic data repair.</p>
|
|
<p>Compared with mergerfs, ZFS is a full storage stack that manages disks
|
|
directly with integrated integrity and redundancy features, while
|
|
mergerfs is a lightweight FUSE layer that pools existing filesystems
|
|
without built-in redundancy.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> integrated data integrity, snapshots,
|
|
checksumming, and built-in redundancy.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> low-overhead incremental pooling of
|
|
existing filesystems with minimal planning.</li>
|
|
</ul>
|
|
<h2 id="zfs-anyraid">ZFS AnyRAID</h2>
|
|
<ul>
|
|
<li><a href="https://docs.hexos.com/blog/2025-05-22">Announcement</a></li>
|
|
<li><a href="https://docs.hexos.com/blog/2026-7-15">Development update</a></li>
|
|
</ul>
|
|
<p>ZFS AnyRAID is under development to support mixed-capacity disks while
|
|
retaining ZFS redundancy. The planned layouts include mirrored and RAID-Z
|
|
variants, along with rebalancing and pool contraction work.</p>
|
|
<p>Availability is still landing in OpenZFS. Published notes indicate initial
|
|
mirror layouts may ship in a 2.4.x release, with broader RAID-Z variants,
|
|
rebalancing, and pool contraction targeted for later releases. Treat
|
|
release and downstream product-integration dates as roadmap targets
|
|
rather than commitments.</p>
|
|
<p>Where available, AnyRAID would offer some of the mixed-size flexibility
|
|
associated with mergerfs while retaining redundancy inside ZFS. mergerfs
|
|
provides mixed-size, add-drives-anytime pooling today, but without
|
|
built-in redundancy; SnapRAID or NonRAID can provide separate
|
|
protection.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> users who want mixed-capacity flexibility
|
|
and built-in live redundancy in one filesystem stack.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> users who need production availability now or
|
|
want to pool existing filesystems without migrating data.</li>
|
|
</ul>
|
|
<h2 id="bcachefs">bcachefs</h2>
|
|
<ul>
|
|
<li><a href="https://bcachefs.org">https://bcachefs.org</a></li>
|
|
</ul>
|
|
<p>bcachefs is a modern copy-on-write filesystem for Linux designed for
|
|
multi-device storage aggregation. It includes integrated features such as
|
|
checksumming, snapshots, compression, encryption, and redundancy.</p>
|
|
<p>Compared with mergerfs, bcachefs is a full integrated filesystem, while
|
|
mergerfs is a lightweight pooling layer over existing filesystems. Beginning
|
|
with Linux 6.18, bcachefs is no longer distributed in the mainline kernel; the
|
|
project now distributes it as an external DKMS module. It remains actively
|
|
developed, but deployments must account for kernel compatibility and its
|
|
shorter operational history.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> integrated CoW filesystem features,
|
|
checksumming, snapshots, compression, and built-in multi-device
|
|
redundancy.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> pooling existing filesystems without
|
|
reformatting, mainline-kernel availability, and per-disk native access.</li>
|
|
</ul>
|
|
<h2 id="btrfs-multi-device-filesystems">Btrfs multi-device filesystems</h2>
|
|
<ul>
|
|
<li><a href="https://btrfs.readthedocs.io/en/latest/Volume-management.html">https://btrfs.readthedocs.io/en/latest/Volume-management.html</a></li>
|
|
</ul>
|
|
<p>Btrfs can combine multiple devices in one filesystem and select separate
|
|
allocation profiles for data and metadata. The <code>single</code> data profile spreads
|
|
one copy of data across available devices without redundancy; other profiles
|
|
provide mirroring, striping, or parity with different capacity and failure
|
|
trade-offs.</p>
|
|
<p>Compared with mergerfs, multi-device Btrfs is one integrated filesystem,
|
|
while mergerfs pools separate existing filesystems. Losing a device from a
|
|
<code>single</code> profile can make the whole Btrfs filesystem incomplete. Redundant
|
|
profiles change that risk, but the member devices still are not independently
|
|
mountable filesystems.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> integrated checksumming, snapshots, balancing,
|
|
and selectable redundancy profiles.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> pooling existing mixed filesystem types,
|
|
per-disk native access, and failure isolation without redundancy.</li>
|
|
</ul>
|
|
<h2 id="stablebits-drivepool">StableBit's DrivePool</h2>
|
|
<ul>
|
|
<li><a href="https://stablebit.com/DrivePool/Features">https://stablebit.com/DrivePool/Features</a></li>
|
|
</ul>
|
|
<p>DrivePool is a commercial storage pooling product for Windows that
|
|
combines multiple drives into a single volume and includes balancing
|
|
and optional duplication capabilities.</p>
|
|
<p>Compared with mergerfs, DrivePool emphasizes integrated balancing and
|
|
duplication features in a Windows-first product, while mergerfs
|
|
emphasizes Linux FUSE pooling with policy-based create placement and
|
|
external-tool composability.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> Windows users needing built-in
|
|
rebalancing and native file duplication features.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> Linux-native deployments and users who
|
|
prefer open-source tooling and composable external utilities.</li>
|
|
</ul>
|
|
<h2 id="windows-storage-spaces">Windows Storage Spaces</h2>
|
|
<ul>
|
|
<li><a href="https://learn.microsoft.com/en-us/windows-server/storage/storage-spaces/overview">https://learn.microsoft.com/en-us/windows-server/storage/storage-spaces/overview</a></li>
|
|
</ul>
|
|
<p>Windows Storage Spaces is Microsoft's block-level storage virtualization
|
|
platform for Windows. It aggregates physical disks into storage pools from
|
|
which virtual disks can be created with simple, mirror, or parity layouts.
|
|
Supported Windows Server configurations can also use faster media as a
|
|
Storage Bus Cache.</p>
|
|
<p>Unlike mergerfs, Storage Spaces manages the member devices below the
|
|
filesystem and stripes or mirrors data according to the selected layout.
|
|
This can provide integrated resilience and one contiguous volume, but member
|
|
disks are not independently readable filesystems. mergerfs instead pools
|
|
existing filesystems and leaves their files directly accessible.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> Windows environments needing integrated
|
|
pooling, resilience, and tiering in the platform stack.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> Linux hosts and lightweight pooling where
|
|
minimal overhead and per-filesystem independence are preferred.</li>
|
|
</ul>
|
|
<h2 id="plan-9-binds">Plan 9 binds</h2>
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Union_directories_and_namespaces">https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Union_directories_and_namespaces</a></li>
|
|
</ul>
|
|
<p>Plan 9 has a native bind mechanism that can compose paths and
|
|
filesystems into a single namespace view, including union-like
|
|
directory behavior.</p>
|
|
<p>Compared with mergerfs, Plan 9 binds are an OS-native namespace feature
|
|
with simple ordered behavior, while mergerfs provides Linux-focused
|
|
filesystem pooling with a larger set of configurable branch policies.</p>
|
|
<p>Plan 9 isn't a widely used OS so this comparison is mostly academic.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> native Plan 9 environments where
|
|
namespace composition is a core OS feature.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> Linux users due to ecosystem relevance and
|
|
practical deployment availability.</li>
|
|
</ul>
|
|
<h2 id="9p">9P</h2>
|
|
<ul>
|
|
<li><a href="https://en.wikipedia.org/wiki/9P_(protocol)">https://en.wikipedia.org/wiki/9P_(protocol)</a></li>
|
|
</ul>
|
|
<p><a href="https://en.wikipedia.org/wiki/9P_(protocol)">9P</a> is a filesystem
|
|
protocol from the Plan 9 operating system used to access files over a
|
|
network between systems.</p>
|
|
<p>Compared with mergerfs, 9P is a network filesystem protocol, while
|
|
mergerfs is a local Linux FUSE filesystem for pooling directories and
|
|
filesystems under one mount with branch policies. Like the Plan 9 binds
|
|
comparison above, this is mostly academic for typical mergerfs users.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> lightweight network filesystem protocol
|
|
use between compatible systems.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> local Linux filesystem pooling because it
|
|
does not provide mergerfs-like branch policies or pooling semantics.</li>
|
|
</ul>
|
|
<h2 id="snapraid-pooling">SnapRAID pooling</h2>
|
|
<ul>
|
|
<li><a href="https://www.snapraid.it/manual">https://www.snapraid.it/manual</a></li>
|
|
</ul>
|
|
<p><a href="https://www.snapraid.it/manual">SnapRAID</a> has a pooling feature which
|
|
creates "a read-only virtual view of all the files in your array using
|
|
symbolic links."</p>
|
|
<p>Compared with mergerfs, SnapRAID pooling is a symlink-generated,
|
|
read-only view refreshed by SnapRAID operations, while mergerfs is a
|
|
live mounted filesystem that supports normal read/write behavior.</p>
|
|
<p>As mentioned in the description, this "view" is just the creation of
|
|
the same directory layout with symlinks to all files. This means that
|
|
reads (and writes) to files are at native speeds, but it is not
|
|
practical to use as a target for writing new files, and it is only
|
|
updated when <code>snapraid pool</code> is run. Note that some software treats
|
|
symlinks differently than regular files. For instance, some backup
|
|
software will skip symlinks by default.</p>
|
|
<p>mergerfs has the feature <a href="../config/symlinkify/">symlinkify</a> which
|
|
provides a similar behavior but is more flexible in that it is not
|
|
read-only. That said there can still be some software that won't like
|
|
that kind of setup.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> read-only, native-speed directory views
|
|
of SnapRAID-managed content.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> general read/write pooled filesystem use
|
|
and always-live view updates.</li>
|
|
</ul>
|
|
<h2 id="rclone-union">rclone union</h2>
|
|
<ul>
|
|
<li><a href="https://rclone.org/union">https://rclone.org/union</a></li>
|
|
</ul>
|
|
<p>rclone's <a href="https://rclone.org/union">union</a> backend allows you to
|
|
create a union of multiple rclone backends and was inspired by
|
|
<a href="https://rclone.org/union/#behavior-policies">mergerfs</a>. Because
|
|
rclone knows more about the underlying backends than mergerfs can, it
|
|
can be more efficient than creating a similar union with <code>rclone mount</code>
|
|
and mergerfs.</p>
|
|
<p>Compared with mergerfs, rclone union is backend-aware and optimized for
|
|
cloud/remote storage abstractions, while mergerfs is optimized for local
|
|
POSIX filesystem pooling and branch policies.</p>
|
|
<p>However, it is not uncommon to see users set up rclone mounts and
|
|
combine them with local or other remote filesystems using mergerfs
|
|
given the differing feature sets and focuses of the two projects.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> remote-backend-heavy workloads where
|
|
backend-aware behavior improves cloud storage handling.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> local POSIX pooling scenarios where direct
|
|
filesystem semantics and broad local tool compatibility matter.</li>
|
|
</ul>
|
|
<h2 id="distributed-filesystems">distributed filesystems</h2>
|
|
<ul>
|
|
<li><a href="https://www.openafs.org">AFS</a></li>
|
|
<li><a href="https://docs.ceph.com/en/latest/cephfs/">Ceph/CephFS</a></li>
|
|
<li><a href="https://www.gluster.org">GlusterFS</a></li>
|
|
<li><a href="https://lizardfs.com">LizardFS</a></li>
|
|
<li><a href="https://moosefs.com">MooseFS</a></li>
|
|
<li>etc.</li>
|
|
</ul>
|
|
<p>Distributed remote filesystems come in many forms. Some offer POSIX
|
|
filesystem compliance and some do not. Some provide remote block
|
|
devices or object stores on which a POSIX or POSIX-like filesystem is
|
|
built. Some are effectively distributed union filesystems with
|
|
duplication.</p>
|
|
<p>Compared with mergerfs, distributed filesystems focus on multi-node
|
|
storage, replication, and cluster behavior, while mergerfs focuses on
|
|
single-host local pooling of existing filesystems.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> multi-node or geographically distributed
|
|
workloads with built-in replication and high availability.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> single-host and homelab pooling where low
|
|
overhead and operational simplicity are key.</li>
|
|
</ul>
|
|
<h2 id="nofs">nofs</h2>
|
|
<ul>
|
|
<li><a href="https://github.com/chapmanjacobd/nofs">https://github.com/chapmanjacobd/nofs</a></li>
|
|
</ul>
|
|
<p>nofs is a tool that provides mergerfs-like functionality for combining
|
|
multiple filesystems/directories into a unified view but does so
|
|
entirely through subcommands which replicate traditional POSIX
|
|
commands rather than providing a proper filesystem. It takes a lot of
|
|
inspiration from mergerfs in that it supports policy-based branch
|
|
selection (mfs, ff, pfrd, epmfs, and others), read-only and no-create
|
|
branch modes, and recreates POSIX-like commands such as <code>ls</code>, <code>find</code>,
|
|
<code>which</code>, <code>cp</code>, <code>mv</code>, and <code>rm</code>.</p>
|
|
<p>Compared with mergerfs, nofs is command-driven rather than a mounted
|
|
filesystem, so mergerfs is the option for transparent system-wide
|
|
pooling through normal POSIX filesystem calls.</p>
|
|
<p>Given its design nofs is not suited for general usage as third-party
|
|
applications will not be able to take advantage of the unioning
|
|
behavior it offers. It is primarily for simpler situations where
|
|
mergerfs cannot be used.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> constrained environments where a FUSE
|
|
mount is not possible but command-style union behavior is acceptable.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> transparent system-wide filesystem pooling
|
|
usable by arbitrary third-party applications.</li>
|
|
</ul>
|
|
<h2 id="policyfs">PolicyFS</h2>
|
|
<ul>
|
|
<li><a href="https://policyfs.org">https://policyfs.org</a></li>
|
|
<li><a href="https://github.com/hieutdo/policyfs">https://github.com/hieutdo/policyfs</a></li>
|
|
</ul>
|
|
<p>PolicyFS is a Linux FUSE storage daemon that unifies multiple storage
|
|
paths under a single mountpoint, similarly to mergerfs. Its
|
|
distinguishing features are explicit path-pattern-based routing rules
|
|
for placement, and an optional SQLite metadata index that can serve
|
|
<code>readdir</code> and <code>getattr</code> operations without spinning up HDDs.</p>
|
|
<p>Compared with mergerfs, PolicyFS emphasizes explicit path-based routing,
|
|
scheduled SSD-to-HDD movement, and optional metadata indexing. mergerfs
|
|
emphasizes a broader policy-driven pooling model with longer operational
|
|
history and wider application compatibility. mergerfs does not try to prevent
|
|
metadata operations from waking branches because doing so fundamentally
|
|
<a href="../faq/limit_drive_spinup/">conflicts with other features.</a></p>
|
|
<p>PolicyFS's indexed storage deliberately defers some delete, rename, and
|
|
attribute operations until a maintenance job runs. Out-of-band changes require
|
|
the index to be refreshed, and its documentation identifies limits around
|
|
<code>O_DIRECT</code>, advisory locks, NFS re-export, and full POSIX coverage. Those are
|
|
material trade-offs, not only maturity differences.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> explicit path-based routing, scheduled
|
|
tiering, and metadata indexing designed to reduce HDD spin-ups.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> broad POSIX compatibility, immediate mutation
|
|
semantics on every branch, and long-established operational behavior.</li>
|
|
</ul>
|
|
<h2 id="greyhole">Greyhole</h2>
|
|
<ul>
|
|
<li><a href="https://www.greyhole.net">https://www.greyhole.net</a></li>
|
|
<li><a href="https://github.com/gboudreau/Greyhole">https://github.com/gboudreau/Greyhole</a></li>
|
|
</ul>
|
|
<p>Greyhole is an open-source storage pooling application that works via
|
|
Samba. Rather than implementing a FUSE filesystem, it hooks into Samba
|
|
VFS to intercept file operations and distribute files across multiple
|
|
drives, with optional per-share redundancy.</p>
|
|
<p>Compared with mergerfs, Greyhole is Samba-centric and includes
|
|
integrated share-level redundancy, while mergerfs is a general-purpose
|
|
Linux FUSE mount for local pooling via standard POSIX filesystem calls.</p>
|
|
<ul>
|
|
<li><strong>Better than mergerfs for:</strong> Samba-centric environments that need
|
|
built-in per-share redundancy in the same tool.</li>
|
|
<li><strong>Worse than mergerfs for:</strong> general-purpose local filesystem pooling
|
|
outside Samba, and for heavy small-file churn workloads.</li>
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
|
|
Back to top
|
|
</button>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
|
|
|
|
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
|
|
|
|
|
<a href="../known_issues_bugs/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Known Issues and Bugs">
|
|
<div class="md-footer__button md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|
</div>
|
|
<div class="md-footer__title">
|
|
<span class="md-footer__direction">
|
|
Previous
|
|
</span>
|
|
<div class="md-ellipsis">
|
|
Known Issues and Bugs
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
<a href="../benchmarking/" class="md-footer__link md-footer__link--next" aria-label="Next: Benchmarking">
|
|
<div class="md-footer__title">
|
|
<span class="md-footer__direction">
|
|
Next
|
|
</span>
|
|
<div class="md-ellipsis">
|
|
Benchmarking
|
|
</div>
|
|
</div>
|
|
<div class="md-footer__button md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
|
|
</div>
|
|
</a>
|
|
|
|
</nav>
|
|
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["content.action.edit", "content.action.view", "content.code.copy", "content.code.select", "navigation.footer", "navigation.instant", "navigation.instant.prefetch", "navigation.path", "navigation.top", "navigation.tracking", "optimize", "search.share", "search.suggest", "toc.follow"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
|
|
|
|
|
|
<script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |