Cloud Storage FUSE

Esta página oferece uma visão geral do Cloud Storage FUSE, um adaptador FUSE que permite montar e acessar buckets do Cloud Storage como sistemas de arquivos locais para que os aplicativos possam ler e gravar objetos no seu bucket usando a semântica padrão de sistemas de arquivos. O Cloud Storage FUSE é um produto de código aberto compatível com o Google.

Consulte a documentação a seguir para instruções sobre como usar o Cloud Storage FUSE:

Esta documentação sempre reflete a versão mais recente do Cloud Storage FUSE. Para detalhes sobre a versão mais recente, consulte Versões do Cloud Storage FUSE no GitHub.

Como o Cloud Storage FUSE funciona

O Cloud Storage FUSE usa as APIs do FUSE e do Cloud Storage para expor buckets de maneira transparente como pastas montadas localmente no sistema de arquivos.

O Cloud Storage FUSE transforma nomes de armazenamento de objetos em um sistema de arquivos diretórios, interpretando o caractere "/" nos nomes de objetos como um separador de diretório, de maneira que objetos com o mesmo prefixo comum sejam tratados como arquivos do mesmo diretório. Os aplicativos podem interagir com o bucket montado como um sistema de arquivos, permitindo o armazenamento praticamente ilimitado de arquivos na nuvem. O Cloud Storage FUSE pode ser executado de qualquer lugar com conectividade ao Cloud Storage, incluindo o Google Kubernetes Engine, VMs do Compute Engine ou sistemas no local.

O Cloud Storage FUSE é ideal para casos de uso em que o Cloud Storage tenha as características corretas de escalonabilidade e desempenho para um aplicativo que requer uma semântica de sistema de arquivos. Por exemplo, o Cloud Storage FUSE é útil para projetos de machine learning (ML) porque oferece uma maneira de armazenar dados, modelos, pontos de controle e registros diretamente no Cloud Storage. Para mais informações, consulte Cloud Storage FUSE para cargas de trabalho de ML.

O Cloud Storage FUSE é integrado a outros serviços do Google Cloud. Por exemplo, o driver CSI do Cloud Storage FUSE permite usar a API Google Kubernetes Engine (GKE) para consumir buckets como volumes. Assim, é possível ler e gravar no Cloud Storage dentro dos pods do Kubernetes. Para mais informações sobre outras integrações, consulte Integrações.

Limitações

Embora o Cloud Storage FUSE tenha uma interface de sistema de arquivos, ele não é como um sistema de arquivos NFS ou CIFS no back-end. Além disso, o Cloud Storage FUSE não é compatível com POSIX. Para um produto do sistema de arquivos POSIX no Google Cloud, consulte Filestore.

Ao usar o Cloud Storage FUSE, esteja ciente das limitações e da semântica, que são diferentes dos sistemas de arquivos POSIX. O Cloud Storage FUSE só deve ser usado dentro das capacidades dele.

Limitações e diferenças dos sistemas de arquivos POSIX

A lista a seguir descreve as limitações do Cloud Storage FUSE:

  • Metadados: o Cloud Storage FUSE não transfere metadados de objetos ao fazer upload de arquivos para o Cloud Storage, exceto destinos de mtime e links simbólicos. Isso significa que não é possível definir metadados de objetos ao fazer upload de arquivos usando o Cloud Storage FUSE. Se você precisar preservar metadados de objetos, faça upload de arquivos usando a Google Cloud CLI, a API JSON ou o Console do Google Cloud.
  • Simultaneidade: o Cloud Storage FUSE não oferece controle de simultaneidade para várias gravações no mesmo arquivo. Quando várias gravações tentam substituir um arquivo, a última gravação vence e todas as anteriores são perdidas. Não há mesclagem, controle de versões ou notificação do usuário para a substituição subsequente.
  • Vinculação: o Cloud Storage FUSE não é compatível com links físicos.
  • Bloqueio e patch de arquivos: o Cloud Storage FUSE não oferece suporte a bloqueios ou patches de arquivos. Dessa forma, não é preciso armazenar repositórios de sistema de controle de versões nos pontos de montagem do Cloud Storage FUSE, já que os sistemas de controle de versões dependem do bloqueio e da aplicação de patches. Além disso, não use o Cloud Storage FUSE como substituto do arquivador.
  • Semântica: a semântica do Cloud Storage FUSE é diferente da semântica de um sistema de arquivos tradicional. Por exemplo, metadados como o último horário de acesso não são compatíveis, e algumas operações de metadados não são atômicas, como a renomeação de diretórios. Para ver uma lista das diferenças entre a semântica do Cloud Storage FUSE e a semântica tradicional do sistema de arquivos, consulte Semântica na documentação do GitHub do Cloud Storage FUSE.
  • Cargas de trabalho que fazem patches de arquivos (ou substituições no local): o Cloud Storage FUSE só grava objetos inteiros por vez no Cloud Storage e não fornece um mecanismo para a aplicação de patches. Se você tentar corrigir um arquivo, o Cloud Storage FUSE fará um novo upload do arquivo inteiro. A única exceção a esse comportamento é que você poderá anexar conteúdos ao final de um arquivo com 2 MB ou mais, em que o Cloud Storage FUSE fará apenas o upload do conteúdo anexado.
  • Acesso: a autorização para arquivos é definida pelas permissões do Cloud Storage. O controle de acesso no estilo POSIX não funciona.
  • Desempenho: o Cloud Storage FUSE tem uma latência muito maior do que um sistema de arquivos local. Por isso, não pode ser usado como back-end para armazenar um banco de dados. A capacidade de processamento pode ser reduzida ao ler ou gravar um arquivo pequeno por vez. Usar arquivos maiores ou transferir vários arquivos por vez ajuda a aumentar a capacidade.
  • Disponibilidade: às vezes, erros temporários podem ocorrer quando você usa o Cloud Storage FUSE para acessar o Cloud Storage. É recomendável repetir as operações com falha usando estratégias de repetição.
  • Controle de versão de objeto: o Cloud Storage FUSE não aceita formalmente o uso com buckets que tenham o controle de versões de objeto ativado. A tentativa de usar o Cloud Storage FUSE com buckets que têm o controle de versões de objetos ativado pode produzir um comportamento imprevisível.
  • Transcodificação de arquivos: objetos com content-encoding: gzip nos metadados. Esses objetos em um diretório ativado pelo Cloud Storage FUSE não passam por transcodificação descompressiva. Em vez disso, o objeto permanece compactado da mesma maneira que é armazenado no bucket.
    Por exemplo, um arquivo de 1.000 bytes, enviado para um bucket usando o comando gcloud storage cp com a sinalização --gzip-local, pode se tornar 60 bytes (o tamanho compactado real depende do conteúdo e da implementação gzip usada pela CLI gcloud) como um objeto do Cloud Storage. Se o bucket for ativado usando o gcsfuse e o arquivo correspondente for listado ou lido no diretório de ativação, o tamanho dele será retornado como 60 bytes e o conteúdo será uma versão compactada dos 1.000 bytes originais. conteúdo.
    Isso é diferente de um download que usa gcloud storage cp gs://bucket/path /local/path, que sofre transcodificação descompressiva: no comando gcloud, o conteúdo é descompactado automaticamente durante o download, e a conteúdo original e descompactado é veiculado.
    Observação: tentar usar o Cloud Storage FUSE para editar ou modificar objetos com content-encoding: gzip pode gerar um comportamento imprevisível. Isso ocorre porque o Cloud Storage FUSE faz upload do conteúdo do objeto no estado em que ele se encontra (sem compactá-lo) ao reter content-encoding: gzip e, se esse conteúdo não estiver compactado corretamente em gzip, poderá não ser lido no servidor por outros clientes, como . Isso ocorre porque outros clientes empregam a transcodificação descompressiva durante a leitura, e ela falha por conteúdo gzip inadequado.
  • Políticas de retenção: o Cloud Storage FUSE não oferece suporte à gravação em buckets com uma política de retenção. Se você tentar gravar em um bucket com uma política de retenção, suas gravações falharão.

    O Cloud Storage FUSE oferece suporte à leitura de objetos de buckets com uma política de retenção, mas o bucket precisa ser montado como Read-Only, transmitindo o sinalizador -o RO durante a montagem do bucket.

  • Armazenamento local: objetos novos ou modificados são armazenados em sua totalidade em um arquivo temporário local até serem fechados ou sincronizados. Quando estiver trabalhando com arquivos grandes, verifique se a capacidade de armazenamento local para cópias temporárias de arquivos é suficiente, principalmente se estiver trabalhando com instâncias do Compute Engine. Para mais informações, consulte o README na documentação do GitHub do Cloud Storage FUSE.
  • Diretórios: o Cloud Storage opera com um namespace simples. Por padrão, somente diretórios definidos explicitamente (que existem como objetos no Cloud Storage) podem aparecer no sistema de arquivos montado. Diretórios implícitos (que são apenas partes do caminho de outros arquivos ou diretórios) não aparecem por padrão. Se você tiver arquivos com um caminho que contenha um diretório implícito, o arquivo não aparecerá na árvore de diretórios geral, porque o diretório implícito que contém os arquivos não aparece. No entanto, é possível usar uma sinalização para alterar esse comportamento. Para mais informações, consulte a flag --implicit-dirs na documentação da CLI do Cloud Storage FUSE.

    O Cloud Storage FUSE não oferece suporte à renomeação de diretórios. Não é possível renomear o diretório de maneira atômica no Cloud Storage. Em vez disso, renomear um diretório envolve copiar um objeto com um novo nome e excluir o objeto original.

  • Limites de processamento de arquivos: por padrão, o kernel do Linux permite no máximo 1.024 identificadores de arquivos abertos. Não use o Cloud Storage FUSE como um servidor que processa conexões paralelas simultâneas de clientes externos porque isso pode exceder o número máximo de identificadores de arquivos abertos. Alguns casos de uso comuns a serem evitados são o conteúdo de exibição na Web de uma montagem do Cloud Storage FUSE, expondo uma montagem do Cloud Storage FUSE como armazenamento conectado à rede (NAS) usando protocolos de compartilhamento de arquivos (por exemplo, NFS ou SMB) e hospedagem de um servidor de protocolo de transferência de arquivos (FTP, na sigla em inglês) com suporte de uma montagem do Cloud Storage FUSE.

Frameworks, sistemas operacionais e arquiteturas

O Cloud Storage FUSE foi validado com as seguintes estruturas:

  • TensorFlow V2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch V1.x

  • JAX 0.4.x

O Cloud Storage FUSE é compatível com os seguintes sistemas operacionais e arquiteturas:

  • Ubuntu 18.04 ou posterior

  • Debian 10 ou posterior

  • CentOS 7.9 ou posterior

  • RHEL 7.9 ou posterior

  • x86_64

  • ARM64

Receba ajuda

Receba suporte, envie perguntas gerais e solicite novos recursos usando um dos canais de suporte oficiais do Google Cloud. Também é possível receber suporte registrando problemas no GitHub.

Para soluções de problemas geralmente encontrados, consulte Solução de problemas na documentação do Cloud Storage FUSE no GitHub.

Preços do Cloud Storage FUSE

O Cloud Storage FUSE está disponível gratuitamente, mas o armazenamento, os metadados e a E/S de rede gerados para e a partir do Cloud Storage são cobrados como qualquer outra interface do Cloud Storage. Em outras palavras, todas as operações e transferências de dados realizadas pelo FUSE do Cloud Storage são mapeadas para as operações e transferências do Cloud Storage e cobradas de acordo. Para mais informações sobre operações comuns do Cloud Storage FUSE e como elas são mapeadas para operações do Cloud Storage, consulte o mapeamento de operações.

Para evitar surpresas, estime como o uso do Cloud Storage FUSE afeta os custos do Cloud Storage. Por exemplo, se estiver usando o Cloud Storage FUSE para armazenar arquivos de registro e os registros forem eliminados agressivamente em centenas ou milhares de máquinas ao mesmo tempo, os custos podem aumentar rapidamente.

Consulte Preços do Cloud Storage para informações sobre cobranças, como armazenamento, uso de rede e operações.

Mapa de operações do Cloud Storage FUSE para operações do Cloud Storage

Ao executar uma operação usando o Cloud Storage FUSE, você também executa as operações do Cloud Storage associadas à operação do Cloud Storage FUSE. A tabela a seguir descreve comandos comuns do Cloud Storage FUSE e as operações associadas da API JSON do Cloud Storage. É possível exibir informações sobre as operações do Cloud Storage FUSE usando a sinalização --debug_gcs.

Comando Operações da API JSON
gcsfuse --debug_gcs example-bucket mp Objects.list (para verificar credenciais)
cd mp n/a
ls mp Objects.list ("")
mkdir subdir

Objects.get ("subdir")

Objects.get ("subdir /")

Objects.insert ("subdir /")

cp ~/local.txt subdir/

Objects.get ("subdir / local.txt")

Objects.get ("subdir / local.txt /")

Objects.insert ("subdir / local.txt"), para criar um objeto vazio

Objects.insert ("subdir / local.txt"), quando fechar depois de terminar de gravar

rm -rf subdir

Objects.list ("subdir")

Objects.list ("subdir /")

Objects.delete ("subdir / local.txt")

Objects.list ("subdir /")

Objects.delete ("subdir /")

Problemas conhecidos

Para acessar uma lista de problemas conhecidos no Cloud Storage FUSE, consulte o GitHub.

Próximas etapas