Visualizzazione post con etichetta SMB2 Client Redirector Cache. Mostra tutti i post
Visualizzazione post con etichetta SMB2 Client Redirector Cache. Mostra tutti i post

martedì 13 aprile 2021

Windows: Accesso lento a file e cartelle su share di rete

Quando si riscontra lentezza nell'accesso a file e cartelle su share di rete, il problema può avere diverse cause. I controlli e le prove da effettuare sono molteplici tra cui:
  • Verificare la configurazione di rete (configurazione indirizzo IP, Gateway, DNS, file hosts, ecc).
  • Assicurarsi che non ci siano problemi di connessione sia sul PC che si sta utilizzando sia sul computer/server remoto dove risiede la share.
  • Dal registro eventi verificare che non vi siano riportati errori o problemi hardware/software.
  • Provare a ricreare e rimappare la share di rete.
  • Disattivare temporaneamente le applicazioni che possono potenzialmente rallentare l'accesso al disco come Antivirus, Enhanced Mitigation Exploerience Toolkit (EMET), software di backup, ecc.
  • Verificare che non sia attiva l'indicizzazione sulle share mappate.
  • Eseguire il tool Pulizia disco sia in locale che sui dischi remoti per eliminare file temporanei.
  • Eseguire il tool System File Checker. Eseguendo il tool SFC con l'opzione /SCANNOW viene analizzata l'integrità di tutti i file protetti di sistema e i file che presentano problemi verranno ripristinati.
  • Assicurarsi che ci sia sufficiente spazio libero sia sul disco locale che su quello remoto.
  • Rimuovere dispositivi USB connessi.
  • Chiudere tutte le applicazioni.
  • Armeggiare con le impostazioni di Esplora file (ad es. evitando la visualizzazione di icone grandi o troppi dettagli).
  • Provare con un nuovo profilo utente e da altre postazioni.
  • Da Gestione attività verificare se il PC è impegnato in altre operazioni, l'utilizzo della CPU, del disco, della RAM e il traffico di rete.
  • A livello Hardware ci sarebbe da verificare la scheda di rete, il disco fisso e la RAM

Se le verifiche/prove effettuate non hanno prodotto alcun risultato ci sono altre tre cose che possiamo provare:
  • Reset TCP/IP;
  • Reset Winsock;
  • Disabilitare SMB2 Client Redirector Cache;

Reset TCP/IP

TCP/IP non è un singolo protocollo ma si tratta di una suite di protocolli su cui si basa il funzionamento logico della rete Internet. Viene chiamata suite di protocolli TCP/IP in virtù dei due più importanti protocolli in essa definiti: il Transmission Control Protocol (TCP) e l'Internet Protocol (IP).
Problemi di connessione possono essere causati dallo stack TCP/IP corrotto. In questi casi è possibile provare a ripristinare TCP/IP tramite il tool netshell (Netsh) incluso in Windows. Prima di eseguire il reset dello stack è bene prendere nota della configurazione IP del computer. Nel caso di IP statico, infatti, potrebbe essere necessario dover procedere alla sua riconfigurazione dopo il reset. Se l'indirizzo IP viene assegnato dal DHCP, come normalmente avviene per le aziende con numerosi computer, non dovremmo preoccuparci di nulla.
Per eseguire il reset dello stack TCP/IP:
  • Avviare il Prompt dei comandi come amministratore
  • Eseguire il comando
    netsh interface ip reset
    al posto di  interface è possibile utilizzare l'abbreviazione int.
    Reset TCP/IP
    FIG 1 - Reset TCP/IP

  • Terminato il reset dello stack TCP/IP sarà necessario procedere al riavvio del sistema.

Reset Winsock

In ambiente Windows i protocolli TCP/IP vengono implementati nei driver tcpip.sys e tcpip6.sys. Per utilizzare tali driver, generalmente, si passa per la libreria Winsock che consente una programmazione più semplice e favorisce la portabilità del codice. Winsock agisce da interfaccia gestendo le comunicazioni tra un'applicazione client TCP/IP (come il browser web, un client FTP, ecc) e lo stack TCP/IP sottostante. Se il reset del TCP/IP non ha risolto il nostro problema di connessione, si può provare ad eseguire anche il reset di Winsock. Anche in questo caso ci viene in soccorso il tool netshell:
  • Avviare il Prompt dei comandi come amministratore
  • Eseguire il comando
    netsh winsock reset

    Reset Winsock
    FIG 2 - Reset Winsock

  • Come per il reset TCP/IP, per completare l'operazione è necessario riavviare il sistema

Il reset di Winsock resetterà il Winsock Catalog ma non avrà alcun impatto su Winsock Name Space Provider.


SMB2 Client Redirector Cache

Il componente SMB Redirector implementa la parte client della funzione di condivisione file e stampa di Windows attraverso Microsoft Networkking. Il protocollo SMB permette al computer client di accedere ai file e stampanti su un altro computer che implementa la parte server del protocollo per la condivisione di tali risorse. Il protocollo SMB prevede anche la cache sul client al fine di rendere più efficiente l'accesso ai file, metadati e per l'enumarazione di file e directory. 
Con il rilascio di SMB 2.0 in Windows Vista e Windows Server 2008, sono state implementate tre cache indipendenti al fine di velocizzare la visualizzazione di informazioni su file e directory utilizzate di recente. Tali cache riducono anche le interazioni tra il client e il server SMB per le comuni operazioni di navigazione tra file e cartelle e oltre a migliorare i tempi di risposta del client nella visualizzazione delle risorse remote, sono importanti anche per la scalabilità e per le prestazioni generali del server SMB.
Le impostazioni di default per queste tre cache sono pensate per migliorare le prestazioni su connessioni a bassa larghezza di banda o alta latenza. In alcuni contesti, come per le applicazioni che richiedono un alto livello di coerenza sui file/cartelle accessibili e modificabili contemporaneamente da più client, possono rappresentare un problema.

Le tre cache sono:

File Information Cache 
La cache delle informazioni sui file riguarda le informazioni sugli attributi dei file contenute nella struttura File_Network_Open_Information, utili per conservare l'IO di rete per recuperare le informazioni comuni sui metadati dei file. 
Il valore predefinito è 10 secondi: Il periodo che deve trascorrere prima del timeout della cache con le informazioni dei file.
Per disattivare File Information Cache è necessario assegnare 0 al valore DWORD nominato FileInfoCacheLifetime presente all'interno della chiave di registro
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
Se il valore FileInfoCacheLifetime non è presente, crearlo manualmente.

Disattivare la cache delle informazioni sui file non è raccomandato in quanto potrebbe quasi raddoppiare il numero di transazioni di rete richieste per eseguire un dato scenario.


File Not Found Cache
Si tratta di cache di file che il client non è riuscito ad aprire perché il file non era presente sul server. Questo impedisce al client di tentare ripetutamente di aprire i file che non esistono più sul server. Questa cache è in grado di influenzare le applicazioni distribuite in esecuzione su più computer che accedono a un insieme di file su un server dove le applicazioni utilizzano un meccanismo per segnalarsi a vicenda l'aggiunta/modifica/cancellazione di file sul server.
Il valore predefinito è 5 secondi: Il periodo che deve trascorrere prima del timeout della cache dei file non trovati.
Per disattivarla assegnare 0 al valore DWORD nominato FileNotFoundCacheLifetime presente all'interno della chiave di registro
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
Se il valore FileNotFoundCacheLifetime non è presente, crearlo manualmente.


Directory Cache 
Directory Cache contiene le recenti enumerazioni di directory eseguite dal client. Le successive richieste di enumerazione fatte dalle applicazioni client, così come le richieste di metadati per i file nella directory, possono essere soddisfatte dalla cache. Il client usa anche la cache della directory per determinare la presenza o l'assenza di un file nella directory e usa questa informazione per evitare che i client tentino ripetutamente di aprire file che non esistono sul server. È probabile che questa cache influenzi le applicazioni distribuite in esecuzione su più computer che accedono a un insieme di file su un server dove le applicazioni utilizzano un meccanismo per segnalarsi a vicenda l'aggiunta/modifica/cancellazione di file sul server.
Il valore predefinito è 10 secondi: Si tratta del timeout della cache delle directory.
Per disattivarla assegnare 0 al valore DWORD nominato DirectoryCacheLifetime presente nella chiave di registro
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
Se il valore DirectoryCacheLifetime non è presente, crearlo manualmente.
Regedit, DirectoryCacheLifetime
FIG 3 - Regedit, DirectoryCacheLifetime 


Generalmente, nel caso si notino rallentamenti nell'accesso a file o directory sulla rete, basta disattivare la Directory cache. Se si sospetta che la cache dei metadati nel reindirizzatore sia la causa del cattivo funzionamento delle applicazioni e si intende disabilitarle tutte e tre, disabilitarle nel seguente ordine
  1. Directory cache, impostando DirectoryCacheLifetime a 0.
  2. File Not Found cache, impostando FileNotFoundCacheLifetime a 0.
  3. File information cache, impostando FileInfoCacheLifetime a 0.
Le operazioni di disattivazione delle cache sopra riportate possono essere eseguite sui sistemi Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Vista, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 e Windows Server 2008.