Best practice per i trasferimenti del file system

In questa pagina vengono descritte 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 dei trasferimenti:

  • Massimizza le prestazioni dell'agente di trasferimento.

  • Confronta le tue prestazioni 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 tue prestazioni su set di dati di test molto piccoli non sono indicativi delle prestazioni su set di dati di grandi dimensioni in produzione.

  • Limita le singole cartelle di origine a 1 milione di file. Le directory che contengono milioni di file possono rallentare l'intero trasferimento.

  • Esegui gli agenti in macchine virtuali (VM) separate in modo da scalare il consumo delle risorse in modo più efficace.

  • Verifica che l'interfaccia di rete sulle macchine dell'agente sia dimensionata in base alla larghezza di banda di lettura/scrittura necessaria.

    Ad esempio, se intendi utilizzare completamente una rete WAN (wide-area network) a 20 Gbps, l'interfaccia di rete della macchina dell'agente deve supportare 20 Gbps per leggere i dati dal file system in rete e altri 20 Gbps per trasferire dati su Cloud Storage o 40 Gbps di larghezza di banda totale.

  • Monitora la CPU, la memoria e la rete sulle macchine ad agente per assicurarti che le macchine non siano sovraccaricate da altri carichi di lavoro, poiché ciò può influire negativamente sulle prestazioni. Consulta i requisiti hardware dell'agente per i valori suggeriti di memoria e CPU.

Caricamenti multiparte

Se il trasferimento proviene da un file system POSIX a Cloud Storage o tra file system POSIX, valuta la possibilità di abilitare i caricamenti multiparte. I caricamenti multiparte possono velocizzare i trasferimenti che includono file di grandi dimensioni fino al 300% grazie alla suddivisione dei file di grandi dimensioni (> 1 GiB) in parti più piccole e al caricamento parallelo delle parti.

I file system compatibili con HDFS e S3 non supportano i caricamenti multiparte.

Abilita caricamenti multiparte

Per attivare i caricamenti in più parti:

  • Devi concedere le autorizzazioni richieste all'account che autorizza gli agenti di trasferimento, ovvero un account utente o un account di servizio.

  • 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 multiparte se ciò può accelerare un trasferimento.

Configurare le regole del ciclo di vita degli oggetti multiparte

Puoi utilizzare Gestione del ciclo di vita degli oggetti di Cloud Storage per interrompere un caricamento multiparte incompleto ed eliminare le parti associate. Consulta Interrompere i caricamenti multiparte incompleti nella documentazione di Cloud Storage.

Ti consigliamo di impostare un valore age di 7 giorni.

Disabilita i caricamenti multiparte

Per disattivare i caricamenti multiparte, 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_ID specifica l'ID progetto che ospita il trasferimento.
  • CREDENTIAL_FILE: se l'agente di trasferimento utilizza un account di servizio per l'autenticazione, specifica il percorso di un file delle credenziali dell'account di servizio in formato JSON.

In alternativa, revoca le autorizzazioni richieste dall'account che autorizza gli agenti di trasferimento, che può essere un account utente o un account di servizio.

Massimizza 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 del disco rigido, il bus di I/O e la connettività della LAN (Local Area Network) influiscono sulle prestazioni.

  • Velocità effettiva e utilizzo della WAN.

    Una rete WAN lenta o molto utilizzata rallenta le prestazioni.

  • Caratteristiche dei file.

    Ad esempio, molti file di grandi dimensioni hanno una velocità effettiva di rete maggiore rispetto a molti file piccoli, a causa del sovraccarico di rete.

A causa di queste variabili, non è possibile prevedere le prestazioni effettive o fornire un numero ottimale di agenti da utilizzare.

Consigliamo di utilizzare almeno tre agenti, se possibile, su macchine diverse, in modo che il trasferimento rimanga a tolleranza di errore. Puoi aggiungere agenti di trasferimento mentre sono in esecuzione, man mano che le prestazioni aumentano in modo dinamico.

Per osservare l'impatto dell'aggiunta di agenti e per scegliere il numero di agenti più adatti al tuo ambiente:

  1. Avvia un trasferimento di grandi dimensioni che richieda almeno 1 ora per l'esecuzione. Ad esempio, avvia un trasferimento che contenga almeno 100.000 file e abbia una dimensione totale di almeno 100 GB.

  2. Utilizza Cloud Monitoring per osservare la velocità effettiva complessiva dell'agente.

  3. Attendi che la velocità effettiva si stabilizza e determina se la capacità WAN o il limite di larghezza di banda è limitato.

  4. 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 per la stabilizzazione della velocità effettiva in Cloud Monitoring.

Ripeti i passaggi 3 e 4, aggiungendo un agente alla volta fino a raggiungere il limite desiderato. Finché sono disponibili risorse di calcolo, file system e di rete, puoi eseguire fino a 100 agenti contemporaneamente per pool di agenti.

Se saturano la larghezza di banda in uscita prima di raggiungere il limite desiderato, puoi:

Se hai aggiunto agenti, ma la velocità effettiva non aumenta e la tua WAN non è satura, esamina la velocità effettiva del file system. In rari casi, la velocità effettiva del file system è satura, ostacolando la capacità di aumentare le prestazioni di trasferimento.

Agenti di denominazione

Quando assegni un nome agli agenti, ti consigliamo di fare quanto segue:

  • Includi sempre il nome host nell'agente. Questo ti aiuta a trovare la macchina su cui è in esecuzione un agente. Ti consigliamo di passare --hostname=$(hostname) al comando run di Docker.

  • Scegli uno schema di prefisso dell'agente che ti aiuti a identificare gli agenti nel contesto dell'organizzazione del monitoraggio e dell'infrastruttura. Ad esempio:

    • Se hai tre progetti di trasferimento separati, puoi includere il nome del team nell'agente. Ad esempio, logistics.

    • Se stai eseguendo due progetti di trasferimento diversi per due diversi data center, è consigliabile includere il nome del data center nel prefisso dell'agente. Ad esempio, omaha.