У меня есть vpn-соединение типа «сеть-сеть» между двумя центрами обработки данных (один в Сан-Хосе, другой в Торонто).
Мне нужно отправить файл размером 32 ГБ с одного постоянного тока на другой - КАК МОЖНО БЫСТРЕЕ.
Я нашел сценарий оболочки, который соединяет файлы меньшего размера размером 32 ГБ, а затем использует scp для параллельной передачи.
Вопрос в том, как определить оптимальный размер файла для отправки различных небольших файлов через vpn-соединение между сайтами (я бы хотел попытаться максимизировать пропускную способность).
Очевидно, что чем больше процессов scp я запускаю на сервере, тем больше нагрузка на этот сервер.
Забудьте на минуту о межсайтовом взаимодействии, потому что, пока его ipsec и ваши конечные точки не являются тостерами, маловероятно, что это будет узким местом, и взгляните на bbcp:
http://www.slac.stanford.edu/~abh/bbcp/
Вот строка из Perl-скрипта, который мы использовали во время последней миграции, который предъявлял те же требования, что и вы, то есть быстро перемещал данные
sprintf('/usr/local/bin/bbcp -a -F -s 16 -P 10 -T "ssh -x -a -oFallBackToRsh=no %%I -l %%U %%H /usr/local/bin/bbcp" -d . -v %s %s:%s',
join(' ', @files_to_copy), $remote_host, $destination_dir);
Поиграйте с параметрами, особенно с количеством потоков.
Вопросы, на которые вы хотите получить ответы:
bbcp должен иметь возможность максимизировать любую ссылку до точки, где процессор становится вашим узким местом с правильными флагами. Удачи
Я бы посмотрел на rsync для чего-нибудь такого большого.
Что-то вроде:
rsync -ave "ssh -c arcfour -o Compression = no -x" исходный_файл пользователь @ пункт назначения: / путь / к / назначению
http://en.wikipedia.org/wiki/RC4
Таким образом, если частичное копирование будет прервано по какой-либо причине, вы сможете возобновить загрузку, используя внутренние компоненты rsync.
Если вы готовы рассмотреть коммерческие решения, Aspera или Значительный намного быстрее, чем scp, sftp или rsync.