9.3. Glocks


Pour comprendre GFS2, le concept le plus important, et celui qui le différencie des autres systèmes de fichiers, est celui des glocks. Dans le code source, un glock est une structure de données qui réunit le DLM et la mise en cache en une seule machine à états. Chaque glock a une relation 1:1 avec un seul verrou DLM et fournit un cache pour cet état de verrouillage afin que les opérations répétitives effectuées à partir d'un seul nœud du système de fichiers n'aient pas à appeler le DLM à plusieurs reprises, ce qui permet d'éviter un trafic réseau inutile. Il existe deux grandes catégories de glocks, ceux qui mettent en cache les métadonnées et ceux qui ne le font pas. Les glocks d'inodes et les glocks de groupes de ressources mettent tous deux des métadonnées en cache, tandis que les autres types de glocks ne mettent pas de métadonnées en cache. Le glock inode est également impliqué dans la mise en cache de données en plus des métadonnées et possède la logique la plus complexe de tous les glocks.

Tableau 9.1. Modes Glock et modes de verrouillage DLM
Mode GlockMode de verrouillage DLMNotes

ONU

IV/NL

Déverrouillé (pas de serrure DLM associée au glock ou serrure NL en fonction de l'indicateur I)

SH

PR

Verrouillage partagé (lecture protégée)

EX

EX

Serrure exclusive

DF

CW

Différé (écriture simultanée) utilisé pour Direct I/O et le gel du système de fichiers

Les glocks restent en mémoire jusqu'à ce qu'ils soient déverrouillés (à la demande d'un autre nœud ou de la VM) et qu'il n'y ait plus d'utilisateurs locaux. Ils sont alors retirés de la table de hachage des glocks et libérés. Lorsqu'un glock est créé, le verrou DLM n'est pas immédiatement associé au glock. Le verrou DLM est associé au cadenas lors de la première demande au DLM, et si cette demande aboutit, le drapeau "I" (initial) est activé sur le cadenas. Le tableau "Glock Flags" dans The glock debugfs interface montre la signification des différents drapeaux de glock. Une fois que le DLM a été associé au glock, le verrou DLM restera toujours au moins en mode NL (Null) jusqu'à ce que le glock soit libéré. La rétrogradation du verrou DLM de NL à déverrouillé est toujours la dernière opération dans la vie d'un cadenas.

Chaque glock peut être associé à un certain nombre de "détenteurs", chacun d'entre eux représentant une demande de verrouillage de la part des couches supérieures. Les appels système relatifs à GFS2 mettent en file d'attente et retirent de la file d'attente les détenteurs du glock afin de protéger la section critique du code.

La machine à états de glock est basée sur une file d'attente. Pour des raisons de performance, les tasklets seraient préférables ; cependant, dans l'implémentation actuelle, nous devons soumettre des E/S à partir de ce contexte, ce qui interdit leur utilisation.

Note

Les files d'attente ont leurs propres tracepoints qui peuvent être utilisés en combinaison avec les tracepoints de GFS2.

Le tableau suivant montre quel état peut être mis en cache dans chacun des modes de verrouillage et si cet état mis en cache peut être sale. Cela s'applique aux verrous d'inodes et de groupes de ressources, bien qu'il n'y ait pas de composant de données pour les verrous de groupes de ressources, seulement des métadonnées.

Tableau 9.2. Modes et types de données du Glock
Mode GlockDonnées du cacheMétadonnées du cacheDonnées salesMétadonnées sales

ONU

Non

Non

Non

Non

SH

Oui

Oui

Non

Non

DF

Non

Oui

Non

Non

EX

Oui

Oui

Oui

Oui

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.