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.
Limitazioni
Può essere attiva una sola operazione di trasferimento per istanza alla volta. Se tenti di avviare una seconda operazione di trasferimento mentre una precedente è ancora in esecuzione, si verifica un errore come:
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
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 il tuo workload richiede una velocità di trasferimento dei dati più elevata, 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.exportDataper eseguire il trasferimento da Managed Lustre a Cloud Storage.lustre.instances.importDataper 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 agente di servizio 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
Esegui il comando
services identity create:gcloud beta services identity create \ --service=lustre.googleapis.com \ --project=PROJECT_NUMBER_OR_IDSostituisci 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.comCopia il valore dell'identità dell'agente di servizio da utilizzare nel passaggio successivo.
Se hai già creato un'istanza Managed Lustre
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)"- 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,
Copia il numero di progetto restituito nell'identità del service agent:
service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.comCopia 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.objectUsersul bucket Cloud Storage. - Per eseguire il trasferimento solo da Cloud Storage:
roles/storage.objectViewersul 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.
Importare 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 dell'istanza Managed Lustre.
--locationè la zona della tua 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, questo deve terminare con una barra (/).--lustre-pathspecifica 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-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 che non sia composto solo da 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 progetto Google Cloud .
- LOCATION è la zona della tua 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, questo deve terminare con una barra (/).lustrePathcontiene una chiavepathil 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 a 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
mtimedel file vengono impostati in base ai metadati personalizzati dell'oggetto. - L'
atimedel file è impostato sullo stesso valore dimtime.
- UID, GID, modalità e
- 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). 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:
- Il valore
ctimedi un file è impostato sull'ora in cui il file è stato scritto nell'istanza. atime,ctimeemtimeper 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 dell'istanza Managed Lustre.
--locationè la zona della tua 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, questo 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 che non sia composto solo da 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 progetto Google Cloud .
- INSTANCE_ID è il nome dell'istanza Managed Lustre.
- LOCATION è la zona della tua istanza Managed Lustre. Ad esempio,
us-central1-a. lustrePathcontiene una chiavepathil cui valore specifica il percorso della directory principale 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, 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
mtimedel file è archiviato con la chiavegoog-reserved-file-mtime.
Questi nomi delle chiavi dei 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 collegamenti 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 setstripeolfs setdirstripenon viene mantenuta. atimeectimedei file non vengono mantenuti.- L'
mtimedelle 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