You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

2189 lines
45 KiB

<!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/remote_filesystems/">
<link rel="prev" href="../runtime_interfaces/">
<link rel="next" href="../tips_notes/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.12">
<title>Remote Filesystems - mergerfs</title>
<link rel="stylesheet" href="../assets/stylesheets/main.2afb09e1.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.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="#remote-filesystems" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</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">
Remote Filesystems
</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 6.7.2 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 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></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 6.7.2 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 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></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/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/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/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>
</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="../runtime_interfaces/" class="md-nav__link">
<span class="md-ellipsis">
Runtime Interfaces
</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">
Remote Filesystems
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Remote Filesystems
</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="#general-notes" class="md-nav__link">
<span class="md-ellipsis">
General Notes
</span>
</a>
<nav class="md-nav" aria-label="General Notes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#do-not-change-things-out-of-band" class="md-nav__link">
<span class="md-ellipsis">
Do not change things out-of-band
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#nfs" class="md-nav__link">
<span class="md-ellipsis">
NFS
</span>
</a>
<nav class="md-nav" aria-label="NFS">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#nfs-as-branch" class="md-nav__link">
<span class="md-ellipsis">
NFS as branch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#nfs-exporting-mergerfs" class="md-nav__link">
<span class="md-ellipsis">
NFS exporting mergerfs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#smb-cifs" class="md-nav__link">
<span class="md-ellipsis">
SMB / CIFS
</span>
</a>
<nav class="md-nav" aria-label="SMB / CIFS">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#smb-as-branch" class="md-nav__link">
<span class="md-ellipsis">
SMB as branch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#smb-exporting-mergerfs" class="md-nav__link">
<span class="md-ellipsis">
SMB exporting mergerfs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#sshfs" class="md-nav__link">
<span class="md-ellipsis">
SSHFS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other" class="md-nav__link">
<span class="md-ellipsis">
Other
</span>
</a>
</li>
</ul>
</nav>
</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">
<a href="../project_comparisons/" class="md-nav__link">
<span class="md-ellipsis">
Project Comparisons
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../performance/" class="md-nav__link">
<span class="md-ellipsis">
Tweaking Performance
</span>
</a>
</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="../tooling/" class="md-nav__link">
<span class="md-ellipsis">
Tooling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../usage_patterns/" class="md-nav__link">
<span class="md-ellipsis">
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_17" >
<label class="md-nav__link" for="__nav_17" id="__nav_17_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_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_17">
<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/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/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/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/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/recommendations_and_warnings/" class="md-nav__link">
<span class="md-ellipsis">
Recommendations and Warnings
</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/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="#general-notes" class="md-nav__link">
<span class="md-ellipsis">
General Notes
</span>
</a>
<nav class="md-nav" aria-label="General Notes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#do-not-change-things-out-of-band" class="md-nav__link">
<span class="md-ellipsis">
Do not change things out-of-band
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#nfs" class="md-nav__link">
<span class="md-ellipsis">
NFS
</span>
</a>
<nav class="md-nav" aria-label="NFS">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#nfs-as-branch" class="md-nav__link">
<span class="md-ellipsis">
NFS as branch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#nfs-exporting-mergerfs" class="md-nav__link">
<span class="md-ellipsis">
NFS exporting mergerfs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#smb-cifs" class="md-nav__link">
<span class="md-ellipsis">
SMB / CIFS
</span>
</a>
<nav class="md-nav" aria-label="SMB / CIFS">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#smb-as-branch" class="md-nav__link">
<span class="md-ellipsis">
SMB as branch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#smb-exporting-mergerfs" class="md-nav__link">
<span class="md-ellipsis">
SMB exporting mergerfs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#sshfs" class="md-nav__link">
<span class="md-ellipsis">
SSHFS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other" class="md-nav__link">
<span class="md-ellipsis">
Other
</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/remote_filesystems.md" title="Edit this page" class="md-content__button md-icon">
<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/remote_filesystems.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="remote-filesystems">Remote Filesystems</h1>
<p>This section is to describe any known issues or quirks when using
mergerfs with common remote filesystems.</p>
<p>There are two ways to use mergerfs with a network filesystem. One is
to use it within the pool as a branch and one is the exporting of a
mergerfs mount.</p>
<h2 id="general-notes">General Notes</h2>
<h3 id="do-not-change-things-out-of-band">Do not change things out-of-band</h3>
<p>Keep in mind that, like when using
<a href="../faq/usage_and_functionality/#can-filesystems-still-be-used-directly-outside-of-mergerfs-while-pooled">caching</a>,
it is <strong>NOT</strong> a good idea to change the contents of the remote
filesystem
<a href="https://en.wikipedia.org/wiki/Out-of-band">out-of-band</a>. Meaning that
you should not change the contents of the underlying filesystems or
mergerfs on the server hosting the remote filesystem. Files should
exclusively be interacted with through the network filesystem. Doing
otherwise can lead to weird behavior, inconsistency, errors, and even
data corruption should multiple programs try to write or read the same
data at the same time. This isn't to say you can't do it or that data
corruption is likely but it <em>could</em> happen. If you're only reading
from those filesystems there is little risk but writing or modifying
file layout will be a problem. Particularly with NFS. It is better to
always use the remote filesystem. Even on the machine serving it.</p>
<h2 id="nfs">NFS</h2>
<p><a href="https://en.wikipedia.org/wiki/Network_File_System">NFS</a> is a common
remote filesystem on Unix/POSIX systems. Due to how NFS works there
are some settings which need to be set in order for mergerfs to work
with it.</p>
<h3 id="nfs-as-branch">NFS as branch</h3>
<p>mergerfs settings:</p>
<ul>
<li>No special settings need to be set</li>
</ul>
<p>NFS export settings:</p>
<ul>
<li><code>no_root_squash</code>: mergerfs must be able to make requests that only
root is permissioned to make. If any root squashing occurs, just as
running mergerfs as a non-root user, there is no guarantee that
mergerfs will be able to do what it needs to manage the underlying
filesystem.</li>
</ul>
<h3 id="nfs-exporting-mergerfs">NFS exporting mergerfs</h3>
<p>It should be noted that NFS and FUSE (the technology mergerfs uses) do
not work perfectly with one another. They largely can be worked around
but if you run into problems it may be worth trying Samba/SMB.</p>
<p><strong>mergerfs settings:</strong></p>
<ul>
<li><code>noforget</code></li>
<li><code>inodecalc=path-hash</code></li>
</ul>
<p><code>noforget</code> is needed because NFS uses the <code>name_to_handle_at</code> and
<code>open_by_handle_at</code> functions which allow a program to keep a
reference to a file without technically having it open in the typical
sense. The problem is that FUSE has no way to know that NFS has a
handle that it will later use to open the file again. As a result, it
is possible for the kernel to tell mergerfs to forget about the file
node and should NFS ever ask for that node's details in the future it
would have nothing to respond with. Keeping nodes around forever is
not ideal but at the moment the only way to manage the situation.</p>
<p><code>inodecalc=path-hash</code> is needed because NFS is sensitive to
out-of-band changes. FUSE doesn't care if a file's inode value changes
but NFS, being stateful, does. So if you used the default inode
calculation algorithm it is possible that if you changed a file or
updated a directory the file mergerfs will use will be on a different
branch and therefore the inode would change. This isn't an ideal
solution and others are being considered but it works for most
situations.</p>
<p><strong>NFS export settings:</strong></p>
<ul>
<li><code>fsid=UUID</code></li>
<li><code>no_root_squash</code></li>
</ul>
<p><code>fsid=UUID</code> is needed because FUSE filesystems don't have different
<code>st_dev</code> values which can cause issues when exporting. The easiest
thing to do is set each mergerfs export <code>fsid</code> to some random
value. An easy way to generate a random value is to use the command
line tool <code>uuid</code> or <code>uuidgen</code> or through a website such as
<a href="https://www.uuidgenerator.net/">uuidgenerator.net</a>.</p>
<p><code>no_root_squash</code> is required for the same reason mergerfs needs to run
as <code>root</code>. Certain behaviors of mergerfs require control over the
filesystem that only <code>root</code> can preform. If squashing is enabled, or
mergerfs was running as non-root, it would be unable to perform
certain function and you will receive permission errors.</p>
<h2 id="smb-cifs">SMB / CIFS</h2>
<p><a href="https://en.wikipedia.org/wiki/Server_Message_Block">SMB</a> is a
protocol most used by Microsoft Windows systems to share file shares,
printers, etc. However, due to the popularity of Windows, it is also
supported on many other platforms including Linux. The most popular
way of supporting SMB on Linux is via the software Samba.</p>
<h3 id="smb-as-branch">SMB as branch</h3>
<p>Using a SMB mount as a branch in mergerfs may result in problems
(permission errors) since it is not POSIX compliant. This setup is not
common and has not been extensively tested.</p>
<h3 id="smb-exporting-mergerfs">SMB exporting mergerfs</h3>
<p><a href="https://en.wikipedia.org/wiki/Samba_(software)">Samba</a> and other
ways of serving Linux filesystems via SMB should work fine with
mergerfs. The services do not tend to use the same technologies which
NFS uses and therefore don't have the same issues. There should not be
special settings required export mergerfs with Samba. However,
<a href="https://en.wikipedia.org/wiki/CIFSD">CIFSD</a> and other programs have
not been extensively tested. If you use mergerfs with CIFSD or other
SMB servers please submit your experiences so these docs can be
updated.</p>
<h2 id="sshfs">SSHFS</h2>
<p><a href="https://en.wikipedia.org/wiki/SSHFS">SSHFS</a> is a FUSE filesystem
leveraging SSH as the connection and transport layer. While often
simpler to setup when compared to NFS or Samba the performance can be
lacking and the project is very much in maintenance mode.</p>
<p>There are no known issues using sshfs with mergerfs. You may want to
use the following arguments to improve performance but your millage
may vary.</p>
<ul>
<li><code>-o Ciphers=arcfour</code></li>
<li><code>-o Compression=no</code></li>
</ul>
<p>More info can be found
<a href="https://ideatrash.net/2016/08/odds-and-ends-optimizing-sshfs-moving.html">here</a>.</p>
<h2 id="other">Other</h2>
<p>There are other remote filesystems but none popularly used to serve
mergerfs. If you use something not listed above feel free to reach out
and I will add it to the list.</p>
</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="../runtime_interfaces/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Runtime Interfaces">
<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">
Runtime Interfaces
</div>
</div>
</a>
<a href="../tips_notes/" class="md-footer__link md-footer__link--next" aria-label="Next: Tips and Notes">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
Tips and Notes
</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">{"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.f8cc74c7.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": null}</script>
<script src="../assets/javascripts/bundle.c8b220af.min.js"></script>
</body>
</html>