[{"data":1,"prerenderedAt":508},["ShallowReactive",2],{"navigation":3,"\u002Finstallation\u002Fzfs-pool":94,"\u002Finstallation\u002Fzfs-pool-surround":503},[4,16,38,56,70,80],{"title":5,"path":6,"stem":7,"children":8,"icon":15},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11],{"title":10,"path":6,"stem":7},"What is fsbackup?",{"title":12,"path":13,"stem":14},"Requirements & hardware","\u002Fgetting-started\u002Frequirements","1.getting-started\u002F2.requirements","i-lucide-rocket",{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":37},"Installation","i-lucide-package","\u002Finstallation","2.installation",[22,26,30,33],{"title":23,"path":24,"stem":25},"Quick start","\u002Finstallation\u002Fquickstart","2.installation\u002F1.quickstart",{"title":27,"path":28,"stem":29},"ZFS pool setup","\u002Finstallation\u002Fzfs-pool","2.installation\u002F2.zfs-pool",{"title":17,"path":31,"stem":32},"\u002Finstallation\u002Fbare-metal","2.installation\u002F3.bare-metal",{"title":34,"path":35,"stem":36},"Adding remote hosts","\u002Finstallation\u002Fadding-hosts","2.installation\u002F4.adding-hosts",false,{"title":39,"icon":40,"path":41,"stem":42,"children":43,"page":37},"Configuration","i-lucide-sliders","\u002Fconfiguration","3.configuration",[44,48,52],{"title":45,"path":46,"stem":47},"fsbackup.conf","\u002Fconfiguration\u002Ffsbackup-conf","3.configuration\u002F1.fsbackup-conf",{"title":49,"path":50,"stem":51},"targets.yml","\u002Fconfiguration\u002Ftargets","3.configuration\u002F2.targets",{"title":53,"path":54,"stem":55},"Scheduling","\u002Fconfiguration\u002Fscheduling","3.configuration\u002F3.scheduling",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":37},"Usage","i-lucide-play","\u002Fusage","4.usage",[62,66],{"title":63,"path":64,"stem":65},"Web UI","\u002Fusage\u002Fweb-ui","4.usage\u002F1.web-ui",{"title":67,"path":68,"stem":69},"Running jobs manually","\u002Fusage\u002Frunning-jobs","4.usage\u002F2.running-jobs",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":37},"Restore","i-lucide-history","\u002Frestore","5.restore",[76],{"title":77,"path":78,"stem":79},"Restoring data","\u002Frestore\u002Frestore","5.restore\u002F1.restore",{"title":81,"icon":82,"path":83,"stem":84,"children":85,"page":37},"Reference","i-lucide-book-open","\u002Freference","6.reference",[86,90],{"title":87,"path":88,"stem":89},"Script reference","\u002Freference\u002Fscripts","6.reference\u002F1.scripts",{"title":91,"path":92,"stem":93},"Prometheus metrics","\u002Freference\u002Fmetrics","6.reference\u002F2.metrics",{"id":95,"title":27,"body":96,"description":496,"extension":497,"links":498,"meta":499,"navigation":500,"path":28,"seo":501,"stem":29,"__hash__":502},"docs\u002F2.installation\u002F2.zfs-pool.md",{"type":97,"value":98,"toc":482},"minimark",[99,103,108,113,116,164,183,187,190,214,218,221,253,257,274,281,285,315,322,326,331,335,346,384,387,391,394,423,434,438,453,456,472,478],[100,101,102],"p",{},"fsbackup v2.0 stores all snapshots as ZFS datasets. This page covers creating and preparing the ZFS pool before running the installer.",[104,105,107],"h2",{"id":106},"pool-topology","Pool topology",[109,110,112],"h3",{"id":111},"mirrored-pool-recommended-for-2-disks","Mirrored pool (recommended for 2 disks)",[100,114,115],{},"A mirrored vdev keeps both disks in sync at all times. A single disk failure is fully survivable — replace the failed disk and ZFS resilvers automatically.",[117,118,123],"pre",{"className":119,"code":120,"language":121,"meta":122,"style":122},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo zpool create -o ashift=12 backup mirror \u002Fdev\u002Fsdc \u002Fdev\u002Fsdf\n","bash","",[124,125,126],"code",{"__ignoreMap":122},[127,128,131,135,139,142,145,148,152,155,158,161],"span",{"class":129,"line":130},"line",1,[127,132,134],{"class":133},"sBMFI","sudo",[127,136,138],{"class":137},"sfazB"," zpool",[127,140,141],{"class":137}," create",[127,143,144],{"class":137}," -o",[127,146,147],{"class":137}," ashift=",[127,149,151],{"class":150},"sbssI","12",[127,153,154],{"class":137}," backup",[127,156,157],{"class":137}," mirror",[127,159,160],{"class":137}," \u002Fdev\u002Fsdc",[127,162,163],{"class":137}," \u002Fdev\u002Fsdf\n",[100,165,166,167,170,171,174,175,178,179,182],{},"Replace ",[124,168,169],{},"\u002Fdev\u002Fsdc"," and ",[124,172,173],{},"\u002Fdev\u002Fsdf"," with your actual disk device paths. Use ",[124,176,177],{},"lsblk"," or ",[124,180,181],{},"ls -l \u002Fdev\u002Fdisk\u002Fby-id\u002F"," to identify them.",[109,184,186],{"id":185},"single-disk","Single disk",[100,188,189],{},"If you only have one disk, create a non-redundant pool. There is no protection against disk failure.",[117,191,193],{"className":119,"code":192,"language":121,"meta":122,"style":122},"sudo zpool create -o ashift=12 backup \u002Fdev\u002Fsdc\n",[124,194,195],{"__ignoreMap":122},[127,196,197,199,201,203,205,207,209,211],{"class":129,"line":130},[127,198,134],{"class":133},[127,200,138],{"class":137},[127,202,141],{"class":137},[127,204,144],{"class":137},[127,206,147],{"class":137},[127,208,151],{"class":150},[127,210,154],{"class":137},[127,212,213],{"class":137}," \u002Fdev\u002Fsdc\n",[109,215,217],{"id":216},"raidz-3-disks","RAIDZ (3+ disks)",[100,219,220],{},"For three or more disks, RAIDZ1 provides single-disk fault tolerance with more capacity than a mirror:",[117,222,224],{"className":119,"code":223,"language":121,"meta":122,"style":122},"sudo zpool create -o ashift=12 backup raidz \u002Fdev\u002Fsdc \u002Fdev\u002Fsdf \u002Fdev\u002Fsdg\n",[124,225,226],{"__ignoreMap":122},[127,227,228,230,232,234,236,238,240,242,245,247,250],{"class":129,"line":130},[127,229,134],{"class":133},[127,231,138],{"class":137},[127,233,141],{"class":137},[127,235,144],{"class":137},[127,237,147],{"class":137},[127,239,151],{"class":150},[127,241,154],{"class":137},[127,243,244],{"class":137}," raidz",[127,246,160],{"class":137},[127,248,249],{"class":137}," \u002Fdev\u002Fsdf",[127,251,252],{"class":137}," \u002Fdev\u002Fsdg\n",[104,254,256],{"id":255},"create-the-snapshots-dataset","Create the snapshots dataset",[117,258,260],{"className":119,"code":259,"language":121,"meta":122,"style":122},"sudo zfs create backup\u002Fsnapshots\n",[124,261,262],{"__ignoreMap":122},[127,263,264,266,269,271],{"class":129,"line":130},[127,265,134],{"class":133},[127,267,268],{"class":137}," zfs",[127,270,141],{"class":137},[127,272,273],{"class":137}," backup\u002Fsnapshots\n",[100,275,276,277,280],{},"fsbackup stores all per-target datasets under ",[124,278,279],{},"backup\u002Fsnapshots\u002F\u003Cclass>\u002F\u003Ctarget>",".",[104,282,284],{"id":283},"verify-the-pool","Verify the pool",[117,286,288],{"className":119,"code":287,"language":121,"meta":122,"style":122},"zpool status backup\nzfs list -r backup\n",[124,289,290,301],{"__ignoreMap":122},[127,291,292,295,298],{"class":129,"line":130},[127,293,294],{"class":133},"zpool",[127,296,297],{"class":137}," status",[127,299,300],{"class":137}," backup\n",[127,302,304,307,310,313],{"class":129,"line":303},2,[127,305,306],{"class":133},"zfs",[127,308,309],{"class":137}," list",[127,311,312],{"class":137}," -r",[127,314,300],{"class":137},[100,316,317,318,321],{},"You should see the pool healthy and the ",[124,319,320],{},"backup\u002Fsnapshots"," dataset listed.",[104,323,325],{"id":324},"ashift12","ashift=12",[100,327,328,330],{},[124,329,325],{}," sets the pool's sector size to 4 KB, which is correct for virtually all modern drives (including drives that report 512-byte sectors but use 4K internally — common on WD Red, Seagate IronWolf, etc.). This has no downside and avoids significant write amplification on misaligned pools.",[104,332,334],{"id":333},"zfs-delegation","ZFS delegation",[100,336,337,338,341,342,345],{},"The installer runs ",[124,339,340],{},"zfs allow"," to grant the ",[124,343,344],{},"fsbackup"," user permission to create, snapshot, and destroy datasets without root:",[117,347,349],{"className":119,"code":348,"language":121,"meta":122,"style":122},"sudo zfs allow fsbackup create,snapshot,mount,destroy backup\u002Fsnapshots\nsudo chown -R fsbackup:fsbackup \u002Fbackup\u002Fsnapshots\n",[124,350,351,368],{"__ignoreMap":122},[127,352,353,355,357,360,363,366],{"class":129,"line":130},[127,354,134],{"class":133},[127,356,268],{"class":137},[127,358,359],{"class":137}," allow",[127,361,362],{"class":137}," fsbackup",[127,364,365],{"class":137}," create,snapshot,mount,destroy",[127,367,273],{"class":137},[127,369,370,372,375,378,381],{"class":129,"line":303},[127,371,134],{"class":133},[127,373,374],{"class":137}," chown",[127,376,377],{"class":137}," -R",[127,379,380],{"class":137}," fsbackup:fsbackup",[127,382,383],{"class":137}," \u002Fbackup\u002Fsnapshots\n",[100,385,386],{},"If you create the pool after running the installer, run these commands manually.",[104,388,390],{"id":389},"verifying-zfs-block-devices","Verifying ZFS block devices",[100,392,393],{},"Use disk-by-id paths to identify disks reliably:",[117,395,397],{"className":119,"code":396,"language":121,"meta":122,"style":122},"ls -l \u002Fdev\u002Fdisk\u002Fby-id\u002F | grep -v part\n",[124,398,399],{"__ignoreMap":122},[127,400,401,404,407,410,414,417,420],{"class":129,"line":130},[127,402,403],{"class":133},"ls",[127,405,406],{"class":137}," -l",[127,408,409],{"class":137}," \u002Fdev\u002Fdisk\u002Fby-id\u002F",[127,411,413],{"class":412},"sMK4o"," |",[127,415,416],{"class":133}," grep",[127,418,419],{"class":137}," -v",[127,421,422],{"class":137}," part\n",[100,424,425,426,429,430,433],{},"Prefer ",[124,427,428],{},"\u002Fdev\u002Fdisk\u002Fby-id\u002F..."," paths over ",[124,431,432],{},"\u002Fdev\u002FsdX"," when creating pools — device letters can change across reboots.",[104,435,437],{"id":436},"checking-pool-health","Checking pool health",[117,439,441],{"className":119,"code":440,"language":121,"meta":122,"style":122},"zpool status -v backup\n",[124,442,443],{"__ignoreMap":122},[127,444,445,447,449,451],{"class":129,"line":130},[127,446,294],{"class":133},[127,448,297],{"class":137},[127,450,419],{"class":137},[127,452,300],{"class":137},[100,454,455],{},"Run a manual scrub to verify data integrity:",[117,457,459],{"className":119,"code":458,"language":121,"meta":122,"style":122},"sudo zpool scrub backup\n",[124,460,461],{"__ignoreMap":122},[127,462,463,465,467,470],{"class":129,"line":130},[127,464,134],{"class":133},[127,466,138],{"class":137},[127,468,469],{"class":137}," scrub",[127,471,300],{"class":137},[100,473,474,475,280],{},"fsbackup schedules an automatic monthly scrub via ",[124,476,477],{},"fsbackup-scrub.timer",[479,480,481],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":122,"searchDepth":130,"depth":303,"links":483},[484,490,491,492,493,494,495],{"id":106,"depth":303,"text":107,"children":485},[486,488,489],{"id":111,"depth":487,"text":112},3,{"id":185,"depth":487,"text":186},{"id":216,"depth":487,"text":217},{"id":255,"depth":303,"text":256},{"id":283,"depth":303,"text":284},{"id":324,"depth":303,"text":325},{"id":333,"depth":303,"text":334},{"id":389,"depth":303,"text":390},{"id":436,"depth":303,"text":437},"How to create and configure a ZFS pool for fsbackup snapshot storage.","md",null,{},true,{"title":27,"description":496},"t5tUZvc1W-IV5Msa52bAkWMZ-y0lfMTWyPUSoqJBCho",[504,506],{"title":23,"path":24,"stem":25,"description":505,"children":-1},"Get fsbackup running in under 20 minutes with the automated installer.",{"title":17,"path":31,"stem":32,"description":507,"children":-1},"Full bare-metal installation of fsbackup using fs-install.sh — user, ZFS permissions, systemd units, and web UI.",1775923865773]