Documentation de référence sur dfuse

Utilisation : 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 effectue une installation dans l'espace utilisateur d'un conteneur POSIX DAOS au niveau du répertoire de point d'installation spécifié comme premier argument de position. Ce répertoire doit exister et être accessible à l'utilisateur, sinon l'installation échouera. Vous pouvez également spécifier le répertoire de point d'installation avec l'option -m ou --mountpoint=, mais cette utilisation est obsolète.

Le pool et le conteneur DAOS peuvent être spécifiés de différentes manières. Vous ne devez utiliser qu'une seule méthode pour spécifier le pool et le conteneur:

  • Le pool et le conteneur DAOS peuvent être spécifiés explicitement sur la ligne de commande en tant qu'arguments de position, à l'aide d'UUID ou de libellés. Il s'agit de la méthode la plus courante pour utiliser dfuse pour installer un conteneur POSIX.
  • Le pool et le conteneur DAOS peuvent être spécifiés explicitement sur la ligne de commande à l'aide des options --pool et --container, avec des UUID ou des libellés. Cette utilisation est obsolète et remplacée par l'utilisation d'arguments positionnels.
  • Lorsque l'option --path est utilisée, les attributs d'espace de noms DAOS sont chargés à partir de ce chemin d'accès au système de fichiers, y compris les informations sur le pool et le conteneur DAOS.
  • Lorsque l'option --path n'est pas utilisée, le répertoire du point d'installation est également vérifié et les attributs d'espace de noms DAOS sont chargés à partir de là, le cas échéant.
  • Lorsque vous utilisez la chaîne d'options de montage -o, les clés pool= et container= de la chaîne d'options de montage identifient le pool et le conteneur DAOS.
  • Lorsque le pool et le conteneur ne sont pas spécifiés par l'une de ces méthodes, dfuse construit des chemins d'accès au système de fichiers sous le point d'installation à l'aide des UUID (et non des libellés) du pool et du conteneur de tous les pools et conteneurs POSIX auxquels l'utilisateur exécutant dfuse a accès en tant que composants de chemin d'accès.

    • Un chemin d'accès à un conteneur POSIX installé de cette manière peut être parcouru pour accéder à la racine de ce conteneur, par exemple en remplaçant le répertoire par /mountpoint/pool_uuid/cont_uuid/.
    • Toutefois, la liste du répertoire /mountpoint/ n'est pas prise en charge et n'affiche pas les UUID de pool qui y sont installés.
    • De même, bien que l'utilisateur puisse remplacer un répertoire par un répertoire /mountpoint/pool_uuid/, la liste de ce répertoire n'est pas prise en charge et n'affiche pas les UUID de conteneur qui y sont installés.
    • L'exécution de fusermount3 -u /mountpoint désinstalle tous les conteneurs POSIX qui ont été installés de cette manière, ainsi que les répertoires /mountpoint/pool_uuid/.

Multithreading et utilisation des ressources:

dfuse comporte deux types de threads: les threads fuse qui acceptent et traitent les requêtes du noyau, et les threads de progression qui effectuent des opérations de lecture/écriture asynchrones.

Chaque thread de progression asynchrone utilise une file d'événements DAOS pour consommer des ressources réseau supplémentaires. Comme toutes les opérations de métadonnées sont bloquantes, le niveau de simultanéité dans dfuse est limité par le nombre de threads de fusible.

Par défaut, le nombre total de threads est de un par cœur disponible pour permettre une bande passante maximale. Si l'Hyper-Threading est activé, un thread par cœur Hyper-Threading est utilisé. Vous pouvez modifier ce paramètre de deux manières: en réduisant le nombre de cœurs disponibles en exécutant dfuse dans un cpuset via numactl ou des outils similaires, ou en utilisant les options --thread-count, --eq-count ou --singlethread:

  • L'option --thread-count contrôle le nombre total de threads.
  • Augmenter l'option --eq-count à un --thread-count fixe réduit le nombre de threads de fusible en conséquence. La valeur par défaut de --eq-count est 1.
  • Le mode --singlethread utilise un thread pour gérer les requêtes de fusible et un deuxième thread pour une seule file d'événements, soit un total de deux threads.

Si dfuse s'exécute en mode arrière-plan (valeur par défaut, sauf si lancé via mpirun), il reste au premier plan jusqu'à ce que le montage soit enregistré auprès du noyau pour permettre un signalement d'erreur approprié.

L'option -o peut être utilisée pour exécuter dfuse via fstab ou un outil similaire, et accepte les options de montage standards. Il sera traité comme une liste de paires clé=valeur séparées par une virgule, et dfuse utilisera les clés pool= et container= de cette chaîne.

La mise en cache est activée par défaut. Le comportement de mise en cache d'un montage dfuse peut être contrôlé par des options de ligne de commande. D'autres commandes de mise en cache peuvent être définies par conteneur via les attributs de conteneur.

  • Si l'option --disable-caching est utilisée, aucune mise en cache n'est effectuée et les attributs du conteneur ne sont pas utilisés. La valeur par défaut est --enable-caching.
  • Si --disable-wb-cache est utilisé, les opérations d'écriture pour l'ensemble du montage sont effectuées en mode write-through, et les attributs du conteneur sont toujours utilisés. La valeur par défaut est --enable-wb-cache.
  • Si --disable-caching et --enable-wb-cache sont tous deux spécifiés, l'option --enable-wb-cache est ignorée et aucune mise en cache n'est effectuée.