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.
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.
Visão geral
O Cloud Storage FUSE é um produto de código aberto com suporte do Google. 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 é 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.
Como o Cloud Storage FUSE funciona
O Cloud Storage FUSE funciona traduzindo nomes de armazenamento de objetos em uma estrutura
semelhante a um diretório, interpretando o caractere de barra (/
) em nomes de objetos como um separador de
diretório. Os objetos com o mesmo prefixo comum são tratados como arquivos no
mesmo diretório, permitindo que os aplicativos interajam com o bucket montado como um
sistema de arquivos. Os objetos também podem ser organizados em uma estrutura lógica de sistema de arquivos
usando o namespace hierárquico, que permite organizar objetos
em pastas.
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.
Casos de uso do Cloud Storage FUSE
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.
Cloud Storage FUSE para machine learning
O Cloud Storage FUSE é uma escolha comum para desenvolvedores que querem armazenar e acessar o treinamento de ML e dados de modelo como objetos no Cloud Storage. O Cloud Storage FUSE oferece vários benefícios para o desenvolvimento de projetos de ML:
O Cloud Storage FUSE permite montar buckets do Cloud Storage como um sistema de arquivos local para que os aplicativos possam acessar dados de treinamento e de modelo usando a semântica padrão de sistemas de arquivos. Isso significa que é possível evitar o custo de reescrever ou refatorar o código do aplicativo ao usar o Cloud Storage para armazenar dados de ML.
Do treinamento à inferência, o Cloud Storage FUSE permite aproveitar a alta escalonabilidade, desempenho e custo-benefício nativos do Cloud Storage. Assim, é possível executar as cargas de trabalho de ML em escala.
O Cloud Storage FUSE permite iniciar jobs de treinamento rapidamente oferecendo recursos de computação com acesso direto aos dados no Cloud Storage. Assim, não é necessário fazer o download de dados de treinamento para o recurso de computação.
Para mais informações, consulte Frameworks, sistemas operacionais e arquiteturas compatíveis com o 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:
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 mais recente
x86_64
ARM64
Integrações do Cloud Storage FUSE com produtos do Google Cloud
O Cloud Storage FUSE é integrado aos seguintes produtos do Google Cloud:
Produto | Como o Cloud Storage FUSE é integrado |
---|---|
Google Kubernetes Engine (GKE) | O Driver CSI do Cloud Storage FUSE gerencia a integração do Cloud Storage FUSE com a API Kubernetes para consumir buckets do Cloud Storage como volumes. É possível usar o driver CSI do Cloud Storage FUSE para ativar buckets como sistemas de arquivos em nós do Google Kubernetes Engine. |
Vertex AI Training | É possível acessar dados de um bucket do Cloud Storage como um sistema de arquivos ativado ao executar o treinamento personalizado na Vertex AI. Para mais informações, acesse Preparar o código de treinamento. |
Vertex AI Workbench | As instâncias de notebooks gerenciados do Vertex AI Workbench incluem uma integração do Cloud Storage que permite procurar buckets e trabalhar com arquivos compatíveis localizados no Cloud Storage pela interface do JupyterLab. A integração do Cloud Storage permite acessar todos os buckets e arquivos do Cloud Storage que a instância pode acessar no mesmo projeto que a instância de Vertex AI Workbench. Para configurar a integração, consulte as instruções do Vertex AI Workbench sobre como acessar buckets e arquivos do Cloud Storage no JupyterLab. |
Deep Learning VM Images | O Cloud Storage FUSE vem pré-instalado com o Deep Learning VM Images. |
Deep Learning Containers | Para montar buckets do Cloud Storage para Deep Learning Containers, use o Driver CSI do Cloud Storage FUSE (recomendado) ou instale o Cloud Storage FUSE. |
Batch | O Cloud Storage FUSE permite ativar buckets do Cloud Storage como volumes de armazenamento ao criar e executar jobs do Batch. É possível especificar um bucket na definição de um job, e o bucket será ativado automaticamente nas VMs do job quando ele for executado. |
Cloud Run | O Cloud Run permite montar um bucket do Cloud Storage como um volume e apresenta o conteúdo do bucket como arquivos no sistema de arquivos do contêiner. Para configurar a montagem do volume, consulte Montar um volume do Cloud Storage. |
Cloud Composer | Ao criar um ambiente, o Cloud Composer armazena o código-fonte dos fluxos de trabalho e as dependências deles em pastas específicas em um bucket do Cloud Storage. O Cloud Composer usa o Cloud Storage FUSE para associar as pastas no bucket aos componentes do Airflow no ambiente do Cloud Composer. |
Para ver uma lista de produtos do Google Cloud integrados ao Cloud Storage em geral, consulte Integração com serviços e ferramentas do Google Cloud.
Armazenamento em cache
O Cloud Storage FUSE oferece quatro tipos de armazenamento em cache para ajudar a aumentar o desempenho e reduzir os custos: armazenamento em cache de arquivos, de estatísticas, de tipos e de listas. Para mais informações sobre esses caches, consulte Visão geral do armazenamento em cache.
Semântica do diretório
O Cloud Storage oferece buckets com um namespace plano e buckets com namespace hierárquico ativado. Por padrão, o Cloud Storage FUSE pode inferir diretórios definidos explicitamente, também conhecidos como pastas, em buckets com namespace hierárquico ativado, mas não pode inferir diretórios definidos implicitamente em buckets com um namespace simples. Os diretórios definidos implicitamente incluem pastas simuladas e pastas gerenciadas.
Por exemplo, digamos que você monte um bucket chamado my-bucket
, que contém um objeto
chamado my-directory/my-object.txt
, em que my-directory/
é uma pasta simulada.
Quando você executa ls
no ponto de montagem do bucket, por padrão, o Cloud Storage FUSE não pode
acessar o diretório simulado my-bucket/my-directory/
nem o objeto
my-object.txt
dentro dele. Para permitir que o Cloud Storage FUSE infira a pasta simulada
e o objeto dentro dela, inclua a opção --implicit-dirs
como parte do
comando gcsfuse mount
ao montar um bucket de namespace simples. Para mais
informações sobre a opção --implicit-dirs
, consulte a
documentação da linha de comando do Cloud Storage FUSE.
Se você precisar armazenar e acessar seus dados usando um sistema de arquivos, use buckets com o namespace hierárquico ativado. Para saber como criar esses buckets, consulte Criar buckets com namespace hierárquico ativado.
Para mais informações sobre a semântica de diretório, incluindo como montar buckets com diretórios definidos implicitamente, consulte Arquivos e diretórios na documentação do GitHub.
Repetir estratégia
Por padrão, as solicitações com falha do Cloud Storage FUSE para o Cloud Storage são repetidas com espera exponencial até uma duração de espera especificada, que tem um valor de 30s
(um minuto). por padrão. Quando
a duração de espera excede a duração máxima especificada, a nova tentativa continua
com a duração máxima especificada. É possível usar a opção --max-retry-sleep
como parte de uma chamada gcsfuse
para especificar a duração da espera.
Para mais informações sobre a opção --max-retry-sleep
, consulte a
documentação da linha de comando gcsfuse
.
Operações do Cloud Storage FUSE associadas às 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 mostrar
informações sobre as operações do Cloud Storage FUSE definindo a
flag --log-severity
como TRACE
no comando gcsfuse
.
Comando | Operações da API JSON |
---|---|
gcsfuse --log-severity=TRACE 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 /") |
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.
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 arquivo.
- 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, a menos que você use buckets com namespace hierárquico ativado. 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. Para saber como o FUSE do Cloud Storage extrai diretórios no Cloud Storage, consulte semântica de diretório.
- 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 montado 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 flag--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
, que sofre transcodificação descompressiva: no comandogcloud
, o conteúdo é descompactado automaticamente durante o download, e o conteúdo original e descompactado é veiculado.gcloud storage cp gs://bucket/path /local/path
- 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.
- Limites de identificadores de arquivos: o kernel do Linux tem um limite padrão de 1.024 identificadores de arquivos abertos. Ao usar o Cloud Storage FUSE como um servidor para processar várias conexões simultâneas, é possível exceder esse limite. Para evitar problemas, verifique se o número de conexões simultâneas a um único host permanece abaixo do limite e considere aumentá-lo. Cenários em que isso é importante incluem o uso de uma montagem do Cloud Storage FUSE para fornecer conteúdo da Web, hospedar armazenamento conectado à rede (NAS) ou hospedar um servidor de protocolo de transferência de arquivos (FTP). Ao fornecer conteúdo da Web no Cloud Run de uma montagem do Cloud Storage FUSE, o máximo de solicitações simultâneas por instância é restrito a menos de 1.000.
- Limitações de
rsync
: A latência do sistema de arquivos do Cloud Storage FUSE afetarsync
, que lê e grava apenas um arquivo por vez. Para transferir vários arquivos de ou para o bucket em paralelo, use a CLI do Google Cloud executandogcloud storage rsync
. Para mais informações, consulte a documentaçãorsync
. - Limitações de operações de lista: quando você lista todos os
objetos em um bucket 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 Cloud Storage FUSE pode precisar emitir várias chamadas, dependendo de quantos objetos estão no bucket, o que pode tornar uma operação de lista cara e lenta.
Problemas conhecidos
Para acessar uma lista de problemas conhecidos no Cloud Storage FUSE, consulte o GitHub.
Receber suporte
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.
A seguir
Saiba como instalar a CLI gcloud.
Descubra o Cloud Storage FUSE concluindo um guia de início rápido.
Saiba como ativar buckets.
Saiba como configurar o comportamento do Cloud Storage FUSE usando a ferramenta de linha de comando
gcsfuse
ou um arquivo de configuração.