ZFS-FUSE(8)

πŸ’– ZFS-FUSE ✨

okay bestie, gather round, because this is zfs-fuse(8) and it's literally the whole ZFS filesystem daemon situation. sit down, hydrate, and let's get into it 🫢


🌸 NAME 🌸

zfs-fuse β€” the ZFS filesystem daemon. that's it, that's the name, iconic πŸ’…


✨ SYNOPSIS ✨

zfs-fuse [--pidfile filename] [--no-daemon] [--no-kstat-mount]
         [--disable-block-cache] [--disable-page-cache]
         [--fuse-attr-timeout SECONDS] [--fuse-entry-timeout SECONDS]
         [--log-uberblocks] [--max-arc-size MB]
         [--fuse-mount-options OPT,OPT,OPT...] [--min-uberblock-txg MIN]
         [--stack-size=size] [--enable-xattr] [--help]

πŸ¦‹ DESCRIPTION πŸ¦‹

so this manual page is the quick lil' rundown of the zfs-fuse command, no cap.

zfs-fuse is a daemon that gives you ZFS filesystem support, and it does it via fuse. and like, normally? you don't even run this yourself β€” it gets invoked from the system boot scripts, like a responsible main character doing its job at 3am so you don't have to 😌


πŸŽ€ OPTIONS πŸŽ€

okay so this program follows the usual GNU command line syntax β€” long options start with two dashes (-). here's the summary of the options, bestie. for a complete description, go see the Info files (iykyk).

  • -h, --help β€” shows you a lil' summary of the options πŸ’–
  • -p filename, --pidfile filename β€” writes the daemon's PID to filename after it daemonizes. gets ignored if you passed --no-daemon, so don't come crying. and filename should be a fully-qualified path, periodt.
  • -n, --no-daemon β€” stays in the foreground, does not daemonize. main character stays on screen ✨
  • --no-kstat-mount β€” does not mount kstats in /zfs-kstat
  • --disable-block-cache β€” enables direct I/O for disk operations. this completely disables caching of reads and writes in the kernel block cache. also? it breaks mmap() in ZFS datasets too. so like, heads up πŸ’€
  • --disable-page-cache β€” disables the page cache for files living inside ZFS filesystems. not recommended bestie, it slows down I/O operations considerably 😭
  • -a SECONDS, --fuse-attr-timeout SECONDS β€” sets the timeout for caching FUSE attributes in the kernel. defaults to 0.0. higher values give you a 40% performance boost πŸ”₯
  • -e SECONDS, --fuse-entry-timeout SECONDS β€” sets the timeout for caching FUSE entries in the kernel. defaults to 0.0. higher values give a 10000% performance boost but cause file permission checking security issues πŸ‘€ so, y'know, tradeoffs
  • --log-uberblocks β€” logs uberblocks of any mounted filesystem to syslog
  • -m MB, --max-arc-size MB β€” forces the maximum ARC size (in megabytes). range: 16 to 16384.
  • -o OPT..., --fuse-mount-options OPT,OPT,OPT... β€” sets FUSE mount options for all filesystems. format: a comma-separated string of characters.
  • -u MIN, --min-uberblock-txg MIN β€” skips uberblocks with a TXG < MIN when mounting any fs
  • -v MB, --vdev-cache-size MB β€” adjusts the size of the vdev cache. default: 10
  • --zfs-prefetch-disable β€” disables the high level prefetch cache in zfs. this thing can eat up to 150 Mb of ram, maybe more πŸ“
  • --stack-size=size β€” limits the stack size of threads (in kb). default: no limit (8 Mb for linux)
  • -x, --enable-xattr β€” enables support for extended attributes. not generally recommended because it currently has a significant performance penalty for many small IOPS πŸ™ˆ
  • -h, --help β€” shows this usage summary. (yes, it's listed again. the help flag said "let me be in this list twice", and honestly? slay πŸ‘‘)

🌈 REMARKS ON PRECEDENCE 🌈

not me having to explain this, but: the parameters you pass on the command line take precedence over the ones supplied through /etc/zfs/zfsrc. so the command line is the loudest voice in the room, fr fr.


πŸ’€ BUGS/CAVEATS πŸ’€

  • the path to the configuration file (/etc/zfs/zfsrc) cannot at this time be configured. yeah. that's the vibe.
  • most existing packages suggest that settings can be set at the top of their init script. but these get frequently overridden by a (distribution specific) /etc/default/zfs-fuse file, if it exists. so if you want your option changes to actually take effect, be sure to look at these places, bestie. don't be out here editing one file and wondering why nothing changed 😭
  • /etc/zfs/zfsrc is going to be the recommended approach in the future. so, packagers, please refrain from passing commandline parameters within the initscript (except for --pid-file). we're all moving on to better things ✨

⭐ SEE ALSO ⭐

zfs (8), zpool (8), zdb (8), zstreamdump (8), /etc/zfs/zfsrc


🫢 AUTHOR 🫢

this manual page was written by Bryan Donlan bdonlan@gmail.com for the Debian(TM) system (but may be used by others). permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation, or the Common Development and Distribution License.

revised by Seth Heeren zfs-fuse@sehe.nl

on Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL. the text of the Common Development and Distribution Licence may be found at /usr/share/doc/zfs-fuse/copyright


Copyright Β© 2010 Bryan Donlan


and that's the whole page, bestie πŸ’… source: [FIXME: source], dated 2010-06-09 β€” yeah it's giving vintage, but the knowledge is timeless. go forth and mount responsibly 🌸✨