Questa pagina descrive le best practice per i trasferimenti del file system.
Best practice per le prestazioni
Di seguito sono riportate le best practice per garantire un buon rendimento del trasferimento:
Valuta il tuo rendimento trasferendo un corpus di dati di grandi dimensioni, in genere di almeno 100 GB.
Storage Transfer Service è un servizio su larga scala ottimizzato per la velocità effettiva, pertanto le prestazioni su set di dati di test molto piccoli non sono indicative delle prestazioni su set di dati di grandi dimensioni in produzione.
Limita le singole cartelle di origine a 1 milione di file. Le directory contenenti milioni di file possono rallentare l'intero trasferimento.
Esegui gli agenti in macchine virtuali (VM) separate per poter scalare il consumo di risorse in modo più efficace.
Verifica che l'interfaccia di rete sulle macchine agent sia dimensionata per la larghezza di banda di lettura/scrittura di cui hai bisogno.
Ad esempio, se intendi utilizzare completamente una rete WAN (Wide Area Network) da 20 Gbps, l'interfaccia di rete della macchina agente deve supportare 20 Gbps per leggere i dati dal file system di rete e altri 20 Gbps per trasferire i dati a Cloud Storage, ovvero 40 Gbps di larghezza di banda totale.
Monitora la CPU, la memoria e la rete sulle macchine agent per assicurarti che non siano sovraccariche di altri carichi di lavoro, in quanto ciò può influire negativamente sulle prestazioni. Per i valori suggeriti di memoria e CPU, consulta i requisiti hardware dell'agente.
Caricamenti multiparte
Se il trasferimento avviene da un file system POSIX a Cloud Storage o tra file system POSIX, valuta la possibilità di attivare i caricamenti in più parti. I caricamenti multiparte possono velocizzare i trasferimenti che includono file di grandi dimensioni fino al 300% suddividendo i file di grandi dimensioni (> 1 GiB) in parti più piccole e caricandole in parallelo.
I file system compatibili con HDFS e S3 non supportano i caricamenti in più parti.
Abilitare i caricamenti multiparte
Per attivare i caricamenti multiparte:
Devi concedere le autorizzazioni richieste all'account che autorizza gli agenti di trasferimento, ovvero un account utente o un service account.
Il bucket di destinazione o intermedio non deve avere un criterio di conservazione o un blocco degli oggetti.
Una volta abilitato, Storage Transfer Service utilizza automaticamente il caricamento in più parti quando è probabile che ciò acceleri un trasferimento.
Configurare le regole del ciclo di vita degli oggetti in più parti
Puoi utilizzare la gestione del ciclo di vita degli oggetti di Cloud Storage per interrompere un caricamento in più parti incompleto ed eliminare le parti associate. Consulta la sezione Interrompere i caricamenti in più parti incompleti nella documentazione di Cloud Storage.
Ti consigliamo di impostare un valore di age pari a 7 giorni.
Disabilitare i caricamenti in più parti
Per disattivare i caricamenti in più parti, reinstalla gli agenti di trasferimento utilizzando docker run
e passa --enable-multipart=false:
sudo docker run --ulimit memlock=64000000 -d --rm \ -v /usr/local/research:/usr/local/research \ gcr.io/cloud-ingest/tsop-agent:latest \ --project-id=PROJECT_ID \ --agent-pool=AGENT_POOL \ --creds-file=CREDENTIAL_FILE \ --hostname=$(hostname) \ --enable-multipart=false
Sostituisci quanto segue:
PROJECT_IDspecifica l'ID progetto che ospita il trasferimento.CREDENTIAL_FILE: se l'agente di trasferimento utilizza un service account per l'autenticazione, specifica il percorso di un file di credenziali dell'account di servizio in formato JSON.
In alternativa, revoca le autorizzazioni richieste dall'account che autorizza gli agenti di trasferimento, ovvero un account utente o un service account.
Massimizzare le prestazioni dell'agente di trasferimento
Il rendimento del trasferimento è influenzato dalle seguenti variabili:
Funzionalità del file system.
Limitazioni hardware sottostanti.
Il tipo di supporto dell'hard disk, il bus di input/output e la connettività della rete locale (LAN) influenzano le prestazioni.
Utilizzo e throughput della WAN.
Una WAN più lenta o molto utilizzata rallenta le prestazioni.
Caratteristiche del file.
Ad esempio, molti file di grandi dimensioni hanno un throughput di rete superiore rispetto a molti file di piccole dimensioni a causa dell'overhead di rete.
A causa di queste variabili, non possiamo prevedere il rendimento effettivo o fornire un numero ottimale di agenti da utilizzare.
Ti consigliamo di utilizzare almeno tre agenti su macchine diverse, se possibile, in modo che il trasferimento rimanga tollerante agli errori. Puoi aggiungere agenti di trasferimento durante l'esecuzione dei trasferimenti, man mano che il rendimento aumenta in modo dinamico.
Per osservare l'impatto dell'aggiunta di agenti e scegliere il numero di agenti più adatto al tuo ambiente:
Avvia un trasferimento di grandi dimensioni che richiede almeno un'ora per essere eseguito. Ad esempio, avvia un trasferimento che contenga almeno 100.000 file e abbia una dimensione totale di almeno 100 GB.
Utilizza Cloud Monitoring per osservare il throughput complessivo dell'agente.
Attendi che la velocità effettiva si stabilizzi e determina se sei limitato dalla capacità della WAN o dal limite di larghezza di banda.
Se non hai saturato la capacità WAN e non hai raggiunto il limite di trasferimento desiderato, aggiungi un altro agente. L'agente aggiuntivo aumenta automaticamente la velocità effettiva di trasferimento. Attendi circa 3 minuti affinché il throughput si stabilizzi in Cloud Monitoring.
Ripeti i passaggi 3 e 4, aggiungendo un agente alla volta finché non raggiungi il limite desiderato. Se le risorse di calcolo, del file system e di rete sono disponibili, puoi eseguire fino a 100 agenti contemporaneamente per pool di agenti.
Se saturi la larghezza di banda in uscita prima di raggiungere il limite desiderato, puoi provare una delle seguenti soluzioni:
- Controlla la larghezza di banda utilizzata da Storage Transfer Service.
- Ottenere più larghezza di banda della rete.
Se hai aggiunto agenti, ma la velocità effettiva non aumenta e la tua WAN non è satura, analizza la velocità effettiva del file system. In rari casi, la velocità effettiva del file system è satura, il che ostacola la tua capacità di aumentare le prestazioni di trasferimento.
Denominazione degli agenti
Quando assegni un nome agli agenti, ti consigliamo di procedere come segue:
Includi sempre il nome host nell'agente. In questo modo puoi trovare la macchina su cui è in esecuzione un agente. Ti consigliamo di passare
--hostname=$(hostname)al comando Dockerrun.Scegli uno schema di prefissi degli agenti che ti aiuti a identificarli nel contesto della tua organizzazione di monitoraggio e infrastruttura. Ad esempio:
Se hai tre progetti di trasferimento separati, ti consigliamo di includere il nome del team nell'agente. Ad esempio,
logistics.Se esegui due progetti di trasferimento diversi per due data center diversi, ti consigliamo di includere il nome del data center nel prefisso dell'agente. Ad esempio,
omaha.