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.

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