Montar segmentos de Cloud Storage con Cloud Storage FUSE

Opciones de montaje

En esta página se describen varias formas de montar segmentos de Cloud Storage en tu sistema de archivos local mediante Cloud Storage FUSE.

Antes de empezar

Para montar y acceder a los contenedores, primero debes completar las siguientes tareas.

Obtener los roles necesarios para montar y acceder a un segmento

Para montar, acceder y realizar operaciones de lectura y escritura en un segmento, pide al propietario del segmento que te conceda el rol de usuario de objetos de Storage (roles/storage.objectUser) en el segmento.

Este rol predefinido contiene los permisos necesarios para leer y escribir en un segmento montado. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

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

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Para obtener instrucciones sobre cómo conceder roles en los contenedores, consulta Usar IAM con contenedores.

Instalar Cloud Storage FUSE

Si aún no lo has hecho, instala Cloud Storage FUSE.

Autenticar solicitudes de Cloud Storage FUSE

Para autenticar las solicitudes de Cloud Storage FUSE en Cloud Storage, debes configurar las credenciales predeterminadas de la aplicación. De forma predeterminada, Cloud Storage FUSE carga automáticamente las credenciales predeterminadas de la aplicación sin necesidad de realizar ninguna otra configuración.

Para usar la CLI de Google Cloud y configurar las credenciales predeterminadas de la aplicación, sigue estos pasos:

  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.

Cuando creas una máquina virtual de Compute Engine, su cuenta de servicio también se puede usar para autenticar el acceso a Cloud Storage FUSE.

Montar un segmento

Para montar los contenedores en tu sistema de archivos local, usa el siguiente comando:

gcsfuse GLOBAL_OPTIONS BUCKET_NAME MOUNT_POINT

Donde:

  • GLOBAL_OPTIONS son las opciones que puedes incluir para controlar cómo se configura el montaje. Para obtener más información sobre las opciones y cómo usarlas, consulta Opciones de la CLI de FUSE de Cloud Storage.

  • BUCKET_NAME es el nombre del segmento que quieres montar. Por ejemplo, my-bucket. Si quieres realizar un montaje dinámico, excluye el nombre de un contenedor del comando.

  • MOUNT_POINT es el directorio local donde se monta el contenedor. Por ejemplo, /path/to/mount/point.

Opcional: Para crear directorios definidos implícitamente que te permitan desplazarte a carpetas que solo contengan objetos anidados en niveles más profundos, incluye la marca --implicit-dirs en tu comando gcsfuse. Para obtener más información sobre los directorios definidos implícitamente, consulta Semántica de los directorios.

Cuando Cloud Storage FUSE se cierre, podrás acceder a los segmentos montados ejecutando ls en el punto de montaje del segmento. Si prefieres que Cloud Storage FUSE permanezca en primer plano (por ejemplo, para registrar información de depuración), puedes ejecutar el comando gcsfuse con la marca --foreground.

Ejemplos de montaje

En esta sección se describen diferentes ejemplos de comandos para montar los contenedores.

Montaje estático

El montaje estático se refiere al montaje de un contenedor específico. Por ejemplo, para montar un contenedor llamado my-bucket en el directorio /path/to/mount/point, ejecuta los siguientes comandos:

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

Montaje dinámico

El montaje dinámico hace referencia al montaje de todos los segmentos a los que tiene acceso un usuario como subdirectorios.

Cuando realizas un montaje dinámico, excluyes los nombres de los contenedores del comando. Por ejemplo, supongamos que tienes acceso a los contenedores my-bucket-1, my-bucket-2 y my-bucket-3. Para montar todos los contenedores en el directorio /path/to/mount/point, ejecuta los siguientes comandos:

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

A continuación, puede acceder a los contenedores como subdirectorios:

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

Los contenedores montados dinámicamente no se pueden enumerar desde el punto de montaje raíz. En su lugar, el nombre del segmento debe especificarse como parte de la operación de lista.

Montar un contenedor como de solo lectura

Para montar un segmento como de solo lectura, pasa la opción -o ro al comando gcsfuse. Por ejemplo, para montar un bucket llamado my-bucket como de solo lectura en el directorio /path/to/mount/point, ejecuta el siguiente comando:

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

Montar un directorio en un segmento

De forma predeterminada, Cloud Storage FUSE monta los segmentos por completo, lo que incluye todo el contenido y las estructuras de directorios del segmento. Para montar un directorio específico en un contenedor, pasa la opción --only-dir al comando gcsfuse. Por ejemplo, para montar el directorio my-bucket/a/b en el directorio /path/to/mount/point, ejecuta el siguiente comando:

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

Montar mediante el comando mount de Linux

La instalación de Cloud Storage FUSE incluye un asistente que entiende el comando mount de Linux, lo que te permite usar el comando mount para montar segmentos. El comando mount debe ejecutarse desde la raíz si usas Linux. Por ejemplo, el siguiente comando monta un contenedor llamado my-bucket en la ruta /path/to/mount/point:

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

Cuando se monta mediante el comando mount de Linux, las opciones de la CLI de Cloud Storage FUSE se pueden transferir como argumento a la marca -o, pero los guiones (-) que contengan deben sustituirse por guiones bajos (_). Por ejemplo, implicit_dirs en lugar de implicit-dirs.

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

Montaje persistente

La instalación de Cloud Storage FUSE incluye un asistente que se instala en tu sistema en la ruta /sbin/mount.gcsfuse. Esta herramienta auxiliar te permite crear puntos de montaje mediante el archivo /etc/fstab para que puedas conservar tus montajes.

Por ejemplo, cuando se añade al archivo /etc/fstab, la siguiente línea define un punto de montaje para un contenedor llamado my-bucket en la ruta /mount/point:

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

Donde:

  • La opción rw especifica que el punto de montaje se cree con permisos de lectura y escritura.

  • La opción noauto especifica que el sistema de archivos no se debe montar durante el arranque.

  • La opción user permite que cualquier persona cree el punto de montaje especificado en el archivo /etc/fstab. Una vez que se haya añadido la línea de ejemplo al archivo /etc/fstab, puedes ejecutar mount /mount/point como usuario no root.

Si quieres montar el segmento automáticamente al arrancar, puede que tengas que incluir la opción x-systemd.requires=network-online.target o la opción _netdev en tu entrada /etc/fstab para asegurarte de que Cloud Storage FUSE espere a que el sistema de red esté listo antes de montar el segmento. Por ejemplo:

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

Puedes montar un bucket automáticamente como un usuario específico que no sea root incluyendo las opciones uid, gid o ambas en tu entrada /etc/fstab. Por ejemplo:

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

Al igual que con el comando mount de Linux, las marcas que se usan para montar en el archivo /etc/fstab deben usar guiones bajos (_) en lugar de guiones (-). Por ejemplo, implicit_dirs en lugar de implicit-dirs.

Montar un contenedor con carpetas

Puede montar los contenedores con varios tipos de carpetas.

Montar un bucket con carpetas gestionadas

Para montar un contenedor, incluidas sus carpetas gestionadas, incluya la opción --implicit-dirs en el comando.

Por ejemplo, para montar un bucket llamado my-bucket y sus carpetas gestionadas en el directorio /path/to/mount/point, ejecuta los siguientes comandos:

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

Cuando montes un contenedor con carpetas gestionadas, ten en cuenta las siguientes limitaciones y consideraciones:

  • Las carpetas gestionadas vacías no aparecen en los contenedores montados.

  • No puedes definir ni gestionar permisos de gestión de identidades y accesos en una carpeta gestionada mediante Cloud Storage FUSE. Para definir o gestionar permisos de gestión de identidades y accesos en una carpeta gestionada, consulta Usar la gestión de identidades y accesos con carpetas gestionadas.

  • Puedes copiar y mover una carpeta gestionada en un contenedor montado mediante los comandos cp y mv. Cuando copias o mueves una carpeta gestionada, las políticas de gestión de identidades y accesos de la carpeta gestionada original no se conservan en la nueva carpeta gestionada. Debes definir nuevas políticas de gestión de identidades y accesos en la nueva carpeta gestionada.

Montar un contenedor con carpetas definidas implícitamente

Puedes montar carpetas definidas implícitamente mediante la opción de configuración --implicit-dirs en tu CLI de Cloud Storage FUSE. Las carpetas definidas implícitamente son carpetas que no se crean explícitamente como objetos en Cloud Storage. La opción de configuración --implicit-dirs le permite ver las carpetas al montar un contenedor.

Por ejemplo, para montar un bucket llamado my-bucket en el directorio /path/to/mount/point con carpetas definidas implícitamente, ejecuta el siguiente comando:

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

Montar un segmento con espacio de nombres jerárquico habilitado con carpetas

Puedes montar un contenedor con el espacio de nombres jerárquico habilitado, incluidas sus carpetas. Cuando montes un bucket con un espacio de nombres jerárquico, no tendrás que especificar la opción de configuración --implicit-dirs para que las carpetas aparezcan en el bucket montado.

Por ejemplo, para montar un bucket llamado my-bucket con carpetas en el directorio /path/to/mount/point, ejecuta el siguiente comando:

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

Controlar los permisos de acceso al punto de montaje

De forma predeterminada, Cloud Storage FUSE crea puntos de montaje de segmentos con permisos que solo permiten que el usuario que invoca acceda al contenido de los segmentos montados. Se trata de una medida de seguridad que se implementa en el kernel de FUSE.

Para montar un contenedor y permitir que otros usuarios accedan al punto de montaje del contenedor, puedes ejecutar el comando mount como root con la opción -o allow_other:

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

Si quieres evitar montar el contenedor como raíz, debes añadir user_allow_other al archivo /etc/fuse.conf para permitir que otros usuarios accedan al punto de montaje del contenedor.

Desmontar un segmento

Para desmontar un segmento, usa la herramienta fusermount:

fusermount -u /path/to/mount/point

Siguientes pasos