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 プールとコンテナは、いくつかの方法で指定できます。プールとコンテナを指定する方法は 1 つだけ使用してください。

  • DAOS プールとコンテナは、UUID またはラベルを使用して、コマンドラインで位置引数として明示的に指定できます。これは、dfuse を使用して POSIX コンテナをマウントする最も一般的な方法です。
  • DAOS プールとコンテナは、--pool オプションと --container オプションを使用して、UUID またはラベルでコマンドラインで明示的に指定できます。この使用方法は非推奨となり、位置引数の使用が推奨されています。
  • --path オプションを使用すると、DAOS 名前空間属性(DAOS プールとコンテナ情報を含む)がそのファイル システム パスから読み込まれます。
  • --path オプションが使用されていない場合、マウントポイント ディレクトリもチェックされ、DAOS Namespace 属性が存在する場合はそこから読み込まれます。
  • -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 スレッドと、非同期の読み取り/書き込みオペレーションを完了する進行状況スレッドの 2 種類のスレッドがあります。

各非同期進行状況スレッドは、1 つの DAOS イベントキューを使用して追加のネットワーク リソースを使用します。すべてのメタデータ オペレーションがブロックするため、dfuse の同時実行レベルは、融合スレッドの数によって制限されます。

デフォルトでは、最大スループットを実現するために、使用可能なコアごとに 1 つのスレッドが作成されます。ハイパースレッディングが有効になっている場合、ハイパースレッド コアごとに 1 つのスレッドが使用されます。これは、numactl などのツールを使用して cpuset で dfuse を実行するか、--thread-count--eq-count、または --singlethread オプションを使用して、使用可能なコア数を減らすという 2 つの方法で変更できます。

  • --thread-count オプションは、スレッドの合計数を制御します。
  • 固定の --thread-count--eq-count オプションを増やすと、それに応じてヒューズ スレッドの数は減ります。--eq-count のデフォルト値は 1 です。
  • --singlethread モードでは、1 つのスレッドがヒューズ リクエストの処理に使用され、2 つ目のスレッドが単一のイベントキューに使用されます。合計 2 つのスレッドが使用されます。

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 オプションは無視され、キャッシュは保存されません。