Informazioni sui tipi di blocco e blocco dei file in Azure NetApp Files

Negli ambienti NAS più client accedono ai file nello stesso volume. Il volume NAS non è compatibile con l'applicazione, quindi per proteggere i dati da potenziali danneggiamenti quando più client tentano di scrivere nello stesso file contemporaneamente, le applicazioni inviano richieste di blocco al server NAS per impedire ad altri client di apportare modifiche mentre il file è in uso. Con NFS, i meccanismi di blocco dei file dipendono dalla versione NFS usata.

Tipi di blocco

Esistono diversi tipi di blocchi NFS, tra cui:

Blocchi condivisi: i blocchi condivisi possono essere usati contemporaneamente da più processi e possono essere emessi solo se non sono presenti blocchi esclusivi in un file. Questi blocchi sono destinati al lavoro di sola lettura, ma possono essere usati per le scritture, ad esempio con un database.

Blocchi esclusivi: i blocchi esclusivi funzionano come i blocchi esclusivi in CIFS/SMB: solo un processo può usare il file quando è presente un blocco esclusivo. Se altri processi hanno bloccato il file, non è possibile eseguire un blocco esclusivo a meno che tale processo non sia stato copiato tramite fork.

Deleghe: le deleghe vengono usate solo con NFSv4.x e vengono assegnate quando le opzioni del server NFS sono abilitate e il client supporta le deleghe NFSv4.x. Le deleghe consentono di memorizzare nella cache le operazioni sul lato client creando un blocco "soft" per il file usato da un client. Ciò migliora le prestazioni di carichi di lavoro specifici riducendo il numero di chiamate tra il client e il server e sono simili ai blocchi opportunistici SMB. Azure NetApp Files attualmente non supporta le deleghe NFSv4.x.

Blocchi di intervallo di byte: anziché bloccare un intero file, i blocchi di intervallo di byte bloccano solo una parte di un file.

Il comportamento di blocco dipende dal tipo di blocco, dalla versione del sistema operativo client e dalla versione NFS in uso. Assicurarsi di testare il blocco nell'ambiente per misurare il comportamento previsto.

Blocco NFSv3

NFSv3 usa protocolli ausiliari come Network Lock Manager (NLM) e Network Status Monitor (NSM) per coordinare i blocchi di file tra il client NFS e il server. Questi protocolli ausiliari sono definiti in RFC-1813, a cui azure NetApp Files è conforme.

NLM consente di stabilire e rilasciare blocchi, mentre NSM invia una notifica ai peer dei riavvii del server. Con il blocco NFSv3, quando un client viene riavviato, il server deve rilasciare i blocchi. Quando un server viene riavviato, il client ricorda al server i blocchi mantenuti

Nota

In alcuni casi, i meccanismi di blocco NFS non comunicano correttamente (ad esempio in caso di interruzione della rete) e i blocchi non aggiornati vengono lasciati sul server e devono essere cancellati manualmente. Per altre informazioni su questa attività, vedere Risolvere i problemi relativi ai blocchi di file.

Blocco NFSv4.x

NFSv4.x usa un modello di blocco basato su lease integrato nel protocollo NFS. Ciò significa che non ci sono servizi ausiliari da mantenere o preoccuparsi di; tutto il blocco viene incapsulato nella comunicazione NFSv4.x.

Azure NetApp Files supporta il meccanismo di blocco dei file NFSv4.x, mantenendo lo stato di tutti i blocchi di file in un modello basato su lease. In conformità con RFC 8881, Azure NetApp Files definirà un singolo periodo di lease per tutti gli stati mantenuti da un client NFS. Se il client non rinnova il lease entro il periodo definito, tutti gli stati associati al lease del client possono essere rilasciati dal server."

Ciò significa che il client può rinnovare il lease in modo esplicito o implicito eseguendo un'operazione, ad esempio la lettura di un file. Inoltre, Azure NetApp Files definisce un periodo di tolleranza, ovvero un periodo di elaborazione speciale in cui i client tentano di recuperare lo stato di blocco durante il ripristino del server.

Termine Definizione
Lease Periodo di tempo in cui Azure NetApp Files concede in modo irrevocabile un blocco a un client.
Periodo di prova Periodo di tempo in cui i client tentano di recuperare lo stato di blocco durante il ripristino del server in caso di interruzione del server.

Come Azure NetApp Files gestisce i blocchi NFSv4.x

I blocchi vengono emessi da Azure NetApp Files su richiesta del client in base al lease. Il server Azure NetApp Files controlla il lease in ogni client ogni 30 secondi per verificare la presenza di modifiche. In caso di riavvio del client, il client può recuperare tutti i blocchi validi dal server dopo il riavvio. Se il server Azure NetApp Files viene riavviato, al riavvio non viene eseguito alcun nuovo blocco ai client per un periodo di tolleranza di 45 secondi. Dopo tale periodo, i blocchi possono essere emessi ai client richiedenti. Se non è possibile ristabilire il blocco durante il periodo di tolleranza specificato, il blocco scade autonomamente. Questo comportamento è diverso dal blocco NFSv3, perché non ci saranno blocchi non aggiornati che devono essere interrotti manualmente.

Stabilire manualmente i blocchi in un client

Per testare i blocchi NFS, il client deve indicare al server NFS di stabilire un blocco. Tuttavia, non tutte le applicazioni usano blocchi. Ad esempio, l'applicazione "vi" non blocchi un file. Crea un file di scambio nascosto, usando una convenzione di denominazione dei punti, nella stessa cartella e quindi esegue il commit delle scritture in tale file quando l'applicazione viene chiusa. Il file precedente viene quindi eliminato e il file di scambio viene rinominato nel nome file.

Esistono tuttavia utilità per stabilire manualmente i blocchi. Ad esempio, flock può bloccare i file.

Per stabilire un blocco su un file, eseguire prima di tutto exec per assegnare un ID numerico.

# exec 4<>v4user_file

Usare flock per creare un blocco condiviso o esclusivo nel file.

# flock

Usage:
 flock [options] <file|directory> <command> [command args]
 flock [options] <file|directory> -c <command>
 flock [options] <file descriptor number>

Options:
 -s  --shared             get a shared lock
 -x  --exclusive          get an exclusive lock (default)
 -u  --unlock             remove a lock
 -n  --nonblock           fail rather than wait
 -w  --timeout <secs>     wait for a limited amount of time
 -E  --conflict-exit-code <number>  exit code after conflict or timeout
 -o  --close              close file descriptor before running command
 -c  --command <command>  run a single command string through the shell

 -h, --help     display this help and exit
 -V, --version  output version information and exit

# flock -n 4

Per sbloccare il file.

# flock -u -n 4

Il blocco manuale dei file consente di testare le interazioni di apertura e modifica dei file e testare la funzionalità di interruzione del blocco in Azure NetApp Files.

Passaggi successivi