Duplica desde Cloud Storage

Una duplicación de Cloud Storage proporciona un servicio de sincronización automatizado y controlado por eventos que duplica de forma continua los archivos de un bucket de Cloud Storage en un directorio de Managed Lustre. La duplicación solo se admite en una dirección, de Cloud Storage a Managed Lustre.

Los mirrors de Cloud Storage solo están disponibles si se solicitan. Para indicar tu interés, envía el formulario de solicitud de duplicación de Cloud Storage.

Para obtener asistencia con las duplicaciones activas de Cloud Storage, comunícate con google-cloud-managed-lustre-support@google.com.

Duplicaciones de Cloud Storage en comparación con las transferencias de datos a pedido

Managed Lustre admite dos mecanismos para mover datos con Cloud Storage:

Función Duplicados de Cloud Storage Transferencias de datos a pedido
Dirección De Cloud Storage a Managed Lustre De Cloud Storage a Managed Lustre

De Managed Lustre a Cloud Storage
Activador Se basa en eventos y se sincroniza automáticamente cuando se crea, actualiza y borra un objeto. Manual
Espacio de nombres jerárquico No compatible Se admite y se recomienda para acelerar las velocidades de transferencia
Buckets de Rapid Storage No compatible No compatible

Para obtener información sobre las transferencias a pedido, consulta Transfiere datos hacia o desde Cloud Storage.

Cómo funciona una duplicación de Cloud Storage

Una duplicación de Cloud Storage ejecuta transferencias controladas por eventos entre una fuente de Cloud Storage y un directorio de Managed Lustre de destino. La fuente de Cloud Storage puede ser un bucket o un prefijo de objeto específico dentro de un bucket. La duplicación se realiza en dos fases: una sincronización inicial cuando creas la duplicación, seguida de una replicación continua de los cambios posteriores.

Sincronización inicial

Cuando creas una duplicación de Cloud Storage, el servicio realiza una sincronización inicial para copiar todos los objetos existentes de la ruta de acceso de origen de Cloud Storage al directorio de destino de Managed Lustre.

Replicación continua basada en eventos

Después de la sincronización inicial, el servicio de duplicación escucha las notificaciones del bucket y replica los cambios.

La mayoría de los objetos se pueden replicar en cuestión de minutos. Cuando se crea o modifica un objeto, se copia todo el archivo.

  • Cuando creas un objeto nuevo en Cloud Storage, se crea automáticamente el archivo correspondiente en Managed Lustre.

  • Si modificas un objeto existente en Cloud Storage, se reemplaza el archivo en Managed Lustre y se descartan las modificaciones locales realizadas en el sistema de archivos.

  • Los cambios en los atributos de metadatos personalizados de POSIX en los objetos de Cloud Storage, como UID, GID, modo o mtime, se actualizan en el archivo de Managed Lustre correspondiente.

  • Si borras un objeto en Cloud Storage, se borra el archivo duplicado en Managed Lustre de forma predeterminada. Puedes cambiar este comportamiento con la marca --deleted-files-retained. Los directorios superiores vacíos permanecen en el sistema de archivos después de que se borra el último archivo que se encuentra debajo de ellos.

  • Las modificaciones que se realicen en Managed Lustre en los archivos duplicados no se copian de vuelta al bucket de origen. Si el objeto de origen se actualiza más adelante, el archivo de Managed Lustre se reemplaza por el contenido del objeto de origen y se descartan las modificaciones locales.

  • Borrar un archivo duplicado en Managed Lustre no borra el objeto correspondiente en Cloud Storage.

Velocidades de transferencia

Las siguientes velocidades de transferencia se aplican a las duplicaciones de Cloud Storage cuyos buckets y instancias se encuentran en la misma región de Google Cloud :

  • La sincronización inicial copia los datos existentes a una velocidad de hasta 100 GBps para archivos de más de 32 MB y hasta 10,000 objetos por segundo para archivos pequeños.

  • La replicación continua sincroniza automáticamente los cambios en curso, y el rendimiento de la transferencia varía según el tamaño del archivo:

    • Los archivos grandes de 10 MB o más se transfieren con una capacidad de procesamiento máxima de hasta 3.5 GBps.
    • Los archivos pequeños de 4 KB o menos se transfieren a una velocidad de hasta 4,900 objetos por segundo.

Si los datos se escriben en Cloud Storage más rápido de lo que la duplicación puede copiarlos, los eventos se ponen en cola en un trabajo pendiente, lo que aumenta el tiempo que tardan en aparecer los cambios en Lustre administrado. La réplica se pone al día automáticamente una vez que disminuye la tasa de cambio.

La velocidad de transferencia está limitada por lo siguiente:

  • La capacidad de procesamiento máxima de una instancia, que es la capacidad de la instancia multiplicada por el nivel de rendimiento.

  • Ancho de banda de salida de Cloud Storage, que está limitado a 200 Gbps o 25 GBps por región y por proyecto. Para obtener un ancho de banda de salida más alto, solicita un aumento de cuota.

  • Latencia de red para transferencias entre regiones. Coloca el bucket de origen y la instancia en la misma región para obtener un rendimiento óptimo.

Precios

Un duplicado de Cloud Storage genera cargos estándar de Cloud Storage, que se facturan al proyecto que contiene el bucket de origen:

  • La sincronización inicial realiza operaciones de lista de clase A y operaciones de lectura de clase B en el bucket de origen, y la replicación continua realiza operaciones de lectura de clase B, lo que genera cargos operativos de Cloud Storage.
  • La duplicación de datos de un bucket de origen en una región diferente de la instancia de Managed Lustre genera cargos por transferencia de datos entre regiones.

Antes de comenzar

Para crear una duplicación de Cloud Storage, se requiere lo siguiente:

  • Una instancia de Managed Lustre en estado ACTIVE.
  • Un bucket de Cloud Storage existente para usar como fuente de duplicación. No se admiten los buckets con el espacio de nombres jerárquico habilitado, los buckets de Rapid Storage ni los buckets con Pagos del solicitante habilitados.

Permisos, roles y recursos obligatorios

Se requieren los siguientes permisos, roles y recursos de IAM para crear y administrar duplicaciones de Cloud Storage.

Permisos de usuario

Para crear y administrar duplicaciones, tu cuenta de usuario o de servicio necesita el rol de administrador de Managed Lustre, roles/lustre.admin.

Si usas un rol personalizado, este requiere los siguientes permisos:

  • lustre.mirrors.create para crear una duplicación.
  • lustre.mirrors.get para describir un espejo.
  • lustre.mirrors.list para enumerar las duplicaciones.
  • lustre.mirrors.update para actualizar una duplicación
  • lustre.mirrors.delete para borrar una duplicación

Inicialización del agente de servicio de Cloud Storage

El agente de servicio de Cloud Storage debe existir en tu proyecto para que pueda publicar eventos de notificación de bucket:

gcloud storage service-agent --project=PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud .

Permisos del agente de servicio de Managed Lustre

El agente de servicio de Managed Lustre administrado por Google requiere acceso a tu bucket de Cloud Storage de origen. Para obtener instrucciones sobre cómo encontrar o inicializar la identidad de tu agente de servicio, consulta Agente de servicio de Managed Lustre.

El agente de servicio requiere los siguientes permisos en el bucket de Cloud Storage de origen:

  • storage.buckets.get
  • storage.buckets.update
  • storage.objects.get
  • storage.objects.list

Crea un rol personalizado que contenga estos permisos:

gcloud iam roles create lustreMirrorUser \
  --project=PROJECT_ID \
  --title="Lustre mirror user" \
  --permissions=storage.buckets.get,storage.buckets.update,storage.objects.get,storage.objects.list

Otorga el rol personalizado al agente de servicio de Managed Lustre en el bucket de origen:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com" \
  --role="projects/PROJECT_ID/roles/lustreMirrorUser"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • BUCKET_NAME: Es el nombre de tu bucket de Cloud Storage de origen.
  • PROJECT_NUMBER: Es el número del proyecto de Google Cloud .

Crea una duplicación de Cloud Storage

Puedes crear una duplicación de Cloud Storage por instancia de Managed Lustre.

No se puede crear una duplicación de Cloud Storage mientras se realiza una operación de importación o exportación en la instancia.

gcloud

Ejecuta el comando mirrors create:

gcloud lustre instances mirrors create MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION \
  --direction=from-cloud-storage \
  --gcs-path-uri="gs://BUCKET_NAME/PREFIX/" \
  --lustre-path="/LUSTRE_DIRECTORY"

Aquí:

  • MIRROR_NAME es el nombre de este recurso de duplicación. Debe tener entre 1 y 63 caracteres, contener solo letras minúsculas, números y guiones, comenzar con una letra y terminar con una letra o un número.
  • INSTANCE_ID es el ID de tu instancia de Managed Lustre.
  • LOCATION es la zona de tu instancia. Por ejemplo, us-central1-a.
  • --direction especifica la dirección de duplicación. Debe ser from-cloud-storage.
  • --gcs-path-uri es el bucket de Cloud Storage de origen y el prefijo de objeto opcional. Si especificas un prefijo de objeto, la ruta de acceso debe terminar con una barra diagonal: gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.
  • --lustre-path es el directorio de destino en el sistema de archivos de Managed Lustre. Debe ser una ruta de acceso absoluta que comience con /, por ejemplo, /data o /data/subdir. La configuración predeterminada es el directorio raíz, /. Si el directorio especificado no existe, se creará.

Están disponibles los siguientes parámetros opcionales:

  • --deleted-files-retained o --no-deleted-files-retained: Controla si los archivos borrados en Cloud Storage se conservan en Managed Lustre. El valor predeterminado es --no-deleted-files-retained.
  • --description=DESCRIPTION_TEXT: Es una descripción opcional para la duplicación.

REST

Envía una solicitud POST al método instances.mirrors.create:

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors?mirrorId=MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

{
  "gcsPath": {
    "uri": "gs://BUCKET_NAME/PREFIX/"
  },
  "lustrePath": {
    "path": "/LUSTRE_DIRECTORY"
  },
  "direction": "FROM_CLOUD_STORAGE"
}

Aquí:

  • PROJECT_ID es el ID del proyecto de Google Cloud .
  • LOCATION es la zona de tu instancia de Managed Lustre. Por ejemplo, us-central1-a
  • INSTANCE_ID es el ID de la instancia.
  • MIRROR_NAME es el nombre de este recurso de duplicación. Debe tener entre 1 y 63 caracteres, contener solo letras minúsculas, números y guiones, comenzar con una letra y terminar con una letra o un número.
  • gcsPath contiene un campo uri con el bucket de Cloud Storage de origen y el prefijo de objeto opcional. Si especificas un prefijo de objeto, la ruta de acceso debe terminar con una barra diagonal: gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.
  • lustrePath es el directorio de destino en el sistema de archivos de Managed Lustre. Debe ser una ruta de acceso absoluta que comience con /, por ejemplo, /data o /data/subdir. La configuración predeterminada es el directorio raíz, /. Si el directorio especificado no existe, se creará.
  • direction especifica la dirección de duplicación. Debe ser FROM_CLOUD_STORAGE.

El cuerpo de la solicitud también admite los siguientes campos opcionales:

  • deletedFilesRetained: Se establece en true para conservar los archivos en Managed Lustre después de que se borren los archivos correspondientes de Cloud Storage. El valor predeterminado es false.
  • description: Es una descripción opcional para la duplicación.

Atributos de archivo

Cuando se copia un archivo de un bucket de Cloud Storage a una instancia de Managed Lustre, los atributos del archivo en la instancia de Managed Lustre se configuran de una de las siguientes dos maneras:

  • Si el objeto de Cloud Storage tiene metadatos personalizados, como se describe para exportar datos, sucede lo siguiente:
    • El UID, el GID, el modo y el mtime del archivo se configuran según los metadatos personalizados del objeto.
    • El atime del archivo se establece en el mismo valor que el mtime.
  • Si el objeto de Cloud Storage no tiene los metadatos personalizados, ocurrirá lo siguiente:
    • El UID y el GID del archivo se establecen en 0 (root).
    • El modo del archivo se establece en rwxr-xr-x (755).
    • Los valores atime y mtime del archivo se establecen en la hora de creación del objeto de Cloud Storage.

En cualquier caso, haz lo siguiente:

  • La ctime de un archivo se establece en la hora en que se escribió el archivo en la instancia.
  • Los valores de atime, ctime y mtime de un directorio se establecen en la hora en que se creó el directorio en la instancia.

Administra duplicados de Cloud Storage

Puedes enumerar, describir, actualizar y borrar duplicados de Cloud Storage con la herramienta de Google Cloud CLI o la API de REST. Para cambiar la ruta de acceso de origen o de destino de una duplicación existente, debes borrar la duplicación existente y crear una nueva.

Enumera una réplica

Para ver una duplicación configurada en una instancia, haz lo siguiente:

gcloud

gcloud lustre instances mirrors list \
  --instance=INSTANCE_ID \
  --location=LOCATION

REST

Envía una solicitud GET al método instances.mirrors.list:

GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors
Authorization: Bearer YOUR_ACCESS_TOKEN

Describe un espejo

Para ver la configuración y el estado operativo de una duplicación, haz lo siguiente:

gcloud

gcloud lustre instances mirrors describe MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION

REST

Envía una solicitud GET al método instances.mirrors.get:

GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN

Estados de replicación

El campo state que devuelven los comandos list y describe informa dónde se encuentra la duplicación en su ciclo de vida:

Estado Descripción
CREATING Se está creando el recurso de duplicación.
INITIAL_SYNC La sincronización inicial copia los objetos existentes de Cloud Storage.
ACTIVE La duplicación sincroniza los cambios a medida que se producen.
DELETING Se está borrando la duplicación.

Actualiza una duplicación

Puedes actualizar la descripción y las etiquetas de una duplicación, y si se deben conservar los archivos borrados.

No se pueden cambiar las rutas de acceso de Cloud Storage y Managed Lustre. Para apuntar una duplicación a una ruta diferente, bórrala y crea una nueva.

Cuando se actualiza una duplicación, no se vuelve a ejecutar la sincronización inicial.

gcloud

gcloud lustre instances mirrors update MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION \
  --description="DESCRIPTION_TEXT"

REST

Envía una solicitud PATCH al método instances.mirrors.patch con un parámetro de consulta updateMask:

PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME?updateMask=description
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

{
  "description": "DESCRIPTION_TEXT"
}

Borra una duplicación

Para borrar una duplicación, haz lo siguiente:

gcloud

gcloud lustre instances mirrors delete MIRROR_NAME \
  --instance=INSTANCE_ID \
  --location=LOCATION

REST

Envía una solicitud DELETE al método instances.mirrors.delete:

DELETE https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN

Si borras una duplicación, se detendrá la sincronización futura entre Cloud Storage y Managed Lustre. Los archivos que ya se copiaron en Managed Lustre no se borran cuando se quita la réplica.

Se cancelan las transferencias de archivos que están en curso cuando se borra una duplicación. Las transferencias incompletas pueden dejar archivos temporales con el formato de nombre FILENAME.cloud_transfer.UUID.NUMBER.tmp en el directorio de duplicación después de que se borre la duplicación. Puedes borrar estos archivos.

Ver registros

Los registros de duplicación identifican los archivos individuales que no se pudieron sincronizar.

Los registros se enrutan a Cloud Logging en el recurso lustre.googleapis.com/Instance, con el nombre de registro mirror.

Para ver los registros de las operaciones de duplicación, haz lo siguiente:

  1. Ve al Explorador de registros.
  2. Ingresa la siguiente consulta:

    resource.type="lustre.googleapis.com/Instance"
    logName="projects/PROJECT_ID/logs/lustre.googleapis.com%2Fmirror"
    resource.labels.instance_id="INSTANCE_ID"
    

Soluciona problemas

Errores de PERMISSION_DENIED en el bucket de origen

Si la creación de la duplicación falla con un error PERMISSION_DENIED, los archivos no se sincronizan o hay registros que muestran errores "PERMISSION_DENIED":

  1. Verifica que se haya inicializado el agente de servicio de Cloud Storage:

    gcloud storage service-agent --project=PROJECT_ID
    
  2. Confirma que se hayan otorgado los permisos necesarios al agente de servicio de Managed Lustre en el bucket de origen. Consulta Otorga permisos de agente de servicio para obtener más detalles.

Los cambios en Cloud Storage no se replican en Managed Lustre

Si el estado de duplicación es ACTIVE, pero los objetos nuevos o modificados en Cloud Storage no aparecen en Managed Lustre, confirma que la configuración de notificaciones del bucket exista en tu bucket de origen.

  1. Enumera las notificaciones del bucket:

    gcloud storage buckets notifications list --bucket=BUCKET_NAME
    
  2. Si el resultado está vacío, debes borrar la duplicación existente y crear una nueva:

    gcloud lustre instances mirrors delete MIRROR_NAME \
      --instance=INSTANCE_ID \
      --location=LOCATION
    

    Una vez que finalice la eliminación, crea una duplicación nueva.

Errores de conflictos de nombres

Si notas que faltan archivos en Managed Lustre después de agregarlos a Cloud Storage, revisa Cloud Logging para ver si hay errores de conflicto de nombres:

  • Si un objeto creado en Cloud Storage tiene el mismo nombre que un directorio existente en Managed Lustre, la transferencia falla con un error file exists y el directorio existente no se reemplaza. La transferencia fallida deja un archivo temporal con el formato de nombre FILENAME.cloud_transfer.UUID.NUMBER.tmp en el directorio superior.
  • Si un objeto creado en Cloud Storage contiene un prefijo de ruta de acceso que coincide con un archivo normal existente en Managed Lustre, la transferencia falla con un error not a directory y el archivo existente no se reemplaza. Por ejemplo, si models es un archivo existente en Managed Lustre, la transferencia de un objeto llamado models/weights.bin desde Cloud Storage falla porque no se puede crear el directorio models/.

Para resolver estos conflictos, cambia el nombre o borra el directorio o archivo en conflicto en Managed Lustre, quita los archivos .tmp restantes y vuelve a subir el objeto en Cloud Storage para activar la sincronización.

ABORTED: unable to queue the operation

Si recibes un error ABORTED: unable to queue the operation cuando creas una duplicación o inicias un trabajo de transferencia a pedido, haz lo siguiente:

  • Asegúrate de que no se estén ejecutando operaciones import-data o export-data existentes en la instancia antes de crear una duplicación.
  • Espera a que se completen la creación de la duplicación y la sincronización inicial antes de intentar otras operaciones de datos administrativas en la instancia.

FILESYSTEM_NO_SPACE_ON_DEVICE

Si la duplicación se detiene y los registros indican errores de espacio, es posible que el sistema de archivos de Managed Lustre no tenga inodos ni capacidad de disco. Puedes borrar archivos innecesarios para liberar espacio o aumentar la capacidad de almacenamiento para expandir tu sistema de archivos.