Trasferisci 15TB di file piccoli

Sto archivando i dati da un server a un altro. Inizialmente ho iniziato un lavoro rsync . Ci sono volute 2 settimane per build l'elenco dei file solo per 5 TB di dati e un'altra settimana per trasferire 1 TB di dati.

Poi ho dovuto uccidere il lavoro perché abbiamo bisogno di un po 'di tempo sul nuovo server.

  • / var / eseguire la creazione della directory anche se il servizio è distriggersto
  • Linux LVM: partizioni singole o multiple su disco rigido?
  • Opencl sempre crittografa la chiave privata?
  • Monitoraggio della media del carico
  • Come limitare le porte di tunneling inversa SSH?
  • Nginx smette di lavorare all'improvviso e non riesco a trovare la ragione
  • E 'stato concordato che ci provvederemo perché probabilmente non avremo bisogno di accedere nuovamente. Stavo pensando di rompere in pezzi da 500 GB. Dopo che ho tar allora ho intenzione di copiarlo attraverso ssh . Stavo usando tar e pigz ma è ancora troppo lento.

    C'è un modo migliore per farlo? Penso che entrambi i server siano su Redhat. Il vecchio server è Ext4 e il nuovo è XFS.

    Le size dei file vanno da pochi KB a pochi MB e ci sono 24 milioni di jpeg in 5TB. Quindi sto indovinando circa 60-80 milioni per 15 TB.

    edit: Dopo aver giocato con rsync, nc, tar, mbuffer e pigz per un paio di giorni. Il collo di bottiglia sarà il disco IO. Poiché i dati sono strisciavano su 500 dischi SAS e circa 250 milioni di jpeg. Tuttavia, ora ho imparato a conoscere tutti questi bei strumenti che posso usare in futuro.

  • C'è un catrame più intelligente o cpio là fuori per recuperare efficientemente un file archiviato nell'archivio?
  • Linux - Divisione di un backup in due passaggi
  • struttura di cartelle ottimali per la memorizzazione di file 100k su un'unità USB
  • Archiviare ricorsivamente piccoli file nell'tree dei documenti su Linux?
  • 11 Solutions collect form web for “Trasferisci 15TB di file piccoli”

    Ho ottenuto ottimi risultati utilizzando tar , pigz (gzip parallelo) e nc .

    Macchina di origine:

     tar -cf - -C /path/of/small/files . | pigz | nc -l 9876 

    Macchina destinazione:

    Estrarre:

     nc source_machine_ip 9876 | pigz -d | tar -xf - -C /put/stuff/here 

    Per mantenere l'archivio:

     nc source_machine_ip 9876 > smallstuff.tar.gz 

    Se vuoi vedere il tasso di trasferimento solo passa attraverso pv dopo pigz -d !

    Mi aderire alla soluzione rsync. Moderno (3.0.0+) rsync utilizza l'elenco dei file incrementali, quindi non deve build l'elenco completo prima del trasferimento. Quindi riavviarlo non richiederà di effettuare il trasferimento integer in caso di problemi. La suddivisione del trasferimento per la directory superiore o secondaria lo ottimizza ulteriormente. (Utilizzo rsync -a -P e aggiungere --compress se la tua networking è più lenta delle unità.)

    Impostare una VPN (se Internet), creare un'unità virtuale di qualche formato sul server remoto (renderla ext4), montarla sul server remoto, quindi montarla sul server locale (utilizzando un protocollo a livello di block come iSCSI ) e utilizzare dd o un altro strumento a livello di block per eseguire il trasferimento. È quindi ansible copiare i file dall'unità virtuale sull'unità reale (XFS) a proprio piacimento.

    Due motivi:

    1. Nessun overhead del filesystem, che è il principale colpevole di performance
    2. Non cerchi, stai guardando la lettura / scrittura sequenziale da entrambe le parti

    Se il vecchio server viene distriggersto e i file possono essere offline per alcuni minuti, è spesso più veloce eseguire semplicemente l'estrazione delle unità fuori dalla vecchia casella e collegarle nel nuovo server, montarle (tornare online in quel momento) e copiare i file ai nuovi dischi nativi di server.

    Usa mbuffer e se è su una networking sicura è ansible evitare il passaggio di crittografia.

    (Molte risposte diverse possono funzionare. Ecco un'altra.)

    Generare l'elenco dei file con find -type f (questo dovrebbe finire in un paio d'ore), dividerlo in piccoli frammenti e trasferire each pezzo usando rsync --files-from=...

    Hai considerato sneakernet? Con questo, intendo trasferire tutto sulla stessa unità, quindi spostare fisicamente quella traccia.

    circa un mese fa, Samsung ha presentato un disco da 16 TB (tecnicamente, è 15,36 TB), che è anche un SSD: http://www.theverge.com/2015/8/14/9153083/samsung-worlds-largest-hard -drive-16TB

    Penso che questa unità avrebbe fatto solo per questo. Dovresti ancora copiare tutti i file, ma siccome non hai latenza di networking e probabilmente può utilizzare SATA o una tecnica altrettanto veloce, dovrebbe essere molto più veloce.

    Se c'è la possibilità di get un alto rapporto di successo quando deduplicazione, vorrei utilizzare qualcosa come borgbackup o Attic.

    In caso contrario, controllare la soluzione netcat + tar + pbzip2 , adattare le opzioni di compressione in base all'hardware – controllare il bottleneck (CPU? Network? IO?). Il pbzip2 potrebbe benissimo attraversare tutte le CPU, migliorando le performance.

    Stai usando RedHat Linux, quindi questo non vale, ma come un'altra opzione:

    Ho avuto grande successo utilizzando ZFS per contenere milioni di file in quanto gli inodes non sono un problema.

    Se fosse un'opzione per te, potresti prendere istantanee e utilizzare zfs per submit aggiornamenti incrementali. Ho avuto un sacco di successo utilizzando questo metodo per il trasferimento nonché i dati di archivio.

    ZFS è principalmente un filesystem di Solaris, ma può essere trovato nell'illumos (open source fork di Sun's OpenSolaris). So che c'è stata una certa fortuna nell'utilizzo di ZFS in BSD e Linux (utilizzando FUSE?) – ma non ho alcuna esperienza nel tentativo.

    Avviare un demone rsync sulla macchina di destinazione. Questo accelererà molto il process di trasferimento.

    È ansible farlo con solo tar e ssh, come questo:

    tar zcf - <your files> | ssh <destination host> "cat > <your_file>.tar.gz"

    Oppure, se si desidera mantenere i singoli file:

    tar zcf - <your files> | ssh <destination host> "tar zxf -"

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.