Dell Unity/VNX:從版本 5.5 u2 及更新版本開始,ESXi 主機上隨機暫時中斷連線和/或效能下降 (使用者可修正)
Summary: 負載過重的陣列、網路或光纖可能會減慢 ATS 命令的速度,使陣列在 ATS 命令上傳回 ESXi 未預期的比較錯誤檢查狀況。 由於 VMFS 活動訊號插槽上的此 ATS 比較錯誤,ESXi 主機會嘗試重新取得裝置的控制權。為此,主機會在保持 VMFS 的 LUN 上發出 SCSI 裝置重設。此 LUN 上的所有作用中 I/O 都會中止,且 SCSI 裝置會重設。連線能力暫時中斷會顯示在 VMkernel 記錄中。 ...
Symptoms
劇本:
- 主機升級至 ESXi 5.5 更新 2 或 ESXi 6.0
- 一或多個 ESXi 主機在短時間內失去與 VMFS 資料存放區的連線。資料存放區上的任何虛擬機器都可能當機或發生 I/O 錯誤。
- 由於 VMFS 活動訊號插槽上的原子測試與設定(ATS)比較錯誤,ESXi 主機嘗試透過在保持 VMFS 的 LUN 上發出 SCSI 裝置重設來重新取得對裝置的控制。
- 此 LUN 上所有作用中的 I/O 都會中止,而 SCSI 裝置也會重設。
- 連線能力暫時中斷會顯示在 VMkernel 記錄中。
NMP 和 PowerPath 均可能發生 ATS 錯誤比較。
在 /var/log/vmkernel.log 中會顯示指出類似此 ATS 比較錯誤的錯誤訊息:
2015-11-20T22:12:47.194Z cpu13:33467)ScsiDeviceIO: 2645: Cmd(0x439dd0d7c400) 0x89, CmdSN 0x2f3dd6 from world 3937473 to dev "naa.50002ac0049412fa" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0xe 0x1d 0x0.
其他可能發生的問題:
- 主機與 vSphere vCenter 的連線中斷
- 虛擬機器掛起進行 I/O 作業
Cause
此問題已出現在陣列、網路或光纖上,因為超載以致主機正在取消 I/O 要求。
數家陣列廠商 (包括 Dell) 在 ESXi 5.5u2 中導入的 ATS 活動訊號功能發生問題。
注意:根據 Broadcom (VMware) KB 326437 (外部連結), 此問題會影響 ESXi 版本 VMware ESXi 5.5.x 和 VMware ESXi 6.0.x,但並未提供所有特定版本,因此本 KB 假設所有 5.5u2 或更新版本的 ESXi 主機,以及所有 ESXi 6.0 版本都會受到影響。
主機通過在給定卷上定期對其檢測信號執行 I/O 來指示其活動狀態。因此,如果在一段時間內在主機的活動訊號插槽上未看到任何活動,則我們可以斷定主機已失去與磁碟區的連線。
ATS 活動訊號 I/O 的逾時值非常低,可能會導致主機中斷連線和應用程式中斷,進而導致磁碟連線中斷和/或主機效能下降。
然後,主機會在活動訊號插槽上註冊錯誤比較,並在發出重設時中止 LUN 上所有作用中的 IO。 此 LUN 上所有待處理的 I/O 都會失敗,且主機感應 8 (H:0x8 SCSI 重設)。
Resolution
如果發現此狀況,建議的暫時因應措施是停用 VAAI ATS 活動訊號機制。如需詳細資訊,請參閱 Broadcom (VMware) KB 326437(外部連結)。 停用 ATS 活動訊號機制會將主機還原至舊版模式。解決負載后,重新啟用 ATS 檢測信號機制。
請聯絡 VMware 以確認問題,或提供 ESXi emcgrab 與 vmsupport 以取得確認。只有在解決載入問題為止,才建議您停用 ESX 伺服器上的 VAAI ATS 活動訊號功能。
Additional Information
Unity 記錄可用來識別此特定類型的中止 (感應金鑰 = 0e、ASC = 1d、ASCQ = 00)
擷取的記錄中的記錄位置為:
若要檢查記錄,請解壓縮上述位置中的所有 c4_safe_ktrace.log* 記錄,然後尋找「SK = 0x0e, ASC/Q = 0x1d00」。
Linux 系統或類似系統的範例:
grep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.
如果沒有外移 ktrace 記錄,只需使用 zgrep:
zgrep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.