PowerPath for Linux:PowerPath 在重新開機後無法啟動,必須手動啟動
Summary: PowerPath for Linux:PowerPath 在重新開機後無法啟動,必須手動啟動。
Symptoms
作業系統:Red Hat Enterprise Linux 7.x、OEL 7.x 和 SLES 12
這 不適用於 Red Hat Enterprise Linux 5.x、6.x 和 SLES 11 版本。
EMC 軟體:Linux 6.x 的 PowerPath
主機重新開機後,PowerPath 不會自動啟動。
PowerPath 可手動啟動,不會發生任何問題。
boot.log PowerPath 服務啟動和停止時,不會記錄任何錯誤。
系統重新開機後,您會看到 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
這會將主機上的硬體時鐘更新為正確的時間。
永久修正:
此問題將在 Linux 6.3 的 PowerPath 中修正。
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 啟動指令檔中啟用「-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