В гипервизоре Hyper-V, как и в VMWare ESXi, вы можете настроить параметры автоматического запуска и выключения виртуальных машин при включении/перезагрузке хостовой ОС. В этой статье мы покажем, как настроить действия, которые должен выполнить хост Hyper-V с виртуальными машинами на нем при включении или корректном выключении, а также как задать порядок загрузки ВМ.
Содержание:
- Как настроить автоматический запуск/выключение виртуальных машин в Hyper-V?
- Порядок загрузки (запуска) виртуальных машин в Hyper-V
Как настроить автоматический запуск/выключение виртуальных машин в Hyper-V?
По умолчанию сервер Hyper-V при перезагрузке сохраняет состояние виртуальных машин на нем. Т.е. если ВМ была запущена до перезагрузки, Hyper-V запустит ее автоматически. Настройки автозапуска задаются персонально для каждой ВМ.
Запустите консоль Hyper-V, откройте свойства любой ВМ и перейдите в раздел Settings -> Automatic Start Action. Доступно три опции управления автозапуском виртуальной машины:
- Nothing – при загрузке хоста виртуальная машина не запускается автоматически (не зависимо от ее состояния до перезагрузки сервера);
- Automatically start if it was running when the service stopped – ВМ будет автоматически запущена только если она была включена до выключения хоста.
- Always start this virtual machine automatically – всегда включать данную виртуальную машину при загрузке хоста Hyper-V.
Для последней опции доступен еще один параметр – Startup Delay. Здесь можно указать задержку запуска для данной виртуальной машины (в секундах). С помощью такой задержки вы можете управлять порядком запуска виртуальных машин (например, включать контроллер домена перед запуском ВМ с SQL Server), а также снизить нагрузку на систему хранения, вызванную одновременным запуском множетсва ВМ).
Что интересно, в Windows Admin Center пока отсутствуют опции для управления автозагрузкой виртуальных машин Hyper-V.
Также в разделе Automatic Stop Action можете задать для виртуальных машин действие, которое нужно выполнить при выключении (перезагрузке) хоста.
Здесь подразумеваются не аварийные ситуации (отключение питания, падение в BSOD), а корректная перезагрузка хостовой ОС, когда у виртуальных машин есть время чтобы завершить работу.
- Save the virtual machine state – сохраняется полное состояние виртуальной машины (включая память). При следующем запуске эта ВМ продолжит работу с того же места. Здесь нужно иметь в виду, что на диске потребуется дополнительное свободное место для сохранения оперативной памяти ВМ (*.BIN файлы). Гостевая ОС при этом не перезагружается.
- Turn off the virtual machine – при завершении работы хоста Hyper-V такая виртуальная машина просто выключается (аналогия отключения питания на физическом компьютере). Состояние ВМ не сохраняется, гостевая ОС начинает полноценный цикл загрузки. В таком режиме есть риск получить неконсистентные данные в приложениях, запущенных внутри ВМ;
- Shutdown the guest operating system – выполняется штатное выключение гостевой ОС через службу интеграции Hyper-V (graceful shutdown). Все запущенные внутри ВМ приложения выключаются штатно, риск получить неконсистентные данные минимален.
Вы можете проверить и изменить настройки автозапуска и выключения виртуальных машин с помощью PowerShell.
Выведем текущие настройки запуска и остановки всех ВМ:
Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction
Вы можете изменить настройки автозапуска для ВМ с помощью опции AutomaticStartAction. Возможные значения (Nothing, StartIfRunning, Start).
Get-VM –VMname win10 | Set-VM –AutomaticStartAction Start
Вы можете использовать PowerShell для настройки параметров виртуальных машин на хосте с бесплатным Windows Hyper-V Server, на котором отсустует графический интерфейс.
Чтобы установить задержку запуска для всех ВМ, кроме одной (например контролера домена с FSMO ролями):
Get-VM –VMname * | Where-object –FilterScript {$_.vmname –notlike “msk-dc*”} | Set-VM –AutomaticStartDelay 90
С помощью параметра –AutomaticStopAction соотвественно можно задать параметры выключения ВМ (Save, TurnOff,ShutDown)
Порядок загрузки (запуска) виртуальных машин в Hyper-V
При включении отдельностоящего хоста 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 скриптов.
Хотя запуск виртуальных машин с помощью Hyper-V прост, выбрать конкретную виртуальную машину для автоматического запуска при запуске не так просто. Как в корпоративных, так и в персональных компьютерах запуск виртуальной машины независимо и/или последовательно с другими хостами может иметь решающее значение.
По умолчанию, когда хост-компьютер выключается, Hyper-V отслеживает, какие виртуальные машины работали во время выключения, и пытается перезапустить их сразу после перезагрузки хост-компьютера.
Действие автоматического запуска Hyper-V
Если вы редактируете настройки виртуальной машины, перейдите к действию «Автоматический запуск». Это позволяет настроить поведение виртуальной машины при загрузке ее хоста. Есть три возможности:
- Ничего : после загрузки хоста виртуальная машина останется в автономном режиме.
- Автоматический запуск, если он был запущен, когда служба остановлена: это ценная функция в тестовой лаборатории. Когда хост отключается, у вас может быть смесь виртуальных машин, которые либо работают, либо останавливаются. Если выбран этот параметр и виртуальная машина была запущена, когда узел был выключен, Hyper-V немедленно перезапустит виртуальную машину.
- Всегда запускать эту виртуальную машину автоматически: это параметр по умолчанию для производственных виртуальных машин. Вы хотите сократить время простоя, запуская виртуальную машину при запуске Hyper-V. Nota bene, есть дополнительная опция для задержки начала этого процесса на X секунд. Это позволяет управлять конкуренцией за ресурсы (в основном за пропускную способность хранилища) и планировать запуск виртуальных машин (например, запускать контроллер домена, затем SQL, сервер приложений и затем веб-сервер).
Знакомство с опцией «Задержка запуска»
Для запуска виртуальных машин Hyper-V функция задержки запуска очень полезна в виртуальных средах, состоящих из множества виртуальных машин и/или хост-машин. Двумя наиболее часто упоминаемыми причинами использования задержки запуска являются следующие:
1. Запуск компонентов системы в правильной последовательности
Запуск виртуальных машин и контроллеров в правильной последовательности требует правильного планирования, которое вы можете изменить с помощью параметра задержки запуска. Хотя вышеупомянутая функция «всегда запускать эту виртуальную машину» будет управлять запуском, если задержки запуска среди виртуальных машин/контроллеров не различаются, все они будут запускаться одновременно. Естественно, если корневой контроллер домена не будет запущен до дочернего контроллера домена, последний не сможет функционировать.
2. Сохранение системных ресурсов при запуске
Другая причина, по которой менее искушенный пользователь будет использовать задержку запуска, заключается в том, чтобы предотвратить использование диспетчером Hyper-V и виртуальными машинами оперативной памяти и вычислительной мощности на начальном этапе запуска. Это позволяет другим программам автозапуска работать быстрее, поскольку они будут иметь доступ к дополнительным системным ресурсам. Например, вы можете убедиться, что ваши приложения для защиты от вредоносных программ и мультимедиа работают до запуска виртуальной машины. Для отсрочки запуска виртуальной машины до загрузки всех других программ часто требуется 30-60-секундный период задержки, но вы можете определить точное значение, замерив время, необходимое для запуска всех ваших других программ при запуске.
Hyper-V автоматически останавливается.
Если вы просто отключите питание хоста или он выйдет из строя, виртуальные машины просто перестанут работать, как если бы вы также отключили для них питание. В результате вы всегда должны пытаться корректно завершать работу своих хостов для запуска виртуальных машин Hyper-V.
Изменяя варианты действия автоматической остановки в свойствах каждой виртуальной машины, вы можете настроить свои виртуальные машины так, чтобы они реагировали на это действие. Ниже перечислены три варианта, которые Hyper-V будет выполнять для каждой виртуальной машины перед выключением хоста:
1. Сохраните состояние виртуальной машины:
Этот параметр позволяет свести к минимуму время простоя виртуальной машины. Виртуальная машина заморожена во времени, при этом стек памяти и процессора записывается в файл, хранящийся вместе с виртуальной машиной. После завершения операции записи виртуальная машина завершает работу. Когда виртуальная машина загружается, она считывает этот файл и сразу же начинает выполнение, «волшебным образом» продолжая работу, как будто ничего не произошло. Гостевая ОС не требует загрузки, службы не требуют инициализации, а кэши не требуют повторного заполнения; все внутри виртуальной машины продолжается, как это было до остановки виртуальной машины.
2. Выключите виртуальную машину:
При выборе этого параметра виртуальная машина завершает работу. Государственной справки нет. Если/когда виртуальная машина будет перезапущена, гостевая ОС будет вести себя так, как если бы она потеряла питание. Вы будете использовать эту опцию на выбранных виртуальных машинах. Если вас не беспокоит состояние виртуальной машины и вам требуется более быстрое завершение работы хоста.
3. Завершите работу гостевой операционной системы:
Когда гостевая ОС виртуальной машины корректно завершает работу, хост-ОС также закрывается. Государственной охраны нет. Недостатком является то, что при перезагрузке хоста гостевой ОС и ее службам потребуется некоторое время для запуска. Если вы выберете этот вариант, вам следует подумать об отсрочке и заказе запуска виртуальных машин.
Существует предостережение относительно выбора сохранения состояния виртуальной машины. Если у вас есть виртуальные машины с общим объемом памяти 250 ГБ. Hyper-V потребуется записать до (около) 250 ГБ ОЗУ на диск, чтобы сохранить их состояния. Вы должны выделить дополнительные 250 ГБ дискового пространства сверх обычных требований к хранилищу виртуальных машин. Кроме того, вы должны знать, что Hyper-V создает файл .BIN для каждой виртуальной машины, чтобы убедиться, что это пространство доступно. В результате 250 ГБ тратятся даже во время работы виртуальной машины.
Вывод
В этом посте мы узнали о различных параметрах, доступных с «Действиями автоматического запуска» и «Действиями автоматической остановки» для каждой виртуальной машины, работающей на Hyper-V. Мы показали, как эти опции облегчают выполнение различных ИТ-сценариев в виртуальной среде. Кроме того, мы узнаем о логике, используемой службой управления виртуальными машинами Hyper-V (VMMS.exe). Для инициализации и запуска виртуальных машин настроен параметр «Действия при автоматическом запуске».
By default, Hyper-V doesn’t start the virtual machine when you log into your user account. However, if you want to allow Hyper-V to launch the virtual machine automatically at Windows startup, here is how you can do that. This post will also show you how to block Hyper-V from starting the virtual machine at startup.
Hyper-V mainly offers three launch options:
- Nothing: If you choose this option, Hyper-V won’t start the virtual machine when you start your computer.
- Automatically start if it was running when the service stopped: At times, we restart our computer suddenly when it freezes or hangs a lot. If Hyper-V was running when you restarted the computer, Hyper-V will run the virtual machine automatically when you start your PC.
- Always start this virtual machine automatically: If you choose this option, Hyper-V will start the virtual machine automatically at startup. Whether it was running when you restarted your PC or not, Hyper-V will start the selected virtual machine without any prior permission.
It is also possible to delay the start of the virtual machine. This helps when you want it to start automatically but wait for a few moments first. It is possible to set this up with the help of the Hyper-V Manager as well as PowerShell. We have mentioned both methods and you can follow either of them at your convenience. Before getting started, you must know that you can enable this setting for each virtual machine manually.
To make Hyper-V virtual machine launch automatically at startup on your Windows computer , follow these steps:
- Open Hyper-V Manager on your PC.
- Select a virtual machine.
- Click the Settings option.
- Switch to the Automatic Start Action tab.
- Choose Nothing to block.
- Choose Always start this virtual machine automatically to allow.
- Click the OK button.
To get started, open the Hyper-V Manager on your PC and select a virtual machine you created earlier. Then, click the Settings option visible on the right-hand side.
Alternatively, you can right-click on the virtual machine and select the Settings option from the context menu.
Then, switch to the Automatic Start Action tab on the left side. Here you can find all the options mentioned above. You need to choose Nothing to block Hyper-V from starting the virtual machine.
On the other hand, if you want to allow Hyper-V to start the virtual machine at startup, you must choose the Always start this virtual machine automatically option.
Once done, click the OK button to save the change. It is also possible to set the start delay. For that, you need to enter a value in seconds in the Startup delay box.
Stop Hyper-V from starting the virtual machine at startup using PowerShell
To stop Hyper-V from starting virtual machine at startup using PowerShell, follow these steps.
You need to open the PowerShell instance with administrator rights in Windows Terminal. For that, press Win+X, select Windows Terminal (Admin), and click the Yes button.
Then, enter this command:
Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction
It displays the VMName, which is mandatory to obtain in this case. However, if you already know the name, you can directly enter this command:
Set-VM -Name "VMName" -AutomaticStartAction Nothing
Don’t forget to replace VMName with the original virtual machine name.
However, if you want to start the virtual machine if it was running when you restarted your PC, you need to enter this command:
Set-VM -Name "VMName" -AutomaticStartAction StartIfRunning
On the other hand, if you want to allow Hyper-V to start the virtual machine all the time and irrespective of the earlier condition, the following command helps:
Set-VM -Name "VMName" -AutomaticStartAction Start -AutomaticStartDelay 0
It is possible to set the start delay by seconds. For that, you can replace 0 in the above command with the desired time.
How do I disable Hyper-V in BIOS?
You cannot find any option to disable Hyper-V in BIOS. Whether you use Windows 11, Windows 10, or anything else, there should not be an option in the BIOS, which relates to Hyper-V. You need to disable the Hyper-V from the Windows Features panel that you can open by searching for turn windows features on or off.
How do I disable Hyper-V?
To disable Hyper-V in Windows 11/10, you need to open the Windows Features panel first. For that, search for turn windows features on or off and click on the individual search result. Then, remove the tick from the Hyper-V checkbox and click the OK button. You might need to restart your computer.
That’s all! Hope this guide helped.
Read: How to import, export, or clone Virtual Machines in Hyper-V.
By default, Hyper-V doesn’t start the virtual machine when you log into your user account. However, if you want to allow Hyper-V to launch the virtual machine automatically at Windows startup, here is how you can do that. This post will also show you how to block Hyper-V from starting the virtual machine at startup.
Hyper-V mainly offers three launch options:
- Nothing: If you choose this option, Hyper-V won’t start the virtual machine when you start your computer.
- Automatically start if it was running when the service stopped: At times, we restart our computer suddenly when it freezes or hangs a lot. If Hyper-V was running when you restarted the computer, Hyper-V will run the virtual machine automatically when you start your PC.
- Always start this virtual machine automatically: If you choose this option, Hyper-V will start the virtual machine automatically at startup. Whether it was running when you restarted your PC or not, Hyper-V will start the selected virtual machine without any prior permission.
It is also possible to delay the start of the virtual machine. This helps when you want it to start automatically but wait for a few moments first. It is possible to set this up with the help of the Hyper-V Manager as well as PowerShell. We have mentioned both methods and you can follow either of them at your convenience. Before getting started, you must know that you can enable this setting for each virtual machine manually.
To make Hyper-V virtual machine launch automatically at startup on your Windows computer , follow these steps:
- Open Hyper-V Manager on your PC.
- Select a virtual machine.
- Click the Settings option.
- Switch to the Automatic Start Action tab.
- Choose Nothing to block.
- Choose Always start this virtual machine automatically to allow.
- Click the OK button.
To get started, open the Hyper-V Manager on your PC and select a virtual machine you created earlier. Then, click the Settings option visible on the right-hand side.
Alternatively, you can right-click on the virtual machine and select the Settings option from the context menu.
Then, switch to the Automatic Start Action tab on the left side. Here you can find all the options mentioned above. You need to choose Nothing to block Hyper-V from starting the virtual machine.
On the other hand, if you want to allow Hyper-V to start the virtual machine at startup, you must choose the Always start this virtual machine automatically option.
Once done, click the OK button to save the change. It is also possible to set the start delay. For that, you need to enter a value in seconds in the Startup delay box.
Stop Hyper-V from starting the virtual machine at startup using PowerShell
To stop Hyper-V from starting virtual machine at startup using PowerShell, follow these steps.
You need to open the PowerShell instance with administrator rights in Windows Terminal. For that, press Win+X, select Windows Terminal (Admin), and click the Yes button.
Then, enter this command:
Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction
It displays the VMName, which is mandatory to obtain in this case. However, if you already know the name, you can directly enter this command:
Set-VM -Name "VMName" -AutomaticStartAction Nothing
Don’t forget to replace VMName with the original virtual machine name.
However, if you want to start the virtual machine if it was running when you restarted your PC, you need to enter this command:
Set-VM -Name "VMName" -AutomaticStartAction StartIfRunning
On the other hand, if you want to allow Hyper-V to start the virtual machine all the time and irrespective of the earlier condition, the following command helps:
Set-VM -Name "VMName" -AutomaticStartAction Start -AutomaticStartDelay 0
It is possible to set the start delay by seconds. For that, you can replace 0 in the above command with the desired time.
How do I disable Hyper-V in BIOS?
You cannot find any option to disable Hyper-V in BIOS. Whether you use Windows 11, Windows 10, or anything else, there should not be an option in the BIOS, which relates to Hyper-V. You need to disable the Hyper-V from the Windows Features panel that you can open by searching for turn windows features on or off.
How do I disable Hyper-V?
To disable Hyper-V in Windows 11/10, you need to open the Windows Features panel first. For that, search for turn windows features on or off and click on the individual search result. Then, remove the tick from the Hyper-V checkbox and click the OK button. You might need to restart your computer.
That’s all! Hope this guide helped.
Read: How to import, export, or clone Virtual Machines in Hyper-V.
Спонсор статьи
Inferno Solutions: Администрируемые VPS в Украине по невероятно низким ценам! ISP Manager + 30$ на счет в качестве бонуса (код ISP+30) + переезд БЕСПЛАТНО!
Быстрее всего это можно сделать с помощью командлетов Windows PowerShell для Hyper-V, которые позволяют выполнять большинство действий с Hyper-V.
Вы можете указать что виртуальная машина должна либо никогда не использовать автозапуск, либо автоматически запускаться в случае непредвиденной остановки системы, либо всегда запускаться автоматически. Для указания опций используйте следующие параметры:
0: Никогда не использовать автозапуск
1: Автозапуск в случае остановки системы.
2: Всегда использовать автозапуск
Для установки необходимого параметра используем командлет set-vm c ключом -autostart :
Import-Module "c:Program FilesmodulesHyperVHyperv.psd1"
set-vm savdaldpm01 -autostart 0
Для установки данной настройки для всех виртуальных машин используйте такой командлет:
PS C:> get-vm | set-vm -autostart 0
-
Question
-
hello guys, how to auto start VMs when the host is restarted?
Thanks.
Every second counts..make use of it. Disclaimer: This posting is provided AS IS with no warranties or guarantees and confers no rights.
IT Stuff Quick Bytes
Answers
-
Hi,
open VM’s properties, navigate to Automatic Start action and select the ‘Always start …’ option.
http://OpsMgr.ru/
-
Marked as answer by
BrianEhMVP
Monday, July 27, 2015 3:37 PM
-
Marked as answer by
All replies
-
Hi,
open VM’s properties, navigate to Automatic Start action and select the ‘Always start …’ option.
http://OpsMgr.ru/
-
Marked as answer by
BrianEhMVP
Monday, July 27, 2015 3:37 PM
-
Marked as answer by
-
Hi Cguan,
Alexey is right.
Best Regards,
Leo
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Support, contact tnmff@microsoft.com.
-
Proposed as answer by
Florian Klaffenbach
Monday, July 27, 2015 10:22 AM
-
Proposed as answer by
-
Thank you guys..
Every second counts..make use of it. Disclaimer: This posting is provided AS IS with no warranties or guarantees and confers no rights.
IT Stuff Quick Bytes
-
Question
-
hello guys, how to auto start VMs when the host is restarted?
Thanks.
Every second counts..make use of it. Disclaimer: This posting is provided AS IS with no warranties or guarantees and confers no rights.
IT Stuff Quick Bytes
Answers
-
Hi,
open VM’s properties, navigate to Automatic Start action and select the ‘Always start …’ option.
http://OpsMgr.ru/
-
Marked as answer by
BrianEhMVP
Monday, July 27, 2015 3:37 PM
-
Marked as answer by
All replies
-
Hi,
open VM’s properties, navigate to Automatic Start action and select the ‘Always start …’ option.
http://OpsMgr.ru/
-
Marked as answer by
BrianEhMVP
Monday, July 27, 2015 3:37 PM
-
Marked as answer by
-
Hi Cguan,
Alexey is right.
Best Regards,
Leo
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Support, contact tnmff@microsoft.com.
-
Proposed as answer by
Florian Klaffenbach
Monday, July 27, 2015 10:22 AM
-
Proposed as answer by
-
Thank you guys..
Every second counts..make use of it. Disclaimer: This posting is provided AS IS with no warranties or guarantees and confers no rights.
IT Stuff Quick Bytes