Linux용 PowerPath: 재부팅 후 PowerPath가 시작되지 않으며 수동으로 시작해야 함
Summary: Linux용 PowerPath: 재부팅 후 PowerPath가 시작되지 않으며 수동으로 시작해야 합니다.
Symptoms
운영 체제: Red Hat Enterprise Linux 7.x, OEL 7.x 및 SLES 12
이는 Red Hat Enterprise Linux 5.x, 6.x 및 SLES 11 버전에는 적용되지 않습니다 .
EMC 소프트웨어: PowerPath for Linux 6.x
호스트 재부팅 후 PowerPath가 자동으로 시작되지 않습니다.
PowerPath는 아무 문제 없이 수동으로 시작할 수 있습니다.
PowerPath 서비스가 시작 및 중지될 때 boot.log에 오류가 기록되지 않습니다.
시스템이 재부팅된 후 서비스를 시작할 수 없기 때문에 PowerPath가 "초기화 오류"와 함께 실패하는 것을 볼 수 있습니다.
# 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
PowerPath는 시작할 때 몇 가지 검사를 한 후에 실제로 시작합니다. 그 중 하나는 PowerPath가 마지막으로 시작된 시간을 확인하는 것으로, 마커 파일의 사용 기간을 계산하여 확인합니다. 부팅 시 시스템 클록은 처음에 하드웨어 클록과 동기화됩니다. 그러나 호스트에 NTP 클라이언트가 구성되어 있는 경우 클라이언트가 시작되면 시스템 클록이 NTP 서버에서 업데이트됩니다.
하드웨어 클럭이 NTP 클럭의 클럭과 너무 많이 동기화되지 않은 경우, 일반적으로 훨씬 뒤처진 경우 문제가 발생합니다. 호스트 부팅 시 PowerPath는 NTP 클라이언트보다 훨씬 먼저 시작됩니다. 따라서 마커 파일의 사용 기간을 계산할 때 음수 값이 되고 PowerPath는 시작을 진행하지 않고 즉시 종료됩니다.
Resolution
해결 방법:
호스트에서 다음 명령을 사용하여 hwclock을 시스템 클록으로 업데이트합니다.
hwclock --systohc
이렇게 하면 호스트에서 하드웨어 시계가 정확한 시간으로 업데이트됩니다.
영구 수정:
이 문제는 PowerPath for Linux 6.3에서 해결될 예정입니다.
Additional Information
아래 명령을 실행하여 PowerPath가 마지막으로 시작된 시간을 확인할 수 있습니다.
systemctl status PowerPath.service
일반적으로 PowerPath가 마지막으로 활성화되었을 때의 시간 차이가 매우 크다는 것을 알 수 있습니다.
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)
------------------------------------------------------------------------------------------
찾을 수 있는 또 다른 방법은 PowerPath 시작 스크립트에서 enable '-x' 플래그입니다.
OEL 7.x의 경우 시작 스크립트는 다음과 같습니다.
/usr/lib/PowerPath/PowerPath
/etc/opt/emcpower/EMCpower.LINUX-6.1.0.00.00/enable
예:
# head -5 /usr/lib/PowerPath/PowerPath #!/bin/sh -x
호스트를 재부팅하면 로그가 boot.log에 캡처됩니다. 또한 last_boot 동일한 압축을 풀 수 있는 아래 명령을 실행합니다.
journalctl -b 0 > last_boot
위에서 수집한 아래의 자세한 로그에서 -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