В гипервизоре Hyper-V, как и в VMWare ESXi , вы можете настроить параметры автоматического запуска и выключения виртуальных машин при включении/перезагрузке хостовой ОС. В этой статье мы покажем, как настроить действия, которые должен выполнить хост Hyper-V с виртуальными машинами на нем при включении или корректном выключении, а также как задать порядок загрузки ВМ.
По умолчанию сервер Hyper-V при перезагрузке сохраняет состояние виртуальных машин на нем. Т.е. если ВМ была запущена до перезагрузки, Hyper-V запустит ее автоматически. Настройки автозапуска задаются персонально для каждой ВМ.
Запустите консоль Hyper-V, откройте свойства любой ВМ и перейдите в раздел Settings -> Automatic Start Action . Доступно три опции управления автозапуском виртуальной машины:
Для последней опции доступен еще один параметр – Startup Delay . Здесь можно указать задержку запуска для данной виртуальной машины (в секундах). С помощью такой задержки вы можете управлять порядком запуска виртуальных машин (например, включать контроллер домена перед запуском ВМ с SQL Server), а также снизить нагрузку на систему хранения, вызванную одновременным запуском множетсва ВМ).
Также в разделе Automatic Stop Action можете задать для виртуальных машин действие, которое нужно выполнить при выключении (перезагрузке) хоста.
Вы можете проверить и изменить настройки автозапуска и выключения виртуальных машин с помощью PowerShell.
Выведем текущие настройки запуска и остановки всех ВМ:
Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction
Вы можете изменить настройки автозапуска для ВМ с помощью опции AutomaticStartAction . Возможные значения (Nothing, StartIfRunning, Start).
Get-VM –VMname win10 | Set-VM –AutomaticStartAction Start
Чтобы установить задержку запуска для всех ВМ, кроме одной (например контролера домена с FSMO ролями ):
Get-VM –VMname * | Where-object –FilterScript {$_.vmname –notlike “msk-dc*”} | Set-VM –AutomaticStartDelay 90
С помощью параметра – AutomaticStopActio n соотвественно можно задать параметры выключения ВМ (Save, TurnOff,ShutDown)
При включении отдельностоящего хоста Hyper-V администратору необходимо управлять порядком запуска виртуальных машин. Например, вам нужно чтобы ВМ с Exchange загружалась только после загрузки контроллера домена, а сервер с приложением должен стартовать после db сервера. В Hyper-V нет встроенных инструментов управления порядком запуска виртуальных машин, кроме параметра задержки старта (AutomaticStartDelay).
В самых простых случаях вы можете настроить порядок загрузки ВМ, задав для них разные задержки запуска:
Get-VM –VMname dc01| Set-VM –AutomaticStartDelay 0
Get-VM –VMname exchange, db01 | Set-VM –AutomaticStartDelay 90
Get-VM –VMname rds01,app01 | Set-VM –AutomaticStartDelay 180
Другой вариант – вы можете стартовать ВМ по очереди с помощью стартап скрипта PowerShell. В таком скрипте можно задать задержку перед запуском следующей ВМ и выполнить дополнительные проверки доступности приложения или сервиса в ВМ (что убедиться что нужно приложение или служба запустились). Также для удобства можно объединить несколько ВМ в одну группу с помощью меток. Например, я задал такие метки для ВМ
set-vm dc01,dc02 -Notes "Boot order 1"
set-vm exchange1, db01 -Notes "Boot order 2"
set-vm rds01,app01 -Notes "Boot order 3"
Следующий PowerShell скрипт запускает виртуальные машины в определённом порядке, выполняя дополнительные проверки доступности определенных служб (TCP портов) в ВМ с помощью PowerShell командлета Test-NetConnection :
$VMtoStart = Get-VM | where notes -contains 'Boot order 1'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While (!(Test-NetConnection 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 exchange1 -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 скрипт в автозагрузку или запускать через задание планировщика (нужно не забыть отключить автоматический запуск всех ВМ, которые запускаются этим скриптом). Не забывайте, что в Windows запуск PowerShell скриптов по-умолчанию ограничен. Если нужно, подпишите этот PS1 скрипт или измените политику запуска PowerShell скриптов .
Некоторые пользователи, экспериментируя с конфигурацией системы в окне msconfig могут столкнуться с ситуацией, когда после…
На сайте не раз публиковались обзоры программ, предназначенных для очистки или настройки последних версий Windows.…
При установке некоторых обновлений Windows 11, имеющих в названии «Предварительный просмотр накопительного обновления», многие пользователи…
Некоторые пользователи Windows 11, 10 и предыдущих версий системы могут столкнуться с ситуацией, когда исполняемые…
При установке обновлений Windows 11/10 некоторые пользователи могут столкнуться с ошибкой с кодом 0x800705b4 и…
Пользователи Windows 11 могут столкнуться с сообщением «Обслуживание вашей версии Windows окончено» (Your version of…