taki_net: (Default)
taki_net ([personal profile] taki_net) wrote2012-09-04 12:58 am

Снова сисадминский вопрос

Я уже как-то задавал, но ответ мне тогда не пригодился.

Задача: есть файл (один около 10 Гб, или несколько по 2), его надо переместить на много (15-20) компов. Просто копирование по сети требует времени (и износа диска на сервере) в 15-20 раз больше. Если запускать процессы параллельно (на 2-4 машинах, больше не тянет), получается чуть побыстрее.

То есть, нужна прога (скорее клиент-серверное приложение), которая синхронно кидает пакет на все 20 машин, дожидается 20 сигналов о приеме, кидает следующий (как Ghostcast).

Кто пробовал - подходит ли в этом качестве KyloSTN?

Или подскажите другое работоспособное решение.

Да, прога нужна или под Win, или, если Линуксовая, с запуском с LiveCD.

[personal profile] ichthuss 2012-09-03 09:44 pm (UTC)(link)
Лично я, из врождённой склонности к извращениям, сделал бы нечто вроде

mknod pipe1 p
...
( cat pipe1 | ssh host1 'cat > file' ) &
...
cat file | tee pipe1 | tee pipe2 | ... | cat > pipen

[identity profile] taki-net.livejournal.com 2012-09-03 09:57 pm (UTC)(link)
Это же последовательное копирование будет, нет?

[personal profile] ichthuss 2012-09-03 10:02 pm (UTC)(link)
Нет, именно что одновременное: команда tee свой ввод параллельно пишет на стандартный вывод и в файл. Так что, с точностью до буферизирования, выход будет одновременным, а чтение будет производить только первая команда cat file.

[identity profile] nec-p1us-u1tra.livejournal.com 2012-09-03 10:31 pm (UTC)(link)
Только считалка сломается все по десять раз энкриптить. netcat/socat бы.

А под задачу инструмент уже существует двести лет и называется rdist.

[personal profile] ichthuss 2012-09-03 10:31 pm (UTC)(link)
На всякий случай распишу подробнее, вдруг пригодится. Вначале создаем именованные каналы по числу машин-приемников, затем запускаем копирование из каждого из этих каналов на соответствующую машину, в фоновом режиме. Поскольку на этот момент в каналы еще ничего не записано, все команды копирования засыпают в ожидании данных. Последняя команда пишет содержимое файла в каждый из именованных каналов, отчего сетевые линки просыпаются и передают информацию на машины-получатели, где она записывается в файл.

[personal profile] ichthuss 2012-09-03 10:37 pm (UTC)(link)
Можно и неткатом, только это дольше объяснять. За rdist спасибо, полистаю на досуге мануал.

[identity profile] http://users.livejournal.com/_iggi_/ 2012-09-03 10:41 pm (UTC)(link)
torrent?

[identity profile] kondybas.livejournal.com 2012-09-04 12:24 am (UTC)(link)
Проблема лишь в том, что каждый пакет с идентичным содержимым будет эн раз проталкиваться через интерфейс, что не даст никакого прироста скорости, а с учетом накладных расходов - будет и медленнее, чем полоса/N. Потому же не будет толку и от RDist.

Задача сводится к мультикасту.

[identity profile] kondybas.livejournal.com 2012-09-04 12:27 am (UTC)(link)
RDist не экономит траффик. Он протолкнет файло через интерфейс столько раз, сколько хостов надо синхронизировать.

[identity profile] zepete.livejournal.com 2012-09-04 12:48 am (UTC)(link)
eMule.
Каждый получатель одновременно будет раздавателем:)

[identity profile] slobin.livejournal.com 2012-09-04 01:01 am (UTC)(link)
+1. Я не уверен, сумеют ли клиенты найти друг друга без трекера, если в пределах локалки, но можно попробовать. Раньше был такой замечательный "дзенский" трекер, который не требовал никакой загрузки .torrent файла и просто признавал любой вообще торрент своим. Предназначен был для вот такой вот не-массовой делёжки файлами между знакомыми, или даже с самим собой, как в этом случае. Но он делся, и я не могу найти никаких следов. :-(

... Роза розе рознь ...

[identity profile] slobin.livejournal.com 2012-09-04 01:12 am (UTC)(link)
P.S. Ага, я слегка фигню спорол. Таких трекеров, которые вообще ничего не требуют, оказывается, много. Собственно, uTorrent, который у большинства стоит, парочку из них сразу подставляет при создании нового торрента (openbittorrent.com и publicbt.com). Так что это, видимо, самый простой способ. Создаём торрент-файл (несколько десятков килобайт), любым способом копируем на машины in question, запускаем торрент. Из соображений безопасности временно закрываем торрентам выход за пределы локалки, ну либо просто смотрим краем глаза на список подключившихся пиров. Но это из общей паранойи -- шансов, что хеш, который вы не публиковали, куда-то утечёт, близко к нет. Должно прокатить.

... Оружие массовой победы ...

[identity profile] pargentum.livejournal.com 2012-09-04 02:03 am (UTC)(link)
Или какой-нибудь strongDC.

[identity profile] nec-p1us-u1tra.livejournal.com 2012-09-04 06:21 am (UTC)(link)
Да. Я и не говорил обратного.

[identity profile] nec-p1us-u1tra.livejournal.com 2012-09-04 06:31 am (UTC)(link)
употребление выражения "прирост" требует опорной точки. Прироста по отношению К ЧЕМУ?
Авторское требование -- экономия диска на сервере (серия пайпов этому удовлетворяет, т.к. читает один раз) и экономия времни. Так как не было сказано какого из трех (CPU time, активного времени админа, мирового времени до достижения желаемого состояния), каждый исходит из своего понимания вопроса. Мое понимание говорит, что самый критичный ресурс это время живого человека.
Далее, энкрипция в ssh потребляет 10% процессора и более при эффективной скорости прокачки 2.5 мб/сек. При десятке клиентов и гигабитной сети это будет дороже проталкивания через интерфейс.
Так что мультикаст -- это ТРЕТЬЯ вещь на которую надо смотреть.

[identity profile] vaysburd.livejournal.com 2012-09-04 06:51 am (UTC)(link)
А я бы сделал так: запустил копирование с 1-го компа на 2-й, затем сразу же со 2-го на 3-й и т.д.

[identity profile] http://users.livejournal.com/_iga/ 2012-09-04 05:09 pm (UTC)(link)
http://code.google.com/p/castcopy/
http://developers.rambler.ru/opensource/tools/mcp/

либо torrent.