Google Cloud Managed Lustre puede importar datos desde Cloud Storage y exportar datos a este servicio. Las transferencias de datos son incrementales, es decir, solo copian los archivos que aún no existen en el destino o que cambiaron desde que se transfirieron.
Los buckets de Cloud Storage con el espacio de nombres jerárquico habilitado proporcionan velocidades de transferencia más rápidas hacia y desde Managed Lustre en comparación con los buckets estándar.
Rendimiento
Las transferencias entre Managed Lustre y Cloud Storage pueden alcanzar las siguientes velocidades:
- Para archivos de más de 32 MB, hasta 100 GBps. La velocidad de transferencia está limitada por la capacidad de procesamiento máxima de una instancia (capacidad de la instancia multiplicada por el nivel de rendimiento).
Consideraciones sobre el ancho de banda de salida de Cloud Storage
Cloud Storage proporciona un ancho de banda de salida predeterminado de hasta 200 Gbps por región y por proyecto. Si tienes varias instancias de Managed Lustre en el mismo proyecto y región, puedes solicitar un aumento del límite de ancho de banda de salida. Para obtener más información, consulta las cuotas de ancho de banda de Cloud Storage.
Permisos necesarios
Permisos para iniciar la transferencia
La cuenta de usuario o de servicio que se usa para iniciar la transferencia requiere los siguientes permisos:
lustre.instances.exportDatapara transferir datos de Managed Lustre a Cloud Storagelustre.instances.importDatapara transferir datos desde Cloud Storage
Ambos permisos se otorgan con el rol roles/lustre.admin. Puedes crear un rol personalizado para
otorgar permisos de forma independiente.
Permisos para el agente de servicio de Managed Lustre
Managed Lustre usa un agente de servicio para acceder a los buckets de Cloud Storage en tu nombre. Para realizar transferencias, debes otorgar acceso al agente de servicio al bucket de destino.
Si no conoces la identidad del agente de servicio de tu proyecto, consulta Crea o recupera la identidad del agente de servicio.
Otorga permisos
El agente de servicio de Managed Lustre requiere uno de los siguientes roles de Cloud Storage:
- Para transferir datos hacia y desde Cloud Storage:
roles/storage.objectUseren el bucket de Cloud Storage - Para transferir datos solo desde Cloud Storage:
roles/storage.objectVieweren el bucket de Cloud Storage
Para otorgar uno de estos roles, haz lo siguiente:
Importación y exportación
Ejecuta el siguiente comando gcloud:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:SERVICE_AGENT_IDENTITY \
--role=roles/storage.objectUser
Solo importación
Ejecuta el siguiente comando gcloud:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:SERVICE_AGENT_IDENTITY \
--role=roles/storage.objectViewer
Reemplaza lo siguiente:
- BUCKET_NAME: Es el nombre de tu bucket de Cloud Storage.
- SERVICE_AGENT_IDENTITY: Es la identidad del agente de servicio de Managed Lustre (
service-<var>PROJECT_NUMBER</var>@gcp-sa-lustre.iam.gserviceaccount.com).
Importa datos a Managed Lustre
Puedes importar datos desde un bucket de Cloud Storage. El bucket puede estar en el mismo proyecto o en uno diferente. El bucket puede estar en una zona o región diferente
de tu instancia de Managed Lustre, pero las transferencias entre regiones
podrían ser más lentas que las transferencias dentro de la región.
gcloud
gcloud lustre instances import-data INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri=gs://BUCKET_NAME/ \
--lustre-path=PS_PATH
Aquí:
- INSTANCE_ID es el nombre de tu instancia de Managed Lustre.
--locationes la zona de tu instancia de Managed Lustre. Por ejemplo,us-central1-a.--gcs-path-uriespecifica el URI a un bucket de Cloud Storage, o una ruta de acceso dentro de un bucket, con el formatogs://<bucket_name>/<optional_path_inside_bucket>/. Si se especifica una ruta de acceso dentro del bucket, debe terminar con una barra diagonal (/).--lustre-pathespecifica la ruta de acceso al directorio raíz del sistema de archivos de Managed Lustre. Debe comenzar con/. El valor predeterminado es/. Si especificas un valor que no sea el predeterminado, el directorio ya debe existir en el sistema de archivos.
Los parámetros que aparecen a continuación son opcionales:
--request-idte permite asignar un ID único a esta solicitud. Si vuelves a intentar esta solicitud con el mismo ID de solicitud, el servidor la ignorará si ya se completó. Debe ser un UUID válido que no sea todo ceros.--asyncmuestra una respuesta de inmediato, sin esperar a que se complete la operación.
Para obtener más detalles, consulta la documentación del SDK de Cloud.
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData
Authorization: Bearer [YOUR_ACCESS_TOKEN]
{
"gcsPath" : {
"uri" : "gs://BUCKET_NAME/"
},
"lustrePath" : {
"path" : "/PATH"
}
}
Aquí:
- PROJECT_ID es el nombre de tu Google Cloud proyecto.
- LOCATION es la zona de tu instancia de Managed Lustre. Por ejemplo,
us-central1-a. - INSTANCE_ID es el nombre de tu instancia de Managed Lustre.
gcsPathcontiene una claveuricuyo valor especifica el URI a un bucket de Cloud Storage o una ruta de acceso dentro de un bucket con el formatogs://<bucket_name>/<optional_path_inside_bucket>/. Si se especifica una ruta de acceso dentro del bucket, debe terminar con una barra diagonal (/).lustrePathcontiene una clavepathcuyo valor especifica la ruta de acceso al directorio raíz del sistema de archivos de Managed Lustre. Debe comenzar con/. El valor predeterminado es/. Si especificas un valor que no sea el predeterminado, el directorio ya debe existir en el sistema de archivos.
Para usar tu propia cuenta de servicio en lugar del agente de servicio administrado por Google, la solicitud admite un campo serviceAccount en el objeto JSON:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Un comando curl de ejemplo se ve de la siguiente manera:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData \
-d '{"gcsPath": {"uri":"gs://BUCKET_NAME/"}, "lustrePath": {"path":"/"}}'
Atributos de archivo
Cuando importas datos de un bucket de Cloud Storage a una instancia de Managed Lustre, los atributos de archivo de la instancia de Managed Lustre se establecen de una de las siguientes 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
mtimedel archivo se establecen en función de los metadatos personalizados del objeto. - El
atimedel archivo se establece en el mismo valor que elmtime.
- El UID, el GID, el modo y el
- Si el objeto de Cloud Storage no tiene los metadatos personalizados, sucede 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). - El
atimey elmtimedel archivo se establecen en la hora de creación del objeto de Cloud Storage.
- El UID y el GID del archivo se establecen en 0 (
En cualquier caso, sucede lo siguiente:
- El
ctimede un archivo se establece en la hora en que se escribió el archivo en la instancia. - El
atime, elctimey elmtimede un directorio se establecen en la hora en que se creó el directorio en la instancia.
Exportar datos
Puedes exportar datos de tu instancia de Managed Lustre a un bucket de Cloud Storage en el mismo proyecto o en uno diferente. El bucket puede estar en una zona o región diferente de tu instancia de Managed Lustre, pero las transferencias entre regiones podrían ser más lentas que las transferencias dentro de la región.
gcloud
gcloud lustre instances export-data \
INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri="gs://BUCKET_NAME/" \
--lustre-path="/"
Aquí:
- INSTANCE_ID es el nombre de tu instancia de Managed Lustre.
--locationes la zona de tu instancia de Managed Lustre. Por ejemplo,us-central1-a.--gcs-path-uriespecifica el URI a un bucket de Cloud Storage o una ruta de acceso dentro de un bucket con el formatogs://<bucket_name>/<optional_path_inside_bucket>/. Si se especifica una ruta de acceso dentro del bucket, debe terminar con una barra diagonal (/).--lustre-pathespecifica la ruta de acceso al directorio raíz del sistema de archivos de Managed Lustre. Debe comenzar con/. El valor predeterminado es/.
Los parámetros que aparecen a continuación son opcionales:
--request-idte permite asignar un ID único a esta solicitud. Si vuelves a intentar esta solicitud con el mismo ID de solicitud, el servidor la ignorará si ya se completó. Debe ser un UUID válido que no sea todo ceros.--asyncmuestra una respuesta de inmediato, sin esperar a que se complete la operación.
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData
Authorization: Bearer [YOUR_ACCESS_TOKEN]
{
"lustrePath" : {
"path" : "/"
},
"gcsPath" : {
"uri" : "gs://BUCKET_NAME/"
}
}
Aquí:
- PROJECT_ID es el nombre de tu Google Cloud proyecto.
- INSTANCE_ID es el nombre de tu instancia de Managed Lustre.
- LOCATION es la zona de tu instancia de Managed Lustre. Por ejemplo,
us-central1-a. lustrePathcontiene una clavepathcuyo valor especifica la ruta de acceso al directorio raíz del sistema de archivos de Managed Lustre. Debe comenzar con/. El valor predeterminado es/.gcsPathcontiene una claveuricuyo valor especifica el URI a un bucket de Cloud Storage o una ruta de acceso dentro de un bucket con el formatogs://<bucket_name>/<optional_path_inside_bucket>/. Si se especifica una ruta de acceso dentro del bucket, debe terminar con una barra diagonal (/).
Para usar tu propia cuenta de servicio en lugar del agente de servicio administrado por Google, la solicitud admite un campo serviceAccount en el objeto JSON:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Un comando curl de ejemplo se ve de la siguiente manera:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData \
-d '{"lustrePath": {"path":"/"}, "gcsPath": {"uri":"gs://BUCKET_NAME/"}}'
Atributos de archivo
Cuando exportas datos de una instancia de Managed Lustre a un bucket de Cloud Storage, los siguientes atributos de archivo se conservan como metadatos personalizados en Cloud Storage:
- El UID del archivo se almacena con la clave
goog-reserved-posix-uid. - El GID del archivo se almacena con la clave
goog-reserved-posix-gid. - El modo numérico del archivo se almacena con la clave
goog-reserved-posix-mode. - El
mtimedel archivo se almacena con la clavegoog-reserved-file-mtime.
Estos nombres de clave de metadatos personalizados son los mismos que usa el Servicio de transferencia de almacenamiento para las transferencias con sistemas de archivos POSIX.
No se conservan los siguientes atributos de archivo:
- No se conservan los vínculos simbólicos.
- Los vínculos físicos se exportan como objetos de Cloud Storage separados, lo que genera varias copias.
- No se conserva la segmentación de Lustre establecida de forma explícita con
lfs setstripeolfs setdirstripe. - No se conservan el
atimeni elctimede los archivos. - No se conserva el
mtimede los directorios. - No se conservan los directorios vacíos.
Obtener operación
Para ver el estado de una operación de importación o exportación, necesitarás el ID de la operación. El servicio muestra este ID cuando realizas una solicitud de importación o exportación, y usa el siguiente formato:
operation-1234567890123-6127783ad26ea-88913969-02748053
gcloud
gcloud lustre operations describe OPERATION_ID \
--location=LOCATION
REST
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Un comando curl de ejemplo se ve de la siguiente manera:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Cancelar operación
Para cancelar una operación de importación o exportación, necesitarás el ID de la operación. El servicio muestra este ID cuando realizas una solicitud de importación o exportación, y usa el siguiente formato:
operation-1234567890123-6127783ad26ea-88913969-02748053
gcloud
gcloud lustre operations cancel OPERATION_ID \
--location=LOCATION
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Un comando curl de ejemplo se ve de la siguiente manera:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Limitaciones
Se aplica la siguiente limitación:
Solo puede haber una operación de transferencia por instancia activa a la vez. Si inicias una segunda transferencia antes de que se complete la primera, se muestra el siguiente error:
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
Soluciona problemas
Cuando importas datos desde Cloud Storage o los exportas a este servicio, es posible que encuentres bloqueos de transferencia, problemas de permisos o archivos omitidos. Sigue estos pasos para diagnosticar y resolver problemas comunes de transferencia de datos.
Bloqueos de transferencia o velocidades de salida lentas
Si una operación de importación o exportación se bloquea o se ejecuta mucho más lento de lo esperado, verifica lo siguiente:
- Límites de ancho de banda de salida de Cloud Storage: Cloud Storage aplica una cuota de ancho de banda de salida predeterminada de hasta 200 Gbps por región y por proyecto. Si varias instancias o cargas de trabajo de alto rendimiento transfieren datos de forma simultánea, es posible que esta cuota genere un cuello de botella. Consulta Cuotas de ancho de banda de Cloud Storage para solicitar un aumento de cuota.
- Límites de capacidad de procesamiento de la instancia: Las velocidades de transferencia están limitadas por la capacidad de procesamiento máximo de tu instancia (capacidad de la instancia multiplicada por su nivel de rendimiento). Verifica el nivel de rendimiento de tu instancia para asegurarte de que se alinee con tus expectativas de rendimiento.
Errores de permisos durante el inicio de la transferencia
Si el inicio de una transferencia falla con un error de autorización o de permisos denegados, verifica los siguientes roles de IAM:
- Permisos de usuario y cuenta de servicio: La identidad que inicia el comando de transferencia debe tener
lustre.instances.importData(para la importación) olustre.instances.exportData(para la exportación). Estos se incluyen en el rolroles/lustre.admin. - Permisos del agente de servicio: El agente de servicio de
Managed Lustre
administrado por Google (
service-<PROJECT_NUMBER>@gcp-sa-lustre...) debe tenerroles/storage.objectViewer(para las importaciones) oroles/storage.objectUser(para las exportaciones) en el bucket de Cloud Storage de destino. Consulta Otorga permisos al agente de servicio para obtener instrucciones de configuración detalladas.
Archivos omitidos o atributos faltantes
Las transferencias de datos de Managed Lustre son incrementales, es decir, solo copian los archivos que no existen en el destino o que cambiaron desde la última transferencia.
- Si parece que se omitieron archivos, verifica si ya se transfirieron correctamente antes y no se modificaron.
- Cuando exportas datos a Cloud Storage, los metadatos POSIX (UID, GID, modo, mtime) se conservan con claves de metadatos personalizados (p.ej.,
goog-reserved-posix-uid). Ten en cuenta que los vínculos simbólicos, los directorios vacíos y los diseños de segmentación de PFL explícitos no se conservan durante la exportación. Consulta Atributos de archivo de transferencia de datos para obtener detalles completos.
Inspecciona las operaciones de transferencia fallidas
Si falla una operación de transferencia, recupera el mensaje de error detallado y el motivo de la falla con el ID de la operación:
gcloud lustre operations describe OPERATION_ID \
--location=LOCATION
Revisa el campo error en el resultado de la operación para determinar si la falla se debió a objetos faltantes, tiempos de espera de la red o autenticación.
No se puede poner en cola la operación
Si ves un error similar a cualquiera de los siguientes cuando intentas iniciar una operación:
ERROR: (gcloud.lustre.instances.import-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.update) ABORTED: unable to queue the operation
Este error se produce cuando intentas iniciar una operación mientras ya hay otra operación del mismo tipo en curso en la misma instancia.
- Importación o exportación: Managed Lustre admite solo una operación de transferencia activa por instancia a la vez. No se admite la puesta en cola para las operaciones de transferencia.
- Actualización de instancias: Managed Lustre permite una actualización activa por instancia a la vez y permite poner en cola una operación de actualización adicional.
Para resolver este problema, espera a que se complete la operación actual antes de comenzar una nueva.
Errores FILESYSTEM_NO_SPACE_ON_DEVICE
Si tu transferencia muestra un error FILESYSTEM_NO_SPACE_ON_DEVICE, aunque las herramientas de supervisión indiquen que aún hay espacio libre agregado disponible, es posible que tengas un desequilibrio de OST, otorgamientos de espacio del cliente o agotamiento de nodos i.
Consulta No space left on device errores para obtener detalles y
estrategias de mitigación.