Google Cloud Managed Lustre può importare dati da Cloud Storage ed esportare dati in Cloud Storage. I trasferimenti di dati sono incrementali: vengono copiati solo i file che non esistono già nella destinazione o che sono stati modificati dopo il trasferimento.
I bucket Cloud Storage con spazio dei nomi gerarchico abilitato offrono velocità di trasferimento più elevate da e verso Managed Lustre rispetto ai bucket standard.
Prestazioni
I trasferimenti tra Managed Lustre e Cloud Storage possono raggiungere le seguenti velocità:
- Per i file di dimensioni superiori a 32 MB, fino a 100 GBps. La velocità di trasferimento è limitata dal throughput massimo di un'istanza (capacità dell'istanza moltiplicata per il livello di prestazioni).
Considerazioni sulla larghezza di banda in uscita di Cloud Storage
Cloud Storage fornisce una larghezza di banda in uscita predefinita fino a 200 Gbps per regione per progetto. Se hai più istanze Managed Lustre nello stesso progetto e nella stessa regione, puoi richiedere un aumento del limite della larghezza di banda in uscita. Per maggiori informazioni, consulta le Quote della larghezza di banda di Cloud Storage.
Autorizzazioni obbligatorie
Autorizzazioni per avviare il trasferimento
L'utente o il account di servizio utilizzato per avviare il trasferimento richiede le seguenti autorizzazioni:
lustre.instances.exportDataper trasferire da Managed Lustre a Cloud Storage.lustre.instances.importDataper trasferire da Cloud Storage.
Entrambe queste autorizzazioni vengono concesse con il ruolo roles/lustre.admin. Puoi creare un ruolo personalizzato per
concedere le autorizzazioni in modo indipendente.
Autorizzazioni per il service agent Managed Lustre
Managed Lustre utilizza un service agent per accedere ai bucket Cloud Storage per tuo conto. Per eseguire i trasferimenti, devi concedere al service agent l'accesso al bucket di destinazione.
Se non conosci l'identità del service agent del tuo progetto, consulta Creare o recuperare l'identità del service agent.
Concedi le autorizzazioni
Il service agent Managed Lustre richiede uno dei seguenti ruoli Cloud Storage:
- Per trasferire dati da e verso Cloud Storage:
roles/storage.objectUsersul bucket Cloud Storage. - Per trasferire solo da Cloud Storage:
roles/storage.objectViewersul bucket Cloud Storage.
Per concedere uno di questi ruoli:
Importazione ed esportazione
Esegui il seguente comando gcloud:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:SERVICE_AGENT_IDENTITY \
--role=roles/storage.objectUser
Solo importazione
Esegui il seguente comando gcloud:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:SERVICE_AGENT_IDENTITY \
--role=roles/storage.objectViewer
Sostituisci quanto segue:
- BUCKET_NAME: il nome del bucket Cloud Storage.
- SERVICE_AGENT_IDENTITY: l'identità del service agent Managed Lustre (
service-<var>PROJECT_NUMBER</var>@gcp-sa-lustre.iam.gserviceaccount.com).
Importa dati in Managed Lustre
Puoi importare dati da un bucket Cloud Storage. Il bucket può trovarsi nello stesso progetto o in un progetto diverso. Il bucket può trovarsi in una zona o in una regione diversa
dall'istanza Managed Lustre, ma i trasferimenti tra regioni
potrebbero essere più lenti dei trasferimenti all'interno della regione.
gcloud
gcloud lustre instances import-data INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri=gs://BUCKET_NAME/ \
--lustre-path=PS_PATH
Dove:
- INSTANCE_ID è il nome dell'istanza Managed Lustre.
--locationè la zona dell'istanza Managed Lustre. Ad esempio,us-central1-a.--gcs-path-urispecifica l'URI di un bucket Cloud Storage, o un percorso all'interno di un bucket, utilizzando il formatogs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, deve terminare con una barra (/).--lustre-pathspecifica il percorso della directory root del file system Managed Lustre. Deve iniziare con/. Il valore predefinito è/. Se specifichi un valore diverso da quello predefinito, la directory deve già esistere nel file system.
I seguenti parametri sono facoltativi:
--request-idti consente di assegnare un ID univoco a questa richiesta. Se riprovi a inviare questa richiesta utilizzando lo stesso ID richiesta, il server ignorerà la richiesta se è già stata completata. Deve essere un UUID valido UUID che non sia composto da tutti zeri.--asyncrestituisce immediatamente una risposta, senza attendere il completamento dell'operazione.
Per maggiori dettagli, consulta la documentazione di Cloud SDK.
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"
}
}
Dove:
- PROJECT_ID è il nome del Google Cloud progetto.
- LOCATION è la zona dell'istanza Managed Lustre. Ad esempio,
us-central1-a. - INSTANCE_ID è il nome dell'istanza Managed Lustre.
gcsPathcontiene una chiaveuriil cui valore specifica l' URI di un bucket Cloud Storage o un percorso all'interno di un bucket utilizzando il formatogs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, deve terminare con una barra (/).lustrePathcontiene una chiavepathil cui valore specifica il percorso della directory root del file system Managed Lustre. Deve iniziare con/. Il valore predefinito è/. Se specifichi un valore diverso da quello predefinito, la directory deve già esistere nel file system.
Per utilizzare il tuo account di servizio anziché il service agent gestito da Google, la richiesta supporta un campo serviceAccount nell'oggetto JSON:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Un esempio di comando curl è il seguente:
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":"/"}}'
Attributi file
Quando importi dati da un bucket Cloud Storage a un'istanza Managed Lustre, gli attributi file nell'istanza Managed Lustre vengono impostati in uno dei due modi seguenti:
- Se l'oggetto Cloud Storage ha metadati personalizzati come descritto per
l'esportazione dei dati:
- L'UID, il GID, la modalità e
mtimedel file vengono impostati in base ai metadati personalizzati dell'oggetto. atimedel file viene impostato sullo stesso valore dimtime.
- L'UID, il GID, la modalità e
- Se l'oggetto Cloud Storage non ha i metadati personalizzati:
- L'UID e il GID del file sono impostati su 0 (
root). - La modalità del file è impostata su
rwxr-xr-x(755). atimeemtimedel file sono impostati sull'ora di creazione dell'oggetto Cloud Storage.
- L'UID e il GID del file sono impostati su 0 (
In entrambi i casi:
ctimedi un file è impostato sull'ora in cui il file è stato scritto nell'istanza.atime,ctimeemtimedi una directory sono impostati sull'ora in cui la directory è stata creata nell'istanza.
Esporta i dati
Puoi esportare i dati dall'istanza Managed Lustre a un bucket Cloud Storage nello stesso progetto o in un progetto diverso. Il bucket può trovarsi in una zona o in una regione diversa dall'istanza Managed Lustre, ma i trasferimenti tra regioni potrebbero essere più lenti dei trasferimenti all'interno della regione.
gcloud
gcloud lustre instances export-data \
INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri="gs://BUCKET_NAME/" \
--lustre-path="/"
Dove:
- INSTANCE_ID è il nome dell'istanza Managed Lustre.
--locationè la zona dell'istanza Managed Lustre. Ad esempio,us-central1-a.--gcs-path-urispecifica l'URI di un bucket Cloud Storage o un percorso all'interno di un bucket utilizzando il formatogs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, deve terminare con una barra (/).--lustre-pathspecifica il percorso della directory root del file system Managed Lustre. Deve iniziare con/. Il valore predefinito è/.
I seguenti parametri sono facoltativi:
--request-idti consente di assegnare un ID univoco a questa richiesta. Se riprovi a inviare questa richiesta utilizzando lo stesso ID richiesta, il server ignorerà la richiesta se è già stata completata. Deve essere un UUID valido UUID che non sia composto da tutti zeri.--asyncrestituisce immediatamente una risposta, senza attendere il completamento dell'operazione.
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/"
}
}
Dove:
- PROJECT_ID è il nome del Google Cloud progetto.
- INSTANCE_ID è il nome dell'istanza Managed Lustre.
- LOCATION è la zona dell'istanza Managed Lustre. Ad esempio,
us-central1-a. lustrePathcontiene una chiavepathil cui valore specifica il percorso della directory root del file system Managed Lustre. Deve iniziare con/. Il valore predefinito è/.gcsPathcontiene una chiaveuriil cui valore specifica l' URI di un bucket Cloud Storage o un percorso all'interno di un bucket utilizzando il formatogs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, deve terminare con una barra (/).
Per utilizzare il tuo account di servizio anziché il service agent gestito da Google, la richiesta supporta un campo serviceAccount nell'oggetto JSON:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Un esempio di comando curl è il seguente:
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/"}}'
Attributi file
Quando esporti dati da un'istanza Managed Lustre a un bucket Cloud Storage, i seguenti attributi file vengono conservati come metadati personalizzati in Cloud Storage:
- L'UID del file viene archiviato con la chiave
goog-reserved-posix-uid. - Il GID del file viene archiviato con la chiave
goog-reserved-posix-gid. - La modalità numerica del file viene archiviata con la chiave
goog-reserved-posix-mode. - Il
mtimedel file viene archiviato con la chiavegoog-reserved-file-mtime.
Questi nomi di chiavi di metadati personalizzati sono gli stessi utilizzati da Storage Transfer Service per i trasferimenti con i file system POSIX.
I seguenti attributi file non vengono conservati:
- I link simbolici non vengono conservati.
- I link fisici vengono esportati come oggetti Cloud Storage separati, con conseguenti copie multiple.
- La suddivisione di Lustre impostata in modo esplicito utilizzando
lfs setstripeolfs setdirstripenon viene conservata. atimeectimedei file non vengono conservati.mtimedelle directory non viene conservato.- Le directory vuote non vengono conservate.
Recupera operazione
Per visualizzare lo stato di un'operazione di importazione o esportazione, devi avere l'ID operazione. Questo ID viene restituito dal servizio quando effettui una richiesta di importazione o esportazione e utilizza il seguente 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 esempio di comando curl è il seguente:
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
Annulla operazione
Per annullare un'operazione di importazione o esportazione, devi avere l'ID operazione. Questo ID viene restituito dal servizio quando effettui una richiesta di importazione o esportazione e utilizza il seguente 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 esempio di comando curl è il seguente:
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
Limitazioni
Si applicano le seguenti limitazioni:
Può essere attiva una sola operazione di trasferimento per istanza alla volta. Se avvii un secondo trasferimento prima che il primo sia stato completato, viene restituito il seguente errore:
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
Risoluzione dei problemi
Quando importi dati da o esporti dati in Cloud Storage, potresti riscontrare blocchi di trasferimento, problemi di autorizzazione o file ignorati. Segui questi passaggi per diagnosticare e risolvere i problemi comuni di trasferimento dei dati.
Blocchi di trasferimento o velocità di uscita lente
Se un'operazione di importazione o esportazione si blocca o viene eseguita in modo significativamente più lento del previsto, controlla quanto segue:
- Limiti della larghezza di banda in uscita di Cloud Storage: Cloud Storage applica una quota di larghezza di banda in uscita predefinita fino a 200 Gbps per regione per progetto. Se più istanze o workload a elevato throughput trasferiscono dati contemporaneamente, potresti riscontrare un collo di bottiglia a causa di questa quota. Consulta Quote della larghezza di banda di Cloud Storage per richiedere un aumento della quota.
- Limiti di throughput dell'istanza: le velocità di trasferimento sono limitate dalla capacità di throughput massima dell'istanza (capacità dell'istanza moltiplicata per il livello di prestazioni). Verifica il livello di prestazioni dell'istanza per assicurarti che sia in linea con le tue aspettative di prestazioni.
Errori di autorizzazione durante l'avvio del trasferimento
Se l'avvio di un trasferimento non riesce a causa di un errore di autorizzazione negata, verifica i seguenti ruoli IAM:
- Autorizzazioni utente e account di servizio: l'identità che avvia il comando di trasferimento deve avere
lustre.instances.importData(per l'importazione) olustre.instances.exportData(per l'esportazione). Questi sono inclusi nel ruoloroles/lustre.admin. - Autorizzazioni del service agent: il service agent
Managed Lustre gestito da Google
(
service-<PROJECT_NUMBER>@gcp-sa-lustre...) deve avereroles/storage.objectViewer(per le importazioni) oroles/storage.objectUser(per le esportazioni) sul bucket Cloud Storage di destinazione. Per istruzioni di configurazione dettagliate, consulta Concedere le autorizzazioni al service agent.
File ignorati o attributi mancanti
I trasferimenti di dati Managed Lustre sono incrementali: vengono copiati solo i file che non esistono nella destinazione o che sono stati modificati dopo l'ultimo trasferimento.
- Se sembra che i file siano stati ignorati, verifica se sono già stati trasferiti correttamente in precedenza e non sono stati modificati.
- Quando esporti dati in Cloud Storage, i metadati POSIX (UID, GID, modalità, mtime) vengono conservati utilizzando chiavi di metadati personalizzati (ad es.
goog-reserved-posix-uid). Tieni presente che i link simbolici, le directory vuote e i layout di suddivisione PFL espliciti non vengono conservati durante l'esportazione. Per informazioni dettagliate, consulta Attributi dei file di trasferimento dei dati.
Esaminare le operazioni di trasferimento non riuscite
Se un'operazione di trasferimento non riesce, recupera il messaggio di errore dettagliato e il motivo dell'errore utilizzando l'ID operazione:
gcloud lustre operations describe OPERATION_ID \
--location=LOCATION
Esamina il campo error nell'output dell'operazione per determinare se l'errore è stato causato da oggetti mancanti, timeout di rete o autenticazione.
Impossibile mettere in coda l'operazione
Se viene visualizzato un errore simile a uno dei seguenti quando tenti di avviare un'operazione:
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
Questo errore si verifica quando tenti di avviare un'operazione mentre un'altra operazione dello stesso tipo è già in corso sulla stessa istanza.
- Importazione/esportazione: Managed Lustre supporta una sola operazione di trasferimento attiva per istanza alla volta. La messa in coda non è supportata per le operazioni di trasferimento.
- Aggiornamento dell'istanza: Managed Lustre consente un aggiornamento attivo per istanza alla volta e consente di mettere in coda un'operazione di aggiornamento aggiuntiva.
Per risolvere il problema, attendi il completamento dell'operazione corrente prima di avviarne una nuova.
Errori FILESYSTEM_NO_SPACE_ON_DEVICE
Se il trasferimento restituisce un errore FILESYSTEM_NO_SPACE_ON_DEVICE, anche se gli strumenti di monitoraggio indicano che lo spazio libero aggregato è ancora disponibile, potresti riscontrare uno squilibrio OST, concessioni di spazio client o esaurimento degli inode.
Per dettagli e strategie di
mitigazione, consulta Errori "No space left on device".