Многопоточная синхронизация файлов между двумя серверами Linux


9

В настоящее время я использую rsync для 2,2 миллиона файлов общим объемом 250 ГБ, и это всего лишь 700 тысяч файлов за 6 часов.

Кто-нибудь знает инструмент, похожий на rsync, который может делать это с несколькими потоками, чтобы он шел быстрее?


3
Есть ли у вас основания полагать, что он каким-либо образом связан с процессором?
Chopper3

Какие параметры rsync вы используете?
Кайл Смит

Вы используете SSH в качестве транспорта?
ДжимБ

rsync -avSPp И нет проблем ни с процессором, ни с диском.
Том ван Оммен

И никакой транспорт SSH просто видел что-то в сети, не знаю, быстрее ли это. Индексирование всех файлов уже занимает много времени.
Том ван Оммен

Ответы:


7

Я сомневаюсь, что процессор является ограничивающим фактором здесь. Скорее всего, вы ограничены как пропускной способностью сети для передачи, так и дисковым вводом-выводом; особенно задержка для всех этих вызовов статистики.

Можете ли вы разбить иерархию файловой системы на более мелкие куски для параллельной обработки?

Каковы исходные файлы, и что пишет или изменяет их? Можно ли отправлять изменения по мере их появления на уровне приложения?


Синхронизация файлов вложений Zarafa, все gzip-файлы по умолчанию. я мог бы запустить несколько экземпляров, но это менее эффективно, чем 10 потоков. И сеть от 1 Гбит до 1 Гбит, но разные центры обработки данных, но это не должно быть проблемой. получил 24 диска SAS на стороне источника и интеллектуальное хранилище с SSD на месте назначения.
Том ван Оммен

1
@ Том ван Оммен - почему вы думаете, что у вас ограниченный процессор? Как несколько процессов менее эффективны, чем потоки, если вы действительно ограничены процессором?
ДжимБ

1
@ Том ван Оммен, 10 процессов имеют больше накладных расходов, чем 10 потоков; однако блокировка структур данных между потоками является кошмаром кодирования. Зачастую для программиста гораздо эффективнее просто запускать несколько процессов и покончить с этим
Майк Пеннингтон,

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

1
@ Guacamole - все, на что я указываю, это то, что если он использует ssh в качестве транспорта, его пропускная способность ограничена самим ssh (в частности, статическим окном приема, если он не использует ssh-патчи HPN).
ДжимБ

1

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

Этот парень рассказывает об основном питоне, который запускает несколько процессов rsync http://www.reliam.com/company/featured_geek


К сожалению, ссылка мертва. Не могли бы вы найти это снова?
П.Петр

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.