在企业实际生产环境,尤其是部署了服务器虚拟化之后,配置虚拟机自动重启是一个很有必要的措施,即使当服务器出现问题或者计划内维护完成之后又能够自动重启虚拟机,亦可以减少宕机时间。
今天的文章主要介绍在Hyper-V环境中使用PowerShell配置虚拟机自动重启。
一、 使用Windows PowerShell查看尚未配置虚拟机自动重启
系统内置的PowerShell可以允许您查看虚拟机配置的哪种自动启动。而不是用鼠标右键VM选择设置查看,在HYPER-V主机上使用如下 PowerShell命令和使用Get VM cmdlet通过管道输送到选择对象:
1
|
Get-VM
–VMname * |
Select-Object
VMname,AutomaticStartAction
|
通过使用以上命令,我们不仅能查看其上承载的VM,并且显示是否配置为自动重启
能够发现当前主机上有两台虚拟机并且没有被配置为自动重启
二、 配置虚拟机自动重启
在Hyper-V中微软提供了三种VM自启动方式,即:
1) 无-不执行任何操作
2) 自动启动(如果当服务停止时它仍然运行)
3) 始终自动重启次虚拟机
当选择自动启动时,您也可以选择是否配置为延时启动。
使用以下命令配置某一台虚拟机为自动启动
1
|
Get-VM
–VMname BJ-VMM-01 |
Set-VM
–AutomaticStartAction Start
|
如果想设置Hyper-V服务器上所有的虚拟机为自动重启,使用如下命令
1
|
Get-VM
–VMname * |
Set-VM
–AutomaticStartAction Start
|
三、 配置虚拟机自动重启(延迟)
如果Hyper-V服务器上运行着关键性业务,如DC服务器、SQL服务器以及System Center服务器,由于存在相应的依赖环境,尚未启动SQL数据库服务,那么SCCM服务器的服务则无法启动,因此,您可以配置SQL数据自动重启,配置SCCM服务器延迟启动,并设置一个延迟时间(如120S)
1
|
Get-VM
–VMname BJ-SRV-01 |
Set-VM
–AutomaticStartDelay 120
|
使用如下命令查看已配置为延迟启动的虚拟机
1
|
Get-VM
–VMname * |
Select-Object
VMname,AutomaticStartAction,AutomaticStartDelay
|
四、 配置多Hyper-V主机上VM自动重启
在大型数据中心中,部署有大量的Hyper-V主机,那么登录到每一台主机配置为自动重启将是不现实的操作,那么同时多Hyper-V主机上启用虚拟机自动重启成为了一种需求。
1
|
Get-VM
–computername sysvh-33-202,sysvh-98-250 –VMname * |
Select-Object
VMname,AutomaticStartAction,AutomaticStartDelay
|
如果您有很多Hyper-V主机需要配置为虚拟机自启动,那么下面的也是一种配置方式
1
2
3
|
$hosts
= @{ComputerName =
"sysvh-33-201"
,
"sysvh-33-202
Get-VM @hosts –VMname * | Set-VM –AutomaticStartAction start
Get-VM @hosts –vmname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay"
}
|