Cloud Storage FUSE

Cloud Storage FUSE es un adaptador FUSE de código abierto que te permite activar los depósitos de Cloud Storage como sistemas de archivo en sistemas Linux o macOS. También proporciona una manera para que las aplicaciones suban y descarguen objetos de Cloud Storage con semánticas de sistema de archivo estándar. Cloud Storage FUSE se puede ejecutar en cualquier lugar con conectividad a Cloud Storage, como las VM de Google Compute Engine o sistemas locales1.

Cloud Storage FUSE es una herramienta de código abierto apoyada por la comunidad y desarrollada por Google, escrita en Go y alojada en GitHub. Cloud Storage FUSE se rige solo por la licencia Apache y no por ningún otro término o condición. Se distribuye como es, sin garantías de ningún tipo. La asistencia es a través de la comunidad y está disponible en Server Fault con las etiquetas google-cloud-platform y gcsfuse. Consulta las preguntas y respuestas anteriores para verificar si ya se respondió sobre tu problema.

Descripción técnica general

Cloud Storage FUSE funciona mediante la traducción de nombres de almacenamiento de objetos en un archivo y sistema de directorio y mediante la interpretación del carácter “/” en nombres de objetos como un separador de directorio para que los objetos con el mismo prefijo se traten como archivos en el mismo directorio. Las aplicaciones pueden interactuar con el depósito activado como un sistema de archivo simple y proporcionar almacenamiento de archivos sin límite y virtual que se ejecute en la nube.

Aunque Cloud Storage FUSE tenga una interfaz de sistema de archivos, no es como un sistema de archivos NFS o CIFS en backend. Cloud Storage FUSE conserva las mismas características fundamentales que Cloud Storage, mediante la preservación de la escalabilidad de Cloud Storage en términos de tamaño y rendimiento agregado y mantiene la misma latencia y rendimiento de objeto único. Igual que con otros métodos de acceso, Cloud Storage no es compatible con la concurrencia y el bloqueo. Por ejemplo, si muchos clientes de Cloud Storage FUSE escriben en el mismo archivo, la última limpieza es la que gana.

Para obtener más información sobre cómo usar Cloud Storage FUSE o informar un problema, dirígete al repositorio de GitHub de Google Cloud Platform. En el repositorio, recomendamos que revises README, semántica, instalación y activación.

Usa Cloud Storage FUSE

Para obtener todos los detalles sobre la instalación y el funcionamiento de Cloud Storage FUSE, consulta GoogleCloudPlatform/gcsfuse en el repositorio de GitHub. En los siguientes pasos, encontrarás una descripción general sobre cómo trabajar con Cloud Storage FUSE de manera interactiva, es decir, sobre cómo activar el depósito de forma manual.

  1. Sigue las instrucciones para instalar Cloud Storage FUSE y sus dependencias.

  2. Configura las credenciales para Cloud Storage FUSE.

    Cloud Storage FUSE descubre de manera automática las credenciales de acuerdo con las credenciales predeterminadas de la aplicación:

    1. Si estás ejecutando en una instancia de Google Compute Engine con el alcance storage-full configurado, Cloud Storage FUSE puede usar la cuenta de servicio integrada de Compute Engine. Para obtener más información, consulta Usa las cuentas de servicio con aplicaciones.

    2. Si instalaste el SDK de Google Cloud y ejecutaste gcloud auth application-default login, Cloud Storage FUSE puede usar estas credenciales.

    3. Si configuraste la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta de una cuenta de servicio de un archivo de claves JSON, Cloud Storage FUSE usará esta credencial. Para obtener más información sobre cómo crear una archivo de claves JSON con el uso de Google Cloud Platform Console, consulta Crea las claves de la cuenta de servicio.

    Si se especifica más de un tipo de credencial predeterminada de la aplicación, consulta Cómo funcionan las credenciales predeterminadas de la aplicación para obtener más información sobre el orden en el que se usan las credenciales.

  3. Crea un directorio.

    $ mkdir /path/to/mount
    
  4. Crea el depósito que quieras activar, si no existe, con Google Cloud Platform Console.

  5. Usa Cloud Storage FUSE para activar el depósito (p. ej., example-bucket).

    $ gcsfuse example-bucket /path/to/mount
    
  6. Comienza a trabajar con el depósito activado.

    $ ls /path/to/mount
    

Diferencias fundamentales de un sistema de archivos POSIX

Cloud Storage FUSE te ayuda a usar mejor y más rápido Cloud Storage debido a que permite que las aplicaciones basadas en archivos usen Cloud Storage sin volver a escribir el código de E/S. Es ideal para casos prácticos en los que Cloud Storage tiene las características de escalabilidad y rendimiento correctas para una aplicación y solo se pierde la semántica del sistema de archivos. Cuando haya que decidir si Cloud Storage FUSE es una solución correcta, debes tener en cuenta que existen varias diferencias adicionales con los sistemas de archivos locales:

Precio: el acceso a Cloud Storage FUSE es el acceso a Cloud Storage. 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. Consulta la sección de precios a continuación para obtener más detalles antes de usar Cloud Storage FUSE.

Rendimiento: Cloud Storage FUSE tiene una latencia más alta que un sistema de archivos local. Por ese motivo, 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.

  • Las transmisiones de E/S individuales se ejecutan casi con la misma rapidez que gsutil.
  • En particular, el comando gsutil rsync puede verse afectado por la latencia debido a que lee y escribe un archivo a la vez. Suele ser más rápido si usas la marca -m de nivel superior con el comando.
  • Las lecturas aleatorias pequeñas son lentas debido a la latencia del primer byte (no ejecutes una base de datos en Cloud Storage FUSE).
  • Las escrituras aleatorias se hacen mediante la lectura en el BLOB completo, la edición de manera local y la escritura del BLOB completo modificado de nuevo en Cloud Storage. Las escrituras pequeñas en archivos grandes funcionan como se espera, pero son lentas y caras.

Metadatos: Cloud Storage FUSE no transfiere metadatos junto con el archivo cuando se sube a Cloud Storage. Esto significa que, si quieres usar Cloud Storage FUSE como una herramienta de carga, no podrás configurar metadatos como tipo de contenido y lca de la manera en que lo harías con otros métodos de carga. Si las propiedades de los metadatos son fundamentales, considera el uso de gsutil, la API de JSON o Google Cloud Platform Console.

  • La excepción es que Cloud Storage FUSE almacena destinos mtime y symlink.

Simultaneidad: no hay control de simultaneidad para escritores múltiples de un archivo. Cuando varios escritores tratan de reemplazar un archivo, gana la última escritura y todas las escrituras anteriores se pierden, no hay fusión, control de versiones o notificación de usuario del reemplazo posterior.

Vínculos: Cloud Storage FUSE no es compatible con vínculos duros.

Semántica: algunas semánticas no son iguales a como serían en un sistema de archivos tradicional. La lista de excepciones está aquí. Por ejemplo, los metadatos como la hora del último acceso no son compatibles y algunas operaciones de metadatos como renombrar directorio no son atómicas.

Acceso: la autorización de los archivos se rige por los permisos de Cloud Storage. El control de acceso estilo POSIX no funciona.

Disponibilidad: en ocasiones, ocurren errores transitorios en sistemas distribuidos como Cloud Storage, lo que lleva a una disponibilidad menor al 100%. Recomendamos que los reintentos se realicen con los lineamientos de la retirada exponencial truncada.

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 la documentación readme.

Directorios: por configuración predeterminada, solo los directorios que están definidos de manera explícita (es decir que son su propio objeto en Cloud Storage) aparecerán en el sistema de archivos. Los directorios implícitos (los que son solo parte del nombre de ruta de otros archivos o directorios) no aparecerán por configuración predeterminada. Si hay archivos que contienen un directorio implícito en su nombre de ruta, no aparecerán en el árbol de directorios general (debido a que el directorio implícito que contiene esos archivos no aparece). Existe una marca disponible para cambiar este comportamiento. Para obtener más información, consulta la documentación de semántica.

Cargos generados con 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. Para evitar sorpresas, debes estimar como 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 generar cargos muy rápido si los registros se pasan a cientos o miles de máquinas al mismo tiempo.

Debes tener en cuenta las siguientes categorías de cargos relacionadas con el uso de Cloud Storage FUSE:

  • Las operaciones de objetos normales (crear, borrar y enumerar) generan cargos como se describe en la sección Operaciones de la página de precios de Cloud Storage.

  • Los objetos de Nearline Storage y Coldline Storage tienen costos asociados con la recuperación y la eliminación anticipada. Consulta la sección Recuperación y eliminación anticipada en la página de precios de Cloud Storage.

  • Los cargos de salida y la transferencia de datos de la red entre ubicaciones regionales y multirregionales generan costos. Consulta la sección Red en la página de precios de Cloud Storage.

Ejemplo de desglose del costo

Para tener una idea de cómo se traduce el uso de Cloud Storage FUSE en costos de Cloud Storage, considera la siguiente secuencia de comandos y sus operaciones de la API de JSON asociadas. Puedes mostrar información sobre las operaciones mediante la marca --debug_gcs.

Comando Operaciones de la API de JSON
gcsfuse --debug_gcs example-bucket mp Lista de objetos (para verificar las credenciales)
cd mp No corresponde
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íoObjects.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/")

Si usas los cargos de operación en la API de JSON, podemos calcular que, para las 14 operaciones, hay 8 operaciones Clase A, 4 operaciones Clase B y 2 operaciones gratuitas. También se cobra un cargo por el almacenamiento del archivo local.txt. Si borras el archivo pronto después de crearlo, ese cargo se desestimará. Solo por las 12 operaciones con cargo, el costo de esa secuencia de comandos es de $0.000084.

1Cloud Storage FUSE es compatible con la versión 3.10 y posterior de Linux kernel. Para verificar tu versión de kernel, puedes usar uname -a.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.