碰到一个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 : ResHardDiskArbitrate: Called to arbitrate for quorum device.
00001a48.00002124::2013/05/28-11:46:43.372 INFO  [RES] Physical Disk : ResHardDiskArbitrateInternal request Not a Space: Does not use FastPath
00001a48.00002124::2013/05/28-11:46:43.373 INFO  [RES] Physical Disk : ResHardDiskArbitrateInternal: Clusdisk driver handle or event handle is NULL.
00001a48.00002124::2013/05/28-11:46:43.373 INFO  [RES] Physical 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 : HardDiskpQueryDiskFromStm: ClusterStmFindDisk returned error=2147943568 <------------------ 这里是群集用拿到disk ID去访问磁盘时失败
00001a48.00002124::2013/05/28-11:46:43.376 ERR   [RES] Physical Disk : Failed to locate disk
00001a48.00002124::2013/05/28-11:46:43.376 ERR   [RES] Physical 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保留命令的。