Acpi qemuvgid windows 7 proxmox

dcsapak


  • #5

I had a problem starting the qemu-agent on Win7.

Install this solved the problem (after installing the qemu-agent, it just refused to start with error 1053. I had 3 unknown peripherals. Installing the drivers allowed the qemu agent to start)

I found online information nowhere. So I put this here, since it solved this issue.

Thanks to the previous posters for helping me too.

Then for those who did not find it, some other page pointed me to the last qemu agent:
New users cannot post links … So, search qemu-ga-win-7.6.2-2.el7ev on your preferred search tool to find the latest and working qemu guest agent.
which solved the NO IP address in the summary page with (the old) qemu-agent installed

Christian

Last edited:

  • #8

ouarf… Thank you… I did not see that they are not sorted per version.

  • #18

Last edited:

dcsapak

  • #5

I had a problem starting the qemu-agent on Win7.

Install this solved the problem (after installing the qemu-agent, it just refused to start with error 1053. I had 3 unknown peripherals. Installing the drivers allowed the qemu agent to start)

I found online information nowhere. So I put this here, since it solved this issue.

Thanks to the previous posters for helping me too.

Then for those who did not find it, some other page pointed me to the last qemu agent:
New users cannot post links … So, search qemu-ga-win-7.6.2-2.el7ev on your preferred search tool to find the latest and working qemu guest agent.
which solved the NO IP address in the summary page with (the old) qemu-agent installed

Christian

Last edited: Jun 25, 2019

  • #8

ouarf… Thank you… I did not see that they are not sorted per version.

  • #18

Last edited: Feb 14, 2022

Запуск Windows под Linux KVM

Задача: запустить некоторое количество виртуальных машин с Windows на типовом Линукс-сервере.

Решение: любой современный Linux-дистрибутив, «родная» технология виртуализации KVM, Windows 2003 и настройки, описанные ниже.

Выбор гостевой ОС

Windows XP работает под Linux KVM неустойчиво. Основные ошибки — потребление 100% процессора процессом csrss.exe (вплоть до обрыва RDP-сессий) и BSOD с кодом IRQL_NOT_LESS_OR_EQUAL в HAL.DLL. Если удалось достичь стабильной работы, обязательно отключите автоматическую установку обновлений! По нашему опыту, для работы WinXP под KVM они стали главным источником проблем.

Windows 7 работает нормально, но согласно счётчикам Proxmox, требует для работы более 3 гигабайт ОЗУ.

Для ознакомительных целей годится любой опубликованный на RuTracker дистрибутив.

Первый запуск и virtio

Теперь про самое важное на данном этапе, т.е. про диски.

После того, как установка системы и драйверов будет полностью завершена, в команде запуска следует убрать «-boot» и все строки «-drive», кроме первой, т.к. временный диск и ISO-образы станут не нужны (обратите внимание на добавленный » if=virtio «!):

Про пользу virtio, варианты настройки сети и параметры командной строки kvm читайте в habrahabr.ru/post/167099

Рекомендуемые настройки Windows

Во-первых, по умолчанию Windows создаёт при BSOD’ах полный дамп памяти. В лучшем случае, это существенно замедлит перезагрузку. В худшем, приведёт к полному зависанию.

Во-вторых, автоматические обновления по умолчанию включены, и есть риск, что одно из них сделает работу под KVM нестабильной.

После этого можете приступать к установке драйверов для диска (virt-stor) и сетевой карты (virt-net). После их установки в Диспетчере оборудования появятся «Red Hat VirtIO SCSI Controller», «Red Hat VirtIO SCSI Disk Device» и «Red Hat VirtIO Ethernet Adapter».

Ballooning

Традиционный подход — сразу при запуске виртуальной машины (ВМ) выделять ей блок ОЗУ заданного размера, например, 512 мегабайт. Его недостаток — в те моменты, когда в памяти ВМ есть неиспользуемое пространство, в других ВМ и хост-системе её может не хватать.

Memory ballooning — это механизм динамического (а) выделения хост-ОЗУ для ВМ по мере необходимости и (б) возвращения неиспользуемых блоков по мере освобождения. Благодаря ему становится возможным одновременно запускать множество ВМ, суммарный объём виртуального ОЗУ в которых больше объёма физического ОЗУ в хост-системе, при условии, что они не станут использовать максимально разрешённый объём все сразу. Благодаря этому память хост-системы распределяется между ВМ так же гибко, как между обычными процессами.

Создание виртуальных ресурсов, превышающих физические по объёму, обозначается любимыми для многих хостеров терминами «overcommit» и «overselling».

Гостевое устройство для связи с MOM диспетчер оборудования (devmgmt.msc) Windows увидит как «PCI standard RAM controller» неизвестного типа. В отличие от virt-stor и virt-net, драйвер к нему не будет предложено установить автоматически. Вместо этого, следует зайти в свойства устройства, на вкладке «Драйвер» выбрать обновление и вручную указать путь к balloon.inf на VirtIO CD (пруф). После этого устройство переименуется в «VirtIO Balloon Driver».

По умолчанию Windows 2003 разрешает выключать себя единственным способом — ввести логин-пароль, выбрать Пуск => «Завершение работы», ввести примечание, нажать «OK». Разумеется, на VDS-ферме такой подход неприемлем. KVM (и QEMU) умеет эмулировать ACPI. Команда «system_powerdown» аналогична нажатию кнопки питания на физическом компьютере, но Windows её проигнорирует. Лечится следующим REG-файлом:

Кэширование

Если образ гостевого диска хранится на VDS-ферме в виде файла, кэширование гостевых файлов может оказаться двойным — сначала их кэширует гостевая ОС при обращениях к виртуальному диску, затем ОС фермы при обращениях к физическому.

Все без исключения источники в Сети советуют не использовать writethrough как наиболее медленный. По субъективной оценке, для ВМ с Windows оптимален writeback, для ВМ с Linux и FreeBSD — none.

Зависания сети

Единственной серьёзной проблемой, которую однозначно вызывает ошибка в KVM, являются подвисания гостевой сети при интенсивном трафике: bugs.centos.org/view.php?id=5526 (кроме собственно описания ошибки, там же есть важные ссылки на другие багтрекеры).

Рекомендации, предлагаемые участниками обсуждений (обновление qemu-kvm и ядра, изменение параметров командной строки, использование vhost-net), к сожалению, пока не сумели её решить.

При каждом подвисании приходится заходить на консоль ВМ по VNC и выполнять сброс сетевого интерфейса, после чего трафик снова начинает ходить нормально.

Автоматизировать данное действие в Windows можно с помощью AutoIt, если создать файл PingFailed_ResetNic.au3 и вызывать его Диспетчером заданий каждые несколько минут:

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

Unknown device in Win7 VM

Raptor039

Member

since I upgraded my proxmox server to 5.3 and after installed a new Win7 VM, I’m facing with an issue. In the devices manager, a new uknown device appeared and for which there is no drivers found in the virtio driver iso.

It seems this new device (qemuvgid) is linked to a PVE new feature : VM Generation ID.

Thanks for your help.

Acpi qemuvgid windows 7 proxmox

dcsapak

Proxmox Staff Member

Best regards,
Dominik

tobby

Member

stephenvr

New Member

I stumbled upon this when I searched for the unknown device. But I couldn’t find a working solution. I tried for a while and found this solution:
1.) Download the Integration Services from Microsoft Download Center:

2.) Open a Powershell with Admin-rights
3.) Execute this:
Dism /online /Add-Package /PackagePath:C:packagespackage.cab
(You have to change the path to the path where you put the downloaded cab file)

Resolved my issue. Thanks for the post.

COMMARMOND Christian

New Member

I had a problem starting the qemu-agent on Win7.

Install this solved the problem (after installing the qemu-agent, it just refused to start with error 1053. I had 3 unknown peripherals. Installing the drivers allowed the qemu agent to start)

I found online information nowhere. So I put this here, since it solved this issue.

Thanks to the previous posters for helping me too.

Windows 7 64 bits signed VirtIO drivers

New Member

Hello again! as im going to build a proxmox ve 4.2 for a productive enviroment in a couple of days and started doing tests in order to smooth the transition from virtualbox in a old cpu, the first thing i need running in the new computer is a windows 64bits VM for a little MS SQL server database. (more details in this post https://forum.proxmox.com/threads/new-configuration-help.27881)

I would like to use Windows 7 64, but i can’t find signed VirtIO drivers anywhere, and the idea of signing those myself doesn’t seem so great.

so, i don’t know if i am missing something, maybe another win 7 64 distro? or another repository for virtio drivers? i tryed with the ones in here https://fedoraproject.org/wiki/Windows_Virtio_Drivers
Any help would be great!
Thx in advance.

Acpi qemuvgid windows 7 proxmox

Proxmox Staff Member

Best regards,
Tom

LnxBil

Famous Member
New Member

It only happened to me using windows 7 x64 VirtIO drivers during install. No problem with x86 drivers or with windows 8 and 10.

I will test using what tom linked and report back.

New Member

I followed the instructions to the letter and the same thing happened to me, i got the latest 0.1.118 and the stable version 0.1.102 from the repo and this is what i get when trying to instal the storage driver, the others are the same:

Acpi qemuvgid windows 7 proxmox

This is the VM config:
Acpi qemuvgid windows 7 proxmox

Acpi qemuvgid windows 7 proxmox

fireon

Famous Member

Best Regards
Fireon

New Member
New Member

kofik

Active Member

plittlefield

Member

I hope this is the correct thread to post my question as it seems the best match without starting a fresh thread.

I have been using the VirtIO 0.1.81 drivers for about a year with almost no issues.

However, now I am experiencing random crashes which is pointing to the VirtIIO driver.

I tried to update the Network driver first, to the stable version 0.1.102 (April 2015) but when I rebooted the Windows 7 Pro VM, the system had ‘lost’ the 2 network adapters.

Fortunately, I was able to «roll back» the driver to the previous working version.

So, my questions are:-

1. Is there a correct way to do this?
2. Should I be going for the latest driver 0.0.108-2 (June 2016) instead?
3. What about the other Balloon and Block drivers?

Thanks in advance.

Windows 7 Professional 64-Bit

proxmox-ve-2.6.32: 3.4-150 (running kernel: 2.6.32-37-pve)
pve-manager: 3.4-3 (running version: 3.4-3/2fc72fee)
pve-kernel-2.6.32-32-pve: 2.6.32-136
pve-kernel-2.6.32-37-pve: 2.6.32-150
lvm2: 2.02.98-pve4
clvm: 2.02.98-pve4
corosync-pve: 1.4.7-1
openais-pve: 1.1.4-3
libqb0: 0.11.1-2
redhat-cluster-pve: 3.2.0-2
resource-agents-pve: 3.9.2-4
fence-agents-pve: 4.0.10-2
pve-cluster: 3.0-16
qemu-server: 3.4-3
pve-firmware: 1.1-4
libpve-common-perl: 3.0-24
libpve-access-control: 3.0-16
libpve-storage-perl: 3.0-32
pve-libspice-server1: 0.12.4-3
vncterm: 1.1-8
vzctl: 4.0-1pve6
vzprocps: 2.0.11-2
vzquota: 3.1-2
pve-qemu-kvm: 2.2-8
ksm-control-daemon: 1.1-1
glusterfs-client: 3.5.2-1

Как подключить qemu-guest-agent на VM в Proxmox

Acpi qemuvgid windows 7 proxmox

Сегодня расскажу как подключить на виртуальную машину (ВМ) в Proxmox утилиту qemu-guest-agent для просмотра IP-адреса через WEB-интерфейс и правильной завершении работы ВМ.

Что такое qemu-guest-agent

qemu-guest-agent — это вспомогательный демон, который устанавливается в гостевой системе. Он используется для обмена информацией между хостом и гостем, а также для выполнения команды в госте.

В Proxmox VE qemu-guest-agent используется в основном для двух вещей:

Установка qemu-guest-agent

На Proxmox

Вы должны установить гостевой агент в каждой виртуальной машине, а затем включить его, вы можете сделать это в веб-интерфейсе Proxmox VE (GUI).

Acpi qemuvgid windows 7 proxmox

На Linux VM

В Linux вам нужно просто установить qemu-guest-agent.

Здесь мы покажем команды для систем на базе Debian/Ubuntu и Redhat:

В системах на Debian/Ubuntu выполняем следующие команды:

На системах на базе Redhat:

На Windows VM

Сначала вы должны скачать драйвер virtio-win iso (см. Windows VirtIO Drivers).

Затем установите драйвер virtio-serial:

После этого необходимо установить qemu-guest-agent:

После этого qemu-guest-agent должен быть запущен.

Если он не запущен, вы можете использовать панель управления Службами, чтобы запустить его и убедиться, что он запустится автоматически при следующей загрузке.

Acpi qemuvgid windows 7 proxmox

Настройка qemu-guest-agent в Linux

В зависимости от дистрибутива гостевой агент может не запускаться автоматически после установки. Для запуска воспользуемся следующими командами:

Проверка того, что связь с гостевым агентом работает

если qemu-guest-agent правильно запущен в виртуальной машине, он выдаст пустое сообщения.

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Acpi qemuvgid windows 7 proxmox

Если Вы здесь, значит у Вас возник вопрос: «Где лежат образы виртуальных машин в Proxmox». Привожу пример скриншота Proxmox 6.2: Читать

Acpi qemuvgid windows 7 proxmox

Сегодня давайте обсудим, как можно удалить виртуальную машину в Proxmox. Вы хотите удалить виртуальную машину в Proxmox? Мы можем помочь Читать

Acpi qemuvgid windows 7 proxmox

Сегодня рассмотрим пример переноса виртуальной машины с VirtualBox в KVM виртуализацию. Возможно, у вас есть несколько важных гостевых машин на Читать

Acpi qemuvgid windows 7 proxmox

Сегодня в статье рассмотрим пример устранения ошибки “You need to install openssh-askpass or similar to connect to this host» выдаваемой Читать

Paravirtualized Block Drivers for Windows

Contents

Introduction

In order to improve disk performance, special paravirtualized block drivers can be installed in Windows guests. You have to download and install those drivers in the VM, as Windows does not provides them by default.

Acpi qemuvgid windows 7 proxmox Note: Proxmox recommends using SCSI with VirtIO SCSI as SCSI Controller Type for VM disks, to have the most features and best performance.

VirtIO block may get deprecated in the future.

Download

You can download the latest stable Windows VirtIO drivers from: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso Older Windows Versions may sometimes need older VirtIO drivers. See Windows VirtIO Drivers for more info about the change log, guest OS compatibility and other useful VirtIO guest devices.

Upload the ISO through the Proxmox VE WebUI: Select a Storage which allows ISO images in the PVE WebUI and switch to Content tab where you can use the «upload» button on the menu bar.

You may also copy the ISO manually onto a PVE configured storage.

Installation

The goal to use VirtIO SCSI or Block (SCSI is recommended) to improve the performance and available features of (Windows) VMs. The way we do this depends if we want to change an already installed and running Windows VM or if we want to set this up during a Windows installation.

Setup On Running Windows

Here we add a temporary disk with the new wanted disk controller to the VM and install the respective drivers. The Windows OS in your VM knows nothing about VirtIO drivers, so you can’t simply stop the VM, change the disk to Vrtio-SCSI or VirtIO and reboot. You have to force Windows to install VirtIO drivers during it runs. To do this we add a small temporary SCSI-VirtIO or VirtIO disk to the VM and install its drivers explicitly. Without adding the Disk the installation of the driver is flawed under Windows, as driver installation of an not plugged in Hardware does not works.

Tested guest OS

Setup Steps

You should now be able to enter Windows «Disk Management» and format the temporary SCSI/VirtIO disk (this is not necessary, it just proves that the driver is installed and working).

(Legacy Note: Windows 2000 may report each disk 8 times in disk management, just install and use the first of each 8-tuple. In «My computer» you should see each disk only once.)

Windows has now the VirtIO SCSI/Block driver installed, and we need to re attach the VM disks as SCSI or virtio.

After finishing, through PVE web interface, you can:

Setup During Windows Installation

Download the VirtIO drivers as described above.

Set the drive type to SCSI (preferred) or VirtIO and the Network also to VirtIO for improved performance. Add a second IDE CDROM drive, in the first mount the Windows installer ISO and in the second the VirtIO driver ISO.

The Disks should now show up and you can continue with the installation process as usual.

Old VFD Method

Note: This is kept for legacy reasons, newer Windows versions (XP and newer) should use the above menthod.

You can add the block drivers during install by manually adding a virtual floppy drive (vfd) and a second IDE CDROM Drive (for network VirtIO) to the VM for the initial install (thanks to meto & user100 in the forum).

Download the VirtIO drivers as described above, upload VFD (for disks) and the ISO (for network) to PVE.

to add the VFD as virtual floppy to the VM.

Once windows starts to load, press F6 to get it to look for extra drivers to load. It will automatically load the floppy & away you go.

Note that older VirtIO drivers aren’t signed by Windows, so you need to tell the system to continue to load the drivers on a warning.

Источники информации:

  • http://forum.proxmox.com/threads/unknown-device-in-win7-vm.49698/
  • http://forum.proxmox.com/threads/windows-7-64-bits-signed-virtio-drivers.27883/
  • http://obu4alka.ru/qemu-guest-agen-vm-proxmox.html
  • http://pve.proxmox.com/wiki/Paravirtualized_Block_Drivers_for_Windows

Вам также понравится

Время на прочтение
7 мин

Количество просмотров 133K

Задача: запустить некоторое количество виртуальных машин с Windows на типовом Линукс-сервере.

Решение: любой современный Linux-дистрибутив, «родная» технология виртуализации KVM, Windows 2003 и настройки, описанные ниже.

Смотри также: вводную часть статьи по настройке KVM-контейнеров для FreeBSD.

Выбор гостевой ОС

Windows XP работает под Linux KVM неустойчиво. Основные ошибки — потребление 100% процессора процессом csrss.exe (вплоть до обрыва RDP-сессий) и BSOD с кодом IRQL_NOT_LESS_OR_EQUAL в HAL.DLL. Если удалось достичь стабильной работы, обязательно отключите автоматическую установку обновлений! По нашему опыту, для работы WinXP под KVM они стали главным источником проблем.

Windows 7 работает нормально, но согласно счётчикам Proxmox, требует для работы более 3 гигабайт ОЗУ.

Оптимальным вариантом оказалась 32-разрядная редакция Windows 2003 R2:

  • работает надёжно, в т.ч. с virtio,
  • проблем совместимости с XP не имеет (даже внешний вид может быть сделан таким же),
  • занимает в ОЗУ менее 800 мегабайт.

Верхнего лимита в 4 гигабайта памяти (без PAE) оказалось достаточно для всех возникавших задач.

Для ознакомительных целей годится любой опубликованный на RuTracker дистрибутив.

Первый запуск и virtio

#!/bin/sh
VM_ID="10"

MACBASE="00:16:3e:ff:ff"

HDA="vm_${VM_ID}.img"
HDB="temp.img"
HDC="w2k3_r2_ent_rus_x86/ru_win_srv_2003_r2_enterprise_with_sp2_vl_cd1_X13-46484.iso"
HDD="virtio-win-0.1-52.iso"

sudo kvm 
-enable-kvm 
-boot "menu=on,order=d" 
-m 1024M 
-balloon virtio 
-name "kvm_${VM_ID}" 
-drive "file=$HDA,index=0,media=disk,cache=writeback" 
-drive "file=$HDB,index=1,media=disk,cache=writeback,if=virtio" 
-drive "file=$HDC,index=2,media=cdrom,cache=writeback,readonly" 
-drive "file=$HDD,index=3,media=cdrom,cache=writeback,readonly" 
-net "nic,model=virtio,macaddr=${MACBASE}:${VM_ID}" 
-net "tap,ifname=tap${VM_ID},script=no,downscript=no" 
-vnc "0.0.0.0:${VM_ID}"

Параметр «-vnc …» имеет смысл только на сервере без GUI. По умолчанию KVM откроет окно через SDL. В обоих случаях Ctrl+Alt+Shift+1 и Ctrl+Alt+Shift+2 служат для переключения внутри окна между гостевой и управляющей консолью.

Параметр «-net nic,model=virtio,...» создаст внутри ВМ сетевую карту неизвестного Windows типа, для которого мастер настройки оборудования предложит выбрать драйвер. Парный ему параметр «-net tap,...» создаст в хост-ОС сетевой интерфейс для связи с ВМ. Назначение IP-адресов, настройка DHCP и выхода во внешний мир через ProxyARP, NAT или Bridge не имеют прямого отношения к Windows, поэтому здесь не рассматриваются.

Теперь про самое важное на данном этапе, т.е. про диски.

HDC — это ISO-образ с дистрибутивом Windows. Имя файла взято из торрента в предыдущем разделе. С него внутри ВМ произойдет первая загрузка системы («-boot order=d«).

HDD — это ISO-образ с драйверами virtio. Скачивается с alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin

HDA — это пустой образ диска, на который будет устанавливаться система. Создан командой «kvm-img create -f qcow2 vm_10.img 50G«.

HDB — это пустой образ диска, созданный через «kvm-img create -f qcow2 temp.img 1G» с единственной целью — показать Windows устройство незнакомого типа, чтобы она затребовала драйвер для него. Установка в систему драйвера virtio для временного диска позволит переключить затем с IDE на virtio системный диск.

После того, как установка системы и драйверов будет полностью завершена, в команде запуска следует убрать «-boot» и все строки «-drive», кроме первой, т.к. временный диск и ISO-образы станут не нужны (обратите внимание на добавленный «if=virtio«!):

kvm ...  -drive "file=$HDA,index=0,media=disk,cache=writeback,if=virtio" ...

Про пользу virtio, варианты настройки сети и параметры командной строки kvm читайте в habrahabr.ru/post/167099

Рекомендуемые настройки Windows

Во-первых, по умолчанию Windows создаёт при BSOD’ах полный дамп памяти. В лучшем случае, это существенно замедлит перезагрузку. В худшем, приведёт к полному зависанию.

Во-вторых, автоматические обновления по умолчанию включены, и есть риск, что одно из них сделает работу под KVM нестабильной.

Поэтому после завершения инсталляции в самую первую очередь (до установки драйверов!) рекомендуется зайти в Панель управления => Система:

  • Автоматическое обновление: Отключить
  • Дополнительно => Отчет об ошибках => Отключить
  • Дополнительно => Загрузка и восстановление => Параметры => Отказ системы => Запись отладочной информации => Малый дамп памяти (64КБ)

Настройки TCP/IP не являются обязательными, но немного повысят производительность, т.к. в виртуальной среде отсутствуют некоторые проблемы, которые нужно учитывать при передаче по физической сети.

Описание: www.linux-kvm.org/page/WindowsGuestDrivers/kvmnet/registry

Готовый REG-файл: svn1.sytes.net/linuxkvm/tune-guest-tcpip.reg

После этого можете приступать к установке драйверов для диска (virt-stor) и сетевой карты (virt-net). После их установки в Диспетчере оборудования появятся «Red Hat VirtIO SCSI Controller», «Red Hat VirtIO SCSI Disk Device» и «Red Hat VirtIO Ethernet Adapter».

Ballooning

Традиционный подход — сразу при запуске виртуальной машины (ВМ) выделять ей блок ОЗУ заданного размера, например, 512 мегабайт. Его недостаток — в те моменты, когда в памяти ВМ есть неиспользуемое пространство, в других ВМ и хост-системе её может не хватать.

Memory ballooning — это механизм динамического (а) выделения хост-ОЗУ для ВМ по мере необходимости и (б) возвращения неиспользуемых блоков по мере освобождения. Благодаря ему становится возможным одновременно запускать множество ВМ, суммарный объём виртуального ОЗУ в которых больше объёма физического ОЗУ в хост-системе, при условии, что они не станут использовать максимально разрешённый объём все сразу. Благодаря этому память хост-системы распределяется между ВМ так же гибко, как между обычными процессами.

Создание виртуальных ресурсов, превышающих физические по объёму, обозначается любимыми для многих хостеров терминами «overcommit» и «overselling».

Для работы баллонинга требуется согласованная работа двух программных компонентов:

  • MOM (memory overcommitment manager) в хост-системе, меняющего объём ОЗУ для ВМ на основании запросов из неё,
  • VMM (менеджера виртуальной памяти) в гостевой ОС, взаимодействующего с MOM через виртуальный PCI-контроллер.

MOM в последних версиях KVM включается автоматически, старые требовали включать его с помощью «kvm… -balloon virtio» в командной строке.

Гостевое устройство для связи с MOM диспетчер оборудования (devmgmt.msc) Windows увидит как «PCI standard RAM controller» неизвестного типа. В отличие от virt-stor и virt-net, драйвер к нему не будет предложено установить автоматически. Вместо этого, следует зайти в свойства устройства, на вкладке «Драйвер» выбрать обновление и вручную указать путь к balloon.inf на VirtIO CD (пруф). После этого устройство переименуется в «VirtIO Balloon Driver».

ACPI

По умолчанию Windows 2003 разрешает выключать себя единственным способом — ввести логин-пароль, выбрать Пуск => «Завершение работы», ввести примечание, нажать «OK». Разумеется, на VDS-ферме такой подход неприемлем. KVM (и QEMU) умеет эмулировать ACPI. Команда «system_powerdown» аналогична нажатию кнопки питания на физическом компьютере, но Windows её проигнорирует. Лечится следующим REG-файлом:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciessystem]
"ShutdownWithoutLogon"=dword:00000001
"DisableCAD"=dword:00000001

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows]
"ShutdownWarningDialogTimeout"=dword:00000003

Он же в готовом для запуска виде: svn1.sytes.net/linuxkvm/win-acpi-kvm.reg

Первоисточник с подробными объяснениями: umgum.com/acpi-windows2003-shutdown

Кэширование

Если образ гостевого диска хранится на VDS-ферме в виде файла, кэширование гостевых файлов может оказаться двойным — сначала их кэширует гостевая ОС при обращениях к виртуальному диску, затем ОС фермы при обращениях к физическому.

Всего возможны 3 основных режима:

  • none — хост-система не кэширует файл-образ ни на чтение, ни на запись
  • writeback — запись выполняется немедленно, чтение кэшируется
  • writethrough — чтение и запись кэшируются

В разных версиях qemu/kvm и в разных ОС по умолчанию могут использоваться разные режимы. Например, Qemu до версии 1.2 использует writethrough, 1.2 перешёл на writeback, в Proxmox выбран cache=none.

Все без исключения источники в Сети советуют не использовать writethrough как наиболее медленный. По субъективной оценке, для ВМ с Windows оптимален writeback, для ВМ с Linux и FreeBSD — none.

Зависания сети

Единственной серьёзной проблемой, которую однозначно вызывает ошибка в KVM, являются подвисания гостевой сети при интенсивном трафике: bugs.centos.org/view.php?id=5526 (кроме собственно описания ошибки, там же есть важные ссылки на другие багтрекеры).

Рекомендации, предлагаемые участниками обсуждений (обновление qemu-kvm и ядра, изменение параметров командной строки, использование vhost-net), к сожалению, пока не сумели её решить.

При каждом подвисании приходится заходить на консоль ВМ по VNC и выполнять сброс сетевого интерфейса, после чего трафик снова начинает ходить нормально.

Автоматизировать данное действие в Windows можно с помощью AutoIt, если создать файл PingFailed_ResetNic.au3 и вызывать его Диспетчером заданий каждые несколько минут:

#include «EventLog.au3»

Local $PingHost = "192.168.0.1"
Local $Interface = "LAN"

Ping($PingHost, 250)
If @error = 0 Then Exit

Local $hEventLog = _EventLog__Open("", "RestartNicOnPingFailure")
Local $aEmpty[1] = [0]
_EventLog__Report($hEventLog, 2, 0, 1, "", "Restart NIC " & Interface & " on failed ping to " & PingHost, $aEmpty)
_EventLog__Close($hEventLog)

RunWait("netsh interface set interface " & $Interface & " DISABLED", "", @SW_HIDE)
RunWait("netsh interface set interface " & $Interface &  " ENABLED", "", @SW_HIDE)

Вариант для CMD.EXE: rickosborne.org/blog/2007/02/stupid-windows-tricks-restart-network-adapter-when-it-hangs

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

Содержание

  1. QEMU, драйверы для Windows
  2. Proxmox и гостевые системы Windows.
  3. 1. Ballooning
  4. 2. QEMU Guest agent
  5. ACPIQEMU0002
  6. fischeranalytics
  7. greenvomit8
  8. wolfgang
  9. greenvomit8
  10. wolfgang
  11. greenvomit8
  12. wolfgang
  13. greenvomit8
  14. greenvomit8
  15. wolfgang
  16. QEMU/KVM и установка Windows
  17. Подготовка
  18. Запуск и инсталляция
  19. Драйвера и доводка
  20. Оборудование
  21. В завершение

QEMU, драйверы для Windows

Поставил XP. Будут ли рекомендации откуда взять драйверы (сетевая плата, видео), а главное как их передать в гостевую систему?

Как я понимаю нужно яндексить оборудование, указанное на http://www.lissyara.su/doc/man/qemu/.

Первое: почему QEMU, а не KVM или VirtualBox? Второе: зачем тебе дрова на видео?

1. Прямо из коробки работает всё виртуальное железо, которое по умолчанию конфигурируется в виртуалке.

2. Диски и сетевую можно перевести на virtio. Гуглить «virtio XP network drivers» и «viostor XP». Придется правда пошаманить с версиями 🙂

юзай virtio, Люк

Первое: почему QEMU, а не KVM или VirtualBox?

«VirtualBox is a crap», а KVM — это тот же QEMU

Спаисьо за дельный совет.

Наяндексил http://blog.famzah.net/2010/01/09/kvm-qemu-virtio-storage-and-network-drivers. , скачал «Both Virtio network and storage drivers for Windows». Возникли следующие вопросы:

1) На диске присутствуют E:networkInstallXP_Win2003. Какой из них использовать, если host-система — amd64, при запуске qemu тип процессора не указывался, а Винда в свойствах системы говорит, что Pentium II?

2) Попробовал оба варианта, но XP ни в то, ни в другом случае не считает, что это драйвер сетевой платы. Что делать?

3) Что за «storage»-драйвер, и зачем он нужен? На диске для XP есть только E:storageInstallXpx86.

1. Я так понял QEMU основан на KVM. Но когда я следовал инструкции http://rus-linux.net/nlib.php?name=/MyLDP/vm/KVM/kvm_introduction.html, то во-первых не обнаружил у себя команду kvm-ok, а во-вторых менеджер виртуальных машин сказал мне

Unable to open a connection to the libvirt management daemon.

Libvirt URI is: qemu:///system

Verify that: — The ‘libvirtd’ daemon has been started

. Хотя libvirtd был запущен. Я даже попытался добавть себя в группы libvirt и kvm (зря?).

VirtualBox тоже пока не уговорил запускаться.

После установки гостевой системы на Proxmox для того чтобы не было проблем с производительностью и резервным копированием необходимо произвести некоторые действия.

1. Ballooning

Для эффективного использования ресурсов Proxmox поддерживает технологию ballooning.
Ballooning – это динамическое управление памятью. Другими словами, вы прописываете в настройках виртуальной машины минимальный и максимальный объем памяти, выделяемой этой машине, а далее Proxmox сам распределяет необходимые ресурсы. Таким образом уменьшается влияние гостевой системы на весь хост.

Для начала выставим желательные параметры в настройках машины.

Чтобы их применить, машину нужно выключить и включить обратно.

Чтобы ballooning заработал, нам потребуется скачать и установить дополнительные драйвера.

Перейдем на гостевую систему и создадим каталог Balloon в папке Program files (c:/ Program files /Balloon). В эту папку со скачанного диска нужно скопировать драйвера для вашей операционной системы.

В диспетчере устройств появится новое оборудование и на него нужно установить эти драйверы.

После этого необходимо установить ballooning как службу.

Win + X, Выполнить, cmd

Win + X, Выполнить, services.msc

Выделение памяти теперь работает коректно.

2. QEMU Guest agent

Следующее что нужно сделать – установить QEMU Guest agent. Без этого не будет работать поддержка VSS (Volume Shadow Copy Service) т.е. служба теневого копирования тома.

В настройках виртуальной машины включим агента. Чтобы настройки применились – выключим и включим снова данную виртуальную машину.

У нас появилось новое устройство:

Драйверы находятся на том же диске в папке vioserial

Устанавливаем и проверяем, что QEMU Guest agent запущен в сервисах.

ACPIQEMU0002

fischeranalytics

Member

greenvomit8

Active Member

wolfgang

Proxmox Staff Member

do you use uefi mode(OVMF bios)?

Best regards,
Wolfgang

Do you already have a Commercial Support Subscription? — If not, Buy now and read the documentation

greenvomit8

Active Member

Hi Wolfgang
I believe we are using BIOS Legacy mode on the Proxmox host.

# [ -d /sys/firmware/efi ] && echo «EFI boot on HDD» || echo «Legacy boot on HDD»
Legacy boot on HDD

wolfgang

Proxmox Staff Member

Best regards,
Wolfgang

Do you already have a Commercial Support Subscription? — If not, Buy now and read the documentation

greenvomit8

Active Member

wolfgang

Proxmox Staff Member

Best regards,
Wolfgang

Do you already have a Commercial Support Subscription? — If not, Buy now and read the documentation

greenvomit8

Active Member

greenvomit8

Active Member

Hi wolfgang — to show hidden device in Windows:

  1. Open a command prompt with Administrative privileges
  2. At the command prompt, type the following lines, pressing ENTER after each line

    set devmgr_show_nonpresent_devices=1
    cd%SystemRoot%System32
    devmgmt.msc
  • In Device Manager go to View > Show hidden devices.
  • Note — you can try deleting the unknown device but if you ‘Scan for hardware changes’ within Device Manager the unknown device reappears.

    wolfgang

    Proxmox Staff Member

    Best regards,
    Wolfgang

    Do you already have a Commercial Support Subscription? — If not, Buy now and read the documentation

    QEMU/KVM и установка Windows

    Хотим мы того или нет, но программы, для которых необходима Windows, никуда из офисов не исчезли. В ситуации, когда их использование безальтернативно, лучше иметь виртуальную ОС, например для того, чтобы подключиться к аудио-конференции через Skype for Business.

    В этой статье я расскажу, как можно с минимальными издержками установить гостевую ОС Windows на гипервизоре QEMU с помощью графического интерфейса virt-manager . Мы нанесем на карту все подводные камни и рифы, а жучков аккуратно посадим в банку.

    Подготовка

    Самый первый шаг — настройка параметров ядра. Обязательна поддержка KVM и vhost-net , желательна поддержка туннельных интерфейсов [1] и сетевого моста [2] . Полный список на Gentoo вики-странице QEMU.

    Подготовьте дисковое пространство. Я выделил 70 GiB, и Windows 8.1 за пару месяцев использовала почти 50 GiB так, что для обновления до 10-й версии места на диске не хватило.

    Далее, нам понадобится набор редхатовских драйверов virtio-win . Если у вас установлен RedHat, достаточно запустить

    и образ iso будет записан в каталог /usr/share/virtio-win/ . Также можно его скачать с репозитариев Fedora.
    Убедитесь, что поддержка аппаратной виртуализация включена в BIOS/UEFI. Без этого KVM не будет активирован, а virt-manager выдаст вот такую ошибку.

    В качестве проверки можно прочитать файл устройства.

    Если файл не обнаружен, а опции ядра выставлены верно, значит дело в настройках BIOS/UEFI .
    Устанавливаем нужные пакеты.

    Для RedHat 7 достаточно установить только virt-manager , так как QEMU устанавливается по умолчанию.

    Дебианщикам надо установить пакет qemu .

    Можно теперь переходить к установке.

    Запуск и инсталляция

    Запускаем virt-manager и создаем новую виртуальную машину из локального хранилища.

    Указываем путь к установочному iso образу Windows.

    Далее, на 3-м и 4-м шаге будет выбор количества CPU, объем RAM и размер дискового пространства, после чего на 5-м шаге следует выбрать дополнительные конфигурации перед настройкой.

    Окно дополнительных настроек нужно для того, чтобы выполнить финт ушами. Его смысл в том, чтобы добавить виртуальный флопарь с драйверами из набора virtio-win . Это даст возможность изменить тип жесткого диска: удалить диск с шиной IDE и добавить его же, но с шиной VirtIO. Подробно, в доках RedHat.

    Прописываем драйвер /usr/share/virtio-win/virtio-win.vfd и добавляем виртуальный флоппи-диск. Затем переходим на вкладку [Шина] Диск № и проделываем финт с заменой шины диска: удаляем с IDE и добавляем с VirtIO.

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

    В принципе, уже можно начинать инсталляцию, но мы забыли добавить CD-ROM с драйверами virtio-win , а они нам пригодятся, когда диспетчер устройств засверкает желтыми иконками вопросительного знака.

    Ну вот теперь можно начать установку.

    Ну хорошо, начали мы установку. А что, если установщик Windows попросит сменить диск? Мне из-за этого пришлось пару раз прервать и начать всю карусель заново, но с вами такого уже не случится.

    Драйвера и доводка

    По окончанию процесса установки диспетчер устройств недосчитается некоторых драйверов. Предположительно, это могут быть:

    Нужно скормить им драйвера из набора virtio-win , что подключены через IDE CD-ROM в предыдущем разделе.

    Делается это стандартно: правой кнопкой на желтый знак вопроса, обновить драйвера, путь к файлам.

    Вот весь список, а это соседняя страница RedHat доков, где установка драйверов показана подробнее.

    • Balloon, the balloon driver, affects the PCI standard RAM Controller in the System devices group.
    • vioserial, the serial driver, affects the PCI Simple Communication Controller in the System devices group.
    • NetKVM, the network driver, affects the Network adapters group. This driver is only available if a virtio NIC is configured. Configurable parameters for this driver are documented in Appendix E, NetKVM Driver Parameters.
    • viostor, the block driver, affects the Disk drives group. This driver is only available if a virtio disk is configured.

    Оборудование

    Тут постепенно начинается область безграничных возможностей и 101 способов сделать по-своему, поэтому я покажу, как это работает у меня, а вы можете настроить более точно под свои нужды.

    У меня выбран дисплей Сервер Spice и звуковое устройство ich6 . Нет, конечно, если у вас уйма времени и желание во всем разобраться до самых тонкостей — дерзайте и пробуйте альтернативные подходы, но у меня звук взлетел, вернее завибрировал, только с такими настройками. Во второй части, посвященной прогулке по граблям и отлову багов, я расскажу об этом подробнее. В закладке видео я выставил QXL , ибо с этой опцией, благодаря волшебному драйверу, мне удалось добиться нормального разрешения экрана.

    Подключаться к ВМ можно разнообразно.

    1. Через графический интерфейс virt-manager
    2. Выбрать дисплей VNC-сервер и подключаться через vnc-клиента
    3. Установить Spice-клиента и подключаться через него
    4. К Windows можно подключиться через rdp, если включен терминальный сервер

    У меня вариант 3, для Gentoo это программа spice-gtk

    Сеть для ВМ можно настроить по-разному, на Хабре умельцы уже об этом писали. Я перепробовал несколько способов, и в конце простота опять взяла вверх. Сама ВМ запускается из под рута [3] , но графический интерфейс spice-gtk — из под обычного непривилегированного пользователя. Это позволяет решить дилемму: для сетевых опций нужны права рута, а для звукового демона pulseaudio, рут запрещен. Я пробовал навешать все права на обычного пользователя, но ничего не получалось, то pulse не пульсирует, то сеть не создается, там много а тут мало. В итоге решил так и доволен. Буду рад, если в комментариях будет найден лучший способ.

    Такой простой выбор сетевых опций дает результат превосходящий ожидания. Создаются 3 дополнительных сетевых интерфейса: virbr0, virbr0-nic, vnet0.

    В iptables создается свод правил, вот основные:

    Повторяю, все это libvirtd создает сам, ничего для этого делать не надо. В результате имеем нормальный роутинг между хостом и ВМ, можно обмениваться файлами по ssh / scp . Можно пойти дальше и создать шару на Windows, а на Linux хосте настроить samba, но мне это показалось избыточным.

    В завершение

    Трудно рассказать в одной статье обо всех аспектах Windows + QEMU/KVM, поэтому завершим в следующей. А там будет самый смак, командный интерфейс, разрешение экрана максимум 1024×768, Сцилла pulseaudio и Харибда сети, команда virsh и настройка ВМ из конфиг файла, фейл с tpm , двоичный синтаксис устройств и прочие тихие радости.

    1. ↑TUN/TAP interfaces
    2. ↑Ethernet bridging
    3. ↑От английского root

    To install Windows 7 VM on Proxmox VE

    This tutorial shows how to install a Windows 7 VM with spice client and VirtIO Drivers on Proxmox VE. Spice is a client software, which runs under spice protocol created for virtualization environment to allow remote sessions very fast. And VirtIO Drivers is a hard disk bus type which is faster than IDE and SCSI type

    Installing Windows 7

    Log into your Proxmox and click Create VM from your Proxmox Node.

    Proxmox

    In the OS configuration, you need to choose your storage and ISO file.

    ISO file

    And then, choose Hard disk Bus Device as VirtIO Block and cache as Write-back.

    VirtlO

    After that, you need to configure CPU and proceed further.

    CPU

    Later, in the next step, you need to allocate memory Size for RAM

    Memory

    And then, you need to configure your network interface and proceed further to next step.
    Network

    And now, check all the details and click on the Finish button.

    Details

    Afterwards, click display and choose your display type as SPICE.

    SPICE

    Now, You need to add the secondary DVD Drive for inserting VirtIO Drivers ISO.

    Drivers

    After that, you need to choose your VirtIO drivers.ISO

    ISO

    And then, click “ Start” to power on your vm, and choose the Console as SPICE.

    Start

    You shall now go on with the installation of the Windows.

    Windows

    Here the Hard disk is not identified, so we need to install the VirtIO drivers to identify hard disk. Now click Load Driver.

    Hard disk

    proxmax 1

    Load driver

    Load driver 2

    Now, you can find your hard disk, and partition it for Windows 7 installation.

    Window 7

    You are now in the penultimate stage of your Windows 7 installation.

    penultimates

    You are now asked to set up the windows. Give the necessary credentials.
    Windows

    Login

    And then review your time and date settings.

    Date setting

    After completing the windows 7 installation you need to install guest tools for windows 7 VM, download it from spice official website https://www.spice-space.org/download.html.

    spice official

    The License agreement now appears on screen. Accept it and proceed.
    License

    Your SPICE Guest Tools setup now appears on your screen.

    Tool setup

    The setup is now done.
    setup

    With this, the method to install Proxmox on Windows 7 comes to an end.

    Migrate Windows 7/10 Virtual Box

    (Optional) Preparation

    Cleanup disc space and remove all unnecessary drivers:

    • uninstall Virtual Box Guest Additions

    • Restart VM

    • sdelete -z c: d: e:

    • Enable ClearPageFileAtShutdown.reg

    • Shutdown VM

    Now two methods are possible:

    Importing only disc

    Fastest method: create Proxmox machine and import vbox hard disc to newly created Proxmox VM.

    • Create new Proxmox machine with similar parameters to old one

      • Remove created Hard Disc (scsi0)

    • Import disc images (repeat for all VDI discs)

      • As RAW images with all benefits (compression, thin provisioning, snapshots) or rbd or local-zfs storage:

        qm importdisk 701 WIN7_C.vdi local-zfs
        • 21743 MB VDI compacted file occupied 15,2G on ZFS with compression ratio 1.24x

      • As QCOW2 files on every file storage:

        qm importdisk 701 WIN7_C.vdi local -format qcow2
    • Connect new discs into machine:

      • qm set 701 --scsi<N> local-zfs:vm-701-disk-<N>,discard=on,size=64G
      • NOTE: discard=on should be enabled for thin provisioned storage to reclaim unused space

    • Change SCSI to IDE/SATA:

      • For i440FX machine: Switch SCSI to IDE:

        sed -i 's/scsi/ide/g' /etc/pve/qemu-server/701.conf
        • Manually correct numbering conflict with IDE CD-ROM drive *

      • For Q35 machine: Switch SCSI to SATA:

        sed -i 's/scsi/sata/g' /etc/pve/qemu-server/701.conf
    • Setup correct boot order

    • Add one dummy (small size) hard disc to SCSI controller

    • Enable QEMU Guest Agent

    • Boot Windows, go to Device Manager and install missing drivers:

      • PCI Simple Communication Controller PCIVEN1AF4&DEV_1003 –> Virtio console vioserial

      • Red Hat VirtIO SCSI pass-through controller vioscsiw7amd64

      • NetKVMw7amd64

      • (PCIVEN_1AF4&DEV_1002) –> VirtIO Balloon Driver Balloonw7amd64

      • vm generation id (ACPI/QEMUVGID)

    • Shutdown machine

    • Switch disc controller from IDE to SCSI. Edit /etc/pve/qemu-server/701.conf

      • Setup correct boot order

    Issues

    Can't create IDE unit 1, bus supports only 1 units
    Q35 machine has only master IDEs. Use sata0, sata1 and so on.

    NOT WORKING: Importing OVA file

    • Very slow method, exporting OVA needs to copy all discs into exported and well compressed file.

    • In VirtualBox choose “File” –> “Export Appliance”

      • select to export all network cards and MAC addresses

    • Proxmox cannot import OVA files directly. Please unpack it with command

      tar -xvf WIN7.ova
      • After unpacking, manifest file .ovf will be available.

    • qm importovf 701 ./WIN7.ovf local-zfs --dryrun --format qcow2
      • WARNING:

        warning: unable to parse the VM name in this OVF manifest, generating a default value
      • Create account/Login to VMWare page and download ovftool

    T.B.C without success, more similar issues described here:

    Описываю оптимальную, на мой взгляд, установку Windows 2008R2:

    1. В режиме просмотра по хранилищам, в хранилище «local» ноды, на которой
      создается VM необходимо загрузить установочный образ W2008R2 и актуальный
      стабильный
      образ
      virtio-win drivers

    2. В правом верхнем углу интерфейса жмем кнопку «Создать VM»

    3. Попадаем на первую вкладку мастера — задаем VM ID, имя машины, ставим
      галку агента:

    4. Выбираем,загруженный на шаге 1, образ
      диска с Windows и тип операционной системы

    5. Далее
      создаем/подключаем образ диска VM (я использовал iSCSI таргет, вы можете
      указать хранилище и размер создаваемого образа). Обратите внимание на тип
      шины и птицу нет резервных копий.

    6. Указываем тип и количество сокетов/ядер процессора (по умолчанию «KVM64» —
      самый совместимый, я выбираю «host»), обращаю внимание на птицу NUMA, если
      ядер больше 1

    7. Настраиваем память: можно использовать динамическое выделение — для этого
      указать верхнюю и нижнюю границы

    8. Настраиваем сеть — обратите внимание на тип интерфейса

    9. Проверяем сводные характеристики VM, при необходимости правим на
      соответствующих вкладках

    10. Переключаемся в режим просмотра по серверам, становимся на новосозданную
      VM и заходим во вкладку оборудование, жмем кнопку
      «Добавить»->»CD/DVD»

    11. В процессе создания привода выбираем образ virtio-win

    12. Запускаем VM

    13. Переходим во вкладку «Консоль»

    14. Идет тривиальная установка Winows вплоть до выбора диска для установки

    15. Жмем на загрузку и на диске с virtio-win выбираем папку
      d:viostor2k8r2amd64

    16. Устанавливаем драйвер, после чего продолжаем и заканчиваем установку.

    17. После завершения установки заходим в систему и ставим гостевой агент,
      который находится в папке guest-agent диска virtio-win

    18. После установки агента идем в диспетчер устройств

    19. Устанавливаем недостающие драйвера

    20. На одном из устройств получаем следующее сообщение:

    21. Смотрим dev_id устройства — дело в том, что последние версии Proxmox VE
      поддерживают Virtual Machine Generation ID, поддержка которого Windows,
      появилась только начиная с 8/2012 версий

    22. Для удаления неподдерживаемого усторйства выключаем VM, заходим по SSH на
      ноду Proxmox VE и выполняем:

      qm set vm_id -delete vmgenid

      вместо vm_id ID вашей машины, в моем случае 720

    23. Запускаем VM и смотрим в диспетчере устройств

    Установка VM завершена — дальше идет  обычная настройка сервера..
    Рекомендуемые настройки:

    1. Отключить автоматическое обновление
    2. Система -> Дополнительные параметры системы ->дополнительно
      ->загрузка и восстановление ->малый дамп памяти
    3. Диспетчер сервера -> отключить отчеты об ошибках

      Время на прочтение
      7 мин

      Количество просмотров 134K

      Задача: запустить некоторое количество виртуальных машин с Windows на типовом Линукс-сервере.

      Решение: любой современный Linux-дистрибутив, «родная» технология виртуализации KVM, Windows 2003 и настройки, описанные ниже.

      Смотри также: вводную часть статьи по настройке KVM-контейнеров для FreeBSD.

      Выбор гостевой ОС

      Windows XP работает под Linux KVM неустойчиво. Основные ошибки — потребление 100% процессора процессом csrss.exe (вплоть до обрыва RDP-сессий) и BSOD с кодом IRQL_NOT_LESS_OR_EQUAL в HAL.DLL. Если удалось достичь стабильной работы, обязательно отключите автоматическую установку обновлений! По нашему опыту, для работы WinXP под KVM они стали главным источником проблем.

      Windows 7 работает нормально, но согласно счётчикам Proxmox, требует для работы более 3 гигабайт ОЗУ.

      Оптимальным вариантом оказалась 32-разрядная редакция Windows 2003 R2:

      • работает надёжно, в т.ч. с virtio,
      • проблем совместимости с XP не имеет (даже внешний вид может быть сделан таким же),
      • занимает в ОЗУ менее 800 мегабайт.

      Верхнего лимита в 4 гигабайта памяти (без PAE) оказалось достаточно для всех возникавших задач.

      Для ознакомительных целей годится любой опубликованный на RuTracker дистрибутив.

      Первый запуск и virtio

      #!/bin/sh
      VM_ID="10"
      
      MACBASE="00:16:3e:ff:ff"
      
      HDA="vm_${VM_ID}.img"
      HDB="temp.img"
      HDC="w2k3_r2_ent_rus_x86/ru_win_srv_2003_r2_enterprise_with_sp2_vl_cd1_X13-46484.iso"
      HDD="virtio-win-0.1-52.iso"
      
      sudo kvm \
      -enable-kvm \
      -boot "menu=on,order=d" \
      -m 1024M \
      -balloon virtio \
      -name "kvm_${VM_ID}" \
      -drive "file=$HDA,index=0,media=disk,cache=writeback" \
      -drive "file=$HDB,index=1,media=disk,cache=writeback,if=virtio" \
      -drive "file=$HDC,index=2,media=cdrom,cache=writeback,readonly" \
      -drive "file=$HDD,index=3,media=cdrom,cache=writeback,readonly" \
      -net "nic,model=virtio,macaddr=${MACBASE}:${VM_ID}" \
      -net "tap,ifname=tap${VM_ID},script=no,downscript=no" \
      -vnc "0.0.0.0:${VM_ID}"
      

      Параметр «-vnc …» имеет смысл только на сервере без GUI. По умолчанию KVM откроет окно через SDL. В обоих случаях Ctrl+Alt+Shift+1 и Ctrl+Alt+Shift+2 служат для переключения внутри окна между гостевой и управляющей консолью.

      Параметр «-net nic,model=virtio,...» создаст внутри ВМ сетевую карту неизвестного Windows типа, для которого мастер настройки оборудования предложит выбрать драйвер. Парный ему параметр «-net tap,...» создаст в хост-ОС сетевой интерфейс для связи с ВМ. Назначение IP-адресов, настройка DHCP и выхода во внешний мир через ProxyARP, NAT или Bridge не имеют прямого отношения к Windows, поэтому здесь не рассматриваются.

      Теперь про самое важное на данном этапе, т.е. про диски.

      HDC — это ISO-образ с дистрибутивом Windows. Имя файла взято из торрента в предыдущем разделе. С него внутри ВМ произойдет первая загрузка системы («-boot order=d«).

      HDD — это ISO-образ с драйверами virtio. Скачивается с alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin

      HDA — это пустой образ диска, на который будет устанавливаться система. Создан командой «kvm-img create -f qcow2 vm_10.img 50G«.

      HDB — это пустой образ диска, созданный через «kvm-img create -f qcow2 temp.img 1G» с единственной целью — показать Windows устройство незнакомого типа, чтобы она затребовала драйвер для него. Установка в систему драйвера virtio для временного диска позволит переключить затем с IDE на virtio системный диск.

      После того, как установка системы и драйверов будет полностью завершена, в команде запуска следует убрать «-boot» и все строки «-drive», кроме первой, т.к. временный диск и ISO-образы станут не нужны (обратите внимание на добавленный «if=virtio«!):

      kvm ...  -drive "file=$HDA,index=0,media=disk,cache=writeback,if=virtio" ...
      

      Про пользу virtio, варианты настройки сети и параметры командной строки kvm читайте в habrahabr.ru/post/167099

      Рекомендуемые настройки Windows

      Во-первых, по умолчанию Windows создаёт при BSOD’ах полный дамп памяти. В лучшем случае, это существенно замедлит перезагрузку. В худшем, приведёт к полному зависанию.

      Во-вторых, автоматические обновления по умолчанию включены, и есть риск, что одно из них сделает работу под KVM нестабильной.

      Поэтому после завершения инсталляции в самую первую очередь (до установки драйверов!) рекомендуется зайти в Панель управления => Система:

      • Автоматическое обновление: Отключить
      • Дополнительно => Отчет об ошибках => Отключить
      • Дополнительно => Загрузка и восстановление => Параметры => Отказ системы => Запись отладочной информации => Малый дамп памяти (64КБ)

      Настройки TCP/IP не являются обязательными, но немного повысят производительность, т.к. в виртуальной среде отсутствуют некоторые проблемы, которые нужно учитывать при передаче по физической сети.

      Описание: www.linux-kvm.org/page/WindowsGuestDrivers/kvmnet/registry

      Готовый REG-файл: svn1.sytes.net/linuxkvm/tune-guest-tcpip.reg

      После этого можете приступать к установке драйверов для диска (virt-stor) и сетевой карты (virt-net). После их установки в Диспетчере оборудования появятся «Red Hat VirtIO SCSI Controller», «Red Hat VirtIO SCSI Disk Device» и «Red Hat VirtIO Ethernet Adapter».

      Ballooning

      Традиционный подход — сразу при запуске виртуальной машины (ВМ) выделять ей блок ОЗУ заданного размера, например, 512 мегабайт. Его недостаток — в те моменты, когда в памяти ВМ есть неиспользуемое пространство, в других ВМ и хост-системе её может не хватать.

      Memory ballooning — это механизм динамического (а) выделения хост-ОЗУ для ВМ по мере необходимости и (б) возвращения неиспользуемых блоков по мере освобождения. Благодаря ему становится возможным одновременно запускать множество ВМ, суммарный объём виртуального ОЗУ в которых больше объёма физического ОЗУ в хост-системе, при условии, что они не станут использовать максимально разрешённый объём все сразу. Благодаря этому память хост-системы распределяется между ВМ так же гибко, как между обычными процессами.

      Создание виртуальных ресурсов, превышающих физические по объёму, обозначается любимыми для многих хостеров терминами «overcommit» и «overselling».

      Для работы баллонинга требуется согласованная работа двух программных компонентов:

      • MOM (memory overcommitment manager) в хост-системе, меняющего объём ОЗУ для ВМ на основании запросов из неё,
      • VMM (менеджера виртуальной памяти) в гостевой ОС, взаимодействующего с MOM через виртуальный PCI-контроллер.

      MOM в последних версиях KVM включается автоматически, старые требовали включать его с помощью «kvm… -balloon virtio» в командной строке.

      Гостевое устройство для связи с MOM диспетчер оборудования (devmgmt.msc) Windows увидит как «PCI standard RAM controller» неизвестного типа. В отличие от virt-stor и virt-net, драйвер к нему не будет предложено установить автоматически. Вместо этого, следует зайти в свойства устройства, на вкладке «Драйвер» выбрать обновление и вручную указать путь к balloon.inf на VirtIO CD (пруф). После этого устройство переименуется в «VirtIO Balloon Driver».

      ACPI

      По умолчанию Windows 2003 разрешает выключать себя единственным способом — ввести логин-пароль, выбрать Пуск => «Завершение работы», ввести примечание, нажать «OK». Разумеется, на VDS-ферме такой подход неприемлем. KVM (и QEMU) умеет эмулировать ACPI. Команда «system_powerdown» аналогична нажатию кнопки питания на физическом компьютере, но Windows её проигнорирует. Лечится следующим REG-файлом:

      Windows Registry Editor Version 5.00
      
      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system]
      "ShutdownWithoutLogon"=dword:00000001
      "DisableCAD"=dword:00000001
      
      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
      "ShutdownWarningDialogTimeout"=dword:00000003
      

      Он же в готовом для запуска виде: svn1.sytes.net/linuxkvm/win-acpi-kvm.reg

      Первоисточник с подробными объяснениями: umgum.com/acpi-windows2003-shutdown

      Кэширование

      Если образ гостевого диска хранится на VDS-ферме в виде файла, кэширование гостевых файлов может оказаться двойным — сначала их кэширует гостевая ОС при обращениях к виртуальному диску, затем ОС фермы при обращениях к физическому.

      Всего возможны 3 основных режима:

      • none — хост-система не кэширует файл-образ ни на чтение, ни на запись
      • writeback — запись выполняется немедленно, чтение кэшируется
      • writethrough — чтение и запись кэшируются

      В разных версиях qemu/kvm и в разных ОС по умолчанию могут использоваться разные режимы. Например, Qemu до версии 1.2 использует writethrough, 1.2 перешёл на writeback, в Proxmox выбран cache=none.

      Все без исключения источники в Сети советуют не использовать writethrough как наиболее медленный. По субъективной оценке, для ВМ с Windows оптимален writeback, для ВМ с Linux и FreeBSD — none.

      Зависания сети

      Единственной серьёзной проблемой, которую однозначно вызывает ошибка в KVM, являются подвисания гостевой сети при интенсивном трафике: bugs.centos.org/view.php?id=5526 (кроме собственно описания ошибки, там же есть важные ссылки на другие багтрекеры).

      Рекомендации, предлагаемые участниками обсуждений (обновление qemu-kvm и ядра, изменение параметров командной строки, использование vhost-net), к сожалению, пока не сумели её решить.

      При каждом подвисании приходится заходить на консоль ВМ по VNC и выполнять сброс сетевого интерфейса, после чего трафик снова начинает ходить нормально.

      Автоматизировать данное действие в Windows можно с помощью AutoIt, если создать файл PingFailed_ResetNic.au3 и вызывать его Диспетчером заданий каждые несколько минут:

      #include «EventLog.au3»
      
      Local $PingHost = "192.168.0.1"
      Local $Interface = "LAN"
      
      Ping($PingHost, 250)
      If @error = 0 Then Exit
      
      Local $hEventLog = _EventLog__Open("", "RestartNicOnPingFailure")
      Local $aEmpty[1] = [0]
      _EventLog__Report($hEventLog, 2, 0, 1, "", "Restart NIC " & Interface & " on failed ping to " & PingHost, $aEmpty)
      _EventLog__Close($hEventLog)
      
      RunWait("netsh interface set interface " & $Interface & " DISABLED", "", @SW_HIDE)
      RunWait("netsh interface set interface " & $Interface &  " ENABLED", "", @SW_HIDE)
      

      Вариант для CMD.EXE: rickosborne.org/blog/2007/02/stupid-windows-tricks-restart-network-adapter-when-it-hangs

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

      Migrate Windows 7/10 Virtual Box

      (Optional) Preparation

      Cleanup disc space and remove all unnecessary drivers:

      • uninstall Virtual Box Guest Additions

      • Restart VM

      • sdelete -z c: d: e:

      • Enable ClearPageFileAtShutdown.reg

      • Shutdown VM

      Now two methods are possible:

      Importing only disc

      Fastest method: create Proxmox machine and import vbox hard disc to newly created Proxmox VM.

      • Create new Proxmox machine with similar parameters to old one

        • Remove created Hard Disc (scsi0)

      • Import disc images (repeat for all VDI discs)

        • As RAW images with all benefits (compression, thin provisioning, snapshots) or rbd or local-zfs storage:

          qm importdisk 701 WIN7_C.vdi local-zfs
          • 21743 MB VDI compacted file occupied 15,2G on ZFS with compression ratio 1.24x

        • As QCOW2 files on every file storage:

          qm importdisk 701 WIN7_C.vdi local -format qcow2
      • Connect new discs into machine:

        • qm set 701 --scsi<N> local-zfs:vm-701-disk-<N>,discard=on,size=64G
        • NOTE: discard=on should be enabled for thin provisioned storage to reclaim unused space

      • Change SCSI to IDE/SATA:

        • For i440FX machine: Switch SCSI to IDE:

          sed -i 's/scsi/ide/g' /etc/pve/qemu-server/701.conf
          • Manually correct numbering conflict with IDE CD-ROM drive *

        • For Q35 machine: Switch SCSI to SATA:

          sed -i 's/scsi/sata/g' /etc/pve/qemu-server/701.conf
      • Setup correct boot order

      • Add one dummy (small size) hard disc to SCSI controller

      • Enable QEMU Guest Agent

      • Boot Windows, go to Device Manager and install missing drivers:

        • PCI Simple Communication Controller PCI\VEN1AF4&DEV_1003 –> Virtio console vioserial

        • Red Hat VirtIO SCSI pass-through controller vioscsi\w7\amd64

        • NetKVM\w7\amd64

        • (PCI\VEN_1AF4&DEV_1002) –> VirtIO Balloon Driver Balloon\w7\amd64

        • vm generation id (ACPI/QEMUVGID)

      • Shutdown machine

      • Switch disc controller from IDE to SCSI. Edit /etc/pve/qemu-server/701.conf

        • Setup correct boot order

      Issues

      Can't create IDE unit 1, bus supports only 1 units
      Q35 machine has only master IDEs. Use sata0, sata1 and so on.

      NOT WORKING: Importing OVA file

      • Very slow method, exporting OVA needs to copy all discs into exported and well compressed file.

      • In VirtualBox choose “File” –> “Export Appliance”

        • select to export all network cards and MAC addresses

      • Proxmox cannot import OVA files directly. Please unpack it with command

        tar -xvf WIN7.ova
        • After unpacking, manifest file .ovf will be available.

      • qm importovf 701 ./WIN7.ovf local-zfs --dryrun --format qcow2
        • WARNING:

          warning: unable to parse the VM name in this OVF manifest, generating a default value
        • Create account/Login to VMWare page and download ovftool

      T.B.C without success, more similar issues described here:

      level 1

      I would try resetting your bios to defaults. Them go I’m an manually reset the options to what you need.

      level 1

      Check for a motherboard firmware update that mentions VT-x, sometimes it is broken in some revisions.

      Which CPU do you have?

      level 1

      See if this page helps: https://www.thegeekstuff.com/2011/07/bios-cpu-vt-setting-for-vmware/

      «The following three CPU BIOS options are important to install 64-bit guest OS on VMWare virtual machine.

      64-bit “Yes” – This is set by default.

      Virtualization Technology “Enabled” – This is disabled by default. You should change this.

      Execute Disable “Enabled” – This is set by default.»

      level 2

      Comment removed by moderator · 4 yr. ago

    1. Acpi int3450 windows 7 x64
    2. Acpi int3402 0 windows 10
    3. Acpi ovti2680 1 windows 8
    4. Acpi int3400 драйвер windows 10 x64
    5. Acpi ntn0530 driver windows 7