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 集區和容器。指定集區和容器時,只能使用下列其中一種方式:

  • 您可以在指令列上明確指定 DAOS 集區和容器,方法是使用 UUID 或標籤做為位置引數。這是使用 dfuse 掛接 POSIX 容器最常見的方式。
  • 您可以使用 UUID 或標籤,透過 --pool--container 選項,在指令列上明確指定 DAOS 集區和容器。建議改用位置引數,不要使用這項用法。
  • 使用 --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 執行緒數量的限制。

根據預設,每個可用核心的總執行緒數為一,可達到最大輸送量。如果啟用超執行緒,系統會為每個超執行緒核心使用一個執行緒。您可以透過兩種方式修改這項設定:透過 numactl 或類似工具在 cpuset 中執行 dfuse,減少可用核心數量;或是使用 --thread-count--eq-count--singlethread 選項:

  • --thread-count 選項可控制處理緒總數。
  • 在固定 --thread-count 的情況下增加 --eq-count 選項,會相應減少熔絲執行緒數量。--eq-count 的預設值為 1
  • --singlethread 模式會使用一個執行緒處理熔斷要求,並使用第二個執行緒處理單一事件佇列,總共兩個執行緒。

如果 dfuse 在背景模式下執行 (除非透過 mpirun 啟動,否則為預設模式),則會保持在前台,直到向核心註冊掛接為止,以便適當回報錯誤。

-o 選項可用於透過 fstab 或類似項目執行 dfuse,並接受標準掛接選項。這會視為以半形逗號分隔的 key=value 組合清單,dfuse 會使用這個字串中的 pool=container= 鍵。

快取功能預設為開啟。dfuse 掛接的快取行為可透過指令列選項控制。您也可以透過容器屬性,為每個容器設定進一步的快取控制項。

  • 如果使用 --disable-caching 選項,系統不會執行任何快取作業,也不會使用容器屬性。預設值為 --enable-caching
  • 如果使用 --disable-wb-cache,系統會以直寫模式執行整個掛接點的寫入作業,並繼續使用容器屬性。預設值為 --enable-wb-cache
  • 如果同時指定 --disable-caching--enable-wb-cache,系統會忽略 --enable-wb-cache 選項,且不會執行任何快取作業。