Windows Server 2016 卡在登入或是關機的階段

  • 時間發生點:2017 年 四月底五月初之間
  • OS:Windows Server 2016 Datacenter
  • 發生事件:
    • 叢集節點出現 Event Id 1146 RHS程序已終止

經過

起初,以為是叢集方面的設定有誤,以致於發生這樣的錯誤

透過微軟工程師的協助

蒐集了相關 Log:

  • Cluster log
    • 使用 Powershell 指令產生所有節點的 cluster log
    • Get-ClusterLog [-destination] [file location]
  • Event log
    • 蒐集所有節點的 Event Log。
    • 儲存位置 : C:\Windows\System32\winevt\Logs
  • ClusterDiagnosticInfo
    • 使用 Powershell 指令產生所有節點的 ClusterDiagnosticInfo
    • Get-ClusterDiagnosticInfo [-WriteToPath] [FileLocation]
  • Memory Dump

    • Memory Dump 設定

      • CrashDumpEnabled

        1
        2
        3
        4
        HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl
        Name:CrashDumpEnabled
        Data Type:REG_DWORD
        Data value:1
      • CrashOnCtrlScroll

        1
        2
        3
        4
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
        Name:CrashOnCtrlScroll
        Data Type:REG_DWORD
        Data value:1
      • After setting memory dump, restart computer

    • 在問題發生時手動產生 Dump
      • 重現問題,手動產生dump,將鍵盤右邊的 Ctrl 鍵按住不放、連續按 ScrollLock 鍵兩次。成功的話您將看到藍底白字當機畫面。
      • 檔案將產生於%SystemRoot%\MEMORY.DMP

結果

經微軟工程師從現有資料檢視到問題來自於

iSCSI initiator(cluster node) 持續向 storage 建立連線,但不明原因出現連線失敗的狀況,而這些 iSCSI thread 並未被 OS 清除,導致最後出現 server hang。

此問題已被微軟產品組判定為 bug,目前正針對此問題進行修正中。

自我檢視的部份,也確認是因為 iSCSI initiator 上有嘗試跟不存在的 iSCSI target 做連線,最後將那些清除後,問題解決!