Sincronizzazione di file multi-thread tra 2 server Linux


9

Al momento sto eseguendo rsync per 2,2 milioni di file per un totale di 250 GB e questo richiede solo 700.000 file in 6 ore.

Qualcuno conosce uno strumento simile a rsync che può farlo con più thread in modo che vada più veloce?


3
Hai qualche motivo per supporre che sia legato in qualche modo alla CPU?
Chopper3

Quali opzioni rsync stai usando?
Kyle Smith,

Stai usando ssh come mezzo di trasporto?
JimB,

rsync -avSPp E non ci sono problemi di CPU o disco.
Tom van Ommen,

E nessun trasporto SSH ha appena visto qualcosa sul web non so se è più veloce. Ci vogliono già anni per indicizzare tutti i file.
Tom van Ommen,

Risposte:


7

Dubito che la cpu sia il fattore limitante qui. Molto probabilmente sei limitato sia dalla larghezza di banda della rete per il trasferimento sia dall'IO del disco; specialmente la latenza per tutte quelle chiamate stat.

Riesci a scomporre la gerarchia del filesystem in blocchi più piccoli da elaborare in parallelo?

Quali sono i file di origine e cosa li scrive o modifica? Sarebbe possibile inviare le modifiche man mano che avvengono a livello di applicazione?


Sincronizzazione dei file degli allegati Zarafa, tutti compressi con gzip per impostazione predefinita. potrei eseguire più istanze ma è meno efficiente di 10 thread. E la rete è da 1 GB a 1 GB ma diversi datacenter ma non dovrebbe essere un problema. ottenuto 24 dischi SAS sul lato sorgente e archiviazione intelligente con SSD sulla destinazione.
Tom van Ommen,

1
@ Tom van Ommen - perché pensi di avere una CPU limitata? In che modo più processi sono meno efficienti dei thread se si è veramente limitati dalla CPU?
JimB,

1
@ Tom van Ommen, 10 processi hanno un sovraccarico maggiore di 10 thread; tuttavia, bloccare le strutture di dati tra thread è un incubo di codifica. Spesso è molto più efficiente (per il tempo del programmatore) generare più processi e farcela
Mike Pennington,

1
@Guacamole - il thread multiplo potrebbe aiutare in alcune situazioni, ma se il suo link è saturo, non riuscirà più a passare attraverso il thread, indipendentemente dal numero di thread che ha. Rsync utilizza i thread per la concorrenza e non sta bloccando internamente su IO.
JimB,

1
@Guacamole - Tutto quello che sto sottolineando è che se usa ssh come mezzo di trasporto, il suo throughput è limitato da ssh stesso (in particolare la finestra di ricezione statica, a meno che non stia usando le patch ssh HPN).
JimB,

1

Se il sottosistema del disco del server ricevente è un array con più dischi, l'esecuzione di più processi rsync può migliorare le prestazioni. Sto eseguendo 3 processi rsync per copiare i file su un server NFS (RAID6 con 6 dischi per gruppo raid) per saturare Gigabit Ethernet.

Questo ragazzo riferisce di un cablaggio di base in pitone che genera più processi rsync http://www.reliam.com/company/featured_geek


Sfortunatamente, il link è morto. Potresti trovarlo di nuovo?
P.Péter,

1

Ho letto molte domande simili a questa. Penso che l'unica vera risposta sia spezzare la copia / spostare manualmente. IOps sarà il problema qui. Se ti fa sentire meglio, sono in procinto di spostare ~ 200 milioni di file che consumano ben oltre 100 TB di spazio su disco.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.