[freebsd] Синхронизация множества мелких файлов, ncftp-3.2.5 и ftp хранилище в ДЦ Воля

Eugene Grosbein eugen at grosbein.net
Thu Mar 9 13:35:50 EET 2017


On 09.03.2017 18:00, Vladislav V. Prodan wrote:
> 
> Здравствуйте.
> 
> Имею задачу синхронизировать ~ 70ГБ  (мелких) файлов 
> backup.dc.volia.com <http://backup.dc.volia.com> - ресолвится в 2 IP. Судя по заставке, там Pure-FTPd
> Пытаюсь так ложить файлы:
> 
> ncftpput -R -m -f $config -z -r 70 -d ${local_dir}/debug.log \
>     / \
>     $dir/`ls $dir | egrep -v 'archive|xxxweb100'`
> 
> через каждые 5-15 минут получаю примерное:
> 2017-03-09 06:56:28  Could not read reply from control connection -- timed out.

Для синхронизации множества мелких файлов ftp очень плохой протокол,
так как он использует новый TCP-коннект для каждого файла и очень быстро
выжирает диапазон эфемерных портов на стороне сервера при пассивном режиме
и на стороне клиента при активном. Стабильная работа в таких условиях
требует от исходного кода сервера в первом случае и клиента во втором
очень тщательной реализации протокола с оптимизацией под такой шаблон нагрузки,
чтобы софт аккуратно переиспользовал порты.

Штатный ftpd в FreeBSD вылизывали на эту тему в 2002-м и у него этой проблемы нет.

Плюс промежуточные statefull-фильтры могут неадекватно реагировать на множество
коннектов и в порядке "защиты от атак" периодически дропать пакеты.

Лучше использовать любой другой протокол, передающий всё в одном коннекте.
В данном случае rsync лучше всего.




More information about the freebsd mailing list