usage: dfuse [OPTIONS] [mountpoint [pool container]]
Options:
-m --mountpoint=<path> Mount point to use (deprecated, use positional argument)
--pool=name pool UUID/label
--container=name container UUID/label
--path=<path> Path to load UNS pool/container data
--sys-name=STR DAOS system name context for servers
-S --singlethread Single threaded
-t --thread-count=count Total number of threads to use
-e --eq-count=count Number of event queues to use
-f --foreground Run in foreground
--enable-caching Enable all caching (default)
--enable-wb-cache Use write-back cache rather than write-through (default)
--disable-caching Disable all caching
--disable-wb-cache Use write-through rather than write-back cache
-o options mount style options string
--multi-user Run dfuse in multi user mode
-h --help Show this help
-v --version Show version
dfuse performs a user space mount of a DAOS POSIX container at the mountpoint
directory that is specified as the first positional argument. This directory
has to exist and has to be accessible to the user, or the mount will fail.
Alternatively, the mountpoint directory can also be specified with the -m
or
--mountpoint=
option but this usage is deprecated.
The DAOS pool and container can be specified in several different ways. Only one way of specifying the pool and container should be used:
- The DAOS pool and container can be explicitly specified on the command line as positional arguments, using either UUIDs or labels. This is the most common way to use dfuse to mount a POSIX container.
- The DAOS pool and container can be explicitly specified on the command line
using the
--pool
and--container
options, with either UUIDs or labels. This usage is deprecated in favor of using positional arguments. - When the
--path
option is used, DAOS namespace attributes are loaded from that filesystem path, including the DAOS pool and container information. - When the
--path
option is not used, then the mountpoint directory will also be checked and DAOS namespace attributes will be loaded from there if present. - When using the
-o
mount option string,pool=
andcontainer=
keys in the mount option string identify the DAOS pool and container. When the pool and container are not specified through any of these methods, dfuse will construct filesystem pathnames under the mountpoint by using the pool and container UUIDs (not labels) of all pools and POSIX containers to which the user running dfuse has access as pathname components.
- A path to a POSIX container that is mounted this way can be traversed to
access the root of that container, for example by changing directory to
/mountpoint/pool_uuid/cont_uuid/
. - However, listing the /mountpoint/ directory is not supported and will not show the pool UUIDs that are mounted there.
- Similarly, while the user can change directory into a
/mountpoint/pool_uuid/
directory, listing that directory is not supported and will not show the container UUIDs that are mounted there. - Running
fusermount3 -u /mountpoint
will unmount all POSIX containers that have been mounted this way, as well as the/mountpoint/pool_uuid/
directories.
- A path to a POSIX container that is mounted this way can be traversed to
access the root of that container, for example by changing directory to
Threading and resource usage:
dfuse has two types of threads: fuse threads which accept and process requests from the kernel, and progress threads which complete asynchronous read/write operations.
Each asynchronous progress thread uses one DAOS event queue to consume additional network resources. As all metadata operations are blocking, the level of concurrency in dfuse is limited by the number of fuse threads.
By default, the total thread count is one per available core to allow maximum
throughput. If hyperthreading is enabled, then one thread per hyperthread core
is used. This can be modified in two ways: Reducing the number of available
cores by running dfuse in a cpuset via numactl
or similar tools,
or by using the --thread-count
, --eq-count
or --singlethread
options:
- The
--thread-count
option controls the total number of threads. - Increasing the
--eq-count
option at a fixed--thread-count
will reduce the number of fuse threads accordingly. The default value for--eq-count
is1
. - The
--singlethread
mode will use one thread for handling fuse requests and a second thread for a single event queue, for a total of two threads.
If dfuse is running in background mode (the default unless launched via mpirun) then it will stay in the foreground until the mount is registered with the kernel to allow appropriate error reporting.
The -o
option can be used to run dfuse via fstab or similar and accepts
standard mount options. This will be treated as a comma separated list of
key=value pairs, and dfuse will use pool=
and container=
keys from this
string.
Caching is on by default. The caching behavior for a dfuse mount can be controlled by command line options. Further caching controls can be set on a per-container basis through container attributes.
- If the
--disable-caching
option is used then no caching will be performed, and the container attributes are not used. The default is--enable-caching
. - If
--disable-wb-cache
is used then the write operations for the whole mount are performed in write-through mode, and the container attributes are still used. The default is--enable-wb-cache
. - If
--disable-caching
and--enable-wb-cache
are both specified, the--enable-wb-cache
option is ignored and no caching is performed.