当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Hyper-V:配置虚拟机的自动启动和引导顺序

作者:精品下载站 日期:2024-12-14 23:08:00 浏览:16 分类:玩电脑

Hyper-V:配置虚拟机的自动启动和引导顺序


在 Hyper-V 中,您可以在引导或重新启动主机操作系统时为虚拟机配置自动启动和关闭选项。在本文中,我们将展示如何配置 Hyper-V 主机在正常启动或关闭时应对虚拟机执行的操作,以及如何设置虚拟机的启动顺序。

配置 Hyper-V 虚拟机的自动启动和关闭操作

默认情况下,Hyper-V 主机在重新启动时会保存已注册虚拟机的状态。这意味着如果虚拟机在重新启动之前正在运行,Hyper-V 将自动启动它。自动启动设置是为每个虚拟机单独配置的。

运行 Hyper-V 控制台,打开任意 VM 的属性,然后转到“设置”->“自动启动操作”。可以使用三个选项来管理虚拟机的自动启动:

  • - 当主机启动时,虚拟机不会自动启动(无论主机重新启动之前其状态如何)

  • 如果服务停止时正在运行,则自动启动 - 仅当虚拟机在主机关闭/重新启动之前一直在运行时才会自动启动

  • 始终自动启动此虚拟机 - 始终在 Hyper-V 主机启动时启动此虚拟机。

最后一个选项还有一个可用参数 - 启动延迟。您可以在此处指定虚拟机的启动延迟时间(以秒为单位)。利用延迟,您可以管理虚拟机的启动顺序(例如,在启动具有 SQL Server 的 VM 之前启动域控制器),并减少由于依次启动多个 VM 而导致的磁盘存储负载。

[玩转系统] Hyper-V:配置虚拟机的自动启动和引导顺序

有趣的是,Windows Admin Center (WAC) 中还没有用于管理 Hyper-V 虚拟机自动启动的选项。

此外,在自动停止操作部分中,您可以设置在主机关闭或重新启动时对虚拟机执行的操作。

该设置意味着当虚拟机有时间正常关闭时,Hyper-V 主机会正确重新启动,这与紧急情况(意外断电、BSOD)不同。

  • 保存虚拟机状态 - 保存虚拟机的完整状态(包括其内存)。下次启动时,虚拟机将从此时恢复。请注意,您的磁盘上必须有额外的可用空间来保留 VM 内存(*.BIN 文件)。 guest OS未重启;

  • 关闭虚拟机 - 当 Hyper-V 主机关闭时,虚拟机也会停止(与物理计算机关闭的方式相同)。不保存虚拟机状态,来宾操作系统将通过完整的引导周期启动。在此模式下,虚拟机中运行的应用程序存在获取不一致数据的风险。

  • 关闭来宾操作系统 - 使用 Hyper-V 集成服务关闭来宾操作系统(正常关闭)。虚拟机中运行的所有应用程序都会停止,获得不一致数据的风险非常低。

[玩转系统] Hyper-V:配置虚拟机的自动启动和引导顺序

您可以使用 PowerShell 查看和更改 Hyper-V 虚拟机的自动启动和关闭设置。

显示所有虚拟机当前的启动和关闭设置:

Get-VM -VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction

[玩转系统] Hyper-V:配置虚拟机的自动启动和引导顺序

您可以使用AutomaticStartAction选项更改虚拟机的自动启动设置。其可能的值为

Nothing

,

StartIfRunning

,

Start

Get-VM -VMname lon-win10| Set-VM -AutomaticStartAction Start

您可以使用 PowerShell 在没有 GUI 的免费 Windows Hyper-V Server 主机上配置虚拟机设置。

要为除一个虚拟机之外的所有虚拟机(例如,具有 FSMO 角色的域控制器)设置启动延迟:

Get-VM -VMname * | Where-object -FilterScript {$_.vmname -notlike “lon-dc*”} | Set-VM -AutomaticStartDelay 90

使用 -AutomaticStopAction 选项,您可以设置虚拟机关闭设置(

Save

,

TurnOff

,

ShutDown

)。

Hyper-V 虚拟机的引导(启动)顺序

启动独立的 Hyper-V 主机时,管理员必须管理其上虚拟机的启动顺序。例如,您需要仅在域控制器可用后启动 Exchange VM,并在数据库服务器之后启动应用程序服务器。 Hyper-V 没有任何内置工具来管理虚拟机的启动顺序,除了启动延迟选项(

AutomaticStartDelay

)。

在最简单的情况下,您可以通过为虚拟机设置不同的启动延迟来配置虚拟机的启动顺序:

Get-VM -VMname lon-dc01| Set-VM -AutomaticStartDelay 0
Get-VM -VMname lon-exch1,lon-db01 | Set-VM -AutomaticStartDelay 90
Get-VM -VMname lon-rds01,lon-app01 | Set-VM -AutomaticStartDelay 180

另一种方法是使用 PowerShell 启动脚本依次启动虚拟机。在脚本中,您可以在启动下一个虚拟机之前设置延迟,并对虚拟机中应用程序或服务的可用性执行额外检查(以确保应用程序或服务已启动)。为了更方便,您可以使用标签将多个虚拟机加入一个组。例如,我为虚拟机设置了以下标签:

set-vm lon-dc01,lon-dc02 -Notes "Boot order 1"
set-vm lon-exch1, lon-db01 -Notes "Boot order 2"
set-vm lon-rds01,lon-app01 -Notes "Boot order 3"

[玩转系统] Hyper-V:配置虚拟机的自动启动和引导顺序

以下 PowerShell 脚本按特定顺序启动虚拟机,并使用 PowerShell cmdlet Test-NetConnection 对 VM 中的某些服务(TCP 端口)运行额外的可用性检查:

$VMtoStart = Get-VM | where notes -contains 'Boot order 1'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While (!(Test-NetConnection lon-dc01 -Port 445 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 2'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While ((Test-NetConnection lon-exch1 -Port 25 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 3'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}

然后添加 PowerShell 脚本以自动启动或使用任务计划程序运行它(不要忘记禁用使用此脚本启动的所有 VM 的自动启动)。请记住,默认情况下,Windows 中运行 PowerShell 脚本受到限制。如果需要,请签署 PS1 脚本或更改 PowerShell 脚本执行策略。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯