Протокол SMB для расширенного устранения неполадок
Попробуйте наш виртуальный агент . Он поможет вам быстро определить и устранить распространенные проблемы SMB.
Серверный блок сообщений (SMB) — это протокол сетевого транспорта для операций файловой системы, позволяющий клиенту получать доступ к ресурсам на сервере. Основной целью протокола SMB является обеспечение удаленного доступа к файловой системе между двумя системами по протоколу TCP/IP.
Устранение неполадок SMB может быть чрезвычайно сложным. Эта статья не является исчерпывающим руководством по устранению неполадок. Вместо этого это краткое руководство, чтобы понять основы эффективного устранения неполадок SMB.
Средства и сбор данных
Одним из ключевых аспектов качественного устранения неполадок SMB является передача правильной терминологии. Поэтому в этой статье представлена базовая терминология SMB для обеспечения точности сбора и анализа данных.
SMB Server (SRV) относится к системе, в которую размещается файловая система, также называемая файловым сервером. Клиент SMB (CLI) относится к системе, которая пытается получить доступ к файловой системе, независимо от версии ОС или выпуска.
Например, если вы используете Windows Server 2016 для доступа к общей папке SMB, размещенной на Windows 10, Windows Server 2016 является клиентом SMB и Windows 10 сервером SMB.
Сбор данных
Перед устранением неполадок SMB рекомендуется сначала собрать трассировку сети как на стороне клиента, так и на стороне сервера. Применяются следующие правила.
- В системах Windows для сбора трассировки сети можно использовать netshell (netsh), сетевой монитор, анализатор сообщений или Wireshark .
- Сторонние устройства обычно имеют встроенное средство для записи пакетов, например tcpdump (Linux/FreeBSD/Unix) или pktt (NetApp). Например, если клиент SMB или SMB-сервер является узлом Unix, вы можете собирать данные, выполнив следующую команду:
# tcpdump -s0 -n -i any -w /tmp/$(hostname)-smbtrace.pcap
Чтобы узнать источник проблемы, можно проверить двусторонние трассировки: CLI, SRV или где-то между ними.
Использование netshell для сбора данных
В этом разделе приведены инструкции по использованию netshell для сбора данных трассировки сети.
Средство анализатора сообщений Майкрософт прекращено, и мы рекомендуем Wireshark анализировать ETL-файлы. Для тех, кто ранее скачал средство и ищет дополнительные сведения, см. статью Установка и обновление анализатора сообщений.
Трассировка Netsh создает ETL-файл. ETL-файлы можно открывать в анализаторе сообщений (MA), сетевом мониторе 3.4 (для средства синтаксического анализа задайте значение Средства синтаксического анализа > сетевого монитора Windows) и Wireshark.
- На сервере SMB и клиенте SMB создайте папку Temp на диске C. Затем выполните следующую команду:
netsh trace start capture=yes report=yes scenario=NetConnection level=5 maxsize=1024 tracefile=c:\\Temp\\%computername%\_nettrace.etl**
New-NetEventSession -Name trace -LocalFilePath "C:\Temp\$env:computername`_netCap.etl" -MaxFileSize 1024 Add-NetEventPacketCaptureProvider -SessionName trace -TruncationLength 1500 Start-NetEventSession trace
Stop-NetEventSession trace Remove-NetEventSession trace
Необходимо отслеживать только минимальный объем передаваемых данных. Для проблем с производительностью всегда следует выполнять как хорошую, так и плохую трассировку, если это позволяет ситуация.
Анализ трафика
SMB — это протокол уровня приложения, который использует TCP/IP в качестве протокола сетевого транспорта. Таким образом, проблема SMB также может быть вызвана проблемами TCP/IP.
Проверьте, возникают ли в TCP/IP какие-либо из следующих проблем:
- Трехстороннее подтверждение TCP не завершается. Обычно это означает, что существует блок брандмауэра или что служба сервера не запущена.
- Происходят повторные передачи. Это может привести к медленной передаче файлов из-за сложного регулирования перегрузки TCP.
- Пять повторных передач, за которыми следует сброс TCP, могут означать, что подключение между системами было потеряно или что одна из служб SMB аварийно или перестала отвечать на запросы.
- Окно получения TCP уменьшается. Это может быть вызвано медленным хранением или другой проблемой, которая препятствует получению данных из буфера Winsock драйвера вспомогательных функций (AFD).
Если нет заметной проблемы с TCP/IP, найдите ошибки SMB. Для этого выполните следующие действия.
- Всегда проверяйте ошибки SMB в спецификации протокола MS-SMB2. Многие ошибки SMB являются безвредными (не вредными). Ознакомьтесь со следующими сведениями, чтобы определить, почему SMB вернул ошибку, прежде чем прийти к выводу, что ошибка связана с любой из следующих проблем:
- В статье Синтаксис сообщений MS-SMB2 подробно описаны каждая команда SMB и ее параметры.
- В статье Обработка клиента MS-SMB2 подробно описано, как клиент SMB создает запросы и отвечает на сообщения сервера.
- В статье Обработка сервера MS-SMB2 подробно описано, как сервер SMB создает запросы и отвечает на запросы клиентов.
- Проверьте, отправляется ли команда сброса TCP сразу после команды FSCTL_VALIDATE_NEGOTIATE_INFO (проверить согласование). Если да, обратитесь к следующим сведениям:
- Сеанс SMB должен быть завершен (сброс TCP) при сбое процесса проверки согласования на клиенте или сервере.
- Этот процесс может завершиться ошибкой, так как оптимизатор глобальной сети изменяет пакет SMB Negotiate.
- Если подключение завершилось преждевременно, определите последний обмен данными между клиентом и сервером.
Анализ протокола
Просмотрите фактические сведения о протоколе SMB в трассировке сети, чтобы понять, какие именно команды и параметры используются.
- Помните, что SMB делает только то, что ему говорят.
- Вы можете многое узнать о том, что приложение пытается сделать, изучив команды SMB.
Сравните команды и операции со спецификацией протокола, чтобы убедиться, что все работает правильно. Если это не так, соберите данные, которые ближе или на более низком уровне, чтобы найти дополнительные сведения о первопричине. Для этого выполните следующие действия.
- Сбор стандартной записи пакетов.
- Выполните команду netsh для трассировки и сбора сведений о том, есть ли проблемы в сетевом стеке или падениях в приложениях платформы фильтрации Windows (WFP), таких как брандмауэр или антивирусная программа.
- Если все остальные параметры завершаются ошибкой, соберите t.cmd, если вы подозреваете, что проблема возникла в самом SMB, или если ни одного из других данных достаточно для определения первопричины.
- Происходит медленная передача файлов на один файловый сервер.
- Двусторонние трассировки показывают, что SRV медленно реагирует на запрос READ.
- Удаление антивирусной программы разрешает медленную передачу файлов.
- Чтобы устранить проблему, обратитесь к антивирусной программе.
При необходимости можно также временно удалить антивирусную программу во время устранения неполадок.
Журналы событий
Клиент SMB и SMB Server имеют подробную структуру журнала событий, как показано на следующем снимке экрана. Соберите журналы событий, чтобы найти первопричину проблемы.
Системные файлы, связанные с SMB
В этом разделе перечислены системные файлы, связанные с SMB. Чтобы обновлять системные файлы, убедитесь, что установлен последний накопительный пакет обновления .
Двоичные файлы клиента SMB, перечисленные в разделе %windir%\system32\Drivers:
- RDBSS.sys;
- MRXSMB.sys;
- MRXSMB10.sys;
- MRXSMB20.sys;
- MUP.sys;
- SMBdirect.sys.
Двоичные файлы сервера SMB, перечисленные в разделе %windir%\system32\Drivers:
- SRVNET.sys;
- SRV.sys;
- SRV2.sys;
- SMBdirect.sys.
- В разделе %windir%\system32
- srvsvc.dll.
Предложения по обновлению
Перед устранением проблем с SMB рекомендуем обновить следующие компоненты:
- Для файлового сервера требуется хранилище файлов. Если в хранилище есть компонент iSCSI, обновите эти компоненты.
- Обновите сетевые компоненты.
- Для повышения производительности и стабильности обновите Windows Core.