Почему сетевое хранилище медленно открывается
Перейти к содержимому

Почему сетевое хранилище медленно открывается

Долго открываются файлы в сетевой папке Windows

date03.03.2022
useritpro
directoryPowerShell, Windows 10, Windows 7, Windows Server 2019
commentsкомментария 2

У одного из заказчиков пользователи постоянно жалуются, что с их компьютеров очень медленно открываются и сохраняются файлы в сетевой папке. Когда пользователь в File Explorer открывает сетевую папку по UNC пути, или через букву диска (если папка подключена как сетевой диск), ее содержимое отображается на экране только через несколько 10-60 секунд. При создании новых файлов в сетевой папке они также отображаются не сразу, а с большой задержкой через 3-4 минуты (даже если обновлять содержимое папки с помощью F5 ). Причем, если вручную указать полное имя файла через UNC путь ( \\srv1\share\file1.txt ), он открывается, хотя в папке его не видно.

медленно открывается общая сетевая папка в Windows

В Windows есть специальный компонент Network Redirector, который используется для доступа к файлам и другим сетевым ресурсам на удаленных компьютерах. Начиная с версии SMB (Server Message Block) v2.x (см. таблицу с версиями протокола SMB), Network Redirector использует механизм кэширования при доступе к общим папкам и файлам по сети. Благодаря этому пользователи получают данные из локального кэша с метаданными сетевого каталога. Это уменьшает трафик и количество SMB запросов между клиентом и сервером (особенно заметно на медленных и нестабильных каналах). По умолчанию этот кэш очищается каждые 10 секунд.

Если у вас на клиентах долго открывается содержимое сетевых папок, можно попробовать отключить кэширование метаданных протокола SMB на стороне клиентов или в настройках сетевой папки.

Проще всего отключить кэширования в настройка сетевой папки. Для этого откройте свойства общей папке на сервере, и перейдите на вкладку Доступ (Sharing) -> Расширенная настройка (Advanced Sharing) -> кнопка Кэширование (Caching). Выберите вторую опцию “Файлы и программы в этой папке недоступны вне сети” (No files or programs from the shared folder are available offline).

отключить кэширование в свойствах сетевой папки

Или воспользуйтесь командой:

Set-SMBShare -Name ShareName -CachingMode None

Это отключит как кэширование, так и оффлайн доступ к этой папке (см. статью про использование автономных offline файлов в Windows).

Есть три параметра реестра, которые управляют настройками кэширования сетевых папок на стороне SMB клиента. Microsoft утверждает, что значения по-умолчанию для этих ключей обеспечивают наилучшую производительность для большинства сред. Параметры управлением кэшем SMB находятся в ветке реестра HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters.

  • DirectoryCacheLifetime – срок жизни кэша с метаданными сетевой папки, полученный при последнем обращении (по умолчанию 10 секунд);
  • FileNotFoundCacheLifetime – кэш ответа “Файл не найден” (5 секунд).
  • FileInfoCacheLifetime – срок жизни кэша с информацией о файле (10 секунд).

По умолчанию срок жизни кэша для SMB папки всего 10 секунд. Когда клиент выполняет обновление содержимого сетевой папки, результат последнего обновления хранится клиентом в течении 10 секунд. Все приложения при доступе к данному сетевому каталогу сначала пытаются использовать этот кэш.

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

Вы можете отключить кэширование содержимого SMB папок. Для этого создайте в ветке реестра HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters параметр тип DWORD с именем DirectoryCacheLifetime и значением 0. Также задайте 0 в качестве значений параметров FileInfoCacheLifetime и FileNotFoundCacheLifetime. Создать параметры реестра можно с помощью regedit.exe или PowerShell командлета New-ItemProperty:

$regpath= «HKLM:\System\CurrentControlSet\Services\LanmanWorkstation\Parameters»
$Name1 = “DirectoryCacheLifetime”
$Name2 = “FileInfoCacheLifetime”
$Name3 = “FileNotFoundCacheLifetime”
New-ItemProperty -Path $regpath -Name DirectoryCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileInfoCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileNotFoundCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null

отключить использование кэша для общих сетевых папок с помощью параметра реестра DirectoryCacheLifetime

Для применения настроек в силу нужно перезагрузить компьютер. Если эти настройки нужно применить на нескольких компьютерах, вы можете использовать GPO для распространения параметров реестра.

Также можно использовать командлет Set-SmbClientConfiguration для тонкой настройки SMB клиента:

Set-SmbClientConfiguration -DirectoryCacheLifetime 0
Set-SmbClientConfiguration -FileInfoCacheLifetime 0
Set-SmbClientConfiguration -FileNotFoundCacheLifetime 0

Текущие настройки кэширования для SMB клиента Windows можно вывести так:

get-smbclientconfiguration| select *cache*

get-smbclientconfiguration - вывести настройки исопльзования кэширования SMB клиентом с помощью powershell

После этого все изменения в сетевой папке будут сразу отображаться на клиенте (содержимое папки обновляется каждый раз и локальных кэш не используется).

Есть еще несколько причин, из-за которых содержимое сетевых папок может отображаться медленно:

Windows 10 долго открывает сетевые папки

сетевая папка

Windows

Всем привет друзья! Многие пользователи после обновления компьютера, могут столкнуться с неприятной проблемой, такой как долгое открытие сетевых папок. Сегодня я расскажу как быстро решить данную проблему и ваша сетевая папка будет загружаться так же быстро как и и раньше.

Проблема кроется в автоматической функции настройки трафика WinHTTP, которую мы сегодня отключим. Для этого запустите командную строку, нажав клавиши win+r на клавиатуре и введите команду cmd.

cmd

В открывшемся окне командной строки, введите команду отключения автонастройки:

netsh interface tcp set global autotuninglevel=disabled

cmd

Перезагрузите компьютер и проверьте работу сетевых папок. Скорее всего ваша проблема решена!

Почему долго открываются файлы с сетевого диска одного из серверов 2008 R2?

Приветствую!
Что то я сломал голову себе с этим вопросом. Есть 2 файловых сервера 2008 R2 в домене, на клиентах подключены сетевые диски, с сервера А все файлы открываются мгновенно, а с сервера B с задержкой, в основном это касается офисных файлов (Офис 2007). Например PDF открывается быстро и с того и с другого.
Есть общеизвестная проблема FileValidation, но это не про этот случай я думаю, так как с одного из серверов открывается быстро. Напрашивается вывод, что проблема где-то на сервере, но вот где?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *