Un mirror Cloud Storage fornisce un servizio di sincronizzazione automatizzato e basato sugli eventi che esegue continuamente il mirroring dei file da un bucket Cloud Storage a una directory Managed Lustre. Il mirroring è supportato in una sola direzione, da Cloud Storage a Managed Lustre.
I mirror di Cloud Storage sono disponibili solo su richiesta. Per indicare il tuo interesse, invia il modulo di richiesta di mirroring di Cloud Storage.
Per ricevere assistenza con i mirror di Cloud Storage attivi, contatta google-cloud-managed-lustre-support@google.com.
Mirror di Cloud Storage rispetto ai trasferimenti di dati on demand
Managed Lustre supporta due meccanismi per lo spostamento dei dati con Cloud Storage:
| Funzionalità | Mirror di Cloud Storage | Trasferimenti di dati on demand |
|---|---|---|
| Direzione | Da Cloud Storage a Managed Lustre | Da Cloud Storage a Managed Lustre Da Managed Lustre a Cloud Storage |
| Trigger | Basata su eventi; si sincronizza automaticamente alla creazione, all'aggiornamento e all'eliminazione degli oggetti | Manuale |
| Spazio dei nomi gerarchico | Non supportata | Supportato e consigliato per velocità di trasferimento accelerate |
| Bucket Rapid Storage | Non supportata | Non supportata |
Per informazioni sui trasferimenti on demand, consulta Trasferisci dati da o verso Cloud Storage.
Come funziona un mirror di Cloud Storage
Un mirror di Cloud Storage esegue trasferimenti basati su eventi tra un'origine Cloud Storage e una directory Managed Lustre di destinazione. L'origine Cloud Storage può essere un bucket o un prefisso di oggetto specifico all'interno di un bucket. Il mirroring viene eseguito in due fasi: una sincronizzazione iniziale quando crei il mirror, seguita dalla replica continua delle modifiche successive.
Sincronizzazione iniziale
Quando crei un mirror di Cloud Storage, il servizio esegue una sincronizzazione iniziale per copiare tutti gli oggetti esistenti dal percorso Cloud Storage di origine alla directory Managed Lustre di destinazione.
Replica continua basata su eventi
Dopo la sincronizzazione iniziale, il servizio di mirroring rimane in ascolto delle notifiche del bucket e replica le modifiche.
La maggior parte degli oggetti può essere replicata nell'ordine di minuti. Quando un oggetto viene creato o modificato, l'intero file viene copiato.
La creazione di un nuovo oggetto in Cloud Storage crea automaticamente il file corrispondente in Managed Lustre.
La modifica di un oggetto esistente in Cloud Storage sovrascrive il file in Managed Lustre, ignorando eventuali modifiche locali apportate nel file system.
Le modifiche agli attributi dei metadati POSIX personalizzati sugli oggetti Cloud Storage, come UID, GID, modalità o
mtime, vengono aggiornate nel file Managed Lustre corrispondente.L'eliminazione di un oggetto in Cloud Storage elimina per impostazione predefinita il file sottoposto a mirroring in Managed Lustre. Puoi modificare questo comportamento utilizzando il flag
--deleted-files-retained. Le directory principali vuote rimangono nel file system dopo l'eliminazione dell'ultimo file al loro interno.Le modifiche apportate in Managed Lustre ai file sottoposti a mirroring non vengono copiate nel bucket di origine. Se l'oggetto di origine viene aggiornato in un secondo momento, il file Managed Lustre viene sovrascritto con i contenuti dell'oggetto di origine, ignorando eventuali modifiche locali.
L'eliminazione di un file sottoposto a mirroring in Managed Lustre non elimina l'oggetto corrispondente in Cloud Storage.
Velocità di trasferimento
Le seguenti velocità di trasferimento si applicano ai mirror di Cloud Storage i cui bucket e istanze si trovano nella stessa regione Google Cloud :
La sincronizzazione iniziale copia i dati esistenti fino a 100 GBps per i file di dimensioni superiori a 32 MB e fino a 10.000 oggetti al secondo per i file di piccole dimensioni.
La replica continua sincronizza automaticamente le modifiche in corso, con prestazioni di trasferimento che variano in base alle dimensioni dei file:
- I file di grandi dimensioni (10 MB o più) vengono trasferiti con una velocità effettiva di picco fino a 3,5 GBps.
- I file di piccole dimensioni (4 kB o meno) vengono trasferiti a una velocità massima di 4900 oggetti al secondo.
Se i dati vengono scritti in Cloud Storage più velocemente di quanto il mirror possa copiarli, gli eventi vengono messi in coda in un backlog, aumentando il tempo necessario per la visualizzazione delle modifiche in Managed Lustre. Il mirror si aggiorna automaticamente quando la frequenza delle modifiche diminuisce.
La velocità di trasferimento è limitata da:
Il throughput massimo di un'istanza, ovvero la capacità dell'istanza moltiplicata per il livello di prestazioni.
Larghezza di banda in uscita di Cloud Storage, limitata a 200 Gbps o 25 GBps per regione per progetto. Per ottenere una larghezza di banda in uscita più elevata, richiedi un aumento della quota.
Latenza di rete per i trasferimenti tra regioni. Per prestazioni ottimali, posiziona il bucket di origine e l'istanza nella stessa regione.
Prezzi
Un mirror di Cloud Storage comporta addebiti standard di Cloud Storage, che vengono fatturati al progetto che contiene il bucket di origine:
- La sincronizzazione iniziale esegue operazioni di elenco di classe A e operazioni di lettura di classe B sul bucket di origine, mentre la replica continua esegue operazioni di lettura di classe B, che comportano costi operativi di Cloud Storage.
- La replica dei dati da un bucket di origine in una regione diversa da quella dell'istanza Managed Lustre comporta costi di trasferimento dei dati tra regioni.
Prima di iniziare
La creazione di un mirror Cloud Storage richiede:
- Un'istanza Managed Lustre nello stato
ACTIVE. - Un bucket Cloud Storage esistente da utilizzare come origine del mirror. I bucket con spazio dei nomi gerarchico abilitato, i bucket Rapid Storage e i bucket con Pagamenti a carico del richiedente abilitato non sono supportati.
Autorizzazioni, ruoli e risorse richiesti
Per creare e gestire i mirror di Cloud Storage sono necessari i seguenti ruoli, risorse e autorizzazioni IAM.
Autorizzazioni utente
Per creare e gestire i mirror, il tuo account utente o di servizio deve disporre del ruolo Amministratore di Managed Lustre, roles/lustre.admin.
Se utilizzi un ruolo personalizzato, il ruolo richiede le seguenti autorizzazioni:
lustre.mirrors.createper creare un mirror.lustre.mirrors.getper descrivere uno specchio.lustre.mirrors.listper elencare i mirror.lustre.mirrors.updateper aggiornare un mirror.lustre.mirrors.delete
Inizializzazione dell'agente di servizio Cloud Storage
L'agente di servizio Cloud Storage deve esistere nel tuo progetto in modo che possa pubblicare eventi di notifica del bucket:
gcloud storage service-agent --project=PROJECT_ID
Sostituisci PROJECT_ID con l'ID progetto Google Cloud .
Autorizzazioni dell'agente di servizio Managed Lustre
L'agente di servizio Managed Lustre gestito da Google richiede l'accesso al bucket Cloud Storage di origine. Per istruzioni su come trovare o inizializzare l'identità dell'agente di servizio, consulta Agente di servizio Managed Lustre.
L'agente di servizio richiede le seguenti autorizzazioni sul bucket Cloud Storage di origine:
storage.buckets.getstorage.buckets.updatestorage.objects.getstorage.objects.list
Crea un ruolo personalizzato contenente queste autorizzazioni:
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
Concedi il ruolo personalizzato all'agente di servizio Managed Lustre nel bucket di origine:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre." \
--role="projects/PROJECT_ID/roles/lustreMirrorUser"
Sostituisci quanto segue:
- PROJECT_ID: l'ID progetto Google Cloud .
- BUCKET_NAME: il nome del bucket Cloud Storage di origine.
- PROJECT_NUMBER: il tuo numero di progetto Google Cloud .
Crea un mirror di Cloud Storage
Puoi creare un mirror di Cloud Storage per ogni istanza di Managed Lustre.
Non è possibile creare un mirror di Cloud Storage mentre è in corso un'operazione di importazione o esportazione nell'istanza.
gcloud
Esegui il 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"
Dove:
- MIRROR_NAME è il nome di questa risorsa di mirroring. Deve contenere da 1 a 63 caratteri, includere solo lettere minuscole, numeri e trattini, iniziare con una lettera e terminare con una lettera o un numero.
- INSTANCE_ID è l'ID istanza Managed Lustre.
- LOCATION è la zona dell'istanza. Ad esempio,
us-central1-a. --directionspecifica la direzione del mirroring. Deve esserefrom-cloud-storage.--gcs-path-uriè il bucket Cloud Storage di origine e il prefisso facoltativo dell'oggetto. Se specifichi un prefisso dell'oggetto, il percorso deve terminare con una barra:gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.--lustre-pathè la directory di destinazione nel file system Managed Lustre. Deve essere un percorso assoluto che inizia con/, ad esempio/datao/data/subdir. Il valore predefinito è la directory root,/. Se la directory specificata non esiste, viene creata.
Sono disponibili i seguenti parametri facoltativi:
--deleted-files-retainedo--no-deleted-files-retained: controlla se i file eliminati in Cloud Storage vengono conservati in Managed Lustre. Il valore predefinito è--no-deleted-files-retained.--description=DESCRIPTION_TEXT: una descrizione facoltativa per il mirror.
REST
Invia una richiesta POST al metodo 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"
}
Dove:
- PROJECT_ID è l'ID progetto Google Cloud .
- LOCATION è la zona della tua istanza Managed Lustre. Ad esempio,
us-central1-a. - INSTANCE_ID è l'ID istanza.
- MIRROR_NAME è il nome di questa risorsa di mirroring. Deve contenere da 1 a 63 caratteri, includere solo lettere minuscole, numeri e trattini, iniziare con una lettera e terminare con una lettera o un numero.
gcsPathcontiene un campouricon il bucket Cloud Storage di origine e il prefisso dell'oggetto facoltativo. Se specifichi un prefisso dell'oggetto, il percorso deve terminare con una barra:gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.lustrePathè la directory di destinazione nel file system Managed Lustre. Deve essere un percorso assoluto che inizia con/, ad esempio/datao/data/subdir. Il valore predefinito è la directory root,/. Se la directory specificata non esiste, viene creata.directionspecifica la direzione del mirroring. Deve essereFROM_CLOUD_STORAGE.
Il corpo della richiesta supporta anche i seguenti campi facoltativi:
deletedFilesRetained: impostalo sutrueper conservare i file in Managed Lustre dopo l'eliminazione dei file corrispondenti da Cloud Storage. Il valore predefinito èfalse.description: una descrizione facoltativa per il mirror.
Attributi dei file
Quando un file viene copiato da un bucket Cloud Storage a un'istanza Managed Lustre, gli attributi del 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'attributo
atimedel file è impostato sullo stesso valore dimtime.
- UID, GID, modalità e
- Se l'oggetto Cloud Storage non dispone dei 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:
- Il valore
ctimedi un file viene 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.
Gestisci i mirror di Cloud Storage
Puoi elencare, descrivere, aggiornare ed eliminare i mirror di Cloud Storage utilizzando lo strumento Google Cloud CLI o l'API REST. Per modificare il percorso di origine o di destinazione di un mirror esistente, devi eliminare il mirror esistente e crearne uno nuovo.
Elenca un mirror
Per visualizzare un mirror configurato su un'istanza:
gcloud
gcloud lustre instances mirrors list \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Invia una richiesta GET al metodo instances.mirrors.list:
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors
Authorization: Bearer YOUR_ACCESS_TOKEN
Descrivi uno specchio
Per visualizzare la configurazione e lo stato di attività di un mirror:
gcloud
gcloud lustre instances mirrors describe MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Invia una richiesta GET al metodo 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
Stati di mirroring
Il campo state restituito dai comandi list e describe indica la fase del ciclo di vita in cui si trova il mirror:
| Stato | Descrizione |
|---|---|
CREATING |
La risorsa mirror è in fase di creazione. |
INITIAL_SYNC |
La sincronizzazione iniziale copia gli oggetti esistenti da Cloud Storage. |
ACTIVE |
Il mirror sincronizza le modifiche man mano che si verificano. |
DELETING |
Il mirror è in fase di eliminazione. |
Aggiorna un mirror
Puoi aggiornare la descrizione, le etichette e l'opzione per conservare i file eliminati di un mirror.
I percorsi di Cloud Storage e Managed Lustre non possono essere modificati. Per indirizzare un mirror a un percorso diverso, eliminalo e creane uno nuovo.
L'aggiornamento di un mirror non comporta la nuova esecuzione della sincronizzazione iniziale.
gcloud
gcloud lustre instances mirrors update MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION \
--description="DESCRIPTION_TEXT"
REST
Invia una richiesta PATCH al metodo instances.mirrors.patch con un parametro di query 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"
}
Elimina un mirror
Per eliminare un mirror:
gcloud
gcloud lustre instances mirrors delete MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Invia una richiesta DELETE al metodo 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
L'eliminazione di un mirror interrompe la sincronizzazione futura tra Cloud Storage e Managed Lustre. I file già copiati in Managed Lustre non vengono eliminati quando viene rimosso il mirror.
I trasferimenti di file in corso quando viene eliminato un mirror vengono interrotti.
I trasferimenti incompleti potrebbero lasciare file temporanei con il formato del nome FILENAME.cloud_transfer.UUID.NUMBER.tmp nella directory di mirroring dopo l'eliminazione del mirror. Puoi eliminare questi file.
Visualizza i log
I log di mirroring identificano i singoli file che non sono stati sincronizzati.
I log vengono indirizzati a Cloud Logging in base alla risorsa lustre.googleapis.com/Instance, con il nome log mirror.
Per visualizzare i log delle operazioni di mirroring:
- Vai a Esplora log.
Inserisci la seguente query:
resource.type="lustre.googleapis.com/Instance" logName="projects/PROJECT_ID/logs/lustre.googleapis.com%2Fmirror" resource.labels.instance_id="INSTANCE_ID"
Risoluzione dei problemi
Errori PERMISSION_DENIED nel bucket di origine
Se la creazione del mirror non riesce con un errore PERMISSION_DENIED, i file non vengono sincronizzati o sono presenti log che mostrano errori "PERMISSION_DENIED":
Verifica che l'agente di servizio Cloud Storage sia stato inizializzato:
gcloud storage service-agent --project=PROJECT_IDVerifica che all'agente di servizio Managed Lustre siano state concesse le autorizzazioni richieste per il bucket di origine. Per i dettagli, consulta Concedi le autorizzazioni per l'agente di servizio.
Le modifiche in Cloud Storage non vengono replicate in Managed Lustre
Se lo stato del mirror è ACTIVE, ma gli oggetti nuovi o modificati in Cloud Storage non vengono visualizzati in Managed Lustre, verifica che la configurazione della notifica del bucket esista nel bucket di origine.
Elenca le notifiche del bucket:
gcloud storage buckets notifications list --bucket=BUCKET_NAMESe l'output è vuoto, devi eliminare il mirror esistente e crearne uno nuovo:
gcloud lustre instances mirrors delete MIRROR_NAME \ --instance=INSTANCE_ID \ --location=LOCATIONAl termine dell'eliminazione, crea un nuovo mirror.
Errori di conflitto di nomi
Se noti che mancano dei file in Managed Lustre dopo averli aggiunti a Cloud Storage, controlla Cloud Logging per verificare la presenza di errori di conflitto di nomi:
- Se un oggetto creato in Cloud Storage ha lo stesso nome di una directory esistente in Managed Lustre, il trasferimento non va a buon fine con un errore
file existse la directory esistente non viene sovrascritta. Il trasferimento non riuscito lascia un file temporaneo con il formato del nomeFILENAME.cloud_transfer.UUID.NUMBER.tmpnella directory principale. - Se un oggetto creato in Cloud Storage contiene un prefisso di percorso che corrisponde a un file normale esistente in Managed Lustre, il trasferimento non va a buon fine con un errore
not a directorye il file esistente non viene sovrascritto. Ad esempio, semodelsè un file esistente in Managed Lustre, il trasferimento di un oggetto denominatomodels/weights.binda Cloud Storage non va a buon fine perché non è possibile creare la directorymodels/.
Per risolvere questi conflitti, rinomina o elimina la directory o il file in conflitto in Managed Lustre, rimuovi eventuali file .tmp rimanenti e carica nuovamente l'oggetto in Cloud Storage per attivare la sincronizzazione.
ABORTED: unable to queue the operation
Se ricevi un errore ABORTED: unable to queue the operation durante la creazione di un mirror o l'avvio di un job di trasferimento on demand:
- Prima di creare un mirror, assicurati che nell'istanza non siano in esecuzione operazioni
import-dataoexport-dataesistenti. - Attendi il completamento della creazione del mirror e della sincronizzazione iniziale prima di tentare altre operazioni sui dati amministrativi nell'istanza.
FILESYSTEM_NO_SPACE_ON_DEVICE
Se il mirroring si interrompe e i log indicano errori di spazio, il file system Managed Lustre potrebbe aver esaurito gli inode o la capacità del disco. Puoi eliminare i file non necessari per liberare spazio o aumentare la capacità di archiviazione per espandere il file system.