Багатопотокова синхронізація файлів між двома серверами Linux


9

На даний момент я запускаю rsync для 2,2 мільйона файлів загальною вагою 250 Гб, і це займає лише 700 Кб файлів за 6 годин.

Хтось знає такий інструмент, як rsync, який може це зробити з декількох потоків, щоб він пройшов швидше?


3
Чи є у вас будь-які підстави припускати, що це будь-яким чином пов'язане з процесором?
Chopper3

Які параметри rsync ви використовуєте?
Кайл Сміт

Ви використовуєте ssh як транспорт?
JimB

rsync -avSPp І проблем із процесором чи диском немає.
Том ван Оммен

І жоден транспорт SSH просто не побачив щось в Інтернеті, не знаю, чи швидше. Індексувати всі файли вже потрібно віками.
Том ван Оммен

Відповіді:


7

Я сумніваюся, процесор є обмежуючим фактором тут. Ви, швидше за все, обмежені як пропускною здатністю мережі для передачі, так і диском IO; особливо затримка для всіх цих статичних дзвінків.

Чи можете ви розділити ієрархію файлової системи на менші шматки для паралельної обробки?

Що таке вихідні файли та що їх записує чи модифікує? Чи можна було б надсилати зміни, як вони відбуваються на рівні програми?


Синхронізуються файли вкладення Zarafa, всі за замовчуванням gzipped. Я міг би запустити кілька примірників, але це менш ефективно, ніж 10 потоків. І мережа від 1 ГБ до 1 Гбіт, але різні центри обробки даних, але це не повинно бути проблемою. отримав 24 диски SAS на стороні джерела та інтелектуальне сховище з SSD у пункті призначення.
Том ван Оммен

1
@Tom van Ommen - чому ти вважаєш, що ти обмежений процесором? Наскільки кілька процесів менш ефективні, ніж потоки, якщо ви дійсно обмежені процесором?
JimB

1
@Tom van Ommen, 10 процесів мають більше накладних витрат, ніж 10 ниток; однак, блокування структур даних між потоками - це кошмар кодування. Часто набагато ефективніше (на час кодера) просто породжувати декілька процесів і робити це з ним
Майк Пеннінгтон

1
@Guacamole - кілька потоків може допомогти в деяких ситуаціях, але якщо його посилання насичене, він більше не збирається просуватися незалежно від того, скільки ниток у нього є. Rsync використовує потоки для одночасності, і не блокує внутрішнє введення.
JimB

1
@Guacamole - Я лише зазначу, що якщо він використовує ssh як транспорт, його пропускна здатність обмежена самим ssh (зокрема, вікном статичного отримання, якщо тільки він не використовує патчі HPN ssh).
JimB

1

Якщо дисковою підсистемою приймаючого сервера є масив з декількома дисками, запуск декількох процесів rsync може підвищити продуктивність. У мене запущено 3 rsync-процеси для копіювання файлів на сервер NFS (RAID6 з 6 дисками на рейдову групу) для насичення Gigabit Ethernet.

Цей хлопець повідомляє про базовий джгут пітона, який породжує декілька процесів rsync http://www.reliam.com/company/featured_geek


На жаль, посилання мертва. Не могли б ви її знову знайти?
P.Péter

1

Я прочитав багато подібних до цього питань. Я думаю, що єдиною реальною відповіддю є руйнування копії / переміщення вручну. Тут буде проблема IOps. Якщо ви відчуваєте себе краще, я пересуваю ~ 200 мільйонів файлів, що споживають понад 100 ТБ дискового простору.


0

Ви можете розглянути можливість перевірки багатопотокового клонування cp для linux (відкритий код): http://static.usenix.org/event/lisa10/tech/slides/kolano.pdf


Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Скотт Пак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.