समस्या का विवरण
उपयोगकर्ता अक्सर विंडोज़ में नेटवर्क शेयर्ड फ़ोल्डर खोलते या सेव करते समय बहुत धीमे प्रदर्शन की शिकायत करते हैं। जब कोई यूज़र UNC पथ के माध्यम से शेयर्ड फ़ोल्डर खोलता है, या ड्राइव लेटर के ज़रिए (यदि शेयर्ड फ़ोल्डर नेटवर्क ड्राइव के रूप में मैप किया गया है), तो इसकी सामग्री 10-60 सेकंड में ही प्रदर्शित होती है। नेटवर्क फ़ोल्डर में नई फ़ाइलें बनाने पर भी वे तुरंत दिखाई नहीं देतीं, बल्कि 3-4 मिनट की देरी के बाद दिखती हैं (भले ही आप F5 कुंजी से फ़ोल्डर सामग्री रीफ़्रेश करें)। हालांकि, यदि आप UNC पथ के माध्यम से पूर्ण फ़ाइल नाम मैन्युअली निर्दिष्ट करते हैं (\\lon-file-srv1\public\new_file.docx), तो यह खुल जाएगी, भले ही यह फ़ाइल एक्सप्लोरर में दिखाई न दे।
कारण: SMB मेटाडेटा कैशिंग
विंडोज़ रिमोट कंप्यूटर्स पर शेयर्ड फ़ाइलों और अन्य नेटवर्क संसाधनों तक पहुंचने के लिए एक विशेष नेटवर्क रीडायरेक्टर घटक का उपयोग करता है। SMB v2.x से शुरू होकर (सर्वर मैसेज ब्लॉक प्रोटोकॉल संस्करणों की तालिका देखें), नेटवर्क रीडायरेक्टर नेटवर्क पर शेयर्ड फ़ोल्डर्स और फ़ाइलों तक पहुंचते समय एक कैशिंग तंत्र का उपयोग करता है। यह क्लाइंट और सर्वर के बीच ट्रैफिक और SMB अनुरोधों की संख्या को कम करता है (विशेष रूप से धीमे और अविश्वसनीय नेटवर्क पर प्रभावी)। डिफ़ॉल्ट रूप से, यह कैश हर 10 सेकंड में साफ़ होता है।
समाधान: SMB कैशिंग अक्षम करें
यदि आप विंडोज़ क्लाइंट डिवाइस पर नेटवर्क शेयर तक धीमी पहुंच का अनुभव कर रहे हैं, तो आप क्लाइंट साइड पर या शेयर्ड फ़ोल्डर सेटिंग्स में SMB मेटाडेटा कैशिंग को अक्षम करने का प्रयास कर सकते हैं।
विधि 1: शेयर्ड फ़ोल्डर सेटिंग्स के माध्यम से
- शेयर्ड फ़ोल्डर के गुण खोलें
- Sharing टैब → Advanced Sharing → Caching पर जाएं
- दूसरा विकल्प चुनें: "No files or programs from the shared folder are available offline"
विधि 2: PowerShell कमांड
Set-SMBShare -Name MySharedDocs -CachingMode None
यह इस शेयर्ड फ़ोल्डर के लिए कैशिंग और ऑफलाइन पहुंच दोनों को अक्षम कर देगा (विंडोज़ में ऑफलाइन फ़ाइलों के उपयोग पर लेख देखें)।
रजिस्ट्री के माध्यम से SMB क्लाइंट-साइड कैश सेटिंग्स प्रबंधित करें
नेटवर्क शेयर्ड फ़ोल्डर कैश सेटिंग्स को प्रबंधित करने वाले तीन रजिस्ट्री पैरामीटर हैं। माइक्रोसॉफ्ट के अनुसार, इन रजिस्ट्री विकल्पों के डिफ़ॉल्ट मान अधिकांश वातावरणों के लिए सर्वोत्तम प्रदर्शन प्रदान करते हैं। SMB कैश सेटिंग्स रजिस्ट्री कुंजी HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters के अंतर्गत स्थित हैं।
- DirectoryCacheLifetime - शेयर्ड फ़ोल्डर मेटाडेटा कैश का जीवनकाल (डिफ़ॉल्ट 10 सेकंड)
- FileNotFoundCacheLifetime - "फ़ाइल नहीं मिली" प्रतिक्रिया कैश (5 सेकंड)
- FileInfoCacheLifetime - फ़ाइल जानकारी के साथ कैश रखने का समय (10 सेकंड)
इन रजिस्ट्री सेटिंग्स के बारे में जानकारी विंडोज़ फ़ाइल सर्वर सेटिंग्स को अनुकूलित करने पर लेख में पाई जा सकती है: Microsoft Docs
कैशिंग पूरी तरह से अक्षम करें (जब समस्या बनी रहती है)
कुछ मामलों में, SMB फ़ोल्डर्स में डेटा कैशिंग का तंत्र सही ढंग से काम नहीं करता (अक्सर हजारों फ़ाइलों और फ़ोल्डर्स वाले नेटवर्क फ़ोल्डर्स/ड्राइव्स के साथ होता है)। ऐसे में उपयोगकर्ताओं को शेयर्ड फ़ोल्डर्स में फ़ाइलें खोलने, देखने और बनाने में महत्वपूर्ण देरी का अनुभव हो सकता है।
SMB फ़ोल्डर्स के लिए कैशिंग अक्षम करने के लिए, HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters रजिस्ट्री कुंजी के अंतर्गत निम्न DWORD पैरामीटर बनाएं:
- DirectoryCacheLifetime = 0
- FileInfoCacheLifetime = 0
- FileNotFoundCacheLifetime = 0
आप इन रजिस्ट्री पैरामीटर्स को regedit.exe या PowerShell के माध्यम से बना सकते हैं:
$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
महत्वपूर्ण: सेटिंग्स लागू होने के लिए कंप्यूटर को पुनरारंभ करना आवश्यक है। यदि इन पैरामीटर्स को एकाधिक डोमेन कंप्यूटर्स पर लागू करने की आवश्यकता है, तो आप GPO का उपयोग करके रजिस्ट्री सेटिंग्स तैनात कर सकते हैं।
चेतावनी: नेटवर्क फ़ोल्डर कैशिंग अक्षम करने से नेटवर्क ट्रैफिक बढ़ता है और फ़ाइल सर्वर प्रदर्शन कम होता है।
Set-SmbClientConfiguration के माध्यम से फाइन-ट्यूनिंग
आप Set-SmbClientConfiguration cmdlet का उपयोग करके SMB क्लाइंट को फाइन-ट्यून भी कर सकते हैं:
Set-SmbClientConfiguration -DirectoryCacheLifetime 0
Set-SmbClientConfiguration -FileInfoCacheLifetime 0
Set-SmbClientConfiguration -FileNotFoundCacheLifetime 0
वर्तमान कैशिंग सेटिंग्स जांचें
PowerShell के साथ विंडोज़ SMB क्लाइंट के लिए वर्तमान कैशिंग सेटिंग्स सूचीबद्ध करें:
Get-SmbClientConfiguration | select *cache*
आउटपुट उदाहरण:
DirectoryCacheEntriesMax : 16 DirectoryCacheEntrySizeMax : 65536 DirectoryCacheLifetime : 0 FileInfoCacheEntriesMax : 64 FileInfoCacheLifetime : 0 FileNotFoundCacheEntriesMax : 128 FileNotFoundCacheLifetime : 0
इसके बाद, शेयर में सभी परिवर्तन क्लाइंट पर तुरंत प्रदर्शित होंगे (फ़ोल्डर सामग्री हर बार एक्सेस करने पर रीफ़्रेश होती है और स्थानीय कैश का उपयोग नहीं किया जाता)।
शेयर्ड फ़ोल्डर्स के खराब नेटवर्क प्रदर्शन के अन्य कारण
- शेयर्ड फ़ोल्डर सेटिंग्स में "Access-based Enumeration (ABE)" विकल्प सक्षम करने से बड़ी संख्या में ऑब्जेक्ट्स वाले शेयर्ड फ़ोल्डर में फ़ाइलों की सूची का धीमा अपडेट हो सकता है;
- विंडोज़ सर्वर 2019 पर चलने वाले Hyper-V वर्चुअल मशीनों पर धीमी नेटवर्क गति का अनुभव हो सकता है (विंडोज़ सर्वर 2016/2012R2 की तुलना में);
- डोमेन-जॉइंड डिवाइसेज पर अपने TCP/IPv4 कनेक्शन के गुणों में लिगेसी NetBIOS प्रोटोकॉल को अक्षम करने का प्रयास करें (
ncpa.cpl→ नेटवर्क एडाप्टर की TCP/IPv4 सेटिंग्स खोलें और WINS टैब पर Disable NetBIOS over TCPIP चुनें); - विंडोज़ क्लाइंट डिवाइस पर नेटवर्क और TCP/IP स्टैक सेटिंग्स रीसेट करने का प्रयास करें। विंडोज़ 10+ पर, आप सेटिंग्स पैनल में Network Reset विकल्प का उपयोग कर सकते हैं या कमांड:
netsh int ip reset