PowerPath voor Linux: PowerPath start niet na opnieuw opstarten en moet handmatig worden gestart
Summary: PowerPath voor Linux: PowerPath start niet na opnieuw opstarten en moet handmatig worden gestart.
Symptoms
Besturingssysteem: Red Hat Enterprise Linux 7.x, OEL 7.x en SLES 12
Dit geldt niet voor versies van Red Hat Enterprise Linux 5.x, 6.x en SLES 11.
EMC-software: PowerPath for Linux 6.x
PowerPath wordt niet automatisch gestart na het opnieuw opstarten van de host.
PowerPath kan zonder problemen handmatig worden gestart.
Er worden geen fouten geregistreerd boot.log wanneer de PowerPath service wordt gestart en gestopt.
Nadat het systeem opnieuw is opgestart, ziet u dat de PowerPath mislukt met "Initialization Error" omdat de service niet kon worden gestart:
# 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
Bij het opstarten voert PowerPath in eerste instantie enkele controles uit voordat daadwerkelijk wordt gestart. Een daarvan is om te controleren wanneer PowerPath voor het laatst is gestart en dit wordt bepaald door de leeftijd van een markeringsbestand te berekenen. Bij het opstarten wordt de systeemklok in eerste instantie gesynchroniseerd met de hardwareklok. Als er echter een NTP-client op de host is geconfigureerd, wordt de systeemklok bijgewerkt vanaf een NTP-server wanneer die wordt gestart.
Het probleem doet zich voor als de hardwareklok te veel uit de pas loopt met die van de NTP-klok, meestal wanneer deze veel achterloopt. Bij het opstarten van de host begint PowerPath veel eerder dan de NTP-client. Wanneer het probeert te bepalen wanneer het de leeftijd van het markeringsbestand probeert te berekenen, is het dus een negatieve waarde en wordt PowerPath onmiddellijk afgesloten zonder verder te gaan met de start.
Resolution
Tijdelijke oplossing:
Werk de hwclock bij naar de systeemklok met behulp van de volgende opdracht op de host:
hwclock --systohc
Hiermee wordt de hardwareklok bijgewerkt naar de juiste tijd op de host.
Permanente oplossing:
Het probleem wordt opgelost in PowerPath voor Linux 6.3.
Additional Information
U kunt de onderstaande opdracht uitvoeren om de tijd te controleren waarop PowerPath voor het laatst is gestart:
systemctl status PowerPath.service
Gewoonlijk ziet u dat de laatste keer dat PowerPath actief was een enorm tijdsverschil heeft:
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)
------------------------------------------------------------------------------------------
Een andere manier om dit te vinden is de '-x'-vlag in het PowerPath opstartscript.
Voor OEL 7.x zijn de opstartscripts:
/usr/lib/PowerPath/PowerPath
/etc/opt/emcpower/EMCpower.LINUX-6.1.0.00.00/enable
Voorbeeld:
# head -5 /usr/lib/PowerPath/PowerPath #!/bin/sh -x
Nadat u de host opnieuw hebt opgestart, worden de logboeken vastgelegd in boot.log. Voer ook de onderstaande opdracht uit, waarbij last_boot het uittreksel hiervan hebt:
journalctl -b 0 > last_boot
In de onderstaande uitgebreide logs die hierboven zijn verzameld, zien we het tijdsverschil van -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