\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mar. juin 28 10:14:44 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={lvmlockd},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Service de lock LVM},
CreationDate={D:20160628101444},
ModDate={D:20160628101444},
Keywords={storages;raid;lvm}
}}
\begin{document}
 
\begin{center}
{\Huge lvmlockd }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Service de lock LVM}
 
\vspace{10mm}
 
\hspace{1mm}  Les commandes LVM utilisent lvmlockd pour coordonner l'accès au stockage partagé. Quand LVM est utilisé sur des périphériques partagés par plusieurs hôtes, les locks vont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Coordonner la lecture/écriture dus métadonnées LVM}
\item[\hspace{1mm} -]{Valider le cache des métadonnées}
\item[\hspace{1mm} -]{Empêcher l'activation concurrente des volumes logiques}
\end{description}
 
\hspace{1mm}  lvmlockd utilise un gestionnaire de lock externe, les options sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} sanlock]{Place les locks sur le disque dans le stockage LVM}
\item[\hspace{1mm} dlm]{Utilise la communication réseaux et un gestionnaire de cluster}
\end{description}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} --test|-T]{Mode test}
\item[\hspace{1mm} --foreground|-f]{Ne lance pas en tâche de fond}
\item[\hspace{1mm} --daemon-debug|-D]{Ne fork pas et affiche le débug sur stdout}
\item[\hspace{1mm} --pid-file|-p path]{Spécifie le fichier PID}
\item[\hspace{1mm} --socket-path|-s path]{Définis le chemin du socket}
\item[\hspace{1mm} --syslog-priority|-S err|warning|debug]{Spécifie la priorité syslog}
\item[\hspace{1mm} --gl-type|-g sanlock|dlm]{Définis le type de lock global}
\item[\hspace{1mm} --host-id|-i num]{Définis l'id hôte pour le sanlock local}
\item[\hspace{1mm} --host-id-file|-F path]{Un fichier contenant le sanlock local host\_id}
\item[\hspace{1mm} --sanlock-timeout|-o seconds]{Remplace le timeout d'E/S sanlock par défaut}
\item[\hspace{1mm} --adopt|-A 0|1]{récupère les locks d'une instance précédente de lvmlockd}
\end{description}
 
\vspace{1cm}{\huge Utilisation }
 
\
 
\hspace{1mm}  En utilisant LVM avec lvmlockd la première fois, il est nécessaire d'effectuer les étapes suivantes:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 1. Choisir un gestionnaire de lock]{}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} dlm]{Si dlm (ou corosync) est déjà utilisé par un autre logiciel cluster, sélectionner dlm. dlm utilise corosync qui nécessite une configuration additionnelle au delà du périmètre de ce document.}
\item[\hspace{6mm} sanlock]{sanlock ne dépend pas d'un logiciel de clustering}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} 2. Configurer les hôtes pour utiliser lvmlockd]{Sur tous les hôtes où lvmlockd fonctionne, configurer lvm.conf:}
\end{description}
 
{\ttfamily
locking\_type = 1\\ use\_lvmlockd = 1\\ \# avec sanlock, assigner un host\_id unique (de 1 à 2000) dans /etc/lvm/lvmlocal.conf local/host\_id\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} 3. Démarrer lvmlockd]{Utiliser un fichier d'init ou simplement lancer lvmlockd}
\item[\hspace{1mm} 4. Démarrer le gestionnaire de lock]{(sanlock) systemctl start wdmd sanlock ou (dlm) systemctl start corosync dlm}
\item[\hspace{1mm} 5. Créer un VG sur les périphériques partagés]{\textbf{vgcreate --shared <vgname> <devices>}. L'option shared définis le type de lock VG à sanlock ou dlm en fonctionne du gestionnaire utilisé.}
\item[\hspace{1mm} 6. Démarrer le VG sur tous les hôtes]{\textbf{vgchange --lock-start}. lvmlockd nécessite que les VG partagés soient démarrés avant qu'ils soient utilisés. Le lock manager démarre (joint) le lockspace du VG et peut prendre du temps.}
\item[\hspace{1mm} 7. Créer et activer les LV]{Les commandes lvcreate et lvchange sont utilisées pour créer et activer les LV dans un VG partagé. Un LV activé exclusivement sur un hôte ne peut pas être activé sur un autre. Quand plusieurs hôtes doivent utiliser le même LV simultannément, le LV peut être activé avec un lock partagé.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} Démarrage et arrêt]{Une fois la configuration initiale, le démarrage et l'arrêt incluent les étapes suivantes. Elles sont effectuée manuellement ou en utilisant le gestionnaire de service système:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -]{Démarrer lvmetad}
\item[\hspace{6mm} -]{Démarrer lvmlockd}
\item[\hspace{6mm} -]{Démarrer le lock manager}
\item[\hspace{6mm} -]{vgchange --lock-start}
\item[\hspace{6mm} -]{Activer les LV dans les VG partagés}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} ]{La séquence d'arrêt est l'inverse:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -]{Désactiver les LV dans les VG partagés}
\item[\hspace{6mm} -]{vgchange --lock-stop}
\item[\hspace{6mm} -]{Arrêter le gestionnaire de lock}
\item[\hspace{6mm} -]{Arrêter lvmlockd}
\item[\hspace{6mm} -]{Arrête lvmetad}
\end{description}
 
\vspace{1cm}{\huge Contrôle d'accès au VG }
 
\
 
\hspace{1mm}  Les termes suivants sont utilisés pour décrire les différentes formes de contrôle d'accès au VG.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un \textbf{lockd VG} est un VG partagé qui a un 'lock type' dlm ou sanlock. Il nécessite lvmlockd. Ces VG existent sur des stockages partagés qui sont visibles à plusieurs hôtes. Les commandes LVM utilisent lvmlockd pour effectuer le lock pour ces LV quand ils sont utilisés.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si le gestionnaire de lock pour le type de lock n'est pas disponible (par ex non démarré est échoue), lvmlockd n'est pas capable d'acquérir les locks pour les commandes LVM. Les commandes LVM qui lisent uniquement le VG vont généralement être autorisé à continuer sans locks dans ce cas. Les commandes pour modifier ou activer le VG vont échouer.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un \textbf{local VG} est utilisé par un simple hôte. Il n'a pas de type de lock ou un type 'none'. Les commandes LVM et lvmlockd n'effectuent pas de lock pour ces VG. Un VG local existe typiquement sur les périphériques locaux et ne peuvent pas être utilisés par différents hôtes.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si un VG local existe sur des périphériques partagés, il devrait être possédé par un simple hôte en ayant son system\_id définis. Seul l'hôte avec un system\_il correspondant peut utiliser le VG local. Un VG sans type de lock et sans system\_id devrait être exclus de tous sauf un hôte en utilisant les filtres lvm.conf. Sans protection, un VG local sur un périphérique partagé peut facilement être endommagé ou détruit.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un \textbf{VG clvm} est un VG sur un stockage partagé qui nécessite clvmd pour le clustering.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge VG lockés sur les hôtes n'utilisant pas lvmlockd }
 
\
 
\hspace{1mm}  Seul les hôtes qui utilisent les VG lockd devraient être configurés pour lancer lvmlockd. Cependant, les périphériques partagés utilisés par les VG lockd peuvent être visible aux hôte n'utilisant par lvmlockd. D'un hôte n'utilisant pas lvmlockd, les VG lockd sont ignorés de la même manière que les VG étranger. L'option --shared pour le reporting et les commandes d'affichage affichent les VG lockd sur un hôte n'utilisant pas lvmlockd, tout comme --foreign affiche les VG étranger.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Comparaison vgcreate }
 
\
 
\hspace{1mm}  Le type de contrôle d'accès VG est spécifié dans la commande vgcreate pour toutes les options vgcreate
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} vgcreate <vgname> <devices>]{Créé un VG local avec le system\_id local quand lvmlockd et clvm ne sont pas configurés}
\item[\hspace{1mm} ]{Créé un VG local avec le system\_id local quand lvmlockd est configuré}
\item[\hspace{1mm} ]{Créé un VG clvm quand clvm est configuré}
\item[\hspace{1mm} vgcreate --shared <vgname> <devices>]{Nécessite que lvmlockd soit configuré est fonctionnel}
\item[\hspace{1mm} ]{Créé un VG lockd avec le type de lock sanlock|dlm en fonction du gestionnaire de lock courant}
\item[\hspace{1mm} ]{Les commandes LVM nécessitent des locks de lvmlockd pour utiliser le VG}
\item[\hspace{1mm} ]{lvmlockd obtient les locks depuis le gestionnaire de lock sélectionné}
\item[\hspace{1mm} vgcreate -c|--clustered y <vgname> <devices>]{Nécessite que clvm soit configuré et fonctionnel}
\item[\hspace{1mm} ]{Créé un VG clvm avec le flag clustered}
\item[\hspace{1mm} ]{Les commandes LVM réclament les lockd à clvmd pour utiliser le VG}
\end{description}
 
\vspace{1cm}{\huge Créer le premier VG sanlock }
 
\
 
\hspace{1mm}  Créer le premier VG sanlock n'est pas protégé par le locking et nécessite une attention particulière. les sanlock existent dans le VG, donc ils ne sont pas disponible tant que le VG n'existe pas. Le premier sanlock VG contient le lock global.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Le premier vgcreate doit avoir le chemin vers un périphérique qui n'a pas été initialisé avec pvcreate. L'initialisation pvcreate nécessite le lock global, qui ne sera pas disponible tant que le premier sanlock VG n'est pas crée}
\item[\hspace{1mm} -]{En lançant vgcreate pour le premier sanlock VG, s'assurer que le périphérique utilisé n'est pas utilisé par une autre commande LVM. L'allocation de périphériques partagés est généralement protégé par le lock global, mais cela ne peut pas être fait pour le premier sanlock VG qui va maintenir le lock global}
\item[\hspace{1mm} -]{En lançant vgcreate pour le premier sanlock VG, s'assurer que le nom du VG n'est pas utilisé par une autre commande LVM. L'unicité des noms des VG est généralement assurée par le lock global.}
\item[\hspace{1mm} -]{Parce que le premier sanlock VG contient le lock global, ce VG doit être accessible à tous les hôtes qui utilisent les VG partagés avec sanlock. Tous les hôtes doivent utiliser le lock global depuis le premier VG sanlock.}
\end{description}
 
\vspace{1cm}{\huge Utiliser les VG lockd }
 
\
 
\hspace{1mm}  Il y a quelques considération spéciales en utilisant les VG lockd. Quand use\_lvmlockd est activé dans lvm.conf, puis le premier VG lockd est créé, il n'existe pas de lock global. Dans cet état initial, les commandes LVM tentent et échouent à acquérir le lock global, produisant une alert, et certaines commande sont désactivée. Une fois le premier VG lockd créé, le lock global sera disponible, et LVM sera pleinement opérationnel.
\vspace{5mm} \\
 
 
\hspace{1mm}  Quand un nouveau VG lockd est créé, son espace de lock est automatiquement démarré sur l'hôte qui l'a créé. Les autres hôte doivent lancer vgchange --lock-start pour démarrer le nouveau VG avant de pouvoir l'utiliser.
\vspace{5mm} \\
 
 
\hspace{1mm}  Depuis la commande vgs, les VG lockd sont indiqués par 's' dans le champ attr. Le type de lock et les arguments de lock peuvent être affichés avec \textbf{vgs -o+locktype,lockargs}
\vspace{5mm} \\
 
 
\hspace{1mm}  Les VG lockd doivent être démarrés et stoppé, , à la différence d'autres types de VG.
\vspace{5mm} \\
 
 
\hspace{1mm}  vgremove d'un VG lockd échoue si d'autres hôte ont le VG démarré. Lance vgchange --lock-stop <vgname> sur tous les autres hôtes avant un vgremove.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Démarrer et stopper les VG }
 
\
 
\hspace{1mm}  Démarrer un VG lockd (vgchange --lock-start) indique au gestionnaire de lock de démarrer (joindre) le lockspace pour le VG sur l'hôte où il est lancé. Les locks créés pour le VG sont disponibles pour les commandes LVM sur l'hôte. Avant qu'un VG soit démarré, seu les commandes LVM qui lisent/affichent le VG sont autorisés à continuer sans locks. En utilisant le type de lock sanlock, démarrer un VG peut prendre du temps.
\vspace{5mm} \\
 
 
\hspace{1mm}  Stopper un VG lockd (vgchange --lock-stop) indique au gestionnaire de stopper (quitter) le lockspace pour le VG sur l'hôte où il est lancé. Un VG ne peut pas être stoppé pendant qu'il a des LV actifs.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un VG lockd peut être démarré une fois que les points suivants soient vrai:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{lvmlockd est en cours de fonctionnement}
\item[\hspace{1mm} -]{le gestionnaire de lock est en cours de fonctionnement}
\item[\hspace{1mm} -]{Le VG est visible au système}
\end{description}
 
\hspace{1mm} Un VG lockd peut être stoppé si tous les LV sont désactivés. Tous les VG lockd peuvent être démarrés/stoppé en utilisant: \\
\hspace{1mm} \textbf{vgchange --lock-start} \\
\hspace{1mm} \textbf{vgchange --lock-stop} \\
\hspace{1mm} Les VG individuels peuvent être démarrés/stoppé en utilisant: \\
\hspace{1mm} \textbf{vgchange --lock-start <vgname> ...} \\
\hspace{1mm} \textbf{vgchange --lock-stop <vgname> ...} \\
\hspace{1mm} Pour que vgchange n'attende pas que le démarrage soit complété: \\
\hspace{1mm} \textbf{vgchange --lock-start --lock-opt nowait ...} \\
\hspace{1mm} lvmlockd peut être appélé directement pour stopper tous les lockspaces \\
\hspace{1mm} \textbf{lvmlockctl --stop-lockspaces} \\
 
\hspace{1mm}  Pour démarrer seulement les VG lockd sélectionnés, utiliser lvm.conf activation/lock\_start\_list. Quand défini, seul les VG nommés dans cette liste sont démarrés par vgchange. Si la liste n'est pas définie, tous les VG lockd visibles sont démarrés.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Démarrage et activation automatique }
 
\
 
\hspace{1mm} Les scripts ou programmes dans l'hôte qui démarrent automatiquement les VG utilisent l'option auto pour indiquer que la commande est lancée automatiquement par le système: \\
\hspace{1mm} \textbf{vgchange --lock-start --lock-opt auto [<vgname> ...]} \\
 
\hspace{1mm}  Sans configuration additionnelle, l'option auto n'a pas d'effet; tous les VG sont démarrés sauf restreint par lock\_start\_list
\vspace{5mm} \\
 
 
\hspace{1mm}  Cependant, quand activation/auto\_lock\_start\_list dans lvm.conf est définis, la commande de démarrage auto effectue une phase de filtrage supplémentaire pour tous les VG démarrés, en testant chaque nom de VG avec la liste auto\_lock\_start\_list. Cette directive définis les VG lockd qui seront démarré par la commande auto. Les VG lockd visible non incus dans la liste sont ignorés par la commande de démarrage auto. Si la liste est indéfinis, tous les noms de VG passent ce filtre.
\vspace{5mm} \\
 
 
\hspace{1mm}  auto\_lock\_start\_list permet à un utilisateur de sélectionner certains VG lockd qui devraient être démarrés automatiquement par le système. Pour utiliser l'auto activation des LV lockd, (voir auto\_activation\_volume\_list), le démarrage automatique les VG lockd correspondants sont nécessaire.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Lock interne }
 
\
 
\hspace{1mm}  Pour optimiser l'utilisation de LVM avec lvmlockd, il y'a 3 types de locks:
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge GL lock }
 
\
 
\hspace{1mm}  Le lock global est associé avec les informations globales. qui ne sont pas isolés à un seul VG. Cela inclus l'espace de nom VG global, le jeu de périphérique non-utilisés et les PV orphelins et les propriétés des PV orphelins. Le lock global est utilisé en mode partagé par les commandes qui lisent cette information, ou en mode exclusif par les commandes que la change.
\vspace{5mm} \\
 
 
\hspace{1mm}  La commande vgs acquière le lock global en mode partagé parce qu'il reporte la liste de tous les noms des VG.
\vspace{5mm} \\
 
 
\hspace{1mm}  vgcreate acquière le lock global en mode exclusif parce qu'il créé un nouveau nom VG, et prend un PV de la liste des PV non utilisés
\vspace{5mm} \\
 
 
\hspace{1mm}  Quand une commande LVM est donnée avec un tag, ou utilise select, il doit lire tous les VG pour correspondre au tag ou à la sélection, qui nécessite d'acquérir le lock global.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge VG lock }
 
\
 
\hspace{1mm}  Un lock VG est associé avec chaque VG. Il est obtenu en mode partagé pour lire le VG et en mode exclusif pour le changer. Ce lock sérialise l'accès au VG avec toutes les autres commandes LVM accédant au VG depuis tous les hôtes.
\vspace{5mm} \\
 
 
\hspace{1mm}  La commande vgs n'acquière le lock global que pour lire la liste de tous les noms VG, mais acquière le lock VG pour chaque VG avant de le lire.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge lock LV }
 
\
 
\hspace{1mm}  Un lock LV est acquis avant que le LV soit activé, et est relâché après que le LV soit désactivé. Si le lock LV ne peut pas être acquis, le LV n'est pas activé. Les locks LV sont persistant et restent en place une fois l'activation faite. Les locks GL et VG sont transitoires et sont maintenus seulement pendant une commande LVM.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Retentatives de lock }
 
\
 
\hspace{1mm}  Si une requête pour un lock GL ou VG échoue à cause d'un conflit de lock avec un autre hôte, lvmlockd retente automatiquement pendant un cour lapse de temps avant de retourner une erreur à la commande LVM. Si ces retentatives sont insuffisantes, la commande LVM va retenter toute la demande de lock un nombre de fois spécifié par global/lvmlockd\_retries avant d'échouer. Si une requête pour un lock LV échoue à cause d'un conflit de lock, la commande échoue immédiatemen.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Gérer le lock global dans les VG sanlock }
 
\
 
\hspace{1mm}  Le lock global existe dans un des VG sanlock. Le premier VG sanlock créé va contenir le lock global. Les VG sanlock suivant vont chacun contenir des locks global désactivés qui peuvent être activés ultérieurement si nécessaire.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le VG contenant le lock global doit être visible à tous les hôtes utilisant les VG sanlock. Cela peut être une raison de créer un petit VG sanlock, visible à tous les hôte, et dédié à maintenir ce lock global. Bien que non requis, cette stratégie peut éviter les problème si des VG sont déplacés ou supprimés.
\vspace{5mm} \\
 
 
\hspace{1mm}  La commande vgcreate acquière typiquement le lock global, mais dans le cas du premier VG sanlock, il n'y a pas de lock global à acquérir tant que le premier vgcreate n'est pas complété. Donc, créer le premier VG sanlock est un cas spécial qui ignore le lock global.
\vspace{5mm} \\
 
 
\hspace{1mm}  vgcreate pour un VG sanlock détermine qu'il est le premier à exister si aucun autre VG sanlock n'est visible. Il est possible que d'autre VG sanlock existent mais ne sont pas visible à l'hôte que lance vgcreate. Dans ce cas, vgcreate créé un nouveau VG sanlock avec le lock global activé. Quand l'autre VG sanlock avec le lock global apparaît, lvmlockd va voir plus d'un VG avec un lock global activé, et les commandes LVM vont reporter qu'il y a des locks global dupliqués.
\vspace{5mm} \\
 
 
\hspace{1mm} Si la situation se produit où plus d'un VG sanlock contient un lock global, le lock global devrait être désactivé manuellement dans tous sauf un avec la commande:
 
{\ttfamily
lvmlockctl --gl-disable <vgname>\\
}
\vspace{8mm}
 
\hspace{1mm} Un problème opposé peut se produire si le VG maintenant le lock global est supprimé. Dans ce cas, aucun lock global n'existe, et les commande LVM échouent à l'acquérir. Dans ce cas, le lock global doit être manuellement activé dans un des VG sanlock restant avec la commande:
 
{\ttfamily
lvmlockctl --gl-enable <vgname>\\
}
\vspace{8mm}
 
\hspace{1mm}  Un petit VG sanlock dédié pour maintenir le lock global peut éviter ce cas.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge LV lvmlock interne }
 
\
 
\hspace{1mm}  Un VG sanlock contient un LV caché appelé lvmlock qui maintient les locks sanlock. vgreduce ne peut pas supprimer le PV maintenant le LV lvmlock. Pour supprimer ce PV, changer le type de lock VG à none, lancer vgreduce, puis changer le type lock VG à sanlock. Similairement, pvmove ne peut pas être utilisé dans un PV utilisé par le LV lvmlock. Pour placer le LV lvmlock dans un périphérique spécifique, créer le VG avec seulement ce périphérique, puis utiliser vgextend pour ajouter d'autres périphériques.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge LV partagés }
 
\
 
\hspace{1mm}  Quand un LV est utilisé en concurrence par plusieurs hôtes, le LV peut être activé sur plusieurs hôtes en utilisant un lock partagé. Pour activer le LV avec un lock partagé: \textbf{lvchange -asy vg/lv}
\vspace{5mm} \\
 
 
\hspace{1mm}  Avec lvmlockd, une mode d'activation non-spécifié est toujours exclusif, par exemple, -ay vaut -aey.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si le type LV ne permet pas au LV d'être utilisé en concurrence par plusieurs hôtes, le lock d'activation partagé n'est pas permis et la commande lvchange va reporter une erreur. Les types LV qui ne peuvent pas être utilisés en concurrence depuis plusieurs hôtes sont les thin, cache, raid, mirror, et snapshot.
\vspace{5mm} \\
 
 
\hspace{1mm}  lvextend sur un LV avec des locks partagé n'est pas encore permis. Le LV doit être désactivé, ou activé exclusivement pour lancer lvextend.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Récupérer les locks sanlock des PV perdus }
 
\
 
\hspace{1mm}  L'approche générale est de changer le type de lock VG à none, puis remettre à sanlock. Cela recréé le LV lvmlock interne et les locks nécessaires. D'autres étapes peuvent être nécessaire pour gérer les PV manquants.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Erreurs système de lock }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} lvmlockd]{Si lvmlockd échoue ou est terminé pendant qu'il maintient les lock, les locks sont orphelins dans le gestionnaire de lock. lvmlockd peut être redémarré avec une options pour adopter les locks dans le gestionnaire de lock qui les maintenait depuis une instance précédente.}
\item[\hspace{1mm} dlm/corosync]{Si dlm ou corosync échoue, le système de clustering va isoler l'hôte en utilisant une méthode configuré dans le cluster. Les commandes LVM sur les autres hôtes ne pourront pas acquérir de lock tant que le procéssus de récupération n'est pas terminé.}
\end{description}
 
\vspace{1cm}{\huge Erreur de stockage sanlock }
 
\
 
\hspace{1mm}  Si le PV sous un LV lvmlock dans un VG sanlock est déconnecté, ne répond pas ou est trop lent, sanlock ne peut pas renouveler le bail pour les locks des VG. Après un certain temps, le bail expire, et les locks que l'hôte possède dans le VG peuvent être acquis par d'autres hôtes. Le VG doit être désactivé sur l'hôte avec le bail expiré avant que d'autres hôtes puissent acquérir les locks.
\vspace{5mm} \\
 
 
\hspace{1mm}  Quand le service sanlock détecte que le bail du stockage est perdu, il lance la commande lvmlockctl --kill <vgname>. Cette commande émet un message syslog indiquant que le bail du stockage est perdu pour le VG et les LV doivent être immédiatement désactivés.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si aucun LV n'est actif dans le VG, le lockspace avec un bail expiré est supprimé, et les erreurs sont reportés en tantant d'utiliser le VG. Utiliser lvmlockctl --drop pour effacer le lockspace gelé de lvmlockd.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si le VG a des LV actifs quand le lock est perdu, les LV doivent être rapidement désactivés avant que le bail lockspace n'expire. Une fois tous les LV désactivés, lvmlockctl --drop <vgname> efface le lockspace ede lvmlockd. Si tous les LV dans le VG ne sont pas désactivés dans les 40 secondes, sanlock réinitialise l'hôte en utilisant le watchdog local. La réinitialisation machine est effectivement une forme sévère de désactivation les LV avant de pouvoir être activés dans d'autres hôtes.
\vspace{5mm} \\
 
 
\hspace{1mm}  Dans le future, lvmlockctl kill pourra tenter automatiquement de forcer la désactivation des LV avant le que bail n'expire.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Erreur du service sanlock }
 
\
 
\hspace{1mm}  Si le service sanlock échoue pou quitte alors que le lockspace est démarré, le watchdog local réinitialise l'hôte. C'est nécessaire pour protéger les ressources d'application qui dépendent des bails sanlock.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Changer le nom du cluster dlm }
 
\
 
\hspace{1mm}  Quand un VG dlm est créé, le nom du cluster est sauvegardé dans les métadonnées du VG. Pour utiliser le VG, un hôte doit être dans le cluster dlm nommé. Si le nom change, ou le VG est déplacé dans un nouveau cluster, le nom du cluster dlm sauvegardé dans le VG doit également être changé.
\vspace{5mm} \\
 
 
\hspace{1mm} Pour voir le nom du cluster dlm dans le VG, utiliser \\
\hspace{1mm} \textbf{vgs -o+locktype,lockargs <vgname>} \\
\hspace{1mm} Pour changer le nom du cluster dlm dans le VG: \\
 
\hspace{6mm} - stopper le VG sur tous les hôte \\
\hspace{6mm} \textbf{vgchange --lock-stop <vgname>} \\
\hspace{6mm} - Changer le type de lock VG à none \\
\hspace{6mm} \textbf{vgchange --lock-type none <vgname>} \\
\hspace{6mm} - Changer le nom du cluster dlm sur l'hôte ou déplacer le VG dans le nouveau cluster. Le nouveau cluster dlm doit être actif sur l'hôte \\
\hspace{6mm} \textbf{cat /sys/kernel/config/dlm/cluster/cluster\_name} \\
\hspace{6mm} - Changer le type de lock VG à dlm qui définis le nouveau nom du cluster \\
\hspace{6mm} \textbf{vgchange --lock-type dlm <vgname>} \\
\hspace{6mm} Démarrér le VG sur les hôte qui l'utilisent \\
\hspace{6mm} \textbf{vgchange --lock-start <vgname>} \\
 
\hspace{1mm}  Pour changer le nom du cluster dlm dans le VG quand le nom du cluster dlm a déjà changé, ou le VG a déjà été déplacé dans un autre cluster:
\vspace{5mm} \\
 
 
\hspace{6mm} - S'assurer que le VG n'est pas utilisé par un hôte \\
\hspace{6mm} - Le nouveau cluster dlm doit être actif \\
\hspace{6mm} \textbf{cat /sys/kernel/config/dlm/cluster/cluster\_name} \\
\hspace{6mm} - Changer le type de lock VG à none \\
\hspace{6mm} \textbf{vgchange --lock-type none --force <vgname>} \\
\hspace{6mm} - Changer le type de lock à dlm \\
\hspace{6mm} \textbf{vgchange --lock-type dlm <vgname>} \\
\hspace{6mm} Démarrer le VG sur les hôtes qui l'utilisent \\
\hspace{6mm} \textbf{vgchange --lock-start <vgname>} \\
 
\vspace{1cm}{\huge Changer un VG local en VG lockd }
 
\
 
\hspace{1mm}  Tous les LV doivent être inactifs pour changer le type de lock. lvmlockd doit être configuré et en cours de fonctionnement.
\vspace{5mm} \\
 
 
\hspace{1mm} Changer un VG local en VG lockd avec la commande \\
\hspace{1mm} \textbf{vgchange --lock-type sanlock|dlm <vgname>} \\
\hspace{1mm} Démarrér le VG sur les hôte qui l'utilisent \\
\hspace{1mm} \textbf{vgchange --lock-start <vgname>} \\
 
\vspace{1cm}{\huge Changer un VG lockd en VG local }
 
\
 
\hspace{1mm}  Stopper le VG lockd sur tous les hôtes, puis lancer
\vspace{5mm} \\
\hspace{1mm}  Pour changer un VG d'un type lockd à un autre, le changer d'abord en un VG local, puis dans le nouveau type
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Changer un VG clvm en VG lockd }
 
\
 
\hspace{1mm} Tous les LV doivent être inactif pour changer le type de lock. Changer d'abord le VG clvm en VG local. Dans un cluster clvm en cours de fonctionnement, changer un VG clvm en VG local avec \\
\hspace{1mm} \textbf{vgchange -cn <vgname>} \\
\hspace{1mm} Si le cluster clvm n'est plus en cours de fonctionnement sur aucun nœud, des options supplémentaires peuvent être utilisées pour forcer le VG local \\
\hspace{1mm} \textbf{vgchange --config 'global/locking\_type=0 global/use\_lvmlockd=0' -cn <vgname>} \\
\hspace{1mm} Une fois le VG en local, suivre les étapes dans changer un VG local en un VG lockd. \\
 
\vspace{1cm}{\huge Limites des VG lockd }
 
\
 
\hspace{1mm}  Listes de ce qui ne fonctionne pas encore dans les VG lockd
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} -]{Créer un nouveau pool thin et un nouveau lv thin en une seule commande}
\item[\hspace{6mm} -]{Utiliser lvcreate pour créer des pools cache ou des LV cache (utiliser lvconvert)}
\item[\hspace{6mm} -]{Utiliser des origines externes pour les LV thin}
\item[\hspace{6mm} -]{Spliter les mirroirs est snapshots des LV}
\item[\hspace{6mm} -]{vgsplit}
\item[\hspace{6mm} -]{vgmerge}
\item[\hspace{6mm} -]{redimensionner un LV qui est actif dans le mode partagé sur plusieurs hôtes.}
\end{description}
 
\vspace{1cm}{\huge Changement lvmlockd depuis clvmd }
 
\
 
\hspace{1mm}  Bien que lvmlockd et clvmd sont des système entièrement différents, l'utilisation des commande LVM restent similaires. Les différences sont plus notables en utilisant l'option sanlock de lvmlockd. La différence d'utilisation visible entre les VG lockd avec lvmlockd et les VG clvm avec clvmd sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} -]{lvm.conf doit être configuré pour utiliser soit lvmvlockd (use\_lvmlockd=1) soit clvmd (locking\_type=3), mais pas les 2}
\item[\hspace{6mm} -]{vgcreate --shared créé un VG lockd, et vgcreate --clustered y créé un VG clvm}
\item[\hspace{6mm} -]{lvmlockd ajoute l'option pour utiliser sanlock pour le locking, évitant le besoin d'un cluster réseau.}
\item[\hspace{6mm} -]{lvmlockd utilise le mode d'activation exclusif par défaut quand le mode l'activation n'est pas spécifié. -ay signifie -aey}
\item[\hspace{6mm} -]{Les commandes lvmlockd s'appliquent toujours à l'hôte local, et n'a pas d'effet sur les hôte distants}
\item[\hspace{6mm} -]{lvmlockd fonctionne avec les pools thin et cache}
\item[\hspace{6mm} -]{lvmlockd fonctionne avec lvmetad}
\item[\hspace{6mm} -]{lvmlockd sauve le nom du cluster dans le VG lockd utilisant dlm}
\item[\hspace{6mm} -]{lvmlockd nécessite de démarrer/stopper les VG lockd avec vgchange --lock-start et --lock-stop}
\item[\hspace{6mm} -]{vgremove d'un VG sanlock peut échouer en indiquant que tous les hôtes ne sont pas stoppés dans le lockspace du VG}
\item[\hspace{6mm} -]{vgreduce ou pvmove d'un PV dans un VG sanlock échoue s'il maintient le LV lvmlock}
\item[\hspace{6mm} -]{lvmlockd utilise les retentatives lock au lieu de files d'attentes de lock}
\item[\hspace{6mm} -]{lvmlockd inclus des options de reporting VG lock\_type et lock\_args, et une options de reporting LV lock\_args pour voir les champs de métadonnées correspondants}
\item[\hspace{6mm} -]{Les les commande vgs, le 6ème champ, "s" pour "shared" est affiché pour les VG lockd}
\item[\hspace{6mm} -]{Si lvmlockd échoue ou est terminé pendant qu'il est en cours d'utilisation, les locks restent, mais sont orphelins dans le gestionnaire de lock. lvmlockd peut être redémarré avec une option pour adopter les locks orphelins depuis une précédente instance de lvmlockd.}
\end{description}
\end{flushleft}
\end{document}
