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.

1937 lines
44 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/project_comparisons/">
  8. <link rel="prev" href="../known_issues_bugs/">
  9. <link rel="next" href="../performance/">
  10. <link rel="icon" href="../assets/images/favicon.png">
  11. <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
  12. <title>Project Comparisons - mergerfs</title>
  13. <link rel="stylesheet" href="../assets/stylesheets/main.a40c8224.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="#project-comparisons" 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. Project Comparisons
  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 md-nav__item--active">
  410. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  411. <label class="md-nav__link md-nav__link--active" for="__toc">
  412. <span class="md-ellipsis">
  413. Project Comparisons
  414. </span>
  415. <span class="md-nav__icon md-icon"></span>
  416. </label>
  417. <a href="./" class="md-nav__link md-nav__link--active">
  418. <span class="md-ellipsis">
  419. Project Comparisons
  420. </span>
  421. </a>
  422. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  423. <label class="md-nav__title" for="__toc">
  424. <span class="md-nav__icon md-icon"></span>
  425. Table of contents
  426. </label>
  427. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  428. <li class="md-nav__item">
  429. <a href="#mhddfs" class="md-nav__link">
  430. <span class="md-ellipsis">
  431. mhddfs
  432. </span>
  433. </a>
  434. </li>
  435. <li class="md-nav__item">
  436. <a href="#aufs" class="md-nav__link">
  437. <span class="md-ellipsis">
  438. aufs
  439. </span>
  440. </a>
  441. </li>
  442. <li class="md-nav__item">
  443. <a href="#unionfs" class="md-nav__link">
  444. <span class="md-ellipsis">
  445. unionfs
  446. </span>
  447. </a>
  448. </li>
  449. <li class="md-nav__item">
  450. <a href="#unionfs-fuse" class="md-nav__link">
  451. <span class="md-ellipsis">
  452. unionfs-fuse
  453. </span>
  454. </a>
  455. </li>
  456. <li class="md-nav__item">
  457. <a href="#overlayfs" class="md-nav__link">
  458. <span class="md-ellipsis">
  459. overlayfs
  460. </span>
  461. </a>
  462. </li>
  463. <li class="md-nav__item">
  464. <a href="#raid0-jbod-span-drive-concatenation-striping" class="md-nav__link">
  465. <span class="md-ellipsis">
  466. RAID0, JBOD, SPAN, drive concatenation, striping
  467. </span>
  468. </a>
  469. </li>
  470. <li class="md-nav__item">
  471. <a href="#unraid" class="md-nav__link">
  472. <span class="md-ellipsis">
  473. UnRAID
  474. </span>
  475. </a>
  476. </li>
  477. <li class="md-nav__item">
  478. <a href="#zfs" class="md-nav__link">
  479. <span class="md-ellipsis">
  480. ZFS
  481. </span>
  482. </a>
  483. </li>
  484. <li class="md-nav__item">
  485. <a href="#stablebits-drivepool" class="md-nav__link">
  486. <span class="md-ellipsis">
  487. StableBit's DrivePool
  488. </span>
  489. </a>
  490. </li>
  491. <li class="md-nav__item">
  492. <a href="#plan9-binds" class="md-nav__link">
  493. <span class="md-ellipsis">
  494. Plan9 binds
  495. </span>
  496. </a>
  497. </li>
  498. </ul>
  499. </nav>
  500. </li>
  501. <li class="md-nav__item">
  502. <a href="../performance/" class="md-nav__link">
  503. <span class="md-ellipsis">
  504. Tweaking Performance
  505. </span>
  506. </a>
  507. </li>
  508. <li class="md-nav__item">
  509. <a href="../benchmarking/" class="md-nav__link">
  510. <span class="md-ellipsis">
  511. Benchmarking
  512. </span>
  513. </a>
  514. </li>
  515. <li class="md-nav__item">
  516. <a href="../tooling/" class="md-nav__link">
  517. <span class="md-ellipsis">
  518. Tooling
  519. </span>
  520. </a>
  521. </li>
  522. <li class="md-nav__item">
  523. <a href="../usage_patterns/" class="md-nav__link">
  524. <span class="md-ellipsis">
  525. Usage Patterns
  526. </span>
  527. </a>
  528. </li>
  529. <li class="md-nav__item md-nav__item--nested">
  530. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
  531. <label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
  532. <span class="md-ellipsis">
  533. FAQ
  534. </span>
  535. <span class="md-nav__icon md-icon"></span>
  536. </label>
  537. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
  538. <label class="md-nav__title" for="__nav_16">
  539. <span class="md-nav__icon md-icon"></span>
  540. FAQ
  541. </label>
  542. <ul class="md-nav__list" data-md-scrollfix>
  543. <li class="md-nav__item">
  544. <a href="../faq/reliability_and_scalability/" class="md-nav__link">
  545. <span class="md-ellipsis">
  546. Reliability and Scalability
  547. </span>
  548. </a>
  549. </li>
  550. <li class="md-nav__item">
  551. <a href="../faq/usage_and_functionality/" class="md-nav__link">
  552. <span class="md-ellipsis">
  553. Usage and Functionality
  554. </span>
  555. </a>
  556. </li>
  557. <li class="md-nav__item">
  558. <a href="../faq/configuration_and_policies/" class="md-nav__link">
  559. <span class="md-ellipsis">
  560. Configuration and Policies
  561. </span>
  562. </a>
  563. </li>
  564. <li class="md-nav__item">
  565. <a href="../faq/compatibility_and_integration/" class="md-nav__link">
  566. <span class="md-ellipsis">
  567. Compatibility and Integration
  568. </span>
  569. </a>
  570. </li>
  571. <li class="md-nav__item">
  572. <a href="../faq/recommendations_and_warnings/" class="md-nav__link">
  573. <span class="md-ellipsis">
  574. Recommendations and Warnings
  575. </span>
  576. </a>
  577. </li>
  578. <li class="md-nav__item">
  579. <a href="../faq/technical_behavior_and_limitations/" class="md-nav__link">
  580. <span class="md-ellipsis">
  581. Technical Behavior and Limitations
  582. </span>
  583. </a>
  584. </li>
  585. <li class="md-nav__item">
  586. <a href="../faq/limit_drive_spinup/" class="md-nav__link">
  587. <span class="md-ellipsis">
  588. Limiting drive spinup
  589. </span>
  590. </a>
  591. </li>
  592. </ul>
  593. </nav>
  594. </li>
  595. <li class="md-nav__item">
  596. <a href="../related_projects/" class="md-nav__link">
  597. <span class="md-ellipsis">
  598. Related Projects
  599. </span>
  600. </a>
  601. </li>
  602. <li class="md-nav__item">
  603. <a href="../media_and_publicity/" class="md-nav__link">
  604. <span class="md-ellipsis">
  605. Media and Publicity
  606. </span>
  607. </a>
  608. </li>
  609. <li class="md-nav__item">
  610. <a href="../support/" class="md-nav__link">
  611. <span class="md-ellipsis">
  612. Support
  613. </span>
  614. </a>
  615. </li>
  616. <li class="md-nav__item">
  617. <a href="../sponsorship_and_donations/" class="md-nav__link">
  618. <span class="md-ellipsis">
  619. Sponsorship and Donations
  620. </span>
  621. </a>
  622. </li>
  623. </ul>
  624. </nav>
  625. </div>
  626. </div>
  627. </div>
  628. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  629. <div class="md-sidebar__scrollwrap">
  630. <div class="md-sidebar__inner">
  631. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  632. <label class="md-nav__title" for="__toc">
  633. <span class="md-nav__icon md-icon"></span>
  634. Table of contents
  635. </label>
  636. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  637. <li class="md-nav__item">
  638. <a href="#mhddfs" class="md-nav__link">
  639. <span class="md-ellipsis">
  640. mhddfs
  641. </span>
  642. </a>
  643. </li>
  644. <li class="md-nav__item">
  645. <a href="#aufs" class="md-nav__link">
  646. <span class="md-ellipsis">
  647. aufs
  648. </span>
  649. </a>
  650. </li>
  651. <li class="md-nav__item">
  652. <a href="#unionfs" class="md-nav__link">
  653. <span class="md-ellipsis">
  654. unionfs
  655. </span>
  656. </a>
  657. </li>
  658. <li class="md-nav__item">
  659. <a href="#unionfs-fuse" class="md-nav__link">
  660. <span class="md-ellipsis">
  661. unionfs-fuse
  662. </span>
  663. </a>
  664. </li>
  665. <li class="md-nav__item">
  666. <a href="#overlayfs" class="md-nav__link">
  667. <span class="md-ellipsis">
  668. overlayfs
  669. </span>
  670. </a>
  671. </li>
  672. <li class="md-nav__item">
  673. <a href="#raid0-jbod-span-drive-concatenation-striping" class="md-nav__link">
  674. <span class="md-ellipsis">
  675. RAID0, JBOD, SPAN, drive concatenation, striping
  676. </span>
  677. </a>
  678. </li>
  679. <li class="md-nav__item">
  680. <a href="#unraid" class="md-nav__link">
  681. <span class="md-ellipsis">
  682. UnRAID
  683. </span>
  684. </a>
  685. </li>
  686. <li class="md-nav__item">
  687. <a href="#zfs" class="md-nav__link">
  688. <span class="md-ellipsis">
  689. ZFS
  690. </span>
  691. </a>
  692. </li>
  693. <li class="md-nav__item">
  694. <a href="#stablebits-drivepool" class="md-nav__link">
  695. <span class="md-ellipsis">
  696. StableBit's DrivePool
  697. </span>
  698. </a>
  699. </li>
  700. <li class="md-nav__item">
  701. <a href="#plan9-binds" class="md-nav__link">
  702. <span class="md-ellipsis">
  703. Plan9 binds
  704. </span>
  705. </a>
  706. </li>
  707. </ul>
  708. </nav>
  709. </div>
  710. </div>
  711. </div>
  712. <div class="md-content" data-md-component="content">
  713. <article class="md-content__inner md-typeset">
  714. <a href="https://github.com/trapexit/mergerfs/edit/master/mkdocs/docs/project_comparisons.md" title="Edit this page" class="md-content__button md-icon">
  715. <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>
  716. </a>
  717. <a href="https://github.com/trapexit/mergerfs/raw/master/mkdocs/docs/project_comparisons.md" title="View source of this page" class="md-content__button md-icon">
  718. <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>
  719. </a>
  720. <h1 id="project-comparisons">Project Comparisons</h1>
  721. <h2 id="mhddfs">mhddfs</h2>
  722. <ul>
  723. <li><a href="https://romanrm.net/mhddfs">https://romanrm.net/mhddfs</a></li>
  724. </ul>
  725. <p>mhddfs had not been updated in over a decade and has known stability
  726. and security issues. mergerfs provides a super set of mhddfs' features
  727. and offers better performance. In fact, as of 2020, the author of
  728. mhddfs has <a href="https://romanrm.net/mhddfs#update">moved to using
  729. mergerfs.</a></p>
  730. <p>Below is an example of mhddfs and mergerfs setup to work similarly.</p>
  731. <p><code>mhddfs -o mlimit=4G,allow_other /mnt/drive1,/mnt/drive2 /mnt/pool</code></p>
  732. <p><code>mergerfs -o minfreespace=4G,category.create=ff /mnt/drive1:/mnt/drive2 /mnt/pool</code></p>
  733. <h2 id="aufs">aufs</h2>
  734. <ul>
  735. <li><a href="https://aufs.sourceforge.net">https://aufs.sourceforge.net</a></li>
  736. <li><a href="https://en.wikipedia.org/wiki/Aufs">https://en.wikipedia.org/wiki/Aufs</a></li>
  737. </ul>
  738. <p>While aufs still is maintained it failed to be included in the
  739. mainline kernel and is no longer available in most Linux distros
  740. making it harder to get installed for the average user.</p>
  741. <p>While aufs can often offer better peak performance due to being
  742. primarily kernel based, mergerfs provides more configurability and is
  743. generally easier to use. mergerfs however does not offer the overlay /
  744. copy-on-write (CoW) features which aufs has.</p>
  745. <h2 id="unionfs">unionfs</h2>
  746. <ul>
  747. <li><a href="https://unionfs.filesystems.org">https://unionfs.filesystems.org</a></li>
  748. </ul>
  749. <p>unionfs for Linux is a "stackable unification file system" which
  750. functions like many other union filesystems. unionfs has not been
  751. maintained and was last released for Linux v3.14 back in 2014.</p>
  752. <p>Documentation is sparse so a comparison of features is not possible
  753. but given the lack of maintenance and support for modern kernels there
  754. is little reason to consider it as a solution.</p>
  755. <h2 id="unionfs-fuse">unionfs-fuse</h2>
  756. <ul>
  757. <li><a href="https://github.com/rpodgorny/unionfs-fuse">https://github.com/rpodgorny/unionfs-fuse</a></li>
  758. </ul>
  759. <p>unionfs-fuse is more like unionfs, aufs, and overlayfs than mergerfs
  760. in that it offers overlay / copy-on-write (CoW) features. If you're
  761. just looking to create a union of filesystems and want flexibility in
  762. file/directory placement then mergerfs offers that whereas
  763. unionfs-fuse is more for overlaying read/write filesystems over
  764. read-only ones.</p>
  765. <p>Since unionfs-fuse, as the name suggests, is a FUSE based technology
  766. it can be used without elevated privileges that kernel solutions such
  767. as unionfs, aufs, and overlayfs require.</p>
  768. <h2 id="overlayfs">overlayfs</h2>
  769. <ul>
  770. <li><a href="https://docs.kernel.org/filesystems/overlayfs.html">https://docs.kernel.org/filesystems/overlayfs.html</a></li>
  771. </ul>
  772. <p>overlayfs is effectively the successor to unionfs, unionfs-fuse, and
  773. aufs and is widely used by Linux container platforms such as Docker and
  774. Podman. It was developed and is maintained by the same developer who
  775. created FUSE.</p>
  776. <p>If your use case is layering a writable filesystem on top of read-only
  777. filesystems then you should look first to overlayfs. Its feature set
  778. however is very different from mergerfs and solve different problems.</p>
  779. <h2 id="raid0-jbod-span-drive-concatenation-striping">RAID0, JBOD, SPAN, drive concatenation, striping</h2>
  780. <ul>
  781. <li><a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0">RAID0</a></li>
  782. <li><a href="https://en.wikipedia.org/wiki/Non-RAID_drive_architectures#JBOD">JBOD</a></li>
  783. <li><a href="https://en.wikipedia.org/wiki/Non-RAID_drive_architectures#Concatenation_(SPAN,_BIG)">SPAN</a></li>
  784. <li><a href="https://en.wikipedia.org/wiki/Data_striping">striping</a></li>
  785. </ul>
  786. <p>These are block device technologies which in some form aggregate
  787. devices into what appears to be a singular device on which a
  788. traditional filesystem can be used. The filesystem has no
  789. understanding of the underlying block layout and should one of those
  790. underlying devices fail or be removed the filesystem will be missing
  791. that chunk which could contain critical information and the whole
  792. filesystem may become unrecoverable. Even if the data from the
  793. filesystem is recoverable it will take using specialized tooling to do
  794. so.</p>
  795. <p>In contrast, with mergerfs you can format devices as one normally
  796. would or take existing filesystems and then combine them in a pool to
  797. aggregate their storage. The failure of any one device will have no
  798. impact on the other devices. The downside to mergerfs' technique is
  799. the fact you don't actually have contiguous space as large as if you
  800. used those other technologies. Meaning you can't create a file greater
  801. than 1TB on a pool of 2 1TB filesystems.</p>
  802. <h2 id="unraid">UnRAID</h2>
  803. <ul>
  804. <li><a href="https://unraid.net">https://unraid.net</a></li>
  805. </ul>
  806. <p>UnRAID is a full OS and offers a (FUSE based?) filesystem which
  807. provides a union of filesystems like mergerfs but with the addition of
  808. live parity calculation and storage. Outside parity calculations
  809. mergerfs offers more features and due to the lack of real-time parity
  810. calculation can have higher peak performance. Some users also prefer
  811. an open source solution.</p>
  812. <p>For semi-static data mergerfs + <a href="http://www.snapraid.it">SnapRaid</a>
  813. provides a similar, but not real-time, solution.</p>
  814. <h2 id="zfs">ZFS</h2>
  815. <ul>
  816. <li><a href="https://en.wikipedia.org/wiki/ZFS">https://en.wikipedia.org/wiki/ZFS</a></li>
  817. </ul>
  818. <p>mergerfs is very different from ZFS. mergerfs is intended to provide
  819. flexible pooling of arbitrary filesystems (local or remote), of
  820. arbitrary sizes, and arbitrary filesystems. Particularly in <code>write
  821. once, read many</code> use cases such as bulk media storage. Where data
  822. integrity and backup is managed in other ways. In those use cases ZFS
  823. can introduce a number of costs and limitations as described
  824. <a href="http://louwrentius.com/the-hidden-cost-of-using-zfs-for-your-home-nas.html">here</a>,
  825. <a href="https://markmcb.com/2020/01/07/five-years-of-btrfs/">here</a>, and
  826. <a href="https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSWhyNoRealReshaping">here</a>.</p>
  827. <h2 id="stablebits-drivepool">StableBit's DrivePool</h2>
  828. <ul>
  829. <li><a href="https://stablebit.com">https://stablebit.com</a></li>
  830. </ul>
  831. <p>DrivePool works only on Windows so not as common an alternative as
  832. other Linux solutions. If you want to use Windows then DrivePool is a
  833. good option. Functionally the two projects work a bit
  834. differently. DrivePool always writes to the filesystem with the most
  835. free space and later rebalances. mergerfs does not currently offer
  836. rebalance but chooses a branch at file/directory create
  837. time. DrivePool's rebalancing can be done differently in any directory
  838. and has file pattern matching to further customize the
  839. behavior. mergerfs, not having rebalancing does not have these
  840. features, but similar features are planned for mergerfs v3. DrivePool
  841. has builtin file duplication which mergerfs does not natively support
  842. (but can be done via an external script.)</p>
  843. <p>There are a lot of misc differences between the two projects but most
  844. features in DrivePool can be replicated with external tools in
  845. combination with mergerfs.</p>
  846. <p>Additionally, DrivePool is a closed source commercial product vs
  847. mergerfs a ISC licensed open source project.</p>
  848. <h2 id="plan9-binds">Plan9 binds</h2>
  849. <ul>
  850. <li><a href="https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Union_directories_and_namespaces">https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Union_directories_and_namespaces</a></li>
  851. </ul>
  852. <p>Plan9 has the native ability to bind multiple paths/filesystems
  853. together to create a setup similar to simplified union
  854. filesystem. Such bind mounts choose files in a "first found" in the
  855. order they are listed similar to mergerfs' <code>ff</code> policy. Similar, when
  856. creating a file it will be created on the first directory in the
  857. union.</p>
  858. <p>Plan 9 isn't a widely used OS so this comparison is mostly academic.</p>
  859. </article>
  860. </div>
  861. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  862. </div>
  863. <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  864. <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>
  865. Back to top
  866. </button>
  867. </main>
  868. <footer class="md-footer">
  869. <nav class="md-footer__inner md-grid" aria-label="Footer" >
  870. <a href="../known_issues_bugs/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Known Issues and Bugs">
  871. <div class="md-footer__button md-icon">
  872. <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>
  873. </div>
  874. <div class="md-footer__title">
  875. <span class="md-footer__direction">
  876. Previous
  877. </span>
  878. <div class="md-ellipsis">
  879. Known Issues and Bugs
  880. </div>
  881. </div>
  882. </a>
  883. <a href="../performance/" class="md-footer__link md-footer__link--next" aria-label="Next: Tweaking Performance">
  884. <div class="md-footer__title">
  885. <span class="md-footer__direction">
  886. Next
  887. </span>
  888. <div class="md-ellipsis">
  889. Tweaking Performance
  890. </div>
  891. </div>
  892. <div class="md-footer__button md-icon">
  893. <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>
  894. </div>
  895. </a>
  896. </nav>
  897. <div class="md-footer-meta md-typeset">
  898. <div class="md-footer-meta__inner md-grid">
  899. <div class="md-copyright">
  900. Made with
  901. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  902. Material for MkDocs
  903. </a>
  904. </div>
  905. </div>
  906. </div>
  907. </footer>
  908. </div>
  909. <div class="md-dialog" data-md-component="dialog">
  910. <div class="md-dialog__inner md-typeset"></div>
  911. </div>
  912. <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>
  913. <script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
  914. </body>
  915. </html>