Computer >> 컴퓨터 >  >> 체계 >> Windows 7

Windows의 공유 폴더 및 네트워크 드라이브에 대한 느린 액세스

사용자는 Windows에서 네트워크 공유 폴더에 파일을 열거나 저장할 때 매우 느린 네트워크 성능에 대해 불평하고 있습니다. 사용자가 UNC 경로 또는 드라이브 문자(공유 폴더가 네트워크 드라이브로 매핑된 경우)를 통해 공유 폴더를 열면 해당 내용이 10-60초 내에만 표시됩니다. 네트워크 폴더에 새 파일을 생성할 때도 바로 표시되지 않고 3~4분 후에 오랜 지연이 발생합니다(F5로 폴더 내용을 업데이트하더라도 열쇠). 그러나 UNC 경로(\\lon-file-srv1\public\new_file.docx)를 통해 전체 파일 이름을 수동으로 지정하는 경우 ), 파일 탐색기에는 표시되지 않지만 열릴 것입니다.

Windows의 공유 폴더 및 네트워크 드라이브에 대한 느린 액세스

Windows는 특별한 네트워크 리디렉터를 사용합니다. 원격 컴퓨터의 공유 파일 및 기타 네트워크 리소스에 액세스할 때 구성 요소. SMB v2.x(서버 메시지 블록 프로토콜 버전이 있는 표 참조)부터 Network Redirector는 네트워크를 통해 공유 폴더 및 파일에 액세스할 때 캐싱 메커니즘을 사용합니다. 이렇게 하면 클라이언트와 서버 간의 트래픽과 SMB 요청 수가 줄어듭니다(특히 느리고 신뢰할 수 없는 네트워크에서 효과적임). 기본적으로 이 캐시는 10초마다 지워집니다.

Windows 클라이언트 장치에서 네트워크 공유에 느리게 액세스하는 경우 클라이언트 측 또는 공유 폴더 설정에서 SMB 메타데이터 캐싱을 비활성화할 수 있습니다.

공유 폴더 설정에서 SMB 캐싱을 비활성화할 수 있습니다. 공유 폴더의 속성을 열고 공유 탭 -> 고급 공유 -> 캐싱 . 두 번째 옵션인 '오프라인에서 사용할 수 있는 공유 폴더의 파일이나 프로그램이 없습니다.를 선택합니다. ".

Windows의 공유 폴더 및 네트워크 드라이브에 대한 느린 액세스

또는 PowerShell 명령을 사용하십시오:

Set-SMBShare -Name MySharedDocs -CachingMode None

이렇게 하면 이 공유 폴더에 대한 캐싱 및 오프라인 액세스가 모두 비활성화됩니다(Windows에서 오프라인 파일 사용에 대한 문서 참조).

SMB 클라이언트 측에서 네트워크 공유 폴더 캐시 설정을 관리하는 세 가지 레지스트리 매개변수가 있습니다. Microsoft는 이러한 레지스트리 옵션의 기본값이 대부분의 환경에서 최상의 성능을 제공한다고 말합니다. SMB 캐시 설정은 레지스트리 키 HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters 아래에 있습니다. .

  • DirectoryCacheLifetime 공유 폴더 메타데이터 캐시의 수명입니다(기본값은 10초).
  • FileNotFoundCacheLifetime – "파일을 찾을 수 없음" 응답 캐시(5초),
  • FileInfoCacheLifetime – 파일 정보와 함께 캐시를 유지하는 시간(10초).
Windows 파일 서버 설정 최적화에 대한 문서에서 이러한 레지스트리 설정에 대한 정보를 찾을 수 있습니다. https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/role/file-server/

기본적으로 SMB 공유 폴더의 캐시 수명은 10초입니다. 클라이언트가 공유 폴더의 내용을 새로 고치면 마지막 업데이트 결과가 클라이언트에 10초 동안 저장됩니다. 이 네트워크 공유에 액세스할 때 모든 애플리케이션은 먼저 이 캐시를 사용하려고 시도합니다.

경우에 따라 SMB 폴더의 데이터 캐싱 메커니즘이 올바르게 작동하지 않습니다(대부분 수천 개의 파일 및 폴더가 포함된 네트워크 폴더/드라이브에서 발생함). 이 경우 사용자는 공유 폴더에서 파일을 열고, 보고, 생성할 때 상당한 지연을 경험할 수 있습니다.

SMB 폴더에 대한 캐싱을 비활성화할 수 있습니다. 이렇게 하려면 HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters 아래에 새 DWORD 매개변수를 만듭니다. 이름이 DirectoryCacheLifetime인 레지스트리 키 및 값 0 . 또한 FileInfoCacheLifetime 값을 설정합니다. 및 FileNotFoundCacheLifetime 매개변수를 0으로 설정합니다. regedit.exe를 사용하여 이 레지스트리 매개변수를 생성할 수 있습니다. 또는 New-ItemProperty PowerShell cmdlet 사용:

$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

Windows의 공유 폴더 및 네트워크 드라이브에 대한 느린 액세스

설정을 적용하려면 컴퓨터를 다시 시작해야 합니다. 이러한 매개변수를 여러 도메인 컴퓨터에 적용해야 하는 경우 GPO를 사용하여 레지스트리 설정을 배포할 수 있습니다.

네트워크 폴더 캐싱을 비활성화하면 네트워크 트래픽이 증가하고 파일 서버 성능이 저하됩니다.

Set-SmbClientConfiguration cmdlet을 사용하여 SMB 클라이언트를 미세 조정할 수도 있습니다.

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

PowerShell을 사용하여 Windows SMB 클라이언트에 대한 현재 캐싱 설정을 나열할 수 있습니다.

Get-SmbClientConfiguration| select *cache* 선택

DirectoryCacheEntriesMax : 16
DirectoryCacheEntrySizeMax : 65536
DirectoryCacheLifetime : 0
FileInfoCacheEntriesMax : 64
FileInfoCacheLifetime : 0
FileNotFoundCacheEntriesMax : 128
FileNotFoundCacheLifetime : 0

Windows의 공유 폴더 및 네트워크 드라이브에 대한 느린 액세스

그 후 공유의 모든 변경 사항은 클라이언트에 즉시 표시됩니다(폴더에 액세스할 때마다 폴더 내용이 새로 고쳐지고 로컬 캐시가 사용되지 않음).

공유 폴더의 네트워크 성능이 좋지 않거나 폴더 내용이 느리게 나타날 수 있는 몇 가지 다른 이유가 있습니다.

  • 공유 폴더 설정에서 "액세스 기반 열거(ABE)" 옵션을 활성화하면 개체 수가 많은 공유 폴더의 파일 목록 업데이트가 느려질 수 있습니다.
  • Windows Server 2019에서 실행되는 Hyper-V 가상 머신에서 네트워크 속도가 느려질 수 있습니다(Windows Server 2016/2012R2와 비교).
  • 도메인에 가입된 장치(ncpa.cpl)의 TCP/IPv4 연결 속성에서 레거시 NetBIOS 프로토콜을 비활성화합니다. -> 네트워크 어댑터의 TCP/IPv4 설정을 열고 NetBIOS over TCPIP 비활성화를 선택합니다. WINS에서 탭);
  • Windows 클라이언트 장치에서 네트워크 및 TCP/IP 스택 설정을 재설정해 보십시오. Windows 10 이상에서는 네트워크 재설정 옵션을 사용할 수 있습니다. 설정 패널에서 또는 다음 명령을 사용하십시오:netsh int ip reset