PowerPath för Linux: PowerPath startar inte efter omstart och måste startas manuellt
Summary: PowerPath för Linux: PowerPath startar inte efter omstart och måste startas manuellt.
Symptoms
Operativsystem: Red Hat Enterprise Linux 7.x, OEL 7.x och SLES 12
Detta gäller inte för versioner av Red Hat Enterprise Linux 5.x, 6.x och SLES 11.
EMC-programvara: PowerPath för Linux 6.x
PowerPath startar inte automatiskt efter att värden har startats om.
PowerPath kan startas manuellt utan problem.
Inga fel loggas boot.log när PowerPath-tjänsten startas och stoppas.
Efter omstart av systemet ser du att PowerPath misslyckas med "Initialization Error" eftersom tjänsten inte kunde starta:
# 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
När PowerPath startas har det några kontroller initialt innan det fortsätter med att starta. Ett sätt att kontrollera när PowerPath senast startades, och detta fastställs genom att beräkna åldern på en markörfil. Vid start synkroniseras systemklockan initialt från hårdvaruklockan. Men om en NTP-klient är konfigurerad på värden uppdateras systemklockan från en NTP-server när den startar.
Problemet uppstår om hårdvaruklockan är för mycket osynkroniserad med NTP-klockan, vanligtvis när den ligger mycket efter. Vid värdstart startar PowerPath mycket före NTP-klienten. När den försöker avgöra när den försöker beräkna markörfilens ålder är det därför ett negativt värde och PowerPath avslutas omedelbart utan att fortsätta med starten.
Resolution
Lösning:
Uppdatera hwclock till systemklockan med följande kommando på värden:
hwclock --systohc
Då uppdateras hårdvaruklockan till rätt tid på värden.
Permanent korrigering:
Problemet kommer att åtgärdas i PowerPath för Linux 6.3.
Additional Information
Med kommandot nedan kan du kontrollera tidpunkten då PowerPath senast startades:
systemctl status PowerPath.service
Vanligtvis ser du att den senaste gången när PowerPath var aktivt har en enorm tidsskillnad:
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)
------------------------------------------------------------------------------------------
Ett annat sätt att hitta den är aktiveringsflaggan -x i PowerPath-startskriptet.
För OEL 7.x är startskripten:
/usr/lib/PowerPath/PowerPath
/etc/opt/emcpower/EMCpower.LINUX-6.1.0.00.00/enable
Exempel:
# head -5 /usr/lib/PowerPath/PowerPath #!/bin/sh -x
När du startar om värden samlas loggarna in i boot.log. Kör även kommandot nedan där last_boot skulle ha extraktet av samma:
journalctl -b 0 > last_boot
I de utförliga loggarna nedan som samlades in ovan ser vi tidsfördröjningen - 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