Vagrant: Виртуальные машины Windows 10/11 выключаются примерно через 30 минут.

Вопрос или проблема

Я настраиваю хост с 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.

Успешное выполнение этих действий исключает множество простых причин, таких как сбои подключения и несанкционированные паузы.

Возможные причины и решения

  1. Конфигурация VirtualBox:

    • Версия VirtualBox: Убедитесь, что используемая версия VirtualBox совместима с вашими Windows боксами. Часто обновления содержат патчи для подобных проблем.
    • Настройки сети: Проверьте настройки сети на наличие возможных конфликтов, особенно если DHCP сервер выдает IP-адреса.
    • Логи VirtualBox: Посмотрите логи VirtualBox на предмет ошибок или предупреждений, которые могут детализировать причину выключения.
  2. Конфигурация Windows:

    • Энергетические схемы: Возможно, настройки энергии в VM отличаются от тех, что вы конфигурировали через Ansible. Попробуйте, например, запускать powercfg -l и убедитесь, что используется та схема, что вы настраивали.
    • Обновления Windows: Неправильные манипуляции с Windows Update могут в редких случаях приводить к нестабильности. Попробуйте использовать стандартные настройки и не полностью отключать обновления.
  3. Vagrant и бокс:

    • Обновление боксов: Проверьте, есть ли обновления боксам, которыми вы пользуетесь. Они могут содержать исправления этой проблемы.
    • Целостность боксов: Убедитесь, что образы боксов загружены корректно без повреждений.
  4. Физическая память и ресурсы хоста:

    • Убедитесь, что хостовая машина не испытывает дефицита ресурсов. Попробуйте увеличить выделение оперативной памяти или процессорных ядер для виртуальной машины.

Заключительные шаги

Если все предложенные выше способы не решают проблему, рассмотрите возможность:

  • Связаться с автором боксов или сообществом для получения специфичной информации.
  • Использовать альтернативные боксы, например, для корпоративных версий Windows, которые могут обладать улучшенной поддержкой в виртуализированных средах.
  • Проведение анализа на момент выключения с целью выявления конкретной цепочки операций, ведущих к завершению работы машины.

Проблемы с Vagrant и VirtualBox могут быть сложными, но с системным подходом к диагностике удается решить даже наиболее запутанные случаи. Будьте внимательны к журналам и настройкам, и успех не заставит себя ждать.

Оцените материал
Добавить комментарий

Капча загружается...