January 2019

M T W T F S S
 123456
78 910111213
14 151617181920
21222324252627
28293031   

За стиль благодарить

Развернуть метки

No cut tags
Tuesday, September 4th, 2012 12:58 am
Я уже как-то задавал, но ответ мне тогда не пригодился.

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

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

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

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

Да, прога нужна или под Win, или, если Линуксовая, с запуском с LiveCD.
Monday, September 3rd, 2012 09:44 pm (UTC)
Лично я, из врождённой склонности к извращениям, сделал бы нечто вроде

mknod pipe1 p
...
( cat pipe1 | ssh host1 'cat > file' ) &
...
cat file | tee pipe1 | tee pipe2 | ... | cat > pipen
Monday, September 3rd, 2012 10:02 pm (UTC)
Нет, именно что одновременное: команда tee свой ввод параллельно пишет на стандартный вывод и в файл. Так что, с точностью до буферизирования, выход будет одновременным, а чтение будет производить только первая команда cat file.
Tuesday, September 4th, 2012 12:24 am (UTC)
Проблема лишь в том, что каждый пакет с идентичным содержимым будет эн раз проталкиваться через интерфейс, что не даст никакого прироста скорости, а с учетом накладных расходов - будет и медленнее, чем полоса/N. Потому же не будет толку и от RDist.

Задача сводится к мультикасту.
Tuesday, September 4th, 2012 06:31 am (UTC)
употребление выражения "прирост" требует опорной точки. Прироста по отношению К ЧЕМУ?
Авторское требование -- экономия диска на сервере (серия пайпов этому удовлетворяет, т.к. читает один раз) и экономия времни. Так как не было сказано какого из трех (CPU time, активного времени админа, мирового времени до достижения желаемого состояния), каждый исходит из своего понимания вопроса. Мое понимание говорит, что самый критичный ресурс это время живого человека.
Далее, энкрипция в ssh потребляет 10% процессора и более при эффективной скорости прокачки 2.5 мб/сек. При десятке клиентов и гигабитной сети это будет дороже проталкивания через интерфейс.
Так что мультикаст -- это ТРЕТЬЯ вещь на которую надо смотреть.
Monday, September 3rd, 2012 10:31 pm (UTC)
На всякий случай распишу подробнее, вдруг пригодится. Вначале создаем именованные каналы по числу машин-приемников, затем запускаем копирование из каждого из этих каналов на соответствующую машину, в фоновом режиме. Поскольку на этот момент в каналы еще ничего не записано, все команды копирования засыпают в ожидании данных. Последняя команда пишет содержимое файла в каждый из именованных каналов, отчего сетевые линки просыпаются и передают информацию на машины-получатели, где она записывается в файл.
Monday, September 3rd, 2012 10:31 pm (UTC)
Только считалка сломается все по десять раз энкриптить. netcat/socat бы.

А под задачу инструмент уже существует двести лет и называется rdist.
Monday, September 3rd, 2012 10:37 pm (UTC)
Можно и неткатом, только это дольше объяснять. За rdist спасибо, полистаю на досуге мануал.
Tuesday, September 4th, 2012 12:27 am (UTC)
RDist не экономит траффик. Он протолкнет файло через интерфейс столько раз, сколько хостов надо синхронизировать.
Tuesday, September 4th, 2012 01:01 am (UTC)
+1. Я не уверен, сумеют ли клиенты найти друг друга без трекера, если в пределах локалки, но можно попробовать. Раньше был такой замечательный "дзенский" трекер, который не требовал никакой загрузки .torrent файла и просто признавал любой вообще торрент своим. Предназначен был для вот такой вот не-массовой делёжки файлами между знакомыми, или даже с самим собой, как в этом случае. Но он делся, и я не могу найти никаких следов. :-(

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

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

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

Tuesday, September 4th, 2012 12:48 am (UTC)
eMule.
Каждый получатель одновременно будет раздавателем:)
Tuesday, September 4th, 2012 06:51 am (UTC)
А я бы сделал так: запустил копирование с 1-го компа на 2-й, затем сразу же со 2-го на 3-й и т.д.
Tuesday, September 4th, 2012 05:09 pm (UTC)
http://code.google.com/p/castcopy/
http://developers.rambler.ru/opensource/tools/mcp/

либо torrent.