LINUX.ORG.RU

Многопотоковый rsync

 


0

1

Что нужно: скопировать много-много данных из Новосибирска в Москву, много-много тут 4 ТБ.

Проблема: rsync через ssh выдаёт примерно 0.5 МБ/сек, что страшно грустно.

Неожиданность: 10 параллельно запущенных rsync дают примерно в 10 раз большую производительность.

Пока все, с кем я поговорил из ответственных за связь, отнекиваются на предмет ограничения пропускной способности одного соединения. Хотя не все ещё из отпусков повыходили — возможно найду причину.

Я могу конечно на коленке запускать пачку rsync и выдавать каждому свою группу файлов, но если есть многопоточный rsync, то мне кажется проблему будет решить проще.

★★★★★

проще всего будет сделать один тар, порезать его на куски и каждому rsync-у отдать свой кусок.

утилита для разрезания и собирания блобов не помню как называется, но она точно есть.

x4DA ★★★★★
()
Ответ на: комментарий от x4DA

В этом нет необходимости, так как скопировать нужно много больших файлов размером примерно по 1 ГБ, имеющих в имени уникальный номер. То есть всё уже порезано и собрано.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от zolden

Кстати, подумалось, что lftp многопоточный и может sftp, так что хоть и не rsync, но имеет смысл попробовать.

Evgueni ★★★★★
() автор топика

http://lists.samba.org/archive/rsync/2009-October/024051.html

Q: Are there any plans that would allow one to set a parameter, like 'number_of_threads' and rsync will ship multiple files at the same time?

A: Not at present. That would be a pretty big protocol change, and is probably something that would be best left to a new-protocol rewrite. It would be quite interesting to have separate connections for the hierarchy traversal code versus one or more file transfer connections that were controlled by the traversal process, but that is not something that I'm working on, nor have I heard about anyone else doing that.

Wayne Davison - rsync developer, 2009-October

anonymous
()

rsync+ssl,rsync+ipsec. Скорее всего таки тормоза из-за ssh, если их в параллель куча работает быстрее.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Либо в сети и не позволяет быстро один поток выдавать.

AnDoR ★★★★★
()
Ответ на: комментарий от Evgueni

И тем не менее...

Ну и если уж по сети, непонятно зачем здесь rsync, когда оптимально копировать простым ftp.

И в Вашем случае нужно тюнить tcp, чтобы анонсируемое окно было побольше. Тогда в сети одновременно будет находиться больше переданных, неподтвержденных данных. Это снимет вашу проблему с 0.5Мбайт/сек.

ansky ★★★★★
()

xargs же:

$ cat send.sh
#!/bin/bash
куда="$1"
shift
exec rsync -Rtp... "$@" "$куда"

$ find $откуда -type f -print0 | xargs -r0 -P $многопотоков -n 1 ./send.sh $куда/

DonkeyHot ★★★★★
()
Ответ на: комментарий от ansky

Ещё раз: а) есть только ssh и больше ничего; б) проблема не в канале — ситуация далека от его наcыщения

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от DonkeyHot

Безусловно я могу размножить число запущенных процессов, но следить за множеством процессов сложнее, чем за одним.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

А что ты называешь «следить»? Ошибки обнаруживать - cron пришлёт, или добавь 2>>error.log ; test -s error.log && mail себе <$_ && rm $_

Ошибки исправлять - добавь --partial --inplace --append(если повезёт и файлы не меняются) и гоняй его в вечном цикле.

Весёлые картинки рисовать - добавь --progress, 2>>$TMPDIR/progress.$$.log и выполнив в терминале watch «cat $TMPDIR/progress.*.log» (может и сработать, не проверял)

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

Как подобное изобразить на коленке я знаю, но я недаром в исходном посте написал, что предпочёл бы готовое решение.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

Выше анон процитировал мейнтейнера rsync, что многопотоковая передача идёт в разрез с существующим протоколом rsync и требует его значительной переработки

anonymous
()
Ответ на: комментарий от madgnu

Если я правильно понял, то это немного не то: pssh копирует один файл на много хостов, а мне нужно много файлов на один хост.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от anonymous

2009 г. Я потому и спрашивал на предмет: нет ли лекарства? :)

Если возникает потребность, то внезапно некоторые проблемы разрешаются.

Например, как разрешилась моя конкретная, обсуждаемая здесь, проблема: внезапно выяснилось, что есть годное хранилище данных под боком, а не в Москве, и до него линк в 10 Гбит.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

А, ну да. Тогда собирай файлы tar'ом без компрессии и через пайп отправляй по scp/rsync.

madgnu ★★★★★
()
Ответ на: комментарий от Evgueni

Ну так напиши в рассылку rsync Wayne'y Davison'y - он текущий мейнтейнер rsync, кому как не ему знать. Или прямо ему на почту. Или на #rsync

anonymous
()
Ответ на: Видимо, pssh от anonymous

Это не то. Там один файл во много мест, а мне было нужно много файлов в одно место.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

Ну узнай, чё тебе сложно в рассылку письмецо написать?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.