FUSE de Cloud Storage

En esta página se ofrece una descripción general de Cloud Storage FUSE, un adaptador FUSE que te permite montar y acceder a segmentos de Cloud Storage como sistemas de archivos locales, de modo que las aplicaciones puedan leer y escribir objetos en tu segmento mediante la semántica estándar del sistema de archivos.

Esta documentación siempre refleja la versión más reciente de Cloud Storage FUSE. Para obtener información sobre la versión más reciente, consulta las versiones de Cloud Storage FUSE en GitHub.

Informació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 de forma transparente los segmentos como carpetas montadas localmente en tu sistema de archivos.

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

Cómo funciona Cloud Storage FUSE

Cloud Storage FUSE funciona traduciendo los nombres de almacenamiento de objetos a una estructura similar a un directorio, interpretando el carácter de barra (/) en los nombres de los objetos como un separador de directorios. Los objetos con el mismo prefijo común se tratan como archivos del mismo directorio, lo que permite que las aplicaciones interactúen con el contenedor montado como si fuera un sistema de archivos. Los objetos también se pueden organizar en una estructura de sistema de archivos lógica mediante el espacio de nombres jerárquico, que te permite organizar objetos en carpetas.

Cloud Storage FUSE se puede ejecutar desde cualquier lugar con conectividad a Cloud Storage, como Google Kubernetes Engine, máquinas virtuales de Compute Engine o sistemas on-premise.

Casos prácticos de Cloud Storage FUSE

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

Cloud Storage FUSE para el aprendizaje automático

Cloud Storage FUSE es una opción habitual para los desarrolladores que quieren almacenar y acceder a datos de entrenamiento y modelos de aprendizaje automático como objetos en Cloud Storage. Cloud Storage FUSE ofrece varias ventajas para desarrollar proyectos de aprendizaje automático:

  • Cloud Storage FUSE te permite montar segmentos de Cloud Storage como un sistema de archivos local para que tus aplicaciones puedan acceder a los datos de entrenamiento y del modelo mediante la semántica estándar del sistema de archivos. Esto significa que puedes evitar el coste de reescribir o refactorizar el código de tu aplicación cuando uses Cloud Storage para almacenar datos de aprendizaje automático.

  • Desde el entrenamiento hasta la inferencia, Cloud Storage FUSE te permite usar la alta escalabilidad, el rendimiento y la rentabilidad integrados de Cloud Storage, de modo que puedas ejecutar tus cargas de trabajo de aprendizaje automático a gran escala.

  • Cloud Storage FUSE te permite iniciar tareas de entrenamiento rápidamente, ya que proporciona recursos de computación con acceso directo a los datos de Cloud Storage, por lo que no es necesario descargar los datos de entrenamiento en el recurso de computación.

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

Frameworks, sistemas operativos y arquitecturas

Cloud Storage FUSE se ha validado 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 versiones posteriores

  • Ubuntu 18.04 o versiones posteriores

  • Debian 10 o versiones posteriores

  • CentOS 7.9 o versiones posteriores

  • RHEL 7.9 o versiones posteriores

  • SLES 15 o versiones posteriores

  • x86_64

  • ARM64

Integraciones de Cloud Storage FUSE con productos Google Cloud

Cloud Storage FUSE se integra con los siguientes productos: Google Cloud

Producto Cómo se integra Cloud Storage FUSE
Hypercomputer de IA

Cloud Storage con Cloud Storage FUSE es la solución de almacenamiento recomendada para la mayoría de los casos prácticos de IA y aprendizaje automático, ya que te permite escalar el almacenamiento de datos de forma más rentable que los servicios de sistemas de archivos. Para obtener más información, consulta Servicios de almacenamiento.

Google Kubernetes Engine (GKE)

El controlador de CSI de Cloud Storage FUSE gestiona la integración de Cloud Storage FUSE con la API de Kubernetes para consumir segmentos de Cloud Storage como volúmenes. Puedes usar el controlador CSI de Cloud Storage FUSE para montar los contenedores como sistemas de archivos en los nodos de Google Kubernetes Engine.

Entrenamiento de Vertex AI

Puedes acceder a los datos de un segmento de Cloud Storage como un sistema de archivos montado cuando realices un entrenamiento personalizado en Vertex AI. Para obtener más información, consulta Preparar el código de entrenamiento.

Vertex AI Workbench

Las instancias de Vertex AI Workbench incluyen una integración de Cloud Storage que te permite buscar segmentos 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 segmentos y archivos de Cloud Storage a los que tiene acceso tu instancia dentro del mismo proyecto que tu instancia de Vertex AI Workbench. Para configurar la integración, consulta las instrucciones de Vertex AI Workbench sobre cómo acceder a archivos y segmentos de Cloud Storage en JupyterLab.

Imágenes de máquinas virtuales de aprendizaje profundo

Cloud Storage FUSE viene preinstalado en las imágenes de máquina virtual de aprendizaje profundo.

Contenedores de aprendizaje profundo

Para montar segmentos de Cloud Storage en contenedores de aprendizaje profundo, puedes usar el controlador CSI de Cloud Storage FUSE (opción recomendada) o instalar Cloud Storage FUSE.

Batch

Cloud Storage FUSE te permite montar segmentos de Cloud Storage como volúmenes de almacenamiento cuando creas y ejecutas tareas de Batch. Puedes especificar un contenedor en la definición de una tarea, y el contenedor se montará automáticamente en las VMs de la tarea cuando esta se ejecute.

Cloud Run

Cloud Run te permite montar un segmento de Cloud Storage como volumen y presenta el contenido del segmento como archivos en el sistema de archivos del contenedor. Para configurar el montaje de volúmenes, consulta Montar un volumen de Cloud Storage.

Cloud Composer

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

Cluster Toolkit

Cluster Toolkit te permite crear o montar un segmento de Cloud Storage como sistema de archivos. Puedes especificar el bucket en un archivo YAML de un blueprint mediante el módulo adecuado. El contenedor se crea o se monta automáticamente cuando se ejecuta el despliegue.

Dataflow

Cuando usas Cloud Storage FUSE para montar segmentos de Cloud Storage directamente en el sistema de archivos del trabajador, el código del flujo de procesamiento de Apache Beam subyacente de Dataflow puede acceder a los archivos de Cloud Storage directamente mediante la semántica estándar del sistema de archivos. Esto es especialmente útil cuando se usa Dataflow para tareas de IA o aprendizaje automático que implican conjuntos de datos de gran tamaño y software que requiere acceso a archivos.

Para ver una lista de los Google Cloud productos que se integran con Cloud Storage Google Cloud en general, consulta Integración con servicios y herramientas.

Almacenamiento en caché

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

Semántica de directorios

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

Por ejemplo, supongamos que montas un segmento llamado my-bucket, que contiene un objeto llamado my-directory/my-object.txt, donde my-directory/ es una carpeta simulada. Cuando ejecutas ls en el punto de montaje del segmento, de forma predeterminada, Cloud Storage FUSE no puede acceder al directorio simulado my-bucket/my-directory/ ni al objeto my-object.txt que contiene. Para que Cloud Storage FUSE pueda inferir la carpeta simulada y el objeto que contiene, incluye la opción --implicit-dirs de la CLI o el campo implicit-dirs como parte del comando gcsfuse mount al montar un segmento de espacio de nombres plano.

Si necesitas almacenar tus datos y acceder a ellos mediante un sistema de archivos, usa segmentos con el espacio de nombres jerárquico habilitado. Para saber cómo crear estos segmentos, consulta Crear segmentos con el espacio de nombres jerárquico habilitado.

Para obtener más información sobre la semántica de los directorios, incluido cómo montar los contenedores con directorios definidos implícitamente, consulta Archivos y directorios en la documentación de GitHub.

Estrategias de reintento de Cloud Storage FUSE

De forma predeterminada, las solicitudes fallidas de Cloud Storage FUSE a Cloud Storage se vuelven a intentar con un tiempo de espera exponencial hasta un tiempo de espera máximo especificado, que tiene un valor de 30s (30 segundos) de forma predeterminada. Una vez que la duración del tiempo de espera supera la duración máxima especificada, el reintento continúa con la duración máxima especificada. Puede usar la opción --max-retry-sleep de la CLI o el campo gcs-retries:max-retry-sleep como parte de una llamada gcsfuse mount para especificar la duración del retroceso.

Estrategia de reintento para solicitudes de GET o READ bloqueadas

Cuando realizas una solicitud GET o READ con Cloud Storage FUSE, se aplica un periodo de tiempo de espera. Si la solicitud supera el periodo de tiempo de espera, Cloud Storage FUSE la cancela y vuelve a intentarlo mediante un algoritmo de retirada exponencial.

El tiempo de espera es dinámico y se basa en la latencia del percentil 99 de las solicitudes GET o READ anteriores que se hayan completado o cancelado correctamente, con un mínimo de 1,5 segundos. De esta forma, solo se reintentarán las solicitudes más lentas (el 1 %), es decir, las que superen la latencia histórica del percentil 99.

Estrategia de reintento para subidas bloqueadas

Las escrituras de archivos grandes se suben en fragmentos. Para reducir las latencias de escritura de la parte final, si una operación de escritura a nivel de fragmento se bloquea o falla, Cloud Storage FUSE intenta volver a realizarla después de 10 segundos. Se realizan un máximo de cuatro operaciones de reintento por cada fragmento detenido.

Operaciones de Cloud Storage FUSE asociadas a operaciones de Cloud Storage

Cuando realizas una operación con Cloud Storage FUSE, también realizas las operaciones de Cloud Storage asociadas a la operación de Cloud Storage FUSE. En la siguiente tabla se describen los comandos de Cloud Storage FUSE habituales y las operaciones de la API JSON de Cloud Storage asociadas. Para mostrar información sobre las operaciones de Cloud Storage FUSE, puedes definir la opción --log-severity de la CLI o el campo logging:severity en TRACE en el comando gcsfuse.

Comando Operaciones de la API JSON
gcsfuse --log-severity=TRACE example-bucket mp Objects.list (para comprobar 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"), al cerrar después de escribir

rm -rf subdir

Objects.list("subdir")

Objects.list("subdir/")

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

Objects.list("subdir/")

Objects.delete("subdir/")

Métricas

Cloud Storage ofrece métricas detalladas que pueden ayudarte a optimizar el rendimiento y los costes de Cloud Storage FUSE. Para obtener más información sobre las métricas de Cloud Storage FUSE, consulta Métricas de Cloud Storage FUSE.

Precios de Cloud Storage FUSE

Cloud Storage FUSE está disponible sin coste, pero el almacenamiento, los metadatos y la E/S de red que genera hacia y desde Cloud Storage se cobran como cualquier otra interfaz de Cloud Storage. Es decir, todas las transferencias de datos y las operaciones que realiza Cloud Storage FUSE se corresponden con las transferencias y las operaciones de Cloud Storage, y se cobran en consecuencia. Para obtener más información sobre 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 calcular cómo se traducirá tu uso de Cloud Storage FUSE en cargos de Cloud Storage. Por ejemplo, si usas Cloud Storage FUSE para almacenar archivos de registro, puedes incurrir en cargos rápidamente si los registros se vacían de forma agresiva en cientos o miles de máquinas al mismo tiempo.

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

Limitaciones

Aunque Cloud Storage FUSE tiene 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 el estándar POSIX. Para obtener información sobre 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 es diferente a la de los sistemas de archivos POSIX. Cloud Storage FUSE solo debe usarse 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 los metadatos de los objetos al subir archivos a Cloud Storage, excepto los de mtime y los destinos de enlaces simbólicos. Esto significa que no puedes definir metadatos de objetos cuando subes archivos con Cloud Storage FUSE. Si necesitas conservar los metadatos de los objetos, te recomendamos que subas los archivos con la CLI de Google Cloud, la API JSON o la consola deGoogle Cloud Google Cloud.
  • Simultaneidad: cuando configuras varios puntos de montaje para acceder al mismo segmento de Cloud Storage y dos o más montajes intentan escribir en el mismo objeto de Cloud Storage simultáneamente, se guarda el primer montaje que completa la operación de escritura y vacía correctamente sus cambios en el objeto. Otros montajes que no hayan actualizado sus descriptores de archivos locales después de que se haya modificado el objeto se encontrarán con un error syscall.ESTALE al intentar guardar sus cambios debido a las comprobaciones de las condiciones previas. Para asegurarte de que tus datos se escriban de forma coherente, te recomendamos que no permitas que varias fuentes modifiquen el mismo objeto.

    Ten en cuenta que varios lectores pueden acceder a los mismos objetos o a objetos diferentes de un mismo contenedor, y que varios escritores pueden modificar objetos diferentes del mismo contenedor simultáneamente. Se admiten escrituras simultáneas en el mismo objeto de Cloud Storage desde el mismo montaje y se comportan de forma similar a los sistemas de archivos integrados.

  • Vinculación: Cloud Storage FUSE no admite enlaces físicos.
  • Bloqueo y parcheado de archivos: Cloud Storage FUSE no admite el bloqueo ni el parcheado de archivos. Por lo tanto, no debes almacenar repositorios de sistemas de control de versiones en puntos de montaje de Cloud Storage FUSE, ya que estos sistemas se basan en el bloqueo y el parcheo de archivos. Además, no debes usar Cloud Storage FUSE como sustituto de archivos.
  • Semántica: la semántica de Cloud Storage FUSE es diferente de la de un sistema de archivos convencional. Por ejemplo, no se admiten metadatos como la hora del último acceso y algunas operaciones de metadatos, como el cambio de nombre de los directorios, no son atómicas a menos que uses segmentos con el espacio de nombres jerárquico habilitado. Para ver una lista de las diferencias entre la semántica de Cloud Storage FUSE y la semántica de los sistemas de archivos convencionales, consulta la sección Semántica de la documentación de Cloud Storage FUSE en GitHub. Para obtener información sobre cómo infiere Cloud Storage FUSE los directorios en Cloud Storage, consulta la semántica de los directorios.
  • Cargas de trabajo que parchean archivos (o sobrescriben archivos in situ): Cloud Storage FUSE solo puede escribir objetos completos a la vez en Cloud Storage y no proporciona ningún mecanismo para aplicar parches. Si intentas aplicar un parche a un archivo, Cloud Storage FUSE volverá a subir todo el archivo. La única excepción a este comportamiento es que puedes añadir contenido al final de un archivo de 2 MB o más, en cuyo caso Cloud Storage FUSE solo volverá a subir el contenido añadido.
  • Acceso: la autorización de los archivos se rige por los permisos de Cloud Storage. El control de acceso de estilo POSIX no funciona.
  • Rendimiento: Cloud Storage FUSE tiene una latencia mucho mayor que un sistema de archivos local, por lo que no se debe usar como backend para almacenar una base de datos. El rendimiento puede reducirse al leer o escribir un archivo pequeño a la vez. Si usas archivos más grandes o transfieres varios archivos a la vez, aumentarás el rendimiento.
  • Disponibilidad: a veces pueden producirse errores transitorios cuando usas Cloud Storage FUSE para acceder a Cloud Storage. Te recomendamos que vuelvas a intentar las operaciones fallidas mediante estrategias de reintento.
  • Gestión de versiones de objetos: Cloud Storage FUSE no admite formalmente el uso con segmentos que tengan habilitada la gestión de versiones de objetos. Si intentas usar Cloud Storage FUSE con segmentos que tienen habilitada la gestión de versiones de objetos, puede que se produzcan comportamientos impredecibles.
  • Transcodificación de archivos:

    Objetos con content-encoding: gzip en los metadatos: cualquier objeto de este tipo en un directorio montado con Cloud Storage FUSE no se somete a transcodificación con descompresión. En su lugar, el objeto permanece comprimido de la misma manera que se almacena en el contenedor.

    Por ejemplo, un archivo de 1000 bytes subido a un segmento mediante el comando gcloud storage cp con la marca --gzip-local puede convertirse en un objeto de Cloud Storage de 60 bytes (el tamaño comprimido real depende del contenido y de la implementación de gzip que utilice la CLI de gcloud). Si el segmento se monta con gcsfuse y el archivo correspondiente se muestra o se lee desde el directorio de montaje, su tamaño se devuelve como 60 bytes y su contenido es una versión comprimida del contenido original de 1000 bytes.

    Esto contrasta con una descarga mediante gcloud storage cp gs://bucket/path /local/path, que se somete a una transcodificación de descompresión: en el comando gcloud, el contenido se descomprime automáticamente durante la descarga y se sirve el contenido original sin comprimir.

  • Políticas de retención: Cloud Storage FUSE no admite la escritura en segmentos con una política de retención. Si intentas escribir en un bucket con una política de conservación, tus escrituras fallarán.

    Cloud Storage FUSE admite la lectura de objetos de segmentos con una política de conservación, pero el segmento debe montarse como Read-Only pasando la marca -o RO durante el montaje del segmento.

  • Almacenamiento local: los objetos nuevos o modificados se almacenan por completo en un archivo temporal local hasta que se cierran o se sincronizan. Cuando trabajes con archivos de gran tamaño, asegúrate de tener suficiente capacidad de almacenamiento local para las copias temporales de los archivos, sobre todo si trabajas con instancias de Compute Engine. Para obtener más información, consulta el archivo README de la documentación de Cloud Storage FUSE en GitHub.
  • Límites de controladores de archivos: el kernel de Linux tiene un límite predeterminado de 1024 controladores de archivos abiertos. Si usas Cloud Storage FUSE como servidor para gestionar varias conexiones simultáneas, es posible que superes este límite. Para evitar problemas, asegúrese de que el número de conexiones simultáneas a un solo host no supere el límite y considere la posibilidad de aumentarlo. Entre los casos en los que esto es importante se incluyen el uso de un montaje de FUSE de Cloud Storage para servir contenido web, alojar almacenamiento conectado a la red (NAS) o alojar un servidor de protocolo de transferencia de archivos (FTP). Cuando se sirve contenido web en Cloud Run desde un montaje de FUSE de Cloud Storage, el número máximo de solicitudes simultáneas por instancia se limita a menos de 1000.
  • Limitaciones de rsync: la latencia del sistema de archivos de Cloud Storage FUSE afecta a rsync, que solo lee y escribe un archivo a la vez. Para transferir varios archivos a tu segmento o desde él en paralelo, usa Google Cloud CLI ejecutando 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 de un segmento montado, por ejemplo, ejecutando ls, Cloud Storage FUSE llama a la API Objects: list de Cloud Storage. La API pagina los resultados, lo que significa que Cloud Storage FUSE puede tener que emitir varias llamadas, en función del número de objetos que haya en tu segmento, lo que puede hacer que una operación de lista sea costosa y lenta.

Problemas conocidos

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

Obtener asistencia

Puedes obtener asistencia, enviar preguntas generales y solicitar nuevas funciones a través de uno de los canales de asistencia oficiales deGoogle Cloud. También puedes obtener asistencia registrando incidencias en GitHub.

Para obtener soluciones a problemas habituales, consulta el artículo Solución de problemas en la documentación de GitHub de Cloud Storage FUSE.

Siguientes pasos