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.

2014 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.6.5">
  12. <title>Project Comparisons - 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="#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/why_isnt_it_working/" class="md-nav__link">
  587. <span class="md-ellipsis">
  588. "Why isn't it working?"
  589. </span>
  590. </a>
  591. </li>
  592. <li class="md-nav__item">
  593. <a href="../faq/limit_drive_spinup/" class="md-nav__link">
  594. <span class="md-ellipsis">
  595. Limiting drive spinup
  596. </span>
  597. </a>
  598. </li>
  599. </ul>
  600. </nav>
  601. </li>
  602. <li class="md-nav__item">
  603. <a href="../related_projects/" class="md-nav__link">
  604. <span class="md-ellipsis">
  605. Related Projects
  606. </span>
  607. </a>
  608. </li>
  609. <li class="md-nav__item">
  610. <a href="../media_and_publicity/" class="md-nav__link">
  611. <span class="md-ellipsis">
  612. Media and Publicity
  613. </span>
  614. </a>
  615. </li>
  616. <li class="md-nav__item">
  617. <a href="../support/" class="md-nav__link">
  618. <span class="md-ellipsis">
  619. Support
  620. </span>
  621. </a>
  622. </li>
  623. <li class="md-nav__item">
  624. <a href="../sponsorship_and_donations/" class="md-nav__link">
  625. <span class="md-ellipsis">
  626. Sponsorship and Donations
  627. </span>
  628. </a>
  629. </li>
  630. </ul>
  631. </nav>
  632. </div>
  633. </div>
  634. </div>
  635. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  636. <div class="md-sidebar__scrollwrap">
  637. <div class="md-sidebar__inner">
  638. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  639. <label class="md-nav__title" for="__toc">
  640. <span class="md-nav__icon md-icon"></span>
  641. Table of contents
  642. </label>
  643. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  644. <li class="md-nav__item">
  645. <a href="#mhddfs" class="md-nav__link">
  646. <span class="md-ellipsis">
  647. mhddfs
  648. </span>
  649. </a>
  650. </li>
  651. <li class="md-nav__item">
  652. <a href="#aufs" class="md-nav__link">
  653. <span class="md-ellipsis">
  654. aufs
  655. </span>
  656. </a>
  657. </li>
  658. <li class="md-nav__item">
  659. <a href="#unionfs" class="md-nav__link">
  660. <span class="md-ellipsis">
  661. unionfs
  662. </span>
  663. </a>
  664. </li>
  665. <li class="md-nav__item">
  666. <a href="#unionfs-fuse" class="md-nav__link">
  667. <span class="md-ellipsis">
  668. unionfs-fuse
  669. </span>
  670. </a>
  671. </li>
  672. <li class="md-nav__item">
  673. <a href="#overlayfs" class="md-nav__link">
  674. <span class="md-ellipsis">
  675. overlayfs
  676. </span>
  677. </a>
  678. </li>
  679. <li class="md-nav__item">
  680. <a href="#raid0-jbod-span-drive-concatenation-striping" class="md-nav__link">
  681. <span class="md-ellipsis">
  682. RAID0, JBOD, SPAN, drive concatenation, striping
  683. </span>
  684. </a>
  685. </li>
  686. <li class="md-nav__item">
  687. <a href="#unraid" class="md-nav__link">
  688. <span class="md-ellipsis">
  689. UnRAID
  690. </span>
  691. </a>
  692. </li>
  693. <li class="md-nav__item">
  694. <a href="#zfs" class="md-nav__link">
  695. <span class="md-ellipsis">
  696. ZFS
  697. </span>
  698. </a>
  699. </li>
  700. <li class="md-nav__item">
  701. <a href="#stablebits-drivepool" class="md-nav__link">
  702. <span class="md-ellipsis">
  703. StableBit's DrivePool
  704. </span>
  705. </a>
  706. </li>
  707. <li class="md-nav__item">
  708. <a href="#plan9-binds" class="md-nav__link">
  709. <span class="md-ellipsis">
  710. Plan9 binds
  711. </span>
  712. </a>
  713. </li>
  714. </ul>
  715. </nav>
  716. </div>
  717. </div>
  718. </div>
  719. <div class="md-content" data-md-component="content">
  720. <article class="md-content__inner md-typeset">
  721. <a href="https://github.com/trapexit/mergerfs/edit/master/mkdocs/docs/project_comparisons.md" title="Edit this page" class="md-content__button md-icon">
  722. <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>
  723. </a>
  724. <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">
  725. <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>
  726. </a>
  727. <h1 id="project-comparisons">Project Comparisons</h1>
  728. <h2 id="mhddfs">mhddfs</h2>
  729. <ul>
  730. <li><a href="https://romanrm.net/mhddfs">https://romanrm.net/mhddfs</a></li>
  731. </ul>
  732. <p>mhddfs had not been updated in over a decade and has known stability
  733. and security issues. mergerfs provides a super set of mhddfs' features
  734. and offers better performance. In fact, as of 2020, the author of
  735. mhddfs has <a href="https://romanrm.net/mhddfs#update">moved to using
  736. mergerfs.</a></p>
  737. <p>Below is an example of mhddfs and mergerfs setup to work similarly.</p>
  738. <p><code>mhddfs -o mlimit=4G,allow_other /mnt/drive1,/mnt/drive2 /mnt/pool</code></p>
  739. <p><code>mergerfs -o minfreespace=4G,category.create=ff /mnt/drive1:/mnt/drive2 /mnt/pool</code></p>
  740. <h2 id="aufs">aufs</h2>
  741. <ul>
  742. <li><a href="https://aufs.sourceforge.net">https://aufs.sourceforge.net</a></li>
  743. <li><a href="https://en.wikipedia.org/wiki/Aufs">https://en.wikipedia.org/wiki/Aufs</a></li>
  744. </ul>
  745. <p>While aufs still is maintained it failed to be included in the
  746. mainline kernel and is no longer available in most Linux distros
  747. making it harder to get installed for the average user.</p>
  748. <p>While aufs can often offer better peak performance due to being
  749. primarily kernel based, mergerfs provides more configurability and is
  750. generally easier to use. mergerfs however does not offer the overlay /
  751. copy-on-write (CoW) features which aufs has.</p>
  752. <h2 id="unionfs">unionfs</h2>
  753. <ul>
  754. <li><a href="https://unionfs.filesystems.org">https://unionfs.filesystems.org</a></li>
  755. </ul>
  756. <p>unionfs for Linux is a "stackable unification file system" which
  757. functions like many other union filesystems. unionfs has not been
  758. maintained and was last released for Linux v3.14 back in 2014.</p>
  759. <p>Documentation is sparse so a comparison of features is not possible
  760. but given the lack of maintenance and support for modern kernels there
  761. is little reason to consider it as a solution.</p>
  762. <h2 id="unionfs-fuse">unionfs-fuse</h2>
  763. <ul>
  764. <li><a href="https://github.com/rpodgorny/unionfs-fuse">https://github.com/rpodgorny/unionfs-fuse</a></li>
  765. </ul>
  766. <p>unionfs-fuse is more like unionfs, aufs, and overlayfs than mergerfs
  767. in that it offers overlay / copy-on-write (CoW) features. If you're
  768. just looking to create a union of filesystems and want flexibility in
  769. file/directory placement then mergerfs offers that whereas
  770. unionfs-fuse is more for overlaying read/write filesystems over
  771. read-only ones.</p>
  772. <p>Since unionfs-fuse, as the name suggests, is a FUSE based technology
  773. it can be used without elevated privileges that kernel solutions such
  774. as unionfs, aufs, and overlayfs require.</p>
  775. <h2 id="overlayfs">overlayfs</h2>
  776. <ul>
  777. <li><a href="https://docs.kernel.org/filesystems/overlayfs.html">https://docs.kernel.org/filesystems/overlayfs.html</a></li>
  778. </ul>
  779. <p>overlayfs is effectively the successor to unionfs, unionfs-fuse, and
  780. aufs and is widely used by Linux container platforms such as Docker and
  781. Podman. It was developed and is maintained by the same developer who
  782. created FUSE.</p>
  783. <p>If your use case is layering a writable filesystem on top of read-only
  784. filesystems then you should look first to overlayfs. Its feature set
  785. however is very different from mergerfs and solve different problems.</p>
  786. <h2 id="raid0-jbod-span-drive-concatenation-striping">RAID0, JBOD, SPAN, drive concatenation, striping</h2>
  787. <ul>
  788. <li><a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0">RAID0</a></li>
  789. <li><a href="https://en.wikipedia.org/wiki/Non-RAID_drive_architectures#JBOD">JBOD</a></li>
  790. <li><a href="https://en.wikipedia.org/wiki/Non-RAID_drive_architectures#Concatenation_(SPAN,_BIG)">SPAN</a></li>
  791. <li><a href="https://en.wikipedia.org/wiki/Data_striping">striping</a></li>
  792. </ul>
  793. <p>These are block device technologies which in some form aggregate
  794. devices into what appears to be a singular device on which a
  795. traditional filesystem can be used. The filesystem has no
  796. understanding of the underlying block layout and should one of those
  797. underlying devices fail or be removed the filesystem will be missing
  798. that chunk which could contain critical information and the whole
  799. filesystem may become unrecoverable. Even if the data from the
  800. filesystem is recoverable it will take using specialized tooling to do
  801. so.</p>
  802. <p>In contrast, with mergerfs you can format devices as one normally
  803. would or take existing filesystems and then combine them in a pool to
  804. aggregate their storage. The failure of any one device will have no
  805. impact on the other devices. The downside to mergerfs' technique is
  806. the fact you don't actually have contiguous space as large as if you
  807. used those other technologies. Meaning you can't create a file greater
  808. than 1TB on a pool of 2 1TB filesystems.</p>
  809. <h2 id="unraid">UnRAID</h2>
  810. <ul>
  811. <li><a href="https://unraid.net">https://unraid.net</a></li>
  812. </ul>
  813. <p>UnRAID is a full OS and offers a (FUSE based?) filesystem which
  814. provides a union of filesystems like mergerfs but with the addition of
  815. live parity calculation and storage. Outside parity calculations
  816. mergerfs offers more features and due to the lack of real-time parity
  817. calculation can have higher peak performance. Some users also prefer
  818. an open source solution.</p>
  819. <p>For semi-static data mergerfs + <a href="http://www.snapraid.it">SnapRaid</a>
  820. provides a similar, but not real-time, solution.</p>
  821. <h2 id="zfs">ZFS</h2>
  822. <ul>
  823. <li><a href="https://en.wikipedia.org/wiki/ZFS">https://en.wikipedia.org/wiki/ZFS</a></li>
  824. </ul>
  825. <p>mergerfs is very different from ZFS. mergerfs is intended to provide
  826. flexible pooling of arbitrary filesystems (local or remote), of
  827. arbitrary sizes, and arbitrary filesystems. Particularly in <code>write
  828. once, read many</code> use cases such as bulk media storage. Where data
  829. integrity and backup is managed in other ways. In those use cases ZFS
  830. can introduce a number of costs and limitations as described
  831. <a href="http://louwrentius.com/the-hidden-cost-of-using-zfs-for-your-home-nas.html">here</a>,
  832. <a href="https://markmcb.com/2020/01/07/five-years-of-btrfs/">here</a>, and
  833. <a href="https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSWhyNoRealReshaping">here</a>.</p>
  834. <h2 id="stablebits-drivepool">StableBit's DrivePool</h2>
  835. <ul>
  836. <li><a href="https://stablebit.com">https://stablebit.com</a></li>
  837. </ul>
  838. <p>DrivePool works only on Windows so not as common an alternative as
  839. other Linux solutions. If you want to use Windows then DrivePool is a
  840. good option. Functionally the two projects work a bit
  841. differently. DrivePool always writes to the filesystem with the most
  842. free space and later rebalances. mergerfs does not currently offer
  843. rebalance but chooses a branch at file/directory create
  844. time. DrivePool's rebalancing can be done differently in any directory
  845. and has file pattern matching to further customize the
  846. behavior. mergerfs, not having rebalancing does not have these
  847. features, but similar features are planned for mergerfs v3. DrivePool
  848. has builtin file duplication which mergerfs does not natively support
  849. (but can be done via an external script.)</p>
  850. <p>There are a lot of misc differences between the two projects but most
  851. features in DrivePool can be replicated with external tools in
  852. combination with mergerfs.</p>
  853. <p>Additionally, DrivePool is a closed source commercial product vs
  854. mergerfs a ISC licensed open source project.</p>
  855. <h2 id="plan9-binds">Plan9 binds</h2>
  856. <ul>
  857. <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>
  858. </ul>
  859. <p>Plan9 has the native ability to bind multiple paths/filesystems
  860. together to create a setup similar to simplified union
  861. filesystem. Such bind mounts choose files in a "first found" in the
  862. order they are listed similar to mergerfs' <code>ff</code> policy. Similar, when
  863. creating a file it will be created on the first directory in the
  864. union.</p>
  865. <p>Plan 9 isn't a widely used OS so this comparison is mostly academic.</p>
  866. </article>
  867. </div>
  868. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  869. </div>
  870. <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  871. <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>
  872. Back to top
  873. </button>
  874. </main>
  875. <footer class="md-footer">
  876. <nav class="md-footer__inner md-grid" aria-label="Footer" >
  877. <a href="../known_issues_bugs/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Known Issues and Bugs">
  878. <div class="md-footer__button md-icon">
  879. <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>
  880. </div>
  881. <div class="md-footer__title">
  882. <span class="md-footer__direction">
  883. Previous
  884. </span>
  885. <div class="md-ellipsis">
  886. Known Issues and Bugs
  887. </div>
  888. </div>
  889. </a>
  890. <a href="../performance/" class="md-footer__link md-footer__link--next" aria-label="Next: Tweaking Performance">
  891. <div class="md-footer__title">
  892. <span class="md-footer__direction">
  893. Next
  894. </span>
  895. <div class="md-ellipsis">
  896. Tweaking Performance
  897. </div>
  898. </div>
  899. <div class="md-footer__button md-icon">
  900. <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>
  901. </div>
  902. </a>
  903. </nav>
  904. <div class="md-footer-meta md-typeset">
  905. <div class="md-footer-meta__inner md-grid">
  906. <div class="md-copyright">
  907. Made with
  908. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  909. Material for MkDocs
  910. </a>
  911. </div>
  912. </div>
  913. </div>
  914. </footer>
  915. </div>
  916. <div class="md-dialog" data-md-component="dialog">
  917. <div class="md-dialog__inner md-typeset"></div>
  918. </div>
  919. <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>
  920. <script src="../assets/javascripts/bundle.f1b6f286.min.js"></script>
  921. </body>
  922. </html>