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 и сравните с первым. Вы увидите различия!