Red Hat Training

A Red Hat training course is available for RHEL 8

8.3. Glocks

Para entender o GFS2, o conceito mais importante a entender, e o que o diferencia de outros sistemas de arquivo, é o conceito de glocks. Em termos de código fonte, um glock é uma estrutura de dados que reúne o DLM e o caching em uma única máquina de estado. Cada glock tem uma relação 1:1 com uma única fechadura DLM, e fornece cache para esse estado de fechamento, de modo que as operações repetitivas realizadas a partir de um único nó do sistema de arquivo não tenham que chamar repetidamente o DLM, e assim ajudam a evitar tráfego desnecessário na rede. Há duas grandes categorias de glocks, aqueles que armazenam metadados e aqueles que não o fazem. Os glocks de inode e o grupo de recursos fazem ambos os metadados de cache, outros tipos de glocks não fazem o cache de metadados. O inode glock também está envolvido no cache de dados além dos metadados e tem a lógica mais complexa de todos os glocks.

Tabela 8.1. Modos Glock e DLM Lock

Modo GlockModo de bloqueio DLMNotas

ONU

IV/NL

Desbloqueado (sem fechadura DLM associada à glock ou à NL, dependendo da bandeira I)

SH

PR

Fechadura compartilhada (leitura protegida)

EX

EX

Fechadura exclusiva

DF

CW

Diferido (escrita simultânea) utilizado para E/S direta e congelamento do sistema de arquivo

As glocks permanecem na memória até que sejam desbloqueadas (a pedido de outro nó ou a pedido do VM) e não haja usuários locais. Nesse momento, elas são removidas da mesa de hash da glock e liberadas. Quando uma glock é criada, o bloqueio DLM não é associado à glock imediatamente. A trava DLM torna-se associada à glock na primeira solicitação à DLM, e se esta solicitação for bem sucedida, então a bandeira "I" (inicial) será colocada na glock. Tabela 8.4, “Bandeiras Glock” mostra os significados das diferentes bandeiras da glock. Uma vez que a DLM tenha sido associada à glock, a trava DLM permanecerá sempre pelo menos no modo NL (Null) até que a glock seja liberada. Uma despromoção da trava DLM de NL para desbloqueada é sempre a última operação na vida de uma bata.

Cada glock pode ter um número de "suportes" associados a ela, cada um dos quais representa um pedido de bloqueio das camadas superiores. Chamadas de sistema relativas aos suportes de fila e dequeue GFS2 da glock para proteger a seção crítica do código.

A máquina de estado de glock é baseada em uma fila de trabalho. Por razões de desempenho, seria preferível a tasklets; entretanto, na implementação atual, precisamos apresentar E/S daquele contexto que proíbe seu uso.

Nota

As filas de trabalho têm seus próprios tracepoints que podem ser usados em combinação com os tracepoints GFS2.

Tabela 8.2, “Modos e tipos de dados da Glock” mostra que estado pode estar em cache sob cada um dos modos de glock e se esse estado em cache pode estar sujo. Isto se aplica tanto aos bloqueios inode quanto aos do grupo de recursos, embora não haja nenhum componente de dados para os bloqueios do grupo de recursos, apenas metadados.

Tabela 8.2. Modos e tipos de dados da Glock

Modo GlockDados do CacheMetadados de CacheDados sujosMetadados sujos

ONU

Não

Não

Não

Não

SH

Sim

Sim

Não

Não

DF

Não

Sim

Não

Não

EX

Sim

Sim

Sim

Sim