7.9 KiB
title, type, tags, sources, updated
| title | type | tags | sources | updated | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| VirtualBox + Windows-гость — нюансы стабильности при cross-hypervisor миграции | concept |
|
|
2026-05-19 |
VirtualBox + Windows-гость: cross-hypervisor migration
Импорт OVA с Synology VMM (KVM-based) в VirtualBox прошёл через 3 круга проблем. Записано чтобы в следующий раз не танцевать. Касается snolla-recovery-vm.
Симптом исходный
OVA импортируется через VBoxManage import, VM стартует, Windows валится в WinRE ("Восстановление при загрузке не удалось восстановить компьютер"). Startup Repair не помогает.
Цепочка фиксов (применять по порядку)
1. Storage controller: SCSI LsiLogic → SATA AHCI
OVA с KVM-источника обычно имеет SCSI LsiLogic. Windows-гость не имеет встроенного boot-driver для VBox's LsiLogic emulation. SATA AHCI — generic, поддерживается любым Windows из коробки.
VBoxManage controlvm "<vm>" poweroff
VBoxManage storageattach "<vm>" --storagectl "SCSI" --port 0 --device 0 --medium none
VBoxManage storagectl "<vm>" --name "SCSI" --remove
VBoxManage storagectl "<vm>" --name "SATA" --add sata --controller IntelAhci --portcount 4
VBoxManage storageattach "<vm>" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "<vmdk-path>"
После этого Windows бутится дальше WinRE → доходит до login screen.
2. Hyper-V Virtualization Infrastructure Driver — disable в Safe Mode
После login Windows зависает в чёрный экран после Welcome. Виновник — Microsoft Hyper-V virtualization infrastructure driver, который остался от Synology VMM/KVM. Под VBox он не находит свой target hypervisor → виснет.
Доступ: жмёшь power → Shift+Restart → Recovery → Troubleshoot → Advanced Options → Startup Settings → Restart → 4 (Safe Mode) или 5 (Safe Mode with Networking).
В Safe Mode:
- Device Manager → Системные устройства → Драйвер инфраструктуры виртуализации Microsoft Hyper-V → правый клик → Отключить устройство (Disable, не удалять — потом можно вернуть).
- Параллельно почистить "Другие устройства" с жёлтыми треугольниками (audio-controller, base system device) — uninstall, без удаления драйверов.
Reboot нормально → Windows загружается до desktop.
3. Paravirt provider: default → kvm
После пары часов uptime VM начинает виснуть рандомно. Корень — несоответствие paravirt-интерфейса между source-гипервизором (Synology VMM = KVM) и VBox default (default/auto, который пытается подружиться с гостем но не угадывает).
VBoxManage modifyvm "<vm>" --paravirtprovider kvm
Windows-гость, который изначально загружал KVM paravirt drivers (virtio?), теперь под VBox видит знакомый интерфейс → стабильнее.
4. OS type: Other_64 → Windows10_64
VBox по умолчанию ставит OS type = Other/Unknown (64-bit) при импорте OVA с неузнанной маркировкой. Это означает дефолтные acceleration settings, которые могут не подходить Windows.
VBoxManage modifyvm "<vm>" --ostype Windows10_64
Включает VBox-внутренние оптимизации для Windows (HPET off, large pages on, и др.).
5. HPET off, vCPU 2 (а не 4), RAM 4 GB
- HPET (High Precision Event Timer) — для Windows-гостя на VBox чаще создаёт jitter чем помогает. Off:
VBoxManage modifyvm "<vm>" --hpet off - vCPU: 4 на 2-ядерном/4-ядерном хосте может создавать contention. Снизить до 2:
VBoxManage modifyvm "<vm>" --cpus 2 - RAM: 4 GB достаточно для IIS + CMS + Windows на легкой нагрузке.
6. Установить VirtualBox Guest Additions
Без GA Windows использует generic Microsoft драйверы для VBox-эмулированного железа. С GA — нативные оптимизированные VBox-драйверы для сети/видео/storage/устройств.
Установить через VRDE-консоль (mstsc к localhost:13389), а не через сетевой RDP — потому что сеть может умереть до установки GA.
Шаги:
- На хосте:
VBoxManage storagectl "<vm>" --name "IDE" --add ide --controller PIIX4(новый контроллер для DVD) VBoxManage storageattach "<vm>" --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium "C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso"- В VM: Win+E → D: drive → запустить
VBoxWindowsAdditions.exe→ Next/Install/доверять Oracle publisher → Restart.
После: GuestAdditionsRunLevel=3 (полностью активны). VM существенно стабильнее.
Network nuances
Bridged WiFi нестабильно
Если хост-машина подключена по WiFi и VBox NIC = bridged через WiFi adapter — частые проблемы с promiscuous mode. Симптомы:
- VM получает IP по DHCP
- Работает 10-60 минут
- Network "повисает": TCP-handshake проходит, но трафик не идёт
- ARP-table показывает MAC, но State=
Stale
Решение: NAT с port forwarding вместо bridged.
VBoxManage modifyvm "<vm>" --nic1 nat
VBoxManage controlvm "<vm>" natpf1 "rdp,tcp,127.0.0.1,23389,,3389"
VBoxManage controlvm "<vm>" natpf1 "ssh,tcp,127.0.0.1,8022,,22"
VBoxManage controlvm "<vm>" natpf1 "http,tcp,127.0.0.1,18080,,80"
# ...и так далее на нужные порты
VM получает 10.0.2.15 (default NAT subnet). Host достижим из VM по 10.0.2.2 (NAT gateway).
Network recovery inside Windows VM
Если внутри VM network "повис" (бывает даже с GA + NAT):
VBoxManage guestcontrol "<vm>" run --exe "C:\Windows\System32\cmd.exe" \
--username vitya --password '<pw>' --wait-stdout --wait-stderr \
-- cmd.exe /c "ipconfig /release && ipconfig /renew"
Через GA это работает не требуя SSH/RDP связи.
VRDE backup-доступ
Всегда включён в нашей конфигурации как fallback:
VBoxManage controlvm "<vm>" vrde on
VBoxManage controlvm "<vm>" vrdeport 13389
mstsc → localhost:13389 показывает VM-консоль независимо от состояния сети в VM. Полезно для recovery когда RDP в VM умер.
Что не сработало
- Hyper-V на хосте — рассматривался как cleaner альтернатива для Windows-гостя, но требует доустановки Hyper-V Manager и перезагрузки хоста. Отложено как Plan B, не понадобилось.
- VMware Workstation Pro 17 — бесплатен с 2024, но та же migration-головная боль на Windows-госте с другого гипервизора.
Связано: snolla-recovery-vm, windows-recovery-host.