Вопрос или проблема
Мне нужно восстановить большой файл из резервной копии NAS на Solaris 10 ZFS. Я использую следующую команду:
rsync -av [email protected]:from/NAS/files/system to/solaris/files/system
И у меня возникла такая ошибка:
Отключение: Поврежденный MAC на входе.
rsync: соединение неожиданно закрыто (получено 3778664937 байт) [приемник]
rsync: [генератор] ошибка записи: Нерабочая труба (32)
ошибка rsync: ошибка в протоколе данных rsync (код 12) в io.c(226) [приемник=3.1.0]
ошибка rsync: ошибка в сокетном IO (код 10) в io.c(837) [генератор=3.1.0]
rsync Отключение: Поврежденный MAC на входе.
После небольшого исследования решение должно быть следующим:
ethtool -K eth0 tx off rx off
Поскольку команда ethtool не существует на Solaris, я должен использовать утилиту ndd в интерактивном режиме. Я не нашел хорошего объяснения, и man-страница бедна, чтобы получить эквивалент приведенной выше командной строки. Возможно, я что-то упустил.
Какую версию rsync вы используете, и пробовали ли вы использовать другую версию или другой метод для перемещения данных?
Сообщение об ошибке, которое вы видите, намекает на коррумпированные пакеты, которые возникают где-то по пути. См. ссылку: SSH сообщения об ошибках для хорошего объяснения сообщения, которое вы получаете.
Ответ или решение
На Solaris 10 утилита ethtool
отсутствует, и для настройки параметров сетевого интерфейса, аналогичных команде ethtool -K eth0 tx off rx off
, следует использовать утилиту ndd
. Описание проблемы, с которой вы столкнулись при использовании rsync
, указывает на возможные проблемы с сетевыми настройками, что может приводить к ошибкам передачи данных.
Решение проблемы с помощью ndd
Команда, которую вам нужно выполнить, будет зависеть от конкретного интерфейса, который вы используете. Как правило, в Solaris сетевые интерфейсы называются в виде e1000g0
, bge0
и т. д. Чтобы получить список интерфейсов, используйте команду:
ifconfig -a
После того как вы определили правильный интерфейс, используйте следующие команды для отключения передачи (tx) и приема (rx) пакетов:
-
Отключение передачи данных (tx):
ndd -set /dev/<имя_интерфейса> tx off
-
Отключение приема данных (rx):
ndd -set /dev/<имя_интерфейса> rx off
Пример использования
Допустим, ваш интерфейс называется e1000g0
. Вам следует выполнить следующие команды:
ndd -set /dev/e1000g0 tx off
ndd -set /dev/e1000g0 rx off
Восстановление настроек
Если после выполнения этих команд проблемы не исчезли, то рекомендую включить передачу и прием обратно с помощью:
ndd -set /dev/e1000g0 tx on
ndd -set /dev/e1000g0 rx on
Дополнительные рекомендации
-
Версия rsync: Убедитесь, что вы используете последнюю стабильную версию
rsync
. Проблемы, связанные с утечкой памяти или сетевой связью, могут быть исправлены в более новых версиях. -
Альтернативные методы передачи: Если проблемы продолжаются, рассмотрите возможность использования других утилит для синхронизации файлов, таких как
scp
илиsftp
, которые могут быть менее чувствительными к сетевым проблемам. -
Проверка сетевой инфраструктуры: Убедитесь, что все сетевое оборудование, включая маршрутизаторы и коммутаторы, работает корректно и не имеет проблем с производительностью.
-
Тестирование сети: Проверьте соединение с NAS с помощью простых команд, таких как
ping
иtraceroute
, чтобы обнаружить возможные проблемы на уровне сети.
Эти шаги помогут вам устранить проблему, связанную с ошибкой "Corrupted MAC on input", и обеспечат более стабильную передачу данных между вашей системой Solaris и NAS.