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.
 
 
 
 

1244 lines
26 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/pages/documentation/tips_notes/">
<link rel="prev" href="../benchmarking/">
<link rel="next" href="../known_issues_bugs/">
<link rel="icon" href="../../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.49">
<title>TIPS / NOTES - mergerfs</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.6f8fc17f.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">
<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="#tips-notes" 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.jpeg" 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">
TIPS / NOTES
</span>
</div>
</div>
</div>
<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">
<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>
</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.1 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.jpeg" 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.1 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">
About
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Documentation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Documentation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../how_it_works/" class="md-nav__link">
<span class="md-ellipsis">
HOW IT WORKS
</span>
</a>
</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="../basic_setup/" class="md-nav__link">
<span class="md-ellipsis">
BASIC SETUP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../options/" class="md-nav__link">
<span class="md-ellipsis">
OPTIONS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../functions_categories_and_policies/" class="md-nav__link">
<span class="md-ellipsis">
FUNCTIONS, CATEGORIES and POLICIES
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../error_handling/" class="md-nav__link">
<span class="md-ellipsis">
ERROR HANDLING
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../install/" class="md-nav__link">
<span class="md-ellipsis">
INSTALL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../build/" class="md-nav__link">
<span class="md-ellipsis">
BUILD
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../upgrade/" class="md-nav__link">
<span class="md-ellipsis">
UPGRADE
</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">
<a href="../tooling/" class="md-nav__link">
<span class="md-ellipsis">
TOOLING
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../caching/" class="md-nav__link">
<span class="md-ellipsis">
CACHING
</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="../benchmarking/" class="md-nav__link">
<span class="md-ellipsis">
BENCHMARKING
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
TIPS / NOTES
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../known_issues_bugs/" class="md-nav__link">
<span class="md-ellipsis">
KNOWN ISSUES / BUGS
</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="../mergerfs_versus_x/" class="md-nav__link">
<span class="md-ellipsis">
mergerfs versus X
</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="../links/" class="md-nav__link">
<span class="md-ellipsis">
LINKS
</span>
</a>
</li>
</ul>
</nav>
</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">
FAQ
</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>
FAQ
</label>
<ul class="md-nav__list" data-md-scrollfix>
<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/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/general_information_and_overview/" class="md-nav__link">
<span class="md-ellipsis">
General Information and Overview
</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/usage_and_functionality/" class="md-nav__link">
<span class="md-ellipsis">
Usage and Functionality
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Wiki
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Wiki
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../wiki/projects_using_mergerfs/" class="md-nav__link">
<span class="md-ellipsis">
Projects incorporating mergerfs directly in some way
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/installing_mergerfs_on_a_synology_nas/" class="md-nav__link">
<span class="md-ellipsis">
Installing mergerfs on a synology nas
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/testimonials/" class="md-nav__link">
<span class="md-ellipsis">
Testimonials
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/real_world_deployments/" class="md-nav__link">
<span class="md-ellipsis">
trapexit's (mergerfs' author)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/systemd/" class="md-nav__link">
<span class="md-ellipsis">
systemd
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/kernel_issues_and_bugs/" class="md-nav__link">
<span class="md-ellipsis">
Kernel issues and bugs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/featured_media_and_publicity/" class="md-nav__link">
<span class="md-ellipsis">
Featured Media and Publicity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/limit_drive_spinup/" class="md-nav__link">
<span class="md-ellipsis">
Limit drive spinup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../wiki/links/" class="md-nav__link">
<span class="md-ellipsis">
Links
</span>
</a>
</li>
</ul>
</nav>
</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">
</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/tree/master/mkdocs/docs/pages/documentation/tips_notes.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>
<h1 id="tips-notes">TIPS / NOTES</h1>
<ul>
<li>This document is literal and thorough. If a suspected feature isn't
mentioned it doesn't exist. If certain libfuse arguments aren't
listed they probably shouldn't be used.</li>
<li>Ensure you're using the latest version.</li>
<li>Run mergerfs as <code>root</code>. mergerfs is designed and intended to be run
as <code>root</code> and may exibit incorrect behavior if run otherwise..</li>
<li>If you don't see some directories and files you expect, policies
seem to skip branches, you get strange permission errors, etc. be
sure the underlying filesystems' permissions are all the same. Use
<code>mergerfs.fsck</code> to audit the filesystem for out of sync permissions.</li>
<li>If you still have permission issues be sure you are using POSIX ACL
compliant filesystems. mergerfs doesn't generally make exceptions
for FAT, NTFS, or other non-POSIX filesystem.</li>
<li>Do <strong>not</strong> use <code>cache.files=off</code> if you expect applications (such as
rtorrent) to use <a href="http://linux.die.net/man/2/mmap">mmap</a>
files. Shared mmap is not currently supported in FUSE w/ page
caching disabled. Enabling <code>dropcacheonclose</code> is recommended when
<code>cache.files=partial|full|auto-full</code>.</li>
<li><a href="http://kodi.tv">Kodi</a>, <a href="http://plex.tv">Plex</a>,
<a href="http://subsonic.org">Subsonic</a>, etc. can use directory
<a href="http://linux.die.net/man/2/stat">mtime</a> to more efficiently
determine whether to scan for new content rather than simply
performing a full scan. If using the default <strong>getattr</strong> policy of
<strong>ff</strong> it's possible those programs will miss an update on account
of it returning the first directory found's <strong>stat</strong> info and it's a
later directory on another mount which had the <strong>mtime</strong> recently
updated. To fix this you will want to set
<strong>func.getattr=newest</strong>. Remember though that this is just
<strong>stat</strong>. If the file is later <strong>open</strong>'ed or <strong>unlink</strong>'ed and the
policy is different for those then a completely different file or
directory could be acted on.</li>
<li>Some policies mixed with some functions may result in strange
behaviors. Not that some of these behaviors and race conditions
couldn't happen outside <strong>mergerfs</strong> but that they are far more
likely to occur on account of the attempt to merge multiple sources
of data which could be out of sync due to the different policies.</li>
<li>For consistency it's generally best to set <strong>category</strong> wide policies
rather than individual <strong>func</strong>'s. This will help limit the
confusion of tools such as
<a href="http://linux.die.net/man/1/rsync">rsync</a>. However, the flexibility
is there if needed.</li>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<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"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "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"}}</script>
<script src="../../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
</body>
</html>