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.

1855 lines
41 KiB

  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="mergerfs - a featureful union filesystem">
  7. <link rel="canonical" href="https://trapexit.github.io/mergerfs/usage_patterns/">
  8. <link rel="prev" href="../tooling/">
  9. <link rel="next" href="../faq/reliability_and_scalability/">
  10. <link rel="icon" href="../assets/images/favicon.png">
  11. <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.5">
  12. <title>Usage Patterns - mergerfs</title>
  13. <link rel="stylesheet" href="../assets/stylesheets/main.8608ea7d.min.css">
  14. <link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
  15. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  16. <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">
  17. <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
  18. <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>
  19. </head>
  20. <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  21. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  22. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  23. <label class="md-overlay" for="__drawer"></label>
  24. <div data-md-component="skip">
  25. <a href="#usage-patterns" class="md-skip">
  26. Skip to content
  27. </a>
  28. </div>
  29. <div data-md-component="announce">
  30. </div>
  31. <header class="md-header md-header--shadow" data-md-component="header">
  32. <nav class="md-header__inner md-grid" aria-label="Header">
  33. <a href=".." title="mergerfs" class="md-header__button md-logo" aria-label="mergerfs" data-md-component="logo">
  34. <img src="../logo.jpeg" alt="logo">
  35. </a>
  36. <label class="md-header__button md-icon" for="__drawer">
  37. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
  38. </label>
  39. <div class="md-header__title" data-md-component="header-title">
  40. <div class="md-header__ellipsis">
  41. <div class="md-header__topic">
  42. <span class="md-ellipsis">
  43. mergerfs
  44. </span>
  45. </div>
  46. <div class="md-header__topic" data-md-component="header-topic">
  47. <span class="md-ellipsis">
  48. Usage Patterns
  49. </span>
  50. </div>
  51. </div>
  52. </div>
  53. <form class="md-header__option" data-md-component="palette">
  54. <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">
  55. <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
  56. <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>
  57. </label>
  58. <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">
  59. <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
  60. <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>
  61. </label>
  62. <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">
  63. <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
  64. <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>
  65. </label>
  66. </form>
  67. <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>
  68. <label class="md-header__button md-icon" for="__search">
  69. <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>
  70. </label>
  71. <div class="md-search" data-md-component="search" role="dialog">
  72. <label class="md-search__overlay" for="__search"></label>
  73. <div class="md-search__inner" role="search">
  74. <form class="md-search__form" name="search">
  75. <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>
  76. <label class="md-search__icon md-icon" for="__search">
  77. <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>
  78. <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>
  79. </label>
  80. <nav class="md-search__options" aria-label="Search">
  81. <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">
  82. <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>
  83. </a>
  84. <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
  85. <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>
  86. </button>
  87. </nav>
  88. </form>
  89. <div class="md-search__output">
  90. <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
  91. <div class="md-search-result" data-md-component="search-result">
  92. <div class="md-search-result__meta">
  93. Initializing search
  94. </div>
  95. <ol class="md-search-result__list" role="presentation"></ol>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="md-header__source">
  102. <a href="https://github.com/trapexit/mergerfs" title="Go to repository" class="md-source" data-md-component="source">
  103. <div class="md-source__icon md-icon">
  104. <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>
  105. </div>
  106. <div class="md-source__repository">
  107. mergerfs
  108. </div>
  109. </a>
  110. </div>
  111. </nav>
  112. </header>
  113. <div class="md-container" data-md-component="container">
  114. <main class="md-main" data-md-component="main">
  115. <div class="md-main__inner md-grid">
  116. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  117. <div class="md-sidebar__scrollwrap">
  118. <div class="md-sidebar__inner">
  119. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  120. <label class="md-nav__title" for="__drawer">
  121. <a href=".." title="mergerfs" class="md-nav__button md-logo" aria-label="mergerfs" data-md-component="logo">
  122. <img src="../logo.jpeg" alt="logo">
  123. </a>
  124. mergerfs
  125. </label>
  126. <div class="md-nav__source">
  127. <a href="https://github.com/trapexit/mergerfs" title="Go to repository" class="md-source" data-md-component="source">
  128. <div class="md-source__icon md-icon">
  129. <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>
  130. </div>
  131. <div class="md-source__repository">
  132. mergerfs
  133. </div>
  134. </a>
  135. </div>
  136. <ul class="md-nav__list" data-md-scrollfix>
  137. <li class="md-nav__item">
  138. <a href=".." class="md-nav__link">
  139. <span class="md-ellipsis">
  140. Home
  141. </span>
  142. </a>
  143. </li>
  144. <li class="md-nav__item">
  145. <a href="../quickstart/" class="md-nav__link">
  146. <span class="md-ellipsis">
  147. QuickStart
  148. </span>
  149. </a>
  150. </li>
  151. <li class="md-nav__item md-nav__item--nested">
  152. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
  153. <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
  154. <span class="md-ellipsis">
  155. Installation
  156. </span>
  157. <span class="md-nav__icon md-icon"></span>
  158. </label>
  159. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
  160. <label class="md-nav__title" for="__nav_3">
  161. <span class="md-nav__icon md-icon"></span>
  162. Installation
  163. </label>
  164. <ul class="md-nav__list" data-md-scrollfix>
  165. <li class="md-nav__item">
  166. <a href="../setup/installation/" class="md-nav__link">
  167. <span class="md-ellipsis">
  168. Installation
  169. </span>
  170. </a>
  171. </li>
  172. <li class="md-nav__item">
  173. <a href="../setup/upgrade/" class="md-nav__link">
  174. <span class="md-ellipsis">
  175. Upgrade
  176. </span>
  177. </a>
  178. </li>
  179. <li class="md-nav__item">
  180. <a href="../setup/build/" class="md-nav__link">
  181. <span class="md-ellipsis">
  182. Build
  183. </span>
  184. </a>
  185. </li>
  186. </ul>
  187. </nav>
  188. </li>
  189. <li class="md-nav__item">
  190. <a href="../terminology/" class="md-nav__link">
  191. <span class="md-ellipsis">
  192. Terminology
  193. </span>
  194. </a>
  195. </li>
  196. <li class="md-nav__item md-nav__item--nested">
  197. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
  198. <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
  199. <span class="md-ellipsis">
  200. Config
  201. </span>
  202. <span class="md-nav__icon md-icon"></span>
  203. </label>
  204. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
  205. <label class="md-nav__title" for="__nav_5">
  206. <span class="md-nav__icon md-icon"></span>
  207. Config
  208. </label>
  209. <ul class="md-nav__list" data-md-scrollfix>
  210. <li class="md-nav__item">
  211. <a href="../config/options/" class="md-nav__link">
  212. <span class="md-ellipsis">
  213. Options
  214. </span>
  215. </a>
  216. </li>
  217. <li class="md-nav__item">
  218. <a href="../config/deprecated_options/" class="md-nav__link">
  219. <span class="md-ellipsis">
  220. Deprecated Options
  221. </span>
  222. </a>
  223. </li>
  224. <li class="md-nav__item">
  225. <a href="../config/branches/" class="md-nav__link">
  226. <span class="md-ellipsis">
  227. branches
  228. </span>
  229. </a>
  230. </li>
  231. <li class="md-nav__item">
  232. <a href="../config/functions_categories_and_policies/" class="md-nav__link">
  233. <span class="md-ellipsis">
  234. functions, categories and policies
  235. </span>
  236. </a>
  237. </li>
  238. <li class="md-nav__item">
  239. <a href="../config/func_readdir/" class="md-nav__link">
  240. <span class="md-ellipsis">
  241. func.readdir
  242. </span>
  243. </a>
  244. </li>
  245. <li class="md-nav__item">
  246. <a href="../config/rename_and_link/" class="md-nav__link">
  247. <span class="md-ellipsis">
  248. rename and link
  249. </span>
  250. </a>
  251. </li>
  252. <li class="md-nav__item">
  253. <a href="../config/cache/" class="md-nav__link">
  254. <span class="md-ellipsis">
  255. caching
  256. </span>
  257. </a>
  258. </li>
  259. <li class="md-nav__item">
  260. <a href="../config/readahead/" class="md-nav__link">
  261. <span class="md-ellipsis">
  262. readahead
  263. </span>
  264. </a>
  265. </li>
  266. <li class="md-nav__item">
  267. <a href="../config/inodecalc/" class="md-nav__link">
  268. <span class="md-ellipsis">
  269. inodecalc
  270. </span>
  271. </a>
  272. </li>
  273. <li class="md-nav__item">
  274. <a href="../config/threads/" class="md-nav__link">
  275. <span class="md-ellipsis">
  276. threads
  277. </span>
  278. </a>
  279. </li>
  280. <li class="md-nav__item">
  281. <a href="../config/pin-threads/" class="md-nav__link">
  282. <span class="md-ellipsis">
  283. pin-threads
  284. </span>
  285. </a>
  286. </li>
  287. <li class="md-nav__item">
  288. <a href="../config/link_cow/" class="md-nav__link">
  289. <span class="md-ellipsis">
  290. link_cow
  291. </span>
  292. </a>
  293. </li>
  294. <li class="md-nav__item">
  295. <a href="../config/fuse_msg_size/" class="md-nav__link">
  296. <span class="md-ellipsis">
  297. fuse_msg_size
  298. </span>
  299. </a>
  300. </li>
  301. <li class="md-nav__item">
  302. <a href="../config/follow-symlinks/" class="md-nav__link">
  303. <span class="md-ellipsis">
  304. follow-symlinks
  305. </span>
  306. </a>
  307. </li>
  308. <li class="md-nav__item">
  309. <a href="../config/link-exdev/" class="md-nav__link">
  310. <span class="md-ellipsis">
  311. link-exdev
  312. </span>
  313. </a>
  314. </li>
  315. <li class="md-nav__item">
  316. <a href="../config/rename-exdev/" class="md-nav__link">
  317. <span class="md-ellipsis">
  318. rename-exdev
  319. </span>
  320. </a>
  321. </li>
  322. <li class="md-nav__item">
  323. <a href="../config/symlinkify/" class="md-nav__link">
  324. <span class="md-ellipsis">
  325. symlinkify
  326. </span>
  327. </a>
  328. </li>
  329. <li class="md-nav__item">
  330. <a href="../config/nullrw/" class="md-nav__link">
  331. <span class="md-ellipsis">
  332. nullrw
  333. </span>
  334. </a>
  335. </li>
  336. <li class="md-nav__item">
  337. <a href="../config/xattr/" class="md-nav__link">
  338. <span class="md-ellipsis">
  339. xattr
  340. </span>
  341. </a>
  342. </li>
  343. <li class="md-nav__item">
  344. <a href="../config/nfsopenhack/" class="md-nav__link">
  345. <span class="md-ellipsis">
  346. nfsopenhack
  347. </span>
  348. </a>
  349. </li>
  350. <li class="md-nav__item">
  351. <a href="../config/statfs/" class="md-nav__link">
  352. <span class="md-ellipsis">
  353. statfs / statvfs
  354. </span>
  355. </a>
  356. </li>
  357. <li class="md-nav__item">
  358. <a href="../config/flush-on-close/" class="md-nav__link">
  359. <span class="md-ellipsis">
  360. flush-on-close
  361. </span>
  362. </a>
  363. </li>
  364. <li class="md-nav__item">
  365. <a href="../config/export-support/" class="md-nav__link">
  366. <span class="md-ellipsis">
  367. export-support
  368. </span>
  369. </a>
  370. </li>
  371. </ul>
  372. </nav>
  373. </li>
  374. <li class="md-nav__item">
  375. <a href="../error_handling_and_logging/" class="md-nav__link">
  376. <span class="md-ellipsis">
  377. Error Handling and Logging
  378. </span>
  379. </a>
  380. </li>
  381. <li class="md-nav__item">
  382. <a href="../runtime_interfaces/" class="md-nav__link">
  383. <span class="md-ellipsis">
  384. Runtime Interfaces
  385. </span>
  386. </a>
  387. </li>
  388. <li class="md-nav__item">
  389. <a href="../remote_filesystems/" class="md-nav__link">
  390. <span class="md-ellipsis">
  391. Remote Filesystems
  392. </span>
  393. </a>
  394. </li>
  395. <li class="md-nav__item">
  396. <a href="../tips_notes/" class="md-nav__link">
  397. <span class="md-ellipsis">
  398. Tips and Notes
  399. </span>
  400. </a>
  401. </li>
  402. <li class="md-nav__item">
  403. <a href="../known_issues_bugs/" class="md-nav__link">
  404. <span class="md-ellipsis">
  405. Known Issues and Bugs
  406. </span>
  407. </a>
  408. </li>
  409. <li class="md-nav__item">
  410. <a href="../project_comparisons/" class="md-nav__link">
  411. <span class="md-ellipsis">
  412. Project Comparisons
  413. </span>
  414. </a>
  415. </li>
  416. <li class="md-nav__item">
  417. <a href="../performance/" class="md-nav__link">
  418. <span class="md-ellipsis">
  419. Tweaking Performance
  420. </span>
  421. </a>
  422. </li>
  423. <li class="md-nav__item">
  424. <a href="../benchmarking/" class="md-nav__link">
  425. <span class="md-ellipsis">
  426. Benchmarking
  427. </span>
  428. </a>
  429. </li>
  430. <li class="md-nav__item">
  431. <a href="../tooling/" class="md-nav__link">
  432. <span class="md-ellipsis">
  433. Tooling
  434. </span>
  435. </a>
  436. </li>
  437. <li class="md-nav__item md-nav__item--active">
  438. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  439. <label class="md-nav__link md-nav__link--active" for="__toc">
  440. <span class="md-ellipsis">
  441. Usage Patterns
  442. </span>
  443. <span class="md-nav__icon md-icon"></span>
  444. </label>
  445. <a href="./" class="md-nav__link md-nav__link--active">
  446. <span class="md-ellipsis">
  447. Usage Patterns
  448. </span>
  449. </a>
  450. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  451. <label class="md-nav__title" for="__toc">
  452. <span class="md-nav__icon md-icon"></span>
  453. Table of contents
  454. </label>
  455. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  456. <li class="md-nav__item">
  457. <a href="#tiered-cache" class="md-nav__link">
  458. <span class="md-ellipsis">
  459. tiered cache
  460. </span>
  461. </a>
  462. <nav class="md-nav" aria-label="tiered cache">
  463. <ul class="md-nav__list">
  464. <li class="md-nav__item">
  465. <a href="#time-based-expiring" class="md-nav__link">
  466. <span class="md-ellipsis">
  467. time based expiring
  468. </span>
  469. </a>
  470. </li>
  471. <li class="md-nav__item">
  472. <a href="#percentage-full-expiring" class="md-nav__link">
  473. <span class="md-ellipsis">
  474. percentage full expiring
  475. </span>
  476. </a>
  477. </li>
  478. </ul>
  479. </nav>
  480. </li>
  481. </ul>
  482. </nav>
  483. </li>
  484. <li class="md-nav__item md-nav__item--nested">
  485. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
  486. <label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
  487. <span class="md-ellipsis">
  488. FAQ
  489. </span>
  490. <span class="md-nav__icon md-icon"></span>
  491. </label>
  492. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
  493. <label class="md-nav__title" for="__nav_16">
  494. <span class="md-nav__icon md-icon"></span>
  495. FAQ
  496. </label>
  497. <ul class="md-nav__list" data-md-scrollfix>
  498. <li class="md-nav__item">
  499. <a href="../faq/reliability_and_scalability/" class="md-nav__link">
  500. <span class="md-ellipsis">
  501. Reliability and Scalability
  502. </span>
  503. </a>
  504. </li>
  505. <li class="md-nav__item">
  506. <a href="../faq/usage_and_functionality/" class="md-nav__link">
  507. <span class="md-ellipsis">
  508. Usage and Functionality
  509. </span>
  510. </a>
  511. </li>
  512. <li class="md-nav__item">
  513. <a href="../faq/configuration_and_policies/" class="md-nav__link">
  514. <span class="md-ellipsis">
  515. Configuration and Policies
  516. </span>
  517. </a>
  518. </li>
  519. <li class="md-nav__item">
  520. <a href="../faq/compatibility_and_integration/" class="md-nav__link">
  521. <span class="md-ellipsis">
  522. Compatibility and Integration
  523. </span>
  524. </a>
  525. </li>
  526. <li class="md-nav__item">
  527. <a href="../faq/recommendations_and_warnings/" class="md-nav__link">
  528. <span class="md-ellipsis">
  529. Recommendations and Warnings
  530. </span>
  531. </a>
  532. </li>
  533. <li class="md-nav__item">
  534. <a href="../faq/technical_behavior_and_limitations/" class="md-nav__link">
  535. <span class="md-ellipsis">
  536. Technical Behavior and Limitations
  537. </span>
  538. </a>
  539. </li>
  540. <li class="md-nav__item">
  541. <a href="../faq/why_isnt_it_working/" class="md-nav__link">
  542. <span class="md-ellipsis">
  543. "Why isn't it working?"
  544. </span>
  545. </a>
  546. </li>
  547. <li class="md-nav__item">
  548. <a href="../faq/limit_drive_spinup/" class="md-nav__link">
  549. <span class="md-ellipsis">
  550. Limiting drive spinup
  551. </span>
  552. </a>
  553. </li>
  554. </ul>
  555. </nav>
  556. </li>
  557. <li class="md-nav__item">
  558. <a href="../related_projects/" class="md-nav__link">
  559. <span class="md-ellipsis">
  560. Related Projects
  561. </span>
  562. </a>
  563. </li>
  564. <li class="md-nav__item">
  565. <a href="../media_and_publicity/" class="md-nav__link">
  566. <span class="md-ellipsis">
  567. Media and Publicity
  568. </span>
  569. </a>
  570. </li>
  571. <li class="md-nav__item">
  572. <a href="../support/" class="md-nav__link">
  573. <span class="md-ellipsis">
  574. Support
  575. </span>
  576. </a>
  577. </li>
  578. <li class="md-nav__item">
  579. <a href="../sponsorship_and_donations/" class="md-nav__link">
  580. <span class="md-ellipsis">
  581. Sponsorship and Donations
  582. </span>
  583. </a>
  584. </li>
  585. </ul>
  586. </nav>
  587. </div>
  588. </div>
  589. </div>
  590. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  591. <div class="md-sidebar__scrollwrap">
  592. <div class="md-sidebar__inner">
  593. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  594. <label class="md-nav__title" for="__toc">
  595. <span class="md-nav__icon md-icon"></span>
  596. Table of contents
  597. </label>
  598. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  599. <li class="md-nav__item">
  600. <a href="#tiered-cache" class="md-nav__link">
  601. <span class="md-ellipsis">
  602. tiered cache
  603. </span>
  604. </a>
  605. <nav class="md-nav" aria-label="tiered cache">
  606. <ul class="md-nav__list">
  607. <li class="md-nav__item">
  608. <a href="#time-based-expiring" class="md-nav__link">
  609. <span class="md-ellipsis">
  610. time based expiring
  611. </span>
  612. </a>
  613. </li>
  614. <li class="md-nav__item">
  615. <a href="#percentage-full-expiring" class="md-nav__link">
  616. <span class="md-ellipsis">
  617. percentage full expiring
  618. </span>
  619. </a>
  620. </li>
  621. </ul>
  622. </nav>
  623. </li>
  624. </ul>
  625. </nav>
  626. </div>
  627. </div>
  628. </div>
  629. <div class="md-content" data-md-component="content">
  630. <article class="md-content__inner md-typeset">
  631. <a href="https://github.com/trapexit/mergerfs/edit/master/mkdocs/docs/usage_patterns.md" title="Edit this page" class="md-content__button md-icon">
  632. <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>
  633. </a>
  634. <a href="https://github.com/trapexit/mergerfs/raw/master/mkdocs/docs/usage_patterns.md" title="View source of this page" class="md-content__button md-icon">
  635. <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>
  636. </a>
  637. <h1 id="usage-patterns">Usage Patterns</h1>
  638. <h2 id="tiered-cache">tiered cache</h2>
  639. <p>Some storage technologies support what is called "tiered" caching. The
  640. placing of smaller, faster storage as a transparent cache to larger,
  641. slower storage. NVMe, SSD, Optane in front of traditional HDDs for
  642. instance.</p>
  643. <p>mergerfs does not natively support any sort of tiered caching. Most
  644. users have no use for such a feature and its inclusion would
  645. complicate the code as it exists today. However, there are a few
  646. situations where a cache filesystem could help with a typical mergerfs
  647. setup.</p>
  648. <ol>
  649. <li>Fast network, slow filesystems, many readers: You've a 10+Gbps
  650. network with many readers and your regular filesystems can't keep
  651. up.</li>
  652. <li>Fast network, slow filesystems, small'ish bursty writes: You have
  653. a 10+Gbps network and wish to transfer amounts of data less than
  654. your cache filesystem but wish to do so quickly and the time
  655. between bursts is long enough to migrate data.</li>
  656. </ol>
  657. <p>With #1 it's arguable if you should be using mergerfs at all. A RAID
  658. level that can aggregate performance or using higher performance
  659. storage would probably be the better solution. If you're going to use
  660. mergerfs there are other tactics that may help: spreading the data
  661. across filesystems (see the mergerfs.dup tool) and setting
  662. <code>func.open=rand</code>, using <code>symlinkify</code>, or using dm-cache or a similar
  663. technology to add tiered cache to the underlying device itself.</p>
  664. <p>With #2 one could use a block cache solution as available via LVM and
  665. dm-cache but there is another solution which requires only mergerfs, a
  666. script to move files around, and a cron job to run said script.</p>
  667. <ul>
  668. <li>Create two mergerfs pools. One which includes just the <strong>slow</strong>
  669. branches and one which has both the <strong>fast</strong> branches
  670. (SSD,NVME,etc.) and <strong>slow</strong> branches. The <strong>base</strong> pool and the
  671. <strong>cache</strong> pool.</li>
  672. <li>The <strong>cache</strong> pool should have the cache branches listed first in
  673. the branch list in order to to make it easier to prioritize them.</li>
  674. <li>The best <code>create</code> policies to use for the <strong>cache</strong> pool would
  675. probably be <code>ff</code>, <code>lus</code>, or <code>lfs</code>. The latter two under the
  676. assumption that the cache filesystem(s) are far smaller than the
  677. backing filesystems.</li>
  678. <li>You can also set the <strong>slow</strong> filesystems mode to <code>NC</code> which would
  679. give you the ability to use other <code>create</code> policies though that'd
  680. mean if the cache filesystems fill you'd get "out of space"
  681. errors. This however may be good as it would indicate the script
  682. moving files around is not configured properly.</li>
  683. <li>Set your programs to use the <strong>cache</strong> pool.</li>
  684. <li>Configure the <strong>base</strong> pool with the <code>create</code> policy you would like
  685. to lay out files as you like.</li>
  686. <li>Save one of the below scripts or create your own. The script's
  687. responsibility is to move files from the <strong>cache</strong> branches (not
  688. pool) to the <strong>base</strong> pool.</li>
  689. <li>Use <code>cron</code> (as root) to schedule the command at whatever frequency
  690. is appropriate for your workflow.</li>
  691. </ul>
  692. <h3 id="time-based-expiring">time based expiring</h3>
  693. <p>Move files from cache filesystem to base pool which have an access
  694. time older than the supplied number of days. Replace <code>-atime</code> with
  695. <code>-amin</code> in the script if you want minutes rather than days.</p>
  696. <p><strong>NOTE:</strong> The arguments to these scripts include the cache
  697. <strong>filesystem</strong> itself. Not the pool with the cache filesystem. You
  698. could have data loss if the source is the cache pool.</p>
  699. <p><a href="https://github.com/trapexit/mergerfs/blob/latest-release/tools/mergerfs.time-based-mover?raw=1">mergerfs.time-based-mover</a></p>
  700. <p>Download:
  701. <div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>curl -o /usr/local/bin/mergerfs.time-based-mover https://raw.githubusercontent.com/trapexit/mergerfs/refs/heads/latest-release/tools/mergerfs.time-based-mover
  702. </span></code></pre></div></p>
  703. <p>crontab entry:
  704. <div class="language-text highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a># m h dom mon dow command
  705. </span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>0 * * * * /usr/local/bin/mergerfs.time-based-mover /mnt/ssd/cache00 /mnt/base-pool 1
  706. </span></code></pre></div></p>
  707. <p>If you have more than one cache filesystem then simply add a cron
  708. entry for each.</p>
  709. <p>If you want to only move files from a subdirectory then use the
  710. subdirectories. <code>/mnt/ssd/cache00/foo</code> and <code>/mnt/base-pool/foo</code>
  711. respectively.</p>
  712. <h3 id="percentage-full-expiring">percentage full expiring</h3>
  713. <p>While the cache filesystem's percentage full is above the provided
  714. value move the oldest file from the cache filesystem to the base pool.</p>
  715. <p><strong>NOTE:</strong> The arguments to these scripts include the cache
  716. <strong>filesystem</strong> itself. Not the pool with the cache filesystem. You
  717. could have data loss if the source is the cache pool.</p>
  718. <p><a href="https://github.com/trapexit/mergerfs/blob/latest-release/tools/mergerfs.percent-full-mover?raw=1">mergerfs.percent-full-mover</a></p>
  719. <p>Download:
  720. <div class="language-text highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>curl -o /usr/local/bin/mergerfs.percent-full-mover https://raw.githubusercontent.com/trapexit/mergerfs/refs/heads/latest-release/tools/mergerfs.percent-full-mover
  721. </span></code></pre></div></p>
  722. <p>crontab entry:
  723. <div class="language-text highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a># m h dom mon dow command
  724. </span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>0 * * * * /usr/local/bin/mergerfs.percent-full-mover /mnt/ssd/cache00 /mnt/base-pool 80
  725. </span></code></pre></div></p>
  726. <p>If you have more than one cache filesystem then simply add a cron
  727. entry for each.</p>
  728. <p>If you want to only move files from a subdirectory then use the
  729. subdirectories. <code>/mnt/ssd/cache00/foo</code> and <code>/mnt/base-pool/foo</code>
  730. respectively.</p>
  731. </article>
  732. </div>
  733. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  734. </div>
  735. <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  736. <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>
  737. Back to top
  738. </button>
  739. </main>
  740. <footer class="md-footer">
  741. <nav class="md-footer__inner md-grid" aria-label="Footer" >
  742. <a href="../tooling/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Tooling">
  743. <div class="md-footer__button md-icon">
  744. <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>
  745. </div>
  746. <div class="md-footer__title">
  747. <span class="md-footer__direction">
  748. Previous
  749. </span>
  750. <div class="md-ellipsis">
  751. Tooling
  752. </div>
  753. </div>
  754. </a>
  755. <a href="../faq/reliability_and_scalability/" class="md-footer__link md-footer__link--next" aria-label="Next: Reliability and Scalability">
  756. <div class="md-footer__title">
  757. <span class="md-footer__direction">
  758. Next
  759. </span>
  760. <div class="md-ellipsis">
  761. Reliability and Scalability
  762. </div>
  763. </div>
  764. <div class="md-footer__button md-icon">
  765. <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>
  766. </div>
  767. </a>
  768. </nav>
  769. <div class="md-footer-meta md-typeset">
  770. <div class="md-footer-meta__inner md-grid">
  771. <div class="md-copyright">
  772. Made with
  773. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  774. Material for MkDocs
  775. </a>
  776. </div>
  777. </div>
  778. </div>
  779. </footer>
  780. </div>
  781. <div class="md-dialog" data-md-component="dialog">
  782. <div class="md-dialog__inner md-typeset"></div>
  783. </div>
  784. <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", "toc.follow"], "search": "../assets/javascripts/workers/search.f8cc74c7.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>
  785. <script src="../assets/javascripts/bundle.f1b6f286.min.js"></script>
  786. </body>
  787. </html>