碰到一個hyper-v 3.0虛擬化平臺和HP儲存的相容性問題,放出來和大家分享一下。

平臺:windows server 2012 RTM+hyper-v 3.0


故障現象:


生產虛擬平臺宿主機意外重啟,且重啟後一塊儲存磁碟變成離線狀態,進一步測試發現宿主機上的2塊儲存盤均不能進行故障切換,只要一切換就會出現磁碟離線問題。


故障原因:


經過開case多次檢查群集的原始碼及抓包,最終發現是由於公司使用的EVAx400儲存與Win2012不太相容導致,必須升級EVA韌體版本。群集日誌中不能切換的原因是結點2無法讀取Cluster Disk 的資訊。我們發現其實結點2SCSI保留命令是成功寫上去的,但寫完後,我們去讀這個盤的分割槽資訊時裝置返回說裝置忙,無法讀取。

00001a48.00002124::2013/05/28-11:46:43.367 INFO  [RES] Physical Disk <Cluster Disk >: ResHardDiskArbitrate: Called to arbitrate for quorum device.
00001a48.00002124::2013/05/28-11:46:43.372 INFO  [RES] Physical Disk <Cluster Disk >: ResHardDiskArbitrateInternal request Not a Space: Does not use FastPath
00001a48.00002124::2013/05/28-11:46:43.373 INFO  [RES] Physical Disk <Cluster Disk >: ResHardDiskArbitrateInternal: Clusdisk driver handle or event handle is NULL.
00001a48.00002124::2013/05/28-11:46:43.373 INFO  [RES] Physical Disk <Cluster Disk >: HardDiskpQueryDiskFromStm: ClusterStmFindDisk returned device=`\?mpio#disk&ven_hp&prod_hsv400&rev_0005#1&7f6ac24&1&363031343338303544454441463830304330303042323030#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}`                    <—————— 這裡是SCSI的命令成功後返回了裝置
00001a48.00002124::2013/05/28-11:46:43.376 INFO  [RES] Physical Disk <Cluster Disk >: HardDiskpQueryDiskFromStm: ClusterStmFindDisk returned error=2147943568 <—————— 這裡是群集用拿到disk ID去訪問磁碟時失敗
00001a48.00002124::2013/05/28-11:46:43.376 ERR   [RES] Physical Disk <Cluster Disk >: Failed to locate disk
00001a48.00002124::2013/05/28-11:46:43.376 ERR   [RES] Physical Disk <Cluster Disk >: ResHardDiskArbitrate: Internal arbitration returned status 1168.

很有可能當初在分配儲存給宿主機時有個儲存選項選擇了windows server而不是windows 2008有關。因為windows server很可能代表的是2003SCSI永久保留是2的版本,而windows 2008的永久保留版本是320122008用的是SCSI3的永久保留。


故障解決:


在更新了儲存的韌體版本到最新,並調整了儲存的型別(作業系統型別由windows server調整為windows server 2008)後,該問題得到了解決。


最後,還有一點,我們在安裝MPIO的時候使用的是windows server 2012自帶的MPIO多路徑軟體,如果安裝的是HP的MPIO(支援windows server 2012)軟體,發現在驗證SCSI-3保留的時候,是通過不了的,而我們的EVA儲存型號是支援SCSI-3保留命令的。