Ciao a tutti! Oggi parleremo di Offline Files. Una tecnologia veramente utile che però non tutti conoscono.
La tecnologia Offline Files (detta anche CSC – Client Side Caching) permette di ottimizzare i tempi di accesso ai files da parte dei client. Immaginiamo uno scenario con un file server, ed un link di rete molto lento: ogni volta che i client devono accedere a tali documenti, l’accesso sarà presumibilmente lento e dipendente esclusivamente dalle performance di rete. Tramite Offline files, abbiamo la possibilità di introdurre una cache locale sui client: per accedere agli stessi files quindi la velocità sarà nettamente migliore, pari a quella di accesso ad un qualsiasi altro file sul disco locale. Ci sono poi meccanismi di sincronizzazione per gestire la corretta propagazione di eventuali modifiche ai files che andremo a vedere nel dettaglio.
Le modalità di utilizzo sono quattro:
- Online mode – client accede ai files direttamente dal server e li copia immediatamente nella cache. A partire dalla seconda lettura quindi leggiamo dalla cache nonostante la modalità sia “online”. Tutte le modifiche ad un file o ad una cartella vengono applicate prima alla copia online sul server, e poi propagate alla cache locale sul client.
- Auto Offline mode – Tutte le operazioni su files e cartelle sono effettuate sulla cache locale (Offline Files folder). La modalità si attiva quando c’è un errore di rete e il server è irraggiungibile. Ogni due minuti automaticamente il client tenterà di riconnettersi al server: se ci riesce, si ripassa a online mode.
- Manual Offline Mode - L’utente abilita manualmente offline mode usando il pulsante “Work Offline” su Windows Explorer (decisione persistente dopo reboot). Come per auto offline, tutte le operazioni su files e cartelle sono effettuate sulla cache locale. La grande differenza rispetto alla Auto Offline mode è che possiamo iniziare una sincronizzazione manuale in qualsiasi momento.
- Slow link mode – Per poter utilizzare questa modalità è necessario impostare la “Configure slow-link mode” group policy. Una volta impostata, questa modalità si abilita automaticamente se le performance della rete sono inferiori ad una certa soglia di latency o throughput che abbiamo preimpostato. è importante sottolineare che il sistema ha bisogno di un certo tempo iniziale per valutare latenza e throughput prima di passare in slow link mode. In questo caso, per quel periodo iniziale rimaniamo in online mode. Inoltre, anche per slow link mode possiamo iniziare una sincronizzazione manuale in qualsiasi momento.
è utile comparare in tabella le varie differenze tra le 4 modalità:
Modalità | Apertura file | Lettura da file | Scrittura file | Browse cartelle | Sincronizzazione automatica | Sincronizzazione manuale |
Online | Server | Local Cache | Server e cache | Server | Si | Si |
Auto Offline | Local Cache | Local Cache | Local Cache | Local Cache | Non disponibile | Non disponibile |
Manual Offline | Local Cache | Local Cache | Local Cache | Local Cache | Non disponibile | Si |
Slow link | Local Cache | Local Cache | Local Cache | Local Cache | Non disponibile | Si |
Riassumendo, un computer può switchare in Offline mode se:
- La modalità “Always Offline” è stata abilitata
- Il server non è raggiungibile
- La connessione di rete verso il server è più lenta di una certa soglia configurabile
- L’utente abilita manualmente offline mode usando il pulsante “Work Offline” su Windows Explorer
Ma come avviene esattamente la transizione da offline a online? Semplicemente, per ogni file che ha un handle aperto, Offline Files verifica se il file è stato modificato su server o local cache e:
- se il file non è stato cambiato, viene ricreato un handle per quel file sul server. In questo modo la transizione è totalmente trasparente per gli utenti e non crea disconnessioni del servizio (non è quindi necessario riavviare applicazioni).
- se il file è stato modificato sulla cache locale, il file rimane offline e l’handle non viene ricreato sul server. Il file rimane in stato “Offline status: Offline (need to sync)” e si continuerà a lavorare sulla copia offline finchè non verrà eseguita una sincronizzazione.
- per tutti i file senza handle aperti, vengono aggiornate le modifiche presenti in cache e copiate sul server, e vengono copiate in cache le modifiche fatte sul server mentre si era offline.
Ma come affrontare il problema dei conflitti? Immaginiamo di aver modificato un file in cache, e in contemporanea qualcun altro lo abbia modificato sul server. Si può prendere una decisione in molteplici modi diversi, e può non essere la stessa in diversi scenari. In questo contesto ci viene in aiuto la Automatic Resolution Policy. Si tratta semplicemente di assegnare una policy – cioè una modalità di resoluzione del conflitto – univoca per ogni share di rete. Le policy sono le seguenti:
Valore | Descrizione |
0 | Non risolvere. Lascia il conflitto irrisolto. |
1 | Mantieni il file locale. Sovrascrivi il file sul server. Se la copia locale è stata cancellata, cancella la copia sul server |
2 | Mantieni la copia remota (sul server). Sovrascrivi il file locale. Se la copia remota sul server è stata cancellata, cancella la copia locale |
3 | Mantieni entrambe le copie. Modalità non disponibile quando una delle due copie è stata cancellata. |
4 | Mantieni la copia più recente, basandosi sul timestamp di “ultima modifica” del file. Se il file locale è stato cancellato, usa il timestamp di cancellazione come riferimento |
5 | Traccia un evento sul sync conflict log e non procedere. L’utente sceglierà manualmente in seguito. |
6 | Non risolvere il conflitto. Non aggiongere eventi sul sync conflict log |
7 | Cancella l’operazione di sincronizzazione |
Operativamente, per applicare la policy scelta basta creare una entry nel registro, sotto HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\NetCache\SyncConflictHandling
Ci sarà sufficiente aggiungere una “Expandable String Value” con il nome della share, e come valore assegnargli il numero relativo alla policy scelta, come ad esempio:
Settings lato server
Quando si crea una cartella condivisa su un server, dalla proprietà avanzate dello sharing si possono definire le modalità di disponibilità offline. Le tre modalità selezionabili (vedi figura) sono:
- Manual Caching (default) – se vogliamo che un file sia disponibile per la cache offline, bisogna abilitarlo manualmente.
- No Caching – nessun file sarà disponibile offline
- Automatic Caching – ogni volta che si accederà ad un file condiviso, ne verrà creata una copia offline
Settings lato client
A livello di client, è possibile customizzare alcuni parametri. Per farlo, bisogna usare il Sync Center, accessibile da pannello di controllo (mobsync.exe)
l più importante è forse la quantità di spazio su disco da dedicare alla offline cache.
Per una estensiva lista di tutti i parametri customizzabili possiamo fare riferimento alle GPO dedicate a questo servizio, che possiamo trovare in Computer Configuration\Administrative Templates\Network\Offline Files
Info aggiuntive
In conclusione, una piccola precisazione.
Folder Redirection è una tecnologia che può essere combinata con Offline Files ma non è da confondersi con essa. Folder Redirection è un meccanismo per redirigere il path di cartelle locali verso share di rete (manualmente o via group policy). L’uso più comune è redirigere la cartella “Documenti” per salvarla su di un File Server aziendale anzichè mantenerla sul disco C:\ locale.
Non facciamo confusione quindi :)
Link utili:
- Folder Redirection, Offline Files, and Roaming User Profiles overview
http://technet.microsoft.com/en-us/library/hh848267 - What's New in Offline Files for Windows 7
http://technet.microsoft.com/en-us/library/ff183315(WS.10).aspx - What's New in Offline Files for Windows Vista
http://technet.microsoft.com/en-us/library/cc749449(WS.10).aspx - Changes to Offline Files in Windows Vista
http://technet.microsoft.com/en-us/magazine/2007.11.offline.aspx - Offline Files and Folder Redirection
http://technet.microsoft.com/en-us/library/gg277982(WS.10).aspx - Sync Conflicts FAQ
http://windows.microsoft.com/en-us/windows-vista/Resolving-sync-conflicts-frequently-asked-questions - Automatic resolution policy
http://support.microsoft.com/kb/2189014
Grazie a tutti e alla prossima!
Stefano Gagliardi
Support Engineer
Microsoft Enterprise Platform Support