Trasferisci dati verso o da Cloud Storage

Google Cloud Managed Lustre può importare ed esportare dati da e 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 lo 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 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 di Managed Lustre nello stesso progetto e nella stessa regione, puoi richiedere un aumento del limite di larghezza di banda in uscita. Per maggiori informazioni, consulta le quote di 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.exportData per il trasferimento da Managed Lustre a Cloud Storage.
  • lustre.instances.importData per eseguire il trasferimento 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

Ottenere il service agent Managed Lustre

Un service agent Managed Lustre viene creato la prima volta che crei un'istanza Managed Lustre nel progetto. L'identità dell'agente di servizio ha il formato service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com.

Se non hai ancora un agente di servizio Managed Lustre
  1. Esegui il comando services identity create:

    gcloud beta services identity create \
      --service=lustre.googleapis.com \
      --project=PROJECT_NUMBER_OR_ID
    

    Sostituisci PROJECT_NUMBER_OR_ID con il numero o l'ID del progetto in cui vuoi creare l'istanza Managed Lustre. L'output è simile al seguente:

    Service identity created: service-1234567890@gcp-sa-lustre.iam.gserviceaccount.com
    
  2. Copia il valore dell'identità dell'agente di servizio da utilizzare nel passaggio successivo.

Se hai già creato un'istanza Managed Lustre
  1. Per creare l'identità dell'agente di servizio, ottieni il numero di progetto. Un PROJECT_NUMBER non è la stessa cosa di un ID progetto:

    • Un ID progetto è una stringa univoca che può essere una combinazione di lettere, numeri e trattini. Specifichi un ID progetto quando crei il progetto. Ad esempio, example-project-123.
    • Un numero di progetto è un identificatore univoco generato automaticamente per il tuo progetto e composto solo da numeri. Ad esempio, 1234567890.

    Per ottenere PROJECT_NUMBER per un determinato ID progetto, utilizza il comando gcloud projects describe:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. Copia il numero di progetto restituito nell'identità del service agent:

    service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com
    
  3. Copia l'identità dell'agente di servizio da utilizzare nel passaggio successivo.

Concedi le autorizzazioni

Il service agent del servizio gestito Lustre richiede uno dei seguenti ruoli Cloud Storage:

  • Per trasferire dati da e verso Cloud Storage: roles/storage.objectUser sul bucket Cloud Storage.
  • Per eseguire il trasferimento solo da Cloud Storage: roles/storage.objectViewer sul bucket Cloud Storage.

Per concedere uno di questi ruoli, esegui il seguente comando gcloud:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member=serviceAccount:SERVICE_AGENT_IDENTITY \
  --role=roles/storage.objectViewer_OR_objectUser

SERVICE_AGENT_IDENTITY è l'identità dell'agente del servizio Managed Lustre del passaggio precedente.

Importa dati in Managed Lustre

Puoi importare i 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 regione diversa dall'istanza Managed Lustre, ma i trasferimenti tra regioni
potrebbero essere più lenti di quelli all'interno della stessa 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 della tua istanza Managed Lustre.
  • --location è la zona della tua istanza Managed Lustre. Ad esempio, us-central1-a.
  • --gcs-path-uri specifica l'URI di un bucket Cloud Storage o un percorso all'interno di un bucket utilizzando il formato gs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, questo deve terminare con una barra (/).
  • --lustre-path specifica il percorso della directory principale 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-id ti 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 che non sia composto solo da zeri.
  • --async restituisce 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 progetto Google Cloud .
  • LOCATION è la zona della tua istanza Managed Lustre. Ad esempio, us-central1-a.
  • INSTANCE_ID è il nome della tua istanza Managed Lustre.
  • gcsPath contiene una chiave uri il cui valore specifica l'URI di un bucket Cloud Storage o un percorso all'interno di un bucket, utilizzando il formato gs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, questo deve terminare con una barra (/).
  • lustrePath contiene una chiave path il cui valore specifica il percorso della directory principale 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é l'agente di servizio gestito da Google, la richiesta supporta un campo serviceAccount nell'oggetto JSON:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Un comando curl di esempio ha il seguente aspetto:

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 in un'istanza Managed Lustre, gli attributi dei 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, allora:
    • UID, GID, modalità e mtime del file vengono impostati in base ai metadati personalizzati dell'oggetto.
    • Il valore atime del file è impostato sullo stesso valore di mtime.
  • Se l'oggetto Cloud Storage non ha i metadati personalizzati, allora:
    • L'UID e il GID del file sono impostati su 0 (root).
    • La modalità del file è impostata su rwxr-xr-x (755).
    • atime e mtime del file sono impostati sull'ora di creazione dell'oggetto Cloud Storage.

In entrambi i casi:

  • Il ctime di un file è impostato sull'ora in cui il file è stato scritto nell'istanza.
  • atime, ctime e mtime per una directory sono impostati sull'ora in cui la directory è stata creata nell'istanza.

Esporta i dati

Puoi esportare i dati dalla tua istanza Managed Lustre in un bucket Cloud Storage nello stesso progetto o in un progetto diverso. Il bucket può trovarsi in una zona o una regione diversa dall'istanza Managed Lustre, ma i trasferimenti tra regioni potrebbero essere più lenti di quelli all'interno della stessa regione.

gcloud

gcloud lustre instances export-data \
  INSTANCE_ID \
  --location=LOCATION \
  --gcs-path-uri="gs://BUCKET_NAME/" \
  --lustre-path="/"

Dove:

  • INSTANCE_ID è il nome della tua istanza Managed Lustre.
  • --location è la zona della tua istanza Managed Lustre. Ad esempio, us-central1-a.
  • --gcs-path-uri specifica l'URI di un bucket Cloud Storage o un percorso all'interno di un bucket, utilizzando il formato gs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, questo deve terminare con una barra (/).
  • --lustre-path specifica il percorso della directory root del file system Managed Lustre. Deve iniziare con /. Il valore predefinito è /.

I seguenti parametri sono facoltativi:

  • --request-id ti 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 che non sia composto solo da zeri.
  • --async restituisce 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 progetto Google Cloud .
  • INSTANCE_ID è il nome della tua istanza Managed Lustre.
  • LOCATION è la zona della tua istanza Managed Lustre. Ad esempio, us-central1-a.
  • lustrePath contiene una chiave path il cui valore specifica il percorso della directory principale del file system Managed Lustre. Deve iniziare con /. Il valore predefinito è /.
  • gcsPath contiene una chiave uri il cui valore specifica l'URI di un bucket Cloud Storage o un percorso all'interno di un bucket, utilizzando il formato gs://<bucket_name>/<optional_path_inside_bucket>/. Se viene specificato un percorso all'interno del bucket, questo deve terminare con una barra (/).

Per utilizzare il tuo account di servizio anziché l'agente di servizio gestito da Google, la richiesta supporta un campo serviceAccount nell'oggetto JSON:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Un comando curl di esempio ha il seguente aspetto:

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 i dati da un'istanza Managed Lustre a un bucket Cloud Storage, i seguenti attributi di file vengono conservati come metadati personalizzati in Cloud Storage:

  • L'UID del file viene memorizzato con la chiave goog-reserved-posix-uid.
  • Il GID del file viene memorizzato con la chiave goog-reserved-posix-gid.
  • La modalità numerica del file viene memorizzata con la chiave goog-reserved-posix-mode.
  • Il mtime del file è archiviato con la chiave goog-reserved-file-mtime.

Questi nomi di chiavi di metadati personalizzati sono gli stessi utilizzati da Storage Transfer Service per i trasferimenti con file system POSIX.

I seguenti attributi dei file non vengono mantenuti:

  • I link simbolici non vengono mantenuti.
  • I collegamenti rigidi vengono esportati come oggetti Cloud Storage separati, con conseguente creazione di più copie.
  • La striatura della lucentezza impostata in modo esplicito utilizzando lfs setstripe o lfs setdirstripe non viene mantenuta.
  • atime e ctime dei file non vengono mantenuti.
  • L'mtime delle directory non viene mantenuto.
  • Le directory vuote non vengono mantenute.

Recupera operazione

Per visualizzare lo stato di un'operazione di importazione o esportazione, devi disporre dell'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 comando curl di esempio ha il seguente aspetto:

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 disporre dell'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 comando curl di esempio ha il seguente aspetto:

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. L'avvio di un secondo trasferimento prima del completamento del primo restituisce 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 interruzioni del trasferimento, problemi di autorizzazione o file ignorati. Segui questi passaggi per diagnosticare e risolvere i problemi comuni di trasferimento dei dati.

Trasferimento bloccato o velocità di uscita ridotte

Se un'operazione di importazione o esportazione si blocca o viene eseguita molto più lentamente del previsto, controlla quanto segue:

  • Limiti di 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 ad alto rendimento trasferiscono dati contemporaneamente, potresti essere limitato da questa quota. Consulta la sezione Quote di 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 corrisponda alle tue aspettative di rendimento.

Errori di autorizzazione durante l'avvio del trasferimento

Se l'avvio di un trasferimento non riesce a causa di un errore di autorizzazione o di autorizzazione negata, verifica i seguenti ruoli IAM:

  • Autorizzazioni utente e service account:l'identità che avvia il comando di trasferimento deve disporre di lustre.instances.importData (per l'importazione) o lustre.instances.exportData (per l'esportazione). Queste sono incluse nel ruolo roles/lustre.admin.
  • Autorizzazioni del service agent: il service agent Managed Lustre gestito da Google (service-<PROJECT_NUMBER>@gcp-sa-lustre...) deve disporre di roles/storage.objectViewer (per le importazioni) o roles/storage.objectUser (per le esportazioni) nel bucket Cloud Storage di destinazione. Per istruzioni di configurazione dettagliate, vedi Concedere le autorizzazioni all'agente di servizio.

File ignorati o attributi mancanti

I trasferimenti di dati Lustre gestiti sono incrementali: copiano solo i file che non esistono nella destinazione o che sono stati modificati dall'ultimo trasferimento.

  • Se i file sembrano essere stati ignorati, verifica se sono già stati trasferiti correttamente in precedenza e non sono stati modificati.
  • Quando esporti i dati in Cloud Storage, i metadati POSIX (UID, GID, modalità, mtime) vengono conservati utilizzando chiavi di metadati personalizzate (ad es. goog-reserved-posix-uid). Tieni presente che i collegamenti simbolici, le directory vuote e i layout di striping PFL espliciti non vengono conservati durante l'esportazione. Per informazioni dettagliate, vedi Trasferire gli attributi dei file di dati.

Esaminare le operazioni di trasferimento non riuscite

Se un'operazione di trasferimento non va a buon fine, recupera il messaggio di errore dettagliato e il motivo del problema 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 visualizzi 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'ulteriore operazione di aggiornamento.

Per risolvere il problema, attendi il completamento dell'operazione in corso prima di avviarne una nuova.

FILESYSTEM_NO_SPACE_ON_DEVICE errori

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 sbilanciamento OST, concessioni di spazio client o esaurimento degli inode. Per maggiori dettagli e strategie di mitigazione, consulta la sezione No space left on device errori.