82 votes

Transférer 15 To de petits fichiers

Je suis en train d'archiver des données d'un serveur à un autre. Au départ, j'ai lancé un rsync travail. Il lui a fallu deux semaines pour établir la liste des fichiers pour 5 To de données et une autre semaine pour transférer 1 To de données.

Puis j'ai dû arrêter le travail car nous avons besoin d'un temps d'arrêt sur le nouveau serveur.

Il a été convenu que nous le goudronnerons puisque nous n'aurons probablement plus besoin d'y accéder. Je pensais le diviser en morceaux de 500 Go. Après avoir tar puis j'allais le copier en passant par ssh . J'utilisais tar y pigz mais c'est toujours trop lent.

Y a-t-il une meilleure façon de procéder ? Je pense que les deux serveurs sont sur Redhat. L'ancien serveur est en Ext4 et le nouveau en XFS.

La taille des fichiers varie de quelques kb à quelques mb et il y a 24 millions de jpegs dans 5TB. Je suppose donc qu'il y en a environ 60 à 80 millions pour 15 To.

edit : Après avoir joué avec rsync, nc, tar, mbuffer et pigz pendant quelques jours. Le goulot d'étranglement va être l'IO du disque. Comme les données sont réparties sur 500 disques SAS et environ 250 millions de jpegs. Cependant, j'ai appris à connaître tous ces beaux outils que je pourrai utiliser à l'avenir.

1 votes

Duplication possible de linux à linux, transfert de 10TB ?

2 votes

Une option consiste à créer les fichiers tar compressés sur un disque externe et à le déplacer vers le nouveau système. Le disque supplémentaire accélérera la création des fichiers tar (il n'écrira pas sur les disques existants du système, peut-être en essayant d'y lire 15 To) et n'encombrera pas le nouveau serveur.

4 votes

Y a-t-il une meilleure façon de procéder ? - Ouais, Windows Server 2012 R2 DFS réplication préparerait cela en 10 heures environ . Et il synchronisait les changements, et reprenait là où il s'était arrêté après les redémarrages.

3voto

pts Points 415

(De nombreuses réponses différentes peuvent fonctionner. En voici une autre).

Générer la liste des fichiers avec find -type f (cela devrait se terminer au bout de quelques heures), divisez-la en petits morceaux et transférez chaque morceau à l'aide de rsync --files-from=... .

3voto

Nzall Points 331

Avez-vous pensé à sneakernet ? J'entends par là le fait de tout transférer sur le même disque, puis de déplacer physiquement ce disque.

Il y a environ un mois, Samsung a dévoilé un disque de 16 To (techniquement, il s'agit de 15,36 To), qui est également un SSD : http://www.theverge.com/2015/8/14/9153083/samsung-worlds-largest-hard-drive-16tb

Je pense que ce disque fera l'affaire. Vous devrez toujours copier tous les fichiers, mais comme vous n'avez pas de latence de réseau et que vous pouvez probablement utiliser SATA ou une technique similaire rapide, cela devrait être beaucoup plus rapide.

2voto

neutrinus Points 1085

S'il y a une chance d'obtenir un taux de réussite élevé lors de la déduplication, j'utiliserais quelque chose comme Retour à la case départ ou le grenier.

Si ce n'est pas le cas, vérifiez le netcat+tar+. pbzip2 Adaptez les options de compression en fonction de votre matériel - vérifiez quel est le goulot d'étranglement (CPU ? réseau ? IO ?). Le pbzip2 serait bien réparti sur tous les processeurs, offrant ainsi de meilleures performances.

0 votes

Lzma ( xz ) se décompresse plus rapidement que bzip2, et se comporte bien sur la plupart des entrées. Malheureusement, xz L'option multithread n'est pas encore implémentée.

0 votes

En général, l'étape de compression nécessite plus de puissance que la décompression, donc si le CPU est le facteur limitant, pbzip2 donnera de meilleures performances globales. La décompression ne devrait pas affecter le processus, si les deux machines sont similaires.

0 votes

Oui, ce que je voulais dire c'est qu'il est dommage qu'il n'y ait pas de lzma multi-thread à flux unique. Bien que pour ce cas d'utilisation, de transfert de systèmes de fichiers entiers de données, pigz serait probablement le compresseur le plus lent que vous voudriez utiliser. Ou même lz4 . (Il y a un lz4mt multi-threaded-for-a-single-stream disponible. Il n'est pas très efficace (il crée de nouveaux threads très souvent), mais il obtient une bonne accélération.)

2voto

sleepyweasel Points 21

Vous utilisez RedHat Linux, donc cela ne s'applique pas, mais c'est une autre option :

J'ai eu beaucoup de succès en utilisant ZFS pour contenir des millions de fichiers car les inodes ne sont pas un problème.

Si c'était une option pour vous, vous pourriez alors prendre des instantanés et utiliser zfs pour envoyer des mises à jour incrémentielles. J'ai eu beaucoup de succès en utilisant cette méthode pour transférer ainsi que pour archiver des données.

ZFS est principalement un système de fichiers Solaris, mais on peut le trouver dans illumos (fork open source d'OpenSolaris de Sun). Je sais qu'il y a également eu un peu de chance d'utiliser ZFS sous BSD et Linux (en utilisant FUSE ?) - mais je n'ai aucune expérience à ce sujet.

3 votes

Il existe un portage Linux natif non-FUSE de ZFS depuis un certain temps maintenant : zfsonlinux.org

1voto

user310823 Points 23

Commencez un rsync sur la machine cible. Cela accélérera considérablement le processus de transfert.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X