Вопрос или проблема
Я настраиваю хост с Windows 10/11 с помощью Vagrant+Ubuntu+VirtualBox. Использую следующие образы:
StefanScherer/windows_10
StefanScherer/windows_11
Код для машины, пример для Windows 10 (то же самое для других):
config.vm.define "win1" do |win1|
win1.vm.box = "StefanScherer/windows_10"
win1.vm.boot_timeout = 120
win1.vm.hostname = "win1"
win1.vm.communicator = "winrm"
win1.vm.network :private_network, ip: "192.168.56.4"
win1.winrm.port = 55986
win1.winrm.scheme = "http"
win1.winrm.ssl_peer_verification = false
win1.vm.boot_timeout = 300
Машина запускается хорошо, но через 30-60 минут переходит в статус «Power Off» (в «vagrant status» и в VBox GUI).
Я попытался отключить режим энергосбережения через провиженер Ansible:
- name: Disable suspend and sleep
ansible.windows.win_shell: |
powercfg /x -hibernate-timeout-ac 0
powercfg /x -hibernate-timeout-dc 0
powercfg /x -disk-timeout-ac 0
powercfg /x -disk-timeout-dc 0
powercfg /x -monitor-timeout-ac 0
powercfg /x -monitor-timeout-dc 0
powercfg /x -standby-timeout-ac 0
powercfg /x -standby-timeout-dc 0
Это работает. Я захожу в управление питанием и вижу там «Никогда». Но это не помогает.
После включения этих машин я вижу сообщение об обновлении Windows, ожидании и прогрессе, и отключаю обновления Windows с помощью PowerShell:
win1.vm.provision "shell", name: 'disable-updates', inline: <<-SHELL
$ErrorActionPreference = "SilentlyContinue"
Set-Location HKLM:/Software/Policies/Microsoft/Windows
New-Item WindowsUpdate
New-ItemProperty -Path WindowsUpdate -Name ElevateNonAdmins -Value 1 -Type DWORD
New-ItemProperty -Path WindowsUpdate -Name WUServer -Value "https://10.100.100.100:8530" -Type String
New-ItemProperty -Path WindowsUpdate -Name WUStatusServer -Value "https://10.100.100.100:8530" -Type String
Set-Location WindowsUpdate
New-Item AU
New-ItemProperty -Path AU -Name NoAutoUpdate -Value 0 -Type DWORD
New-ItemProperty -Path AU -Name AUOptions -Value 3 -Type DWORD
New-ItemProperty -Path AU -Name ScheduledInstallDay -Value 0 -Type DWORD
New-ItemProperty -Path AU -Name ScheduledInstallTime -Value 15 -Type DWORD
New-ItemProperty -Path AU -Name AutoInstallMinorUpdates -Value 1 -Type DWORD
New-ItemProperty -Path AU -Name UseWUServer -Value 1 -Type DWORD
SHELL
Я знаю, что обновления Windows не следует отключать, но я тестирую, как сделать так, чтобы виртуальная машина оставалась включенной, не переходя в состояние отключения.
Это тоже не помогло.
Но если я использую образы с Windows Server, такие как StefanScherer/windows_2019, виртуальная машина работает идеально. Много часов, без приостановки, сна или отключения.
В журналах событий я не вижу никаких ошибок или другой информации о выключении.
В чем причина такого поведения?
Ответ или решение
Решение проблемы с автоматическим выключением виртуальных машин Windows 10/11 в Vagrant
Если ваши виртуальные машины Windows 10/11, запущенные через Vagrant на базе Ubuntu с использованием VirtualBox, по истечении 30-60 минут автоматически переводятся в состояние "Power Off", существует несколько возможных причин и решений этой проблемы.
Анализ проблемы
Ваши шаги включают в себя:
- Использование боксов Windows 10/11 от Stefan Scherer.
- Настройка машин через Vagrant с использованием Windows Remote Management (WinRM).
- Попытки отключить экономию энергии с помощью Ansible и изменения конфигурации системных параметров через PowerShell.
Успешное выполнение этих действий исключает множество простых причин, таких как сбои подключения и несанкционированные паузы.
Возможные причины и решения
-
Конфигурация VirtualBox:
- Версия VirtualBox: Убедитесь, что используемая версия VirtualBox совместима с вашими Windows боксами. Часто обновления содержат патчи для подобных проблем.
- Настройки сети: Проверьте настройки сети на наличие возможных конфликтов, особенно если DHCP сервер выдает IP-адреса.
- Логи VirtualBox: Посмотрите логи VirtualBox на предмет ошибок или предупреждений, которые могут детализировать причину выключения.
-
Конфигурация Windows:
- Энергетические схемы: Возможно, настройки энергии в VM отличаются от тех, что вы конфигурировали через Ansible. Попробуйте, например, запускать
powercfg -l
и убедитесь, что используется та схема, что вы настраивали. - Обновления Windows: Неправильные манипуляции с Windows Update могут в редких случаях приводить к нестабильности. Попробуйте использовать стандартные настройки и не полностью отключать обновления.
- Энергетические схемы: Возможно, настройки энергии в VM отличаются от тех, что вы конфигурировали через Ansible. Попробуйте, например, запускать
-
Vagrant и бокс:
- Обновление боксов: Проверьте, есть ли обновления боксам, которыми вы пользуетесь. Они могут содержать исправления этой проблемы.
- Целостность боксов: Убедитесь, что образы боксов загружены корректно без повреждений.
-
Физическая память и ресурсы хоста:
- Убедитесь, что хостовая машина не испытывает дефицита ресурсов. Попробуйте увеличить выделение оперативной памяти или процессорных ядер для виртуальной машины.
Заключительные шаги
Если все предложенные выше способы не решают проблему, рассмотрите возможность:
- Связаться с автором боксов или сообществом для получения специфичной информации.
- Использовать альтернативные боксы, например, для корпоративных версий Windows, которые могут обладать улучшенной поддержкой в виртуализированных средах.
- Проведение анализа на момент выключения с целью выявления конкретной цепочки операций, ведущих к завершению работы машины.
Проблемы с Vagrant и VirtualBox могут быть сложными, но с системным подходом к диагностике удается решить даже наиболее запутанные случаи. Будьте внимательны к журналам и настройкам, и успех не заставит себя ждать.