Monte contentores do Cloud Storage através do Cloud Storage FUSE

Opções da CLI FUSE do Cloud Storage

Esta página descreve várias formas de montar contentores do Cloud Storage no seu sistema de ficheiros local através do Cloud Storage FUSE.

Antes de começar

Para montar e aceder a contentores, tem de concluir primeiro as seguintes tarefas.

Obtenha as funções necessárias para montar e aceder a um contentor

Para montar, aceder e realizar operações de leitura e escrita num contentor, peça ao proprietário do contentor para lhe conceder a função de utilizador de objetos de armazenamento (roles/storage.objectUser) no contentor.

Esta função predefinida contém as autorizações necessárias para ler a partir de um contentor montado e escrever num contentor montado. Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

  • storage.objects.create
  • storage.objects.delete
  • storage.objects.get
  • storage.objects.list
  • storage.objects.update

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Para obter instruções sobre como conceder funções em contentores, consulte o artigo Use o IAM com contentores.

Instale o FUSE do Cloud Storage

Se ainda não o fez, instale o Cloud Storage FUSE.

Autentique pedidos FUSE do Cloud Storage

Para autenticar pedidos do Cloud Storage FUSE para o Cloud Storage, tem de configurar as Credenciais padrão da aplicação. Por predefinição, o Cloud Storage FUSE carrega automaticamente as credenciais predefinidas da aplicação existentes sem configuração adicional.

Para usar a CLI Google Cloud para configurar as Credenciais padrão da aplicação, conclua os seguintes passos:

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

Quando cria uma máquina virtual (VM) do Compute Engine, a respetiva conta de serviço também pode ser usada para autenticar o acesso ao Cloud Storage FUSE.

Monte um balde

Para montar contentores no seu sistema de ficheiros local, use o seguinte comando:

gcsfuse GLOBAL_OPTIONS BUCKET_NAME MOUNT_POINT

Onde:

  • GLOBAL_OPTIONS são as opções que pode incluir para controlar a forma como o suporte é configurado. Para mais informações sobre as opções e como as usar, consulte o CLI FUSE do Cloud Storage ou as páginas de referência do ficheiro de configuração do FUSE do Cloud Storage.

    • BUCKET_NAME é o nome do contentor que quer montar. Por exemplo, my-bucket. Se quiser fazer a montagem dinâmica, exclua um nome de contentor do comando.

    • MOUNT_POINT é o diretório local onde o contentor é montado. Por exemplo, /path/to/mount/point.

Opcional: para criar diretórios definidos implicitamente que lhe permitem navegar para pastas que apenas contêm objetos aninhados mais profundamente, inclua a flag --implicit-dirs no seu comando gcsfuse. Para saber mais acerca dos diretórios definidos implicitamente, consulte o artigo Semântica de diretórios.

Depois de sair do Cloud Storage FUSE, pode aceder aos contentores montados executando o comando ls no ponto de montagem do contentor. Se preferir que o Cloud Storage FUSE permaneça em primeiro plano (por exemplo, para registo de depuração), pode executar o comando gcsfuse com o campo foreground ou a opção --foreground.

Exemplos de montagem

Esta secção descreve diferentes comandos de exemplo para montar contentores.

Montagem estática

A montagem estática refere-se à montagem de um contentor específico. Por exemplo, para montar um contentor denominado my-bucket no diretório /path/to/mount/point, execute os seguintes comandos:

mkdir /path/to/mount/point
gcsfuse my-bucket /path/to/mount/point

Montagem dinâmica

A montagem dinâmica refere-se à montagem de todos os contentores aos quais um utilizador tem acesso como subdiretórios.

Quando realiza a montagem dinâmica, exclui os nomes dos contentores do comando. Por exemplo, suponhamos que tem acesso a contentores denominados my-bucket-1, my-bucket-2 e my-bucket-3. Para montar todos os contentores no diretório /path/to/mount/point, execute os seguintes comandos:

mkdir /path/to/mount/point
gcsfuse /path/to/mount/point

Em seguida, pode aceder aos contentores como subdiretórios:

ls /path/to/mount/point/my-bucket-1/
ls /path/to/mount/point/my-bucket-2/
ls /path/to/mount/point/my-bucket-3/

Não é possível listar os contentores montados dinamicamente a partir do ponto de montagem raiz. Em alternativa, o nome do contentor tem de ser especificado como parte da operação de listagem.

Montar um contentor como só de leitura

Para montar um contentor como só de leitura, transmita a opção -o ro ao comando gcsfuse. Por exemplo, para montar um contentor denominado my-bucket como só de leitura no diretório /path/to/mount/point, execute o seguinte comando:

gcsfuse -o ro my-bucket  /path/to/mount/point

Monte um diretório num contentor

Por predefinição, o Cloud Storage FUSE monta contentores na totalidade, o que inclui todo o conteúdo e as estruturas de diretórios do contentor. Para montar um diretório específico num contentor, transmita a opção --only-dir à CLI gcsfuse ou ao campo only-dir num ficheiro de configuração do Cloud Storage FUSE. Por exemplo, para montar o diretório my-bucket/a/b no diretório /path/to/mount/point, execute o seguinte comando:

gcsfuse --only-dir a/b my-bucket /path/to/mount/point

Faça a montagem através do comando mount do Linux

A instalação do FUSE do Cloud Storage inclui um auxiliar que é compreendido pelo comando Linux mount, o que lhe permite usar o comando mount para montar contentores. O comando mount tem de ser executado a partir da raiz se estiver a usar o Linux. Por exemplo, o comando seguinte monta um contentor com o nome my-bucket no caminho /path/to/mount/point:

sudo mount -t gcsfuse -o rw,user my-bucket /path/to/mount/point

Quando usar o comando mount do Linux para a montagem, pode transmitir as opções gcsfuse como um argumento para a opção -o, mas os hífens (-) nas mesmas devem ser substituídos por sublinhados (_). Por exemplo, implicit_dirs em vez de implicit-dirs.

sudo mount -t gcsfuse -o implicit_dirs my-bucket /path/to/mount/point

Montagem persistente

A instalação do FUSE do Cloud Storage inclui um auxiliar que é instalado no seu sistema no caminho /sbin/mount.gcsfuse. Esta ferramenta auxiliar permite-lhe criar pontos de montagem através do ficheiro /etc/fstab para poder manter as suas montagens.

Por exemplo, quando adicionada ao ficheiro /etc/fstab, a seguinte linha define um ponto de montagem para um contentor denominado my-bucket no caminho /mount/point:

my-bucket /mount/point gcsfuse rw,noauto,user

Onde:

  • A opção rw especifica que o ponto de montagem deve ser criado com autorizações de leitura e escrita.

  • A opção noauto especifica que o sistema de ficheiros não deve ser montado no momento do arranque.

  • A opção user permite que qualquer pessoa crie o ponto de montagem especificado no ficheiro /etc/fstab. Depois de a linha de exemplo ser adicionada ao ficheiro /etc/fstab, pode executar mount /mount/point como um utilizador não raiz.

Se quiser montar o contentor automaticamente no arranque, pode ter de incluir a opção x-systemd.requires=network-online.target ou a opção _netdev na entrada /etc/fstab para garantir que o FUSE do Cloud Storage aguarda que o sistema de rede esteja pronto antes da montagem. Por exemplo:

my-bucket /mount/point gcsfuse rw,x-systemd.requires=network-online.target,user

Pode montar um contentor automaticamente como um utilizador específico não root incluindo as opções uid, gid ou ambas na sua entrada /etc/fstab. Por exemplo:

my-bucket /mount/point gcsfuse rw,_netdev,allow_other,uid=1001,gid=1001

Semelhante ao comando linux mount, as marcas usadas para a montagem no ficheiro /etc/fstab têm de usar sublinhados (_) em vez de travessões (-). Por exemplo, implicit_dirs em vez de implicit-dirs.

Monte um contentor com pastas

Pode montar contentores com vários tipos de pastas.

Monte um contentor com pastas geridas

Para montar um contentor, incluindo as respetivas pastas geridas, inclua a opção --implicit-dirs ou o campo implicit-dirs no seu comando.

Por exemplo, para montar um contentor denominado my-bucket e as respetivas pastas geridas no diretório /path/to/mount/point, execute os seguintes comandos:

gcsfuse --implicit-dirs my-bucket /path/to/mount/point

Ao montar um contentor com pastas geridas, tenha em atenção as seguintes limitações e considerações:

  • As pastas geridas vazias não aparecem em contentores montados.

  • Não pode definir nem gerir autorizações de IAM numa pasta gerida através do FUSE do Cloud Storage. Para definir ou gerir autorizações de IAM numa pasta gerida, consulte o artigo Use o IAM com pastas geridas.

  • Pode copiar e mover uma pasta gerida num contentor montado através dos comandos cp e mv. Quando copia ou move uma pasta gerida, as políticas de IAM na pasta gerida original não persistem na nova pasta gerida. Tem de definir novas políticas IAM na nova pasta gerida.

Monte um contentor com pastas definidas implicitamente

Pode montar pastas definidas implicitamente através da opção --implicit-dirs gcsfuse na CLI gcsfuse ou do campo implicit-dirs num ficheiro de configuração do FUSE do Cloud Storage. As pastas definidas implicitamente são pastas que não são criadas explicitamente como objetos no Cloud Storage. A opção --implicit-dirs permite-lhe ver pastas quando monta um contentor.

Por exemplo, para montar um contentor denominado my-bucket no diretório /path/to/mount/point com pastas definidas implicitamente, execute o seguinte comando:

gcsfuse --implicit-dirs my-bucket /path/to/mount/point

Monte um contentor com pastas ativado para o espaço de nomes hierárquico

Pode montar um contentor com o espaço de nomes hierárquico ativado, incluindo as respetivas pastas. Quando monta um contentor com o espaço de nomes hierárquico, não precisa de especificar a opção --implicit-dirs gcsfuse nem o campo implicit-dirs para que as pastas apareçam no contentor montado.

Por exemplo, para montar um contentor denominado my-bucket com pastas no diretório /path/to/mount/point, execute o seguinte comando:

gcsfuse my-bucket /path/to/mount/point

Controle as autorizações de acesso ao ponto de montagem

Por predefinição, o Cloud Storage FUSE cria pontos de montagem de contentores com autorizações que permitem apenas que o utilizador que invoca aceda ao conteúdo dos contentores montados. Esta é uma medida de segurança implementada no kernel FUSE.

Para montar um contentor e permitir que outras pessoas acedam ao ponto de montagem do contentor, pode executar o comando mount como raiz com a opção -o allow_other:

mount -t gcsfuse -o allow_other my-bucket /path/to/mount/point

Se quiser evitar a montagem do contentor como raiz, tem de adicionar user_allow_other ao ficheiro /etc/fuse.conf para permitir que outras pessoas acedam ao ponto de montagem do contentor.

Desmonte um contentor

Para desmontar um contentor, use a ferramenta fusermount:

fusermount -u /path/to/mount/point

O que se segue?