Skopiuj duże pliki na wiele komputerów w sieci LAN

9

Mam kilka dużych plików, które muszę skopiować z jednego komputera z systemem Linux na około 20 innych komputerów z systemem Linux, wszystkie w tej samej sieci LAN tak szybko, jak to możliwe. Jakie narzędzia / metody byłyby najlepsze do kopiowania tych plików, zauważając, że nie będzie to jednorazowa kopia. Te maszyny nigdy nie będą podłączone do Internetu, a bezpieczeństwo nie stanowi problemu.

Aktualizacja:

Powodem mojego pytania jest to, że (jak rozumiem) obecnie używamy scpszeregowo do kopiowania plików na każdy z komputerów i zostałem poinformowany, że jest to „zbyt wolny” i szukana jest szybsza alternatywa. Zgodnie z tym, co powiedziano mi, próba zrównoleglenia scppołączeń po prostu spowalnia go jeszcze bardziej z powodu poszukiwań dysku twardego.

Jonathan Callen
źródło
Zdefiniuj „duży”. Setki MB / GB / TB / więcej?
Janne Pikkarainen,
Obecnie suma wynosi około 4 GiB (skompresowane), chociaż może to wzrosnąć w przyszłości.
Jonathan Callen,
To znaczy w jakikolwiek sposób nawet w 2011 r. - NIE DUŻY. Biorąc pod uwagę łącze 1gigabit, które jest odpowiednio przełączone (standard w 2011 r.), Co jest dość fascynujące. Uruchamianie go na serwerze 10g (nie tak rzadkim nawet w 2011 roku) ... no cóż;)
TomTom

Odpowiedzi:

27

BitTorrent. W ten sposób Twitter wdraża niektóre rzeczy wewnętrznie.

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html (link do archiwum internetowego)

mfinni
źródło
3
Oprócz mojej odpowiedzi (która, jak sądzę, wykona dobrą robotę, jeśli można ją zaimplementować), poniższa odpowiedź dla NFS jest bardzo dobra. Dobry serwer NFS powinien buforować pliki, abyś nie uderzał w dysk. Ponadto nie kopiuj plików z serwera do klientów. Zainicjuj go od klienta i pozwól, aby pamięć podręczna serwera NFS pomogła.
mfinni,
1
Koniecznie wypróbuj to w środowisku nieprodukcyjnym, w prezentacji, którą mówią (iirc), spowodowało to, że niektóre przełączniki bardzo ucierpiały podczas pierwszych wdrożeń z powodu liczby wymienianych pakietów.
Shadok
1
@psusi Dlaczego według ciebie ma on wysyłać wszystkie dane 20 razy? Gdy inni uczestnicy mają już część pliku, mogą rozpocząć wysyłanie swoich części do innych.
Jonathan Callen,
2
Problemem dla OP nie jest sieć LAN, to dysk na centralnym serwerze.
mfinni
1
@pSusi - multiemisja z pewnością byłaby inną prawidłową odpowiedzią. Opublikuj to jako odpowiedź, a nie pukanie do mojej odpowiedzi.
mfinni
12

Co powiesz na UFTP , używa multiemisji do dostarczania plików przez UDP do wielu klientów jednocześnie. Nie dla wszystkich i nie jestem w tym ekspertem, ale wygląda na to, że robi to, co chcesz.

Siekacz 3
źródło
1
Oświadczenie: Będzie to wymagało sprzętu obsługującego multiemisję.
user606723,
Miałem raczej nadzieję, że będzie to na tym samym vlan - zmniejszając wpływ tego zastosowania.
Chopper3
@ user606723: Czy nie wszystko jest nowoczesne? Być może jakieś śmieci konsumenckie nie, ale od jakiegoś czasu nie spotkałem się ze zepsutą multiemisją. Obecnie używa go zbyt wiele. Myślę, że Windows Active Directory używa nawet multiemisji.
Zan Lynx,
Właściwie nie mam doświadczenia z tym @ZanLynx. Wiem, że wiele biur / laboratoriów komputerowych używa przełączników konsumenckich / niezarządzanych przy ostatnim przeskoku. Jak te przełączniki będą się zachowywać w przypadku multiemisji?
user606723,
3

Czy próbowałeś skopiować te dane rsync? Jeśli masz 1 Gbit LAN lub szybszą, kopiowanie ponad 4 * 20 GB nie powinno stanowić problemu.

Jak często ta kopia będzie występować? Czy to ma znaczenie, czy ukończenie zajmie kilka minut?

Janne Pikkarainen
źródło
3

scp-tsunami to jest droga!

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

Jest powszechnie używany do dystrybucji obrazów dysków w klastrach wirtualizacyjnych, jego wydajność jest prawie dwuwarstwowa, ale łatwiej jest go używać do codziennego użytku.

Giovanni Toraldo
źródło
2

Ustawienie udziału NFS i ściągnięcie każdego komputera z tego wspólnego repozytorium dużych plików byłoby prawdopodobnie najszybszą metodą (NFS jest bardzo szybki i ma niewielki narzut).

Możesz dodać dodatkową kartę sieciową lub dwie do serwera źródłowego i połączyć je ze sobą, aby uzyskać lepszą przepustowość.

Implementacja może być prostym zadaniem cron na każdym serwerze docelowym, który ślepo pobiera dane z udziału co godzinę / dzień / cokolwiek. Możesz również skonfigurować demona do odpytywania o nowe pliki; możesz także po prostu napisać skrypt sterujący do SSH (z parami kluczy) w każdym polu docelowym i poinstruować go, aby pobierał plik podczas wykonywania skryptu.

gravyface
źródło
1
Wierzę, że mój poprzednik próbował do tego użyć NFS i stwierdził, że (w tym czasie) pamięć podręczna RAM nie była wystarczająco duża dla całego transferu, co powodowało, że obciążenie dysku twardego stało się czynnikiem ograniczającym zamiast sieci prędkość.
Jonathan Callen,