Referência de dfuse

uso: dfuse [OPTIONS] [mountpoint [pool container]]

Opções:

-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

O dfuse realiza uma montagem de espaço do usuário de um contêiner POSIX do DAOS no diretório de ponto de montagem especificado como o primeiro argumento posicional. Esse diretório precisa existir e ser acessível ao usuário. Caso contrário, a montagem vai falhar. Como alternativa, o diretório de ponto de montagem também pode ser especificado com a opção -m ou --mountpoint=, mas esse uso foi descontinuado.

O contêiner e o pool do DAOS podem ser especificados de várias maneiras. Só uma maneira de especificar o pool e o contêiner deve ser usada:

  • O pool e o contêiner do DAOS podem ser especificados explicitamente na linha de comando como argumentos posicionais, usando UUIDs ou identificadores. Essa é a maneira mais comum de usar o dfuse para montar um contêiner POSIX.
  • O pool e o contêiner do DAOS podem ser especificados explicitamente na linha de comando usando as opções --pool e --container, com UUIDs ou identificadores. Esse uso foi descontinuado para dar preferência aos argumentos posicionais.
  • Quando a opção --path é usada, os atributos do namespace DAOS são carregados desse caminho do sistema de arquivos, incluindo as informações do pool e do contêiner do DAOS.
  • Quando a opção --path não é usada, o diretório de ponto de montagem também é verificado, e os atributos do namespace DAOS são carregados a partir dele, se presentes.
  • Ao usar a string de opção de montagem -o, as chaves pool= e container= na string de opção de montagem identificam o pool e o contêiner do DAOS.
  • Quando o pool e o contêiner não são especificados por nenhum desses métodos, o dfuse constrói caminhos de arquivos do sistema de arquivos no ponto de montagem usando os UUIDs de pool e contêiner (não rótulos) de todos os pools e contêineres POSIX a que o usuário que executa o dfuse tem acesso como componentes de caminho.

    • Um caminho para um contêiner POSIX montado dessa maneira pode ser percorrido para acessar a raiz desse contêiner, por exemplo, mudando o diretório para /mountpoint/pool_uuid/cont_uuid/.
    • No entanto, a listagem do diretório /mountpoint/ não é compatível e não mostra os UUIDs do pool que são montados nele.
    • Da mesma forma, embora o usuário possa mudar o diretório para um diretório /mountpoint/pool_uuid/, a listagem desse diretório não é compatível e não mostra os UUIDs do contêiner que são montados nele.
    • A execução de fusermount3 -u /mountpoint desmontará todos os contêineres POSIX que foram montados dessa maneira, bem como os diretórios /mountpoint/pool_uuid/.

Uso de recursos e linhas de execução:

O dfuse tem dois tipos de linhas de execução: linhas de execução de fusão que aceitam e processam solicitações do kernel e linhas de execução de progresso que concluem operações de leitura/gravação assincronas.

Cada linha de execução de progresso assíncrona usa uma fila de eventos do DAOS para consumir mais recursos de rede. Como todas as operações de metadados estão bloqueadas, o nível de simultaneidade no dfuse é limitado pelo número de linhas de execução do fusível.

Por padrão, a contagem total de linhas de execução é de uma por núcleo disponível para permitir a taxa de transferência máxima. Se o hyperthreading estiver ativado, uma linha de execução por núcleo de hyperthread será usada. Isso pode ser modificado de duas maneiras: reduzindo o número de núcleos disponíveis executando o dfuse em um cpuset usando numactl ou ferramentas semelhantes ou usando as opções --thread-count, --eq-count ou --singlethread:

  • A opção --thread-count controla o número total de linhas de execução.
  • Aumentar a opção --eq-count em um --thread-count fixo reduz o número de linhas de execução de fusíveis. O valor padrão de --eq-count é 1.
  • O modo --singlethread vai usar uma linha de execução para processar solicitações de fusível e uma segunda linha de execução para uma única fila de eventos, para um total de duas linhas de execução.

Se o dfuse estiver em execução no modo em segundo plano (padrão, a menos que seja iniciado pelo mpirun), ele vai permanecer em primeiro plano até que a montagem seja registrada no kernel para permitir o relatório de erros adequado.

A opção -o pode ser usada para executar o dfuse por fstab ou algo semelhante e aceita opções de montagem padrão. Isso será tratado como uma lista separada por vírgulas de pares de chave-valor, e o dfuse vai usar as chaves pool= e container= dessa string.

O armazenamento em cache fica ativado por padrão. O comportamento de armazenamento em cache de uma montagem dfuse pode ser controlado por opções de linha de comando. Outros controles de armazenamento em cache podem ser definidos por contêiner usando os atributos do contêiner.

  • Se a opção --disable-caching for usada, nenhum armazenamento em cache será realizado e os atributos do contêiner não serão usados. O padrão é --enable-caching.
  • Se --disable-wb-cache for usado, as operações de gravação para todo o montar serão realizadas no modo de gravação em massa, e os atributos do contêiner ainda serão usados. O padrão é --enable-wb-cache.
  • Se --disable-caching e --enable-wb-cache forem especificados, a opção --enable-wb-cache será ignorada e nenhum armazenamento em cache será realizado.