Condividi tramite


Blocchi opportunistici

Un blocco opportunistico (detto anche oplock) è un blocco posizionato 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 i dati nella cache in locale, riducendo così il traffico di rete e migliorando il tempo di risposta apparente. I blocchi opportunistici vengono usati dai reindirizzatori di rete nei client che utilizzano server remoti, nonché dalle applicazioni client su server locali.

Annotazioni

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. Puoi trovare ulteriori informazioni sugli oplock per i reindirizzatori di rete negli articoli Oplocks di Windows WDK.

Informazioni generali

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 localmente. 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 nei file e della notifica di accesso 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 utilità limitata per le applicazioni. Un uso dei blocchi opportunistici da parte delle applicazioni in un file system locale consiste nel fornire l'accesso trasparente ai file. Un'applicazione, ad esempio un indicizzatore di contenuto o un altro scanner, può usare un blocco opportunistico per ricevere una notifica che un'altra applicazione sta tentando di accedere a un file che l'applicazione indicizzatore sta elaborando. Ciò consente all'indicizzatore di chiudere il relativo handle e farsi da parte rispetto all'altra applicazione, in modo da evitare di causare problemi all'altra applicazione, come violazioni di condivisione. Un altro uso pratico dei blocchi opportunistici in un'applicazione 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. La maggior parte delle applicazioni lascia la gestione dei blocchi opportunistici 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 di blocco opportunistica del protocollo CIFS (Common Internet File System), 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). La bozza Internet CIFS identifica esplicitamente che un'implementazione CIFS può gestire i blocchi opportunistici rifiutandone la concessione.

In questa sezione

Gli argomenti seguenti identificano i blocchi opportunistici:

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. Comporta 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 invadente adatto per l'applicazione.
Tipi di blocchi opportunistici Descrivono i blocchi opportunistici Read-Write-Handle, Read-Write, Read-Handle e Read. Descrive anche i blocchi opportunistici di livello 1, livello 2, batch e filtro legacy.
Interruzione dei 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 cui richiede i 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, consultare 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.

Guida alla gestione dell'accesso ai file e dei protocolli di NetApp

Oplock (WDK)