Cloud Storage FUSE

En esta página, se proporciona una descripción general de Cloud Storage FUSE, un adaptador FUSE que te permite activar y acceder a los buckets de Cloud Storage como sistemas de archivos locales para que las aplicaciones puedan leer y escribir objetos en tu bucket con la semántica del sistema de archivos estándar.

Esta documentación siempre refleja la versión más reciente de Cloud Storage FUSE. Para obtener más detalles sobre la última versión, consulta Versiones de Cloud Storage FUSE en GitHub.

Descripción general

Cloud Storage FUSE es un producto de código abierto compatible con Google. Cloud Storage FUSE usa las APIs de FUSE y Cloud Storage para exponer los buckets como carpetas activadas de forma local en tu sistema de archivos.

Cloud Storage FUSE está integrado en otros servicios de Google Cloud. Por ejemplo, el controlador CSI de Cloud Storage FUSE te permite usar la API de Google Kubernetes Engine (GKE) para consumir buckets como volúmenes, de modo que puedas leer y escribir. Cloud Storage desde tus pods de Kubernetes. Para obtener más información acerca de otras integraciones, consulta Integraciones.

Cómo funciona Cloud Storage FUSE

Cloud Storage FUSE funciona con la traducción de nombres de almacenamiento de objetos en una estructura similar a un directorio y a través de la interpretación del carácter de barra (/) en nombres de objetos como un separador de directorio. Los objetos con el mismo prefijo común se tratan como archivos en el mismo directorio, lo que permite que las aplicaciones interactúen con el bucket activado como un sistema de archivos. Los objetos también se pueden organizar en una estructura de sistema de archivos lógico con el espacio de nombres jerárquico, que te permite organizar los objetos en carpetas.

Cloud Storage FUSE se puede ejecutar desde cualquier lugar con conectividad a Cloud Storage, como Google Kubernetes Engine, las VMs de Compute Engine o los sistemas locales.

Casos de uso de Cloud Storage FUSE

Cloud Storage FUSE es ideal para casos de uso en los que Cloud Storage tiene las características de escalabilidad y rendimiento correctas para una aplicación que requiere una semántica del sistema de archivos. Por ejemplo, Cloud Storage FUSE es útil para proyectos de aprendizaje automático (AA), ya que proporciona una forma de almacenar datos, modelos, puntos de control y registros de forma directa en Cloud Storage. Para obtener más información, consulta Cloud Storage FUSE para cargas de trabajo del AA.

Cloud Storage FUSE para el aprendizaje automático

Cloud Storage FUSE es una opción común para los desarrolladores que buscan almacenar y acceder a datos de entrenamiento y modelo de AA como objetos en Cloud Storage. Cloud Storage FUSE proporciona varios beneficios para desarrollar proyectos de AA:

  • Cloud Storage FUSE te permite activar los buckets de Cloud Storage como un sistema de archivos local para que tus aplicaciones puedan acceder a los datos de entrenamiento y modelo con la semántica del sistema de archivos estándar. Esto significa que puedes evitar el costo de volver a escribir o refactorizar el código de tu aplicación cuando uses Cloud Storage para almacenar datos de AA.

  • Desde el entrenamiento hasta la inferencia, Cloud Storage FUSE te permite usar la alta escalabilidad integrada, el rendimiento y la rentabilidad de costos de Cloud Storage, por lo que puedes ejecutar las cargas de trabajo de AA a gran escala.

  • Cloud Storage FUSE te permite iniciar trabajos de entrenamiento con rapidez, ya que proporciona recursos de procesamiento con acceso directo a los datos en Cloud Storage para que no tengas que descargar datos de entrenamiento en el recurso de procesamiento.

Para obtener más información, consulta Frameworks, sistemas operativos y arquitecturas compatibles con Cloud Storage FUSE.

Frameworks, sistemas operativos y arquitecturas

Cloud Storage FUSE se validó con los siguientes frameworks:

  • TensorFlow V2.x

  • TensorFlow V1.x

  • PyTorch V2.x

  • PyTorch V1.x

  • JAX 0.4.x

Cloud Storage FUSE es compatible con los siguientes sistemas operativos y arquitecturas:

  • Rocky Linux 8.9 o una versión posterior

  • Ubuntu 18.04 o una versión posterior

  • Debian 10 o una versión posterior

  • CentOS 7.9 o una versión posterior

  • RHEL 7.9 o una versión posterior

  • SLES 15 o versiones posteriores

  • x86_64

  • ARM64

Integraciones de Cloud Storage FUSE con productos de Google Cloud

Cloud Storage FUSE se integra en los siguientes productos de Google Cloud:

Producto Cómo se integra Cloud Storage FUSE
Google Kubernetes Engine (GKE)

El controlador CSI de Cloud Storage FUSE administra la integración de Cloud Storage FUSE con la API de Kubernetes para consumir buckets de Cloud Storage como volúmenes. Puedes usar el controlador CSI de Cloud Storage FUSE para activar buckets como sistemas de archivos en nodos de Google Kubernetes Engine.

Vertex AI Training

Puedes acceder a los datos desde un bucket de Cloud Storage como un sistema de archivos activado cuando realizas un entrenamiento personalizado en Vertex AI. Para obtener más información, consulta Prepara el código de capacitación.

Vertex AI Workbench

Las instancias de Vertex AI Workbench incluyen una integración de Cloud Storage que te permite explorar buckets y trabajar con archivos compatibles ubicados en Cloud Storage desde la interfaz de JupyterLab. La integración de Cloud Storage te permite acceder a todos los buckets y archivos de Cloud Storage a los que tiene acceso tu instancia dentro del mismo proyecto que tu instancia de Vertex AI Workbench. Si deseas configurar la integración, consulta las instrucciones de Vertex AI Workbench para acceder a los buckets y archivos de Cloud Storage en JupyterLab

Deep Learning VM Images

Cloud Storage FUSE viene preinstalado con Deep Learning VM Images.

Contenedores de aprendizaje profundo

Para activar los buckets de Cloud Storage para contenedores de aprendizaje profundo, puedes usar el controlador CSI de Cloud Storage FUSE (recomendado) o instalar Cloud Storage FUSE.

Batch

Cloud Storage FUSE te permite activar los buckets de Cloud Storage como volúmenes de almacenamiento cuando creas y ejecutas trabajos por lotes. Puedes especificar un bucket en la definición de un trabajo, y el bucket se activa de forma automática en las VMs para el trabajo cuando se ejecuta el trabajo.

Cloud Run

Cloud Run te permite activar un bucket de Cloud Storage como un volumen y presenta el contenido del bucket como archivos en el sistema de archivos del contenedor. Para configurar la activación de volumen, consulta Activa un volumen de Cloud Storage.

Cloud Composer

Cuando creas un entorno, Cloud Composer almacena el código fuente para tus flujos de trabajo y sus dependencias en carpetas específicas de un depósito de Cloud Storage. Cloud Composer usa Cloud Storage FUSE para asignar las carpetas del bucket a los componentes de Airflow en el entorno de Cloud Composer.

Para obtener una lista de los productos de Google Cloud integrados a Cloud Storage en general, consulta Integración con los servicios y herramientas de Google Cloud.

Almacenamiento en caché

Cloud Storage FUSE ofrece cuatro tipos de almacenamiento en caché para ayudar a aumentar el rendimiento y reducir los costos: almacenamiento en caché de archivos, almacenamiento en caché de estadísticas, almacenamiento en caché de tipo y almacenamiento en caché de listas. Para obtener más información sobre estas cachés, consulta Descripción general del almacenamiento en caché.

Semántica del directorio

Cloud Storage ofrece buckets con un espacio de nombres plano y con el espacio de nombres jerárquico habilitado. De forma predeterminada, Cloud Storage FUSE puede inferir directorios definidos de forma explícita, también conocidos como carpetas, en buckets con el espacio de nombres jerárquico habilitado, pero no puede inferir directorios definidos de forma implícita en buckets con un espacio de nombres plano. Los directorios definidos de forma implícita incluyen carpetas simuladas y carpetas administradas.

Por ejemplo, supongamos que activas un bucket llamado my-bucket, que contiene un objeto llamado my-directory/my-object.txt, en el que my-directory/ es una carpeta simulada. Cuando ejecutas ls en el punto de activación del bucket, de forma predeterminada, Cloud Storage FUSE no puede acceder al directorio simulado my-bucket/my-directory/ ni al objeto my-object.txt dentro de él. Para permitir que Cloud Storage FUSE infiera la carpeta simulada y el objeto dentro de ella, incluye la opción --implicit-dirs como parte de tu comando gcsfuse mount cuando actives un bucket de espacio de nombres plano. Para obtener más información sobre la opción --implicit-dirs, consulta la documentación de la línea de comandos de Cloud Storage FUSE.

Si necesitas almacenar datos y acceder a ellos con un sistema de archivos, usa buckets con espacio de nombres jerárquico habilitado. Para obtener información sobre cómo crear estos buckets, consulta Crea buckets con espacio de nombres jerárquico habilitado.

Para obtener más información sobre la semántica del directorio, incluido cómo activar buckets con directorios definidos de forma implícita, consulta Archivos y directorios en la documentación de GitHub.

Estrategia de reintentos

De forma predeterminada, las solicitudes que fallaron de Cloud Storage FUSE a Cloud Storage se reintentan con una retirada exponencial hasta una duración máxima de retirada especificada, que tiene un valor de 30s (30 segundos) de forma predeterminada. Una vez que la duración de retirada excede la duración máxima especificada, el reintento continúa con la duración máxima especificada. Puedes usar la opción --max-retry-sleep como parte de una llamada gcsfuse para especificar la duración de la retirada.

Para obtener más información sobre la opción --max-retry-sleep, consulta la documentación de la línea de comandos de gcsfuse.

Operaciones de Cloud Storage FUSE asociadas con operaciones de Cloud Storage

Cuando realizas una operación con Cloud Storage FUSE, también realizas las operaciones de Cloud Storage asociadas con la operación de Cloud Storage FUSE. En la siguiente tabla, se describen los comandos comunes de Cloud Storage FUSE y sus operaciones asociadas de la API de JSON de Cloud Storage. Puedes mostrar información de las operaciones de Cloud Storage FUSE si configuras la marca --log-severity como TRACE en tu comando gcsfuse.

Comando Operaciones de la API de JSON
gcsfuse --log-severity=TRACE example-bucket mp Lista de objetos (para verificar las credenciales)
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 crear un objeto vacío

Objects.insert("subdir/local.txt"), cuando se cierra después de escribir

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

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

Objects.list("subdir/")

Objects.delete("subdir/")

Precios de Cloud Storage FUSE

Cloud Storage FUSE está disponible de forma gratuita, pero el almacenamiento, los metadatos y la E/S de la red que genera desde Cloud Storage y hacia él tienen cargos como cualquier otra interfaz de Cloud Storage. En otras palabras, todas las operaciones y transferencias de datos realizadas por Cloud Storage FUSE se asignan a las operaciones y transferencias de Cloud Storage y se cobran según eso. Para obtener más información de las operaciones comunes de Cloud Storage FUSE y cómo se asignan a las operaciones de Cloud Storage, consulta la asignación de operaciones.

Para evitar sorpresas, debes estimar cómo se traduce tu uso de Cloud Storage FUSE en cargos de Cloud Storage. Por ejemplo, si usas Cloud Storage FUSE para almacenar archivos de registro, puedes generar cargos muy rápido si los registros se pasan a cientos o miles de máquinas al mismo tiempo.

Consulta los precios de Cloud Storage para obtener información sobre cargos como almacenamiento, uso de red y operaciones.

Limitaciones

Aunque Cloud Storage FUSE tenga una interfaz de sistema de archivos, no es como un sistema de archivos NFS o CIFS en el backend. Además, Cloud Storage FUSE no cumple con POSIX. Para obtener un producto del sistema de archivos POSIX en Google Cloud, consulta Filestore.

Cuando uses Cloud Storage FUSE, ten en cuenta sus limitaciones y su semántica, que son diferentes de las de los sistemas de archivos POSIX. Solo se debe usar Cloud Storage FUSE dentro de sus capacidades.

Limitaciones y diferencias con los sistemas de archivos POSIX

En la siguiente lista, se describen las limitaciones de Cloud Storage FUSE:

  • Metadatos: Cloud Storage FUSE no transfiere metadatos de objetos cuando se suben archivos a Cloud Storage, excepto los objetivos de mtime y symlink. Esto significa que no puedes establecer metadatos de objetos cuando subes archivos con Cloud Storage FUSE. Si necesitas conservar metadatos de objetos, considera subir archivos con Google Cloud CLI, la API de JSON o la consola de Google Cloud.
  • Simultaneidad: Cloud Storage FUSE no proporciona control de simultaneidad para escrituras múltiples en el mismo archivo. Cuando varias escrituras intentan reemplazar un archivo, la última escritura gana y todas las escrituras anteriores se pierden. No hay combinación, control de versión ni notificación de usuario del reemplazo posterior.
  • Vínculos: Cloud Storage FUSE no es compatible con vínculos duros.
  • Bloqueo de archivos y aplicación de parches de archivos: Cloud Storage FUSE no es compatible con el bloqueo de archivos ni la aplicación de parches a archivos. Por lo tanto, no debes almacenar repositorios de sistemas de control de versión en los puntos de activación de Cloud Storage FUSE, ya que los sistemas de control de versión dependen del bloqueo y la aplicación de parches de archivos. Además, no debes usar Cloud Storage FUSE como reemplazo de archivos.
  • Semántica: la semántica en Cloud Storage FUSE es diferente de la semántica en un sistema de archivos tradicional. Por ejemplo, los metadatos, como la hora del último acceso, no son compatibles y algunas operaciones de metadatos, como cambiar el nombre de un directorio, no son atómicas, a menos que uses buckets con espacio de nombres jerárquico habilitado. Para obtener una lista de las diferencias entre la semántica de Cloud Storage FUSE y la semántica convencional del sistema de archivos, consulta Semántica en la documentación de GitHub de Cloud Storage FUSE. Para obtener información sobre cómo Cloud Storage FUSE infiere directorios en Cloud Storage, consulta semántica de directorio.
  • Cargas de trabajo que aplican parches de archivos (o lo reemplazan): Cloud Storage FUSE solo puede escribir objetos completos a la vez en Cloud Storage y no proporciona un mecanismo para la aplicación de parches. Si intentas aplicar un parche a un archivo, Cloud Storage FUSE volverá a subir el archivo completo. La única excepción a este comportamiento es que puedes agregar contenido al final de un archivo de 2 MB o más, en el que Cloud Storage FUSE solo volverá a subir el contenido agregado.
  • Acceso: La autorización de los archivos está regido por los permisos de Cloud Storage. El control de acceso estilo POSIX no funciona.
  • Rendimiento: Cloud Storage FUSE tiene una latencia más alta que un sistema de archivos local y, por lo tanto, no debe usarse como backend para almacenar una base de datos. La capacidad de procesamiento se puede reducir cuando se lee o escribe un archivo pequeño a la vez. El uso de archivos más grandes o la transferencia de muchos archivos a la vez ayudará a aumentar la capacidad de procesamiento.
  • Disponibilidad: Los errores transitorios a veces pueden ocurrir cuando usas Cloud Storage FUSE para acceder a Cloud Storage. Se recomienda que vuelvas a intentar realizar las operaciones con errores a través de las estrategias de reintento.
  • Control de versiones de objetos: Cloud Storage FUSE no es compatible de manera formal con los buckets que tienen habilitado el control de versiones de objetos. Intentar usar Cloud Storage FUSE con depósitos que tienen habilitado el control de versiones de objetos puede producir un comportamiento impredecible.
  • Transcodificación de archivos:

    Objetos con content-encoding: gzip en metadatos: Cualquier objeto de ese tipo en un directorio activado por Cloud Storage FUSE no se somete a transcodificación descompresiva. En cambio, el objeto permanece comprimido de la misma manera que se almacena en el bucket.

    Por ejemplo, un archivo de 1,000 bytes, que se sube a un bucket a través del comando gcloud storage cp con la marca --gzip-local, podría convertirse en 60 bytes (el tamaño comprimido real depende del contenido y la implementación de gzip que usa gcloud CLI) como un objeto de Cloud Storage. Si el bucket se activa con gcsfuse y el archivo correspondiente aparece en la lista o se lee desde el directorio de activación, su tamaño se muestra como 60 bytes y su contenido es una versión comprimida del contenido original de 1,000 bytes.

    Esto contrasta con una descarga a través de gcloud storage cp gs://bucket/path /local/path, que se somete a una transcodificación descompresiva: en el comando gcloud, el contenido se descomprime de forma automática durante la descarga y se entrega el contenido original sin comprimir.

  • Políticas de retención: Cloud Storage FUSE no admite la escritura en depósitos con una política de retención. Si intentas escribir en un bucket con una política de retención, las operaciones de escritura fallarán.

    Cloud Storage FUSE admite la lectura de objetos de buckets con una política de retención, pero el bucket debe activarse como Read-Only si pasas la marca -o RO durante la activación del bucket.

  • Almacenamiento local: los objetos nuevos o modificados se almacenarán en su totalidad en un archivo temporal local hasta que se cierren o se sincronicen. Cuando trabajes con archivos grandes, asegúrate de que tienes la capacidad suficiente de almacenamiento local para las copias temporales de los archivos, en particular si trabajas con instancias de Google Compute Engine. Para obtener más información, consulta el archivo README en la documentación de GitHub de Cloud Storage FUSE.
  • Límites de control de archivos: El kernel de Linux tiene un límite predeterminado de 1,024 controles de archivos abiertos. Cuando usas Cloud Storage FUSE como un servidor para controlar varias conexiones simultáneas, es posible que superes este límite. Para evitar problemas, asegúrate de que la cantidad de conexiones simultáneas a un solo host permanezca por debajo del límite y considera aumentarlo. Entre las situaciones en las que esto es importante, se incluye el uso de una vinculación de Cloud Storage FUSE para entregar contenido web, alojar almacenamiento conectado a la red (NAS) o alojar un servidor de protocolo de transferencia de archivos (FTP). Cuando se entrega contenido web en Cloud Run desde una activación de Cloud Storage FUSE, las solicitudes simultáneas máximas por instancia se limitan a menos de 1,000.
  • Limitaciones de rsync: La latencia del sistema de archivos de Cloud Storage FUSE afecta a rsync, que lee y escribe solo un archivo a la vez. Para transferir varios archivos hacia o desde tu bucket en paralelo, usa Google Cloud CLI a través de la ejecución de gcloud storage rsync. Para obtener más información, consulta la documentación de rsync .
  • Limitaciones de las operaciones de lista: Cuando enumeras todos los objetos en un bucket activado, por ejemplo, cuando ejecutas ls, Cloud Storage FUSE llama a la API de Objects: list en Cloud Storage. La API pagina los resultados, lo que significa que Cloud Storage FUSE puede necesitar emitir varias llamadas, según cuántos objetos haya en tu bucket, lo que puede hacer que una operación de lista sea costosa y lenta.

Problemas conocidos

Para obtener una lista de problemas conocidos en Cloud Storage FUSE, consulta GitHub.

Obtenga asistencia

Puedes obtener asistencia, enviar preguntas generales y solicitar funciones nuevas a través de uno de los canales de asistencia oficiales de Google Cloud. También puedes obtener asistencia si presentas problemas en GitHub.

Para obtener soluciones para problemas comunes, consulta Solución de problemas en la documentación de GitHub de Cloud Storage FUSE.

¿Qué sigue?