Kopieren Sie große Dateien auf mehrere Computer in einem LAN

9

Ich habe ein paar große Dateien, die ich von einem Linux-Computer auf ungefähr 20 andere Linux-Computer kopieren muss, alle so schnell wie möglich im selben LAN. Welche Tools / Methoden eignen sich am besten zum Kopieren dieser Dateien, da dies keine einmalige Kopie sein wird? Diese Computer werden niemals mit dem Internet verbunden, und Sicherheit ist kein Problem.

Aktualisieren:

Der Grund für meine Anfrage ist, dass wir (soweit ich es verstehe) derzeit scpseriell verwenden, um die Dateien auf jeden der Computer zu kopieren, und mir wurde mitgeteilt, dass dies "zu langsam" ist und nach einer schnelleren Alternative gesucht wird. Nach dem, was mir gesagt wurde, scpverlangsamt der Versuch, die Anrufe zu parallelisieren, sie aufgrund von Festplattensuchen einfach weiter.

Jonathan Callen
quelle
Definieren Sie "groß". Hunderte von MB / GB / TB / mehr?
Janne Pikkarainen
Derzeit liegt die Gesamtzahl bei etwa 4 GiB (komprimiert), obwohl dies in Zukunft zunehmen könnte.
Jonathan Callen
Das heißt, auf keinen Fall auch 2011 - NICHT GROSS. Angesichts einer 1-Gigabit-Verbindung, die ordnungsgemäß geschaltet ist (Standard in 2011), ist dies recht einfach zu erreichen. Ausführen eines 10g-Servers (auch 2011 nicht so selten) ... na ja;)
TomTom

Antworten:

27

BitTorrent. Auf diese Weise stellt Twitter einige Dinge intern bereit.

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html (Link zum Webarchiv)

mfinni
quelle
3
Zusätzlich zu meiner Antwort (von der ich denke, dass sie einen guten Job macht, wenn Sie sie implementieren können) ist die folgende Antwort für NFS eine sehr gute. Ein guter NFS-Server sollte Dateien zwischenspeichern, damit Sie nicht weiter auf die Festplatte zugreifen. Kopieren Sie dabei auch nicht die Dateien vom Server auf die Clients. Initiieren Sie es vom Client und lassen Sie den Cache des NFS-Servers helfen.
Mfinni
1
Stellen Sie sicher, dass Sie es in einer Umgebung ohne Produktion ausprobieren. In der Präsentation (iirc) heißt es, dass einige Switches bei den ersten Bereitstellungen aufgrund der Anzahl der ausgetauschten Pakete stark gelitten haben.
Shadok
1
@psusi Warum muss es 20 Mal alle Daten senden? Sobald die anderen Peers einen Teil der Datei haben, können sie beginnen, die Teile, die sie haben, an die anderen Peers selbst zu senden.
Jonathan Callen
2
Das Problem für das OP ist nicht das LAN, sondern die Festplatte auf dem zentralen Server.
Mfinni
1
@pSusi - Multicast wäre sicherlich eine weitere gültige Antwort. Poste das als Antwort, nicht als Schlag auf meine Antwort.
Mfinni
12

Wie wäre es mit UFTP? Es verwendet Multicast, um Dateien über UDP an mehrere Clients gleichzeitig zu liefern. Nicht für jedermann und ich bin kein Experte dafür, aber es klingt so, als würde es tun, was Sie wollen.

Chopper3
quelle
1
Haftungsausschluss: Dies erfordert Geräte, die Multicast unterstützen.
user606723
Ich hatte eher gehofft, dass dies auf demselben VLAN sein würde - was die Auswirkungen dieser Verwendung verringert.
Chopper3
@ user606723: Ist nicht alles modern? Vielleicht tut es ein Konsumentenmüll nicht, aber ich habe seit einiger Zeit nichts mehr mit kaputtem Multicast gesehen. Zu viel benutzt es heutzutage. Ich denke, Windows Active Directory verwendet sogar Multicast.
Zan Lynx
Ich habe eigentlich keine Erfahrung mit diesem @ZanLynx. Ich weiß, dass viele Büros / Computerlabors beim letzten Sprung Consumer / Unmanaged Switches verwenden. Wie verhalten sich diese Switches mit Multicast?
user606723
3

Haben Sie versucht, diese Daten mit zu kopieren rsync? Wenn Sie über ein 1-Gbit-LAN ​​oder schneller verfügen, sollte das Kopieren über 4 * 20 GB kein Problem sein.

Wie oft wird diese Kopie erscheinen? Ist es wichtig, wenn es ein paar Minuten dauert, bis es fertig ist?

Janne Pikkarainen
quelle
3

scp-tsunami es ist der weg!

https://code.google.com/p/scp-tsunami/

Es wird häufig zum Verteilen von Festplattenabbildern auf Virtualisierungsclustern verwendet. Die Leistung ist nahezu unbegründet, aber für den täglichen Gebrauch einfacher zu verwenden.

Giovanni Toraldo
quelle
2

Das Einrichten einer NFS-Freigabe und das Abrufen jeder Maschine von diesem gemeinsam genutzten Repo großer Dateien ist wahrscheinlich die schnellste Methode (NFS ist sehr schnell und hat wenig Overhead).

Sie können dem Quellserver eine oder zwei zusätzliche Netzwerkkarten hinzufügen und diese miteinander verbinden, um einen besseren Durchsatz zu erzielen.

Die Implementierung kann ein einfacher Cron-Job auf jedem Zielserver sein, der jede Stunde / jeden Tag / was auch immer blind von der Freigabe abruft. Sie können auch einen Daemon einrichten, um nach neuen Dateien abzufragen. Sie können auch einfach eine Kontrollsitzung in SSH (mit Schlüsselpaaren) in jede Zielbox schreiben und sie anweisen, die Datei abzurufen, wenn Sie Ihr Skript ausführen.

Soßengesicht
quelle
1
Ich glaube, mein Vorgänger hat versucht, NFS dafür zu verwenden, und festgestellt, dass (zu diesem Zeitpunkt) der RAM-Cache nicht groß genug für die gesamte Übertragung war, was dazu führte, dass die Belastung der Festplatte anstelle des Netzwerks zum begrenzenden Faktor wurde Geschwindigkeit.
Jonathan Callen