Windows'ta Paylaşılan Klasörlere ve Ağ Sürücülerine Yavaş Erişim


Kullanıcılarımız, Windows'ta dosyaları bir ağ paylaşımlı klasörü açarken veya bu klasöre kaydederken çok yavaş ağ performansından şikayet ediyorlar. Bir kullanıcı bir UNC yolu veya bir sürücü harfi aracılığıyla bir paylaşılan klasörü açtığında (paylaşılan klasör bir ağ sürücüsü olarak eşlenmişse), içeriği yalnızca 10-60 saniye içinde görüntülenir. Bir ağ klasöründe yeni dosyalar oluştururken, bunlar da hemen değil, 3-4 dakika sonra uzun bir gecikmeyle görüntülenir (klasör içeriklerini

F5

anahtar). Ancak, tam dosya adını bir UNC yolu aracılığıyla manuel olarak belirtirseniz (

\\lon-file-srv1\public\new_file.docx

), açılır, ancak Dosya Gezgini'nde görünmez.

Windows, uzak bilgisayarlardaki paylaşılan dosyalara ve diğer ağ kaynaklarına erişirken özel bir Ağ Yönlendiricisi bileşeni kullanır. SMB v2.x ile başlayarak (Sunucu İleti Bloğu protokol sürümlerinin bulunduğu tabloya bakın), Ağ Yeniden Yönlendiricisi, ağ üzerinden paylaşılan klasörlere ve dosyalara erişirken bir önbelleğe alma mekanizması kullanır. Bu, istemci ile sunucu arasındaki trafiği ve SMB isteklerinin sayısını azaltır (özellikle yavaş ve güvenilir olmayan ağlarda etkilidir). Varsayılan olarak, bu önbellek her 10 saniyede bir temizlenir.

Windows istemci aygıtındaki bir ağ paylaşımına yavaş erişim yaşıyorsanız, istemci tarafında veya paylaşılan klasör ayarlarında SMB meta verilerini önbelleğe almayı devre dışı bırakmayı deneyebilirsiniz.

Paylaşılan klasör ayarlarında SMB önbelleğini devre dışı bırakabilirsiniz. Paylaşılan klasörün özelliklerini açın ve Paylaşım sekmesi -> Gelişmiş Paylaşım -> Önbelleğe Alma'ya gidin. İkinci seçenek olan "Paylaşılan klasördeki hiçbir dosya veya program çevrimdışı kullanılamaz" seçeneğini belirleyin.

Veya yerleşik SMBShare modülünden PowerShell komutunu kullanın:

Set-SMBShare -Name MySharedDocs -CachingMode None

Bu, hem önbelleğe almayı hem de bu paylaşılan klasöre çevrimdışı erişimi devre dışı bırakacaktır (Windows'ta çevrimdışı dosyaları kullanma hakkındaki makaleye bakın).

SMB istemci tarafında ağ paylaşımlı klasör önbellek ayarlarını yöneten üç kayıt defteri parametresi vardır. Microsoft, bu kayıt defteri seçenekleri için varsayılan değerlerin çoğu ortam için en iyi performansı sağladığını belirtir. SMB önbellek ayarları, HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters kayıt defteri anahtarının altında bulunur.

  • DirectoryCacheLifetime, paylaşılan klasör meta veri önbelleğinin kullanım ömrüdür (varsayılan olarak 10 saniye);

  • FileNotFoundCacheLifetime - “Dosya bulunamadı ” yanıt önbelleği (5 saniye);

  • FileInfoCacheLifetime - önbelleği dosya bilgileriyle tutma süresi (10 saniye).

Bu kayıt defteri ayarlarıyla ilgili bilgileri, Windows dosya sunucusu ayarlarını optimize etme hakkındaki makalede bulabilirsiniz: https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/role/file-server/

Varsayılan olarak, bir SMB paylaşım klasörünün önbellek ömrü yalnızca 10 saniyedir. Bir istemci paylaşılan bir klasörün içeriğini yenilediğinde, son güncellemenin sonucu istemci tarafından 10 saniye süreyle saklanır. Bu ağ paylaşımına erişirken, tüm uygulamalar önce bu önbelleği kullanmayı dener.

Bazı durumlarda, SMB klasörlerindeki verileri önbelleğe alma mekanizması düzgün çalışmaz (çoğunlukla bu, binlerce dosya ve klasör içeren ağ klasörlerinde/sürücülerinde olur). Bu durumda, kullanıcılar paylaşılan klasörlerdeki dosyaları açarken, görüntülerken ve oluştururken önemli gecikmeler yaşayabilir.

SMB klasörleri için önbelleğe almayı devre dışı bırakabilirsiniz. Bunu yapmak için HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters kayıt defteri anahtarı altında DirectoryCacheLifetime adında ve 0 değerinde yeni bir DWORD parametresi oluşturun. . Ayrıca FileInfoCacheLifetime ve FileNotFoundCacheLifetime parametrelerinin değerlerini 0 olarak ayarlayın. Bu kayıt defteri parametrelerini kullanarak oluşturabilirsiniz.

regedit.exe

veya New-ItemProperty PowerShell cmdlet'i ile:

$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

Ayarların etkili olması için bilgisayarınızı yeniden başlatmanız gerekir. Bu parametrelerin birden çok etki alanı bilgisayarına uygulanması gerekiyorsa, kayıt defteri ayarlarını dağıtmak için GPO'yu kullanabilirsiniz.

Ağ klasörü önbelleğini devre dışı bırakmak, ağ trafiğini artırır ve dosya sunucusu performansını düşürür.

SMB istemcisine ince ayar yapmak için Set-SmbClientConfiguration cmdlet'ini de kullanabilirsiniz:

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

Windows SMB istemcisi için mevcut önbelleğe alma ayarlarını PowerShell ile listeleyebilirsiniz:

Get-SmbClientConfiguration| select *cache*
DirectoryCacheEntriesMax : 16
DirectoryCacheEntrySizeMax : 65536
DirectoryCacheLifetime : 0
FileInfoCacheEntriesMax : 64
FileInfoCacheLifetime : 0
FileNotFoundCacheEntriesMax : 128
FileNotFoundCacheLifetime : 0

Bundan sonra, paylaşımdaki tüm değişiklikler istemcide hemen görüntülenecektir (klasörün içeriği, her erişildiğinde yenilenir ve yerel önbellek kullanılmaz).

Paylaşılan klasörlerin ağ performansının düşük olmasının veya klasör içeriklerinin yavaş görünmesinin birkaç başka nedeni vardır:

  • Paylaşımlı klasör ayarlarında “Erişim Tabanlı Numaralandırma (ABE) ” seçeneğinin etkinleştirilmesi, çok sayıda nesne içeren bir paylaşımlı klasördeki dosya listesinin yavaş güncellenmesine yol açabilir;

  • Windows Server 2019 üzerinde çalışan Hyper-V sanal makinelerinde yavaş ağ hızı yaşayabilirsiniz (Windows Server 2016/2012R2 ile karşılaştırıldığında);

  • Etki alanına katılmış aygıtlardaki TCP/IPv4 bağlantınızın özelliklerinde eski NetBIOS protokolünü devre dışı bırakmayı deneyin (

    ncpa.cpl

    -> ağ bağdaştırıcısının TCP/IPv4 ayarlarını açın ve WINS sekmesinde TCPIP üzerinden NetBIOS'u Devre Dışı Bırak'ı seçin);

  • Windows istemci aygıtında ağ ve TCP/IP yığını ayarlarını sıfırlamayı deneyin. Windows 10+ üzerinde, Ayarlar panelindeki Ağ Sıfırlama seçeneğini kullanabilir veya şu komutu kullanabilirsiniz:

    netsh int ip reset

İlgili makaleler