Cloud Storage FUSE

Esta página oferece uma vista geral do Cloud Storage FUSE, um adaptador FUSE que lhe permite montar e aceder a contentores do Cloud Storage como sistemas de ficheiros locais, para que as aplicações possam ler e escrever objetos no seu contentor usando a semântica padrão do sistema de ficheiros.

Esta documentação reflete sempre a versão mais recente do Cloud Storage FUSE. Para ver detalhes sobre a versão mais recente, consulte os lançamentos do FUSE do Cloud Storage no GitHub.

Vista geral

O Cloud Storage FUSE é um produto de código aberto suportado pela Google. O Cloud Storage FUSE usa APIs FUSE e Cloud Storage para expor de forma transparente contentores como pastas montadas localmente no seu sistema de ficheiros.

O Cloud Storage FUSE está integrado com outros serviços Google Cloud . Por exemplo, o controlador CSI do FUSE do Cloud Storage permite-lhe usar a API Google Kubernetes Engine (GKE) para consumir contentores como volumes, para que possa ler e escrever no Cloud Storage a partir dos seus pods do Kubernetes. Para mais informações sobre outras integrações, consulte o artigo Integrações.

Como funciona o FUSE do Cloud Storage

O Cloud Storage FUSE funciona traduzindo os nomes de armazenamento de objetos numa estrutura semelhante a um diretório, interpretando o caráter de barra (/) nos nomes de objetos como um separador de diretórios. Os objetos com o mesmo prefixo comum são tratados como ficheiros no mesmo diretório, o que permite que as aplicações interajam com o contentor montado como um sistema de ficheiros. Os objetos também podem ser organizados numa estrutura de sistema de ficheiros lógica através do espaço de nomes hierárquico, que lhe permite organizar objetos em pastas.

O Cloud Storage FUSE pode ser executado em qualquer lugar com conetividade ao Cloud Storage, incluindo o Google Kubernetes Engine, as VMs do Compute Engine ou os sistemas nas instalações.

Exemplos de utilização do FUSE do Cloud Storage

O Cloud Storage FUSE é ideal para exemplos de utilização em que o Cloud Storage tem as caraterísticas de desempenho e escalabilidade certas para uma aplicação que requer semântica do sistema de ficheiros. Por exemplo, o Cloud Storage FUSE é útil para projetos de aprendizagem automática (AA) porque oferece uma forma de armazenar dados, modelos, pontos de verificação e registos diretamente no Cloud Storage. Para mais informações, consulte o artigo Cloud Storage FUSE para cargas de trabalho de ML.

Cloud Storage FUSE para aprendizagem automática

O Cloud Storage FUSE é uma escolha comum para os programadores que pretendem armazenar e aceder a dados de modelos e de preparação de ML como objetos no Cloud Storage. O Cloud Storage FUSE oferece várias vantagens para o desenvolvimento de projetos de ML:

  • O Cloud Storage FUSE permite-lhe montar contentores do Cloud Storage como um sistema de ficheiros local para que as suas aplicações possam aceder aos dados de preparação e do modelo através da semântica do sistema de ficheiros padrão. Isto significa que pode evitar o custo de reescrever ou refatorizar o código da sua aplicação quando usa o Cloud Storage para armazenar dados de ML.

  • Desde a preparação à inferência, o Cloud Storage FUSE permite-lhe usar a elevada escalabilidade, o desempenho e a rentabilidade incorporados do Cloud Storage, para que possa executar as suas cargas de trabalho de ML em grande escala.

  • O Cloud Storage FUSE permite-lhe iniciar rapidamente tarefas de preparação, fornecendo recursos de computação com acesso direto aos dados no Cloud Storage, para que não precise de transferir dados de preparação para o recurso de computação.

Para mais informações, consulte o artigo Frameworks, sistemas operativos e arquiteturas suportados pelo Cloud Storage FUSE.

Frameworks, sistemas operativos e arquiteturas

O FUSE do armazenamento na nuvem foi validado com as seguintes frameworks:

  • TensorFlow V2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch V1.x

  • JAX 0.4.x

O Cloud Storage FUSE suporta os seguintes sistemas operativos e arquiteturas:

  • Rocky Linux 8.9 ou posterior

  • Ubuntu 18.04 ou posterior

  • Debian 10 ou posterior

  • CentOS 7.9 ou posterior

  • RHEL 7.9 ou posterior

  • SLES 15 ou posterior

  • x86_64

  • ARM64

Integrações do FUSE do Cloud Storage com produtos Google Cloud

O Cloud Storage FUSE integra-se com os seguintes Google Cloud produtos:

Produto Como o FUSE do Cloud Storage está integrado
Hipercomputador de IA

O Cloud Storage FUSE é a solução de armazenamento recomendada para a maioria dos exemplos de utilização de IA e ML, uma vez que lhe permite dimensionar o armazenamento de dados com uma maior eficiência de custos do que os serviços de sistemas de ficheiros. Para mais informações, consulte o artigo Serviços de armazenamento.

Google Kubernetes Engine (GKE)

O controlador CSI do FUSE do Cloud Storage gere a integração do FUSE do Cloud Storage com a API Kubernetes para consumir contentores do Cloud Storage como volumes. Pode usar o controlador CSI do FUSE do Cloud Storage para montar contentores como sistemas de ficheiros em nós do Google Kubernetes Engine.

Preparação do Vertex AI

Pode aceder a dados de um contentor do Cloud Storage como um sistema de ficheiros montado quando realiza uma preparação personalizada na Vertex AI. Para mais informações, consulte o artigo Prepare o código de preparação.

Vertex AI Workbench

As instâncias do Vertex AI Workbench incluem uma integração do Cloud Storage que lhe permite procurar contentores e trabalhar com ficheiros compatíveis localizados no Cloud Storage a partir da interface do JupyterLab. A integração do Cloud Storage permite-lhe aceder a todos os contentores e ficheiros do Cloud Storage aos quais a sua instância tem acesso no mesmo projeto que a sua instância do Vertex AI Workbench. Para configurar a integração, consulte as instruções do Vertex AI Workbench sobre como aceder a contentores e ficheiros do Cloud Storage no JupyterLab.

Deep Learning VM Images

O Cloud Storage FUSE é pré-instalado com as Deep Learning VM Images.

Deep Learning Containers

Para montar contentores do Cloud Storage para Deep Learning Containers, pode usar o controlador CSI do FUSE do Cloud Storage (recomendado) ou instalar o FUSE do Cloud Storage.

Lote

O Cloud Storage FUSE permite-lhe montar contentores do Cloud Storage como volumes de armazenamento quando cria e executa tarefas do Batch. Pode especificar um contentor na definição de uma tarefa, e o contentor é montado automaticamente nas VMs para a tarefa quando a tarefa é executada.

Cloud Run

O Cloud Run permite-lhe montar um contentor do Cloud Storage como um volume e apresenta o conteúdo do contentor como ficheiros no sistema de ficheiros do contentor. Para configurar a montagem de volumes, consulte o artigo Monte um volume do Cloud Storage.

Cloud Composer

Quando cria um ambiente, o Cloud Composer armazena o código fonte dos seus fluxos de trabalho e respetivas dependências em pastas específicas num contentor do Cloud Storage. O Cloud Composer usa o FUSE do Cloud Storage para mapear as pastas no contentor para os componentes do Airflow no ambiente do Cloud Composer.

Kit de ferramentas de clusters

O Cluster Toolkit permite-lhe criar ou montar um contentor do Cloud Storage como um sistema de ficheiros. Pode especificar o contentor num ficheiro YAML de esquema através do módulo adequado. Em seguida, o contentor é criado ou montado automaticamente quando a implementação é executada.

Dataflow

Quando usa o Cloud Storage FUSE para montar segmentos do Cloud Storage diretamente no sistema de ficheiros do trabalhador, o código do pipeline do Apache Beam subjacente do Dataflow pode aceder a ficheiros no Cloud Storage diretamente através da semântica do sistema de ficheiros padrão. Isto é particularmente útil quando usa o Dataflow para tarefas de IA/aprendizagem automática que envolvem grandes conjuntos de dados e software que requer acesso a ficheiros.

Para ver uma lista dos Google Cloud produtos que estão geralmente integrados com o Cloud Storage, consulte Integração com Google Cloud serviços e ferramentas.

A colocar em cache

O Cloud Storage FUSE oferece quatro tipos de colocação em cache para ajudar a aumentar o desempenho e reduzir o custo: colocação em cache de ficheiros, colocação em cache de estatísticas, colocação em cache de tipos e colocação em cache de listas. Para mais informações sobre estas caches, consulte o artigo Vista geral do armazenamento em cache.

Semântica de diretórios

O Cloud Storage oferece contentores com um espaço de nomes simples e contentores com o espaço de nomes hierárquico ativado. Por predefinição, o Cloud Storage FUSE pode inferir diretórios definidos explicitamente, também conhecidos como pastas, em contentores com o espaço de nomes hierárquico ativado, mas não consegue inferir diretórios definidos implicitamente em contentores com um espaço de nomes simples. Os diretórios definidos implicitamente incluem pastas simuladas e pastas geridas.

Por exemplo, suponhamos que monta um contentor denominado my-bucket, que contém um objeto denominado my-directory/my-object.txt, em que my-directory/ é uma pasta simulada. Quando executa ls no ponto de montagem do contentor, por predefinição, o Cloud Storage FUSE não consegue aceder ao diretório simulado my-bucket/my-directory/ nem ao objeto my-object.txt no respetivo interior. Para permitir que o FUSE do Cloud Storage infira a pasta simulada e o objeto na mesma, inclua a opção --implicit-dirs gcsfuse ou o campo do ficheiro de configuração implicit-dirs como parte do comando gcsfuse mount ao montar um contentor de espaço de nomes simples.

Se precisar de armazenar e aceder aos seus dados através de um sistema de ficheiros, use contentores com o espaço de nomes hierárquico ativado. Para saber como criar esses contentores, consulte o artigo Crie contentores com o espaço de nomes hierárquico ativado.

Para mais informações sobre a semântica de diretórios, incluindo como montar contentores com diretórios definidos implicitamente, consulte Ficheiros e diretórios na documentação do GitHub do Cloud Storage FUSE.

Estratégias de repetição do FUSE do Cloud Storage

Por predefinição, as solicitações com falhas do Cloud Storage FUSE para o Cloud Storage são repetidas com recuo exponencial até uma duração máxima de recuo especificada, que tem um valor de 30s (30 segundos) por predefinição. Quando a duração da repetição excede a duração máxima especificada, a repetição continua com a duração máxima especificada. Pode usar a opção --max-retry-sleep ou o campo gcs-retries:max-retry-sleep como parte de uma chamada gcsfuse mount para especificar a duração da recusa.

Estratégia de repetição para pedidos GET ou READ parados

Quando faz um pedido GET ou READ com o FUSE do Cloud Storage, é aplicado um período de limite de tempo. Se o pedido exceder o período de limite de tempo, o Cloud Storage FUSE cancela o pedido e tenta novamente através de um algoritmo de recuo exponencial.

O limite de tempo é dinâmico e baseia-se na latência do 99.º percentil de pedidos GET ou READ bem-sucedidos ou cancelados anteriores, com um mínimo de 1,5 segundos. Isto garante que apenas os 1% de pedidos mais lentos, ou seja, os que excedem a latência histórica do percentil 99, são repetidos.

Estratégia de repetição para carregamentos parados

As escritas de ficheiros grandes são carregadas em partes. Para ajudar a reduzir as latências de escrita no final, se uma operação de escrita ao nível do fragmento ficar bloqueada ou falhar, o Cloud Storage FUSE tenta novamente após 10 segundos. São realizadas, no máximo, quatro operações de repetição para cada fragmento parado.

Operações FUSE do Cloud Storage associadas a operações do Cloud Storage

Quando realiza uma operação através do Cloud Storage FUSE, também realiza as operações do Cloud Storage associadas à operação do Cloud Storage FUSE. A tabela seguinte descreve os comandos FUSE do Cloud Storage comuns e as respetivas operações da API JSON do Cloud Storage associadas. Pode apresentar informações sobre as operações FUSE do Cloud Storage definindo a opção --log-severity ou o campo logging:severity como TRACE no comando gcsfuse.

Comando Operações da API JSON
gcsfuse --log-severity=TRACE example-bucket mp Objects.list (para verificar as 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 após a conclusão da escrita

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

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

Objects.list("subdir/")

Objects.delete("subdir/")

Métrica

O Cloud Storage oferece métricas detalhadas que podem ajudar a otimizar o desempenho e os custos do Cloud Storage FUSE. Para saber mais sobre as métricas do Cloud Storage FUSE, consulte o artigo Métricas do Cloud Storage FUSE.

Preços do FUSE do Cloud Storage

O Cloud Storage FUSE está disponível sem custo financeiro, mas o armazenamento, os metadados e o I/O de rede que gera para e a partir do Cloud Storage são cobrados como qualquer outra interface do Cloud Storage. Por outras palavras, todas as transferências de dados e operações realizadas pelo Cloud Storage FUSE são mapeadas para transferências e operações do Cloud Storage, e são cobradas em conformidade. Para mais informações sobre as operações FUSE do Cloud Storage comuns e como são mapeadas para as operações do Cloud Storage, consulte o mapeamento de operações.

Para evitar surpresas, deve estimar como a sua utilização do Cloud Storage FUSE se traduz em cobranças do Cloud Storage. Por exemplo, se estiver a usar o FUSE do Cloud Storage para armazenar ficheiros de registo, pode incorrer em custos rapidamente se os registos forem agressivamente esvaziados em centenas ou milhares de máquinas ao mesmo tempo.

Consulte os preços do Cloud Storage para ver informações sobre cobranças, como armazenamento, utilização da rede e operações.

Limitações

Embora o Cloud Storage FUSE tenha uma interface de sistema de ficheiros, não é como um sistema de ficheiros 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 ficheiros POSIX em Google Cloud, consulte o Filestore.

Quando usar o Cloud Storage FUSE, tenha em atenção as respetivas limitações e semântica, que são diferentes das dos sistemas de ficheiros POSIX. O FUSE do Cloud Storage só deve ser usado dentro das respetivas capacidades.

Limitações e diferenças em relação aos sistemas de ficheiros POSIX

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

  • Metadados: o Cloud Storage FUSE não transfere metadados de objetos quando carrega ficheiros para o Cloud Storage, exceto para mtime e destinos de links simbólicos. Isto significa que não pode definir metadados de objetos quando carrega ficheiros através do Cloud Storage FUSE. Se precisar de preservar os metadados dos objetos, considere carregar ficheiros através da CLI do Google Cloud, da API JSON ou da Google Cloud consola.
  • Concorrência: quando configura vários pontos de montagem para aceder ao mesmo contentor do Cloud Storage e duas ou mais montagens tentam escrever no mesmo objeto do Cloud Storage em simultâneo, a primeira montagem a concluir a operação de escrita e a sincronizar com êxito as respetivas alterações no objeto é guardada. Outras montagens que não atualizaram os respetivos descritores de ficheiros locais após a modificação do objeto encontram um erro syscall.ESTALE quando tentam guardar as edições devido a verificações de pré-condições. Para garantir que os seus dados são escritos de forma consistente, recomendamos vivamente que evite que várias origens modifiquem o mesmo objeto.

    Tenha em atenção que vários leitores podem aceder aos mesmos objetos ou a objetos diferentes num contentor, e vários autores podem modificar objetos diferentes no mesmo contentor em simultâneo. As escritas simultâneas no mesmo objeto do Cloud Storage são suportadas a partir da mesma montagem e comportam-se de forma semelhante aos sistemas de ficheiros incorporados.

  • Associação: o FUSE do Cloud Storage não suporta links físicos.
  • Bloqueio e aplicação de patches de ficheiros: o Cloud Storage FUSE não suporta o bloqueio nem a aplicação de patches de ficheiros. Como tal, não deve armazenar repositórios do sistema de controlo de versões em pontos de montagem do FUSE do Cloud Storage, uma vez que os sistemas de controlo de versões dependem do bloqueio e da aplicação de patches de ficheiros. Além disso, não deve usar o FUSE do Cloud Storage como substituição de ficheiros.
  • Semântica: a semântica no Cloud Storage FUSE é diferente da semântica num sistema de ficheiros convencional. Por exemplo, os metadados, como a hora do último acesso, não são suportados, e algumas operações de metadados, como a mudança do nome do diretório, não são atómicas, a menos que use contentores com o espaço de nomes hierárquico ativado. Para ver uma lista de diferenças entre a semântica do FUSE do Cloud Storage e a semântica do sistema de ficheiros convencional, consulte o artigo Semântica do FUSE do Cloud Storage na documentação do GitHub do FUSE do Cloud Storage. Para saber como o Cloud Storage FUSE infere diretórios no Cloud Storage, consulte as semânticas de diretórios.
  • Cargas de trabalho que fazem a aplicação de patches a ficheiros (ou substituições no local): o Cloud Storage FUSE só pode escrever objetos inteiros de cada vez no Cloud Storage e não fornece um mecanismo para aplicar patches. Se tentar aplicar um patch a um ficheiro, o Cloud Storage FUSE volta a carregar o ficheiro completo. A única exceção a este comportamento é que pode anexar conteúdo ao final de um ficheiro com 2 MB ou mais, em que o Cloud Storage FUSE só volta a carregar o conteúdo anexado.
  • Acesso: a autorização para ficheiros é regida pelas autorizações do Cloud Storage. O controlo de acesso ao estilo POSIX não funciona.
  • Desempenho: o Cloud Storage FUSE tem uma latência muito superior à de um sistema de ficheiros local e, como tal, não deve ser usado como back-end para armazenar uma base de dados. A taxa de transferência pode ser reduzida quando lê ou escreve um pequeno ficheiro de cada vez. A utilização de ficheiros maiores ou a transferência de vários ficheiros em simultâneo ajuda a aumentar a taxa de transferência.
  • Disponibilidade: por vezes, podem ocorrer erros transitórios quando usa o FUSE do Cloud Storage para aceder ao Cloud Storage. Recomendamos que tente novamente as operações falhadas usando estratégias de repetição.
  • Controlo de versões de objetos: o Cloud Storage FUSE não suporta formalmente a utilização com contentores que tenham o controlo de versões de objetos ativado. A tentativa de usar o Cloud Storage FUSE com contentores que tenham o controlo de versões de objetos ativado pode produzir um comportamento imprevisível.
  • Transcodificação de ficheiros:

    Objetos com content-encoding: gzip nos metadados: qualquer objeto deste tipo num diretório montado no FUSE do Cloud Storage não é submetido a uma transcodificação descompressiva. Em alternativa, o objeto permanece comprimido da mesma forma que é armazenado no contentor.

    Por exemplo, um ficheiro de 1000 bytes, carregado para um contentor através do comando gcloud storage cp com a flag --gzip-local, pode tornar-se 60 bytes (o tamanho comprimido real depende do conteúdo e da implementação gzip usada pela CLI gcloud) como um objeto do Cloud Storage. Se o contentor estiver montado através do `gcsfuse` e o ficheiro correspondente for listado ou lido a partir do diretório de montagem, o respetivo tamanho é devolvido como 60 bytes e o respetivo conteúdo é uma versão comprimida do conteúdo original de 1000 bytes.

    Isto contrasta com um download através do comando gcloud storage cp gs://bucket/path /local/path, que é submetido a uma transcodificação descompressiva: no comando gcloud, o conteúdo é descomprimido automaticamente durante o download, e o conteúdo original não comprimido é fornecido.

  • Políticas de retenção: o FUSE do Cloud Storage não suporta a escrita em contentores com uma política de retenção. Se tentar escrever num contentor com uma política de retenção, as suas escritas vão falhar.

    O FUSE do Cloud Storage suporta a leitura de objetos de contentores com uma política de retenção, mas o contentor tem de ser montado como Read-Only através da transmissão da flag -o RO durante a montagem do contentor.

  • Armazenamento local: os objetos novos ou modificados são armazenados na totalidade num ficheiro temporário local até serem fechados ou sincronizados. Quando trabalha com ficheiros grandes, certifique-se de que tem capacidade de armazenamento local suficiente para cópias temporárias dos ficheiros, especialmente se estiver a trabalhar com instâncias do Compute Engine. Para mais informações, consulte o ficheiro README de vista geral do FUSE do Cloud Storage na documentação do GitHub do FUSE do Cloud Storage.
  • Limites de identificadores de ficheiros: o kernel do Linux tem um limite predefinido de 1024 identificadores de ficheiros abertos. Quando usar o Cloud Storage FUSE como um servidor para processar várias ligações simultâneas, pode exceder este limite. Para evitar problemas, certifique-se de que o número de ligações simultâneas a um único anfitrião permanece abaixo do limite e considere aumentá-lo. Os cenários em que isto é importante incluem a utilização de uma montagem FUSE do Cloud Storage para publicar conteúdo Web, alojar armazenamento ligado à rede (NAS) ou alojar um servidor de protocolo de transferência de ficheiros (FTP). Quando publica conteúdo Web no Cloud Run a partir de uma montagem FUSE do Cloud Storage, o máximo de pedidos simultâneos por instância está limitado a menos de 1000.
  • rsync limitações: a latência do sistema de ficheiros do FUSE do Cloud Storage afeta o rsync, que lê e grava apenas um ficheiro de cada vez. Para transferir vários ficheiros para ou a partir do seu contentor em paralelo, use a CLI Google Cloud executando gcloud storage rsync. Para mais informações, consulte a rsync documentação.
  • Limitações das operações de listagem: quando lista todos os objetos num contentor montado, por exemplo, executando ls, o Cloud Storage FUSE chama a API Objects: list no Cloud Storage. A API pagina os resultados, o que significa que o FUSE do Cloud Storage pode ter de emitir várias chamadas, consoante o número de objetos no seu contentor, o que pode tornar uma operação de lista dispendiosa e lenta.

Problemas conhecidos

Para ver uma lista de problemas conhecidos no Cloud Storage FUSE, consulte os problemas abertos do Cloud Storage FUSE no GitHub.

Obter apoio técnico

Pode receber apoio técnico, enviar perguntas gerais e pedir novas funcionalidades através de um dos canais de apoio técnico oficiais doGoogle Cloud. Também pode obter apoio técnico apresentando problemas no GitHub.

Para soluções para problemas encontrados com frequência, consulte a secção Resolução de problemas de produção na documentação do Cloud Storage FUSE no GitHub.

O que se segue?