dfuse 参考文档

用途:dfuse [OPTIONS] [mountpoint [pool container]]

选项:

-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 会在指定为第一个位置参数的挂载点目录中执行 DAOS POSIX 容器的用户空间挂载。此目录必须存在且用户必须能够访问,否则挂载将失败。或者,您也可以使用 -m--mountpoint= 选项指定挂载点目录,但此用法已废弃。

DAOS 池和容器可以通过多种不同的方式指定。请仅使用一种方式指定池和容器:

  • 您可以在命令行中使用 UUID 或标签,将 DAOS 存储池和容器明确指定为位置参数。这是使用 dfuse 挂载 POSIX 容器的最常见方法。
  • 您可以在命令行中使用 --pool--container 选项明确指定 DAOS 存储池和容器,并使用 UUID 或标签。此用法已被弃用,请改用位置参数。
  • 使用 --path 选项时,系统会从该文件系统路径加载 DAOS 命名空间属性,包括 DAOS 存储池和容器信息。
  • 不使用 --path 选项时,系统还会检查挂载点目录,并从中加载 DAOS 命名空间属性(如果有)。
  • 使用 -o 挂载选项字符串时,挂载选项字符串中的 pool=container= 键用于标识 DAOS 存储池和容器。
  • 如果未通过任何上述方法指定池和容器,dfuse 将使用运行 dfuse 的用户有权访问的所有池和 POSIX 容器的池和容器 UUID(而非标签)作为路径名组件,在挂载点下构建文件系统路径名。

    • 您可以遍历以这种方式挂载的 POSIX 容器的路径,以访问该容器的根目录,例如通过将目录更改为 /mountpoint/pool_uuid/cont_uuid/
    • 不过,不支持列出 /mountpoint/ 目录,并且不会显示已在此处挂载的池 UUID。
    • 同样,虽然用户可以将目录更改为 /mountpoint/pool_uuid/ 目录,但不支持列出该目录,并且不会显示在此目录中挂载的容器 UUID。
    • 运行 fusermount3 -u /mountpoint 将卸载以这种方式挂载的所有 POSIX 容器以及 /mountpoint/pool_uuid/ 目录。

线程和资源使用情况:

dfuse 有两种类型的线程:接受和处理来自内核的请求的 fuse 线程,以及完成异步读写操作的进度线程。

每个异步进度线程都使用一个 DAOS 事件队列来消耗额外的网络资源。由于所有元数据操作都是阻塞操作,因此 dfuse 中的并发级别受限于 Fuse 线程数量。

默认情况下,每个可用核心的线程总数为 1,以实现最大吞吐量。如果启用了超线程,则每个超线程核心使用一个线程。您可以通过以下两种方式进行修改:通过 numactl 或类似工具在 cpuset 中运行 dfuse 来减少可用核心数,或者使用 --thread-count--eq-count--singlethread 选项:

  • --thread-count 选项用于控制线程总数。
  • 在固定 --thread-count 的情况下提高 --eq-count 选项会相应地减少熔断器线程的数量。--eq-count 的默认值为 1
  • --singlethread 模式将使用一个线程处理熔断请求,另一个线程处理单个事件队列,总共两个线程。

如果 dfuse 在后台模式下运行(除非通过 mpirun 启动,否则默认是后台模式),则它将保持在前台,直到挂载到内核以允许适当的错误报告。

-o 选项可用于通过 fstab 或类似工具运行 dfuse,并接受标准的挂载选项。系统会将其视为以英文逗号分隔的键值对列表,并且 dfuse 将使用此字符串中的 pool=container= 键。

缓存功能默认处于开启状态。dfuse 挂载的缓存行为可以通过命令行选项进行控制。您可以通过容器属性按容器设置进一步的缓存控制。

  • 如果使用 --disable-caching 选项,则不会执行缓存,也不会使用容器属性。默认值为 --enable-caching
  • 如果使用 --disable-wb-cache,则系统会在写穿模式下执行整个挂载的写入操作,并且仍会使用容器属性。默认值为 --enable-wb-cache
  • 如果同时指定了 --disable-caching--enable-wb-cache,系统会忽略 --enable-wb-cache 选项,并且不会执行任何缓存操作。