Dans RHV, KVM Host utilise Sanlock pour détecter la connectivité avec le domaine de stockage. Lorsque Sanlock est activé, il ouvre le démon wdmd (démon de multiplexage de chien de garde) et envoie keepalive avec certains battements de cœur. sanlock IO vers le stockage ne se termine pas dans un délai fixé, sanlock arrête d'envoyer keepalive à wdmd. Lorsqu'il arrive à expiration, le démon wdmd contrôlant /dev/watchdog enregistre les erreurs, avertissant que le chien de garde n'est pas maintenu en vie et expirera bientôt, puis se déclenchera et réinitialisera l'hôte KVM.
$ systemctl status sanlock ● sanlock.service - Shared Storage Lease Manager Loaded: loaded (/usr/lib/systemd/system/sanlock.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2020-07-13 15:03:26 NZST; 1 months 19 days ago Process: 1041 ExecStart=/usr/sbin/sanlock daemon (code=exited, status=0/SUCCESS) Main PID: 1044 (sanlock) Tasks: 7 Memory: 18.6M CGroup: /system.slice/sanlock.service ├─1044 /usr/sbin/sanlock daemon └─1045 /usr/sbin/sanlock daemon Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
$ systemctl status wdmd ● wdmd.service - Watchdog Multiplexing Daemon Loaded: loaded (/usr/lib/systemd/system/wdmd.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2020-07-13 15:03:26 NZST; 1 months 19 days ago Process: 1131 ExecStart=/usr/sbin/wdmd (code=exited, status=0/SUCCESS) Process: 1112 ExecStartPre=/lib/systemd/systemd-wdmd watchdog-check (code=exited, status=0/SUCCESS) Main PID: 1133 (wdmd) Tasks: 1 Memory: 2.3M CGroup: /system.slice/wdmd.service └─1133 /usr/sbin/wdmd Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Le démon sanlock écrit en permanence dans le stockage à intervalle fixe pour renouveler ses baux. Sanlock marquera l'hôte KVM comme UNKNOWN, FREE, LIVE, FAIL et DEAD en fonction du résultat sanlock IO to storage.
inconnu :
L'hôte KVM a un bail sur le stockage, mais le clusterlock ne peut pas encore dire si l'hôte est actif ou mort. Cela durerait généralement de 10 à 20 secondes, mais il est possible que cela persiste jusqu'à 80 secondes avant que l'hôte KVM ne soit considéré comme actif ou défaillant.
Gratuit :
Il n'y a pas de bail pour cet identifiant d'hôte.
En direct :
L'hôte KVM a renouvelé son bail dans les 80 dernières secondes. Il peut renouveler son bail maintenant ou non, nous ne pouvons le dire qu'en vérifiant à nouveau plus tard.
Échec :
L'hôte n'a pas renouvelé son bail depuis 80 secondes. Durerait 60 secondes avant que l'hôte ne soit considéré comme mort. Lorsque l'état de l'hôte KVM est marqué comme "Échec", vous trouverez ci-dessous les journaux associés :
2020-08-31 21:35:01 1665117 [1044]: s1 check_our_lease warning 72 last_success 1665045 2020-08-31 21:35:02 1665118 [1044]: s1 check_our_lease warning 73 last_success 1665045 2020-08-31 21:35:03 1665119 [1044]: s1 check_our_lease warning 74 last_success 1665045 2020-08-31 21:35:04 1665120 [1044]: s1 check_our_lease warning 75 last_success 1665045 2020-08-31 21:35:05 1665121 [1044]: s1 check_our_lease warning 76 last_success 1665045 2020-08-31 21:35:06 1665122 [1044]: s1 check_our_lease warning 77 last_success 1665045 2020-08-31 21:35:07 1665123 [1044]: s1 check_our_lease warning 78 last_success 1665045 2020-08-31 21:35:08 1665124 [1044]: s1 check_our_lease warning 79 last_success 1665045 2020-08-31 21:35:09 1665125 [1044]: s1 check_our_lease failed 80 2020-08-31 21:35:10 1665125 [1044]: s1 all pids clear 2020-08-31 21:35:21 1665137 [3859]: 8d627013 aio timeout RD 0x7f56e00009b0:0x7f56e00009c0:0x7f56f0299000 ioto 10 to_count 4 2020-08-31 21:35:21 1665137 [3859]: s1 delta_renew read timeout 10 sec offset 0 /rhev/data-center/mnt/[mountpoint]/[SD_UUID]/dom_md/ids 2020-08-31 21:35:21 1665137 [3859]: s1 renewal error -202 delta_length 20 last_success 1665045
Mort :
L'hôte n'a pas renouvelé son bail depuis 140 secondes.
Si sanlock IO vers le stockage ne se termine pas dans un délai fixé, le démon sanlock entrera en récupération. La récupération commence avec le démon sanlock qui tente de tuer (SIGTERM) tous les pid utilisant des baux sur le stockage affecté. Si un pid ne sort pas après 10 SIGTERM sur 10 secondes, sanlock tentera alors de tuer (SIGKILL). Si les pids ne sortent toujours pas dans un délai fixé, le chien de garde se déclenchera, réinitialisant l'hôte. Si tous les pid se terminent dans le temps nécessaire, le chien de garde sera renouvelé et ne se déclenchera pas.