Quel est le moyen le plus rapide de transférer des fichiers volumineux entre deux ordinateurs sur le même réseau ?


Combien d'argent êtes-vous prêt à dépenser ?

Mais sérieusement, la réponse dépend d'un tas de choses. Pour simplifier, disons qu'il y a deux systèmes, ordinateurs de bureau ou serveurs, qui ont des fichiers stockés sur des périphériques de type disque, et que les deux machines sont connectées par un réseau.


Dans cette configuration, chaque chose a une limite de bande passante, et n'importe laquelle d'entre elles pourrait être le facteur limitant.

  • La bande passante du périphérique de stockage - les disques SATA tournants ont tendance à être d'environ 150 mégaoctets par seconde. Les disques SSD avec des interfaces SATA peuvent être d'environ 800 Mo/sec. Les disques SSD avec des interfaces NVMe peuvent atteindre 2,5 Go/sec
  • Réseau - Le Wifi sera assez lent, 50 à quelques 100 Mégabits/seconde. L'Ethernet filaire dépendra du plus lent des deux adaptateurs hôtes et d'un commutateur les reliant. Le matériel domestique typique est probablement de 100 mégabits/seconde, mais peut être de 1 gigabit/seconde. Si vous dépensez des sommes modestes, la plupart des ordinateurs de bureau et des serveurs prendront en charge l'Ethernet à 10 gigabits/seconde. Des sommes importantes vous permettront d'atteindre 25 ou 100 Gigabits/seconde. Les sommes importantes consacrées à Infiniband vous permettront d'atteindre 400 Gigabits/seconde. Cela n'a guère d'intérêt car c'est beaucoup plus rapide que les périphériques de stockage.
  • Système d'E/S - les ordinateurs de bureau et les serveurs auront des systèmes d'E/S PCIexpress, mais ils varieront dans le nombre de " voies " disponibles pour les différents périphériques. Chaque voie pourrait fonctionner à 2,5 gigabits/seconde environ. Différent dans les différentes générations de PCI
  • CPU - Les CPU auront une puissance de calcul et une bande passante mémoire limitées. Pour les réseaux plus lents, cela peut fonctionner d'utiliser le CPU pour faire de la compression de données, tandis que pour les réseaux rapides, le CPU peut devenir le facteur limitant et il est préférable de désactiver la compression.

La version TLDR est que si vous avez des lecteurs de disques rotatifs, alors utiliser 1 Gbps Ethernet et obtenir 800 ou 900 Megabits est assez bon.

Si vous avez des SSD NVMe, alors dépensez quelques dollars pour un lien point à point ou commuté à 10 Gbps et cela peut fonctionner à un gigaoctet/seconde.

Maintenant, si vous transférez de petits fichiers, alors il y aura un facteur supplémentaire de ralentissement pour les opérations de métadonnées - vous devez créer les fichiers et les entrées de répertoire et cela sera généralement beaucoup plus lent que le transfert de données réel.

Maintenant, nous devrions parler des applications. J'utiliserais rsync, car on peut lui demander de garder deux dossiers synchronisés, et il ne transférera que les fichiers qui ont été modifiés, et il a des options de compression.

Il y a beaucoup d'autres options, comme (sur linux) piping zip ou tar dans ssh. Aucune idée de ce que pourrait être la meilleure chose à utiliser sur Windows.

Je suis raisonnablement confiant dans le fait que le montage à distance d'un lecteur par partage de lecteur n'est pas la meilleure approche. Cela va ralentir les opérations sur les métadonnées. Cela pourrait être ok pour quelques gros fichiers, car le protocole SMB n'est pas horrible.

Dans mon sous-sol, j'ai un serveur 8 cœurs doux avec 128 Go de RAM. Il dispose d'une liaison Ethernet 10 Gbps dédiée à une boîte NAS RAID située à quelques mètres. Il semble assez rapide pour les opérations de fichiers à distance. Je peux lire ou écrire de gros fichiers à environ 300 mégaoctets/seconde. D'autre part, j'ai un disque externe de 10T sur mon bureau, et il ne fait pas grand-chose parce qu'il n'est connecté que par USB 400 Gbps et qu'il s'agit de toute façon d'un disque spinny pas particulièrement rapide.