Назад | Перейти на главную страницу

Передача огромных данных по закрытой сети

У меня есть требование передавать огромные данные (скажем, более 10 ТБ) с одной машины на другую по закрытой сети (LAN)! есть ли проверенные методы для этого?

я думаю над FTP? это правильный подход?

Любое предложение будет полезным!

Спасибо, Прашант

Огромные данные не являются проблемой для каких-либо протоколов, проблема в том, сколько файлов у вас есть и что вам нужно передать (просто набор данных или прав доступа к файлам, владельцев и т. Д.). FTP - плохое и неэффективное решение. rsync, glusterfs - это хорошо (tm) и так далее ... зависит ...

10 ТБ по локальной сети займет много времени, если у вас низкоскоростное соединение.

Если у вас есть возможность расширить полосу пропускания - добавьте агрегацию ссылок, используйте связывание на серверах (особенно LACP) - вы выиграете некоторое время для переводов. Кроме того, убедитесь, что у ваших дисков достаточно возможностей для передачи данных с нужной вам скоростью.

Думаю, webdav или rsync тоже подойдут. Даже Cifs или NFS тоже хороши, в среде Windows, вероятно, я буду использовать robocopy + cifs с многопоточностью, чтобы улучшить скорость копирования.

В Linux может быть cp + NFS и GNU параллельно https://savannah.gnu.org/projects/parallel/

Надеюсь, он будет вам полезен :)

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

Я также предлагаю взглянуть на rsync, поскольку он довольно эффективен и предлагает множество опций для управления пропускной способностью и текущей синхронизацией (если это необходимо).

Если на основе Unix, используйте Rsync с параметром --archive. Это также позволяет легко останавливаться и запускаться. FTP - нет. Мой совет - не использовать FTP.

При использовании Windows вы можете взглянуть на synctoy. Я не уверен, но он также позволяет останавливаться и запускаться.

И это Гигабит? Если нет, есть ли у вас возможность соединить серверы друг с другом и скопировать через второй сетевой адаптер? Это могло ускорить процесс.

В Linux я обычно делаю на принимающей стороне:

nc -l 43210 | tar xf -

А на отправляющей стороне:

tar cf - . | dd bs=1M | nc receiving_hostname 43210

Затем я запускаю другой терминал на отправляющей стороне, чтобы получить статистику передачи в реальном времени на отправляющей консоли:

while sleep 10; do killall -USR1 dd; done

Здесь просто используется простая передача по TCP - не нужно настраивать сервер FTP / NFS / CIFS. Это перенесет около 10 ТБ за 24 часа в сети 1 Гбит / с если бы диски с обеих сторон были достаточно быстрыми.

Возможно, вам потребуется разрешить подключения к используемому порту (43210 в моем примере) в брандмауэре на принимающей стороне. Он также должен работать на других устройствах, таких как OSX или FreeBSD. В Windows вы можете использовать мой «dot_nc» и «dot_nc_l», которые являются упрощенными эквивалентами nc и nc -l реализован на C # в Windows, который я использовал для тестирования необработанных TCP-передач в Windows.

Как далеко машины друг от друга? Возможно ли (т.е. практически) отсоединить дисковый массив от первой машины, физически присоединить ее ко второй машине и сделать локальную копию?

(Или наоборот - подключите дисковый массив второй машины к первой машине)

Я недавно передал 10 ТБ через соединение 1 Гбит / с. Основная проблема заключалась в том, чтобы постоянно поддерживать скорость 1 Гбит / с. Это не было проблемой при передаче больших файлов, но оказалось проблемой при передаче небольших файлов, поскольку отправитель не мог искать достаточно быстро.

Решением было запустить несколько переводов параллельно. Некоторые с большими файлами, а некоторые передают остальные. В его основе лежали:

http://www.gnu.org/software/parallel/man.html#example__parallelizing_rsync

Если ваши файлы сжимаются, обязательно сжимайте передачу (rsync -z).

Теоретически вы должны иметь возможность использовать GNU Parallel и rsync в Windows 7, но даже если вы не можете, вы, вероятно, можете использовать идею передачи больших файлов параллельно с небольшими файлами.