Подтвердить что ты не робот

Scp остановился при копировании больших файлов

В соответствии с потребностями эксперимента я установил MTU на 8000. После этого, когда я использую scp для копирования больших файлов, он остановился на 0.00%. Я попробовал scp -l или scp -C и включил/выключил tcp_sack, но он все еще не работал. И я не могу изменить размер MTU для сравнения результатов эксперимента. Есть ли другой способ помочь?

4b9b3361

Ответ 1

Попытка комплексного решения, поскольку в зависимости от вашей ситуации могут быть несколько проблем и ограничений.

Rsync

Мой предпочтительный вариант: использование rsync не дает этой проблемы и, на мой взгляд, немного более универсален. он отслеживает, какие файлы уже есть, поэтому, если соединение когда-либо сломается, оно может подняться с того места, где оно остановилось - попробовать флаг --partial тоже - между прочим.

Вместо

scp local/path/some_file [email protected]:"/some/path/"

вы можете просто сделать

rsync -avz --progress local/path/some_file [email protected]:"/some/path/"

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

Предельная скорость

Не решение для OP, поскольку MTU фиксируется в этой ситуации (и, вероятно, не проблема здесь), но если виновник является медленным/ненадежным соединением между двумя дисками, установка ограничения скорости уменьшает задержки, которые делают TCP-соединение - за счет более медленной передачи курса. Это связано с тем, что scp захватывает всю ширину полосы пропускания, которую он может получить, если вы не укажете максимальную скорость передачи данных в килобитах, например:

scp -l 8192 local/path/some_file [email protected]:"/some/path/"

Этот не всегда работает.

Опция сжатия

опция scp -C может ускорить передачу, уменьшая вероятность того, что перенос киосков.

Отключение TCP SACK

Как упоминалось OP, и здесь.

sudo sysctl -w net.ipv4.tcp_sack=0

(или аналогичный)

LAN-карта MTU

Снова MTU fix, не обязательно передачи, особенно:

ifconfig eth0 mtu 1492

или на более новых (Linux) системах:

ip link set dev eth0 mtu 1492

Другие

Если все остальное не работает, this содержит список других потенциальных решений, не включенных здесь.

Более экзотическая ошибка hpn также может быть виновата.

Ответ 2

Есть ли вероятность, что вы находитесь за брандмауэром Cisco ASA? Если это так, отключите "рандомизацию последовательности номеров", и это поможет многое - также отключите TCP Offload (ethtool -K $INTERFACE tso off gso off gro off), если вы находитесь в Cisco ASA с сетевыми картами Broadcom на своем сервере.