Blocchi opportunistici
Un blocco opportunistico (detto anche oplock) è un blocco inserito da un client in un file che risiede in un server. Nella maggior parte dei casi, un client richiede un blocco opportunistico in modo che possa memorizzare nella cache i dati in locale, riducendo così il traffico di rete e migliorando il tempo di risposta apparente. I blocchi opportunistici vengono usati dai reindirizzamenti di rete nei client con server remoti, nonché dalle applicazioni client nei server locali.
Nota
Gli articoli sui blocchi opportunistici disponibili in questa sezione riguardano principalmente le applicazioni client, anche se alcune informazioni vengono fornite per i reindirizzamenti di rete. Per altre informazioni su oplock, vedere gli articoli Oplocks di Windows WDK.
Panoramica
I blocchi opportunistici coordinano la memorizzazione dei dati nella cache e la coerenza tra client e server e tra più client. I dati coerenti sono i dati uguali nella rete. In altre parole, se i dati sono coerenti, i dati nel server e tutti i client vengono sincronizzati.
I blocchi opportunistici non sono comandi dal client al server. Sono richieste dal client al server. Dal punto di vista del cliente, sono opportunistici. In altre parole, il server concede tali blocchi ogni volta che altri fattori rendono possibili i blocchi.
Quando un'applicazione locale richiede l'accesso a un file remoto, l'implementazione di blocchi opportunistici è trasparente per l'applicazione. Il redirector di rete e il server coinvolti aprono e chiudono automaticamente i blocchi opportunistici. Tuttavia, i blocchi opportunistici possono essere usati anche quando un'applicazione locale richiede l'accesso a un file locale e l'accesso da parte di altre applicazioni e processi deve essere delegato per evitare il danneggiamento del file. In questo caso, l'applicazione locale richiede direttamente un blocco opportunistico dal file system locale e memorizza nella cache il file in locale. Se usato in questo modo, il blocco opportunistico è effettivamente un semaforo gestito dal server locale e viene usato principalmente ai fini della coerenza dei dati nella notifica di accesso ai file e ai file.
Prima di usare blocchi opportunistici nell'applicazione, è necessario avere familiarità con le modalità di accesso e condivisione dei file descritte in Creazione e apertura di file.
Il numero massimo di blocchi opportunistici simultanei che è possibile creare è limitato solo dalla quantità di memoria disponibile.
Le applicazioni locali non devono tentare di richiedere blocchi opportunistici dai server remoti. Se si tenta di eseguire questa operazione, verrà restituito un errore da DeviceIoControl .
I blocchi opportunistici sono di uso molto limitato per le applicazioni. L'unico uso pratico consiste nel testare un redirector di rete o un gestore di blocco opportunistico del server. In genere, i file system implementano il supporto per i blocchi opportunistici. Le applicazioni in genere lasciano la gestione opportunistica dei blocchi ai driver del file system. Chiunque implementi un file system deve usare il kit IFS (Installable File System). Chiunque sviluppi un driver di dispositivo diverso da un file system installabile deve usare Windows Driver Kit (WDK).
I blocchi opportunistici e le operazioni associate sono un superset della parte opportunistica del protocollo COMMON Internet File System (CIFS), un Internet Draft. Il protocollo CIFS è una versione avanzata del protocollo SMB (Server Message Block). Per altre informazioni, vedere Microsoft SMB Protocol and CIFS Protocol Overview (Panoramica del protocollo CIFS e del protocollo CIFS). La bozza internet CIFS identifica in modo esplicito che un'implementazione CIFS può implementare blocchi opportunistici rifiutando di concederle.
Gli argomenti seguenti identificano i blocchi opportunistici.
Contenuto della sezione
Argomento | Descrizione |
---|---|
Memorizzazione nella cache locale | La memorizzazione nella cache locale dei dati è una tecnica usata per velocizzare l'accesso alla rete ai file di dati. Implica la memorizzazione nella cache dei dati nei client anziché nei server, quando possibile. |
Coerenza dei dati | Se i dati sono coerenti, i dati nel server e tutti i client vengono sincronizzati. Un tipo di sistema software che fornisce la coerenza dei dati è un sistema di controllo delle revisioni (RCS). |
Come richiedere un blocco opportunistico | I blocchi opportunistici vengono richiesti aprendo prima un file con autorizzazioni e flag appropriati per l'applicazione che apre il file. Tutti i file per i quali verranno richiesti blocchi opportunistici devono essere aperti per l'operazione sovrapposta (asincrona). |
Risposta del server alle richieste aperte nei file bloccati | È possibile ridurre al minimo l'impatto dell'applicazione su altri client e l'impatto che hanno sull'applicazione concedendo il maggior numero possibile di condivisione, richiedendo il livello di accesso minimo necessario e usando il blocco opportunistico meno invasivo adatto all'applicazione. |
Tipi di blocchi opportunistici | Descrive i blocchi opportunistici di livello 1, livello 2, batch e filtro. |
Interruzione di blocchi opportunistici | L'interruzione di un blocco opportunistico è il processo di riduzione del blocco di un client in un file in modo che un altro client possa aprire il file, con o senza un blocco opportunistico. |
Esempi di blocchi opportunistici | Diagrammi delle visualizzazioni del traffico di rete per un blocco opportunistico di livello 1, un blocco opportunistico batch e un blocco opportunistico del filtro. |
Operazioni di blocco opportunistico | Se un'applicazione richiede blocchi opportunistici, tutti i file per i quali richiede blocchi devono essere aperti per l'input e l'output sovrapposti (asincroni) usando la funzione CreateFile con il flag FILE_FLAG_OVERLAPPED . |
Per altre informazioni sui blocchi opportunistici, vedere il documento CIFS Internet Draft. Eventuali discrepanze tra questo argomento e la bozza internet CIFS corrente devono essere risolte a favore della bozza internet CIFS.
Vedi anche
Guida alla gestione dell'accesso ai file e dei protocolli netApp