Копировать большие файлы на несколько машин в локальной сети

9

У меня есть несколько больших файлов, которые мне нужно скопировать с одной машины Linux на примерно 20 других машин Linux, и все в той же локальной сети настолько быстро, насколько это возможно. Какие инструменты / методы лучше всего подходят для копирования этих файлов, учитывая, что это не будет одноразовой копией. Эти машины никогда не будут подключены к Интернету, и безопасность не является проблемой.

Обновить:

Причина, по которой я спрашиваю об этом, заключается в том, что (насколько я понимаю) мы в настоящее время используем scpсерийно для копирования файлов на каждую из машин, и мне сообщили, что это «слишком медленно», и ищется более быстрая альтернатива. Согласно тому, что мне сказали, попытка распараллелить scpвызовы просто замедляет его еще больше из-за поиска жесткого диска.

Джонатан Каллен
источник
Определите «большой». Сотни МБ / ГБ / ТБ / больше?
Янне Пиккарайнен
В настоящее время общее количество составляет около 4 ГиБ (сжатых), хотя в будущем это может возрасти.
Джонатан Каллен
То есть любыми средствами даже в 2011 году - НЕ БОЛЬШОЙ. При наличии 1-гигабитной линии связи, которая должным образом переключена (стандарт в 2011 году), это довольно быстро выполнить. Запуск его на сервере 10g (не так уж редко в 2011 году) ... хорошо;)
TomTom

Ответы:

27

BitTorrent. Это как Twitter разворачивает некоторые вещи внутри себя.

http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html (ссылка на веб-архив)

mfinni
источник
3
В дополнение к моему ответу (который, я думаю, сработает хорошо, если вы сможете его реализовать), ниже приведен очень хороший ответ для NFS. Хороший NFS-сервер должен кэшировать файлы, чтобы вы не продолжали работать с диском. Кроме того , с этим, не копировать файлы с сервера на клиент. Инициируйте его с клиента и позвольте кешу сервера NFS помочь.
Мфинни
1
Обязательно попробуйте это в непроизводственной среде: в презентации говорится, что (iirc) некоторые коммутаторы сильно пострадали во время первых развертываний из-за количества обмененных пакетов.
Шадок
1
@psusi Почему вы говорите, что нужно отправить все данные 20 раз? Как только другие узлы получат часть файла, они могут начать отправлять части, которые у них есть, самим другим узлам.
Джонатан Каллен
2
Проблема для ОП не в локальной сети, а в диске на центральном сервере.
mfinni
1
@pSusi - многоадресная рассылка наверняка будет еще одним правильным ответом. Опубликовать это как ответ, а не как стук в мой ответ.
mfinni
12

Что касается UFTP , он использует многоадресную рассылку для доставки файлов по UDP нескольким клиентам одновременно. Не для всех, и я не эксперт в этом, но, похоже, он делает то, что вы хотите.

Chopper3
источник
1
Отказ от ответственности: для этого потребуется оборудование, поддерживающее многоадресную передачу.
user606723
Я скорее надеялся, что это будет на том же VLAN - снижение влияния этого использования.
Chopper3
@ user606723: не все ли современно? Может быть, какой-то потребительский мусор этого не делает, но я давно не сталкивался ни с чем из-за неработающей многоадресной рассылки. Слишком много пользуется этим в наши дни. Я думаю, что Windows Active Directory даже использует многоадресную рассылку.
Zan Lynx
У меня нет опыта работы с @ZanLynx. Я знаю, что многие офисы / компьютерные лаборатории используют потребительские / неуправляемые коммутаторы на последнем прыжке. Как эти коммутаторы будут вести себя с многоадресной рассылкой?
user606723
3

Вы пытались скопировать эти данные с rsync? Если у вас локальная сеть 1 Гбит или более, копирование более 4 * 20 ГБ не должно быть проблемой.

Как часто будет эта копия? Имеет ли значение, если это займет пару минут, чтобы закончить?

Янне Пиккарайнен
источник
3

scp-цунами это путь!

https://code.google.com/p/scp-tsunami/

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

Джованни Торальдо
источник
2

Настройка общего ресурса NFS и получение каждой машиной доступа к этому общему хранилищу больших файлов, вероятно, будет самым быстрым способом (NFS очень быстрый и имеет небольшие накладные расходы).

Вы можете добавить дополнительный сетевой адаптер или два к исходному серверу и соединить их вместе, чтобы повысить пропускную способность.

Реализация может быть простой задачей cron на каждом целевом сервере, которая слепо выбирает общий ресурс каждый час / день / что угодно. Вы также можете настроить демон для опроса новых файлов; Вы также можете просто записать контрольный сеанс в SSH (с парами ключей) в каждое целевое поле и дать им указание извлечь файл при выполнении сценария.

gravyface
источник
1
Я полагаю, что мой предшественник попытался использовать NFS для этого и обнаружил, что (в то время) кэш-память ОЗУ была недостаточно большой для всей передачи, что приводило к тому, что нагрузка на жесткий диск становилась ограничивающим фактором вместо сети скорость.
Джонатан Каллен