前几日,存储部门的同事要求我检查某个集群中所有ESX服务器的HBA卡状态,一般来说我们每台ESX服务器会配置2块双口HBA卡,使用每块卡的其中一个口连接到SAN交换机,再去做zone。因此,只要检测这些HBA卡的端口状态是否正常即可。

如果你的ESX服务器数量不多,完全可以通过vSphere Client一台台检查。但是如果你的集群里有100台ESX主机呢?下面是一个用PowerCLI5.0写的简单脚本进行自动化检测:

 
  
  1. $vmhosts = Get-VMHost -Location "你的集群名字" 
  2. foreach ( $vmhost in $vmhosts ){ 
  3.     $HBAs = Get-VMHostHBA -VMHost $vmhost 
  4.     foreach ($HBA in $HBAs){ 
  5.             $Result = $HBA.Device+","+$HBA.VMHost+","+$HBA.Status 
  6.             Add-Content c:\temp\HBA.csv -value $Result 
  7.     } 

此脚本可以实现对某个集群里所有的ESX服务器HBA端口进行检测,只要修改上边的中文为你得集群名字即可。

此脚本我在生产环境中已经使用过,没有发现问题。