web-dev-qa-db-fra.com

Transfert efficace de téraoctets de données entre deux machines (montages samba et NFS)

Je dois transférer 15 TB des données d'une machine à une autre et, après plusieurs échecs au cours des trois dernières semaines, je suis à court d'options et je ne sais pas quoi faire.

Il y a deux machines:

  • machine source: utilise le point de montage du partage samba et est fortement restreinte (la connexion à la machine en dehors du réseau nécessite un VPN et je ne peux pas monter le partage normalement sur la deuxième machine [cible] sans configurer le VPN qui se déconnecte automatiquement toutes les 10 heures). Mes 15 To de données sont sur cette machine
  • machine cible: qui utilise NFS

La première chose que j'ai essayée était de me connecter à la première machine et d'utiliser un simple rsync:

rsync -rvz --stats --progress /mnt/samba/my_15TB_data user@second_machine:/mnt/NFS/backup

Cela a échoué après quelques heures:

 rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
bash: syntax error near unexpected token `('

  12820840448  55%    9.02MB/s    0:18:31
 12820840448: command not found
 rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)

rsync: connection unexpectedly closed (731 bytes received so far) [sender]
syntax error near unexpected token `('
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
bash: syntax error near unexpected token `('

Je ne comprends pas vraiment ce que cette erreur signifie, mais d'après ce que j'ai rassemblé en ligne sur plusieurs forums, cela ressemble à un bogue produit par rsync quand une énorme quantité de données est copiée! Une autre possibilité est que la connexion entre les deux machines ait peut-être été rompue.

J'ai ensuite essayé de compresser mes données autant que possible, j'ai donc choisi la compression de plus haut niveau sur 7z:

7z a 15T_data_compressed.7z /mnt/samba/my_15TB_data -mx9

Cela se passait trop bien, mais après 460 heures de temps CPU sur le processus 7Zip, le processus a été forcé par l'administrateur de la machine. J'ai réalisé que j'utilisais tous les cœurs disponibles sur la machine. Très bien de le faire après une utilisation aussi intensive des ressources pour ne compresser que des fichiers.

Que puis-je faire pour transférer efficacement mes données? Plus précisément, je recherche un moyen de me donner le possibilité de reprendre le transfert en cas de problème. Par exemple, dans le cas précédent avec rsync, je peux voir qu’une bonne quantité de données a été transférée.

Est-il préférable de monter le partage Samba à l’aide du VPN (qui se déconnecte automatiquement toutes les 10 heures) et de mettre en miroir le dossier sur le NFS? Une telle chose est-elle possible et sera-t-il plus rapide?

À propos, la vitesse de transfert moyenne entre les deux machines est de 12 Mo/s. Ce sont deux machines différentes situées dans deux pays différents.

1
dudeze

Tout d'abord, le erreur dans rsync que vous citez semble être que vous avez collé des éléments dans un terminal. Ce n'est pas le message d'erreur d'origine.

Le message d'origine, que vous avez collé dans le terminal, indique que la connexion a été fermée pour une raison quelconque, telle qu'un redémarrage, un problème de réseau ou similaire. Mais rsync devrait pouvoir reprendre.

Il suffit de courir

rsync -rvz --stats --progress /mnt/samba/my_15TB_data user@second_machine:/mnt/NFS/backup

une fois de plus, il vérifiera l'état des fichiers, comparera l'horodatage et la taille, et ignorera tout fichier dont la taille et l'horodatage sont identiques du côté source et du côté destination. Ce processus prendra un certain temps, mais à moins qu'il ne s'agisse de très petits fichiers, il sera plus rapide que de les transférer à nouveau.

Vous pouvez en général reprendre autant de fois que vous le souhaitez avec rsync; c'est un mécanisme de transfert de fichier assez robuste.

2
vidarlo