mount.cifs слишком долго монтирует общую папку Windows

Наша установка:
Сервер: Windows Server 2008
Клиент: ШМЗ 6.6 (FreePBX, CentOS)
версия mount.cifs: 4.8.1
версия smbclient: Версия 3.6.23-14.el6_6

Используя эту команду для подключения:

mount.cifs //192.168.0.10/Share /mnt/share -o "username=windowsuser,sec=ntlm,servern=SERVERNAME,password=windowsuserpassword"

Занимает 1 минуту и ​​3 секунды, чтобы смонтировать пустую папку.

Вопрос: как ускорить процесс монтирования?

ОБНОВЛЕНИЕ 1: Возможно, вы заметили, что я не ставил диагноз до написания этого поста. Главным образом это потому, что я не знаю, с чего начать. Пожалуйста, дайте мне хотя бы подсказку, как проанализировать процесс подключения.

ОБНОВЛЕНИЕ 2: Хорошо, я захватил процесс монтирования, я вижу там 2 основных лага: ~10 и ~30 секунд. Хотя не могу понять причину. Можете ли вы предложить что-нибудь? http://tinypic.com/r/2cxz21z/9

1 ответ

Решение

Это проблема, в которой трассировка пакетов может быть весьма полезной.

tcpdump -s 0 -i eth0 -w mount-trace.pcap

Затем выполните свое крепление. Отмените tcpdump, как только это будет сделано. Затем получите файл mount-trace.pcap, куда вы можете загрузить его в wireshark.

Это займет некоторое время, но установка томов Windows, на завершение которых уходит много времени, обычно связана с тем, что обе стороны диалога испытывают затруднения при согласовании протокола для продолжения разговора. Если вы посмотрите на справочную страницу для mount.cifs и посмотрите на варианты для sec= Параметр, который вы используете, вы можете увидеть, сколько их.

В Wireshark вы ищете длинные промежутки между частями разговора. Такие вещи могут быть индикатором истечения времени ожидания, прежде чем перейти к способу восстановления после сбоя. Wireshark очень хорошо поддерживает CIFS, и вы можете многое узнать о том, как работает проверка подлинности Windows, просто наблюдая за различными этапами, через которые она проходит.

Если это слишком страшно, я предлагаю удалить sec=ntlm параметр из вашей команды mount и полагаться на значение по умолчанию, или установить его в ntlmssp, Это связано с тем, что NTLM является старым диалектом протокола аутентификации Microsoft, который впоследствии был заменен NTLMv2 и, в конечном счете, kerberos. Windows Server 2008 уже более десяти лет, и он находится в промежутке между тем, когда NTLM был окончательно удален и все еще был разрешен по устаревшим причинам.

К сожалению для всех, унаследованные причины включают в себя действительно старые версии CentOS. Мол, версия 5 старая.

Как только вы снова получите его быстро, переделайте этот tcpdump и сравните с первым. Вы увидите различия!

Другие вопросы по тегам