PowerPath for Linux : PowerPath ne démarre pas après le redémarrage et doit être démarré manuellement
Summary: PowerPath for Linux : PowerPath ne démarre pas après le redémarrage et doit être démarré manuellement.
Symptoms
Système d'exploitation : Red Hat Enterprise Linux 7.x, OEL 7.x et SLES 12
Cela ne s’applique pas aux versions de Red Hat Enterprise Linux 5.x, 6.x et SLES 11.
EMC Software : PowerPath for Linux 6.x
PowerPath ne démarre pas automatiquement après le redémarrage de l’hôte.
PowerPath peut être démarré manuellement sans aucun problème.
Aucune erreur n’est consignée dans boot.log lorsque le service PowerPath démarre et s’arrête.
Après le redémarrage du système, PowerPath échoue avec l’erreur « Initialization Error », car le service n’a pas pu démarrer :
# powermt display dev=all ERROR: Cannot open PowerPath. Initialization error
# cat /var/log/boot.log |grep Power Starting PowerPath startup script... [ OK ] Stopped PowerPath startup script. <--- Starting PowerPath Management Daemon... Starting PowerPathPost startup script... [ OK ] Started PowerPathPost startup script. [ OK ] Started PowerPath Management Daemon.
Cause
Au démarrage, PowerPath effectue quelques vérifications avant de poursuivre son démarrage effectif. L’une d’entre elles consiste à vérifier la date du dernier démarrage de PowerPath. Cela est déterminé en calculant l’âge d’un fichier de marqueurs. Au démarrage, l’horloge système est initialement synchronisée à partir de l’horloge matérielle. Toutefois, si un client NTP est configuré sur l’hôte, l’horloge système est mise à jour à partir d’un serveur NTP lorsqu’il démarre.
Le problème se pose si l’horloge matérielle est trop désynchronisée avec celle de l’horloge NTP, généralement lorsqu’elle est très en retard. Lors du démarrage de l’hôte, PowerPath démarre bien avant le client NTP. Par conséquent, lorsqu’il tente de déterminer l’âge du fichier de marqueurs, la valeur est négative et PowerPath se ferme immédiatement sans avoir à démarrer.
Resolution
Solution de contournement :
Mettez à jour hwclock vers l’horloge système à l’aide de la commande suivante sur l’hôte :
hwclock --systohc
Cela met à jour l’horloge matérielle à l’heure correcte sur l’hôte.
Correctif permanent :
Ce problème sera résolu dans PowerPath for Linux 6.3.
Additional Information
Vous pouvez exécuter la commande ci-dessous pour vérifier l’heure à laquelle PowerPath a été démarré pour la dernière fois :
systemctl status PowerPath.service
Habituellement, la dernière fois que PowerPath était actif, vous constatez une énorme différence d’heure :
systemctl status PowerPath.service PowerPath.service - PowerPath startup script Loaded: loaded (/usr/lib/systemd/system/PowerPath.service; enabled; vendor preset: disabled) Active: inactive (dead) since Thu 2017-04-06 12:00:15 GET; 4h 0min ago Process: 2075 ExecStopPost=/usr/lib/PowerPath/PowerPath check_service_stop (code=exited, status=0/SUCCESS) Process: 1807 ExecStartPost=/usr/lib/PowerPath/PowerPath check_service_start (code=killed, signal=TERM) Process: 1665 ExecStart=/usr/lib/PowerPath/PowerPath start (code=exited, status=0/SUCCESS) Main PID: 1665 (code=exited, status=0/SUCCESS)
------------------------------------------------------------------------------------------
Une autre façon d’effectuer cette recherche consiste à activer la balise « -x » dans le script de démarrage de PowerPath.
Pour OEL 7.x, les scripts de démarrage sont les suivants :
/usr/lib/PowerPath/PowerPath
/etc/opt/emcpower/EMCpower.LINUX-6.1.0.00.00/enable
Exemple :
# head -5 /usr/lib/PowerPath/PowerPath #!/bin/sh -x
Une fois l’hôte redémarré, les journaux sont capturés dans boot.log. Exécutez également la commande ci-dessous où last_boot auriez l’extrait de la même :
journalctl -b 0 > last_boot
Dans les journaux détaillés ci-dessous qui ont été collectés ci-dessus, nous voyons le décalage temporel de -13991.
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: + '[' yes == yes -a -f /tmp/.pp_systemctl_check ']'
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: ++ date +%s
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: ++ date +%s -r /tmp/.pp_systemctl_check
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: + '[' -13991 -lt 5 ']'
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: + rm -f /tmp/.pp_systemctl_check
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: + /bin/true
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: + rc_exit
Apr 20 10:23:23 revdb1.mfg.ge PowerPath[1751]: + exit 0