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:
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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 ejecutarmount /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
ymv
. 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
Consulta información sobre el rendimiento de Cloud Storage FUSE, como cómo controlar el comportamiento del almacenamiento en caché o la actividad de registro.
Consulta información sobre la semántica de los directorios en Cloud Storage FUSE.