Compartilhar via


Compreender o bloqueio de arquivos e os tipos de bloqueio nos Arquivos NetApp do Azure

Em ambientes NAS, vários clientes acessam arquivos no mesmo volume. O volume NAS não reconhece o aplicativo, portanto, para proteger os dados contra possíveis danos quando mais de um cliente tenta gravar no mesmo arquivo ao mesmo tempo, os aplicativos enviam solicitações de bloqueio ao servidor NAS para impedir que outros clientes façam alterações enquanto o arquivo está em uso. Com o NFS, os mecanismos de bloqueio de arquivos dependem da versão do NFS que está sendo usada.

Tipos de bloqueio

Existem vários tipos de bloqueios NFS, que incluem:

Bloqueios compartilhados: Os bloqueios compartilhados podem ser usados por vários processos ao mesmo tempo e só podem ser emitidos se não houver bloqueios exclusivos em um arquivo. Esses bloqueios são destinados ao trabalho somente leitura, mas podem ser usados para gravações (como em um banco de dados).

Fechaduras exclusivas: Fechaduras exclusivas operam da mesma forma que fechaduras exclusivas em CIFS/SMB: apenas um processo pode usar o arquivo quando há um bloqueio exclusivo. Se qualquer outro processo tiver bloqueado o arquivo, um bloqueio exclusivo não poderá ser emitido, a menos que esse processo tenha sido bifurcado.

Delegações: As delegações são usadas somente com NFSv4.x e são atribuídas quando as opções do servidor NFS estão habilitadas e o cliente oferece suporte a delegações NFSv4.x. As delegações fornecem uma maneira de armazenar em cache as operações no lado do cliente, criando um bloqueio "suave" para o arquivo que está sendo usado por um cliente. Isso melhora o desempenho de cargas de trabalho específicas, reduzindo o número de chamadas entre o cliente e o servidor e são semelhantes aos bloqueios oportunistas SMB. Atualmente, o Azure NetApp Files não oferece suporte a delegações NFSv4.x.

Bloqueios de intervalo de bytes: em vez de bloquear um arquivo inteiro, os bloqueios de intervalo de bytes bloqueiam apenas uma parte de um arquivo.

O comportamento de bloqueio depende do tipo de bloqueio, da versão do sistema operacional cliente e da versão NFS que está sendo usada. Certifique-se de testar o bloqueio em seu ambiente para avaliar o comportamento esperado.

Bloqueio NFSv3

O NFSv3 usa protocolos auxiliares como o Network Lock Manager (NLM) e o Network Status Monitor (NSM) para coordenar bloqueios de arquivos entre o cliente NFS e o servidor. Esses protocolos auxiliares são definidos no RFC-1813, ao qual o Azure NetApp Files adere.

O NLM ajuda a estabelecer e liberar bloqueios, enquanto o NSM notifica os pares sobre reinicializações do servidor. Com o bloqueio do NFSv3, quando um cliente é reinicializado, o servidor deve liberar os bloqueios. Quando um servidor é reinicializado, o cliente lembra o servidor dos bloqueios que ele manteve

Observação

Em alguns casos, os mecanismos de bloqueio NFS não se comunicam corretamente (como no caso de uma interrupção da rede) e os bloqueios obsoletos são deixados no servidor e devem ser limpos manualmente. Para obter mais informações sobre essa tarefa, consulte Solucionar problemas de bloqueios de arquivo.

Bloqueio NFSv4.x

O NFSv4.x usa um modelo de bloqueio baseado em leasing integrado ao protocolo NFS. Isso significa que não há serviços auxiliares para manter ou se preocupar; todo o bloqueio é encapsulado na comunicação NFSv4.x.

Os Arquivos NetApp do Azure dão suporte ao mecanismo de bloqueio de arquivos NFSv4.x, mantendo o estado de todos os bloqueios de arquivos em um modelo baseado em concessão. De acordo com a RFC 8881, os Arquivos NetApp do Azure "definirão um único período de concessão para todos os estados mantidos por um cliente NFS. Se o cliente não renovar sua concessão dentro do período definido, todo o estado associado à concessão do cliente poderá ser liberado pelo servidor."

Isso significa que o cliente pode renovar sua concessão explícita ou implicitamente executando uma operação, como a leitura de um arquivo. Além disso, os Arquivos NetApp do Azure definem um período de cortesia, que é um período de processamento especial no qual os clientes tentam recuperar seu estado de bloqueio durante uma recuperação do servidor.

Termo Definição
Concessão O período de tempo no qual o Azure NetApp Files concede irrevogavelmente um bloqueio a um cliente.
Período de Cortesia O período de tempo no qual os clientes tentam recuperar seu estado de bloqueio durante a recuperação do servidor no caso de uma interrupção do servidor.

Como os Arquivos NetApp do Azure manipulam bloqueios NFSv4.x

Os bloqueios são emitidos pelos Arquivos NetApp do Azure mediante solicitação do cliente em regime de concessão. O servidor Azure NetApp Files verifica a concessão em cada cliente a cada 30 segundos em busca de alterações. No caso de uma reinicialização do cliente, o cliente pode recuperar todos os bloqueios válidos do servidor depois que ele for reiniciado. Se o servidor do Azure NetApp Files for reinicializado, ao reiniciá-lo, ele não emitirá novos bloqueios para os clientes por um período de cortesia de 45 segundos. Após esse período, os bloqueios podem ser emitidos para os clientes solicitantes. Se o bloqueio não puder ser restabelecido durante o período de carência especificado, o bloqueio expirará por conta própria. Esse comportamento difere do bloqueio NFSv3, pois não haverá bloqueios obsoletos que precisem ser quebrados manualmente.

Estabelecendo bloqueios manualmente em um cliente

Para testar bloqueios NFS, o cliente deve dizer ao servidor NFS para estabelecer um bloqueio. No entanto, nem todos os aplicativos usam bloqueios. Por exemplo, o aplicativo "vi" não bloqueará um arquivo. Ele cria um arquivo de permuta oculto, usando uma convenção de nomenclatura de pontos, na mesma pasta e, em seguida, confirma gravações nesse arquivo quando o aplicativo é fechado. Em seguida, o arquivo antigo é excluído e o arquivo de permuta é renomeado para o nome do arquivo.

No entanto, existem utilitários para estabelecer bloqueios manualmente. Por exemplo, o flock pode bloquear arquivos.

Para estabelecer um bloqueio em um arquivo, primeiro execute exec para atribuir uma ID numérica.

# exec 4<>v4user_file

Use flock para criar um bloqueio compartilhado ou exclusivo no arquivo.

# 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

Para desbloquear o arquivo.

# flock -u -n 4

O bloqueio manual de arquivos permite testar interações de abertura e edição de arquivos e testar a funcionalidade de quebra de bloqueio nos Arquivos NetApp do Azure.

Próximas etapas