Wielowątkowa synchronizacja plików między 2 serwerami Linux

9

W tej chwili korzystam z rsync dla 2,2 miliona plików o łącznej pojemności 250 GB, a to zajmuje 700 000 plików w wieku 6 godzin.

Czy ktoś zna narzędzie podobne do rsync, które może to zrobić z wieloma wątkami, aby działało szybciej?

Tom van Ommen
źródło
3
Czy masz powód, by zakładać, że jest on w jakikolwiek sposób związany z procesorem?
Chopper3
Jakich opcji rsync używasz?
Kyle Smith,
Czy używasz ssh jako transportu?
JimB
rsync -avSPp I nie ma problemów z procesorem ani dyskiem.
Tom van Ommen,
I żaden transport SSH po prostu nie widział czegoś w Internecie, nie wiem czy jest szybszy. Indeksowanie wszystkich plików zajmuje już wieki.
Tom van Ommen

Odpowiedzi:

7

Wątpię, czy procesor jest tutaj czynnikiem ograniczającym. Najprawdopodobniej jesteś ograniczony zarówno przepustowością sieci do przesyłania, jak i dyskowym We / Wy; szczególnie opóźnienie dla wszystkich tych wywołań statystyk.

Czy można rozbić hierarchię systemu plików na mniejsze części, aby przetwarzać je równolegle?

Co to są pliki źródłowe i co je zapisuje lub modyfikuje? Czy byłoby możliwe wysyłanie zmian w miarę ich pojawiania się na poziomie aplikacji?

JimB
źródło
Synchronizowanie plików załączników Zarafa, domyślnie wszystkie zgzipowane. Mógłbym uruchomić wiele instancji, ale to mniej wydajne niż 10 wątków. Sieć ma od 1 GB do 1 GB, ale różne centra danych, ale nie powinno to stanowić problemu. otrzymałem 24 dyski SAS po stronie źródłowej i inteligentną pamięć masową z dyskiem SSD w miejscu docelowym.
Tom van Ommen
1
@Tom van Ommen - dlaczego uważasz, że masz ograniczony procesor? W jaki sposób wiele procesów jest mniej wydajnych niż wątki, jeśli naprawdę masz ograniczony procesor?
JimB
1
@Tom van Ommen, 10 procesów ma więcej narzutów niż 10 wątków; jednak blokowanie struktur danych między wątkami jest koszmarem kodowania. Często o wiele bardziej wydajne (na czas programisty) jest po prostu odrodzenie wielu procesów i załatwienie go
Mike Pennington,
1
@Guacamole - wiele wątków może pomóc w niektórych sytuacjach, ale jeśli jego link jest nasycony, nie będzie już więcej przebijał, bez względu na to, ile ma wątków. Rsync używa wątków do współbieżności i nie blokuje wewnętrznie we / wy.
JimB
1
@Guacamole - Zwracam tylko uwagę, że jeśli używa on ssh jako transportu, jego przepustowość jest ograniczona przez sam ssh (w szczególności statyczne okno odbioru, chyba że używa łatek ssh HPN).
JimB
1

Jeśli podsystemem dysku serwera odbierającego jest tablica z wieloma dyskami, uruchomienie wielu procesów rsync może poprawić wydajność. Korzystam z 3 procesów rsync, aby skopiować pliki na serwer NFS (RAID6 z 6 dyskami na grupę raidów) w celu nasycenia Gigabit Ethernet.

Ten facet donosi o podstawowej wiązce python, która odradza wiele procesów rsync http://www.reliam.com/company/featured_geek

Sinysee
źródło
Niestety link nie działa. Czy możesz to jeszcze raz znaleźć?
P.Péter
1

Przeczytałem wiele podobnych pytań. Myślę, że jedyną prawdziwą odpowiedzią jest ręczne podzielenie kopii / przeniesienie. Problemem będzie tutaj IOps. Jeśli to sprawi, że poczujesz się lepiej, jestem w trakcie przenoszenia ~ 200 milionów plików zużywających znacznie ponad 100 TB miejsca na dysku.

Wayne
źródło